
/* ===== [2.9 verbatim] lines 14-3561 ===== */
/* ============================================================
   RECO-LAB · Urban Intelligence Lab
   Single-file bilingual public-facing observatory
   ============================================================ */
:root{
  /* Clean cool-neutral palette */
  --bg:#FFFFFF;
  --bg-warm:#F3F5F7;
  --surface:#FFFFFF;
  --surface-2:#EEF1F4;
  --ink:#1A1612;
  --ink-deep:#0E1418;
  --ink-band:#1E2D3D;          /* slate band */
  --muted:#6B6355;
  --muted-2:#9A9286;
  --rule:rgba(0,18,25,0.08);
  --rule-strong:rgba(0,18,25,0.16);
  --teal:#005F73;
  --teal-deep:#2F5D62;
  --resilience:#94D2BD;
  --amber:#EE9B00;
  --terra:#CA6702;
  --terra-deep:#B05B3B;
  --alert:#AE2012;

  /* ── Institutional brand system ──────────────────────────────
     Two conceptual surface layers:
       institutional  #1E2D3D — the lab chrome (header, footer)
       analytical     #08111B — the analytical engine (maps, models, intelligence cards)
     Accents: amber = action · green = resilience / territorial system */
  --institutional:#1E2D3D;     /* header · footer · institutional chrome */
  --analytical:#08111B;        /* analytical / intelligence dark cards */
  --brand-navy:#1E2D3D;        /* alias of institutional (legacy refs) */
  --navy-header:#1E2D3D;       /* header (institutional) */
  --navy-card:#08111B;         /* analytical cards */
  --brand-green:#5FAE9A;       /* brand / resilience accent */
  --brand-amber:#D9941A;       /* single CTA amber */
  --brand-amber-hover:#E2A329; /* CTA hover only */
  --cta-primary:var(--brand-amber);
  --text-primary:#FFFFFF;
  --text-secondary:#C7D0D8;

  --serif:'IBM Plex Serif',ui-serif,'Times New Roman',serif;
  --sans:'IBM Plex Sans','Helvetica Neue',Helvetica,Arial,sans-serif;
  --mono:'IBM Plex Mono','SF Mono',ui-monospace,Menlo,Consolas,monospace;

  --container:1240px;
  --gutter:28px;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{font-size:16px;scroll-behavior:smooth;}
body{
  font-family:var(--sans);background:var(--bg);color:var(--ink);
  line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img,svg{max-width:100%;display:block;}
em{font-style:normal;} /* V19: italic reserved for quotes/signatures only */
.wrap{max-width:var(--container);margin:0 auto;padding:0 var(--gutter);}

/* ── Bilingual switch (single global state) ───────────────── */
html[lang="en"] .lang-es{display:none !important;}
html[lang="es"] .lang-en{display:none !important;}

/* ── Skip link ────────────────────────────────────────────── */
.skip{
  position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;
}
.skip:focus{
  left:8px;top:8px;width:auto;height:auto;background:#fff;color:var(--ink);
  padding:8px 12px;border:1px solid var(--rule-strong);z-index:1000;
}

/* ── Focus ────────────────────────────────────────────────── */
:focus-visible{
  outline:2px solid var(--brand-amber);
  outline-offset:2px;
}

/* ═══════════════ HEADER ═══════════════ */
header.site{
  position:sticky;top:0;z-index:60;
  background:var(--navy-header);color:#F5F4F0;
  border-bottom:1px solid rgba(95,174,154,0.22);
}
.nav-inner{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  height:68px;
}
.brand{
  display:flex;align-items:baseline;gap:14px;text-decoration:none;color:#F5F4F0;
}
.brand .mark{
  font-family:var(--serif);font-weight:500;font-size:18px;letter-spacing:0.04em;
  color:#F5F4F0;line-height:1;font-style:normal;
}
.brand .mark em{font-style:normal;font-weight:500;color:var(--brand-green);}
.brand .tag{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.5);font-weight:500;
}
@media (max-width:760px){.brand .tag{display:none;}}

/* Author micro-line · subtle credit in header */
.author-line{
  border-top:1px solid rgba(245,244,240,0.06);
  background:rgba(0,0,0,0.18);
}
.author-line .inner{
  display:flex;justify-content:space-between;align-items:center;gap:24px;
  padding-top:7px;padding-bottom:7px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.5);font-weight:500;
}
.author-line .by{color:rgba(245,244,240,0.78);}
.author-line .by strong{color:#F5F4F0;font-weight:600;letter-spacing:0.14em;}
.author-line .role{color:rgba(245,244,240,0.5);}
@media (max-width:760px){.author-line .role{display:none;}.author-line .inner{justify-content:flex-start;}}

.nav-links{display:flex;align-items:center;gap:22px;}
.nav-links a{
  color:var(--text-secondary);text-decoration:none;
  font-size:12.5px;font-weight:500;letter-spacing:0.04em;
  padding:6px 0;border-bottom:1px solid transparent;
  transition:color .15s ease,border-color .15s ease;
}
.nav-links a:hover,.nav-links a:focus-visible{
  color:var(--text-primary);border-bottom-color:var(--brand-amber);
}
@media (max-width:980px){.nav-links{display:none;}}

.nav-end{display:flex;align-items:center;gap:14px;}

.lang-toggle{
  display:inline-flex;align-items:center;gap:0;
  border:1px solid rgba(245,244,240,0.18);
}
.lang-toggle button{
  background:transparent;border:0;cursor:pointer;
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.18em;
  color:rgba(245,244,240,0.55);font-weight:500;
  padding:6px 10px;line-height:1;
}
.lang-toggle button.active{
  background:rgba(245,244,240,0.95);color:var(--ink-deep);
}
.lang-toggle button:not(.active):hover{color:#F5F4F0;}
.lang-toggle button + button{border-left:1px solid rgba(245,244,240,0.18);}

.cta-primary{
  display:inline-flex;align-items:center;gap:8px;white-space:nowrap;
  background:var(--cta-primary);color:var(--navy-header);
  text-decoration:none;
  padding:10px 16px;font-family:var(--sans);font-weight:600;font-size:12.5px;
  letter-spacing:0.06em;text-transform:uppercase;
  border:1px solid var(--cta-primary);
  transition:background .15s ease,color .15s ease,transform .15s ease;
}
.cta-primary:hover{background:var(--brand-amber-hover);border-color:var(--brand-amber-hover);}
.cta-primary .arr{font-family:var(--mono);font-size:13px;}

.burger{
  display:none;background:transparent;border:0;color:#F5F4F0;cursor:pointer;
  font-size:22px;line-height:1;padding:6px 8px;
}
@media (max-width:980px){.burger{display:inline-flex;}}
@media (max-width:980px){.cta-primary span.cta-label{display:none;}}

/* mobile drawer */
.mobile-nav{
  display:none;background:var(--navy-header);border-top:1px solid rgba(245,244,240,0.08);
  padding:8px 0 16px;
}
.mobile-nav.open{display:block;}
.mobile-nav a{
  display:block;color:rgba(245,244,240,0.85);text-decoration:none;
  padding:12px var(--gutter);font-size:14px;letter-spacing:0.02em;
  border-bottom:1px solid rgba(245,244,240,0.06);
}
.mobile-nav a:hover{color:#F5F4F0;background:rgba(245,244,240,0.04);}

/* ═══════════════ HERO ═══════════════ */
.hero{
  background:linear-gradient(180deg,var(--bg) 0%,var(--bg-warm) 100%);
  border-bottom:1px solid var(--rule);
  padding:56px 0 80px;
}
.hero-grid{
  display:grid;grid-template-columns:1.15fr 1fr;gap:64px;align-items:center;
}
@media (max-width:1200px){.hero-grid{gap:48px;}}
@media (max-width:1024px){.hero-grid{grid-template-columns:1fr;gap:40px;}}

.hero-eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.24em;text-transform:uppercase;
  color:var(--teal);font-weight:500;margin-bottom:14px;
}
.hero-eyebrow .dot{
  width:6px;height:6px;border-radius:50%;background:var(--teal-deep);
  box-shadow:0 0 0 3px rgba(0,95,115,0.16);
  position:relative;
}
.hero-eyebrow .dot::after{
  content:"";position:absolute;inset:-4px;border-radius:50%;
  background:rgba(0,95,115,0.32);animation:pulseRing 2.6s ease-in-out infinite;
}
@keyframes pulseRing{0%{transform:scale(0.5);opacity:.55;}100%{transform:scale(2);opacity:0;}}

.hero h1{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(48px,7.2vw,96px);line-height:0.98;letter-spacing:-0.022em;
  color:var(--ink);margin-bottom:18px;
}
.hero h1 em{font-style:normal;font-weight:500;color:var(--teal);display:block;font-size:0.58em;line-height:1.15;letter-spacing:0.04em;margin-top:8px;text-transform:none;}

.hero-lede{
  font-family:var(--serif);font-weight:300;font-style:normal;
  font-size:clamp(17px,1.6vw,21px);line-height:1.55;color:var(--ink);
  max-width:560px;margin-bottom:36px;text-wrap:pretty;overflow-wrap:break-word;
}
.hero-lede strong{font-style:normal;font-weight:400;color:var(--ink);}

.hero-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:40px;}
.cta-secondary{
  display:inline-flex;align-items:center;gap:10px;
  background:transparent;color:var(--ink);text-decoration:none;
  padding:11px 18px;font-family:var(--sans);font-weight:500;font-size:13px;
  letter-spacing:0.04em;
  border:1px solid var(--rule-strong);
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.cta-secondary:hover{border-color:var(--teal);color:var(--teal);}
.cta-secondary .arr{font-family:var(--mono);font-size:13px;}

.hero-status{
  display:flex;flex-wrap:wrap;gap:18px 26px;align-items:baseline;
  border-top:1px solid var(--rule);padding-top:22px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.16em;text-transform:uppercase;color:var(--muted);
}
.hero-status .live{color:var(--teal);font-weight:600;display:inline-flex;align-items:center;gap:8px;}
.hero-status .live::before{
  content:"";width:6px;height:6px;background:var(--teal-deep);border-radius:50%;
}
.hero-status .sep{color:var(--muted-2);}

/* Hero visual composition */
.hero-viz{
  position:relative;background:var(--surface);border:1px solid var(--rule-strong);
  padding:22px 22px 18px;
  box-shadow:0 30px 60px -40px rgba(14,20,24,0.25);
}
.hv-head{
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  border-bottom:1px solid var(--rule);padding-bottom:14px;margin-bottom:16px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.2em;text-transform:uppercase;color:var(--muted-2);
}
.hv-head .title{color:var(--ink);font-weight:600;}
.hv-grid{
  display:grid;grid-template-columns:2fr 1fr;gap:14px;
}
.hv-main{
  background:var(--surface-2);border:1px solid var(--rule);
  padding:14px;position:relative;min-height:240px;
}
.hv-side{display:flex;flex-direction:column;gap:14px;}
.hv-card{
  background:var(--surface-2);border:1px solid var(--rule);padding:12px;flex:1;
  display:flex;flex-direction:column;gap:8px;min-height:113px;
}
.hv-card .l{
  font-family:var(--mono);font-size:9px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted-2);
}
.hv-card .v{
  font-family:var(--serif);font-size:17px;color:var(--ink);line-height:1.2;
}
.hv-card .v em{font-style:normal;font-weight:500;color:var(--teal);}
.hv-card .s{font-family:var(--sans);font-size:11px;color:var(--muted);line-height:1.5;}
.hv-bars{display:flex;align-items:flex-end;gap:4px;height:34px;margin-top:4px;}
.hv-bars span{flex:1;background:var(--teal);opacity:0.75;}
.hv-bars span.alt{background:var(--terra);}
.hv-foot{
  margin-top:14px;display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);
}
.hv-foot .src{color:var(--muted-2);}

/* ═══════════════ SECTION SCAFFOLDING ═══════════════ */
section.surface{padding:88px 0;border-top:1px solid var(--rule);}
section.surface.dark{background:var(--surface-2);}

.section-head{margin-bottom:48px;max-width:880px;}
.section-num{
  font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:0.22em;
  text-transform:uppercase;color:var(--muted-2);margin-bottom:18px;
  display:flex;align-items:center;gap:12px;
}
.section-num::after{content:"";flex:1;height:1px;background:var(--rule);max-width:160px;}
.section-head h2{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(30px,3.8vw,44px);line-height:1.12;letter-spacing:-0.01em;
  color:var(--ink);margin-bottom:16px;
}
.section-head h2 em{font-style:normal;font-weight:500;color:var(--teal);}
.section-head .lede{
  font-family:var(--sans);font-weight:300;font-size:16px;line-height:1.65;
  color:var(--ink);max-width:740px;
}
.section-head .lede strong{font-weight:500;}

/* ── Pillars (Section 1) ─────────────────────────────────── */
.pillars{
  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
}
@media (max-width:880px){.pillars{grid-template-columns:1fr;}}
.pillar{
  background:var(--surface);border:1px solid var(--rule);
  padding:32px 28px;
  border-top:2px solid var(--teal);
}
.pillar:nth-child(2){border-top-color:var(--terra);}
.pillar:nth-child(3){border-top-color:var(--amber);}
.pillar .p-num{
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted-2);margin-bottom:14px;font-weight:500;
}
.pillar h3{
  font-family:var(--serif);font-weight:400;font-size:22px;line-height:1.25;color:var(--ink);
  margin-bottom:12px;
}
.pillar h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.pillar p{font-size:14px;line-height:1.65;color:var(--muted);}

/* ── Initiatives ─────────────────────────────────────────── */
.init-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:20px;
}
@media (max-width:880px){.init-grid{grid-template-columns:1fr;}}
.init-grid .init.feature{
  grid-column:1 / -1;
  display:grid;grid-template-columns:1.1fr 1fr;gap:0;
}
@media (max-width:880px){.init-grid .init.feature{grid-template-columns:1fr;}}

.init{
  background:var(--surface);border:1px solid var(--rule);
  display:flex;flex-direction:column;
  transition:border-color .18s ease,transform .18s ease;
  text-decoration:none;color:inherit;
}
.init:hover{border-color:var(--teal);}
.init .preview{
  background:var(--surface-2);border-bottom:1px solid var(--rule);
  padding:18px 20px;min-height:160px;
  display:flex;align-items:center;justify-content:center;
  position:relative;overflow:hidden;
}
.init.feature .preview{min-height:0;border-right:1px solid var(--rule);border-bottom:0;}
@media (max-width:880px){.init.feature .preview{border-right:0;border-bottom:1px solid var(--rule);min-height:200px;}}
.init .preview svg{width:100%;height:auto;display:block;}

/* Real preview wrapper · iframe miniatures of real outputs */
.real-preview{
  position:relative;width:100%;height:200px;
  overflow:hidden;background:#fff;
  border-bottom:1px solid var(--rule);
}
.init.feature .real-preview{height:340px;border-bottom:0;border-right:1px solid var(--rule);}
@media (max-width:880px){.init.feature .real-preview{border-right:0;border-bottom:1px solid var(--rule);height:240px;}}
.dp .real-preview{height:140px;border-bottom:1px solid var(--rule);}
.real-preview iframe{
  position:absolute;top:0;left:0;
  width:285%;height:285%;
  border:0;background:#fff;
  transform:scale(0.35);transform-origin:top left;
  pointer-events:none;
}
.dp .real-preview iframe{width:333%;height:333%;transform:scale(0.30);}
.real-preview::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(255,255,255,0) 60%,rgba(247,244,238,0.45) 100%);
  pointer-events:none;
}
.real-preview .rp-tag{
  position:absolute;top:8px;left:8px;z-index:2;
  font-family:var(--mono);font-size:8.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--ink-deep);background:rgba(255,255,255,0.92);
  padding:3px 7px;border:1px solid var(--rule);font-weight:600;
}
.real-preview .rp-live{
  position:absolute;top:8px;right:8px;z-index:2;
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:8.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--teal);background:rgba(255,255,255,0.92);
  padding:3px 7px;border:1px solid var(--rule);font-weight:600;
}
.real-preview .rp-live::before{
  content:"";width:6px;height:6px;border-radius:50%;background:var(--teal-deep);
}
.init-body{padding:22px 24px 24px;display:flex;flex-direction:column;gap:10px;flex:1;}
.init-meta{
  font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:0.22em;
  text-transform:uppercase;display:flex;gap:10px;align-items:center;color:var(--muted-2);
}
.init-meta .code{color:var(--terra);font-weight:600;}
.init-meta .sep{color:var(--rule-strong);}
.init h3{
  font-family:var(--serif);font-weight:400;font-size:20px;line-height:1.25;color:var(--ink);
}
.init h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.init p{font-size:13.5px;line-height:1.6;color:var(--muted);}
.init-cta{
  margin-top:auto;padding-top:16px;border-top:1px solid var(--rule);
  display:flex;justify-content:space-between;align-items:center;
  font-family:var(--sans);font-size:11.5px;font-weight:500;letter-spacing:0.12em;
  text-transform:uppercase;color:var(--teal);
}
.init-cta .arr{font-family:var(--mono);transition:transform .15s ease;}
.init:hover .init-cta .arr{transform:translateX(4px);}

/* ── Data products grid ──────────────────────────────────── */
.dp-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:18px;
}
@media (max-width:1100px){.dp-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:880px){.dp-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.dp-grid{grid-template-columns:1fr;}}

.dp{
  background:var(--surface);border:1px solid var(--rule);
  display:flex;flex-direction:column;text-decoration:none;color:inherit;
  transition:border-color .18s ease;
}
.dp:hover{border-color:var(--teal);}
.dp .preview{
  background:var(--surface-2);border-bottom:1px solid var(--rule);
  height:130px;padding:14px;display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.dp .preview svg{width:100%;height:100%;display:block;}
.dp-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1;}
.dp-type{
  font-family:var(--mono);font-size:9px;font-weight:500;letter-spacing:0.2em;
  text-transform:uppercase;color:var(--terra);
}
.dp h3{
  font-family:var(--serif);font-weight:400;font-size:15px;line-height:1.3;color:var(--ink);
}
.dp p{font-size:12px;line-height:1.55;color:var(--muted);}
.dp-cta{
  margin-top:auto;padding-top:12px;
  font-family:var(--mono);font-size:10px;letter-spacing:0.16em;text-transform:uppercase;color:var(--teal);
  display:flex;justify-content:space-between;align-items:center;
}

/* ── Methodology flow ─────────────────────────────────────── */
.method{
  display:grid;grid-template-columns:repeat(7,1fr);gap:8px;
  margin-bottom:32px;
}
@media (max-width:1100px){.method{grid-template-columns:repeat(4,1fr);}}
@media (max-width:760px){.method{grid-template-columns:repeat(2,1fr);}}
/* V25.2 · mobile → vertical timeline (no horizontal scroll) */
@media (max-width:560px){
  .method{grid-template-columns:1fr;gap:0;border-left:2px solid var(--rule-strong);margin-left:5px;padding-left:20px;}
  .method .m-step{border-left:0;border-radius:0;margin-bottom:14px;}
  .method .m-step::before{content:"";position:absolute;left:-26px;top:20px;width:9px;height:9px;border-radius:50%;background:var(--terra);box-shadow:0 0 0 3px var(--surface-2);}
}
.m-step{
  background:var(--surface);border:1px solid var(--rule);
  padding:18px 16px;position:relative;
  display:flex;flex-direction:column;gap:6px;
}
.m-step .m-num{
  font-family:var(--mono);font-size:10px;letter-spacing:0.2em;color:var(--terra);font-weight:600;
}
.m-step h3{
  font-family:var(--serif);font-weight:400;font-size:14.5px;line-height:1.3;color:var(--ink);
}
.m-step .m-sub{font-family:var(--sans);font-size:11px;color:var(--muted);line-height:1.5;}
.m-step::after{
  content:"→";position:absolute;right:-12px;top:50%;transform:translateY(-50%);
  font-family:var(--mono);color:var(--muted-2);font-size:14px;z-index:2;
  background:var(--bg);padding:0 4px;
}
.m-step:last-child::after{display:none;}
@media (max-width:1100px){.m-step:nth-child(4)::after{display:none;}}
@media (max-width:760px){.m-step::after{display:none;}}

.method-note{
  background:var(--surface);border:1px solid var(--rule);border-left:2px solid var(--teal);
  padding:22px 26px;
}
.method-note .lbl{
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--teal);font-weight:600;margin-bottom:10px;
}
.method-note p{
  font-family:var(--sans);font-size:14px;line-height:1.7;color:var(--ink);max-width:780px;
}
.method-note p strong{font-weight:500;}

/* ── Why it matters ───────────────────────────────────────── */
.why-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--rule-strong);border:1px solid var(--rule-strong);
}
@media (max-width:980px){.why-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.why-grid{grid-template-columns:1fr;}}
.why{
  background:var(--surface);padding:32px 26px;
  display:flex;flex-direction:column;gap:10px;
}
.why .w-num{
  font-family:var(--mono);font-size:11px;letter-spacing:0.2em;color:var(--terra);font-weight:600;
}
.why h3{
  font-family:var(--serif);font-weight:400;font-size:18px;line-height:1.3;color:var(--ink);
}
.why h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.why p{font-size:13px;line-height:1.65;color:var(--muted);}

.why-note{
  margin-top:32px;font-family:var(--serif);font-weight:300;font-style:normal;
  font-size:17px;line-height:1.7;color:var(--ink);max-width:820px;
}

/* ── Form ─────────────────────────────────────────────────── */
.form-wrap{
  display:grid;grid-template-columns:1fr 1.2fr;gap:64px;align-items:start;
}
@media (max-width:980px){.form-wrap{grid-template-columns:1fr;gap:40px;}}

.form-aside{font-family:var(--sans);}
.form-aside p{
  font-family:var(--serif);font-weight:300;font-size:16px;line-height:1.7;color:var(--ink);max-width:460px;
  margin-bottom:20px;
}
.form-aside ul{
  list-style:none;border-top:1px solid var(--rule);
}
.form-aside li{
  padding:12px 0;border-bottom:1px solid var(--rule);
  display:flex;gap:14px;align-items:baseline;
  font-size:13px;color:var(--ink);
}
.form-aside li .k{
  font-family:var(--mono);font-size:10px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted-2);width:84px;flex-shrink:0;
}

form.signup{
  background:var(--surface);border:1px solid var(--rule);
  padding:36px 36px 32px;
}
@media (max-width:560px){form.signup{padding:28px 22px;}}
form.signup .row{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}
form.signup .row.single{grid-template-columns:1fr;}
@media (max-width:560px){form.signup .row{grid-template-columns:1fr;}}
form.signup label{
  display:flex;flex-direction:column;gap:6px;
  font-family:var(--mono);font-size:10px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);font-weight:500;
}
form.signup input,
form.signup select,
form.signup textarea{
  font-family:var(--sans);font-size:14px;color:var(--ink);
  background:var(--bg);border:1px solid var(--rule-strong);
  padding:10px 12px;line-height:1.4;width:100%;
  transition:border-color .15s ease,background .15s ease;
}
form.signup textarea{resize:vertical;min-height:96px;}
form.signup input:focus,
form.signup select:focus,
form.signup textarea:focus{
  border-color:var(--teal);outline:0;background:var(--surface);
}
/* Muted placeholder appearance when no real option has been picked yet */
form.signup select.is-placeholder{color:var(--muted);}
form.signup select option[data-placeholder]{color:var(--muted);font-style:normal;}
form.signup select option{color:var(--ink);font-style:normal;}
.check-row{
  display:flex;align-items:flex-start;gap:10px;margin:6px 0 22px;
  font-family:var(--sans);font-size:12.5px;color:var(--muted);line-height:1.5;
}
.check-row input[type="checkbox"]{
  width:16px;height:16px;margin-top:2px;accent-color:var(--teal);flex-shrink:0;
}
.form-submit{
  display:inline-flex;align-items:center;gap:10px;
  background:var(--cta-primary);color:var(--navy-header);text-decoration:none;
  border:1px solid var(--cta-primary);
  padding:13px 22px;font-family:var(--sans);font-weight:600;font-size:12.5px;
  letter-spacing:0.08em;text-transform:uppercase;cursor:pointer;
  transition:background .15s ease,border-color .15s ease;
}
.form-submit:hover{background:var(--brand-amber-hover);border-color:var(--brand-amber-hover);}
.form-msg{
  margin-top:18px;padding:14px 18px;
  background:var(--surface-2);border:1px solid var(--teal);border-left:3px solid var(--teal);
  font-family:var(--sans);font-size:13px;color:var(--ink);line-height:1.55;
  display:none;
}
.form-msg.show{display:block;}
.form-msg strong{color:var(--teal);font-weight:600;}

/* ═══════════════ FOOTER ═══════════════ */
footer.site{
  background:var(--brand-navy);color:var(--text-secondary);
  padding:72px 0 32px;border-top:1px solid rgba(95,174,154,0.30);
}
footer .f-top{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:48px;
  padding-bottom:48px;border-bottom:0;
}
@media (max-width:880px){footer .f-top{grid-template-columns:1fr 1fr;gap:36px;}}
@media (max-width:560px){footer .f-top{grid-template-columns:1fr;gap:28px;}}
footer .ident .name{
  font-family:var(--serif);font-size:22px;font-weight:400;font-style:italic;color:#F5F4F0;line-height:1.1;
  margin-bottom:4px;
}
footer .ident .name em{font-style:italic;font-weight:500;color:var(--brand-green);}
footer .ident .sub{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.55);margin-bottom:18px;
}
footer .ident p{
  font-family:var(--serif);font-weight:300;font-style:normal;
  font-size:14px;line-height:1.6;color:rgba(245,244,240,0.65);max-width:340px;
}
footer .col h4{
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.45);font-weight:600;margin-bottom:16px;
}
footer .col ul{list-style:none;}
footer .col li{margin-bottom:10px;}
footer .col a{
  color:var(--text-secondary);text-decoration:none;font-size:13px;
  border-bottom:1px solid transparent;padding-bottom:1px;
  transition:color .15s ease,border-color .15s ease;
}
footer .col a:hover{color:var(--text-primary);border-bottom-color:var(--brand-amber);}

footer .f-bot{
  padding-top:18px;display:flex;justify-content:space-between;align-items:baseline;gap:24px;flex-wrap:wrap;
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.45);
  border-top:0;
}
footer .f-bot .legend{max-width:560px;}

/* ── Reduced motion ───────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{transition:none !important;animation:none !important;}
}

/* ═══════════════════════════════════════════════════════════
   Project chapters, gateway, KPIs, findings,
   ranking table, anchor iframes, contact spacing, signature
   ═══════════════════════════════════════════════════════════ */

/* ── Signature block ──────────────────────────────────────── */
.signature{font-family:var(--serif);font-weight:400;line-height:1.25;}
.signature .name{font-size:18px;color:#F5F4F0;letter-spacing:0.01em;}
.signature .role{
  display:block;margin-top:6px;
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.55);font-weight:500;
}

/* ── Refined hero · editorial slogan right column ─────────── */
.hero-slogan{
  background:var(--surface);border:1px solid var(--rule-strong);
  padding:42px 40px 36px;position:relative;
  box-shadow:0 30px 60px -40px rgba(14,20,24,0.25);
}
.hero-slogan::before{
  content:"";position:absolute;left:-1px;top:32px;width:3px;height:48px;background:var(--terra);
}
.hero-slogan .quote-mark{
  font-family:var(--serif);font-size:64px;line-height:0;color:var(--teal);opacity:0.4;
  position:absolute;top:32px;right:36px;
}
.hero-slogan .slogan{
  font-family:var(--serif);font-weight:300;font-style:italic;
  font-size:clamp(20px,2vw,26px);line-height:1.45;color:var(--ink);
  margin-bottom:28px;letter-spacing:-0.005em;
}
.hero-slogan .slogan strong{font-style:normal;font-weight:400;color:var(--teal);}
.hero-slogan .sig{
  border-top:1px solid var(--rule);padding-top:18px;
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;
}
.hero-slogan .sig .author{
  font-family:var(--serif);font-size:15px;color:var(--ink);line-height:1.3;
}
.hero-slogan .sig .author span{
  display:block;font-family:var(--mono);font-size:9px;letter-spacing:0.22em;
  text-transform:uppercase;color:var(--muted);margin-top:4px;
}
.hero-slogan .sig .scope{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--muted-2);text-align:right;line-height:1.7;
}

