/* ezelman-v29.css — the migration layer for pages moved onto the v28 system (Oct 2026).
   Loads after ezelman-v28.css. Pages keep their own component CSS (darkened); this file
   imposes the v28 typography scale, rhythm, tables, prose links and the motion hooks. */

/* Page frame */
main.v29{display:block;min-height:40vh;overflow-x:clip}
main.v29 > :first-child:not(.hero):not(.breadcrumbs){padding-top:calc(var(--nav-h) + clamp(2.5rem,2rem + 3vw,5rem))}
main.v29 .breadcrumbs + .hero{padding-top:clamp(2rem,1.5rem + 2vw,3.5rem)}
main.v29 > .hero:first-child,main.v29 > section.hero:first-child{padding-top:calc(var(--nav-h) + clamp(3rem,2rem + 4vw,6rem))!important;padding-bottom:clamp(2.5rem,2rem + 2vw,4rem)!important}
main.v29 > .breadcrumbs + .hero,main.v29 > nav.breadcrumbs + section.hero{padding-top:clamp(2rem,1.5rem + 2vw,3.5rem)!important;padding-bottom:clamp(2.5rem,2rem + 2vw,4rem)!important}
main.v29 > .breadcrumbs{padding-top:calc(var(--nav-h) + 1rem)!important;padding-bottom:0!important}
main.v29 > nav.breadcrumbs{position:relative!important;top:auto!important;height:auto!important;min-height:0!important;display:block!important;background:none!important;box-shadow:none!important;border:0!important;z-index:2}
.v29:not(.v29--nobc) .hero .breadcrumb,.v29:not(.v29--nobc) .article-hero .breadcrumb,.v29:not(.v29--nobc) .page-hero .breadcrumb{display:none}
main.v29 .hero{min-height:0!important}
main.v29 .hero{background:var(--navy)!important;background-image:none!important}
.v29 h1 .gradient-text,.v29 h2 .gradient-text{background:none;-webkit-text-fill-color:currentColor;color:var(--accent-soft)}
main.v29 .hero .container{position:relative;z-index:1}

