/* gpp.css - the public Gated Proof Posits page (GH-DIR-20260928-ON "the buyer's path"). Layered after gh-design.css,
   gh-site.css, gh-polish.css, gh-nav-glass.css (and, in the live gate, gate.css). Palette tokens and the brand hexes only
   (blue #002B7F, midnight #0B1640, yellow #FCD116, red #CE1126, white). Rules kept from gh-polish: the hero gradient for the
   nav and the hero only; tricolour only as a thin edge; yellow = emphasis/focus; glass frames on headings; each section on
   its own palette ground (.ghp-band, rendered server-side so it holds without JS). 375 px safe; reduced motion honoured
   (gh-design.css stops every animation; the vitrine has its own rule). Scoped to body.gpp. */

/* the page ground is the system blue; the gradient belongs to nav + hero (gate.css paints it on the body: undone here) */
@media screen { :root:not([data-theme="light"]) body.gh.gpp { background: var(--bg); } }
body.gpp .gh-page { overflow-wrap: break-word; }
body.gpp .gpp-skip { position: absolute; left: -999px; top: 0; z-index: 10; background: #FCD116; color: #002B7F; padding: .5rem .9rem;
  font-family: var(--font-ui); font-weight: 600; }
body.gpp .gpp-skip:focus { left: 1rem; top: 1rem; }

/* ---- 1. hero ------------------------------------------------------------------------------------------------------ */
body.gpp .gpp-hero { grid-template-columns: minmax(0, 1fr); padding: clamp(1.5rem, 5vw, 3.5rem) clamp(1rem, 4vw, 3rem);
  margin: var(--space-4) 0 var(--space-4); border-radius: 16px; }
