/* Indaba Foundation — giving and partnership blocks (Friends of Indaba, Impact Partnerships). Loaded only on pages that use
   them (src/site/blocks/giving.mjs). Tokens from site.css only. Mobile-first, 320–1920. Everything is visible and usable at
   rest and without JavaScript: the contribution illustration and panels follow the checked radio through :has(); giving.js
   adds .is-live and takes over. Motion is transform/opacity/stroke only and stops under prefers-reduced-motion. */

/* ------------------------------------------------------------------ shared */
.gv-legend{display:block;margin:0 0 .7rem;padding:0;font:400 var(--fs-eyebrow)/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--soft)}
.gv-help{margin:.6rem 0 0;font-size:.85rem;line-height:1.5;color:var(--soft)}
.gv-fs,.pb-fs{border:0;margin:0;padding:0;min-width:0}
.gv-o{display:none}
.gv.is-once .gv-m{display:none}
.gv.is-once .gv-o{display:revert}
.gv:not(.is-live):has([name=frequency][value=once]:checked) .gv-m{display:none}
.gv:not(.is-live):has([name=frequency][value=once]:checked) .gv-o{display:revert}

/* ------------------------------------------------------------------ contribution: head */
.gv-head{max-width:46rem;margin-bottom:var(--space-5)}
.gv-title{font-size:var(--fs-h2);letter-spacing:-.025em;line-height:1.04;max-width:18ch}
.gv-sub{margin:1rem 0 0;font:italic 400 clamp(1.35rem,1.1rem + .9vw,1.9rem)/1.25 var(--serif);color:var(--ink-strong)}
.gv-intro{margin:1.25rem 0 0;max-width:40rem;color:var(--ink)}

/* the form is one grid: on phones freq → pathways → illustration → amount and submit; wide screens put the illustration beside */
.gv-form{display:grid;gap:2rem;grid-template-areas:"freq" "tiers" "art" "rest"}
.gv-freq{grid-area:freq}.gv-tiers{grid-area:tiers}.gv-art{grid-area:art}.gv-rest{grid-area:rest}
@media (min-width:64rem){
  .gv-form{grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-rows:auto auto 1fr;column-gap:clamp(2.5rem,4.5vw,5rem);row-gap:2rem;grid-template-areas:"freq art" "tiers art" "rest art";align-items:start}
  .gv-art{position:sticky;top:calc(var(--bar-top) + var(--header) + 1.25rem)}
}

/* segmented frequency control */
.gv-seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:var(--surface);border-radius:var(--r)}
.gv-seg label{position:relative;display:block;cursor:pointer}
.gv-seg input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.gv-seg span{display:flex;align-items:center;justify-content:center;min-height:2.9rem;border-radius:var(--r-sm);font:500 .98rem/1.2 var(--sans);color:var(--ink-strong);transition:background-color .3s var(--ease-circ),color .3s var(--ease-circ)}
.gv-seg input:checked+span{background:var(--dark);color:var(--on-dark)}
.gv-seg input:focus-visible+span{outline:2px solid var(--ink-strong);outline-offset:2px}
.gv-seg label:hover input:not(:checked)+span{background:rgba(25,24,24,.05)}

