/* gc-blocks.css — the generated hub blocks (dev-tools/page-upgrade/build_hub_blocks.py): closing soon · new and changed · who won.
   Sits on top of the shared section kit (gc-sections.css, .gcs-*); only what the kit does not have lives here. Namespace .gcb-*. */
.gcb{margin:2.4em 0}
.gcb-strip{display:block;width:100%;height:46px;margin:.6em 0 0;overflow:visible}
.gcb-strip .ax{stroke:var(--line,#e3e6e1);stroke-width:2;vector-effect:non-scaling-stroke}
.gcb-strip circle{vector-effect:non-scaling-stroke;stroke-width:2}
.gcb-strip .loc{fill:var(--a,#0f5c47);stroke:var(--a,#0f5c47)}
.gcb-strip .nat{fill:color-mix(in srgb,var(--a,#0f5c47) 38%,#fff);stroke:color-mix(in srgb,var(--a,#0f5c47) 38%,#fff)}   /* filled, lighter: a hollow ring read as the numeral 0 at phone size */
.gcb-strip-ax{display:grid;grid-template-columns:repeat(7,1fr);font-size:.72em;color:var(--mut,#5f6b78);margin:0 0 1em;font-variant-numeric:tabular-nums}
.gcb-strip-ax span{white-space:nowrap;transform:translateX(-50%);margin-left:calc(100%/12)}
.gcb-strip-ax span:first-child{transform:none;margin-left:0}.gcb-strip-ax span:last-child{text-align:right;transform:none;margin-left:0}
.gcb-key{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:.78em;color:var(--mut,#5f6b78);margin:0 0 .4em}
.gcb-key i{display:inline-block;width:10px;height:10px;border-radius:50%;background:color-mix(in srgb,var(--a,#0f5c47) 38%,#fff);margin-right:5px;vertical-align:-1px}
.gcb-key i.loc{background:var(--a,#0f5c47)}
.gcb-note{font-size:.88em;color:var(--mut,#5f6b78)}
.gcb .gcs-timeline li>a{font-weight:600}
.gcb tr[hidden],.gcb circle[hidden]{display:none}
.gcb time{white-space:nowrap;font-variant-numeric:tabular-nums}
/* block tables: a real <table> for crawlers; on phones each row becomes two compact lines (name, then the facts) instead of a stacked card */
.gcb-t td:first-child{min-width:38%}
.gcb-t td:empty::after{content:"\2014";color:var(--line,#e3e6e1)}
.gcb-bar{display:inline-block;vertical-align:middle;width:min(160px,40%);height:8px;border-radius:4px;background:var(--soft,#f4f6f2);margin-right:10px;position:relative;overflow:hidden}
.gcb-bar::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--p,0%);background:var(--a,#0f5c47);border-radius:4px}
.gcb-won td b{font-variant-numeric:tabular-nums}
@media (max-width:600px){
  .gcb-t thead{display:none}
  .gcb-t,.gcb-t tbody{display:block}
  .gcb-t tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 0;padding:11px 12px;border-bottom:1px solid var(--line,#e3e6e1)}
  .gcb-t tr:last-child{border-bottom:0}
  .gcb-t td,.gcb-t td:last-child{display:block;border:0;padding:0;font-size:.86em;color:var(--mut,#5f6b78);white-space:normal}
  .gcb-t td:first-child{flex:1 0 100%;font-size:1em;color:var(--ink,#1c2430);margin-bottom:2px}
  .gcb-t td:empty{display:none}
  .gcb-t td+td+td:not(:empty)::before{content:"\00b7";margin:0 7px}
  .gcb-t td[data-label="Closes"]::before{content:"Closes "}
  .gcb-t td[data-u]::after{content:" " attr(data-u)}
  .gcb-bar{width:44px;margin-right:7px}
}
/* kit additions that ride with the sprint (kept here so gc-sections.css is not edited while another branch changes it):
   several results in one calculator, and 44px inputs */
.gcs-calc .gcs-outs{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.gcs-calc input,.gcs-calc select{min-height:44px}

/* ==== gch- : the hub-page hero system (2026-10-27; round 3 after blind review: the chooser replaces the glance) ====
   One hero for every hub page: a paper sheet whose edges sit on the page's own body column (set --gch-max to that column),
   the H1 and ONE primary button as the focal point, one calm facts line, and the page's own chooser. Additive: nothing above
   this block is touched. Load fonts on the page: Fraunces (ital, opsz) + DM Sans.
   Slots (h1, .gch-claim and a.gch-go are required):
     header.gch            the root. It holds the H1, so the frozen-message checks read this element.
       .gch-main           h1 (words frozen) · p.gch-claim (the claim sentence(s), word for word) · p.gch-fact (ONE line of 1-2
                           figures, <b> on the figures, never a figure the claim already states, no dates)
         .gch-act          a.gch-go = THE button (quiz / roadmap route, keep its analytics attributes); optional a.gch-tool = a
                           quiet text link (only for a destination the chooser does not already reach)
       .gch-pick           THE CHOOSER, the page's own question: p.gch-pick-q (a plain question in the reader's words, "What are
                           you buying?") + .gch-pick-chips of 3-5 a.gch-chip + optional p.gch-pick-note (one short line).
                           Chooser rules: each chip is <a href="#tool-section" data-pick="CSS selector of the tool's own chip">;
                           a small inline script on the page (search "gch-pick" in the page) clicks that chip unless it is
                           already pressed, then scrolls to the chip's group, so the reader lands on the tool with the choice
                           made. Without JS it is a plain anchor to the tool. A chip with no data-pick is a plain jump (use it
                           when another section answers that choice better). Chip words are short and the reader's, not the
                           funder's; the question names the PROJECT, never repeats the quiz widget's question; chips are auto-width
                           pills that wrap as a row; the LAST chip is a way out ("Not sure it counts", "Something else") to a
                           section or page that helps the reader who fits none; in-page jumps end in &darr;, other pages in &rarr;. The quiz button stays the primary action; the chooser never competes in colour.
       .gch-pair           comparison pages only: two .gch-side cards (h2 or b name, .gch-fig figure, p best-for), placed between
                           the claim and the actions; the chooser still follows.
       .verdict-bar        nav-v7.js appends its quiz bar to the first [class*="-hero"]: add class gch-hero to keep it (restyled
                           as one quiet text line with an inline link at the foot of the sheet), or data-no-verdict-bar on the header where the button already is the quiz.
   Variants: .gch (guide) · .gch--answer (topic guide: the claim's first <strong> is the answer line; any long tail goes to the
   answer card under the hero, never inside it) · .gch--compare (adds .gch-pair).
   Under the hero: .gch-answer restyles a Quick Answer box (h2 + first sentence, the tail in details.gch-more).
   Arrows: written as "last word&nbsp;<span aria-hidden>&rarr;</span>", the span display:inline (an inline-block may break after
   the nbsp), so an arrow can never sit on a line alone; the button
   centres text and arrow together. Phones (<600px): chooser chips become full-width rows. Disclosures: the whole summary row is the tap target (>=44px).
   Page knobs: --gch-max (the body column width), --gch-gutter, --gch-top.
   Never: eyebrow labels, stat-tile grids, dated badges, dot-separated meta, a second filled button. Light mode only. */
.gch{--gch-ink:#1b2a22;--gch-deep:#1f4a37;--gch-forest:#2D6A4F;--gch-sienna:#C4532B;--gch-text:#3b3731;--gch-mut:#6b6459;--gch-paper:#fffcf6;--gch-edge:#e8dfcd;--gch-sage:#edf1e8;--gch-serif:'Fraunces',Georgia,'Times New Roman',serif;--gch-sans:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  box-sizing:border-box;display:block;width:calc(100% - 2 * var(--gch-gutter,0px));max-width:var(--gch-max,1120px);margin:var(--gch-top,8px) auto 44px;padding:52px 40px 40px;
  background:var(--gch-paper);border:1px solid var(--gch-edge);border-radius:20px;box-shadow:0 1px 2px rgba(31,74,55,.05),0 30px 60px -44px rgba(31,74,55,.38);
  font-family:var(--gch-sans);color:var(--gch-text);text-align:left}
.gch *,.gch *::before,.gch *::after{box-sizing:border-box}
.gch-main{min-width:0}
.gch h1{font-family:var(--gch-serif);font-optical-sizing:auto;font-weight:600;font-style:normal;font-size:clamp(2.2rem,1.05rem + 2.45vw,3.2rem);line-height:1.05;letter-spacing:-.024em;color:var(--gch-ink);margin:0 0 22px;padding:0;max-width:22ch;text-wrap:balance}
.gch h1 em{font-style:italic;font-weight:500;color:var(--gch-forest)}
.gch .gch-claim{font-size:1.1875rem;line-height:1.55;color:var(--gch-text);margin:0 0 14px;max-width:58ch}
.gch .gch-claim strong{font-weight:600;color:var(--gch-ink)}
.gch .gch-fact{margin:0 0 30px;max-width:none;font-size:.9375rem;line-height:1.5;color:var(--gch-mut)}
.gch .gch-fact b{font:inherit;font-weight:600;color:var(--gch-ink)}
.gch-act{display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px}
.gch a.gch-go{display:inline-block;min-height:56px;margin:0;padding:16px 28px;border:0;border-radius:12px;background:var(--gch-sienna);color:#fff;font:600 1.0625rem/1.5rem var(--gch-sans);letter-spacing:0;text-align:center;text-decoration:none;box-shadow:0 1px 0 rgba(0,0,0,.08),0 12px 24px -14px rgba(196,83,43,.75);transition:background-color .2s ease,transform .2s ease}
.gch a.gch-go:hover{background:#a9431f;color:#fff;transform:translateY(-1px)}
.gch a.gch-go>span[aria-hidden]{display:inline;position:relative;left:0;margin-left:.15em;transition:left .2s ease}
.gch a.gch-go:hover>span[aria-hidden]{left:2px}
.gch a.gch-go:focus-visible,.gch a.gch-tool:focus-visible,.gch a.gch-chip:focus-visible,.gch-more>summary:focus-visible{outline:3px solid var(--gch-forest,#2D6A4F);outline-offset:3px}
.gch a.gch-tool{display:inline-block;min-height:44px;max-width:50ch;padding:10px 0;color:var(--gch-deep);font-size:1rem;font-weight:600;line-height:1.4;text-decoration:underline;text-decoration-color:rgba(45,106,79,.35);text-decoration-thickness:1.5px;text-underline-offset:5px}
.gch a.gch-tool:hover{text-decoration-color:var(--gch-forest)}
.gch a.gch-tool>span[aria-hidden]{display:inline;margin-left:.1em;color:var(--gch-forest)}
/* the chooser */
.gch-pick{margin:34px 0 0;padding:24px 24px 22px;border-radius:16px;
  background:var(--gch-sage) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .12 0 0 0 0 .29 0 0 0 0 .22 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.gch .gch-pick-q{margin:0 0 14px;font:italic 500 1.3125rem/1.3 var(--gch-serif);color:var(--gch-deep)}
.gch-pick-chips{display:flex;flex-wrap:wrap;gap:8px}
.gch a.gch-chip{display:inline-flex;align-items:center;max-width:100%;min-height:46px;padding:10px 18px;background:#fff;border:1px solid var(--gch-edge);border-radius:999px;color:var(--gch-ink);font-size:.96875rem;font-weight:500;line-height:1.3;text-decoration:none;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}
.gch a.gch-chip span[aria-hidden]{display:inline;position:relative;left:0;margin-left:.15em;color:var(--gch-forest);transition:left .2s ease}
.gch a.gch-chip:hover{border-color:var(--gch-forest);box-shadow:0 6px 16px -12px rgba(31,74,55,.6)}
.gch a.gch-chip:hover span[aria-hidden]{left:3px}
.gch .gch-pick-note{margin:12px 0 0;font-size:.875rem;line-height:1.45;color:var(--gch-mut)}
/* disclosures: the whole row is the tap target */
.gch-more{max-width:62ch;margin:24px 0 0}
.gch-more>summary{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:4px 0;cursor:pointer;list-style:none;font-weight:600;color:var(--gch-deep,#1f4a37)}
.gch-more>summary::-webkit-details-marker{display:none}
.gch-more>summary::after{content:"+";display:inline-grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;background:var(--gch-sage,#edf1e8);color:var(--gch-forest,#2D6A4F);font-weight:600;line-height:1}
.gch-more[open]>summary::after{content:"\2212"}
.gch-more>p{margin:6px 0 0;line-height:1.6}
/* comparison pages */
.gch-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:4px 0 30px}
.gch-side{padding:22px 24px;border-radius:14px;background:var(--gch-sage)}
.gch-side+.gch-side{background:#f6efe3}
.gch-side>h2,.gch-side>b{display:block;margin:0 0 6px;font:600 1.25rem/1.25 var(--gch-serif);color:var(--gch-ink)}
.gch-side .gch-fig{display:block;margin:0 0 6px;font:600 1.75rem/1.1 var(--gch-serif);color:var(--gch-deep)}
.gch-side p{margin:0;font-size:.95rem;line-height:1.5}
/* the direct-answer variant */
.gch--answer h1{font-size:clamp(2rem,1.05rem + 2vw,2.85rem);line-height:1.08;max-width:24ch}
.gch--answer .gch-claim>strong:first-child{display:block;margin:0 0 10px;font-size:1.375rem;line-height:1.3;font-weight:700;color:var(--gch-deep)}
/* nav-v7's quiz bar, when a page keeps it (class gch-hero): the sheet's quiet footer row */
.gch>.verdict-bar{display:block;max-width:none;margin:22px 0 0;padding:0;background:none;border:0;border-radius:0;font-size:.9375rem;line-height:1.6;color:var(--gch-mut)}
.gch>.verdict-bar .verdict-bar__text{display:inline;font-size:inherit;line-height:inherit;color:inherit;text-align:left}
.gch>.verdict-bar .verdict-bar__text strong{color:var(--gch-text);font-weight:600}
.gch>.verdict-bar .verdict-bar__cta{display:inline;margin-left:.35em;padding:12px 0;border:0;border-radius:0;background:none;color:var(--gch-deep);font-size:inherit;font-weight:600;white-space:nowrap;text-decoration:underline;text-decoration-color:rgba(45,106,79,.35);text-decoration-thickness:1.5px;text-underline-offset:4px;filter:none;transform:none}
.gch>.verdict-bar .verdict-bar__cta:hover{color:var(--gch-forest);text-decoration-color:var(--gch-forest);filter:none;transform:none}
/* a Quick Answer / direct-answer box under the hero, in the same language */
.gch-answer{box-sizing:border-box;margin:0 auto 32px;padding:30px 34px;background:#fff;border:1px solid #e8dfcd;border-radius:16px;box-shadow:none}
.gch-answer>h2{margin:0 0 12px;font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:1.375rem;line-height:1.25;letter-spacing:-.01em;color:#1b2a22}
.gch-answer>p,.gch-answer .gch-more>p{margin:0;max-width:70ch;font-size:1.0625rem;line-height:1.65;color:#3b3731}
.gch-answer .gch-more{max-width:70ch;margin:14px 0 0}
@media (max-width:959px){
  .gch{padding:44px 36px 36px}
}
@media (max-width:700px){
  .gch{margin-bottom:28px;padding:26px 20px 22px;border-radius:16px}
  .gch h1,.gch--answer h1{font-size:clamp(1.8rem,1.05rem + 3.6vw,2.15rem);line-height:1.08;margin-bottom:14px}
  .gch .gch-claim{font-size:1.0625rem;line-height:1.5;margin-bottom:10px}
  .gch .gch-fact{margin-bottom:20px;font-size:.90625rem}
  .gch--answer .gch-claim>strong:first-child{font-size:1.1875rem;margin-bottom:8px}
  .gch-act{flex-direction:column;align-items:stretch;gap:4px}
  .gch a.gch-go{display:block;width:100%;min-height:54px;padding:15px 18px;font-size:1rem}
  .gch a.gch-tool{padding:8px 0;font-size:.96875rem;text-align:center}
  .gch-pick{margin-top:22px;padding:18px 14px 14px;border-radius:14px}
  .gch .gch-pick-q{margin:0 2px 10px;font-size:1.1875rem}
  .gch-pick-chips{gap:6px}
  .gch a.gch-chip{min-height:44px;padding:10px 15px;font-size:.9375rem}
  .gch .gch-pick-note{margin:10px 2px 0}
  .gch-pair{grid-template-columns:minmax(0,1fr)}
  .gch>.verdict-bar{margin-top:16px;text-align:left}
  .gch-answer{padding:22px 20px}
}
/* phones: the sheet goes nearly edge to edge (8px each side) whatever gutter the page column has; centred-column trick */
@media (max-width:599px){
  .gch{width:auto;max-width:none;margin-left:calc(50% - 50vw + 8px);margin-right:calc(50% - 50vw + 8px);padding:28px 20px 24px;border-radius:16px}
  /* phones: the chooser is full-width rows, not a wrapping tag cloud (desktop keeps auto-width pills) */
  .gch-pick-chips{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
  .gch a.gch-chip{display:flex;width:100%;min-height:48px}
}
/* the way-out chip: same pill, quieter fill */
.gch a.gch-chip.gch-chip--out{background:transparent;border-style:dashed;border-color:#cdbfa6;color:var(--gch-text)}