/* Typography scale wins over page CSS of equal or lower specificity */
.v29 .hero h1,.v29 h1{display:block;background:none!important;-webkit-text-fill-color:#fff;font-family:var(--disp);font-size:var(--fs-h1);font-weight:800;letter-spacing:-.035em;line-height:1.04;max-width:22ch;text-wrap:balance;color:#fff}
.v29 .hero h1 em{font-style:italic;font-weight:700;color:var(--accent-soft)}
.v29 .hero p,.v29 .hero .lead,.v29 .hero__sub,.v29 .page-hero__sub,.v29 .article-lead{font-size:var(--fs-lead);line-height:1.55;color:var(--on-dark-2);max-width:var(--measure)}
.v29 .section h2,.v29 h2{font-family:var(--disp);font-size:var(--fs-h2);font-weight:800;letter-spacing:-.028em;line-height:1.08;color:#fff;text-wrap:balance}
.v29 h3{font-size:var(--fs-h3);letter-spacing:-.018em;line-height:1.25;color:#fff}
.v29 .kicker{font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-soft);margin-bottom:.9rem;display:inline-block}
.v29 .hero .kicker{color:var(--gold)}
.v29 .section{padding:var(--section) 0}
.v29 .section+.section{border-top:1px solid var(--line-dark)}
.v29 .closing{text-align:center}
.v29 .closing h2{max-width:22ch;margin-left:auto;margin-right:auto}
.v29 .closing p{margin-left:auto;margin-right:auto}

/* Buttons: one family */
.v29 .btn{min-height:48px;padding:0 1.35rem;border-radius:var(--r-s);font-size:.9375rem;font-weight:600;line-height:1;text-decoration:none}
.v29 .btn--primary{background:var(--gradient-ui);color:#fff;border:0;box-shadow:0 6px 18px -8px rgba(3,10,24,.7)}
.v29 .btn--primary:hover{transform:none;filter:brightness(1.06);box-shadow:0 10px 22px -8px rgba(3,10,24,.8)}
.v29 .btn--ghost{background:rgba(255,255,255,.02);color:#fff;border:1px solid var(--line-dark-2)}
.v29 .btn--ghost:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.4);transform:none}

/* Prose */
.v29 p{text-wrap:pretty}
.v29 .article-body p,.v29 .content-section p,.v29 .ez-section p,.v29 .ccf-section p{color:var(--on-dark-2)}
.v29 p a:not(.btn):not(.link),.v29 li a:not(.btn):not(.link){color:var(--accent-soft);text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px;text-decoration-color:rgba(143,180,255,.45)}
.v29 p a:not(.btn):not(.link):hover,.v29 li a:not(.btn):not(.link):hover{color:#fff;text-decoration-color:#fff}
.v29 blockquote{border-left:1px solid var(--gold);padding-left:1.25rem;color:#fff;font-size:1.125rem;line-height:1.55;font-weight:500}
.v29 img{max-width:100%;height:auto}
.v29 hr{border:0;height:1px;background:var(--line-dark)}

/* Tables: dark ledger look for every table on the site */
.v29 table{width:100%;border-collapse:collapse;font-size:var(--fs-small);font-variant-numeric:tabular-nums}
.v29 table th{text-align:left;font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--on-dark-3);padding:.75rem .9rem;border-bottom:1px solid var(--line-dark-2);background:transparent}
.v29 table td{padding:.8rem .9rem;border-bottom:1px solid var(--line-dark);color:var(--on-dark-2);vertical-align:top;background:transparent}
.v29 table td:first-child{color:#fff;font-weight:600}
.v29 table tr:hover td{background:rgba(255,255,255,.025)}

/* Cards and surfaces that pages define get a consistent edge */
.v29 [class*="card"]{border-radius:var(--r-m)}

/* Motion hooks */
@media (prefers-reduced-motion:no-preference){
  html.js [data-stagger]>*{opacity:0;transform:translateY(14px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}
  html.js [data-stagger].is-in>*{opacity:1;transform:none}
  html.js [data-stagger].is-in>*:nth-child(2){transition-delay:70ms}
  html.js [data-stagger].is-in>*:nth-child(3){transition-delay:140ms}
  html.js [data-stagger].is-in>*:nth-child(4){transition-delay:210ms}
  html.js [data-stagger].is-in>*:nth-child(5){transition-delay:280ms}
  html.js [data-stagger].is-in>*:nth-child(6){transition-delay:350ms}
  html.js [data-stagger].is-in>*:nth-child(7){transition-delay:420ms}
  html.js [data-stagger].is-in>*:nth-child(8){transition-delay:490ms}
  html.js [data-stagger].is-in>*:nth-child(n+9){transition-delay:560ms}
  .v29 .hero [data-enter]{opacity:0;transform:translateY(14px);filter:blur(6px);animation:ez-enter .9s var(--ease-out) forwards;animation-delay:calc(var(--i,0) * 90ms)}
}

/* Hero: a quiet contour glow on every sub-page hero */
.v29 .hero::after{content:"";position:absolute;right:-10%;top:-30%;width:60%;height:160%;z-index:0;pointer-events:none;background:radial-gradient(45% 50% at 60% 40%,rgba(98,88,224,.16) 0%,rgba(31,143,246,.06) 45%,transparent 72%)}

/* Old sidebar-and-article layouts: keep the sidebar but give it the v28 chrome */
.v29 .article-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(2rem,1rem + 4vw,5rem);max-width:var(--container);margin:0 auto;padding:clamp(2rem,1.5rem + 2vw,3.5rem) clamp(1rem,.5rem + 2vw,2rem)}
.v29 .article-layout .sidebar{position:sticky;top:calc(var(--nav-h) + 1.5rem);align-self:start;display:grid;gap:1rem;transform:none;width:auto;background:none;border:0;height:auto;right:auto;bottom:auto;z-index:1;padding:0}
.v29 .sidebar-card{background:var(--navy-3);border:1px solid var(--line-dark-2);border-radius:var(--r-m);padding:1.25rem}
@media (max-width:980px){.v29 .article-layout{grid-template-columns:1fr}.v29 .article-layout .sidebar{position:static}}

@media (max-width:640px){.v29 .hero h1{font-size:clamp(2rem,1.4rem + 3vw,2.6rem)}}

/* Labels on gradient tiles and brand-blue buttons: solid white */
.v29 .hero-kpi__label,.v29 .impact-block__label,.v29 .impact-kpis__label,.v29 .stat-item span,.v29 .stat-item div:last-child,.v29 .testimonial-card__role{color:#fff}
.v29 .share-btn.linkedin,.v29 .share-bar__btn--linkedin,.v29 .linkedin-btn{background:#0B5BAB;color:#fff;border:1px solid rgba(255,255,255,.18)}
.v29 .whatsapp-cta,.v29 .wa-fab,.v29 .whatsapp-fab{color:#06290F!important}
/* Numbers on gradient discs, viz markers, author links */
.v29 .change-card__num,.v29 .condition-num,.v29 .ez-viz-play__num,.v29 .rail__num,.v29 .phase__num{background:var(--gradient-ui);color:#fff}
.v29 .ez-viz-bench__marker-tag,.v29 .ez-viz-bench__marker-val{color:#0A1628}
.v29 .author-card__link,.v29 .founder-bar__links a,.v29 .article-byline a{color:var(--accent-soft)}
.v29 .badge-priority--critical,.v29 .badge-priority--high,.v29 .badge--critical,.v29 .badge--high,.v29 .rag-cell--red,.v29 .heatmap-cell--critical{color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.35)}
/* Responsive safety for inherited layouts */
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.tbl-scroll--auto table{min-width:520px}
@media (max-width:640px){
  .v29 [class*="grid"]:not(.tl__svg),.v29 .radar-info,.v29 [class*="cards"],.v29 [class*="kpis"],.v29 .cols-3,.v29 .cols-2{grid-template-columns:1fr!important}
  .v29 [class*="row"]:not(table):not(tr){flex-wrap:wrap}
  .v29 .btn-row,.v29 .hero__actions,.v29 .page-hero__actions{flex-wrap:wrap}
}

/* ── Service-page hero exhibits (v29) ─────────────────────────── */
.v29 .hero__grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(2rem,1rem + 4vw,5rem);align-items:center}
.v29 .hero__copy h1{margin-bottom:1rem}
.v29 .hero__below{margin-top:clamp(2rem,1.5rem + 2vw,3rem)}
.v29 .hero__below .impact-kpis{margin-top:0}
.exhibit--chart{padding:clamp(1.25rem,1rem + 1vw,1.75rem)}
.exhibit--chart .calc__head{margin-bottom:1.25rem}
.exhibit--chart .calc__foot{margin-top:1.1rem}
.rng--wide{max-width:none;padding-right:4.5rem;gap:1.35rem}
.rng--wide .rng__val{white-space:nowrap}
.v29 .hero .exhibit p,.v29 .hero .calc__foot{font-size:.75rem;line-height:1.5;color:var(--on-dark-3);max-width:none}
.v29 .hero .exhibit .calc__t{font-size:1rem}
.v29 .hero .exhibit .calc__s{font-size:var(--fs-micro)}
.rng--wide .rng__row{grid-template-columns:150px 1fr}
.rng__mark{position:absolute;top:2px;width:3px;height:20px;border-radius:2px;background:var(--accent-soft);transform:translateX(-50%);box-shadow:0 0 0 4px rgba(143,180,255,.18)}
.rng__row--us .rng__val{color:var(--accent-soft);transform:none}
.rng__row--us span:first-child{color:#fff;font-weight:600}
/* output-floor steps */
.floor__bars{display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem;align-items:end;height:200px;padding-top:1.5rem}
.floor__col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:.4rem}
.floor__col b{position:relative;width:100%;height:var(--h);border-radius:4px 4px 2px 2px;background:rgba(143,180,255,.22);border:1px solid rgba(143,180,255,.35);transform-origin:bottom;transition:transform 1s var(--ease-out);transition-delay:calc(var(--i)*90ms)}
.floor__col b span{position:absolute;left:50%;top:-1.4rem;transform:translateX(-50%);font-size:.75rem;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap}
.floor__col small{font-size:.75rem;color:var(--on-dark-3);font-variant-numeric:tabular-nums}
.floor__col--now b{background:var(--gradient-ui);border-color:transparent}
.floor__col--step b{background:rgba(249,155,28,.28);border-color:var(--gold)}
.floor__col--step b span{color:var(--gold)}
.floor__legend{display:flex;gap:1rem 1.5rem;flex-wrap:wrap;margin-top:1rem;font-size:.75rem;color:var(--on-dark-3)}
.floor__legend span{display:inline-flex;align-items:center;gap:.45rem}
.floor__dot{width:10px;height:10px;border-radius:2px;display:inline-block;background:rgba(143,180,255,.22);border:1px solid rgba(143,180,255,.35)}
.floor__dot--now{background:var(--gradient-ui);border-color:transparent}
.floor__dot--step{background:rgba(249,155,28,.28);border-color:var(--gold)}
@media (prefers-reduced-motion:no-preference){html.js .exhibit--chart:not(.is-in) .floor__col b{transform:scaleY(0)}}
/* SCALE ladder */
.ladder{display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem;align-items:end;height:220px;padding-top:.5rem}
.ladder__rung{height:var(--h);display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:.15rem;padding:.75rem .6rem;border-radius:6px;background:linear-gradient(180deg,rgba(143,180,255,.16),rgba(143,180,255,.05));border:1px solid rgba(143,180,255,.3);transform-origin:bottom;transition:transform .9s var(--ease-out),opacity .9s;transition-delay:calc(var(--i)*110ms)}
.ladder__rung:last-child{background:var(--gradient-ui);border-color:transparent}
.ladder__rung b{font-size:1.25rem;font-weight:800;letter-spacing:-.02em;color:#fff;line-height:1}
.ladder__rung span{font-size:.72rem;font-weight:600;color:#fff;line-height:1.2}
.ladder__rung em{font-style:normal;font-size:.65rem;color:rgba(255,255,255,.65);letter-spacing:.06em;text-transform:uppercase;margin-top:auto}
@media (prefers-reduced-motion:no-preference){html.js .exhibit--chart:not(.is-in) .ladder__rung{transform:scaleY(0);opacity:0}}
@media (max-width:980px){.v29 .hero__grid{grid-template-columns:1fr}.rng--wide .rng__row{grid-template-columns:110px 1fr}.rng--wide{padding-right:3rem}}
@media (max-width:480px){.floor__bars{height:160px}.ladder{height:180px}.ladder__rung{padding:.5rem .35rem}.ladder__rung span{font-size:.6rem}}
/* Narrow screens: inherited flex rows wrap, grid children may shrink, sticky bar fits */
.v29 [class*="layout"]>*,.v29 [class*="grid"]>*,.v29 [class*="cols"]>*,.v29 [class*="example"]>*,.v29 .tbl-scroll{min-width:0}
@media (max-width:640px){
  .v29 [class*="example"],.v29 [class*="split"],.v29 [class*="compare"],.v29 [style*="display:flex"],.v29 [style*="display: flex"],.v29 [style*="display:grid"],.v29 [style*="display: grid"]{flex-wrap:wrap;grid-template-columns:1fr!important}
  .sticky-cta-v2__inner{flex-wrap:wrap;gap:.6rem}
  .sticky-cta-v2{max-width:100vw}
}
/* a11y: badge contrast on the reverse-stress-test essay; definition lists keep their old layout */
.v29 .ez-rst-cl__badge{color:#0A1628;font-size:.65rem}
.v29 dl.case-meta,.v29 dl.contact-detail{margin:0}
/* v33 a11y: WCAG AA contrast on inherited badges, numerals and prose links (axe 4.10, 23 Oct 2026) */
.v29 .badge-priority--critical,.v29 .badge--critical{background:#C53030!important;color:#fff!important}
.v29 .badge-priority--high,.v29 .badge--high{background:#B7471A!important;color:#fff!important}
.v29 .badge-priority--medium,.v29 .badge--medium{background:#D69E2E!important;color:#0A1628!important;text-shadow:none!important}
.v29 .toc-num{color:var(--on-dark-3)!important}
.v29 .impact-block__desc{color:var(--on-dark-2)!important}
.v29 .resource-card__type,.v29 .resource-card__cta{color:var(--gold)!important}
.v29 p a:not([class]),.v29 li a:not([class]),.v29 dd a:not([class]),.v29 td a:not([class]),.v29 .callout a:not([class]){color:var(--accent-soft);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.16em;text-decoration-color:rgba(143,180,255,.55)}
.v29 p a:not([class]):hover,.v29 li a:not([class]):hover,.v29 dd a:not([class]):hover{text-decoration-color:currentColor}
main.v29 .toc-sidebar .toc-num,main.v29 .toc-num,main.v29 a .toc-num{color:var(--on-dark-3)!important}
main.v29 .resource-card .resource-card__type,main.v29 .resource-card .resource-card__cta{color:var(--gold)!important}
main.v29 p a,main.v29 li a,main.v29 dd a,main.v29 td a,main.v29 .callout a,main.v29 .disclosure-note a{text-decoration:underline!important;text-decoration-thickness:1px;text-underline-offset:.16em;text-decoration-color:rgba(143,180,255,.55)}
main.v29 p a.btn,main.v29 p a[class*="btn"],main.v29 li a.btn,main.v29 li a[class*="btn"],main.v29 li a[class*="card"],main.v29 p a[class*="card"]{text-decoration:none!important}
main.v29 .toc-num{opacity:1!important}
main.v29 .resource-card{opacity:1!important}
main.v29 :is(p,li,dd,td,div,span) > a[style*="color"]:not([class]){text-decoration:underline!important;text-decoration-thickness:1px;text-underline-offset:.16em;text-decoration-color:rgba(143,180,255,.55)}
main.v29 .principle__title{color:var(--accent-soft)!important}

main.v29 a.ez-block,main.v29 a.ez-block *{text-decoration:none!important}