/* pathways */
.gv-tierlist{display:grid;gap:.6rem}
.gv-tier{position:relative;display:grid;grid-template-columns:1.25rem minmax(0,1fr) auto;grid-template-areas:"mark amt year" "mark title title";align-items:baseline;gap:.2rem .9rem;padding:1rem 1.15rem 1.05rem;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--bg);cursor:pointer;transition:border-color .3s var(--ease-circ),background-color .3s var(--ease-circ),box-shadow .3s var(--ease-circ)}
.gv-tier:hover{border-color:var(--soft)}
.gv-tier input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.gv-tier__mark{grid-area:mark;align-self:center;width:1.1rem;height:1.1rem;border-radius:100vw;border:1px solid var(--soft);background:var(--surface-light);transition:border-color .25s var(--ease-circ),box-shadow .25s var(--ease-circ)}
.gv-tier__amt{grid-area:amt;display:flex;align-items:baseline;flex-wrap:wrap;gap:.1rem .5rem;min-width:0}
.gv-tier__fig{font:400 clamp(1.55rem,1.35rem + .6vw,1.9rem)/1.05 var(--serif);letter-spacing:-.01em;color:var(--ink-strong);font-variant-numeric:lining-nums}
.gv-per{font:400 .7rem/1.3 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--soft)}
.gv-tier__year{grid-area:year;font:400 .7rem/1.3 var(--mono);letter-spacing:.03em;color:var(--soft);white-space:nowrap;text-align:right}
.gv-tier__title{grid-area:title;font:400 .98rem/1.35 var(--sans);color:var(--ink)}
.gv-tier:has(input:checked){border-color:var(--ink-strong);background:var(--surface-light);box-shadow:0 14px 30px -24px rgba(30,28,27,.55)}
.gv-tier:has(input:checked) .gv-tier__mark{border-color:var(--ink-strong);box-shadow:inset 0 0 0 4px var(--surface-light),inset 0 0 0 10px var(--ink-strong)}
.gv-tier:has(input:checked) .gv-tier__title{color:var(--ink-strong);font-weight:500}
.gv-tier:has(input:focus-visible){outline:2px solid var(--ink-strong);outline-offset:3px}
.gv-tierlist li:last-child .gv-tier{border-style:dashed}
.gv-tierlist li:last-child .gv-tier__fig{font-size:clamp(1.3rem,1.15rem + .5vw,1.6rem)}
@media (max-width:26rem){.gv-tier{grid-template-areas:"mark amt amt" "mark title title" "mark year year"}.gv-tier__year{text-align:left;margin-top:.15rem}}