/* ── Initiatives gateway · typographic diagram ────────────── */
.gateway{
  margin-top:32px;border-top:1px solid var(--rule-strong);
  border-bottom:1px solid var(--rule-strong);
  background:var(--surface);
}
.gateway .row{
  display:grid;grid-template-columns:160px 1fr 200px 60px;
  align-items:center;gap:32px;
  padding:20px 28px;border-bottom:1px solid var(--rule);
  transition:background .15s ease;
  text-decoration:none;color:inherit;
}
.gateway .row:last-child{border-bottom:0;}
.gateway .row:hover{background:var(--surface-2);}
.gateway .code{
  font-family:var(--mono);font-size:14px;letter-spacing:0.16em;
  color:var(--teal);font-weight:600;
}
.gateway .dimension{
  font-family:var(--serif);font-weight:400;font-style:normal;font-size:24px;color:var(--ink);
  letter-spacing:-0.005em;line-height:1.2;
}
.gateway .desc{
  font-family:var(--sans);font-size:12.5px;color:var(--muted);line-height:1.55;
}
.gateway .arr{
  font-family:var(--mono);font-size:18px;color:var(--muted-2);text-align:right;
  transition:transform .15s ease,color .15s ease;
}
.gateway .row:hover .arr{color:var(--teal);transform:translateX(4px);}
@media (max-width:760px){
  .gateway .row{grid-template-columns:80px 1fr 30px;gap:18px;padding:18px 20px;}
  .gateway .row .desc{display:none;}
  .gateway .dimension{font-size:20px;}
}
.gateway-foot{
  margin-top:18px;padding-top:18px;border-top:1px solid var(--rule);
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;
}
.gateway-foot .lead{color:var(--ink);}

/* ── Project block · major editorial chapter ─────────────── */
.project-block{
  padding:112px 0;background:var(--bg-warm);
  border-top:1px solid var(--rule);
  position:relative;
}
.project-block.alt{background:var(--bg);}
.project-block::before{
  content:"";position:absolute;left:0;top:0;width:100%;height:4px;
  background:linear-gradient(90deg,var(--teal) 0%,var(--terra) 100%);
  opacity:0.85;
}
.project-block.alt::before{background:linear-gradient(90deg,var(--terra) 0%,var(--amber) 100%);}

.proj-head{
  display:grid;grid-template-columns:1fr auto;align-items:start;gap:48px;
  margin-bottom:56px;padding-bottom:36px;border-bottom:1px solid var(--rule-strong);
}
@media (max-width:760px){.proj-head{grid-template-columns:1fr;gap:24px;}}
.proj-num{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--terra);font-weight:600;margin-bottom:18px;
  display:flex;align-items:center;gap:14px;
}
.proj-num::before{content:"";width:24px;height:1px;background:var(--terra);}
.proj-title{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(40px,5vw,60px);line-height:1.04;letter-spacing:-0.018em;
  color:var(--ink);margin-bottom:14px;
}
.proj-title em{font-style:normal;font-weight:500;color:var(--teal);}
.proj-sub{
  font-family:var(--mono);font-size:11.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);font-weight:500;
}
.proj-sub strong{color:var(--terra);font-weight:600;}
.proj-meta{
  text-align:right;font-family:var(--mono);font-size:10.5px;letter-spacing:0.2em;
  text-transform:uppercase;color:var(--muted);line-height:1.8;
  border-left:1px solid var(--rule-strong);padding-left:32px;
}
@media (max-width:760px){.proj-meta{text-align:left;border-left:0;padding-left:0;border-top:1px solid var(--rule);padding-top:18px;}}
.proj-meta .geo{color:var(--ink);font-weight:600;display:block;margin-bottom:6px;}

.proj-narrative{
  max-width:780px;margin-bottom:64px;
  font-family:var(--serif);font-weight:300;font-size:18.5px;line-height:1.75;
  color:var(--ink);
}
.proj-narrative p + p{margin-top:20px;}
.proj-narrative strong{font-weight:400;color:var(--teal);font-style:normal;}

.proj-section-label{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted-2);font-weight:500;
  display:flex;align-items:center;gap:14px;margin:64px 0 24px;
}
.proj-section-label::after{content:"";flex:1;height:1px;background:var(--rule);}
.proj-section-label .num{color:var(--terra);font-weight:600;}

/* ── Research-period narrative cards (4 inline) ───────────── */
.period-row{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  background:var(--surface);border:1px solid var(--rule);
}
@media (max-width:880px){.period-row{grid-template-columns:1fr 1fr;}}
@media (max-width:520px){.period-row{grid-template-columns:1fr;}}
.period{
  padding:24px 22px;border-right:1px solid var(--rule);
  position:relative;
}
.period:last-child{border-right:0;}
@media (max-width:880px){
  .period:nth-child(2){border-right:0;}
  .period:nth-child(1),.period:nth-child(2){border-bottom:1px solid var(--rule);}
}
.period.break::before{
  content:"";position:absolute;top:-1px;left:0;width:100%;height:3px;background:var(--terra);
}
.period .lbl{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted-2);font-weight:500;margin-bottom:14px;
}
.period.break .lbl{color:var(--terra);}
.period h4{
  font-family:var(--serif);font-weight:400;font-style:normal;font-size:18px;
  color:var(--ink);line-height:1.25;margin-bottom:8px;
}
.period .range{
  font-family:var(--mono);font-size:11px;color:var(--ink);letter-spacing:0.08em;line-height:1.5;
}
.period.break h4{color:var(--terra);}

/* ── KPI strip ─────────────────────────────────────────────── */
.kpi-strip{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  background:var(--surface);border:1px solid var(--rule);
}
@media (max-width:880px){.kpi-strip{grid-template-columns:1fr 1fr;}}
@media (max-width:520px){.kpi-strip{grid-template-columns:1fr;}}
.kpi{
  padding:28px 24px;border-right:1px solid var(--rule);
  display:flex;flex-direction:column;gap:8px;
}
.kpi:last-child{border-right:0;}
@media (max-width:880px){
  .kpi:nth-child(2){border-right:0;}
  .kpi:nth-child(1),.kpi:nth-child(2){border-bottom:1px solid var(--rule);}
}
.kpi .val{
  font-family:var(--serif);font-weight:300;font-size:clamp(34px,3.5vw,42px);
  line-height:1;color:var(--ink);letter-spacing:-0.02em;
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum";
}
.kpi .val em{font-style:normal;color:var(--terra);font-weight:400;}
.kpi .lbl{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);font-weight:500;line-height:1.4;
}

/* ── Key findings grid ─────────────────────────────────────── */
.findings{
  display:grid;grid-template-columns:repeat(2,1fr);gap:18px;
}
@media (max-width:880px){.findings{grid-template-columns:1fr;}}
.finding{
  background:var(--surface);border:1px solid var(--rule);
  border-top:2px solid var(--teal);
  padding:24px 24px 22px;
  display:flex;flex-direction:column;gap:8px;
}
.finding.break-finding{border-top-color:var(--terra);}
.finding .f-num{
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;color:var(--muted-2);font-weight:600;
}
.finding h4{
  font-family:var(--serif);font-weight:400;font-style:normal;font-size:18px;
  color:var(--ink);line-height:1.3;
}
.finding p{font-family:var(--sans);font-size:13px;line-height:1.6;color:var(--muted);}

/* ── IVUB ranking table ───────────────────────────────────── */
.ivub-table{
  background:var(--surface);border:1px solid var(--rule);
  overflow:hidden;
}
.ivub-table .ivub-row{
  display:grid;grid-template-columns:48px 1.4fr 1fr 80px 2.4fr;
  gap:18px;align-items:center;
  padding:14px 22px;border-bottom:1px solid var(--rule);
}
.ivub-table .ivub-row:last-child{border-bottom:0;}
.ivub-table .ivub-row.head{
  background:var(--surface-2);
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--muted-2);font-weight:500;
}
.ivub-table .ivub-row .rank{
  font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:0.06em;
}
.ivub-table .ivub-row .region{
  font-family:var(--serif);font-size:15px;color:var(--ink);line-height:1.2;
}
.ivub-table .ivub-row .country{
  font-family:var(--sans);font-size:12.5px;color:var(--muted);letter-spacing:0.04em;
}
.ivub-table .ivub-row .score{
  font-family:var(--mono);font-size:13px;color:var(--ink);font-weight:600;
  font-variant-numeric:tabular-nums;
}
.ivub-table .ivub-row .bar{
  height:4px;background:var(--surface-2);position:relative;border:1px solid var(--rule);
}
.ivub-table .ivub-row .bar i{
  display:block;height:100%;background:var(--teal);
}
.ivub-table .ivub-row.top{border-left:2px solid var(--terra);}
.ivub-table .ivub-row.top .bar i{background:var(--terra);}
.ivub-table .ivub-row.top .rank{color:var(--terra);font-weight:600;}
.ivub-table .ivub-row.bot{border-left:2px solid var(--resilience);}
.ivub-table .ivub-row.bot .bar i{background:var(--resilience);}
@media (max-width:760px){
  .ivub-table .ivub-row{grid-template-columns:36px 1fr 60px;gap:10px;padding:12px 16px;}
  .ivub-table .ivub-row .country,.ivub-table .ivub-row .bar{display:none;}
}

/* ── Anchor iframe (large featured product) ──────────────── */
.anchor-iframe{
  background:var(--surface);border:1px solid rgba(14,20,24,0.14);
  position:relative;overflow:hidden;
  box-shadow:0 30px 60px -50px rgba(14,20,24,0.25);
}
.anchor-head{
  display:flex;justify-content:space-between;align-items:center;gap:12px 20px;
  flex-wrap:wrap;
  padding:15px 24px;border-bottom:0;background:var(--institutional);
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--muted);
}
.anchor-head .title{min-width:0;flex:1 1 auto;}
.anchor-head .open{flex:0 0 auto;white-space:nowrap;}
.anchor-head .title{color:rgba(245,244,240,0.92);font-weight:600;}
.anchor-head .open{
  color:var(--brand-green);text-decoration:none;font-weight:600;
  display:inline-flex;align-items:center;gap:6px;
}
.anchor-head .open:hover{color:var(--brand-amber);}
.anchor-frame{position:relative;height:520px;overflow:hidden;background:#FAFAFA;}
.anchor-frame iframe{
  position:absolute;top:0;left:0;width:100%;height:100%;border:0;
  background:#fff;
}
/* Live-product embed fallback — visible behind the iframe.
   If the iframe loads correctly it paints over this message;
   if it fails (broken-file icon, network block, missing file)
   the user still sees a graceful link out. */
.anchor-frame .iframe-fallback{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;
  padding:32px 48px;background:#fbfcfd;color:#6B6355;
  font-family:var(--serif);font-size:14.5px;
  line-height:1.55;z-index:0;
}
.anchor-frame .iframe-fallback strong{
  color:#0E1418;font-weight:600;display:block;
  margin-bottom:8px;font-size:15px;letter-spacing:0.01em;
}
.anchor-frame .iframe-fallback a{
  color:#005F73;text-decoration:none;font-family:'SF Mono',ui-monospace,monospace;
  font-size:11.5px;letter-spacing:0.08em;text-transform:uppercase;
  border-bottom:1px solid currentColor;padding-bottom:2px;margin-top:14px;
}
.anchor-frame .iframe-fallback a:hover{color:#CA6702;}
.anchor-frame iframe{z-index:1;}
.anchor-frame.scaled iframe{width:140%;height:140%;transform:scale(0.72);transform-origin:top left;}

/* Scroll-driven territorial reveal — section 03 destination zones.
   As the user reads into the section the map gently zooms toward the
   metropolitan pressure corridor (upper-left, where HAR sinks and
   rent escalation concentrates). --pz is set by JS; falls back to 1. */
.anchor-frame.kenburns-zoom{position:relative;}
.anchor-frame.kenburns-zoom iframe{
  transform-origin:24% 32%;
  transform:scale(var(--pz,1));
  will-change:transform;
}
@media (prefers-reduced-motion:reduce){
  .anchor-frame.kenburns-zoom iframe{transform:scale(1) !important;}
}

/* (kb-cue overlay removed — replaced by scroll-driven zoom JS) */

/* Wider featured frame for "Return pressure" / "Absorption vs market" */
.anchor-iframe.wide .anchor-frame{height:600px;}
.anchor-iframe.step-04 .anchor-frame{height:760px;overflow:visible;}
.anchor-iframe.tall .anchor-frame{height:680px;}

/* ── Explore more (compact button row) ────────────────────── */
.explore-more{
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;
}
@media (max-width:760px){.explore-more{grid-template-columns:1fr;}}
.explore-btn{
  background:var(--surface);border:1px solid var(--rule-strong);
  padding:18px 22px;
  display:flex;justify-content:space-between;align-items:center;gap:18px;
  text-decoration:none;color:var(--ink);
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.explore-btn:hover{border-color:var(--teal);color:var(--teal);background:var(--surface-2);}
.explore-btn .lbl{
  font-family:var(--serif);font-size:15px;line-height:1.3;
}
.explore-btn .lbl span{
  display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:0.2em;
  text-transform:uppercase;color:var(--muted-2);margin-top:4px;font-weight:500;
}
.explore-btn .arr{font-family:var(--mono);color:var(--muted-2);font-size:14px;}
.explore-btn:hover .arr{color:var(--terra);}

/* ── Project 2 · sequence flow ─────────────────────────────── */
.seq-step{
  margin-top:48px;display:grid;grid-template-columns:64px 1fr;gap:32px;align-items:start;
  scroll-margin-top:110px; /* offset for sticky header so anchors show heading, not map */
}
@media (max-width:760px){.seq-step{grid-template-columns:1fr;gap:14px;}}
.seq-num{
  font-family:var(--serif);font-weight:300;font-size:60px;line-height:0.9;color:var(--terra);
  font-variant-numeric:tabular-nums;letter-spacing:-0.04em;
}
.seq-body h3{
  font-family:var(--serif);font-weight:400;font-size:clamp(24px,2.6vw,32px);
  line-height:1.18;color:var(--ink);margin-bottom:10px;letter-spacing:-0.008em;
}
.seq-body h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.seq-body .intro{
  font-family:var(--serif);font-weight:300;font-style:normal;font-size:16px;line-height:1.7;
  color:var(--ink);max-width:780px;margin-bottom:22px;
}

/* ── Pair (Aliyah vs Returnees, equal weight) ──────────────── */
.pair-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
@media (max-width:880px){.pair-grid{grid-template-columns:1fr;}}
.pair-card{
  background:var(--surface);border:1px solid var(--rule);
  display:flex;flex-direction:column;text-decoration:none;color:inherit;
  transition:border-color .18s ease;
}
.pair-card:hover{border-color:var(--teal);}
.pair-card.concept-a{border-top:3px solid var(--teal);}
.pair-card.concept-b{border-top:3px solid var(--amber);}
.pair-card .pc-head{
  padding:16px 22px;border-bottom:1px solid var(--rule);
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted);font-weight:600;display:flex;justify-content:space-between;
}
.pair-card.concept-a .pc-head .tag{color:var(--teal);}
.pair-card.concept-b .pc-head .tag{color:var(--terra);}
.pair-card .pc-frame{position:relative;height:240px;overflow:hidden;background:#fff;}
.pair-card .pc-frame iframe{
  position:absolute;top:0;left:0;width:285%;height:285%;border:0;
  transform:scale(0.35);transform-origin:top left;pointer-events:none;
}
.pair-card .pc-body{padding:22px 24px 24px;display:flex;flex-direction:column;gap:10px;flex:1;}
.pair-card h4{
  font-family:var(--serif);font-weight:400;font-size:20px;line-height:1.25;color:var(--ink);
}
.pair-card h4 em{font-style:normal;font-weight:500;color:var(--teal);}
.pair-card .pc-desc{font-family:var(--sans);font-size:13.5px;line-height:1.65;color:var(--muted);}
.pair-card .pc-cta{
  margin-top:auto;padding-top:16px;border-top:1px solid var(--rule);
  font-family:var(--sans);font-size:11.5px;font-weight:500;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--teal);display:flex;justify-content:space-between;align-items:center;
}
.pair-card .pc-cta .arr{font-family:var(--mono);transition:transform .15s ease;}
.pair-card:hover .pc-cta .arr{transform:translateX(4px);}

/* ── FAI star CTA + Clusters fallback ─────────────────────── */
.decision-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;align-items:stretch;}
@media (max-width:880px){.decision-grid{grid-template-columns:1fr;}}
.fai-star{
  background:var(--surface);border:1px solid var(--rule-strong);
  border-left:3px solid var(--teal);
  padding:32px 32px 28px;
  display:flex;flex-direction:column;gap:14px;text-decoration:none;color:inherit;
  transition:border-color .15s ease;position:relative;
}
.fai-star:hover{border-color:var(--terra);border-left-color:var(--terra);}
.fai-star .star{
  position:absolute;top:24px;right:24px;
  font-family:var(--mono);font-size:9px;letter-spacing:0.24em;text-transform:uppercase;
  color:var(--terra);font-weight:600;
  border:1px solid var(--terra);padding:4px 8px;
}
.fai-star .fs-eyebrow{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.fai-star h3{
  font-family:var(--serif);font-weight:400;font-size:28px;line-height:1.15;color:var(--ink);
  letter-spacing:-0.005em;
}
.fai-star h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.fai-star .fs-desc{font-family:var(--sans);font-size:14px;line-height:1.7;color:var(--ink);max-width:520px;}
.fai-star .fs-diagram{
  margin-top:14px;padding:18px;background:var(--surface-2);border:1px solid var(--rule);
}
.fai-star .fs-diagram svg{width:100%;height:auto;display:block;}
.fai-star .fs-cta{
  margin-top:auto;padding-top:20px;display:inline-flex;align-items:center;gap:10px;
  font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--terra);align-self:flex-start;
}
.fai-star:hover .fs-cta{color:var(--ink-deep);}
.fai-star .fs-cta .arr{font-family:var(--mono);transition:transform .15s ease;}
.fai-star:hover .fs-cta .arr{transform:translateX(4px);}

.clusters-card{
  background:var(--surface);border:1px solid var(--rule-strong);
  padding:28px 28px 24px;
  display:flex;flex-direction:column;gap:16px;
}
.clusters-card .ce{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--terra);font-weight:600;
}
.clusters-card h3{
  font-family:var(--serif);font-weight:400;font-size:24px;line-height:1.2;color:var(--ink);
}
.clusters-card h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.clusters-card .cl-map{
  margin:6px 0;padding:18px;background:var(--surface-2);border:1px solid var(--rule);
}
.clusters-card .cl-map svg{width:100%;height:auto;display:block;}
.clusters-card .cl-btns{
  display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;
}
@media (max-width:760px){.clusters-card .cl-btns{grid-template-columns:1fr;}}
.clusters-card .cl-btn{
  background:var(--surface);border:1px solid var(--rule-strong);
  padding:12px 14px;text-decoration:none;color:var(--ink);
  display:flex;flex-direction:column;gap:4px;
  font-family:var(--sans);font-size:12px;line-height:1.35;
  transition:border-color .15s ease,background .15s ease;
}
.clusters-card .cl-btn:hover{border-color:currentColor;}
.clusters-card .cl-btn.urgent{border-left:3px solid var(--alert);color:var(--alert);}
.clusters-card .cl-btn.monitor{border-left:3px solid var(--amber);color:var(--terra);}
.clusters-card .cl-btn.resilient{border-left:3px solid var(--resilience);color:var(--teal-deep);}
.clusters-card .cl-btn .l{
  font-family:var(--mono);font-size:9px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--muted-2);font-weight:600;
}
.clusters-card .cl-btn strong{
  font-family:var(--serif);font-weight:400;font-style:normal;font-size:14px;color:var(--ink);
}
.clusters-card .cl-open{
  margin-top:auto;padding-top:14px;border-top:1px solid var(--rule);
  font-family:var(--sans);font-size:11.5px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;
  color:var(--teal);text-decoration:none;
  display:flex;justify-content:space-between;align-items:center;
}

/* ── Contact section · gap consolidated in canonical block below ─ */
section.surface#contact .form-aside li{
  padding:18px 0;align-items:flex-start;line-height:1.65;
}
section.surface#contact .form-aside li .k{width:108px;padding-top:2px;}

/* ── Footer signature ──────────────────────────────────────── */
footer .author-block{
  margin-top:24px;padding-top:20px;border-top:1px solid rgba(245,244,240,0.10);
}
footer .author-block .signature .name{font-size:20px;}
footer .author-block .signature .role{margin-top:8px;}

/* ═══════════════════════════════════════════════════════════
   Header status, dropdown, hero strata,
   axis-and-modules, dark table, KPI scale, sober FAI,
   landing-style elasticity, clusters landing, footer
   ═══════════════════════════════════════════════════════════ */

/* ── Header status row (replaces author-line) ──────────────── */
.status-row{
  background:rgba(0,0,0,0.22);
  border-bottom:1px solid rgba(245,244,240,0.06);
}
.status-row .inner{
  display:flex;align-items:center;gap:10px;
  padding-top:7px;padding-bottom:7px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.55);font-weight:500;
}
.status-row .pulse{
  width:6px;height:6px;border-radius:50%;background:var(--teal-deep);
  box-shadow:0 0 0 3px rgba(0,95,115,0.18);position:relative;
}
.status-row .pulse::after{
  content:"";position:absolute;inset:-4px;border-radius:50%;
  background:rgba(0,95,115,0.32);animation:pulseRing 2.6s ease-in-out infinite;
}
.status-row .title{color:rgba(245,244,240,0.85);font-weight:600;letter-spacing:0.18em;}
.status-row .right{margin-left:auto;color:rgba(245,244,240,0.4);}

/* ── Projects dropdown ───────────────────────────────────── */
.has-dropdown{position:relative;}
.has-dropdown > button{
  background:transparent;border:0;cursor:pointer;
  color:rgba(245,244,240,0.78);font:inherit;
  font-size:12.5px;font-weight:500;letter-spacing:0.04em;
  padding:6px 0;border-bottom:1px solid transparent;
  display:inline-flex;align-items:center;gap:6px;
  transition:color .15s ease,border-color .15s ease;
}
.has-dropdown > button:hover,
.has-dropdown.open > button{color:#F5F4F0;border-bottom-color:var(--brand-amber);}
.has-dropdown > button .caret{
  display:inline-block;font-size:9px;line-height:1;transition:transform .15s ease;
}
.has-dropdown.open > button .caret{transform:rotate(180deg);}

.dropdown-panel{
  position:absolute;top:calc(100% + 12px);left:-16px;
  min-width:360px;
  max-width:calc(100vw - 32px);
  background:var(--navy-card);border:1px solid rgba(245,244,240,0.12);
  box-shadow:0 30px 60px -20px rgba(0,0,0,0.6);
  padding:8px 0;z-index:80;
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .15s ease,visibility .15s ease,transform .15s ease;
}
@media (max-width:1100px){
  .dropdown-panel{left:auto;right:0;}
}
.has-dropdown.open .dropdown-panel{opacity:1;visibility:visible;transform:translateY(0);}
.dropdown-panel a{
  display:grid;grid-template-columns:36px 1fr auto;gap:18px;align-items:center;
  padding:14px 22px;text-decoration:none;color:rgba(245,244,240,0.85);
  border-bottom:1px solid rgba(245,244,240,0.06);
  transition:background .12s ease;
}
.dropdown-panel a:last-child{border-bottom:0;}
.dropdown-panel a:hover{background:rgba(245,244,240,0.04);color:#F5F4F0;}
.dropdown-panel .dp-num{
  font-family:var(--mono);font-size:10px;letter-spacing:0.2em;color:var(--amber);font-weight:600;
}
.dropdown-panel .dp-name{
  font-family:var(--serif);font-weight:400;font-size:14px;line-height:1.3;color:#F5F4F0;
}
.dropdown-panel .dp-name em{font-style:normal;font-weight:500;color:var(--resilience);display:block;font-size:11.5px;margin-top:2px;}
.dropdown-panel .dp-code{
  font-family:var(--mono);font-size:10px;letter-spacing:0.18em;color:rgba(245,244,240,0.5);font-weight:500;
}
@media (max-width:980px){.has-dropdown{display:none;}}

/* ── Hero stratified composition ──────────────────────────── */
.hero-slogan.v3{position:relative;overflow:hidden;}

/* Mideast editorial dark panel — institutional intelligence basemap.
   Replaces the post-it sticky-note variant entirely. */
.hero-slogan.v3.mideast-panel{
  overflow:hidden;
  background:#0E1418;
  border:1px solid rgba(255,255,255,0.06);
  padding:0;
  box-shadow:0 40px 80px -50px rgba(14,20,24,0.55);
  display:flex;flex-direction:column;
  height:620px;
}
.hero-slogan.v3.mideast-panel::before{display:none;}
.hero-slogan.v3.mideast-panel .mp-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:16px 24px;border-bottom:1px solid rgba(255,255,255,0.08);
  background:rgba(0,0,0,0.18);
}
.hero-slogan.v3.mideast-panel .mp-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.24em;text-transform:uppercase;
  color:rgba(216,179,101,0.85);font-weight:500;
}
.hero-slogan.v3.mideast-panel .mp-coords{
  font-family:var(--mono);font-size:10px;letter-spacing:0.18em;
  color:rgba(255,255,255,0.55);
}

.hero-slogan.v3.mideast-panel .mp-map{
  position:relative;flex:1;
  display:block;
  background:#0A0F13;
  overflow:hidden;
  min-height:320px;
}
/* Editorial SVG territorial map — fills the container absolutely */
.hero-slogan.v3.mideast-panel .mp-map svg{
  position:absolute;top:0;left:0;
  width:100%;height:100%;
  display:block;
}
/* Bottom fade — keeps caption area readable */
.hero-slogan.v3.mideast-panel .mp-map::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(6,13,18,0.04) 0%,rgba(6,13,18,0.52) 100%);
  pointer-events:none;z-index:1;
}

.hero-slogan.v3.mideast-panel .mp-caption{
  border-top:1px solid rgba(255,255,255,0.08);
  padding:24px 26px 26px;
  background:rgba(0,0,0,0.22);
  display:flex;flex-direction:column;gap:18px;
  overflow:visible;flex-shrink:0;
}
.hero-slogan.v3.mideast-panel .mp-slogan{
  font-family:var(--serif);font-weight:300;font-style:normal;
  font-size:15px;line-height:1.70;color:rgba(245,244,240,0.88);
  margin:0;letter-spacing:0;text-wrap:pretty;
}
/* Yellow bold line and white body line share same left edge (inherited from mp-caption padding) */
.hero-slogan.v3.mideast-panel .mp-slogan strong{
  display:block;
  margin:0 0 8px 0;   /* flush with body text — same left edge, gap only via margin-bottom */
  padding:0;
  font-size:14.5px;line-height:1.55;
  font-style:normal;font-weight:600;color:rgba(216,179,101,0.95);
}
.hero-slogan.v3.mideast-panel .mp-meta{
  display:grid;grid-template-columns:1fr;gap:10px;
  padding-top:18px;border-top:1px solid rgba(255,255,255,0.12);
}
.hero-slogan.v3.mideast-panel .mp-meta-row{
  display:flex;align-items:baseline;gap:16px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;
  line-height:1.6;
}
.hero-slogan.v3.mideast-panel .mp-meta-row .mp-k{color:rgba(255,255,255,0.45);white-space:nowrap;}
.hero-slogan.v3.mideast-panel .mp-meta-row .mp-v{color:rgba(216,179,101,0.85);font-weight:500;white-space:nowrap;}
.hero-slogan.v3 .strata{
  position:absolute;inset:0;pointer-events:none;
}
.hero-slogan.v3 .strata svg{position:absolute;inset:0;width:100%;height:100%;display:block;}