body.gpp .gpp-hero .gh-hero-text { max-width: 52rem; position: relative; z-index: 2; }
body.gpp .gpp-hero h1 { font-size: clamp(2rem, 1.3rem + 3.4vw, 3.4rem); line-height: 1.08; margin: .3rem 0 var(--space-3); }
body.gpp .gpp-hero .gpp-hero-sub { max-width: 72ch; font-size: clamp(1.02rem, .95rem + .35vw, 1.2rem); color: #FFFFFF; margin: 0 0 var(--space-4); }
@media (min-width: 40rem) { body.gpp .gpp-hero .gpp-hero-sub span { white-space: nowrap; } }
body.gpp .gpp-actions { max-width: none; display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: center; margin: 0; }
body.gpp .gh-btn.gpp-btn-primary, body.gpp .gh-btn.gpp-btn-secondary {
  display: inline-flex; align-items: center; gap: .4rem; min-height: 48px; margin: 0; padding: .7rem 1.25rem; border-radius: 10px;
  font-family: var(--font-ui); font-weight: 600; font-size: max(var(--ui-min), 1rem); line-height: 1.25; text-decoration: none; }
body.gpp .gh-btn.gpp-btn-primary { background: #FCD116; border: 1px solid #FCD116; color: #002B7F; }
body.gpp .gh-btn.gpp-btn-primary:hover { background: #FFFFFF; border-color: #FFFFFF; }
body.gpp .gh-btn.gpp-btn-secondary { background: linear-gradient(180deg, rgba(255,255,255,.13) 0%, rgba(255,255,255,.05) 100%);
  border: 1px solid rgba(255,255,255,.45); color: #FFFFFF; box-shadow: inset 0 1px 0 rgba(255,255,255,.22); }
body.gpp .gh-btn.gpp-btn-secondary:hover { border-color: #FFFFFF; background-color: rgba(255,255,255,.12); }
/* the tricolour tracer (gh-polish.css .ghp-halo) follows the button's own corner */
body.gpp .ghp-halo::after { border-radius: 14px; }

/* ---- sections ----------------------------------------------------------------------------------------------------- */
body.gpp .gpp-sec { scroll-margin-top: 1rem; }
body.gpp .gpp-sec > h2:first-child { margin-top: 0; }
body.gpp .gpp-glass { background: var(--ghp-glass); border: 1px solid var(--ghp-glass-bd); border-radius: 14px;
  box-shadow: inset 0 1px 0 var(--ghp-glass-hi), 0 14px 32px -24px var(--ghp-glass-sh); padding: clamp(1rem, 2.6vw, 1.6rem); min-width: 0; }
/* a plain glass panel (price, contact): a band on the page's own ground, framed in glass, edge in white */
body.gpp .ghp-band.gpp-plain { --ghp-band-bg: var(--ghp-glass); --ghp-band-bd: var(--ghp-glass-bd); --ghp-band-edge: rgba(255,255,255,.55);
  box-shadow: inset 0 1px 0 var(--ghp-glass-hi), 0 14px 34px -26px rgba(0,0,0,.8); }
body.gpp .gh-fine { font-family: var(--font-ui); font-size: max(var(--ui-min), .92rem); color: var(--fg-muted); }

/* ---- 2. sign-in panel (live) -------------------------------------------------------------------------------------- */
body.gpp .gpp-helper { font-family: var(--font-ui); font-size: max(var(--ui-min), 1rem); color: var(--fg); margin: .2rem 0 var(--space-3); }
body.gpp .gpp-steps { list-style: none; counter-reset: gs; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem;
  margin: 0 0 var(--space-3); padding: 0; font-family: var(--font-ui); font-size: max(var(--ui-min), .9rem); }
body.gpp .gpp-steps li { counter-increment: gs; display: flex; align-items: center; gap: .5rem; min-width: 0; padding: .45rem .6rem;
  border-radius: 10px; border: 1px solid rgba(255,255,255,.22); color: var(--fg-muted); }
body.gpp .gpp-steps li::before { content: counter(gs); flex: none; display: grid; place-items: center; width: 1.7rem; height: 1.7rem;
  border-radius: 50%; border: 1px solid currentColor; font-weight: 700; }
body.gpp .gpp-steps li[aria-current="step"] { color: #FFFFFF; border-color: #FCD116; background: rgba(252,209,22,.10); }
body.gpp .gpp-steps li[aria-current="step"]::before { background: #FCD116; color: #002B7F; border-color: #FCD116; }
body.gpp .gpp-steps li.done { color: #FFFFFF; }
body.gpp .gpp-steps li.done::before { content: "\2713"; background: rgba(255,255,255,.14); }
@media (max-width: 40rem) {
  body.gpp .gpp-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
body.gpp .gpp-auth { max-width: 44rem; }
body.gpp .gpp-auth .gate-msg { margin-top: .6rem; }
body.gpp .gpp-auth > .gate-msg.ok:first-child { margin: 0 0 var(--space-3); }
body.gpp .gpp-auth input:not([type=checkbox]) { background: #071540; }
body.gpp .gpp-auth button { min-height: 44px; }
body.gpp .gpp-notice { margin: 0 0 var(--space-3); padding: 0 0 var(--space-3); border-bottom: 1px solid rgba(255,255,255,.22); }
body.gpp .gpp-notice h2 { font-size: 1.35rem; margin-top: 0; }
body.gpp .gpp-notice .gh-sign { font-style: italic; }
body.gpp .gpp-auth > .gpp-notice + .gpp-actions, body.gpp .gpp-auth .gpp-actions { margin-top: var(--space-3); }

/* ---- 3. vitrine + what we followed ---------------------------------------------------------------------------------- */
body.gpp .gpp-stage { align-items: start; }
body.gpp .gpp-stage #what-we-followed h2 { margin-top: 0; }
body.gpp .gpp-stage #what-we-followed ol { padding-left: 1.4rem; }
body.gpp .gpp-stage #what-we-followed li { margin: 0 0 .7rem; }
body.gpp .gpp-stage--text { max-width: var(--measure); }
/* the vitrine without JS (both faces flat): room under the text for the seal disc, labels that never break mid-word */
body.gpp .gpp-vitrine:not(.is-live) .gh-vitrine__face { padding-bottom: 78px; }
body.gpp .gpp-vitrine .gh-vitrine__rows dt { white-space: nowrap; }
body.gpp .gpp-vitrine .gh-vitrine__rows dd { min-width: 0; overflow-wrap: anywhere; }
/* the internal review marker (preview builds only; never in a publishable build) */
body.gpp .gpp-preview-mark { position: absolute; left: 10px; right: 10px; top: 8px; z-index: 5; margin: 0; padding: .3rem .5rem; text-align: center;
  background: #CE1126; color: #FFFFFF; font-family: var(--font-ui); font-weight: 700; font-size: 13px; letter-spacing: .06em; border-radius: 6px; }

/* ---- 4. what you receive ------------------------------------------------------------------------------------------ */
body.gpp .gpp-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-4); margin: 0 0 var(--space-3); }
@media (max-width: 52rem) { body.gpp .gpp-cols { grid-template-columns: minmax(0, 1fr); } }
body.gpp .gpp-col h3 { color: var(--structure); font-size: 1.15rem; line-height: 1.3; margin: 0 0 var(--space-3); }
body.gpp .gpp-col--pp { border-top: 3px solid #8FA4E0; }
body.gpp .gpp-col--fp { border-top: 3px solid #FCD116; }
body.gpp .gpp-list { margin: 0; padding-left: 1.2rem; }
body.gpp .gpp-list li { margin: 0 0 .5rem; }
body.gpp .gpp-list li::marker { color: #FCD116; }
body.gpp .gpp-compare-toggle { margin: var(--space-3) 0; }
body.gpp .gpp-compare-toggle button { min-height: 44px; border-radius: 10px; }
body.gpp .gpp-compare-toggle button[aria-expanded="true"] { background: #FCD116; border-color: #FCD116; color: #002B7F; }
body.gpp .gpp-compare[hidden] { display: none; }
body.gpp .gpp-compare table { margin: 0; }
/* phone: each item becomes a small card (item, then the Posit's cell, then the Full Proof's, each labelled) */
@media (max-width: 36rem) {
  body.gpp .gpp-compare table, body.gpp .gpp-compare tbody, body.gpp .gpp-compare tr, body.gpp .gpp-compare th,
  body.gpp .gpp-compare td { display: block; width: auto; }
  body.gpp .gpp-compare caption { display: block; }
  body.gpp .gpp-compare thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  body.gpp .gpp-compare tr { padding: .6rem .2rem; border-bottom: 1px solid var(--border-soft); }
  body.gpp .gpp-compare tbody th { width: auto !important; border: 0; padding: 0 0 .3rem; font-weight: 600; }
  body.gpp .gpp-compare td { border: 0; padding: .15rem 0 .15rem 4.4rem; position: relative; overflow-wrap: normal; }
  body.gpp .gpp-compare td::after { content: attr(data-label); position: absolute; left: 0; top: .2rem; font-family: var(--font-mono);
    font-size: 13px; color: var(--fg-muted); }
}

/* ---- 5. why it matters -------------------------------------------------------------------------------------------- */
body.gpp .gpp-lede { font-size: clamp(1.08rem, 1rem + .4vw, 1.3rem); line-height: 1.55; max-width: 62ch; margin: 0; }

/* ---- 6. the path (stepper) ---------------------------------------------------------------------------------------- */
body.gpp .gpp-path { list-style: none; counter-reset: gp; margin: 0; padding: 0; display: grid; gap: var(--space-3); max-width: 60rem; }
body.gpp .gpp-path > li { counter-increment: gp; position: relative; padding: .9rem 1rem .9rem 3.6rem; min-height: 3.2rem;
  background: var(--ghp-glass); border: 1px solid var(--ghp-glass-bd); border-radius: 14px; box-shadow: inset 0 1px 0 var(--ghp-glass-hi); }
body.gpp .gpp-path > li::before { content: counter(gp); position: absolute; left: .9rem; top: .8rem; width: 2rem; height: 2rem; border-radius: 50%;
  display: grid; place-items: center; background: #FCD116; color: #002B7F; font-family: var(--font-ui); font-weight: 700; }
body.gpp .gpp-path > li strong { font-family: var(--font-ui); }
body.gpp .gpp-flow { list-style: none; margin: .5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem .5rem; font-family: var(--font-ui);
  font-size: max(var(--ui-min), .95rem); }
body.gpp .gpp-flow li { padding: .3rem .6rem; border-radius: 8px; border: 1px solid rgba(255,255,255,.22); background: rgba(7,21,64,.45); }
body.gpp .gpp-flow .gpp-arrow { color: #FCD116; font-weight: 700; }

/* ---- 7. price ------------------------------------------------------------------------------------------------------ */
body.gpp .gpp-price__line { margin: 0; font-family: var(--font-ui); font-size: max(var(--ui-min), 1.02rem); line-height: 1.7; }
body.gpp .gpp-price__line span { white-space: normal; }
/* the amount stands on its own line: the separator after it has nothing to separate there (it stays in the text) */
body.gpp .gpp-price__line .gpp-sep { display: none; }
body.gpp .gpp-price__amt { display: block; font-family: var(--font-display); font-weight: 700; font-size: clamp(2.2rem, 1.6rem + 2.6vw, 3.2rem);
  line-height: 1.1; color: #FCD116; margin: 0 0 .35rem; }
body.gpp .gpp-price__terms { margin: var(--space-3) 0 0; font-family: var(--font-ui); }

/* ---- 8. eligible organisations ------------------------------------------------------------------------------------ */
body.gpp .gpp-org-search label { display: block; font-family: var(--font-ui); font-weight: 600; margin: 0 0 .3rem; color: var(--structure); }
body.gpp .gpp-org-search input { width: 100%; max-width: 30rem; min-height: 44px; padding: .55rem .75rem; border-radius: 10px;
  border: 1px solid var(--rule-blue); background: #071540; color: #FFFFFF; font-family: var(--font-ui); font-size: max(var(--ui-min), 1rem); }
body.gpp .gpp-org-search .gh-fine { margin: .4rem 0 var(--space-3); }
body.gpp .gpp-orgs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
  gap: .35rem .9rem; font-family: var(--font-ui); font-size: max(var(--ui-min), .95rem); }
body.gpp .gpp-orgs li { padding: .3rem .5rem; border-left: 2px solid rgba(143,164,224,.55); min-width: 0; }
body.gpp .gpp-orgs li[hidden] { display: none; }
body.gpp .gpp-orgs a { display: block; }
body.gpp .gpp-orgs li:target { outline: 3px solid #FCD116; outline-offset: 2px; }
body.gpp .gpp-orgs.is-live { max-height: 26rem; overflow-y: auto; padding: .5rem .5rem .5rem .25rem; overscroll-behavior: contain;
  border-top: 1px solid rgba(255,255,255,.22); border-bottom: 1px solid rgba(255,255,255,.22); box-shadow: inset 0 -14px 14px -14px rgba(0,0,0,.6); }
body.gpp .gpp-org-none { margin: var(--space-3) 0 0; }

/* ---- 10. questions ----------------------------------------------------------------------------------------------- */
body.gpp .gpp-faq { margin: 0; display: grid; gap: var(--space-3); max-width: 62ch; }
body.gpp .gpp-faq dt { font-family: var(--font-ui); font-weight: 700; color: var(--structure); }
body.gpp .gpp-faq dd { margin: .2rem 0 0; }

/* ---- 11. contact -------------------------------------------------------------------------------------------------- */
body.gpp .gpp-contact p { margin: 0; font-family: var(--font-ui); font-size: max(var(--ui-min), 1.05rem); }

@media (max-width: 30rem) {
  body.gpp .ghp-band { padding: 1rem .8rem; }
  body.gpp .gpp-path > li { padding-left: 3.2rem; }
  body.gpp .gpp-path > li::before { left: .7rem; }
}
@media print { body.gpp .gpp-org-search, body.gpp .gpp-compare-toggle, body.gpp .gpp-skip { display: none; } body.gpp .gpp-orgs.is-live { max-height: none; } }
/* the notice at position 9 (fallback): a reading measure, no in-panel rule */
body.gpp .gpp-notice-sec .gpp-notice { max-width: 72ch; margin: 0; padding: 0; border: 0; }