/* custom amount, direction, submit */
.gv-rest{display:grid;gap:1.6rem}
.gv-custom__field{display:flex;align-items:center;gap:.6rem;min-height:3.25rem;padding:0 1rem;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface-light);transition:border-color .25s var(--ease-circ)}
.gv-custom__field:focus-within{border-color:var(--ink-strong)}
.gv-custom__field span{font:400 .8rem/1 var(--mono);color:var(--soft)}
.gv-custom__field input{flex:1;min-width:0;min-height:3rem;border:0;padding:0;background:transparent;font:400 1.35rem/1.2 var(--serif);color:var(--ink-strong)}
.gv-custom__field input:focus{outline:none}
.gv-custom__field input[aria-invalid=true]{color:var(--warning-ink)}
.gv-desig select{appearance:none;-webkit-appearance:none;min-height:3.25rem;padding-right:2.75rem;background:var(--surface-light) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23191818' stroke-width='1.3'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 1.1rem center;cursor:pointer}
.gv-msg{margin:0;font-size:.92rem;line-height:1.5;color:var(--ink)}
.gv-msg:empty{display:none}
.gv-msg[data-state=error]{padding:.75rem 1rem;border-radius:var(--r-sm);background:var(--warning-bg);color:var(--warning-ink)}
.gv-msg[data-state=info]{padding:.75rem 1rem;border-radius:var(--r-sm);background:var(--surface)}
.gv-submit{width:100%;min-height:3.5rem;font-size:1.02rem}
.gv-submit[aria-busy=true]{opacity:.7;cursor:progress}
.gv-community{margin:-.6rem 0 0;font-size:.92rem;color:var(--soft)}
.gv-community .textlink{min-height:2.25rem;font-size:.95rem}
.gv-note{display:flex;gap:.6rem;margin:0;font-size:.82rem;line-height:1.5;color:var(--soft)}
.gv-note svg{flex:none;width:14px;height:14px;margin-top:.2rem}
.gv-note .textlink{display:inline;min-height:0;font-size:.82rem;font-weight:500;padding:0;border-bottom-color:var(--rule-strong)}
/* the community pathway is designed together, not bought online: the submit steps aside for its invitation */
.gv-cta-mode .gv-submit,.gv-cta-mode .gv-desig,.gv-cta-mode .gv-community{display:none}
.gv:not(.is-live):has(.gv-tierlist li:last-child input:checked) :is(.gv-submit,.gv-desig,.gv-community){display:none}

/* the illustration card: charcoal, inset */
.gv-art{display:grid;gap:1.5rem;padding:clamp(1rem,2.4vw,2rem);border-radius:var(--r-card);background:var(--dark);box-shadow:0 30px 60px -40px rgba(30,28,27,.7)}
.gv-fig{margin:0;--core:translate(-32px,-29px) scale(1.5);--world:scale(1);--o2:0;--o3:0;--o4:0;--o5:0}
.gv-stage{position:relative;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;background:radial-gradient(120% 90% at 50% 58%,color-mix(in srgb,var(--sage) 22%,transparent) 0%,transparent 62%),var(--dark-lift)}
.gv-cap{display:flex;align-items:center;gap:.55rem;margin-top:.85rem;font:400 .68rem/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--on-dark-soft)}
.gv-cap__dot{flex:none;width:6px;height:6px;border-radius:100vw;border:1px dashed var(--on-dark-soft)}
/* levels: one system, five states. Level vars drive the camera (core, world) and what has arrived (o2–o5). */
.gv-fig[data-level="2"],.gv:not(.is-live):has([data-lv="2"]:checked) .gv-fig{--core:translate(18px,12px) scale(1);--world:scale(1);--o2:1;--o3:0;--o4:0;--o5:0}
.gv-fig[data-level="3"],.gv:not(.is-live):has([data-lv="3"]:checked) .gv-fig{--core:translate(8px,0px) scale(.46);--world:scale(1);--o2:1;--o3:1;--o4:0;--o5:0}
.gv-fig[data-level="4"],.gv:not(.is-live):has([data-lv="4"]:checked) .gv-fig{--core:translate(8px,0px) scale(.46);--world:scale(1);--o2:1;--o3:1;--o4:1;--o5:0}
.gv-fig[data-level="5"],.gv:not(.is-live):has([data-lv="5"]:checked) .gv-fig{--core:translate(8px,0px) scale(.46);--world:scale(.62);--o2:1;--o3:1;--o4:1;--o5:1}
.gv:not(.is-live):has([data-lv="1"]:checked) .gv-fig{--core:translate(-32px,-29px) scale(1.5);--world:scale(1);--o2:0;--o3:0;--o4:0;--o5:0}
.gv-svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--on-dark);stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}
.gv-svg :not(.gv-line){vector-effect:non-scaling-stroke}
.gv-world{transform:var(--world);transform-origin:240px 180px;transition:transform 1.3s var(--ease)}
.gv-core{transform:var(--core);transform-origin:240px 175px;transition:transform 1.3s var(--ease)}
.gv-soft{stroke:var(--on-dark-soft);opacity:.5}
.gv-s{fill:var(--on-dark);stroke:none}
.gv-mn{fill:var(--mineral);stroke:none}
.gv-sage{stroke:var(--sage-deep)}
.gv-sagefill{fill:var(--sage-deep);stroke:none}
.gv-halo{fill:var(--sage);stroke:none;opacity:.2}
.gv-wrap{stroke-width:2.6}
.gv-l2{opacity:var(--o2);transition:opacity .9s var(--ease) .2s}
.gv-l3 .gv-room,.gv-fac{opacity:var(--o3);transition:opacity .7s var(--ease) calc(.35s + var(--i,0) * 90ms)}
.gv-l3 .gv-dash{stroke-dasharray:2 5;opacity:calc(var(--o3) * .7);transition:opacity .8s var(--ease) .9s}
.gv-line{stroke-dasharray:1 1;stroke-dashoffset:1;transition:stroke-dashoffset 1.5s var(--ease) .25s}
.gv-l3 .gv-line{stroke-dashoffset:calc(1 - var(--o3))}
.gv-l5 .gv-line{stroke-dashoffset:calc(1 - var(--o5))}
.gv-m{opacity:var(--o4);transition:opacity .5s var(--ease) calc(var(--i,0) * 24ms)}
.gv-m>g{transform:scale(calc(.4 + var(--o4) * .6));transform-box:fill-box;transform-origin:center;transition:transform .6s var(--ease) calc(var(--i,0) * 24ms)}
.gv-l5 :is(.gv-c,.gv-lead){opacity:var(--o5);transition:opacity .7s var(--ease) calc(.5s + var(--i,0) * 80ms)}
.gv-l5>.gv-soft{opacity:calc(var(--o5) * .5);transition:opacity .9s var(--ease) .3s,stroke-dashoffset 1.6s var(--ease) .3s}
@media (prefers-reduced-motion:no-preference){
  .gv-halo{animation:gv-breathe 6s ease-in-out infinite}
  @keyframes gv-breathe{50%{opacity:.3}}
}