/* Slow territorial drift — gentle, almost imperceptible */
.hero-slogan.v3 .strata svg:nth-child(1){animation:terraDriftA 48s ease-in-out infinite alternate;}
.hero-slogan.v3 .strata svg:nth-child(2){animation:terraDriftB 64s ease-in-out infinite alternate;}
.hero-slogan.v3 .strata svg:nth-child(3){animation:terraDriftC 72s linear infinite alternate;}
@keyframes terraDriftA{
  0%{transform:translate(0,0) scale(1);}
  100%{transform:translate(-1.4%,0.6%) scale(1.015);}
}
@keyframes terraDriftB{
  0%{transform:translate(0,0);}
  100%{transform:translate(1.2%,-0.8%);}
}
@keyframes terraDriftC{
  0%{transform:translate(0,0);opacity:0.85;}
  100%{transform:translate(0,1.2%);opacity:1;}
}
@media (prefers-reduced-motion:reduce){
  .hero-slogan.v3 .strata svg{animation:none !important;}
}

/* Migration flow vectors — slow stroke-dash drift */
.hero-slogan.v3 .strata .flow-path{
  stroke-dasharray:3 6;
  animation:flowDrift 14s linear infinite;
}
@keyframes flowDrift{
  0%{stroke-dashoffset:0;}
  100%{stroke-dashoffset:-180;}
}
@media (prefers-reduced-motion:reduce){
  .hero-slogan.v3 .strata .flow-path{animation:none !important;}
}

.hero-slogan.v3 .overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(255,255,255,0.86) 0%,rgba(255,255,255,0.94) 60%,rgba(255,255,255,0.97) 100%);
  pointer-events:none;
}
.hero-slogan.v3 .quote-mark,
.hero-slogan.v3 .slogan,
.hero-slogan.v3 .sig{position:relative;z-index:2;}
.hero-slogan.v3 .sig{
  justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:8px;
  border-top:1px solid var(--rule);padding-top:18px;
}
.hero-slogan.v3 .sig .scope-meta{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);line-height:1.5;
}
.hero-slogan.v3 .sig .scope-meta:first-child{color:var(--teal);font-weight:600;}

/* ── Initiatives · IVUB axis + derivative modules ────────── */
.init-axis{
  display:grid;grid-template-columns:5fr 7fr;gap:0;
  background:var(--surface);border:1px solid var(--rule-strong);
  margin-top:32px;
}
@media (max-width:980px){.init-axis{grid-template-columns:1fr;}}
.ax-main{
  padding:48px 44px;border-right:1px solid var(--rule);
  position:relative;background:var(--surface);
  display:flex;flex-direction:column;gap:20px;
  text-decoration:none;color:inherit;
  transition:background .15s ease;
}
.ax-main:hover{background:var(--surface-2);}
@media (max-width:980px){.ax-main{border-right:0;border-bottom:1px solid var(--rule);}}
.ax-main .ax-code{
  font-family:var(--mono);font-size:13px;letter-spacing:0.22em;color:var(--terra);font-weight:600;
}
.ax-main .ax-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted);font-weight:500;
}
.ax-main h3{
  font-family:var(--serif);font-weight:400;font-size:clamp(28px,3.2vw,42px);
  line-height:1.08;color:var(--ink);letter-spacing:-0.012em;
}
.ax-main h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.ax-main .ax-desc{
  font-family:var(--serif);font-weight:300;font-style:normal;font-size:16px;line-height:1.65;color:var(--ink);
  max-width:380px;
}
.ax-main .ax-meta{
  margin-top:auto;padding-top:16px;border-top:1px solid var(--rule);
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);
  line-height:1.7;
}
.ax-main .ax-meta strong{color:var(--ink);font-weight:600;}
.ax-main .ax-cta{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:0.12em;
  text-transform:uppercase;color:var(--teal);
}

.ax-derivatives{
  display:flex;flex-direction:column;
  position:relative;
}
.ax-derivatives::before{
  content:"";position:absolute;left:0;top:24px;bottom:24px;width:1px;
  background:linear-gradient(180deg,var(--teal) 0%,rgba(0,95,115,0.15) 100%);
}
.ax-row{
  display:grid;grid-template-columns:64px 168px 1fr 40px;gap:32px;align-items:center;
  padding:22px 28px 22px 56px;border-bottom:1px solid var(--rule);
  text-decoration:none;color:inherit;
  transition:background .15s ease;
  position:relative;
}
.ax-row::before{
  content:"";position:absolute;left:28px;top:50%;width:20px;height:1px;background:var(--teal);opacity:0.45;
}
.ax-row:last-child{border-bottom:0;}
.ax-row:hover{background:var(--surface-2);}
.ax-row .code{
  font-family:var(--mono);font-size:12px;letter-spacing:0.18em;
  color:var(--terra);font-weight:600;text-align:left;
}
.ax-row .dim{
  font-family:var(--serif);font-style:normal;font-weight:400;
  font-size:24px;color:var(--ink);letter-spacing:-0.008em;line-height:1.2;
}
.ax-row .dim .lang-en,
.ax-row .dim .lang-es{font-family:inherit;font-style:inherit;}
.ax-row .sub{font-family:var(--sans);font-size:12px;color:var(--muted);line-height:1.5;}
.ax-row .arr{font-family:var(--mono);font-size:14px;color:var(--muted-2);text-align:right;transition:transform .15s ease,color .15s ease;}
.ax-row:hover .arr{color:var(--teal);transform:translateX(4px);}
@media (max-width:760px){
  .ax-row{grid-template-columns:54px 1fr 26px;gap:14px;padding:16px 18px 16px 40px;}
  .ax-row .sub{display:none;}
  .ax-row::before{left:18px;width:14px;}
}

/* ── KPI strip · period-row rhythm ────────────────────────── */
.kpi-strip.v3 .kpi{
  padding:24px 22px;gap:0;
  display:flex;flex-direction:column;
  justify-content:flex-end;
}
.kpi-strip.v3 .kpi .val{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(30px,3vw,38px);line-height:1;letter-spacing:-0.024em;
  color:var(--ink);
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum","lnum";
  margin-bottom:10px;
}
.kpi-strip.v3 .kpi .val em{
  font-style:normal;color:var(--terra);font-weight:400;
  font-size:inherit;line-height:inherit;
}
.kpi-strip.v3 .kpi .lbl{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.20em;
  text-transform:uppercase;color:var(--muted);font-weight:500;
  line-height:1.4;
  text-wrap:balance;
}
@media (max-width:880px){
  .kpi-strip.v3 .kpi{padding:22px 18px 18px;}
  .kpi-strip.v3 .kpi .val{font-size:28px;margin-bottom:8px;}
}
@media (max-width:520px){
  .kpi-strip.v3 .kpi{padding:24px var(--gutter);}
}

/* ── IVUB table dark header ────────────────────────────────── */
.ivub-table .ivub-row.head.dark{
  background:var(--ink-deep);
  color:rgba(245,244,240,0.7);
  border-bottom-color:var(--ink-deep);
}
.ivub-table .ivub-row.head.dark .region,
.ivub-table .ivub-row.head.dark .country,
.ivub-table .ivub-row.head.dark .score,
.ivub-table .ivub-row.head.dark .rank{color:rgba(245,244,240,0.55);}
.ivub-table .ivub-row.head.dark .score{color:#F5F4F0;font-weight:600;}
.ivub-table .ivub-row.head.dark > span:last-child{color:rgba(245,244,240,0.5);}
.ivub-table .ivub-row.head.dark{padding-top:18px;padding-bottom:18px;}

/* ── Anchor frame · taller for Project 1 timeseries ───────── */
.anchor-iframe.tall .anchor-frame{height:720px;}
.anchor-iframe.wide .anchor-frame{height:600px;}
/* Rental-stress product (Plotly, native height 600) — crop the white letterbox */
.anchor-iframe.tall.stress .anchor-frame{height:600px;}
@media (max-width:880px){
  .anchor-iframe.tall .anchor-frame{height:520px;}
  .anchor-iframe.wide .anchor-frame{height:480px;}
  .anchor-iframe.tall.stress .anchor-frame{height:560px;}
  /* step-04 HAR plot has fixed 720px height — must stay tall at all viewports
     or the bottom panel (axes/labels/points) clips */
  .anchor-iframe.step-04 .anchor-frame{height:740px;}
}
.anchor-iframe{box-shadow:0 40px 80px -50px rgba(14,20,24,0.35);}

/* ── Explore more · 1·1·2 grid with featured CTA ──────────── */
.explore-more.v3{grid-template-columns:1fr 1fr 2fr;gap:16px;}
@media (max-width:880px){.explore-more.v3{grid-template-columns:1fr;}}
.explore-btn.feature{
  background:var(--navy-card);border-color:var(--navy-card);color:#F5F4F0;
  padding:28px 32px;
  align-items:flex-start;gap:18px;
}
.explore-btn.feature:hover{background:#2C435C;border-color:#2C435C;color:#fff;}
.explore-btn.feature .lbl{font-size:22px;line-height:1.25;font-family:var(--serif);font-weight:400;color:#F5F4F0;}
.explore-btn.feature .lbl span{font-size:11px;letter-spacing:0.12em;text-transform:none;color:rgba(245,244,240,0.60);}
.explore-btn.feature .lbl em{font-style:normal;font-weight:300;color:var(--brand-amber);}
.explore-btn.feature .lbl span{color:rgba(245,244,240,0.55);margin-top:8px;font-size:10px;}
.explore-btn.feature .arr{color:var(--brand-amber);font-size:18px;}
.explore-btn.feature:hover .arr{color:#fff;}
.explore-btn.feature:hover .lbl{color:#fff;}
.explore-btn.feature:hover .lbl em{color:#F5F4F0;}

/* ── Elasticity · editorial landing-style card ────────────── */
.elasticity-card{
  margin-top:32px;
  background:var(--surface);border:1px solid var(--rule-strong);
  border-left:3px solid var(--teal);
  padding:0;
  display:grid;grid-template-columns:1.2fr 1fr;gap:0;
  text-decoration:none;color:inherit;
  transition:border-color .15s ease;
}
.elasticity-card:hover{border-color:var(--teal);}
@media (max-width:880px){.elasticity-card{grid-template-columns:1fr;}}
.elasticity-card .ec-text{padding:36px 40px;display:flex;flex-direction:column;gap:14px;}
.elasticity-card .ec-eyebrow{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.elasticity-card h3{
  font-family:var(--serif);font-weight:400;font-size:clamp(26px,2.6vw,32px);
  line-height:1.15;color:var(--ink);letter-spacing:-0.005em;
}
.elasticity-card h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.elasticity-card .ec-desc{
  font-family:var(--serif);font-weight:300;font-size:16px;line-height:1.7;color:var(--ink);max-width:480px;
}
.elasticity-card .ec-bullets{
  list-style:none;margin:8px 0 0 0;padding:0;
}
.elasticity-card .ec-bullets li{
  position:relative;padding-left:18px;margin-bottom:8px;
  font-family:var(--sans);font-size:13.5px;line-height:1.6;color:var(--ink);
}
.elasticity-card .ec-bullets li::before{
  content:"";position:absolute;left:0;top:11px;width:8px;height:1px;background:var(--teal);
}
.elasticity-card .ec-cta{
  margin-top:auto;padding-top:18px;
  font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;
  color:var(--terra);display:inline-flex;align-items:center;gap:10px;
}
.elasticity-card .ec-viz{
  background:var(--surface-2);border-left:1px solid var(--rule);
  padding:36px 40px;display:flex;align-items:center;justify-content:center;
}
.elasticity-card .ec-viz svg{width:100%;height:auto;display:block;}
@media (max-width:880px){.elasticity-card .ec-viz{border-left:0;border-top:1px solid var(--rule);}}

/* ── Urban Response · editorial system block (replaces elasticity card) ───── */
.response-system{
  margin-top:32px;
  background:var(--surface);border:1px solid var(--rule-strong);
  display:grid;grid-template-columns:1fr 1.15fr;gap:0;
  box-shadow:0 30px 60px -50px rgba(14,20,24,0.22);
}
@media (max-width:980px){.response-system{grid-template-columns:1fr;}}
.response-system .rs-text{
  padding:44px 48px;display:flex;flex-direction:column;gap:18px;
  border-right:1px solid var(--rule);
}
@media (max-width:980px){.response-system .rs-text{border-right:0;border-bottom:1px solid var(--rule);}}
.response-system .rs-eyebrow{
  display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;
  margin-bottom:2px;
}
.response-system .rs-eyebrow .rs-system{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.response-system .rs-eyebrow .rs-context{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);font-weight:400;
}
.response-system .rs-title{
  font-family:var(--serif);font-weight:400;font-size:clamp(36px,4.4vw,52px);
  line-height:1.04;color:var(--ink);letter-spacing:-0.015em;margin:0;
}
.response-system .rs-sub{
  font-family:var(--serif);font-weight:500;font-size:18px;color:var(--teal);
  letter-spacing:-0.005em;margin:0 0 8px 0;
}
.response-system .rs-para{
  font-family:var(--serif);font-weight:300;font-size:15px;line-height:1.7;
  color:var(--ink);margin:0;max-width:480px;text-wrap:pretty;
}
.response-system .rs-para strong{font-weight:500;color:var(--ink);}
.response-system .rs-cta{
  margin-top:auto;padding-top:16px;
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--serif);font-size:15px;font-weight:400;color:var(--teal);
  text-decoration:none;border-bottom:1px solid var(--teal);align-self:flex-start;
  padding-bottom:3px;transition:color .15s ease,border-color .15s ease;
}
.response-system .rs-cta:hover{color:var(--terra);border-bottom-color:var(--terra);}
.response-system .rs-cta .arr{font-family:var(--mono);font-size:13px;}

.response-system .rs-chart{
  padding:36px 40px;display:flex;flex-direction:column;gap:14px;
  background:var(--surface);
}
.response-system .rs-chart-eyebrow{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted);
}
.response-system .rs-chart-title{
  font-family:var(--serif);font-weight:500;font-size:16px;color:var(--ink);
  line-height:1.4;letter-spacing:-0.005em;
}
.response-system .rs-chart-svg{
  width:100%;height:auto;display:block;
  background:#fff;
}
.response-system .rs-chart-legend{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;
  padding-top:8px;
}
.response-system .rs-chart-legend span{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sans);font-size:11.5px;line-height:1.4;color:var(--ink);
}
.response-system .rs-chart-legend span i{
  width:14px;height:2px;background:#0A4256;flex-shrink:0;
}
.response-system .rs-chart-note{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:12.5px;line-height:1.55;color:var(--muted);
  padding-top:10px;border-top:1px solid var(--rule);
  margin:6px 0 0 0;
}

/* ── Response System · vertical flow with wide horizontal chart ── */
.response-system.v2{
  display:block;grid-template-columns:none;
  padding:0;
}
.response-system.v2 .rs-head{
  padding:44px 48px 24px;border-bottom:1px solid var(--rule);
  display:flex;flex-direction:column;gap:10px;
}
.response-system.v2 .rs-head .rs-eyebrow{
  display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;margin-bottom:4px;
}
.response-system.v2 .rs-head .rs-title{
  font-family:var(--serif);font-weight:400;font-size:clamp(36px,4.4vw,52px);
  line-height:1.04;color:var(--ink);letter-spacing:-0.015em;margin:0;
}
.response-system.v2 .rs-head .rs-sub{
  font-family:var(--serif);font-weight:500;font-size:18px;color:var(--teal);
  letter-spacing:-0.005em;margin:0;
}
.response-system.v2 .rs-intro-grid{
  display:grid;grid-template-columns:1.4fr 1fr;gap:48px;
  padding:32px 48px 28px;border-bottom:1px solid var(--rule);
  align-items:start;
}
@media (max-width:880px){.response-system.v2 .rs-intro-grid{grid-template-columns:1fr;gap:20px;}}
.response-system.v2 .rs-intro-para{
  font-family:var(--serif);font-weight:300;font-size:15.5px;line-height:1.7;
  color:var(--ink);margin:0;max-width:none;text-wrap:pretty;
}
.response-system.v2 .rs-chart-intro{
  display:flex;flex-direction:column;gap:8px;
  padding-left:24px;border-left:1px solid var(--rule);
}
@media (max-width:880px){.response-system.v2 .rs-chart-intro{padding-left:0;border-left:0;}}
.response-system.v2 .rs-chart-intro .rs-chart-eyebrow{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted);
}
.response-system.v2 .rs-chart-intro .rs-chart-title{
  font-family:var(--serif);font-weight:500;font-size:16px;color:var(--ink);
  line-height:1.4;letter-spacing:-0.005em;
}
.response-system.v2 .rs-chart-wide{
  padding:24px 48px 28px;
  background:#fff;
  border-bottom:1px solid var(--rule);
}
.response-system.v2 .rs-chart-wide .rs-chart-svg{
  width:100%;height:auto;display:block;
}
.response-system.v2 .rs-chart-wide .rs-chart-legend{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 20px;
  padding-top:14px;
}
@media (max-width:880px){.response-system.v2 .rs-chart-wide .rs-chart-legend{grid-template-columns:repeat(2,1fr);}}
.response-system.v2 .rs-chart-wide .rs-chart-legend span{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sans);font-size:11.5px;line-height:1.4;color:var(--ink);
}
.response-system.v2 .rs-chart-wide .rs-chart-legend span i{
  width:14px;height:2px;background:#0A4256;flex-shrink:0;
}
.response-system.v2 .rs-analysis-grid{
  display:grid;grid-template-columns:1.4fr 1fr;gap:48px;
  padding:30px 48px 36px;
  align-items:start;
}
@media (max-width:880px){.response-system.v2 .rs-analysis-grid{grid-template-columns:1fr;gap:20px;}}
.response-system.v2 .rs-analysis-para{
  font-family:var(--serif);font-weight:300;font-size:15.5px;line-height:1.7;
  color:var(--ink);margin:0;max-width:none;text-wrap:pretty;
}
.response-system.v2 .rs-analysis-side{
  display:flex;flex-direction:column;gap:14px;
  padding-left:24px;border-left:1px solid var(--rule);
}
@media (max-width:880px){.response-system.v2 .rs-analysis-side{padding-left:0;border-left:0;}}
.response-system.v2 .rs-analysis-side .rs-chart-note{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:12.5px;line-height:1.55;color:var(--muted);
  margin:0;padding-top:0;border-top:0;
}
.response-system.v2 .rs-analysis-side .rs-cta{
  margin-top:auto;
  display:inline-flex;align-items:center;gap:10px;align-self:flex-start;
  font-family:var(--serif);font-size:15px;font-weight:400;color:var(--teal);
  text-decoration:none;border-bottom:1px solid var(--teal);
  padding-bottom:3px;transition:color .15s ease,border-color .15s ease;
}
.response-system.v2 .rs-analysis-side .rs-cta:hover{color:var(--terra);border-bottom-color:var(--terra);}
.response-system.v2 .rs-analysis-side .rs-cta .arr{font-family:var(--mono);font-size:13px;}

/* ── Response System v3 · clean vertical flow (intro → chart-head → wide chart → post-chart) ── */
.response-system.v3{
  margin-top:32px;
  background:var(--surface);border:1px solid var(--rule-strong);
  display:flex;flex-direction:column;
  box-shadow:0 30px 60px -50px rgba(14,20,24,0.20);
}
.response-system.v3 .rs-intro{
  padding:40px 56px 28px;
  border-bottom:1px solid var(--rule);
}
.response-system.v3 .rs-intro-para{
  font-family:var(--serif);font-weight:300;font-size:17px;line-height:1.7;
  color:var(--ink);margin:0;max-width:880px;text-wrap:pretty;
}
.response-system.v3 .rs-intro-para strong{font-weight:500;color:var(--ink);}

.response-system.v3 .rs-chart-header{
  padding:24px 56px 8px;display:flex;flex-direction:column;gap:6px;
}
.response-system.v3 .rs-chart-header .rs-chart-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.24em;text-transform:uppercase;
  color:var(--muted);
}
.response-system.v3 .rs-chart-header .rs-chart-title{
  font-family:var(--serif);font-weight:500;font-size:17px;color:var(--ink);
  line-height:1.4;letter-spacing:-0.005em;
}

.response-system.v3 .rs-chart-wide{
  padding:0 56px 16px;
  background:var(--surface);
}
.response-system.v3 .rs-chart-svg{
  width:100%;height:auto;display:block;
}
.response-system.v3 .rs-chart-legend{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 24px;
  padding-top:14px;padding-bottom:6px;
}
@media (max-width:980px){.response-system.v3 .rs-chart-legend{grid-template-columns:repeat(2,1fr);}}
.response-system.v3 .rs-chart-legend span{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--sans);font-size:12px;line-height:1.4;color:var(--ink);
}
.response-system.v3 .rs-chart-legend span i{
  width:16px;height:2px;background:#0A4256;flex-shrink:0;
}

.response-system.v3 .rs-postchart{
  display:grid;grid-template-columns:1.2fr 1fr;gap:48px;
  padding:28px 56px 40px;border-top:1px solid var(--rule);
  align-items:start;
}
@media (max-width:880px){.response-system.v3 .rs-postchart{grid-template-columns:1fr;gap:20px;}}
.response-system.v3 .rs-pc-left{
  display:flex;flex-direction:column;gap:10px;
  padding-right:24px;border-right:1px solid var(--rule);
}
@media (max-width:880px){.response-system.v3 .rs-pc-left{padding-right:0;border-right:0;border-bottom:1px solid var(--rule);padding-bottom:14px;}}
.response-system.v3 .rs-caption-title{
  font-family:var(--serif);font-weight:500;font-size:15px;color:var(--ink);
  line-height:1.4;letter-spacing:-0.005em;
}
.response-system.v3 .rs-chart-note{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:13.5px;line-height:1.6;color:var(--muted);
  margin:0;text-wrap:pretty;
}
.response-system.v3 .rs-pc-right{
  display:flex;flex-direction:column;gap:18px;
}
.response-system.v3 .rs-analysis-para{
  font-family:var(--serif);font-weight:300;font-size:15px;line-height:1.7;
  color:var(--ink);margin:0;text-wrap:pretty;
}
.response-system.v3 .rs-analysis-para strong{font-weight:500;color:var(--ink);}
.response-system.v3 .rs-cta{
  display:inline-flex;align-items:center;gap:10px;align-self:flex-start;
  font-family:var(--serif);font-size:15px;font-weight:400;color:var(--teal);
  text-decoration:none;border-bottom:1px solid var(--teal);
  padding-bottom:3px;transition:color .15s ease,border-color .15s ease;
}
.response-system.v3 .rs-cta:hover{color:var(--terra);border-bottom-color:var(--terra);}
.response-system.v3 .rs-cta .arr{font-family:var(--mono);font-size:13px;}

/* Editorial intro stack + chart caption (new vertical structure) */
.response-system.v2 .rs-intro-stack{
  display:flex;flex-direction:column;gap:16px;
}
.response-system.v2 .rs-caption-side{
  padding-left:0;border-left:0;border-right:1px solid var(--rule);padding-right:24px;
}
@media (max-width:880px){
  .response-system.v2 .rs-caption-side{border-right:0;border-bottom:1px solid var(--rule);padding-right:0;padding-bottom:14px;}
}
.response-system.v2 .rs-caption-title{
  font-family:var(--serif);font-weight:500;font-size:15px;color:var(--ink);
  line-height:1.4;letter-spacing:-0.005em;
}

/* ── Clusters · landing block 2-col ────────────────────────── */
.clusters-landing{
  margin-top:32px;
  background:var(--surface);border:1px solid var(--rule-strong);
  border-left:3px solid var(--terra);
  display:grid;grid-template-columns:1fr 1fr;gap:0;
}
@media (max-width:980px){.clusters-landing{grid-template-columns:1fr;}}
.clusters-landing .cl-text{padding:40px 44px;display:flex;flex-direction:column;gap:16px;}
.clusters-landing .cl-eyebrow{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--terra);font-weight:600;
}
.clusters-landing h3{
  font-family:var(--serif);font-weight:400;font-size:clamp(26px,2.6vw,32px);
  line-height:1.15;color:var(--ink);letter-spacing:-0.005em;
}
.clusters-landing h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.clusters-landing .cl-desc{font-family:var(--sans);font-size:14px;line-height:1.7;color:var(--ink);max-width:520px;}
.clusters-landing .cl-list{
  list-style:none;margin:8px 0 0 0;padding:0;display:flex;flex-direction:column;gap:14px;
}
.clusters-landing .cl-list li{
  display:grid;grid-template-columns:14px 1fr;gap:12px;align-items:baseline;
  font-family:var(--sans);font-size:13.5px;line-height:1.55;color:var(--ink);
}
.clusters-landing .cl-list li .dot{
  width:10px;height:10px;border-radius:50%;background:var(--alert);
  margin-top:5px;
}
.clusters-landing .cl-list li.monitor .dot{background:var(--amber);}
.clusters-landing .cl-list li.resilient .dot{background:var(--resilience);}
.clusters-landing .cl-list li strong{
  font-family:var(--serif);font-weight:400;font-style:normal;font-size:15px;color:var(--ink);
  display:block;margin-bottom:2px;
}
.clusters-landing .cl-cta{
  margin-top:auto;padding-top:24px;
  font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;
  color:var(--terra);display:inline-flex;align-items:center;gap:10px;text-decoration:none;align-self:flex-start;
}
.clusters-landing .cl-mapcol{
  background:var(--surface-2);border-left:1px solid var(--rule);
  padding:32px 36px;display:flex;flex-direction:column;gap:14px;justify-content:flex-start;
}
@media (max-width:980px){.clusters-landing .cl-mapcol{border-left:0;border-top:1px solid var(--rule);}}
.clusters-landing .cl-mapcol .cl-map-eyebrow{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted);
}
.clusters-landing .cl-mapcol .cl-map-title{
  font-family:var(--serif);font-weight:400;font-size:15.5px;color:var(--ink);
  line-height:1.4;letter-spacing:-0.005em;margin-bottom:6px;
}
.clusters-landing .cl-mapcol .cl-map-svg{width:100%;height:auto;display:block;}