/* panels: what the chosen pathway helps make possible */
.gv-panels{display:grid;gap:2rem}
.gv-panel+.gv-panel{padding-top:2rem;border-top:1px solid var(--rule-on-dark)}
@supports selector(:has(*)){
  .gv:not(.is-live) .gv-panel{display:none}
  .gv:not(.is-live) .gv-panel+.gv-panel{padding-top:0;border:0}
  .gv:not(.is-live):has([data-lv="1"]:checked) .gv-panel[data-lv="1"],.gv:not(.is-live):has([data-lv="2"]:checked) .gv-panel[data-lv="2"],.gv:not(.is-live):has([data-lv="3"]:checked) .gv-panel[data-lv="3"],.gv:not(.is-live):has([data-lv="4"]:checked) .gv-panel[data-lv="4"],.gv:not(.is-live):has([data-lv="5"]:checked) .gv-panel[data-lv="5"]{display:block}
}
.gv.is-live .gv-panel{display:none}
.gv.is-live .gv-panel.is-active{display:block;animation:gv-in .6s var(--ease) both}
@keyframes gv-in{from{opacity:0;translate:0 8px}}
.gv-panel__kicker{margin:0 0 .5rem;font:400 .7rem/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--on-dark-soft)}
.gv-panel__title{font-size:clamp(1.55rem,1.3rem + .9vw,2.1rem);line-height:1.1;letter-spacing:-.015em;max-width:24ch}
.gv-dl{display:grid;gap:0;margin:1.4rem 0 0}
.gv-dl>div{display:grid;gap:.3rem;padding:.85rem 0;border-top:1px solid var(--rule-on-dark)}
.gv-dl dt{font:400 .66rem/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--on-dark-soft)}
.gv-dl dd{margin:0;font-size:.95rem;line-height:1.55;color:var(--on-dark)}
.gv-dl dd strong{font-weight:500}
@media (min-width:40rem){.gv-dl>div{grid-template-columns:10.5rem minmax(0,1fr);gap:1.25rem}.gv-dl dt{padding-top:.2rem}}
.gv-math{display:grid;gap:.75rem;justify-items:start;margin-top:.5rem;padding:1rem 1.1rem;border-radius:var(--r-sm);background:var(--dark-lift)}
.gv-math p:not(.flag){margin:0;font-size:.9rem;line-height:1.55;color:var(--on-dark-soft)}
.gv-math .flag{margin:0}
.gv-panel__cta{margin:1.25rem 0 0}

/* ------------------------------------------------------------------ threads: a typographic index */
.th{display:grid;gap:var(--space-4)}
@media (min-width:60rem){.th{grid-template-columns:minmax(0,5fr) minmax(0,7fr);column-gap:clamp(3rem,6vw,7rem);align-items:start}.th-head{position:sticky;top:calc(var(--bar-top) + var(--header) + 2rem)}}
.th-title{font-size:var(--fs-h2);letter-spacing:-.025em;line-height:1.05;max-width:16ch}
.th-intro{margin:1.25rem 0 0;font-size:var(--fs-lede);line-height:1.5;color:var(--ink);max-width:32rem}
.th-media{margin-top:var(--space-4)}
.th-list{counter-reset:th;border-bottom:1px solid var(--rule-strong)}
.th-item{display:grid;grid-template-columns:2.5rem minmax(0,1fr);gap:1rem;padding:1.35rem 0;border-top:1px solid var(--rule-strong)}
.th-num{font:400 .72rem/2.2 var(--mono);letter-spacing:.04em;color:var(--soft)}
.th-text{display:grid;gap:.35rem}
.th-name{font:400 clamp(1.45rem,1.25rem + .7vw,1.85rem)/1.12 var(--serif);letter-spacing:-.01em;color:var(--ink-strong)}
.th-desc{font-size:.98rem;line-height:1.55;color:var(--ink);max-width:36rem}
.th-statement{margin:var(--space-4) 0 0;font:italic 400 clamp(1.4rem,1.15rem + 1vw,2rem)/1.3 var(--serif);color:var(--ink-strong);max-width:30ch}
.th-note{margin:1rem 0 0;font-size:.88rem;color:var(--soft);max-width:40rem}
/* contexts: nine names in a ruled grid, no descriptions */
.th--contexts{grid-template-columns:none}
.th--contexts .th-head{position:static;max-width:46rem}
.th--contexts .th-list{display:grid;border-bottom:0}
@media (min-width:40rem){.th--contexts .th-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2rem}}
@media (min-width:64rem){.th--contexts .th-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
.th--contexts .th-item{align-items:baseline;padding:1.25rem 0 1.4rem}
.th--contexts .th-name{font-size:clamp(1.35rem,1.2rem + .5vw,1.7rem)}
.th--contexts .th-statement{max-width:36ch}
.blk--threads .blk__actions{margin-top:var(--space-3)}

/* ------------------------------------------------------------------ ladder: the framework on one scale */
.ld{--ld-cols:3rem minmax(0,1fr);display:grid;gap:var(--space-4)}
@media (min-width:64rem){.ld{--ld-cols:5rem minmax(14rem,21rem) minmax(0,1fr)}}
.ld-head{max-width:46rem;display:grid;gap:1rem;justify-items:start}
.ld-title{font-size:var(--fs-h2);letter-spacing:-.025em;line-height:1.05;max-width:18ch}
.ld-intro{margin:0;font-size:var(--fs-lede);line-height:1.5;color:var(--ink)}
.ld-axis{display:none}
.ld-rung{display:grid;grid-template-columns:var(--ld-cols);column-gap:clamp(1rem,2.5vw,2.5rem);row-gap:1rem;padding:1.75rem 0;border-top:1px solid var(--rule-strong)}
.ld-rungs{border-bottom:1px solid var(--rule-strong)}
.ld-key{grid-row:span 3;margin:0;font:300 clamp(2.6rem,2rem + 2vw,4.25rem)/.85 var(--serif);color:var(--soft)}
.ld-main{display:grid;gap:.35rem;align-content:start}
.ld-name{font-size:clamp(1.45rem,1.25rem + .7vw,1.9rem);line-height:1.1;letter-spacing:-.01em}
.ld-range{margin:0;font:400 .74rem/1.4 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-strong)}
.ld-sum{margin:.2rem 0 0;font-size:.95rem;line-height:1.5;color:var(--ink)}
.ld-bar{position:relative;height:12px;align-self:center}
.ld-bar::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--rule-strong)}
.ld-bar span{position:absolute;top:0;bottom:0;left:calc(var(--x1) * 1%);width:calc((var(--x2) - var(--x1)) * 1%);min-width:12px;border-radius:100vw;background:var(--sage-deep)}
.ld-rung--open .ld-bar span{background:linear-gradient(90deg,var(--sage-deep) 0%,var(--sage-deep) 35%,color-mix(in srgb,var(--sage-deep) 0%,transparent) 100%)}
.ld-comp{min-width:0}
.ld-comp__label{margin:0 0 .4rem;font:400 .66rem/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--soft)}
.ld-tags{display:flex;flex-wrap:wrap;gap:.3rem 1.3rem;font-size:.95rem;line-height:1.55;color:var(--ink-strong)}
.ld-tags li{display:inline-flex;align-items:baseline;gap:.5rem}
.ld-tags li::before{content:"";flex:none;width:5px;height:5px;border-radius:100vw;background:var(--sage);translate:0 -.15em}
.ld-rung:nth-child(1) .ld-key{color:color-mix(in srgb,var(--ink-strong) 45%,var(--bg-depth))}
.ld-rung:nth-child(5) .ld-key{color:var(--ink-strong)}
@media (min-width:64rem){
  .ld-axis{display:grid;grid-template-columns:var(--ld-cols);column-gap:clamp(1rem,2.5vw,2.5rem);align-items:end}
  .ld-axis__label{grid-column:2;margin:0;font:400 .66rem/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--soft)}
  .ld-axis ol{grid-column:3;position:relative;height:1.6rem}
  .ld-axis li{position:absolute;left:calc(var(--x) * 1%);bottom:0;translate:-50% 0;font:400 .68rem/1 var(--mono);letter-spacing:.03em;color:var(--soft);white-space:nowrap;padding-bottom:.55rem}
  .ld-axis li::after{content:"";position:absolute;left:50%;bottom:0;width:1px;height:.4rem;background:var(--rule-strong)}
  .ld-axis li:first-child{translate:0 0}.ld-axis li:first-child::after{left:0}
  .ld-axis li:last-child{translate:-100% 0}.ld-axis li:last-child::after{left:auto;right:0}
  .ld-rung{grid-template-rows:auto 1fr}
  .ld-key{grid-row:1/3}.ld-main{grid-row:1/3}
  .ld-bar{grid-column:3;grid-row:1;margin-top:.55rem}
  .ld-comp{grid-column:3;grid-row:2}
}
@media (max-width:63.99rem){.ld-bar,.ld-comp{grid-column:2}}
.ld-note{margin:0;font-size:.9rem;color:var(--soft);max-width:46rem}