.clusters-landing .cl-legend{
  display:grid;grid-template-columns:repeat(3,1fr);gap:10px 18px;
  padding:14px 0 0 0;margin-top:8px;
  border-top:1px solid var(--rule);
}
.clusters-landing .cl-legend span{
  display:flex;align-items:flex-start;gap:10px;
  font-family:var(--sans);font-size:11.5px;line-height:1.35;color:var(--ink);
  letter-spacing:0;text-transform:none;
}
.clusters-landing .cl-legend span::before{
  content:"";width:11px;height:11px;border-radius:1px;flex-shrink:0;margin-top:3px;
  background:var(--alert);
}
.clusters-landing .cl-legend span em{
  font-family:var(--mono);font-style:normal;font-size:9px;letter-spacing:0.15em;
  color:var(--muted);text-transform:uppercase;display:block;margin-bottom:2px;
}
.clusters-landing .cl-legend .lg-urgent::before{background:#CA6702;}
.clusters-landing .cl-legend .lg-monitor::before{background:#D8B365;}
.clusters-landing .cl-legend .lg-resilient::before{background:#3C8B86;}

.clusters-landing .cl-mapnote{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:12.5px;line-height:1.55;color:var(--muted);
  padding-top:12px;border-top:1px solid var(--rule);
  margin:6px 0 0 0;
}

/* override old single-row legend rules for any leftover usage */
.clusters-landing .cl-legend span:not(.lg-urgent):not(.lg-monitor):not(.lg-resilient)::before{background:#CA6702;}

/* ── Urban priority clusters · institutional editorial block ───── */
.clusters-block{
  margin-top:32px;
  background:var(--surface);border:1px solid var(--rule-strong);
  display:grid;gap:0;
  box-shadow:0 30px 60px -50px rgba(14,20,24,0.20);
}

/* Header band */
.clusters-block .cb-head{
  padding:44px 48px 24px;
  border-bottom:1px solid var(--rule);
}
.clusters-block .cb-eyebrow{
  display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;margin-bottom:14px;
}
.clusters-block .cb-eyebrow .cb-system{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.clusters-block .cb-eyebrow .cb-context{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);font-weight:400;
}
.clusters-block .cb-title{
  font-family:var(--serif);font-weight:400;font-size:clamp(36px,4.4vw,52px);
  line-height:1.04;color:var(--ink);letter-spacing:-0.015em;margin:0 0 6px 0;
}
.clusters-block .cb-sub{
  font-family:var(--serif);font-weight:500;font-size:18px;color:var(--teal);
  letter-spacing:-0.005em;
}

/* Intro row : prose left + map right */
.clusters-block .cb-intro{
  display:grid;grid-template-columns:1.05fr 1fr;gap:0;
  border-bottom:1px solid var(--rule);
}
.clusters-block .cb-intro.single{
  display:block;
  border-bottom:1px solid var(--rule);
}
.clusters-block .cb-intro.single .cb-prose{
  border-right:0;
  padding:40px 56px 36px;
  max-width:none;
}
.clusters-block .cb-intro.single .cb-para{max-width:760px;}
@media (max-width:980px){.clusters-block .cb-intro{grid-template-columns:1fr;}}
.clusters-block .cb-prose{
  padding:36px 48px 36px;display:flex;flex-direction:column;gap:18px;
  border-right:1px solid var(--rule);
}
@media (max-width:980px){.clusters-block .cb-prose{border-right:0;border-bottom:1px solid var(--rule);}}
.clusters-block .cb-para{
  font-family:var(--serif);font-weight:300;font-size:15.5px;line-height:1.7;
  color:var(--ink);margin:0;max-width:540px;text-wrap:pretty;
}
.clusters-block .cb-cta{
  margin-top:8px;
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--serif);font-size:15px;font-weight:400;color:var(--teal);
  text-decoration:none;border-bottom:1px solid var(--teal);align-self:flex-start;
  padding-bottom:3px;transition:color .15s ease,border-color .15s ease;
}
.clusters-block .cb-cta:hover{color:var(--terra);border-bottom-color:var(--terra);}
.clusters-block .cb-cta .arr{font-family:var(--mono);font-size:13px;}

.clusters-block .cb-mapcol{
  padding:36px 40px;display:flex;flex-direction:column;gap:14px;
  background:var(--surface-2);
}
.clusters-block .cb-map-eyebrow{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted);
}
.clusters-block .cb-map-title{
  font-family:var(--serif);font-weight:500;font-size:15px;color:var(--ink);
  line-height:1.4;letter-spacing:-0.005em;
}
.clusters-block .cb-map-svg{width:100%;height:auto;display:block;}
.clusters-block .cb-mapnote{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:12.5px;line-height:1.55;color:var(--muted);
  padding-top:10px;border-top:1px solid var(--rule);margin:6px 0 0 0;
}

/* Map flagship inside block — flush, no redundant outer border/shadow */
.clusters-block > .anchor-iframe{
  box-shadow:none;
  border-left:0;border-right:0;border-radius:0;
  border-top:1px solid var(--rule);
  border-bottom:1px solid var(--rule);
  margin:0;
}

/* Profile grid : 3 cluster cards */
.clusters-block .cb-profiles{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
}
@media (max-width:880px){.clusters-block .cb-profiles{grid-template-columns:1fr;}}
.clusters-block .cb-profile{
  position:relative;
  padding:32px 36px 36px;
  border-right:1px solid var(--rule);
  display:flex;flex-direction:column;gap:14px;
  background:var(--surface);
}
.clusters-block .cb-profile:last-child{border-right:0;}
@media (max-width:880px){
  .clusters-block .cb-profile{border-right:0;border-bottom:1px solid var(--rule);}
  .clusters-block .cb-profile:last-child{border-bottom:0;}
}
.clusters-block .cb-pf-bar{
  position:absolute;top:0;left:0;right:0;height:3px;
}
.clusters-block .p-urgent    .cb-pf-bar{background:#CA6702;}
.clusters-block .p-monitor   .cb-pf-bar{background:#D8B365;}
.clusters-block .p-resilient .cb-pf-bar{background:#3C8B86;}

.clusters-block .cb-pf-num{
  font-family:var(--mono);font-size:11px;letter-spacing:0.22em;
  text-transform:uppercase;font-weight:600;
  margin-top:6px;
}
.clusters-block .p-urgent    .cb-pf-num{color:#CA6702;}
.clusters-block .p-monitor   .cb-pf-num{color:#A88A3F;}
.clusters-block .p-resilient .cb-pf-num{color:#3C8B86;}

.clusters-block .cb-pf-name{
  font-family:var(--serif);font-style:normal;font-weight:400;
  font-size:22px;color:var(--ink);letter-spacing:-0.005em;
  margin:0;line-height:1.2;
}
.clusters-block .cb-pf-desc{
  font-family:var(--serif);font-weight:300;font-size:14.5px;line-height:1.65;
  color:var(--ink);margin:0;text-wrap:pretty;
}

/* ── FAI sober CTA card ────────────────────────────────────── */
.fai-cta{
  margin-top:24px;
  background:var(--surface);border:1px solid var(--rule-strong);
  border-left:3px solid var(--teal);
  padding:32px 36px;
  display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center;
  text-decoration:none;color:inherit;
  transition:border-color .15s ease;
}
.fai-cta:hover{border-color:#0A4256;border-left-color:#0A4256;}
@media (max-width:760px){.fai-cta{grid-template-columns:1fr;gap:18px;}}
.fai-cta .fc-eyebrow{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--teal);font-weight:600;margin-bottom:10px;
}
.fai-cta h3{
  font-family:var(--serif);font-weight:400;font-size:clamp(24px,2.4vw,28px);
  line-height:1.2;color:var(--ink);letter-spacing:-0.005em;margin-bottom:10px;
}
.fai-cta h3 em{font-style:normal;font-weight:500;color:var(--teal);}
.fai-cta .fc-desc{font-family:var(--sans);font-size:14px;line-height:1.65;color:var(--muted);max-width:620px;}
.fai-cta .fc-arr{
  display:inline-flex;align-items:center;gap:12px;
  background:#0A4256;color:#fff;
  padding:14px 20px;
  font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;
  white-space:nowrap;
  transition:background .15s ease;
}
.fai-cta:hover .fc-arr{background:#0E5A78;}

/* ── Project 2 · housing market stress as full-width anchor (handled by .anchor-iframe.tall) ── */

/* ── Why it matters · refined ──────────────────────────────── */
.why .w-num{display:none;}
.why{border-top:1px solid var(--rule-strong);position:relative;}
.why::before{
  content:"";position:absolute;top:-1px;left:0;width:32px;height:2px;background:var(--teal);
}
.why:nth-child(2)::before{background:var(--terra);}
.why:nth-child(3)::before{background:var(--amber);}
.why:nth-child(4)::before{background:var(--resilience);}

/* ── Contact spacing ───────────────────────────────────────── */
section.surface#contact .form-wrap{gap:80px;grid-template-columns:0.95fr 1.35fr;align-items:start;}
@media (max-width:1200px){section.surface#contact .form-wrap{gap:64px;}}
@media (max-width:1000px){section.surface#contact .form-wrap{gap:48px;}}
@media (max-width:880px){section.surface#contact .form-wrap{gap:40px;grid-template-columns:1fr;}}
section.surface#contact .form-aside li{
  padding:24px 0;border-bottom:1px solid var(--rule);
  display:grid;grid-template-columns:1fr;gap:6px;
}
section.surface#contact .form-aside li .k{
  width:auto;color:var(--muted-2);font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
}

/* ── Footer layout · identity left, secondary columns grouped right ──
   Canonical definition. Mobile overrides below. Desktop rules in Section D. */
footer .f-top.v3 .ident p{max-width:340px;}
footer .f-top.v3 .f-cols{
  display:grid;grid-template-columns:repeat(2,minmax(140px,200px));
  gap:48px;flex:0 0 auto;margin-left:auto;
}
@media (max-width:980px){
  footer .f-top.v3{flex-direction:column;gap:40px;}
  footer .f-top.v3 .ident{flex:1 1 auto;}
  footer .f-top.v3 .f-cols{grid-template-columns:1fr 1fr;gap:32px;}
}
@media (max-width:560px){footer .f-top.v3 .f-cols{grid-template-columns:1fr;gap:24px;}}

/* Author block · stronger authorship presence */
footer .author-block{
  margin-top:32px;padding-top:24px;
  border-top:1px solid rgba(245,244,240,0.12);
}
footer .author-block .signature .name{
  font-family:var(--serif);font-size:19px;font-style:italic;font-weight:400;
  color:#F5F4F0;letter-spacing:0.01em;
}
footer .author-block .signature .role{
  display:block;margin-top:8px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(245,244,240,0.45);font-weight:500;line-height:1.7;
}

/* ═══════════════════════════════════════════════════════════
   Hero, editorial chart,
   territorial cluster viz, FAI intro, analytical table,
   contact block refinement
   ═══════════════════════════════════════════════════════════ */

/* ── Hero · canonical hierarchy (wordmark dominant) ─────── */
.hero h1.hero-h1{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(56px,8vw,108px);line-height:0.96;letter-spacing:-0.028em;
  color:var(--ink);margin-bottom:24px;
  display:block;
}
.hero h1.hero-h1 .hero-mark{
  display:block;
  font-family:var(--serif);font-weight:600;font-style:normal;
  font-size:1em;line-height:0.95;letter-spacing:-0.028em;
  color:var(--ink);
}
/* .hero-sub removed — element was always display:none, dead HTML/CSS (MINOR-01) */

/* ═══════ Project 2 · structural-break chart ═══════ */
.response-system.v3 .rs-chart-wide{
  background:var(--bg-warm);
  padding:0 8px 0;
}
.response-system.v3 .rs-chart-header{
  padding:28px 56px 0;
}
.response-system.v3 .rs-chart-header .rs-chart-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.response-system.v3 .rs-chart-header .rs-chart-title{
  font-family:var(--serif);font-weight:400;font-size:22px;line-height:1.3;
  color:var(--ink);letter-spacing:-0.012em;margin-top:2px;
}
.response-system.v3 .rs-chart-header .rs-chart-sub{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:14px;line-height:1.5;color:var(--muted);max-width:780px;margin-top:6px;
}
.response-system.v3 .rs-chart-legend{display:none;}

/* Spatial reading of the rental dynamic · narrative interpretation block */
.response-system.v3 .rs-spatial{
  padding:0 56px 38px;
}
@media (max-width:880px){.response-system.v3 .rs-spatial{padding:0 24px 30px;}}
.response-system.v3 .rs-spatial-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
  padding-top:26px;border-top:1px solid var(--rule);margin-bottom:16px;
}
.response-system.v3 .rs-spatial-body{max-width:900px;}
.response-system.v3 .rs-spatial-body p{
  font-family:var(--serif);font-weight:300;font-size:16px;line-height:1.7;
  color:var(--ink);text-wrap:pretty;
}
.response-system.v3 .rs-spatial-body p + p{margin-top:14px;}
.response-system.v3 .rs-spatial-body strong{font-weight:500;color:var(--ink);}
.response-system.v3 .rs-spatial-lead{
  margin-top:20px !important;font-style:normal;color:var(--muted);font-size:15px !important;
}
.response-system.v3 .rs-spatial-split{
  list-style:none;margin:14px 0 0;padding:0;
  display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:900px;
}
@media (max-width:760px){.response-system.v3 .rs-spatial-split{grid-template-columns:1fr;}}
.response-system.v3 .rs-spatial-split li{
  font-family:var(--sans);font-size:14px;line-height:1.55;color:var(--ink);
  padding:14px 18px;background:var(--surface);
  border:1px solid var(--rule);border-left:3px solid var(--teal);
}
.response-system.v3 .rs-spatial-split li strong{font-weight:600;color:var(--teal);}

/* Spatial reading · premium editorial close, flush under the rental product */
.rs-spatial.standalone{
  margin-top:0;background:var(--navy-card);color:rgba(245,244,240,0.86);
  border:0;border-top:3px solid var(--amber);
  padding:42px 48px 44px;
  display:grid;grid-template-columns:300px 1fr;gap:48px;align-items:start;
}
@media (max-width:880px){.rs-spatial.standalone{grid-template-columns:1fr;gap:18px;padding:32px 26px 34px;}}
.rs-spatial.standalone .rs-spatial-eyebrow{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:25px;line-height:1.18;letter-spacing:-0.01em;
  color:#F5F4F0;text-transform:none;margin:0;
}
.rs-spatial.standalone .rs-spatial-body{max-width:none;}
.rs-spatial.standalone .rs-spatial-body p{
  font-family:var(--serif);font-weight:300;font-size:15.5px;line-height:1.72;
  color:rgba(245,244,240,0.82);text-wrap:pretty;
}
.rs-spatial.standalone .rs-spatial-body p:first-child{
  font-size:17px;color:#F5F4F0;line-height:1.5;
}
.rs-spatial.standalone .rs-spatial-body p + p{margin-top:14px;}
.rs-spatial.standalone .rs-spatial-body strong{font-weight:600;color:#F5F4F0;}

/* Territorial analytical system · narrative blocks (intro reused) */
.at-narrative{max-width:900px;margin:0 0 30px;}
.at-narrative.at-after{margin:24px 0 0;padding-top:0;border-top:0;}
.at-narrative p{
  font-family:var(--serif);font-weight:300;font-size:16px;line-height:1.7;
  color:var(--ink);text-wrap:pretty;
}
.at-narrative p + p{margin-top:14px;}
.at-narrative strong{font-weight:500;color:var(--ink);}

/* Step subhead · compact descriptor under an h3 */
.seq-subhead{
  font-family:var(--mono);font-size:11px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--teal);font-weight:600;margin:2px 0 18px;
}

/* ═══════ Territorial cluster visualization ═══════ */
.cluster-viz{
  margin-top:8px;background:var(--surface);
  border:1px solid var(--rule-strong);
}
.cluster-viz .cv-head{
  padding:36px 44px 20px;border-bottom:1px solid var(--rule);
}
.cluster-viz .cv-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.24em;text-transform:uppercase;
  color:var(--teal);font-weight:600;margin-bottom:14px;
}
.cluster-viz .cv-title{
  font-family:var(--serif);font-weight:400;font-size:clamp(26px,3vw,34px);
  line-height:1.12;color:var(--ink);letter-spacing:-0.014em;margin-bottom:10px;
  text-wrap:balance;
}
.cluster-viz .cv-sub{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:15.5px;line-height:1.55;color:var(--muted);max-width:780px;
}
.cluster-viz .cv-chain-note{
  font-family:var(--sans);font-weight:400;font-size:13.5px;line-height:1.6;
  color:var(--muted-2);max-width:780px;margin-top:14px;
  padding-top:14px;border-top:1px solid var(--rule);
}
.cluster-viz .cv-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  grid-template-rows:auto auto auto 1fr auto;
  border-bottom:1px solid var(--rule);
}
@media (max-width:980px){.cluster-viz .cv-grid{grid-template-columns:1fr;grid-template-rows:none;}}
.cluster-viz .cv-col{
  padding:32px 36px 28px;border-right:1px solid var(--rule);
  display:grid;grid-template-rows:subgrid;grid-row:span 5;gap:14px;
  background:var(--surface);position:relative;
}
.cluster-viz .cv-col:last-child{border-right:0;}
@media (max-width:980px){
  .cluster-viz .cv-col{border-right:0;border-bottom:1px solid var(--rule);}
  .cluster-viz .cv-col:last-child{border-bottom:0;}
}
.cluster-viz .cv-col::before{
  content:"";position:absolute;top:0;left:0;width:100%;height:3px;
}
.cluster-viz .cv-col.critical::before{background:#B05B3B;}
.cluster-viz .cv-col.monitor::before{background:#D8B365;}
.cluster-viz .cv-col.resilient::before{background:#3C8B86;}
.cluster-viz .cv-tag{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.24em;text-transform:uppercase;
  font-weight:600;
}
.cluster-viz .cv-tag .sw{width:10px;height:10px;border-radius:1px;display:inline-block;}
.cluster-viz .cv-col.critical .cv-tag{color:#B05B3B;}
.cluster-viz .cv-col.critical .cv-tag .sw{background:#B05B3B;}
.cluster-viz .cv-col.monitor .cv-tag{color:#A07E2E;}
.cluster-viz .cv-col.monitor .cv-tag .sw{background:#D8B365;}
.cluster-viz .cv-col.resilient .cv-tag{color:#2F6D69;}
.cluster-viz .cv-col.resilient .cv-tag .sw{background:#3C8B86;}
.cluster-viz .cv-name{
  font-family:var(--serif);font-weight:400;font-size:21px;line-height:1.2;
  color:var(--ink);letter-spacing:-0.008em;
}
.cluster-viz .cv-desc{
  font-family:var(--sans);font-size:13px;line-height:1.6;color:var(--ink);
}
/* V25.2 · Intervention regime cards — homogeneous, recalibrated (less pink) */
.cluster-viz .cv-action{
  margin-top:auto;background:#13233B;border-left:4px solid;
  padding:16px 18px;min-height:110px;
  display:flex;flex-direction:column;justify-content:center;
}
.cluster-viz .cv-action .ca-eye{
  font-family:var(--mono);font-size:9px;letter-spacing:0.2em;text-transform:uppercase;
  font-weight:600;margin-bottom:6px;
}
.cluster-viz .cv-action strong{
  display:block;font-family:var(--serif);font-weight:600;font-style:normal;
  font-size:17px;letter-spacing:-0.01em;text-transform:none;line-height:1.22;color:#F2F5F8;
}
.cluster-viz .cv-action .ca-reg{
  font-family:var(--mono);font-size:9px;letter-spacing:0.16em;text-transform:uppercase;font-weight:500;
  color:rgba(255,255,255,0.55);margin-top:9px;padding-top:9px;border-top:1px solid rgba(255,255,255,0.12);
}
.cluster-viz .cv-action .ca-reg b{font-weight:600;color:rgba(255,255,255,0.86);}
.cluster-viz .cv-col.critical  .cv-action{border-left-color:#B05B3B;}
.cluster-viz .cv-col.critical  .cv-action .ca-eye{color:#E0A48C;}
.cluster-viz .cv-col.monitor   .cv-action{border-left-color:#D8B365;}
.cluster-viz .cv-col.monitor   .cv-action .ca-eye{color:#E8CE96;}
.cluster-viz .cv-col.resilient .cv-action{border-left-color:#3C8B86;}
.cluster-viz .cv-col.resilient .cv-action .ca-eye{color:#7FC4BC;}

/* Cluster · territorial tiles · synthetic, non-geographic */
.cluster-viz .cv-tiles{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:4px;
}
.cluster-viz .cv-tile{
  display:flex;flex-direction:column;align-items:flex-start;
  padding:11px 13px;
  border:1px solid rgba(0,0,0,0.16);
  position:relative;min-height:76px;justify-content:flex-start;
}
/* Periodic-table solid cells · no pastel · no gradient/shadow · white text at AA contrast */
.cluster-viz .cv-col.critical  .cv-tile{background:#A23C1B;border-color:#7C2C12;}
.cluster-viz .cv-col.monitor   .cv-tile{background:#8A5A0F;border-color:#684409;}
.cluster-viz .cv-col.resilient .cv-tile{background:#256561;border-color:#194844;}
.cluster-viz .cv-tile .tname{
  font-family:var(--serif);font-size:14px;color:#FFFFFF;font-weight:500;line-height:1.2;
}
.cluster-viz .cv-tile .tmeta{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:rgba(255,255,255,0.88);margin-top:4px;line-height:1.4;
}
.cluster-viz .cv-tile .tscore{
  font-family:var(--mono);font-size:11.5px;color:#FFFFFF;font-weight:700;
  font-variant-numeric:tabular-nums;margin-top:3px;line-height:1.3;
}

.cluster-viz .cv-legend{
  padding:22px 44px 26px;
  display:grid;grid-template-columns:1fr;gap:6px;
  background:var(--bg-warm);
}
.cluster-viz .cv-legend .cv-leg-title{
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--muted);font-weight:500;margin-bottom:6px;
}
.cluster-viz .cv-legend p{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:13.5px;line-height:1.6;color:var(--ink);max-width:980px;text-wrap:pretty;
}
.cluster-viz .cv-legend p strong{
  font-style:normal;font-weight:500;color:var(--ink);font-family:var(--sans);font-size:12.5px;
}

/* ═══════ FAI Index editorial intro ═══════ */
.fai-intro{
  margin-top:20px;background:var(--surface);
  border:1px solid var(--rule-strong);
  display:grid;grid-template-columns:0.95fr 1fr;gap:0;
}
@media (max-width:980px){.fai-intro{grid-template-columns:1fr;}}
.fai-intro .fi-left{
  padding:42px 44px;border-right:1px solid var(--rule);
  display:flex;flex-direction:column;gap:18px;
}
@media (max-width:980px){.fai-intro .fi-left{border-right:0;border-bottom:1px solid var(--rule);}}
.fai-intro .fi-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.fai-intro .fi-title{
  font-family:var(--serif);font-weight:400;font-size:clamp(28px,3vw,38px);
  line-height:1.1;color:var(--ink);letter-spacing:-0.014em;text-wrap:balance;
}
.fai-intro .fi-title em{font-style:normal;font-weight:500;color:var(--teal);}
.fai-intro .fi-lede{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:16px;line-height:1.6;color:var(--ink);max-width:520px;
}
.fai-intro .fi-lede strong{font-style:normal;font-weight:500;color:var(--ink);}
.fai-intro .fi-meta{
  display:flex;gap:18px;align-items:center;flex-wrap:wrap;
  padding-top:14px;margin-top:auto;border-top:1px solid var(--rule);
  font-family:var(--mono);font-size:10px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--muted);
}
.fai-intro .fi-meta strong{color:var(--teal);}
.fai-intro .fi-right{
  padding:46px 46px;background:var(--navy-card);
  display:flex;flex-direction:column;gap:20px;
}
.fai-intro .fi-right .fi-eyebrow{
  font-size:11.5px !important;letter-spacing:0.24em;
  color:rgba(245,244,240,0.62) !important;
}
.fai-intro .fi-dims{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;
}
@media (max-width:580px){.fai-intro .fi-dims{grid-template-columns:1fr;}}
.fai-intro .fi-dim{
  background:rgba(245,244,240,0.045);border:1px solid rgba(245,244,240,0.10);
  padding:16px 18px;display:flex;flex-direction:column;gap:7px;
  border-left:3px solid var(--teal);
}
.fai-intro .fi-dim:nth-child(1){border-left-color:#4A90A4;}
.fai-intro .fi-dim:nth-child(2){border-left-color:#5B9B7A;}
.fai-intro .fi-dim:nth-child(3){border-left-color:#D9A441;}
.fai-intro .fi-dim:nth-child(4){border-left-color:#6E84A3;}
.fai-intro .fi-dim .dn{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.2em;text-transform:uppercase;
  color:rgba(245,244,240,0.55);font-weight:600;
}
.fai-intro .fi-dim:nth-child(1) .dn{color:#8FC4D4;}
.fai-intro .fi-dim:nth-child(2) .dn{color:#93C9AC;}
.fai-intro .fi-dim:nth-child(3) .dn{color:#EAC174;}
.fai-intro .fi-dim:nth-child(4) .dn{color:#A9BBD6;}
.fai-intro .fi-dim .dt{
  font-family:var(--serif);font-weight:400;font-size:15px;line-height:1.35;color:rgba(245,244,240,0.92);
}
.fai-intro .fi-bridge{
  margin-top:4px;padding-top:20px;border-top:1px solid rgba(245,244,240,0.12);
  font-family:var(--sans);font-size:14.5px;line-height:1.7;color:rgba(245,244,240,0.82);
}
.fai-intro .fi-bridge strong{color:var(--resilience);font-weight:600;}

/* ═══════ L3 · Framework chain statement ═══════ */
.chain-statement{
  margin-top:48px;padding:28px 36px;
  background:var(--surface-2);border-left:4px solid var(--teal);
  border-radius:0;
}
.chain-statement .cs-line{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(16px,1.5vw,19px);line-height:1.65;color:var(--ink);
}
.chain-statement .cs-line strong{
  font-weight:600;color:var(--teal);font-style:normal;
}

/* ═══════ Integrated territorial analytics table ═══════ */
.analytical-table-wrap{
  margin-top:32px;background:var(--surface);
  border:1px solid var(--rule-strong);
  box-shadow:0 1px 2px rgba(14,20,24,0.04),0 18px 40px -22px rgba(14,20,24,0.28);
}
.analytical-table-wrap .at-head{
  padding:28px 36px 18px;border-bottom:1px solid var(--rule);
  display:flex;justify-content:space-between;align-items:baseline;gap:24px;flex-wrap:wrap;
}
.analytical-table-wrap .at-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.24em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.analytical-table-wrap .at-title{
  font-family:var(--serif);font-weight:500;font-size:22px;line-height:1.3;color:var(--ink);
  letter-spacing:-0.01em;margin-top:4px;
}
.analytical-table-wrap .at-note{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);text-align:right;
}
.analytical-table-wrap .at-scroll{overflow-x:auto;}
.analytical-table-wrap table{
  width:100%;border-collapse:collapse;
  font-family:var(--sans);
}
.analytical-table-wrap thead th{
  text-align:left;
  font-family:var(--mono);font-size:10px;letter-spacing:0.2em;text-transform:uppercase;
  color:var(--ink-band);font-weight:600;
  padding:19px 16px 14px;border-bottom:1.5px solid var(--ink-band);
  background:var(--surface-2);white-space:nowrap;vertical-align:bottom;
}
.analytical-table-wrap tbody td{
  padding:17px 16px;border-bottom:1px solid var(--rule);
  font-size:13px;color:var(--ink);line-height:1.45;vertical-align:middle;
  transition:background .15s ease;
}
.analytical-table-wrap tbody tr:nth-child(even) td{background:rgba(14,20,24,0.018);}
.analytical-table-wrap tbody tr:last-child td{border-bottom:0;}
.analytical-table-wrap tbody tr:hover td{background:rgba(0,95,115,0.07);}
.analytical-table-wrap td.subdistrict{
  font-family:var(--sans);font-size:12px;color:var(--muted);letter-spacing:0.02em;white-space:nowrap;
}
.analytical-table-wrap td.district{
  font-family:var(--sans);font-size:12px;color:var(--muted);letter-spacing:0.02em;white-space:nowrap;
}
.analytical-table-wrap td.num{
  font-family:var(--mono);font-size:12.5px;color:var(--ink);
  font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;
}
.analytical-table-wrap tbody td:nth-child(5){font-weight:700;font-size:14px;color:var(--ink-deep);}
.analytical-table-wrap td.delta{
  font-family:var(--mono);font-size:12.5px;font-variant-numeric:tabular-nums;
  text-align:right;white-space:nowrap;font-weight:500;
}
.analytical-table-wrap td.delta.pos{color:#B05B3B;}
.analytical-table-wrap td.delta.neg{color:#2F6D69;}
.analytical-table-wrap td.delta.neutral{color:var(--muted);}
.analytical-table-wrap td.delta.pos::before{content:"\25B2";font-size:7px;margin-right:4px;vertical-align:1px;opacity:0.65;}
.analytical-table-wrap td.delta.neg::before{content:"\25BC";font-size:7px;margin-right:4px;vertical-align:1px;opacity:0.65;}
.analytical-table-wrap .pill{
  display:inline-block;padding:3px 9px;border-radius:3px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;
  font-weight:600;white-space:nowrap;border:1px solid currentColor;
}
/* HAR Category badges · solid, reuse the last-column bar semantic scale (high=#B05B3B rust,
   mid=#D8B365 ocre, low=#3C8B86 teal); text color chosen for WCAG AA; equilibrium = neutral slate.
   Surplus uses a text-safe deeper shade of the low-bar teal family (#3C8B86 fails AA under text). */
.analytical-table-wrap .pill.deficit-critical{color:#FFFFFF;background:#B05B3B;border-color:#8A4126;}
.analytical-table-wrap .pill.deficit{color:#4A2A08;background:#D8B365;border-color:#B8923F;}
.analytical-table-wrap .pill.equilibrium{color:#FFFFFF;background:#46525E;border-color:#333C45;}
.analytical-table-wrap .pill.surplus{color:#FFFFFF;background:#2F6D69;border-color:#20514E;}
.analytical-table-wrap .pill.surplus-strong{color:#FFFFFF;background:#0D4A3E;border-color:#08352C;}
.analytical-table-wrap .pressure-bar{
  display:flex;align-items:center;gap:8px;
}
.analytical-table-wrap .pressure-bar .pb-track{
  flex:1;height:7px;background:var(--surface-2);position:relative;min-width:74px;
  border:1px solid var(--rule);border-radius:4px;overflow:hidden;
}
.analytical-table-wrap .pressure-bar .pb-fill{
  position:absolute;left:0;top:0;height:100%;background:var(--teal);border-radius:4px;
}
.analytical-table-wrap .pressure-bar.high .pb-fill{background:#B05B3B;}
.analytical-table-wrap .pressure-bar.mid .pb-fill{background:#D8B365;}
.analytical-table-wrap .pressure-bar.low .pb-fill{background:#3C8B86;}
.analytical-table-wrap .pressure-bar .pb-val{
  font-family:var(--mono);font-size:11.5px;color:var(--ink-band);font-weight:600;
  font-variant-numeric:tabular-nums;min-width:36px;text-align:right;
}
.analytical-table-wrap .at-foot{
  padding:32px 36px 34px;border-top:1px solid var(--rule);
  background:#EEF1F4;
  display:flex;flex-direction:column;gap:18px;
}
.analytical-table-wrap .at-foot .af-eyebrow{
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.26em;text-transform:uppercase;
  color:#8C2D1F;font-weight:600;
}
.analytical-table-wrap .at-foot .af-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:36px;
}
@media (max-width:760px){.analytical-table-wrap .at-foot .af-grid{grid-template-columns:1fr;gap:18px;}}
.analytical-table-wrap .at-foot .af-block{
  border-left:2px solid currentColor;padding-left:20px;
  display:flex;flex-direction:column;gap:8px;
}
.analytical-table-wrap .at-foot .af-block.af-deficit{color:#B05B3B;}
.analytical-table-wrap .at-foot .af-block.af-surplus{color:#3C8B86;}
.analytical-table-wrap .at-foot .af-block .af-tag{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.22em;text-transform:uppercase;
  color:inherit;font-weight:600;
}
.analytical-table-wrap .at-foot .af-block .af-body{
  font-family:var(--serif);font-weight:400;font-size:15px;line-height:1.6;
  color:var(--ink);letter-spacing:-0.005em;text-wrap:pretty;
}

/* analytical table subtitle */
.analytical-table-wrap .at-subtitle{
  font-family:var(--serif);font-style:normal;font-weight:300;
  font-size:14px;line-height:1.55;color:var(--muted);
  margin-top:6px;max-width:640px;text-wrap:pretty;
}

/* ═══════ Contact / form aside · .aside-blocks is the canonical structure ═══════
   Residual ul/li variant removed (MINOR-05 — replaced by .aside-blocks system)   */

/* ═══════════════════════════════════════════════════════════
   Uniform pills, cluster grid, hero drift,
   navy FAI CTA, footer spacing, UPI clusters editorial
   ═══════════════════════════════════════════════════════════ */

/* HAR pills · uniform sizing — fill full column width */
.analytical-table-wrap td .pill{
  display:flex;align-items:center;justify-content:center;
  width:100%;height:26px;padding:0 8px;text-align:center;
  box-sizing:border-box;
}

/* Cluster cards · uniform width / equal-height rows (no fixed height that clips) */
.cluster-viz .cv-grid{
  grid-auto-rows:1fr;
}
.cluster-viz .cv-tiles{
  grid-auto-rows:minmax(82px,auto);   /* uniform common minimum, grows to fit content, no stretch/clip */
  align-content:start;
}
.cluster-viz .cv-tile{
  min-height:82px;              /* common minimum, never smaller than real content */
}
.cluster-viz .cv-tile .tmeta{white-space:nowrap;}   /* keep "LEBANON · 02" together */
.cluster-viz .cv-tile .tscore{margin-top:auto;}      /* score anchored to bottom, always visible */

/* Slow editorial territorial drift on the v3 hero SVG flows */
.hero-slogan.v3.mideast-panel .flow-path{
  stroke-dasharray:5 12;stroke:rgba(95,174,154,0.45);stroke-width:1.5;opacity:0.8;
  animation:mpFlowDrift 10s linear infinite;
}
@keyframes mpFlowDrift{
  0%{stroke-dashoffset:0;}
  100%{stroke-dashoffset:-200;}
}
@media (prefers-reduced-motion:reduce){
  .hero-slogan.v3.mideast-panel .flow-path{animation:none !important;}
}

/* Hero panel · subtle territorial breathing */
.hero-slogan.v3.mideast-panel .mp-map svg{
  transform:scale(1.18) translateY(-8px);
  transform-origin:46% 52%;
}
/* map fixed zoom — no breath/reveal animation; only flow paths animate */
@media (prefers-reduced-motion:reduce){
  /* mp-map svg: no animation to override */
}

/* UPI cluster profile cards · editorial uniform grid */
.clusters-block .cb-profiles{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  grid-auto-rows:1fr;
}

/* Select placeholder mute — scoped rule at form.signup (L585) is canonical */

/* Contact form aside · editorial compact microblocks (replaces heavy ul/li) */
section#contact .section-head{margin-bottom:64px;max-width:840px;}
section#contact .section-head h2{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(22px,2.2vw,30px);line-height:1.3;letter-spacing:-0.008em;
  color:var(--ink);margin-bottom:0;max-width:780px;text-wrap:balance;
}
section#contact .section-head h2 em{font-style:normal;font-weight:500;color:var(--teal);}

section#contact .form-aside .aside-blocks{
  display:grid;grid-template-columns:1fr;gap:28px;margin-top:0;
}
section#contact .form-aside .aside-block{
  display:grid;grid-template-columns:1fr;gap:8px;align-items:baseline;
  padding:0 0 24px 0;border:0;border-bottom:1px solid var(--rule);
}
section#contact .form-aside .aside-block:last-child{border-bottom:0;padding-bottom:0;}
section#contact .form-aside .aside-block .ab-k{
  font-family:var(--mono);font-size:10px;letter-spacing:0.28em;text-transform:uppercase;
  color:var(--teal);font-weight:600;line-height:1.6;
}
section#contact .form-aside .aside-block .ab-v{
  font-family:var(--serif);font-size:15.5px;font-weight:400;line-height:1.65;
  color:var(--ink);text-wrap:pretty;letter-spacing:-0.005em;max-width:440px;
}
@media (max-width:760px){
  section#contact .form-aside .aside-block{grid-template-columns:1fr;gap:6px;}
}
/* override the default ul lines on this page */
section#contact .form-aside ul{display:none !important;}

/* ═══════ UPI · Territorial Priority Cluster Matrix ═══════ */
.upi-matrix{
  margin-top:8px;background:var(--surface);
  border:1px solid var(--rule-strong);
}
.upi-matrix .um-head{
  padding:32px 44px 18px;border-bottom:1px solid var(--rule);
  display:flex;justify-content:space-between;align-items:baseline;gap:24px;flex-wrap:wrap;
}
.upi-matrix .um-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--teal);font-weight:600;
}
.upi-matrix .um-title{
  font-family:var(--serif);font-weight:400;font-size:clamp(22px,2.4vw,28px);
  line-height:1.2;color:var(--ink);letter-spacing:-0.012em;margin-top:4px;
}
.upi-matrix .um-meta{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--muted);text-align:right;line-height:1.6;
}
.upi-matrix .um-body{
  display:block;
  border-bottom:1px solid var(--rule);
}
.upi-matrix .um-plot{
  padding:10px 0px 6px;background:var(--bg-warm);
  position:relative;border-right:0;
  border-bottom:1px solid var(--rule);
}
@media (max-width:980px){.upi-matrix .um-plot{padding:10px 4px 6px;}}
.upi-matrix .um-plot svg{
  width:100%;height:auto;display:block;
}
.upi-matrix .um-legend{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  padding:0;
}
@media (max-width:880px){.upi-matrix .um-legend{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.upi-matrix .um-legend{grid-template-columns:1fr;}}
.upi-matrix .um-leg-item{
  display:grid;grid-template-columns:14px 1fr;gap:14px;align-items:flex-start;
  padding:20px 16px;
  border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);
  margin:0;
}
.upi-matrix .um-leg-item:nth-child(3n){border-right:0;}
.upi-matrix .um-leg-item:nth-last-child(-n+3){border-bottom:0;}
@media (max-width:880px){
  .upi-matrix .um-leg-item:nth-child(3n){border-right:1px solid var(--rule);}
  .upi-matrix .um-leg-item:nth-child(2n){border-right:0;}
  .upi-matrix .um-leg-item:nth-last-child(-n+3){border-bottom:1px solid var(--rule);}
  .upi-matrix .um-leg-item:nth-last-child(-n+2){border-bottom:0;}
}
@media (max-width:560px){
  .upi-matrix .um-leg-item{border-right:0;}
  .upi-matrix .um-leg-item:last-child{border-bottom:0;}
}
.upi-matrix .um-leg-item .sw{
  width:12px;height:12px;border-radius:50%;margin-top:6px;
}
.upi-matrix .um-leg-item .um-name{
  font-family:var(--serif);font-weight:400;font-size:15.5px;color:var(--ink);
  line-height:1.3;margin-bottom:4px;letter-spacing:-0.005em;
}
.upi-matrix .um-leg-item .um-name em{font-style:normal;font-weight:500;color:var(--teal);}
.upi-matrix .um-leg-item .um-desc{
  font-family:var(--sans);font-size:12.5px;line-height:1.55;color:var(--muted);
}
.upi-matrix .um-leg-item .um-count{
  display:inline-block;
  font-family:var(--mono);font-size:11.5px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--ink);font-weight:600;margin-top:10px;line-height:1.5;
  padding:6px 12px;background:var(--surface-2);border:1px solid var(--rule);
}
.upi-matrix .um-foot{
  padding:30px 44px 32px;background:var(--analytical);color:#F5F4F0;
}
.upi-matrix .um-foot .umf-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--brand-green);font-weight:600;margin-bottom:12px;
}
.upi-matrix .um-foot .umf-body{
  font-family:var(--serif);font-weight:300;
  font-size:16px;line-height:1.65;color:rgba(245,244,240,0.94);
  max-width:880px;text-wrap:pretty;letter-spacing:-0.005em;
}

/* ── Additional components ──────────────────────────────────── */

/* cv-eyebrow — improved contrast and size */
.cluster-viz .cv-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--teal);font-weight:700;margin-bottom:16px;
}

/* cv-action regime styling consolidated in the cluster-viz block above
   (category color + subtle consulting tint). */

/* HAR · key methodological definition box */
.at-har-note{
  width:100%;margin-top:22px;padding:26px 30px;
  background:var(--navy-card);border:0;border-left:3px solid var(--brand-green);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.04),0 14px 30px -20px rgba(0,0,0,0.6);
}
.at-har-note .ahn-label{
  font-family:var(--mono);font-size:10px;letter-spacing:0.26em;text-transform:uppercase;
  color:var(--resilience);font-weight:600;margin-bottom:10px;
}
.at-har-note .ahn-text{
  font-family:var(--serif);font-weight:300;font-size:16px;line-height:1.72;
  color:rgba(245,244,240,0.9);max-width:none;
}
.at-har-note .ahn-text strong{ color:var(--brand-green);font-weight:600;font-style:normal;letter-spacing:0.02em; }

/* UPI matrix — improved text legibility */
.upi-matrix .um-plot text{
  font-smoothing:antialiased;-webkit-font-smoothing:antialiased;
}
.upi-matrix .um-legend .um-desc{
  font-size:13px;line-height:1.6;
}
.upi-matrix .um-legend .um-name{
  font-size:15px;
}
.upi-matrix .um-legend .um-count{
  font-size:11px;letter-spacing:0.16em;
}

/* ═══════════════════════════════════════════════════════════
   Editorial consolidation · components · UX
   ═══════════════════════════════════════════════════════════ */

/* ── Sticky contextual return nav ─────────────────────────── */
.nav-return{
  position:fixed;bottom:28px;left:28px;z-index:900;
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 18px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:#fff;background:var(--teal);border:1px solid var(--teal);
  text-decoration:none;
  opacity:0;pointer-events:none;
  transform:translateY(8px);
  transition:opacity .22s ease, transform .22s ease, background .15s ease;
}
.nav-return.visible{
  opacity:1;pointer-events:auto;transform:translateY(0);
}
.nav-return:hover{ background:#0d5a6e;border-color:#0d5a6e; }
@media (max-width:560px){
  .nav-return{ bottom:16px;left:12px;right:12px;justify-content:center; }
}

/* ── Footer identity author block ─────────────────────────── */
footer .ident-author{
  margin-top:24px;padding-top:20px;
  border-top:1px solid rgba(245,244,240,0.12);
}
footer .ia-name{
  font-family:var(--serif);font-weight:400;font-size:15px;
  color:#F5F4F0;letter-spacing:0.01em;margin-bottom:5px;
}
footer .ia-role{
  font-family:var(--mono);font-size:9.5px;letter-spacing:0.2em;text-transform:uppercase;
  color:rgba(245,244,240,0.50);line-height:1.6;
}
/* ident-desc maps to existing footer .ident p + specific override */
footer .ident .ident-desc{
  font-family:var(--serif);font-weight:300;font-style:normal;
  font-size:13.5px;line-height:1.65;color:rgba(245,244,240,0.60);
  max-width:360px;margin-top:10px;
}

/* ── Form error state ─────────────────────────────────────── */
.form-error{
  margin-top:14px;padding:12px 16px;
  background:rgba(176,91,59,0.08);
  border:1px solid rgba(176,91,59,0.35);border-left:3px solid #B05B3B;
  font-family:var(--sans);font-size:12.5px;color:var(--ink);line-height:1.55;
  display:block;
}
.form-error[hidden]{ display:none; }
.form-error strong{ color:#8B3A1F;font-weight:600; }

/* ── Form submit button states ────────────────────────────── */
.btn-label-default,
.btn-label-loading{
  display:inline;
}
.btn-label-loading[hidden],
.btn-label-default[hidden]{ display:none; }
.form-submit[aria-busy="true"]{
  opacity:0.72;pointer-events:none;cursor:not-allowed;
}

/* ── Editorial typography improvements ────────────────────── */
/* text-wrap:pretty for narrative prose — NO auto-hyphenation
   (prevents ugly breaks like "Is-rael" in proper nouns/titles) */
.hero-lede,
.mp-slogan,
.intro,
.seq-subtitle,
.seq-body h3,
.proj-narrative,
.proj-narrative p,
.why-note,
.why p,
.section-lede,
.form-aside p,
.project-intro p,
.methodology-text p,
.narrative-block p{
  text-wrap:pretty;
  hyphens:none;
  -webkit-hyphens:none;
  -ms-hyphens:none;
  overflow-wrap:normal;
}

/* Editorial alignment: preserve left-aligned reading flow.
   Do NOT justify — inconsistent column widths break measure.
   Instead normalise max-width for readable line lengths. */
.intro{ max-width:780px; }
.section-lede{ max-width:820px; }
.hero-lede{ max-width:600px; }

/* NOT flowing: KPIs, cards, tables, headings, mono labels */
.kpi-value, .kpi-label, .kpi-row, .card, .card-title, .card-kpi,
.ct-label, th, td, .mono-tag, .pill, .cv-action,
h1, h2, h3, h4, h5, h6{
  text-wrap:unset;
}

/* ── Institutional closing / why-note upgrade ─────────────── */
.why-note{
  margin-top:64px !important;
  padding-top:28px;
  border-top:2px solid var(--ink);
  max-width:680px;
  font-family:var(--serif);font-weight:300;font-style:normal;
  font-size:17px;line-height:1.75;color:var(--ink);
}

/* ── Responsive fluid typography ─────────────────────────── */
@media (max-width:1100px){
  .hero-lede{ font-size:clamp(14px,1.5vw,17px); }
  .mp-slogan{ font-size:clamp(14px,1.6vw,18px); }
}
@media (max-width:760px){
  .hero-lede{ font-size:15px;line-height:1.65; }
  .mp-slogan{ font-size:14.5px; }
  .intro{ font-size:14px;line-height:1.68; }
}
@media (max-width:480px){
  .hero-lede{ font-size:14px; }
  .intro{ font-size:13.5px; }
}

/* ── Chart / annotation safety padding ───────────────────── */
svg text{ overflow:visible; }
.sv-wrap svg{ overflow:visible; }

/* ── Methodology method-note · breathing room above ─────── */
.method-note{
  margin-top:40px;
}

/* ── UPI "Explore" CTA · right-docked editorial position ── */
/* Narrative dominates left; operational CTA sits on right   */
#section-upi .explore-more{
  display:flex;
  justify-content:flex-end;
  margin-top:48px;
}
#section-upi .explore-more .explore-btn{
  max-width:520px;
}

/* ── Services / Areas / Collaboration typography +2pt ─────── */
section#contact .form-aside .aside-block .ab-v{
  font-size:17.5px;
}
section#contact .form-aside .aside-block .ab-k{
  font-size:11px;letter-spacing:0.24em;
}

/* ── Footer column breathing room — consolidated in Fix 8/9 and Section D ── */

/* ── IVUB row in right gateway · foundation accent ─────────── */
.ax-row.ax-row-ivub{
  border-bottom:1px solid var(--rule);
  background:rgba(0,95,115,0.03);
}
.ax-row.ax-row-ivub .code{
  color:var(--teal);
}

/* ── Anchor-head contrast fix (V22) ─────────────────────── */
/* Restore institutional dark background on all anchor-heads for legibility.
   Demographic balance step only: light bg with explicit dark title text. */
#project-2 .seq-step:first-child .anchor-iframe .anchor-head{
  background:var(--bg-warm);border-bottom:1px solid var(--rule);
}
#project-2 .seq-step:first-child .anchor-iframe .anchor-head .title{
  color:var(--ink);
}
#project-2 .seq-step:first-child .anchor-iframe .anchor-head .open{
  color:var(--teal);
}
#project-2 .seq-step:first-child .anchor-frame{height:660px !important;overflow:visible;}

/* ── Cluster explorer · right analytical dock (asymmetric) ── */
/* Shift from ~1:1 to 0.8fr:1.2fr → right map column dominant */
.clusters-block .cb-intro:not(.single){
  grid-template-columns:0.8fr 1.2fr;
}
.clusters-block .cb-prose{
  padding:36px 40px 36px;
}
.clusters-block .cb-mapcol{
  background:var(--surface);
  border-left:1px solid var(--rule);
}
@media (max-width:980px){
  .clusters-block .cb-intro:not(.single){
    grid-template-columns:1fr;
  }
}

/* ═══════════════════════════════════════════════════════════
   Layout stability & bilingual
   ═══════════════════════════════════════════════════════════ */

/* ── Fix 1: Hero panel — pixel-stable, language-switch-proof ── */
.hero-slogan.v3.mideast-panel{
  height:620px;
}
/* Responsive height: single-column hero states (tablet + mobile) */
@media (max-width:1024px){
  .hero-slogan.v3.mideast-panel{
    height:auto;
    min-height:480px;
  }
}
@media (max-width:760px){
  .hero-slogan.v3.mideast-panel{
    min-height:360px;
  }
}
.hero-grid{
  align-items:start;
}
/* Hero lede: reserve stable height so EN/ES text never reflows hero */
.hero-lede{
  min-height:7em;
}
/* Hero lede-obj: secondary paragraph stable height */
.hero-lede-obj{
  min-height:4em;
}
/* mp-slogan + mp-caption: fixed floor so caption never collapses */
.hero-slogan.v3.mideast-panel .mp-slogan{
  min-height:68px;
}
.hero-slogan.v3.mideast-panel .mp-caption{
  overflow:visible;
}

/* ── Fix 3: Aliyah section — vertical breathing ────────────── */
#project-2 .seq-step{
  margin-top:72px;
}
#project-2 .seq-step:first-child{
  margin-top:14px;
}
#project-2 .seq-body h3{
  margin-bottom:18px;
}

/* ── Fix 6: Bilingual display — why-note forced block ──────── */
/* Spans inside p.why-note must render as block, never simultaneously */
p.why-note .lang-en,
p.why-note .lang-es{
  display:none;
}
html[lang="en"] p.why-note .lang-en{ display:block; }
html[lang="es"] p.why-note .lang-es{ display:block; }

/* ── Fix 7: Why-grid → why-note spacing ────────────────────── */
.why-grid{
  margin-bottom:64px;
}

/* ── Fix 8/9: Footer — consolidated into Section D block below ── */

/* ── Fix 10: Global bilingual layout stability ──────────────── */
/* Language toggle must NEVER alter layout, geometry, or spacing   */
.hero-section{
  contain:layout;
}

/* ═══════════════════════════════════════════════════════════════
   Editorial curation & institutional discipline
   Spacing system · Visual hierarchy · Bilingual enforcement
   ═══════════════════════════════════════════════════════════════ */

/* ── A. Spacing system — single editorial scale ──────────────── */
/* section.surface padding consolidated at base declaration (L301) */
/* Section-head: tighter editorial rhythm */
.section-head{
  margin-bottom:44px;
}
.section-head h2{
  margin-bottom:14px;
}

/* ── B. UPI · Cluster matrix — compress excess vertical space ─── */
.upi-matrix .um-head{
  padding:16px 18px 12px;
}
.upi-matrix .um-title{
  font-size:clamp(18px,1.9vw,23px);
  margin-top:2px;
}
/* Reduce eyebrow→title gap inside um-head */
.upi-matrix .um-eyebrow{
  letter-spacing:0.22em;
}
/* UPI seq-step: override the 72px default — this step doesn't need that much air */
.seq-step#section-upi{
  margin-top:48px;
}

/* Clusters-block header: was 44px 48px 24px — compress to editorial density */
.clusters-block .cb-head{
  padding:24px 40px 18px;
}
.clusters-block .cb-eyebrow{
  margin-bottom:8px;
}
.clusters-block .cb-title{
  font-size:clamp(28px,3.2vw,40px);
  margin:0 0 4px 0;
}

/* ── C. Container consistency — text measure control ─────────── */
.intro,
.seq-body .intro{
  max-width:700px;
}
/* Normalise card/panel border language to use rule-strong consistently */
.pair-card,
.clusters-block,
.upi-matrix,
.anchor-iframe{
  border-color:var(--rule-strong);
}

/* ── D. Footer — canonical desktop layout ── */
@media (min-width:981px){
  footer .f-top.v3{
    display:flex;
    flex-wrap:nowrap;
    align-items:flex-start;
    gap:64px;
  }
  footer .f-top.v3 > .ident{
    flex:0 1 360px;
    padding-right:0;
    border-right:0;
  }
  footer .f-top.v3 > .f-cols{
    margin-left:auto;
  }
}
footer .f-top.v3 .ident .name{
  letter-spacing:-0.01em;
}
/* Identity desc — breathing */
footer .f-top.v3 .ident p.ident-desc{
  margin-top:16px;
  max-width:280px;
  line-height:1.72;
}
/* Author block — vertical separation from brand desc */
footer .ident-author{
  margin-top:28px;
  padding-top:22px;
}
/* Footer section — more generous top padding overall */
footer.site{
  padding-top:88px;
}
/* Column h4 headers — slightly more breathing below label */
footer .col h4{
  margin-bottom:20px;
}

/* ── E. Bilingual — belt-and-suspenders enforcement ─────────── */
/* Reinforces the global CSS at lines 57-58 with visibility kill-switch  */
/* Prevents any edge-case where display override may not fire           */
html[lang="en"] .lang-es{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}
html[lang="es"] .lang-en{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}
/* Why-note: enforce block + strict language isolation */
p.why-note .lang-en,
p.why-note .lang-es{
  display:none !important;
}
html[lang="en"] p.why-note .lang-en{
  display:block !important;
  visibility:visible !important;
}
html[lang="es"] p.why-note .lang-es{
  display:block !important;
  visibility:visible !important;
}

/* ── F. Section transition — editorial continuity ────────────── */
/* Section separators: consistent rule weight */
section.surface{
  border-top:1px solid var(--rule);
}
/* Dark sections: deeper visual break */
section.surface.dark{
  border-top:1px solid var(--rule-strong);
}

/* ── G. Visual hierarchy — chart framing consistency ─────────── */
/* All embedded viz panels: consistent frame language */
.response-system.v3{
  border:1px solid var(--rule-strong);
}
/* Legend / chart footer: consistent muted typographic treatment */
.rs-chart-legend .rl-label,
.rs-chart-legend .rl-pct{
  font-size:11px;
}

/* ── H. Modular scale — hero-eyebrow consolidated at base declaration */
/* .section-num font-size: keep existing 10.5px at L306 */
.section-num{
  font-size:10px;
  letter-spacing:0.24em;
}

/* ── Why-note — bilingual single paragraph ──────────────────── */
/* <p id="whyNote" data-en="..." data-es="...">; JS swaps textContent  */
/* on language change. Styled here, content injected at runtime.       */
.why-note{
  /* single paragraph — styled here, content injected at runtime */
}

/* ─────────────────────────────────────────────────────────────────
   Editorial + positioning refinements
   ───────────────────────────────────────────────────────────────── */

/* Hero lede — tighter measure for typographic stability (6-8 lines) */
.hero-lede{
  max-width:520px;
  hyphens:none;
  word-break:normal;
}
/* Second paragraph of hero lede — smaller, clearly secondary */
.hero-lede-obj{
  font-family:var(--serif);font-weight:300;font-style:normal;
  font-size:clamp(15px,1.35vw,17px);line-height:1.6;color:var(--muted);
  max-width:520px;
  margin-top:14px;margin-bottom:36px;
  hyphens:none;word-break:normal;
  text-wrap:pretty;
}

/* Hero · resolve ALL word breaks — no forced hyphenation anywhere in the hero.
   Overrides the earlier hyphens:auto narrative rule for the dark-card slogan,
   and keeps the wordmark on a single unbroken line. */
.hero-slogan.v3.mideast-panel .mp-slogan,
.hero-slogan.v3.mideast-panel .mp-caption,
.hero h1.hero-h1 .hero-mark,
.hero-eyebrow{
  hyphens:none;-webkit-hyphens:none;-ms-hyphens:none;
  word-break:normal;overflow-wrap:normal;
}
.hero h1.hero-h1 .hero-mark{white-space:nowrap;}

/* Hero CTA secondary — navy variant scoped to hero only */
.hero .cta-secondary{
  background:var(--brand-navy);
  color:#F5F4F0;
  border-color:var(--brand-navy);
}
.hero .cta-secondary:hover{
  background:var(--navy-card);
  border-color:var(--navy-card);
  color:#F5F4F0;
}

/* Dark card — grid column spacing governs alignment; no margin offset needed */

/* Footer proj2 link — 2 lines max */
.proj2-link{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}

/* ── Footer · social icon row ─────────────────────────────── */
.social-icons{
  display:flex;gap:12px;margin-top:18px;align-items:center;
}
.social-icons a{
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;
  border:1px solid rgba(245,244,240,0.16);
  color:rgba(245,244,240,0.60);
  text-decoration:none;
  transition:color .15s ease,border-color .15s ease;
}
.social-icons a:hover{color:#F5F4F0;border-color:rgba(245,244,240,0.50);}
.social-icons svg{width:17px;height:17px;fill:currentColor;}

/* ── Token migrations (V20 inline-style cleanup) ──────────────────── */
/* intro-meta: footnote/divider paragraph in aliyah section */
.intro-meta{
  margin-top:16px;font-family:var(--mono);font-size:11px;
  letter-spacing:0.1em;color:var(--muted);
  border-top:1px solid var(--rule);padding-top:14px;
}
/* footer Scope column items */
.col-scope-item{
  color:rgba(245,244,240,0.78);font-size:13px;
}
.col-scope-meta{
  color:rgba(245,244,240,0.5);font-family:var(--mono);
  font-size:11px;letter-spacing:0.16em;
}
/* FAI right panel eyebrow variant */
.fi-eyebrow.fi-eyebrow-muted{
  color:var(--muted) !important;
}

/* ── V24 · Analytical modules gateway ──────────────────────────
   ax-main project-selector with toggle dropdown                  */
.ax-main.ax-selector{
  cursor:default;
  text-decoration:none;color:inherit;
}
.ax-main.ax-selector:hover{background:var(--surface);}

/* ── Standalone nav-return · bilingual enforcement ── */
html[lang="en"] .tf-nav-return .lang-es,
html[lang="es"] .tf-nav-return .lang-en{display:none !important;}
html[lang="en"] .tf-nav-return .lang-en,
html[lang="es"] .tf-nav-return .lang-es{display:inline !important;}

/* CTA toggle button */
.ax-proj-toggle{
  display:inline-flex;align-items:center;gap:10px;
  margin-top:auto;padding:12px 0 0 0;
  border:0;background:transparent;cursor:pointer;
  font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:0.10em;
  text-transform:uppercase;color:var(--teal);
  transition:color .15s ease;
}
.ax-proj-toggle:hover{color:var(--terra);}
.ax-proj-toggle .tog-arr{
  font-family:var(--mono);font-size:13px;
  display:inline-block;transition:transform .2s ease;
}
.ax-proj-toggle.open .tog-arr{transform:rotate(180deg);}

/* Dropdown panel */
.ax-proj-links{
  border-top:1px solid var(--rule);
  margin-top:12px;
  display:none;flex-direction:column;gap:0;
}
.ax-proj-links.open{display:flex;}
.ax-proj-item{
  display:grid;grid-template-columns:36px 1fr auto;gap:14px;align-items:center;
  padding:12px 0;border-bottom:1px solid var(--rule);
  text-decoration:none;color:var(--ink);
  transition:color .12s ease;
}
.ax-proj-item:last-child{border-bottom:0;}
.ax-proj-item:hover{color:var(--teal);}
.ax-proj-item:hover .ax-pnum{color:var(--teal);}
.ax-pnum{font-family:var(--mono);font-size:10px;letter-spacing:0.2em;color:var(--terra);font-weight:600;}
.ax-pname{font-family:var(--serif);font-size:14px;color:inherit;line-height:1.25;}
.ax-pname em{font-style:normal;display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:0.16em;color:var(--muted);margin-top:2px;text-transform:uppercase;}
.ax-parr{font-family:var(--mono);font-size:13px;color:var(--muted-2);}
.ax-proj-item:hover .ax-parr{color:var(--teal);}

/* V24 · Module question in ax-row subtitle */
.ax-row .question{
  font-family:var(--serif);font-style:italic;font-size:12px;
  color:var(--muted);line-height:1.5;margin-top:3px;display:block;
}

/* V24 · HAR concept block */
.har-concept{
  margin-bottom:40px;padding:28px 36px;
  background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--teal);
}
.har-concept .hc-eyebrow{
  font-family:var(--mono);font-size:10px;letter-spacing:0.24em;text-transform:uppercase;
  color:var(--teal);font-weight:600;margin-bottom:12px;
}
.har-concept .hc-title{
  font-family:var(--serif);font-weight:400;font-size:clamp(18px,1.8vw,22px);
  line-height:1.2;color:var(--ink);letter-spacing:-0.008em;margin-bottom:10px;
}
.har-concept .hc-text{
  font-family:var(--serif);font-weight:300;font-size:15.5px;line-height:1.7;
  color:var(--ink);max-width:760px;text-wrap:pretty;
}

/* V25.2 · Concept-module accents (distinct per module) + CTA */
.har-concept.mod-tmd{border-left-color:#B66A00;}
.har-concept.mod-tmd .hc-eyebrow{color:#B66A00;}
.har-concept.mod-har{border-left-color:#B05B3B;}
.har-concept.mod-har .hc-eyebrow{color:#B05B3B;}
.hc-cta{
  display:inline-flex;align-items:center;gap:8px;margin-top:18px;
  font-family:var(--mono);font-size:10px;letter-spacing:0.12em;text-transform:uppercase;font-weight:600;
  text-decoration:none;padding:9px 15px;border-radius:4px;border:1px solid;transition:background .15s ease,color .15s ease;
}
.mod-tmd .hc-cta{color:#9A6A12;border-color:rgba(182,106,0,0.4);}
.mod-tmd .hc-cta:hover{background:#B66A00;color:#fff;border-color:#B66A00;}
.mod-har .hc-cta{color:#8E4127;border-color:rgba(176,91,59,0.4);}
.mod-har .hc-cta:hover{background:#B05B3B;color:#fff;border-color:#B05B3B;}

/* V24 · UPI subtitle */
.seq-subtitle{
  font-family:var(--serif);font-weight:300;font-style:italic;
  font-size:clamp(15px,1.4vw,17px);line-height:1.55;color:var(--muted);
  margin:-6px 0 14px 0;
}

/* V24 · TMD source line */
.tmd-source{
  margin-top:32px;margin-bottom:28px;
  font-family:var(--mono);font-size:10px;letter-spacing:0.18em;
  text-transform:uppercase;color:var(--muted-2);
  padding-top:16px;border-top:1px solid var(--rule);
}
.tmd-source strong{color:var(--ink);}

/* ══════════════════════════════════════════════════════════════
   V25 · Recovered fixes from V19 + new dark-mode corrections
   ══════════════════════════════════════════════════════════════ */

/* ── V19 §5.5 — Hero dark panel: editorial margins ─────────── */
@media (min-width:981px){
  .hero-slogan.v3.mideast-panel{
    margin-left:12px;
    margin-right:24px;
  }
}

/* ── V19 §5.10 — Footer ident: 0.4cm left shift ────────────── */
footer .f-top.v3 .ident{margin-left:-15px;}

/* ── V19 Fix 4 — Divergence chart: remove wide lateral margin ─ */
.response-system.v3 .rs-chart-wide{padding:0 8px 0;}

/* ── V19 Fix 5 — Method note: top breathing room ───────────── */
.method-note{margin-top:40px;}

/* ── V25 · UPI matrix dark mode ────────────────────────────── */
.upi-matrix{background:var(--analytical);}
.upi-matrix .um-head{border-bottom:1px solid rgba(245,244,240,0.08);}
.upi-matrix .um-title{color:#F5F4F0;}
.upi-matrix .um-meta{color:rgba(245,244,240,0.45);}
.upi-matrix .um-body{border-bottom:1px solid rgba(245,244,240,0.08);}
.upi-matrix .um-plot{background:var(--analytical);border-bottom:1px solid rgba(245,244,240,0.08);}
.upi-matrix .um-leg-item{
  border-right-color:rgba(245,244,240,0.08);
  border-bottom-color:rgba(245,244,240,0.08);
}
.upi-matrix .um-leg-item .um-name{color:#F5F4F0;}
.upi-matrix .um-leg-item .um-name em{color:var(--brand-green);}
.upi-matrix .um-leg-item .um-desc{color:rgba(245,244,240,0.55);}
.upi-matrix .um-leg-item .um-count{
  color:#F5F4F0;
  background:rgba(245,244,240,0.07);
  border-color:rgba(245,244,240,0.12);
}
/* SVG text override: all plot labels → light; quadrant labels restored via class */
.upi-matrix .um-plot svg text{fill:#E3E8ED;}
.upi-matrix .um-plot svg text.qlab-critical{fill:rgba(255,160,130,0.90);}
.upi-matrix .um-plot svg text.qlab-reserve{fill:rgba(95,190,184,0.90);}
.upi-matrix .um-plot svg text.qlab-intervention{fill:rgba(210,130,90,0.95);}
.upi-matrix .um-plot svg text.qlab-recovery{fill:rgba(210,180,80,0.95);}

/* ===== [2.9 verbatim] lines 3577-3814 ===== */
/* Header: institutional straight bar — no border-radius, clean scroll */
header.site{
  position:sticky; top:0; z-index:200;
  border-radius:0 !important;
  background:var(--navy-header);
  border-bottom:1px solid rgba(95,174,154,0.22);
  box-shadow:0 2px 12px -4px rgba(8,17,27,0.40);
  overflow:visible;
}
/* Prevent any content from appearing above or behind the sticky header */
body{ scroll-padding-top:72px; }
.hero,.project-block,.surface,[id]{scroll-margin-top:76px;}
/* globe: cancel the flat-map zoom transform */
.hero-slogan.v3.mideast-panel .mp-globe{ display:flex; align-items:center; justify-content:center; }
.hero-slogan.v3.mideast-panel .mp-globe svg{ position:relative; transform:none !important; }
.mp-foci{ animation:mpFoci 4.6s ease-in-out infinite; transform-origin:center; }
@keyframes mpFoci{ 0%,100%{opacity:.55;} 50%{opacity:1;} }
.mp-arc{ stroke-dasharray:3 7; animation:mpArc 18s linear infinite; }
@keyframes mpArc{ to{ stroke-dashoffset:-140; } }
@media (prefers-reduced-motion:reduce){ .mp-foci,.mp-arc{ animation:none; } }
/* concept modules · vertical list */
.cmods{ margin-top:44px; display:grid; gap:14px; }
.cmods-head{ font-family:var(--mono); font-size:10.5px; letter-spacing:0.22em; text-transform:uppercase; color:var(--muted); font-weight:600; margin-bottom:2px; }
.cmod{ background:var(--surface); border:1px solid var(--rule); border-left:3px solid var(--teal); border-radius:0 6px 6px 0; padding:22px 28px; }
.cmod.foundation{ border-left-width:4px; background:linear-gradient(180deg,#fbfcfd,#fff); box-shadow:inset 3px 0 0 rgba(0,95,115,0.06); }
.cmod.mod-tmd{ border-left-color:#B66A00; } .cmod.mod-har{ border-left-color:#B05B3B; } .cmod.mod-fai{ border-left-color:#4A6A82; } .cmod.mod-upi{ border-left-color:#5FAE9A; }
.cmod-top{ display:flex; align-items:center; gap:12px; margin-bottom:11px; flex-wrap:wrap; }
.cmod-code{ font-family:var(--mono); font-size:10px; letter-spacing:0.16em; font-weight:600; color:#fff; background:var(--teal); padding:4px 9px; border-radius:3px; }
.cmod.mod-tmd .cmod-code{ background:#B66A00; } .cmod.mod-har .cmod-code{ background:#B05B3B; } .cmod.mod-fai .cmod-code{ background:#4A6A82; } .cmod.mod-upi .cmod-code{ background:#3E8C7A; }
.cmod-eyebrow{ font-family:var(--mono); font-size:9.5px; letter-spacing:0.22em; text-transform:uppercase; color:var(--muted); font-weight:500; }
.cmod-tag{ font-family:var(--mono); font-size:8.5px; letter-spacing:0.16em; text-transform:uppercase; color:var(--teal); font-weight:600; border:1px solid rgba(0,95,115,0.3); padding:3px 9px; border-radius:20px; margin-left:auto; }
.cmod-title{ font-family:var(--serif); font-weight:500; font-size:20px; line-height:1.22; color:var(--ink-deep); margin-bottom:9px; letter-spacing:-0.005em; }
.cmod-text{ font-family:var(--sans); font-weight:400; font-size:14px; line-height:1.62; color:var(--ink); max-width:780px; text-wrap:pretty; }
.cmod-cta{ display:inline-flex; align-items:center; gap:8px; margin-top:15px; font-family:var(--mono); font-size:10px; letter-spacing:0.12em; text-transform:uppercase; font-weight:600; text-decoration:none; color:#fff; background:var(--teal); padding:9px 15px; border-radius:4px; transition:background .15s ease; }
.cmod-cta:hover{ background:#024a59; }
.cmod.mod-tmd .cmod-cta{ background:#B66A00; } .cmod.mod-tmd .cmod-cta:hover{ background:#9A5A00; }
.cmod.mod-har .cmod-cta{ background:#B05B3B; } .cmod.mod-har .cmod-cta:hover{ background:#974A2D; }
.cmod.mod-fai .cmod-cta{ background:#4A6A82; } .cmod.mod-fai .cmod-cta:hover{ background:#3A5468; }
.cmod.mod-upi .cmod-cta{ background:#3E8C7A; } .cmod.mod-upi .cmod-cta:hover{ background:#2F7263; }
@media (max-width:560px){ .cmod{ padding:18px 18px; } }

/* ══════════════════════════════════════════════════════
   V26 · Targeted additions
   ══════════════════════════════════════════════════════ */

/* Italic hard override */
em,.lede,.proj-narrative,.why-note,.seq-body .intro{font-style:normal !important;}

/* Header · single bar · rounded bottom · soft shadow */
/* header border-radius overridden in v252-additions block above */

/* Global CTA primary · border-radius (matches reference) */
.cta-primary{border-radius:6px;}

/* Hero CTAs · secondary = navy solid + border-radius */
.hero-ctas .cta-secondary{background:var(--navy-header);color:#F5F4F0;border-color:var(--navy-header);border-radius:6px;}
.hero-ctas .cta-secondary:hover{background:#27394b;color:#F5F4F0;border-color:#27394b;}

/* V26 · Three editorial cards (observatory) */
.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media(max-width:880px){.cards3{grid-template-columns:1fr;}}
.ecard{background:#fff;border:1px solid var(--rule);border-radius:5px;overflow:hidden;display:flex;flex-direction:column;}
.ecard-vis{height:210px;position:relative;overflow:hidden;border-bottom:1px solid var(--rule);}
.ecard-vis svg{position:absolute;inset:0;width:100%;height:100%;}
.ecard-body{padding:18px 20px 20px;flex:1;display:flex;flex-direction:column;}
.ecard-num{font-family:var(--mono);font-size:9px;letter-spacing:0.2em;text-transform:uppercase;color:var(--muted-2);margin-bottom:10px;font-weight:500;}
.ecard h3{font-family:var(--serif);font-weight:500;font-size:19px;line-height:1.2;color:var(--ink);margin-bottom:8px;}
.ecard h3 b{font-weight:500;color:var(--teal-deep);}
.ecard p{font-size:12.5px;line-height:1.55;color:var(--muted);flex:1;}
.ecard-foot{margin-top:13px;padding-top:11px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:8.5px;letter-spacing:0.14em;text-transform:uppercase;color:var(--teal-deep);font-weight:600;}
.ecard:nth-child(2) .ecard-foot,.ecard:nth-child(2) h3 b{color:var(--terra-deep);}
.ecard:nth-child(3) .ecard-foot,.ecard:nth-child(3) h3 b{color:#9A6A12;}
.ecard-ip{animation:ecardPulse 4.4s ease-in-out infinite;transform-origin:center;}
.ecard-im{stroke-dasharray:3 5;animation:ecardDash 14s linear infinite;}
@keyframes ecardPulse{0%,100%{opacity:.55;}50%{opacity:1;}}
@keyframes ecardDash{to{stroke-dashoffset:-90;}}
@media(prefers-reduced-motion:reduce){.ecard-ip,.ecard-im{animation:none;}}

/* V26 · Framework IVUB + derived (Visual Direction v4) */
.fw-foundation{background:linear-gradient(115deg,#10262d,#1E2D3D 72%);border-radius:8px;padding:28px 32px;color:#fff;position:relative;overflow:hidden;border:1px solid rgba(95,174,154,0.2);}
.fw-foundation::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:#2F5D62;}
.fw-found-grid{display:grid;grid-template-columns:1fr auto;gap:28px;align-items:center;}
@media(max-width:760px){.fw-found-grid{grid-template-columns:1fr;}}
.fw-top{display:flex;align-items:center;gap:12px;margin-bottom:11px;flex-wrap:wrap;}
.fw-code{font-family:var(--mono);font-size:11px;letter-spacing:0.16em;font-weight:600;color:#0A111A;background:var(--brand-green);padding:5px 11px;border-radius:3px;}
.fw-eyebrow{font-family:var(--mono);font-size:9px;letter-spacing:0.2em;text-transform:uppercase;color:rgba(216,179,101,0.85);}
.fw-found-tag{font-family:var(--mono);font-size:8px;letter-spacing:0.16em;text-transform:uppercase;color:#A7D7CD;font-weight:600;border:1px solid rgba(95,174,154,0.4);padding:4px 10px;border-radius:20px;}
.fw-foundation h3{font-family:var(--serif);font-weight:500;font-size:24px;line-height:1.15;margin-bottom:9px;}
.fw-foundation p{font-weight:300;font-size:14px;line-height:1.6;color:rgba(245,244,240,0.8);max-width:580px;}
.fw-cta{display:inline-flex;align-items:center;gap:8px;margin-top:16px;font-family:var(--mono);font-size:10.5px;letter-spacing:0.12em;text-transform:uppercase;font-weight:600;color:#0A111A;background:var(--brand-amber);padding:12px 18px;border-radius:5px;text-decoration:none;white-space:nowrap;}
.fw-cta:hover{background:var(--brand-amber-hover);}
.fw-branch{font-family:var(--mono);font-size:9px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted-2);margin:16px 0 14px;display:flex;align-items:center;gap:14px;}
.fw-branch::before,.fw-branch::after{content:"";height:1px;background:var(--rule-strong);flex:1;}
.fw-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
@media(max-width:880px){.fw-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:520px){.fw-grid{grid-template-columns:1fr;}}
.fw-mod{background:#fff;border:1px solid var(--rule);border-top:3px solid;border-radius:0 0 5px 5px;padding:18px 18px 16px;display:flex;flex-direction:column;}
.fw-mod.tmd{border-top-color:var(--brand-amber);}
.fw-mod.har{border-top-color:#B05B3B;}
.fw-mod.fai{border-top-color:#4A6A82;}
.fw-mod.upi{border-top-color:var(--institutional);}
.fw-mod .m-code{font-family:var(--mono);font-size:10px;letter-spacing:0.14em;font-weight:600;padding:3px 8px;border-radius:3px;align-self:flex-start;margin-bottom:10px;}
.fw-mod.tmd .m-code{background:var(--brand-amber);color:#0A111A;}
.fw-mod.har .m-code{background:#B05B3B;color:#fff;}
.fw-mod.fai .m-code{background:#4A6A82;color:#fff;}
.fw-mod.upi .m-code{background:var(--institutional);color:#fff;}
.fw-mod .m-eyebrow{font-family:var(--mono);font-size:8px;letter-spacing:0.16em;text-transform:uppercase;color:var(--muted-2);margin-bottom:7px;}
.fw-mod h4{font-family:var(--serif);font-weight:500;font-size:15.5px;line-height:1.2;color:var(--ink-deep);margin-bottom:8px;}
.fw-mod p{font-size:11.5px;line-height:1.5;color:var(--muted);flex:1;}
.fw-mod .m-cta{margin-top:13px;font-family:var(--mono);font-size:8.5px;letter-spacing:0.1em;text-transform:uppercase;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:6px;color:#fff;padding:8px 11px;border-radius:4px;align-self:flex-start;transition:opacity .15s ease;}
.fw-mod.tmd .m-cta{background:#9A6A12;}
.fw-mod.har .m-cta{background:#8E4127;}
.fw-mod.fai .m-cta{background:#39526A;}
.fw-mod.upi .m-cta{background:var(--institutional);}
.fw-mod .m-cta:hover{opacity:0.82;}

/* V26 · Contact professional services */
.svc-block{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start;}
@media(max-width:980px){.svc-block{grid-template-columns:1fr;gap:36px;}}
.svc-left h2{font-family:var(--serif);font-weight:500;font-size:clamp(24px,3vw,34px);line-height:1.15;letter-spacing:-0.01em;color:var(--ink);margin-bottom:18px;}
.svc-left .svc-intro{font-family:var(--sans);font-weight:300;font-size:15px;line-height:1.7;color:var(--ink);margin-bottom:28px;max-width:540px;}
.svc-items{display:grid;gap:0;border-top:1px solid var(--rule-strong);}
.svc-item{padding:14px 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:128px 1fr;gap:14px;align-items:baseline;}
@media(max-width:560px){.svc-item{grid-template-columns:1fr;gap:4px;}}
.svc-k{font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted-2);font-weight:600;flex-shrink:0;}
.svc-v{font-family:var(--sans);font-size:13px;color:var(--ink);line-height:1.55;}
.svc-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px;}
.svc-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border:1px solid var(--rule-strong);border-radius:6px;text-decoration:none;font-family:var(--sans);font-size:13px;font-weight:500;color:var(--ink);transition:border-color .15s ease,color .15s ease,background .15s ease;}
.svc-btn:hover{border-color:var(--brand-amber);color:var(--brand-amber);}
.svc-btn.primary{background:var(--brand-amber);color:var(--ink-deep);border-color:var(--brand-amber);border-radius:6px;}
.svc-btn.primary:hover{background:var(--brand-amber-hover);border-color:var(--brand-amber-hover);color:var(--ink-deep);}
.svc-btn--outline{background:transparent;border-color:var(--rule-strong);color:var(--ink);border-radius:6px;}
.svc-btn--outline:hover{border-color:var(--navy-header);color:var(--navy-header);background:transparent;}
.svc-right{background:var(--surface-2);border:1px solid var(--rule);padding:28px 30px;}
.svc-right-title{font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;color:var(--muted-2);font-weight:600;margin-bottom:16px;}
.svc-cols{display:grid;grid-template-columns:1fr;gap:14px;}
.svc-col-k{font-family:var(--mono);font-size:9px;letter-spacing:0.16em;text-transform:uppercase;color:var(--muted-2);margin-bottom:5px;font-weight:600;}
.svc-col-v{font-size:13px;line-height:1.6;color:var(--ink);}

/* ── fix · No italics (global override for landing) ─── */
main em,section em,.hero em,.project-block em,.methodology em,
#contact em,.cards3 em,.section-head em,.lede em{font-style:normal !important;}

/* ── fix · Cards editorial — no visual area, accent top only ─── */
.ecard--editorial{border-top:2px solid;overflow:visible;}
.ecard--editorial:nth-child(1){border-top-color:var(--teal-deep);}
.ecard--editorial:nth-child(2){border-top-color:var(--terra-deep);}
.ecard--editorial:nth-child(3){border-top-color:#9A6A12;}
.ecard--editorial .ecard-body{padding:24px 22px 22px;}
.ecard--editorial h3{font-size:20px;}
.ecard--editorial p{font-size:13.5px;}

/* ── fix · Ranking tiles border-radius ───────────────── */
.cvtile,.cvcol,.cvact,.cvin,
.territory-tile,.regime-card,
.ivub-rank-tile,.ivub-regime-card{border-radius:2px;}

/* ── fix · Contact single column, no svc-right ──────── */
.svc-block{grid-template-columns:1fr;max-width:720px;gap:0;}
.svc-left h2{font-size:clamp(24px,3vw,32px);}
.svc-ctas{gap:10px;margin-top:32px;}
.svc-btn.primary{padding:13px 22px;font-weight:600;font-size:13.5px;}
.svc-btn:not(.primary){padding:11px 18px;border-color:var(--rule-strong);color:var(--ink);}
.svc-btn:not(.primary):hover{border-color:var(--navy-header);color:var(--navy-header);}

/* ── fix · VD v4 Methodology flow ───────────────────── */
.mh-frame{background:#fff;border:1px solid var(--rule);border-radius:6px;padding:32px 32px 28px;
  box-shadow:0 1px 3px rgba(8,17,27,0.04),0 12px 28px -18px rgba(8,17,27,0.14);}
.mh-title{font-family:var(--serif);font-weight:500;font-size:24px;color:var(--ink-deep);margin-bottom:8px;}
.mh-sub{font-weight:300;font-size:13.5px;color:var(--muted);max-width:640px;margin-bottom:28px;}
.mh-flow{display:grid;grid-template-columns:repeat(7,1fr);gap:0;align-items:stretch;}
@media(max-width:980px){.mh-flow{grid-template-columns:repeat(4,1fr);gap:14px 0;}}
@media(max-width:620px){.mh-flow{grid-template-columns:1fr;border-left:1px solid var(--rule-strong);padding-left:20px;gap:14px;}}
.mh-phase{position:relative;padding:0 10px;}
.mh-phase:not(:last-child)::after{content:"→";position:absolute;right:-7px;top:28px;color:var(--muted-2);font-size:12px;}
@media(max-width:980px){.mh-phase::after{display:none !important;}}
@media(max-width:620px){.mh-phase{padding:0;}}
.ph-card{background:#fff;border:1px solid var(--rule);border-top:2px solid var(--teal-deep);
  border-radius:0 0 4px 4px;padding:14px 12px;height:100%;}
.ph-num{font-family:var(--mono);font-size:10px;letter-spacing:0.12em;color:var(--brand-amber);font-weight:600;
  margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.ph-num svg{width:15px;height:15px;stroke:var(--teal-deep);fill:none;stroke-width:1.4;}
.ph-t{font-family:var(--sans);font-weight:600;font-size:12px;color:var(--ink-deep);line-height:1.25;margin-bottom:5px;}
.ph-d{font-size:10.5px;line-height:1.45;color:var(--muted);}
.mh-principle{margin-top:20px;background:#fff;border:1px solid var(--rule);
  border-left:3px solid var(--teal-deep);border-radius:0 4px 4px 0;
  padding:15px 20px;display:flex;gap:16px;align-items:baseline;flex-wrap:wrap;}
.mh-principle .pk{font-family:var(--mono);font-size:9px;letter-spacing:0.18em;text-transform:uppercase;
  color:var(--teal-deep);font-weight:600;white-space:nowrap;}
.mh-principle .pv{font-size:13px;color:var(--ink);line-height:1.5;flex:1;min-width:200px;}
.mh-glossary{margin-top:13px;font-family:var(--mono);font-size:10px;letter-spacing:0.1em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;display:inline-flex;gap:6px;}
.mh-glossary:hover{color:var(--teal);}

/* ── functional_final · Contact section note ─────────── */
.svc-footer-note{font-family:var(--mono);font-size:10.5px;letter-spacing:0.16em;text-transform:uppercase;
  color:var(--muted-2);margin-top:24px;padding-top:18px;border-top:1px solid var(--rule);}

/* ── functional_final · Hero CTA border-radius ─────── */
.cta-primary{border-radius:5px;}
.cta-secondary{border-radius:5px;}

/* ── functional_final · Title of contact section ────── */
#contact .section-head{margin-bottom:32px;}

/* V26 · IVUB callout — clean background, label, no olive */
.ivub-callout{background:#EEF1EC;border:1px solid rgba(0,18,25,0.10);border-left:4px solid #005F73;padding:28px 36px;margin:0 0 34px;}
.ivub-callout .module-label{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:#005F73;font-weight:600;margin-bottom:10px;}
.ivub-callout .cs-line{font-family:var(--sans);font-size:15px;line-height:1.65;color:#1A1612;}
.ivub-callout .cs-line strong{font-weight:600;color:#1A1612;}
@media(max-width:560px){.ivub-callout{padding:20px 22px;}}

/* V26 · UPI matrix landing = light mode (overrides V25 dark mode block) */
.upi-matrix{background:#FFFFFF !important;}
.upi-matrix .um-head{border-bottom-color:var(--rule) !important;}
.upi-matrix .um-title{color:var(--ink-deep) !important;}
.upi-matrix .um-meta{color:var(--muted) !important;}
.upi-matrix .um-body{border-bottom-color:var(--rule) !important;}
.upi-matrix .um-plot{background:var(--bg-warm) !important;border-bottom-color:var(--rule) !important;}
.upi-matrix .um-leg-item{border-right-color:var(--rule) !important;border-bottom-color:var(--rule) !important;}
.upi-matrix .um-leg-item .um-name{color:var(--ink) !important;}
.upi-matrix .um-leg-item .um-name em{color:var(--teal) !important;}
.upi-matrix .um-leg-item .um-desc{color:var(--muted) !important;}
.upi-matrix .um-leg-item .um-count{color:var(--ink) !important;background:var(--surface-2) !important;border-color:var(--rule-strong) !important;}
.upi-matrix .um-plot svg text{fill:var(--ink) !important;}
.upi-matrix .um-plot svg text.qlab-critical{fill:rgba(174,32,18,0.85) !important;}
.upi-matrix .um-plot svg text.qlab-reserve{fill:rgba(0,95,115,0.85) !important;}
.upi-matrix .um-plot svg text.qlab-intervention{fill:rgba(202,103,2,0.90) !important;}
.upi-matrix .um-plot svg text.qlab-recovery{fill:rgba(176,91,59,0.85) !important;}
.upi-matrix .um-foot{background:var(--surface-2) !important;color:var(--ink) !important;border-top:1px solid var(--rule) !important;}
.upi-matrix .um-foot .umf-eyebrow{color:var(--muted-2) !important;}
.upi-matrix .um-foot .umf-body{color:var(--ink) !important;}

/* V26 · ecard-vis placeholder — clean area, no SVG abstractions */
.ecard-vis--todo{background:var(--surface-2);border-bottom:1px solid var(--rule);}
.ecard-vis--todo-a{background:linear-gradient(135deg,#e3e8ed 0%,#ddd8cc 100%);}
.ecard-vis--todo-b{background:linear-gradient(135deg,#e4e8eb 0%,#d8dde3 100%);}
.ecard-vis--todo-c{background:linear-gradient(135deg,#e8ebe4 0%,#dde3d8 100%);}

/* ===== [2.9 verbatim] lines 3819-3925 ===== */
/* ═══════ v2.5 · Founder functional rebuild ═══════
   Additive. Restores the index26 editorial register and removes the v2.4 staging look. */

/* ── P1 · IVUB Macro dashboard embed ───────────────────────────── */
#project-1 .tf-dash{margin:0 0 8px;}
#project-1 .tf-dash-frame{
  position:relative;width:100%;height:880px;overflow:hidden;
  border:1px solid var(--rule);background:#FFFFFF;
}
#project-1 .tf-dash-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;}
#project-1 .tf-dash-en-note{
  margin:14px 0 0;padding:12px 16px;border-left:2px solid var(--rule);
  font-size:13px;line-height:1.6;color:var(--muted);max-width:760px;
}
html[lang="es"] #project-1 .tf-dash-en-note{display:none;}
/* V2.8 · fallback only, until the embed reports its measured height.
   Deliberately conservative: too short shows a scrollbar for one frame,
   too tall leaves a band of white the founder must not see. */
#project-1 .tf-dash-frame{height:820px;}
@media (max-width:1024px){#project-1 .tf-dash-frame{height:1120px;}}
@media (max-width:760px){#project-1 .tf-dash-frame{height:1500px;}}

/* ── P1 · explore more · three actions ─────────────────────────── */
.explore-more.v25{display:grid;grid-template-columns:2fr 1fr 1fr;gap:16px;}
@media (max-width:980px){.explore-more.v25{grid-template-columns:1fr;}}

/* ── P2 · returns by country of origin · institutional chart ───── */
/* ── P2 · Returns by country · institutional benchmark bar ──────────
   Data unchanged. Visual language only: horizontal rounded bars in a
   sage → teal → muted-blue ramp, terracotta reserved for value markers,
   a vertical benchmark rule, and a very faint vertical grid. */
.rbc{border:1px solid var(--rule-strong);background:#FFFFFF;margin:26px 0 0;}
.rbc-head{padding:24px 28px 0;}
.rbc-eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--teal);font-weight:600;}
.rbc-title{font-family:var(--serif,'IBM Plex Serif',serif);font-size:clamp(18px,2.2vw,23px);font-weight:500;color:var(--ink-deep);margin:10px 0 6px;line-height:1.28;letter-spacing:-.01em;}
.rbc-sub{font-family:var(--sans);font-size:13.5px;line-height:1.62;color:var(--muted);max-width:780px;margin:0;}

/* Desktop · chart left, observed totals right. Tablet/mobile · totals below. */
.rbc-body{display:grid;grid-template-columns:minmax(0,1fr) 208px;gap:0;align-items:stretch;}
@media (max-width:900px){.rbc-body{grid-template-columns:minmax(0,1fr);}}
.rbc-plot{padding:16px 20px 8px;min-width:0;}
.rbc-plot svg{width:100%;height:auto;display:block;}

.rbc-totals{
  border-left:1px solid var(--rule);padding:26px 24px 22px;background:var(--offwhite);
  display:flex;flex-direction:column;gap:2px;
}
@media (max-width:900px){
  .rbc-totals{border-left:0;border-top:1px solid var(--rule);
    display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:20px 24px;}
}
@media (max-width:520px){.rbc-totals{grid-template-columns:repeat(2,1fr);}}
.rbc-tot-h{font-family:var(--mono);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--muted-2);font-weight:600;margin-bottom:14px;line-height:1.5;}
@media (max-width:900px){.rbc-tot-h{grid-column:1/-1;margin-bottom:0;}}
.rbc-tot{padding:9px 0;border-bottom:1px solid var(--rule);}
.rbc-tot:last-child{border-bottom:0;}
@media (max-width:900px){.rbc-tot{border-bottom:0;padding:0;}}
.rbc-tot .y{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--muted);display:block;}
.rbc-tot .v{font-family:var(--mono);font-size:17px;font-weight:600;color:var(--ink-deep);
  font-variant-numeric:tabular-nums;display:block;margin-top:2px;}
.rbc-tot.is-focus .v{color:var(--teal);}

.rbc-foot{padding:16px 28px 22px;border-top:1px solid var(--rule);background:var(--offwhite);
  display:flex;gap:26px;flex-wrap:wrap;align-items:baseline;justify-content:space-between;}
.rbc-note{font-family:var(--sans);font-size:12px;line-height:1.62;color:var(--muted);max-width:660px;margin:0;}
.rbc-src{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2);
  border:1px solid var(--rule-strong);padding:5px 12px;white-space:nowrap;}

/* ── P2 · UPI matrix · single canonical light implementation ───── */
#section-upi .upi-matrix,
.upi-matrix{background:#FFFFFF!important;border:1px solid var(--rule)!important;}
.upi-matrix .um-head{border-bottom:1px solid var(--rule)!important;background:#FBFCFD!important;}
.upi-matrix .um-title{color:#1A1612!important;}
.upi-matrix .um-eyebrow{color:#8A4126!important;}
.upi-matrix .um-meta{color:#5A5449!important;}
.upi-matrix .um-body{background:#FFFFFF!important;}
.upi-matrix .um-plot{background:#FFFFFF!important;}
.upi-matrix .um-plot text{fill:#2A2620!important;font-family:var(--sans)!important;}
.upi-matrix .um-plot text[font-size="9"],
.upi-matrix .um-plot text[font-size="9.5"],
.upi-matrix .um-plot text[font-size="10"]{font-size:12px!important;}
.upi-matrix .um-plot text[font-size="11"]{font-size:12.5px!important;}
.upi-matrix .um-legend{background:#FBFCFD!important;border-top:1px solid var(--rule)!important;}
.upi-matrix .um-leg-item{border-color:var(--rule)!important;}
.upi-matrix .um-legend .um-name{color:#1A1612!important;}
.upi-matrix .um-legend .um-desc{color:#5A5449!important;}
.upi-matrix .um-legend .um-count{color:#8A4126!important;}
.upi-matrix .um-foot{background:#F3F5F7!important;border-top:1px solid var(--rule)!important;}
.upi-matrix .um-foot .umf-eyebrow{color:#8A4126!important;}
.upi-matrix .um-foot .umf-body{color:#3A352C!important;}
/* territory labels must never be hidden or overlapped */
.upi-matrix .um-plot .um-dot-label{paint-order:stroke;stroke:#FFFFFF;stroke-width:3.2px;
  stroke-linejoin:round;font-weight:500;}

/* ── responsive hardening: nothing may push the page sideways ────
   The wide analytical table scrolls inside its own box; the page never does. */
html,body{overflow-x:clip;}
#project-2 #section-har-system{max-width:100%;}
#project-2 #section-har-system .seq-body{width:auto!important;max-width:100%!important;min-width:0!important;}
#project-1 .analytical-table-wrap,#project-2 .analytical-table-wrap{max-width:100%!important;}
#project-2 .at-scroll{overflow-x:auto!important;-webkit-overflow-scrolling:touch;}
@media (max-width:520px){
  .rbc-plot{padding:10px 8px 2px;}
  .rbc-head{padding:18px 16px 0;}
  .rbc-foot{padding:14px 16px 16px;gap:14px;}
}

/* ===== [2.9 verbatim] lines 3929-3943 ===== */
/* UPI matrix · one canonical light implementation. Everything analytical is untouched. */
#project-2 .upi-matrix .um-plot{background:#FFFFFF!important;padding:20px 16px 10px!important;
  overflow-x:auto;-webkit-overflow-scrolling:touch;}
#project-2 .upi-matrix .um-plot svg{min-width:640px;}
#project-2 .upi-matrix .um-plot .um-dot-label{paint-order:stroke;stroke:#FFFFFF;stroke-width:4px;
  stroke-linejoin:round;}
#project-2 .um-axhelp{display:grid;grid-template-columns:1fr 1fr;gap:18px;
  padding:4px 22px 22px;background:#FFFFFF;}
@media (max-width:760px){#project-2 .um-axhelp{grid-template-columns:1fr;}}
#project-2 .um-axhelp div{border-left:2px solid #2F6D69;padding-left:14px;}
#project-2 .um-axhelp b{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:#2F6D69;margin-bottom:6px;}
#project-2 .um-axhelp p{margin:0;font-size:13.5px;line-height:1.65;color:#2C3A45;}
#project-2 .explore-more.upi-actions{display:grid;grid-template-columns:2fr 1fr;gap:16px;}
@media (max-width:880px){#project-2 .explore-more.upi-actions{grid-template-columns:1fr;}}

/* ===== [2.9 verbatim] lines 3947-4113 ===== */
/* ══════════════════════════════════════════════════════════════════
   V2.8 · FOUNDER FUNCTIONAL CORRECTION
   One canonical radius layer; every later override that contradicted it
   is neutralised here. Selector audit on the v2.7 baseline reported
   0 malformed class selectors, so nothing is rewritten on suspicion.
   ══════════════════════════════════════════════════════════════════ */

/* ── 1 · canonical radii · contradicting values corrected ───────── */
#project-1 .period,
.mh-frame,
.ecard,
.fw-foundation,
.fw-mod,
.mh-frame .ph-card,
.mh-principle,
.cluster-viz,.upi-matrix,.analytical-table-wrap,.anchor-iframe,.pair-card,
.har-concept,.fai-intro,.rbc,.response-system,.rs-spatial,
.finding,.kpi,.why,.svc-block,.at-foot,.um-foot,.ivub-callout,
.tf-dash,.tf-dash-frame,.rs-regimes{border-radius:var(--r-card);}

.ftx-btn,.fw-cta,.fw-mod .m-cta,.hc-cta,.cta-primary,.hero-ctas .cta-secondary,
.cmod-cta,.svc-btn,.svc-btn.primary,.svc-btn--outline,.fw-method-cta{
  border-radius:var(--r-btn);
}

.cvtile,.cvcol,.cvact,.cvin,.territory-tile,.regime-card,
.ivub-rank-tile,.ivub-regime-card,
.cluster-viz .cv-tile,.cluster-viz .cv-action{border-radius:var(--r-tile);}

.fw-code,.fw-found-tag,.fw-mod .m-code,.cmod-code,.cmod-tag,
.analytical-table-wrap .pill{border-radius:var(--r-pill);}

/* ── 2 · AA contrast corrections on light surfaces ──────────────── */
.section-num,
.fw-branch,
.fw-mod .m-eyebrow,
.ecard-num,
.rbc-tot-h{color:#6B6355;}
.mh-frame .ph-num{color:#8A5A0F;}
.fw-mod p,.ecard p{color:#4E5A63;}

/* ── 3 · single canonical systems block ───────────────────────
   The compact duplicate that lived in the methodology section is gone;
   this block is the only representation of Project 01 · IVUB and
   Project 02 · TMD/HAR/FAI/UPI. They are separate projects, not a chain. */
.fw-foot{
  display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:22px;
  padding-top:20px;border-top:1px solid var(--rule-strong);
}
.fw-method-cta{
  display:inline-flex;align-items:center;gap:10px;text-decoration:none;
  font-family:var(--sans);font-size:13.5px;font-weight:600;
  background:var(--institutional);color:#F5F4F0;
  border:1px solid var(--institutional);padding:12px 22px;
  transition:background .15s ease,border-color .15s ease;
}
.fw-method-cta:hover{background:#2A3F55;border-color:#2A3F55;}
.fw-foot-note{font-size:13px;line-height:1.6;color:#4E5A63;max-width:52ch;margin:0;}

/* ── 4 · P1 spacing · the page was carrying two empty bands ─────── */
.surface{padding:64px 0;}
.project-block{padding:72px 0;}
#project-1 .proj-head,#project-2 .proj-head{margin-bottom:36px;padding-bottom:26px;}
.section-head{margin-bottom:34px;}
#observatory .cards3,#initiatives .fw-foundation{margin-top:4px;}
#project-1 .proj-narrative{margin-bottom:8px;}
#project-1 .proj-section-label,#project-2 .proj-section-label{margin-top:40px;}
#project-1 .proj-section-label:first-of-type{margin-top:26px;}
#project-1 .ivub-callout{margin-bottom:22px;}
.seq-step{margin-top:44px;}

/* sticky-header landing offset — every in-page target clears the header */
:root{--hdr-h:68px;}
#observatory,#initiatives,#project-1,#project-2,#methodology,
#policy-value,#contact-form,#products,#data-products,
#section-tmd,#section-har,#section-fai,#section-upi,#section-har-system{
  scroll-margin-top:calc(var(--hdr-h) + 12px);
}

/* ── 5 · monitoring bands · height follows the text ─────────────── */
.cluster-viz .cv-grid{grid-template-rows:auto auto auto auto auto;}
.cluster-viz .cv-col{padding:24px 26px 22px;gap:11px;}
.cluster-viz .cv-name{font-size:19px;}
.cluster-viz .cv-desc{font-size:12.5px;line-height:1.55;}
.cluster-viz .cv-tiles{grid-auto-rows:minmax(70px,auto);gap:7px;}
.cluster-viz .cv-tile{min-height:70px;padding:9px 11px 8px;}
.cluster-viz .cv-tile .tname{font-size:13px;}
.cluster-viz .cv-tile .tmeta{font-size:9.5px;letter-spacing:.1em;margin-top:3px;}
.cluster-viz .cv-tile .tscore{font-size:11px;padding-top:4px;}
.cluster-viz .cv-action{min-height:0;padding:13px 15px;}
.cluster-viz .cv-action strong{font-size:15.5px;}
.cluster-viz .cv-head{padding:26px 26px 18px;}

/* ── 6 · Projects dropdown · light institutional panel ──────────── */
.dropdown-panel{
  background:#FFFFFF;
  border:1px solid var(--rule-strong);
  border-radius:var(--r-card);
  box-shadow:0 18px 44px -18px rgba(14,20,24,.34);
  padding:6px;overflow:hidden;
}
.dropdown-panel a{
  color:var(--institutional);
  border-bottom:1px solid var(--rule);
  border-radius:var(--r-btn);
  padding:13px 16px;
  transition:background .12s ease,color .12s ease;
}
.dropdown-panel a:last-child{border-bottom:0;}
.dropdown-panel .dp-num{color:#8A5A0F;}
.dropdown-panel .dp-name{color:var(--institutional);}
.dropdown-panel .dp-name em{color:#4E5A63;}
.dropdown-panel .dp-code{color:#5B6B76;background:var(--offwhite);padding:3px 9px;}
.dropdown-panel a:hover,.dropdown-panel a:focus-visible{
  background:var(--institutional);
}
.dropdown-panel a:hover .dp-name,.dropdown-panel a:focus-visible .dp-name{color:#FFFFFF;}
.dropdown-panel a:hover .dp-num,.dropdown-panel a:focus-visible .dp-num{color:var(--brand-amber);}
.dropdown-panel a:hover .dp-name em,.dropdown-panel a:focus-visible .dp-name em{color:rgba(245,244,240,.82);}
.dropdown-panel a:hover .dp-code,.dropdown-panel a:focus-visible .dp-code{
  color:#0E1418;background:var(--brand-green);
}

/* ── 7 · UPI · axis reading sits with the axis titles ───────────── */
#project-2 .um-axhelp.v28{
  display:grid;grid-template-columns:1fr 1fr;gap:0;
  padding:0;background:#FFFFFF;border-top:1px solid var(--rule);
}
@media (max-width:760px){#project-2 .um-axhelp.v28{grid-template-columns:1fr;}}
#project-2 .um-axhelp.v28 .um-ax{
  border-left:0;border-radius:0;padding:18px 22px;
}
#project-2 .um-axhelp.v28 .um-ax + .um-ax{border-left:1px solid var(--rule);}
@media (max-width:760px){
  #project-2 .um-axhelp.v28 .um-ax + .um-ax{border-left:0;border-top:1px solid var(--rule);}
}
#project-2 .um-axhelp.v28 b{
  display:block;font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--teal-deep);margin-bottom:7px;font-weight:600;
}
#project-2 .um-axhelp.v28 p{margin:0;font-size:13px;line-height:1.62;color:#3A4750;}

/* ── 8 · home · decision value as a summary, not a second copy ──── */
.why-summary{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;}
.ws-chip{
  font-family:var(--sans);font-size:13.5px;font-weight:500;color:#2C3A45;
  background:var(--surface);border:1px solid var(--rule-strong);
  border-radius:var(--r-pill);padding:9px 18px;
}
#policy-value .mh-cta-row{margin-top:26px;}

/* ── 9 · contact · two explicit actions ─────────────────────────── */
.contact-actions .mh-cta{min-height:44px;}

/* ── 10 · HAR vs market pressure · three panels always complete ─── */
#project-2 .anchor-iframe.step-04 .anchor-frame{
  height:clamp(560px,52vh,660px);overflow:hidden;background:#FFFFFF;
}
#project-2 .anchor-iframe.step-04 .anchor-frame iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;display:block;
}
@media (max-width:1024px){
  #project-2 .anchor-iframe.step-04 .anchor-frame{height:clamp(520px,58vh,620px);}
}
@media (max-width:760px){
  /* stacked panels need the full vertical view */
  #project-2 .anchor-iframe.step-04 .anchor-frame{height:min(940px,124vh);}
}

/* ===== [2.9 verbatim] lines 4157-4598 ===== */
/* ══════════════════════════════════════════════════════════════════
   V2.7 · CANONICAL COMPONENT TOKENS
   One radius system across the whole portfolio. Nothing pointed,
   nothing inconsistent. Palette limited to the index26 identity:
   institutional navy · teal · terracotta · ochre · white · cool off-white.
   ══════════════════════════════════════════════════════════════════ */
:root{
  --r-card:8px;      /* main cards · methodological panels · table container */
  --r-btn:6px;       /* buttons · inputs · tabs */
  --r-pill:999px;    /* pills · chips · tags */
  --r-tile:6px;      /* territorial tiles */
  --offwhite:#F3F5F7;      /* cool off-white — replaces every beige surface */
  --offwhite-2:#EEF1F4;
}

/* ── Cards · panels · containers ─────────────────────────────────── */
.cluster-viz,.upi-matrix,.analytical-table-wrap,.anchor-iframe,.pair-card,
.har-concept,.fai-intro,.mh-frame,.rbc,.response-system,.rs-spatial,
.finding,.period,.kpi,.why,.svc-block,.at-foot,.um-foot,.ivub-callout,
.tf-dash,.tf-dash-frame{
  border-radius:var(--r-card);
}
.cluster-viz,.upi-matrix,.analytical-table-wrap,.anchor-iframe,.rbc,
.tf-dash-frame{overflow:hidden;}

/* Grid children of a rounded container must not poke through the corners */
.cluster-viz .cv-grid{border-radius:0 0 var(--r-card) var(--r-card);overflow:hidden;}
.cluster-viz .cv-col:first-child{border-bottom-left-radius:var(--r-card);}
.cluster-viz .cv-col:last-child{border-bottom-right-radius:var(--r-card);}
@media (max-width:980px){
  .cluster-viz .cv-col:first-child{border-bottom-left-radius:0;}
  .cluster-viz .cv-col:last-child{border-radius:0 0 var(--r-card) var(--r-card);}
}

/* ── Buttons · CTAs · secondary navigation ───────────────────────── */
.explore-btn,.fai-cta,.hc-cta,.mh-glossary,.ftx-btn,.cta-primary,
.pair-card .pc-cta,.anchor-head .open,.at-more,.har-card-toggle,
.tf-back,.section-cta,button.tab,.scenario-btn,.btn-primary,.btn-secondary{
  border-radius:var(--r-btn);
}
.explore-btn,.fai-cta{overflow:hidden;}

/* ── Pills · chips · swatches · tags ─────────────────────────────── */
.analytical-table-wrap .pill,.pill,.um-count,.mono-tag,.dp-code,
.module-label,.rbc-src,.svc-k,.har-chip{
  border-radius:var(--r-pill)!important;
}
.cluster-viz .cv-tag .sw,.um-legend .sw{border-radius:var(--r-pill);}

/* ── Territorial tiles ───────────────────────────────────────────── */
.cluster-viz .cv-tile{border-radius:var(--r-tile);}
.cluster-viz .cv-action{border-radius:var(--r-tile);}

/* ── Inputs · tabs ───────────────────────────────────────────────── */
input,select,textarea,.tabs{border-radius:var(--r-btn);}

/* ── Methodological architecture ─────────────────────────────────── */
.mh-frame .ph-card,.mh-principle,.mh-phase{border-radius:var(--r-card);}
.mh-frame .ph-num{border-radius:var(--r-btn);}

/* ── UPI clusters · decision cards ───────────────────────────────── */
.um-legend .um-leg-item{border-radius:var(--r-card);}
.um-axhelp div{border-radius:var(--r-tile);}
.upi-matrix .um-plot{border-radius:0;}

/* ── Footer modules ──────────────────────────────────────────────── */
.ftx-nav,.ftx-id,.ftx-author{border-radius:0;}
.ftx-links a{border-radius:var(--r-btn);}

/* ══════════════════════════════════════════════════════════════════
   PALETTE CORRECTIONS · no beige · no aged paper · no sepia · no
   debugging magenta · no dominant dark mood in territorial charts
   ══════════════════════════════════════════════════════════════════ */
#project-2 .har-concept.mod-tmd,
#project-2 .har-concept.mod-har,
#project-2 .har-concept{
  background-color:var(--offwhite)!important;
  border:1px solid var(--rule-strong);
}
#project-2 .at-foot,#project-2 .at-foot.v6{
  background-color:var(--offwhite-2)!important;
  border-top:1px solid var(--rule-strong);
}
#project-2 .rs-spatial,#project-2 .rs-spatial.standalone{
  background-color:var(--institutional)!important;
}
.cluster-viz .cv-legend{background:var(--offwhite);}

/* ── Ranking bands · geometry hardening ──────────────────────────────
   14 territories, scores, positions, classification, colours and order
   are untouched. Only the geometry is corrected: even tile heights,
   no clipped score, country and position kept on one line, no overflow. */
.cluster-viz .cv-tiles{
  grid-auto-rows:minmax(84px,auto);align-items:stretch;
}
.cluster-viz .cv-tile{
  min-height:84px;height:100%;justify-content:flex-start;
  padding:12px 13px 11px;min-width:0;overflow:hidden;
}
.cluster-viz .cv-tile .tname{
  overflow-wrap:anywhere;hyphens:auto;
}
.cluster-viz .cv-tile .tmeta{
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
}
.cluster-viz .cv-tile .tscore{
  margin-top:auto;padding-top:6px;white-space:nowrap;
}
@media (max-width:1180px) and (min-width:981px){
  .cluster-viz .cv-tile .tname{font-size:13px;}
  .cluster-viz .cv-tile .tmeta{font-size:9.5px;letter-spacing:0.1em;}
}
@media (max-width:420px){
  .cluster-viz .cv-tiles{grid-template-columns:1fr;}
}

/* ── P1 · 04 · Explore more ──────────────────────────────────────
   Primary CTA in institutional navy; the three descriptions read as
   sentences, not as uppercase micro-labels. */
#project-1 .explore-btn.feature{background:var(--institutional);border-color:var(--institutional);}
#project-1 .explore-btn.feature:hover{background:#2A3F55;border-color:#2A3F55;}
#project-1 .explore-more .explore-btn .lbl span{
  text-transform:none;letter-spacing:0.01em;font-family:var(--sans);
  font-size:12.5px;line-height:1.55;margin-top:7px;color:var(--muted);
}
#project-1 .explore-more .explore-btn.feature .lbl span{
  font-size:12.5px;color:rgba(245,244,240,0.66);letter-spacing:0.01em;
}
#project-1 .explore-more .explore-btn{align-items:flex-start;padding:22px 24px;}
#project-1 .explore-more .explore-btn .arr{margin-top:3px;}

/* ══════════════════════════════════════════════════════════════════
   V2.7 · Home methodology summary · IVUB → TMD / HAR / FAI / UPI
   The full methodology now lives on methodology.html.
   ══════════════════════════════════════════════════════════════════ */
#methodology .mh-branch{
  display:grid;grid-template-columns:minmax(0,1fr) 40px minmax(0,1.35fr);
  gap:22px;align-items:center;margin-top:30px;
  background:rgba(255,255,255,0.045);border:1px solid rgba(245,244,240,0.14);
  border-radius:var(--r-card);padding:26px 28px;
}
@media (max-width:900px){
  #methodology .mh-branch{grid-template-columns:1fr;gap:16px;}
  #methodology .mhb-arrow{transform:rotate(90deg);justify-self:start;}
}
#methodology .mhb-root{display:flex;flex-direction:column;gap:8px;}
#methodology .mhb-tag{
  font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--brand-green);font-weight:600;border:1px solid rgba(95,174,154,.4);
  border-radius:var(--r-pill);padding:5px 12px;align-self:flex-start;
}
#methodology .mhb-root strong{
  font-family:var(--serif);font-size:30px;font-weight:400;color:#FFFFFF;line-height:1;
  letter-spacing:.01em;
}
#methodology .mhb-desc{font-size:13.5px;line-height:1.6;color:rgba(245,244,240,.68);max-width:34ch;}
#methodology .mhb-arrow{font-family:var(--mono);font-size:20px;color:rgba(245,244,240,.42);text-align:center;}
#methodology .mhb-kids{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;}
#methodology .mhb-kid{
  display:flex;flex-direction:column;gap:5px;padding:14px 15px;
  background:rgba(255,255,255,0.05);border:1px solid rgba(245,244,240,0.14);
  border-radius:var(--r-tile);font-size:12px;line-height:1.45;color:rgba(245,244,240,.72);
}
#methodology .mhb-kid b{font-family:var(--mono);font-size:13.5px;letter-spacing:.08em;color:#FFFFFF;font-weight:600;}

.mh-cta-row{display:flex;flex-wrap:wrap;gap:16px 22px;align-items:center;margin-top:26px;}
.mh-cta{
  display:inline-flex;align-items:center;gap:11px;text-decoration:none;
  font-family:var(--sans);font-size:13.5px;font-weight:600;
  background:var(--brand-amber);color:var(--ink-deep);
  border:1px solid var(--brand-amber);border-radius:var(--r-btn);padding:12px 22px;
  transition:background .15s ease,border-color .15s ease;
}
.mh-cta:hover{background:var(--brand-amber-hover);border-color:var(--brand-amber-hover);}
.mh-cta.ghost{background:transparent;color:var(--institutional);border-color:var(--rule-strong);}
.mh-cta.ghost:hover{background:var(--offwhite);border-color:var(--teal);color:var(--teal);}
#methodology .mh-cta.ghost{color:#F5F4F0;border-color:rgba(245,244,240,.28);}
.mh-cta-note{font-size:13px;line-height:1.6;color:var(--muted);max-width:46ch;}
#methodology .mh-cta-note{color:rgba(245,244,240,.6);}
#methodology .mh-glossary{border-radius:var(--r-btn);}

/* ══════════════════════════════════════════════════════════════════
   V2.7 · narrow-viewport hardening
   Nothing may be wider than the column that contains it: no clipped
   headline, no clipped label, at 390 or at 320.
   ══════════════════════════════════════════════════════════════════ */
.hero-grid,.hero-copy,.seq-step,.seq-body,.proj-narrative,
.cluster-viz,.upi-matrix,.analytical-table-wrap,.response-system,
.fai-intro,.rbc,.har-concept,.finding,.cv-col,.period,.kpi,.why,
.explore-btn,.pair-card,.um-leg-item{min-width:0;}
/* auto-fit grids must be allowed to go below their track minimum */
#project-1 .findings{grid-template-columns:repeat(auto-fit,minmax(min(270px,100%),1fr))!important;}
.why-grid,.fi-dims,.um-legend,.pair-grid,.explore-more,.period-row,.kpi-strip{min-width:0;}
.fw-cta{max-width:100%;}
@media (max-width:400px){
  .cluster-viz .cv-col{padding-left:22px;padding-right:22px;}
  #project-1 .finding{padding-left:20px;padding-right:20px;}
  .fw-cta{white-space:normal;text-align:left;line-height:1.4;padding:11px 14px;}
  .rbc-src{white-space:normal;line-height:1.5;}
  .mh-principle{flex-wrap:wrap;grid-template-columns:minmax(0,1fr);}
  .mh-principle .pv,.mh-principle .pk{overflow-wrap:anywhere;min-width:0;flex:1 1 100%;}
  .proj-section-label,.cv-tag,.tmd-source{overflow-wrap:anywhere;}
  /* header row must fit inside a 320 gutter */
  .nav-inner{gap:10px;}
  .nav-end{gap:8px;min-width:0;}
  .cta-primary{padding:9px 12px;font-size:11.5px;gap:0;}
  .cta-primary .arr{display:none;}
  .lang-toggle button{padding:6px 8px;font-size:10px;}
  .brand .mark{font-size:16px;}
}
@media (min-width:1025px){.hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);}}
@media (max-width:1024px){.hero-grid{grid-template-columns:minmax(0,1fr);}}
/* The hero wordmark had a 56px floor, which is wider than a 320–390 column
   and was pushing the whole hero column past the viewport. The floor now
   scales down; every viewport at or above ~700px is unchanged. */
.hero h1.hero-h1{font-size:clamp(34px,7vw,90px);}
.hero h1.hero-h1 .hero-mark{overflow-wrap:anywhere;}
@media (max-width:560px){
  .hero h1.hero-h1 .hero-mark{
    white-space:normal;overflow-wrap:anywhere;word-break:normal;
  }
  .hero h1.hero-h1,.hero-lede,.hero-lede-obj{overflow-wrap:anywhere;}
  .hero-lede,.hero-lede-obj{min-height:0;}
}
@media (max-width:880px){
  /* the step number stops holding a rigid 64px column */
  #project-2 .seq-step{grid-template-columns:minmax(0,1fr);gap:10px;}
  #project-2 .seq-num{font-size:13px;}
}
@media (max-width:420px){
  .hero-slogan.v3.mideast-panel .mp-meta-row{flex-wrap:wrap;gap:4px 12px;}
  .hero-slogan.v3.mideast-panel .mp-meta-row .mp-v{white-space:normal;}
}

/* ── P2 · 08 · FAI call to action ────────────────────────────────
   The grid children carried min-width:auto and a nowrap button label,
   which pushed the card past its column on narrow viewports. */
.fai-cta{grid-template-columns:minmax(0,1fr) auto;}
.fai-cta>*{min-width:0;}
.fai-cta .fc-desc{max-width:620px;}
@media (max-width:760px){
  .fai-cta{grid-template-columns:minmax(0,1fr);padding:26px 24px;}
  .fai-cta .fc-arr{white-space:normal;justify-content:space-between;
    line-height:1.4;text-align:left;}
}

/* ── Returns chart · legend + narrow-viewport behaviour ──────────── */
.rbc-legend{
  display:flex;flex-wrap:wrap;gap:8px 26px;padding:12px 2px 8px;
  border-top:1px solid var(--rule);margin-top:8px;
}
.rl-item{display:inline-flex;align-items:center;gap:9px;
  font-family:var(--sans);font-size:12px;color:var(--muted);line-height:1.4;}
.rl-bar{width:20px;height:9px;border-radius:4.5px;background:#3E5F7A;flex:none;}
.rl-dot{width:10px;height:10px;border-radius:50%;background:#FFFFFF;
  border:2px solid #46525E;flex:none;}
.rl-rule{width:22px;height:0;border-top:1.5px dashed #2F6D69;flex:none;}
@media (max-width:760px){
  .rbc-plot{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .rbc-plot svg{min-width:580px;}
  .rbc-legend{position:sticky;left:0;}
}

/* ── P2 · 01 · Balance territorial bajo presión estructural ─────────
   The figure autosizes to its container, so the container is sized from
   the viewport instead of clipping a fixed-height chart. Both panels are
   fully visible; there is no internal scrollbar and no horizontal scroll. */
#project-2 .anchor-iframe.balance-full .anchor-frame{
  height:clamp(680px,72vh,760px);
  overflow:hidden;background:#FFFFFF;
}
#project-2 .anchor-iframe.balance-full .anchor-frame iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;display:block;
  transform:none;overflow:hidden;
}
@media (max-width:1024px){
  #project-2 .anchor-iframe.balance-full .anchor-frame{height:clamp(620px,74vh,700px);}
}
@media (max-width:760px){
  /* stacked panels need the full vertical view */
  #project-2 .anchor-iframe.balance-full .anchor-frame{height:min(860px,116vh);}
}

/* ══════════════════════════════════════════════════════════════════
   P2 · 06 · Urban response systems — integrated legend + regime table
   ══════════════════════════════════════════════════════════════════ */
#project-2 .rs-legend{
  display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center;
  padding:14px 22px;background:#FFFFFF;border-top:1px solid var(--rule);
}
#project-2 .rsl{display:inline-flex;align-items:center;gap:9px;
  font-family:var(--sans);font-size:12.5px;color:#2C3A45;line-height:1.4;}
#project-2 .rsl i{width:18px;height:4px;border-radius:2px;flex:none;}
#project-2 .rsl b{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink-deep);}
#project-2 .rsl-note{font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted-2);margin-left:auto;}
@media (max-width:760px){#project-2 .rsl-note{margin-left:0;}}

#project-2 .rs-regimes{background:#FFFFFF;border-top:1px solid var(--rule);padding:22px 22px 20px;}
#project-2 .rsr-head{font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--teal);font-weight:600;margin-bottom:14px;}
#project-2 .rsr-scroll{max-width:100%;}
#project-2 .rsr-table{width:100%;border-collapse:collapse;font-family:var(--sans);}
#project-2 .rsr-table th{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);font-weight:600;text-align:left;padding:0 10px 9px 0;
  border-bottom:1px solid var(--rule-strong);vertical-align:bottom;line-height:1.45;
}
#project-2 .rsr-table th.n,#project-2 .rsr-table td.n{text-align:right;padding-right:14px;}
#project-2 .rsr-table td{
  font-size:13px;line-height:1.5;color:#2C3A45;padding:12px 10px 12px 0;
  border-bottom:1px solid var(--rule);vertical-align:top;
}
#project-2 .rsr-table tr:last-child td{border-bottom:0;}
#project-2 .rsr-table td strong{color:var(--ink-deep);font-weight:600;}
#project-2 .rsr-table td.n{font-family:var(--mono);font-variant-numeric:tabular-nums;
  font-weight:600;color:var(--ink-deep);white-space:nowrap;}
#project-2 .rsr-table td.n.up{color:#8C4327;}
#project-2 .rsr-table td.n.down{color:#2A6461;}
#project-2 .rsr-key{display:inline-block;width:10px;height:10px;border-radius:var(--r-pill);
  margin-right:9px;vertical-align:baseline;}
#project-2 .rsr-foot{margin:14px 0 0;font-size:12px;line-height:1.6;color:var(--muted);}
@media (max-width:820px){
  #project-2 .rsr-table,#project-2 .rsr-table thead,#project-2 .rsr-table tbody,
  #project-2 .rsr-table tr,#project-2 .rsr-table th,#project-2 .rsr-table td{display:block;}
  #project-2 .rsr-table thead{position:absolute;left:-9999px;}
  #project-2 .rsr-table tr{border:1px solid var(--rule-strong);border-radius:var(--r-card);
    padding:14px 16px;margin-bottom:12px;}
  #project-2 .rsr-table td{border-bottom:0;padding:4px 0;}
  #project-2 .rsr-table td.n{text-align:left;padding-right:0;}
  #project-2 .rsr-table td.n::before{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--muted);margin-right:8px;}
  html[lang="en"] #project-2 .rsr-table td.n:nth-child(3)::before{content:"Rent 24 m";}
  html[lang="es"] #project-2 .rsr-table td.n:nth-child(3)::before{content:"Alquiler 24 m";}
  html[lang="en"] #project-2 .rsr-table td.n:nth-child(4)::before{content:"Pressure";}
  html[lang="es"] #project-2 .rsr-table td.n:nth-child(4)::before{content:"Presión";}
  html[lang="en"] #project-2 .rsr-table td.n:nth-child(5)::before{content:"HAR";}
  html[lang="es"] #project-2 .rsr-table td.n:nth-child(5)::before{content:"HAR";}
}

/* ══════════════════════════════════════════════════════════════════
   P2 · 07 · HAR table — readable without horizontal scroll
   Desktop: every column inside the available width.
   Tablet:  compressed, all columns still present, controlled wrap.
   Mobile:  each row becomes a stacked analytical card.
   No value is hidden and nothing is truncated at any breakpoint.
   ══════════════════════════════════════════════════════════════════ */
#project-2 .analytical-table-wrap .at-scroll{overflow-x:visible!important;}
#project-2 .analytical-table-wrap table{
  width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;
}
#project-2 .analytical-table-wrap thead th{
  padding:12px 8px;font-size:9px;letter-spacing:.1em;line-height:1.4;
  white-space:normal;overflow-wrap:anywhere;vertical-align:bottom;
}
#project-2 .analytical-table-wrap tbody td{
  padding:12px 8px;font-size:12.5px;line-height:1.45;
  white-space:normal;overflow-wrap:anywhere;
}
#project-2 .analytical-table-wrap th:nth-child(1){width:8.5%;}
#project-2 .analytical-table-wrap th:nth-child(2){width:10.5%;}
#project-2 .analytical-table-wrap th:nth-child(3){width:10%;}
#project-2 .analytical-table-wrap th:nth-child(4){width:10.5%;}
#project-2 .analytical-table-wrap th:nth-child(5){width:6.5%;}
#project-2 .analytical-table-wrap th:nth-child(6){width:17%;}
#project-2 .analytical-table-wrap th:nth-child(7){width:7.5%;}
#project-2 .analytical-table-wrap th:nth-child(8){width:7.5%;}
#project-2 .analytical-table-wrap th:nth-child(9){width:22%;}
#project-2 .analytical-table-wrap td.num{white-space:nowrap;font-size:12.5px;}
#project-2 .analytical-table-wrap td.delta{white-space:nowrap;}
#project-2 .analytical-table-wrap .pill{
  display:inline-block;white-space:nowrap;line-height:1.4;padding:4px 11px;
  font-size:9.5px;letter-spacing:.07em;max-width:100%;
}
#project-2 .analytical-table-wrap .pressure-bar{gap:8px;}
#project-2 .analytical-table-wrap .pressure-bar .pb-track{min-width:44px;}

@media (max-width:1080px){
  #project-2 .analytical-table-wrap thead th{font-size:8.5px;padding:10px 6px;}
  #project-2 .analytical-table-wrap tbody td{font-size:11.5px;padding:10px 6px;}
  #project-2 .analytical-table-wrap td.num{font-size:11.5px;}
  #project-2 .analytical-table-wrap .pill{font-size:9px;padding:3px 9px;}
}

/* ── Mobile · stacked analytical cards ───────────────────────────── */
@media (max-width:760px){
  #project-2 .analytical-table-wrap table,
  #project-2 .analytical-table-wrap thead,
  #project-2 .analytical-table-wrap tbody,
  #project-2 .analytical-table-wrap tr,
  #project-2 .analytical-table-wrap td{display:block;width:auto;}
  #project-2 .analytical-table-wrap thead{position:absolute;left:-9999px;}
  #project-2 .analytical-table-wrap tbody tr{
    border:1px solid var(--rule-strong);border-radius:var(--r-card);
    padding:16px 18px 14px;margin:0 0 14px;background:#FFFFFF;
  }
  #project-2 .analytical-table-wrap tbody tr:nth-child(even) td{background:transparent;}
  #project-2 .analytical-table-wrap tbody tr:hover td{background:transparent;}
  #project-2 .analytical-table-wrap tbody td{
    border-bottom:0;padding:5px 0;display:flex;gap:14px;align-items:baseline;
    justify-content:space-between;text-align:right;
  }
  #project-2 .analytical-table-wrap tbody td::before{
    font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;
    color:var(--muted);text-align:left;flex:0 0 auto;max-width:52%;line-height:1.5;
  }
  /* card header · district eyebrow, then subdistrict as the card title */
  #project-2 .analytical-table-wrap tbody td.district{
    display:block;text-align:left;font-family:var(--mono);font-size:9.5px;
    letter-spacing:.18em;text-transform:uppercase;color:var(--muted-2);
    padding:0 0 4px;
  }
  #project-2 .analytical-table-wrap tbody td.district::before{content:none;}
  #project-2 .analytical-table-wrap tbody td.subdistrict{
    display:block;text-align:left;font-family:var(--serif);font-size:19px;
    font-weight:500;color:var(--ink-deep);letter-spacing:-.01em;
    padding:0 0 12px;margin-bottom:10px;border-bottom:1px solid var(--rule);
  }
  #project-2 .analytical-table-wrap tbody td.subdistrict::before{content:none;}
  #project-2 .analytical-table-wrap tbody td:nth-child(9){
    display:block;text-align:left;padding-top:10px;margin-top:6px;
    border-top:1px solid var(--rule);
  }
  #project-2 .analytical-table-wrap tbody td:nth-child(9)::before{
    display:block;margin-bottom:7px;max-width:100%;
  }
  #project-2 .analytical-table-wrap .pressure-bar .pb-track{min-width:0;flex:1;}
  html[lang="en"] #project-2 .analytical-table-wrap tbody td:nth-child(3)::before{content:"Completions";}
  html[lang="es"] #project-2 .analytical-table-wrap tbody td:nth-child(3)::before{content:"Finalizaciones";}
  html[lang="en"] #project-2 .analytical-table-wrap tbody td:nth-child(4)::before{content:"Effective demand";}
  html[lang="es"] #project-2 .analytical-table-wrap tbody td:nth-child(4)::before{content:"Demanda efectiva";}
  html[lang="en"] #project-2 .analytical-table-wrap tbody td:nth-child(5)::before{content:"HAR";}
  html[lang="es"] #project-2 .analytical-table-wrap tbody td:nth-child(5)::before{content:"HAR";}
  html[lang="en"] #project-2 .analytical-table-wrap tbody td:nth-child(6)::before{content:"HAR category";}
  html[lang="es"] #project-2 .analytical-table-wrap tbody td:nth-child(6)::before{content:"Categoría HAR";}
  html[lang="en"] #project-2 .analytical-table-wrap tbody td:nth-child(7)::before{content:"Rent variation";}
  html[lang="es"] #project-2 .analytical-table-wrap tbody td:nth-child(7)::before{content:"Variación alquiler";}
  html[lang="en"] #project-2 .analytical-table-wrap tbody td:nth-child(8)::before{content:"Sale variation";}
  html[lang="es"] #project-2 .analytical-table-wrap tbody td:nth-child(8)::before{content:"Variación venta";}
  html[lang="en"] #project-2 .analytical-table-wrap tbody td:nth-child(9)::before{content:"Demographic pressure (composite)";}
  html[lang="es"] #project-2 .analytical-table-wrap tbody td:nth-child(9)::before{content:"Presión demográfica compuesta";}
}

/* ===== [2.9 verbatim] lines 4993-5052 ===== */
      /* ── 01 · Research period — connected institutional timeline ── */
      #project-1 .period-row{
        background:transparent;border:0;gap:14px;
      }
      #project-1 .period{
        background:var(--surface);border:1px solid var(--rule-strong);border-right:1px solid var(--rule-strong);
        border-radius:10px;padding:22px 20px 20px;position:relative;overflow:hidden;
        transition:transform .18s ease, box-shadow .18s ease;
      }
      #project-1 .period::after{content:none;}
      #project-1 .period::before{
        content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:var(--institutional);opacity:1;
      }
      #project-1 .period.break::before{background:var(--terra);}
      #project-1 .period:hover{transform:translateY(-2px);box-shadow:0 14px 30px -22px rgba(14,20,24,.5);}
      #project-1 .period .lbl{
        display:flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--muted-2);
      }
      #project-1 .period .lbl::before{
        content:"";width:7px;height:7px;border-radius:50%;background:var(--institutional);flex:none;
      }
      #project-1 .period.break .lbl{color:var(--terra);}
      #project-1 .period.break .lbl::before{background:var(--terra);}
      #project-1 .period h4{font-size:17px;line-height:1.28;}
      #project-1 .period.break h4{color:var(--terra);}

      /* ── 02 · Headline indicators — institutional KPI cards ── */
      #project-1 .kpi-strip.v3{background:transparent;border:0;gap:14px;}
      #project-1 .kpi-strip.v3 .kpi{
        background:var(--surface);border:1px solid var(--rule-strong);border-right:1px solid var(--rule-strong);
        border-radius:10px;padding:24px 22px 20px;position:relative;
        transition:transform .18s ease, box-shadow .18s ease;
      }
      #project-1 .kpi-strip.v3 .kpi:hover{transform:translateY(-2px);box-shadow:0 14px 30px -22px rgba(14,20,24,.5);}
      #project-1 .kpi-strip.v3 .kpi .val{position:relative;padding-bottom:12px;margin-bottom:12px;}
      #project-1 .kpi-strip.v3 .kpi .val::after{
        content:"";position:absolute;left:0;bottom:0;width:34px;height:3px;border-radius:2px;background:var(--teal);
      }
      #project-1 .kpi-strip.v3 .kpi:nth-child(3) .val::after{background:var(--terra);}
      #project-1 .kpi-strip.v3 .kpi:nth-child(4) .val::after{background:var(--brand-green);}

      /* ── 03 · Territorial diagnostics — accent-spine finding cards ── */
      #project-1 .findings{grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px;}
      #project-1 .finding{
        background:var(--surface);border:1px solid var(--rule-strong);border-top:1px solid var(--rule-strong);
        border-left:4px solid var(--teal);border-radius:8px;padding:22px 24px 20px;
        transition:transform .18s ease, box-shadow .18s ease;
      }
      #project-1 .finding:hover{transform:translateY(-2px);box-shadow:0 14px 30px -22px rgba(14,20,24,.5);}
      #project-1 .finding.break-finding{border-left-color:var(--terra);border-top-color:var(--rule-strong);}
      #project-1 .finding:last-child{border-left-color:var(--institutional);}
      #project-1 .finding h4{font-size:17px;line-height:1.3;}
      @media (max-width:880px){
        #project-1 .period-row{grid-template-columns:1fr 1fr;}
        #project-1 .kpi-strip.v3{grid-template-columns:1fr 1fr;}
      }
      @media (max-width:520px){
        #project-1 .period-row{grid-template-columns:1fr;}
        #project-1 .kpi-strip.v3{grid-template-columns:1fr;}
      }

/* ===== [2.9 verbatim] lines 6682-6726 ===== */
/* V25.2 · footer — three columns, author row, split contact buttons (no photo) */
footer.site .ftx{ }
.ftx-cols{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:44px;}
@media (max-width:820px){.ftx-cols{grid-template-columns:1fr 1fr;gap:30px;}}
@media (max-width:520px){.ftx-cols{grid-template-columns:1fr;gap:26px;}}
.ftx-name{font-family:var(--serif);font-size:22px;font-weight:500;font-style:italic;color:#F5F4F0;line-height:1.1;}
.ftx-name em{font-style:italic;color:var(--brand-green);}
.ftx-sub{font-family:var(--mono);font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:rgba(245,244,240,0.55);margin:7px 0 16px;}
.ftx-desc{font-family:var(--sans);font-weight:300;font-size:13px;line-height:1.6;color:rgba(245,244,240,0.6);max-width:320px;}
.ftx-h{font-family:var(--sans);font-size:13px;letter-spacing:0.04em;color:#F5F4F0;font-weight:700;margin-bottom:15px;}
.ftx-links{list-style:none;display:grid;gap:11px;margin:0;padding:0;}
.ftx-links li{font-size:14px;color:rgba(245,244,240,0.7);display:flex;gap:9px;}
.ftx-links a{color:rgba(245,244,240,0.7);text-decoration:none;display:flex;gap:9px;transition:color .15s ease;}
.ftx-links a:hover{color:#fff;}
.ftx-links .ar{color:rgba(245,244,240,0.4);}
.ftx-author{margin-top:34px;padding-top:24px;border-top:1px solid rgba(245,244,240,0.13);}
.ftx-an{font-family:var(--sans);font-size:20px;font-weight:600;color:#F5F4F0;}
.ftx-ar{font-size:13px;color:rgba(245,244,240,0.6);margin-top:3px;}
.ftx-row2{display:flex;justify-content:space-between;gap:18px;margin-top:18px;flex-wrap:wrap;scroll-margin-top:100px;}
.ftx-btns{display:flex;gap:10px;flex-wrap:wrap;}
.ftx-btn{display:inline-flex;align-items:center;gap:9px;padding:11px 17px;border:1px solid rgba(245,244,240,0.2);border-radius:7px;text-decoration:none;font-family:var(--sans);font-size:13px;font-weight:500;color:#F5F4F0;transition:background .15s ease,border-color .15s ease,color .15s ease;}
.ftx-btn:hover{border-color:rgba(245,244,240,0.55);background:rgba(255,255,255,0.05);}
.ftx-btn:focus-visible{outline:2px solid var(--brand-amber);outline-offset:2px;}
.ftx-btn svg{width:16px;height:16px;fill:currentColor;}
.ftx-btn.primary{background:var(--brand-amber);color:var(--ink-deep);border-color:var(--brand-amber);}
.ftx-btn.primary:hover{background:var(--brand-amber-hover);border-color:var(--brand-amber-hover);}
/* tf-rank-nowrap */
.cv-col .cv-tag{white-space:nowrap;}
.ftx-bot{margin-top:26px;padding-top:18px;border-top:1px solid rgba(245,244,240,0.1);text-align:center;font-family:var(--mono);font-size:9.5px;letter-spacing:0.18em;text-transform:uppercase;color:rgba(245,244,240,0.45);}
@media (max-width:600px){.ftx-row2{flex-direction:column;}.ftx-btns{width:100%;}}
/* ══════════════════════════════════════════════════════════════════
   V2.7 · SHORT FOOTER · identity · navigation · data
   The long SERVICES & PRODUCTS block now lives on services.html.
   ══════════════════════════════════════════════════════════════════ */
footer.site{padding-top:44px;padding-bottom:24px;}
.ftx-cols.v27{grid-template-columns:1.9fr 1fr 1fr;gap:44px;}
@media (max-width:820px){.ftx-cols.v27{grid-template-columns:1fr 1fr;gap:30px;}}
@media (max-width:520px){.ftx-cols.v27{grid-template-columns:1fr;gap:26px;}}
.ftx-cols.v27 .ftx-id{scroll-margin-top:100px;}
.ftx-cols.v27 .ftx-desc{max-width:330px;margin-bottom:0;}
.ftx-cols.v27 .ftx-author{margin-top:20px;padding-top:18px;border-top:1px solid rgba(245,244,240,0.13);}
.ftx-cols.v27 .ftx-an{font-size:17px;}
.ftx-cols.v27 .ftx-btns{margin-top:16px;}
.ftx-cols.v27 .ftx-links li{font-size:13.5px;}
.ftx-bot{margin-top:30px;}

/* ===== [2.9 verbatim] lines 7264-7298 ===== */
/* ══════════════════════════════════════════════════════════════════
   V2.8 · last word on the radius system.
   Placed at the end of the document so no earlier block can contradict
   the canonical tokens: cards 8 · tiles 6 · buttons 6 · tabs/inputs 6 ·
   pills 999.
   ══════════════════════════════════════════════════════════════════ */
#project-1 .period,
#project-1 .kpi-strip.v3 .kpi,
#project-1 .finding,
.mh-frame,.mh-frame .ph-card,.mh-principle,
.ecard,.fw-foundation,.fw-mod,
.cluster-viz,.upi-matrix,.analytical-table-wrap,.anchor-iframe,.pair-card,
.har-concept,.fai-intro,.rbc,.response-system,.rs-spatial,.rs-regimes,
.kpi,.why,.svc-block,.at-foot,.um-foot,.ivub-callout,
.tf-dash,.tf-dash-frame{border-radius:var(--r-card)!important;}

.ftx-btn,.fw-cta,.fw-mod .m-cta,.hc-cta,.cta-primary,.hero-ctas .cta-secondary,
.svc-btn,.svc-btn.primary,.svc-btn--outline,.fw-method-cta,.mh-cta,.mh-glossary,
.explore-btn,.fai-cta,.tf-back,.at-more{border-radius:var(--r-btn)!important;}

.cluster-viz .cv-tile,.cluster-viz .cv-action,
.cvtile,.cvcol,.cvact,.cvin,.territory-tile,.regime-card,
.ivub-rank-tile,.ivub-regime-card,.um-axhelp div{border-radius:var(--r-tile)!important;}

.fw-code,.fw-found-tag,.fw-mod .m-code,.analytical-table-wrap .pill,.pill,
.um-count,.mono-tag,.dp-code,.module-label,.rbc-src,.svc-k,.har-chip,
.ws-chip,.chip{border-radius:var(--r-pill)!important;}

input,select,textarea,.tabs,button.tab,.scenario-btn{border-radius:var(--r-btn)!important;}
/* documented exceptions: 50% for circular dots/avatars, 0 for full-bleed edges */

/* ── V2.8 · vertical rhythm · no empty bands on landing ────────── */
.surface{padding:64px 0!important;}
.project-block{padding:72px 0!important;}
#observatory,#initiatives{padding-top:56px!important;}

/* ===== [2.9 verbatim] lines 7301-7362 ===== */
/* ══ v2.9 · canonical reconciliation ════════════════════════════════════════
   One vertical spacing scale for the whole document. Every section rhythm is
   expressed in these steps — no ad-hoc margins.                              */
:root{
  --sp-1:8px; --sp-2:14px; --sp-3:22px; --sp-4:32px;
  --sp-5:44px; --sp-6:60px; --sp-7:76px;
}
.surface{padding:var(--sp-6) 0!important;}
.project-block{padding:var(--sp-7) 0!important;}
.seq-step{margin-top:var(--sp-5)!important;}
.proj-section-label{margin-top:var(--sp-5);}
.tf-dash{margin-bottom:0!important;}
.tf-dash-frame{margin-bottom:0!important;}
.rbc{margin:var(--sp-5) 0 0!important;}
.tmd-source{margin-top:var(--sp-3)!important;margin-bottom:0!important;}

/* §15–§18 · two editorial columns, each carrying its own map ─────────────── */
.tmd-pair{
  display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);
  margin:var(--sp-3) 0 0;
}
@media (max-width:880px){.tmd-pair{grid-template-columns:1fr;gap:var(--sp-5);}}
.tmd-col{display:flex;flex-direction:column;}
.tmd-col-tag{
  font-family:var(--mono);font-size:10px;letter-spacing:0.22em;text-transform:uppercase;
  font-weight:600;color:var(--muted);padding-bottom:var(--sp-1);
  border-bottom:1px solid var(--rule);margin-bottom:var(--sp-3);
}
.tmd-col.is-aliyah .tmd-col-tag{color:var(--teal);border-bottom-color:var(--teal);}
.tmd-col.is-returns .tmd-col-tag{color:var(--terra);border-bottom-color:var(--terra);}
.tmd-col-text{
  font-family:var(--sans);font-weight:300;font-size:15px;line-height:1.72;color:var(--ink);
  max-width:62ch;margin:0 0 var(--sp-3);
}
.tmd-col-text strong{font-weight:600;}
.tmd-col-text em{font-style:italic;}
/* the map is a map, not a shrunken page: the product renders in embed mode at 1:1 */
.tmd-map{
  position:relative;height:460px;background:#0B1622;
  border:1px solid var(--rule);border-radius:var(--r-card);overflow:hidden;
}
.tmd-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;}
@media (max-width:880px){.tmd-map{height:380px;}}
.tmd-map-cta{
  margin-top:var(--sp-2);display:flex;justify-content:space-between;align-items:center;
  font-family:var(--sans);font-size:11.5px;font-weight:500;letter-spacing:0.12em;
  text-transform:uppercase;color:var(--teal);text-decoration:none;
  border-top:1px solid var(--rule);padding-top:var(--sp-2);
}
.tmd-col.is-returns .tmd-map-cta{color:var(--terra);}
.tmd-map-cta .arr{font-family:var(--mono);transition:transform .15s ease;}
.tmd-map-cta:hover .arr{transform:translateX(4px);}

/* §19 · one shared synthesis, not repeated inside each column ────────────── */
.tmd-synthesis{
  margin:var(--sp-4) 0 0;padding:var(--sp-3) 0 0;
  border-top:1px solid var(--rule-strong);
}
.tmd-synthesis p{
  font-family:var(--serif);font-weight:300;font-size:clamp(16px,1.6vw,18px);
  line-height:1.68;color:var(--ink);max-width:84ch;margin:0;
}