/* ------------------------------------------------------------------ journey: phases of steps on one line */
.jr{display:grid;gap:0}
.jr-title-main{font-size:var(--fs-h2);letter-spacing:-.025em;line-height:1.05;max-width:20ch}
.jr-intro{margin:1rem 0 0;font-size:var(--fs-lede);line-height:1.5;max-width:40rem}
.jr-phases{display:grid;gap:2.5rem;margin-top:var(--space-5)}
.jr-phase__name{margin:0 0 1.25rem;font:400 var(--fs-eyebrow)/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--soft)}
.jr-steps{display:grid;gap:0}
.jr-step{position:relative;display:grid;align-content:start;gap:.4rem;padding:0 0 1.75rem 2rem}
.jr-step::before{content:"";position:absolute;left:4px;top:.5rem;bottom:-.5rem;width:1px;background:var(--rule-strong);transform-origin:top;transition:transform .7s var(--ease) calc(var(--i,1) * 110ms)}
.jr-dot{position:absolute;left:0;top:.3rem;width:9px;height:9px;border-radius:100vw;background:var(--sage);box-shadow:0 0 0 4px var(--bg);transition:transform .5s var(--ease) calc(var(--i,1) * 110ms + 150ms)}
.jr-num{font:400 .7rem/1.4 var(--mono);letter-spacing:.04em;color:var(--soft)}
.jr-title{font-size:clamp(1.35rem,1.2rem + .5vw,1.6rem);line-height:1.12;letter-spacing:-.01em}
.jr-body{margin:0;font-size:.92rem;line-height:1.5;color:var(--ink)}
.jr-phase:last-child .jr-step:last-child::before{display:none}
@media (min-width:48rem){.jr-phases{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:3rem}}
@media (min-width:48rem){
  .jr-phases{column-gap:0;row-gap:3rem}
  .jr-steps{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}
  .jr-step{padding:1.4rem 1.5rem 0 0}
  .jr-step::before{left:0;right:0;top:0;bottom:auto;width:auto;height:1px;transform-origin:left}
  .jr-dot{top:-4px;box-shadow:0 0 0 5px var(--bg)}
  .jr-phase:last-child .jr-step:last-child::before{display:block;right:1.5rem}
}
@media (min-width:100rem){.jr-phases{grid-template-columns:3fr 2fr 2fr 1.1fr}.jr-title{font-size:1.3rem}.jr-step{padding-right:1.1rem}}
.jr-loop{margin:var(--space-4) 0 1rem;font:italic 400 1.25rem/1.4 var(--serif);color:var(--ink-strong)}
.jr-loop span{font-style:normal;color:var(--sage-deep);margin-right:.25rem}
.jr>.badge{justify-self:start}
html.motion .jr.is-waiting .jr-step::before{transform:scale(1,0)}
@media (min-width:48rem){html.motion .jr.is-waiting .jr-step::before{transform:scale(0,1)}}
html.motion .jr.is-waiting .jr-dot{transform:scale(0)}

/* ------------------------------------------------------------------ builder (charcoal) */
.pb{display:grid;gap:var(--space-4)}
.pb-title{font-size:var(--fs-h2);letter-spacing:-.025em;line-height:1.05;max-width:18ch}
.pb-intro{margin:1rem 0 0;font-size:var(--fs-lede);line-height:1.5;max-width:40rem;color:var(--on-dark-soft)}
.pb-static{display:grid;gap:1rem;max-width:44rem;color:var(--on-dark)}
.pb-live{display:grid;gap:2.5rem}
@media (min-width:64rem){.pb-live{grid-template-columns:minmax(0,4fr) minmax(0,8fr);column-gap:clamp(2rem,4vw,4rem);align-items:start}}
.pb-form{display:grid;gap:1.75rem}
.pb-opts{display:flex;flex-wrap:wrap;gap:.5rem}
.pb-fs--stack .pb-opts{display:grid}
.pb-opt{position:relative;display:inline-flex;cursor:pointer}
.pb-opt input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.pb-opt span{display:inline-flex;align-items:center;min-height:2.75rem;padding:.55rem 1rem;border:1px solid var(--rule-on-dark);border-radius:100vw;font:400 .95rem/1.25 var(--sans);color:var(--on-dark);transition:background-color .25s var(--ease-circ),color .25s var(--ease-circ),border-color .25s var(--ease-circ)}
.pb-fs--stack .pb-opt span{width:100%;border-radius:var(--r-sm)}
.pb-opt:hover span{border-color:var(--on-dark-soft)}
.pb-opt input:checked+span{background:var(--on-dark);color:var(--dark);border-color:var(--on-dark)}
.pb-opt input:focus-visible+span{outline:2px solid var(--on-dark);outline-offset:2px}
.pb-custom{display:inline-flex;align-items:center;gap:.5rem;min-height:2.75rem;padding:0 .9rem;border:1px solid var(--on-dark-soft);border-radius:100vw}
.pb-custom span{font:400 .75rem/1 var(--mono);color:var(--on-dark-soft)}
.pb-custom input{width:8.5rem;min-height:2.5rem;border:0;padding:0;background:transparent;color:var(--on-dark);font:400 1rem/1.2 var(--sans)}
.pb-custom input:focus{outline:none}
.pb-custom:focus-within{border-color:var(--on-dark)}
.pb-out{padding:clamp(1.25rem,3vw,2.5rem);border-radius:var(--r-card);background:var(--dark-lift)}
.pb-out__kicker{margin:0 0 .75rem;font:400 .7rem/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--on-dark-soft)}
.pb-out__title{display:flex;align-items:baseline;gap:.9rem;font-size:clamp(1.8rem,1.4rem + 1.4vw,2.6rem);line-height:1.05;letter-spacing:-.02em}
.pb-out__key{flex:none;font:300 1.3em/1 var(--serif);color:var(--sage-deep)}
.pb-out__lede{margin:.6rem 0 0;color:var(--on-dark-soft);max-width:40rem}
.pb-out__fit{margin:1rem 0 0;padding:.75rem 1rem;border-left:2px solid var(--sage-deep);font-size:.9rem;color:var(--on-dark)}
.pb-grid{display:grid;gap:0;margin-top:1.75rem}
@media (min-width:44rem){.pb-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2.25rem}}
.pb-sec{padding:1.2rem 0 1.4rem;border-top:1px solid var(--rule-on-dark)}
.pb-sec__label{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 .75rem;font:400 .68rem/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--on-dark-soft)}
.pb-sec__label .badge{font-size:.6rem;padding:.2rem .55rem}
.pb-list{display:grid;gap:.4rem;font-size:.92rem;line-height:1.45;color:var(--on-dark)}
.pb-list li{position:relative;padding-left:1rem}
.pb-list li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:1px;background:var(--on-dark-soft)}
.pb-scale{margin:0;font:400 clamp(1.3rem,1.15rem + .6vw,1.65rem)/1.25 var(--serif);color:var(--on-dark)}
.pb-assume{margin:.6rem 0 0;font-size:.8rem;line-height:1.5;color:var(--on-dark-soft)}
.pb-extra{margin:.6rem 0 0;font-size:.88rem;color:var(--on-dark-soft)}
.pb-ms{display:grid;gap:.55rem;font-size:.92rem;line-height:1.45;color:var(--on-dark)}
.pb-ms span{display:block;font:400 .66rem/1.4 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--on-dark-soft)}
.pb-geo{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:1.25rem 0 0;padding-top:1.1rem;border-top:1px solid var(--rule-on-dark);font-size:.9rem;color:var(--on-dark)}
.pb-disclaimer{margin:1.25rem 0 0;font-size:.85rem;color:var(--on-dark-soft)}
.pb-actions{margin-top:1.25rem}
.pb .flag{max-width:none}

/* ------------------------------------------------------------------ CSI: outcomes beside the eligibility note */
.csi{display:grid;gap:var(--space-4)}
@media (min-width:64rem){.csi{grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:clamp(2.5rem,5vw,5.5rem);align-items:start}}
.csi-title{font-size:var(--fs-h2);letter-spacing:-.025em;line-height:1.05;max-width:21ch}
.csi-intro{margin:1.25rem 0 0;font-size:var(--fs-lede);line-height:1.5;max-width:36rem}
.csi-outcomes{display:grid;gap:0;margin-top:var(--space-4)}
@media (min-width:40rem){.csi-outcomes{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2rem}}
.csi-outcomes li{display:grid;gap:.3rem;padding:1.1rem 0 1.3rem;border-top:1px solid var(--rule-strong)}
.csi-o__title{font:400 clamp(1.25rem,1.15rem + .4vw,1.45rem)/1.15 var(--serif);color:var(--ink-strong)}
.csi-o__body{font-size:.92rem;line-height:1.5;color:var(--ink)}
.csi-note{padding:clamp(1.4rem,3vw,2.25rem);border-radius:var(--r-card);background:var(--surface)}
.csi-note__kicker{display:flex;align-items:center;gap:.6rem;margin:0 0 1.1rem;font:400 var(--fs-eyebrow)/1.4 var(--mono);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--ink-strong)}
.csi-note__kicker::before{content:"";width:8px;height:8px;border-radius:100vw;border:1.5px solid var(--ink-strong)}
.csi-points{counter-reset:csi;display:grid;gap:1rem}
.csi-points li{counter-increment:csi;position:relative;padding-left:2.1rem;font-size:.93rem;line-height:1.55;color:var(--ink)}
.csi-points li::before{content:counter(csi,decimal-leading-zero);position:absolute;left:0;top:.15rem;font:400 .7rem/1.4 var(--mono);color:var(--soft)}
.csi-note__foot{margin:1.25rem 0 0;padding-top:1rem;border-top:1px solid var(--rule-strong);font-size:.88rem;color:var(--soft)}
.csi-note__cta{margin:1.25rem 0 0}
@media (min-width:64rem){.csi-note{position:sticky;top:calc(var(--bar-top) + var(--header) + 1.5rem)}}

/* ------------------------------------------------------------------ ledger: exists / agreed / being built */
.lg{display:grid;gap:0}
.lg-title{font-size:var(--fs-h2);letter-spacing:-.025em;line-height:1.05;max-width:20ch}
.lg-intro{margin:1rem 0 0;font-size:1.02rem;line-height:1.6;max-width:46rem;color:var(--ink)}
.lg-cols{display:grid;gap:2.75rem;margin-top:var(--space-5)}
@media (min-width:56rem){.lg-cols{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:clamp(1.75rem,3vw,3rem)}}
.lg-col{padding-top:1.25rem;border-top:3px solid var(--sage)}
.lg-col--proposal{border-top-color:var(--ink-strong)}
.lg-col--future{border-top:2px dashed var(--soft)}
.lg-col__head{display:grid;gap:.6rem;justify-items:start;margin-bottom:1rem}
.lg-col__title{font-size:clamp(1.5rem,1.3rem + .6vw,1.9rem);line-height:1.1}
.lg-col__intro{margin:0;font-size:.88rem;color:var(--soft)}
.lg-items li{display:grid;gap:.25rem;justify-items:start;padding:.9rem 0;border-top:1px solid var(--rule)}
.lg-item__title{font:500 .98rem/1.35 var(--sans);color:var(--ink-strong)}
.lg-item__body{font-size:.9rem;line-height:1.5;color:var(--ink)}
.lg-items .badge{margin-top:.35rem;font-size:.6rem;padding:.2rem .55rem}
.lg-note{margin:var(--space-4) 0 0;font-size:.9rem;color:var(--soft);max-width:46rem}

/* ------------------------------------------------------------------ reduced motion: states change at once */
@media (prefers-reduced-motion:reduce){
  .gv-world,.gv-core,.gv-l2,.gv-room,.gv-fac,.gv-m,.gv-m>g,.gv-line,.gv-c,.gv-lead,.gv-l5>.gv-soft,.gv-dash,.jr-step::before,.jr-dot{transition:none!important}
  .gv.is-live .gv-panel.is-active{animation:none}
}
@media print{.gv-art,.pb-live{display:none}.pb-static{display:grid!important}}

/* control system (site.css): 10px actions and fields */
.pb-opt span,.pb-custom{border-radius:var(--r-ctl,10px)}
.gv-seg,.gv-custom__field{border-radius:var(--r-ctl,10px)}
.gv-seg span{border-radius:var(--r-seg,7px)}
