:root{
  --gh-space-1:.25rem;--gh-space-2:.5rem;--gh-space-3:.75rem;--gh-space-4:1rem;
  --gh-space-6:1.5rem;--gh-space-8:2rem;--gh-space-12:3rem;--gh-space-16:4rem;
  --gh-measure-prose:68ch;--gh-w-content:1200px;--gh-h-header:64px;
  --gh-dur-fast:120ms;--gh-dur-base:200ms;--gh-ease:cubic-bezier(.2,0,0,1);
  --gh-z-header:100;--gh-z-popover:400;--gh-z-modal:600;--gh-z-toast:800;
  --gh-focus-width:2px;--gh-focus-offset:2px;
}[data-game="faunera"]{--gh-font-body:system-ui,-apple-system,"Segoe UI",sans-serif;--gh-font-display:Georgia,"Times New Roman",serif;--gh-font-ui:system-ui,-apple-system,"Segoe UI",sans-serif;--gh-leading-body:1.65;--gh-leading-h1:1.12;--gh-leading-h2:1.2;--gh-leading-h3:1.3;--gh-leading-ui:1.4;--gh-nav-case:none;--gh-radius-lg:14px;--gh-radius-md:8px;--gh-radius-sm:4px;--gh-shadow-1:0 1px 2px rgba(24,34,24,.08);--gh-shadow-2:0 6px 20px rgba(24,34,24,.14);--gh-size-body:1rem;--gh-size-eyebrow:.75rem;--gh-size-h1:clamp(2.25rem,4.5vw,3.5rem);--gh-size-h2:clamp(1.5rem,2.5vw,2rem);--gh-size-h3:1.25rem;--gh-size-meta:.75rem;--gh-size-ui:.875rem;--gh-texture-page:none;--gh-tracking-eyebrow:.08em;--gh-tracking-h1:-.02em;--gh-weight-body:400;--gh-weight-body-strong:600;--gh-weight-display:700;--gh-weight-h2:700;--gh-weight-h3:600;--gh-weight-ui:400;--gh-weight-ui-strong:600;}[data-game="faunera"]:not([data-theme="dark"]){--gh-color-accent:#28543b;--gh-color-accent-ink:#ffffff;--gh-color-bg:#f0ecdf;--gh-color-border-strong:#737366;--gh-color-border-subtle:#d4cdbb;--gh-color-danger:#942b25;--gh-color-focus:#28543b;--gh-color-gold-ornament:#a2936d;--gh-color-info:#264f65;--gh-color-ink:#202a21;--gh-color-ink-faint:#51594b;--gh-color-ink-muted:#414b3f;--gh-color-ok:#28543b;--gh-color-raised:#fffdf6;--gh-color-sunken:#e5dfcf;--gh-color-surface:#faf8ef;--gh-color-warn:#704708;color-scheme:light;}@media (prefers-color-scheme:dark){[data-game="faunera"]:not([data-theme="light"]){--gh-color-accent:#9bd0a6;--gh-color-accent-ink:#101713;--gh-color-bg:#151d18;--gh-color-border-strong:#82927c;--gh-color-border-subtle:#3a493b;--gh-color-danger:#ffaaa1;--gh-color-focus:#9bd0a6;--gh-color-gold-ornament:#baaa7d;--gh-color-info:#9ac9e4;--gh-color-ink:#f4f1e5;--gh-color-ink-faint:#b5c0ad;--gh-color-ink-muted:#d2d7c9;--gh-color-ok:#9bd0a6;--gh-color-raised:#263229;--gh-color-sunken:#101713;--gh-color-surface:#1c261f;--gh-color-warn:#e7c17d;color-scheme:dark;}}[data-game="faunera"][data-theme="dark"]{--gh-color-accent:#9bd0a6;--gh-color-accent-ink:#101713;--gh-color-bg:#151d18;--gh-color-border-strong:#82927c;--gh-color-border-subtle:#3a493b;--gh-color-danger:#ffaaa1;--gh-color-focus:#9bd0a6;--gh-color-gold-ornament:#baaa7d;--gh-color-info:#9ac9e4;--gh-color-ink:#f4f1e5;--gh-color-ink-faint:#b5c0ad;--gh-color-ink-muted:#d2d7c9;--gh-color-ok:#9bd0a6;--gh-color-raised:#263229;--gh-color-sunken:#101713;--gh-color-surface:#1c261f;--gh-color-warn:#e7c17d;color-scheme:dark;}/* Guildhall platform components.
 *
 * LAYER 3 of plans/guildhall_platform.plan.md §6.2, plus the component
 * anatomy §2.3 fixes for every theme. Read the rule that governs this file
 * before editing it:
 *
 *   Every custom property referenced here MUST be an L1 primitive or an L2
 *   contract name.
 *
 * That is not a convention. `crates/gh_theme/tests/token_usage.rs` extracts
 * every `var(--gh-...)` from this file and refuses any name outside
 * L1_PRIMITIVES / L2_STATIC_TOKENS / L2_COLOR_TOKENS, because a typo'd custom
 * property does not error, does not warn, and resolves to `initial`. The
 * component then renders in the browser's default and nobody finds out until a
 * screenshot.
 *
 * L3 overrides follow the §6.2 shape - `var(--gh-btn-primary-bg, var(--gh-color-accent))`
 * - so a component knob is optional and always FALLS BACK THROUGH an L2 name
 * rather than to nothing. Those two-level names are the one documented
 * exception the lint knows about, and it requires the inner fallback to be an
 * L2 name.
 *
 * What is deliberately NOT here: anything a theme owns. No color literals, no
 * font names, no radii. If you need one, it is an L2 token.
 */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--gh-color-bg);
  background-image:var(--gh-texture-page);
  color:var(--gh-color-ink);
  font-family:var(--gh-font-body);
  font-size:var(--gh-size-body);
  font-weight:var(--gh-weight-body);
  line-height:var(--gh-leading-body);
}
img,svg{max-width:100%;height:auto}

/* --- focus: platform-fixed, deliberately NOT themeable (§2.3) ------------ */
:focus-visible{
  outline:var(--gh-focus-width) solid var(--gh-color-focus);
  outline-offset:var(--gh-focus-offset);
}
.gh-skip{
  position:absolute;left:var(--gh-space-2);top:calc(var(--gh-space-2) * -8);
  z-index:var(--gh-z-toast);
  padding:var(--gh-space-2) var(--gh-space-4);
  background:var(--gh-color-surface);color:var(--gh-color-ink);
  border:1px solid var(--gh-color-border-strong);
  border-radius:var(--gh-radius-md);
  font-family:var(--gh-font-ui);font-size:var(--gh-size-ui);
  transition:top var(--gh-dur-fast) var(--gh-ease);
}
.gh-skip:focus{top:var(--gh-space-2)}

/* --- layout -------------------------------------------------------------- */
.gh-container{
  width:100%;max-width:var(--gh-w-content);
  margin-inline:auto;padding-inline:var(--gh-space-4);
}
.gh-prose{max-width:var(--gh-measure-prose)}
.gh-stack>*+*{margin-top:var(--gh-space-4)}

/* --- header -------------------------------------------------------------- */
.gh-header{
  position:sticky;top:0;z-index:var(--gh-z-header);
  min-height:var(--gh-h-header);
  display:flex;align-items:center;
  background:var(--gh-color-surface);
  border-bottom:1px solid var(--gh-color-border-subtle);
}
.gh-header__inner{
  display:flex;align-items:center;gap:var(--gh-space-6);
  width:100%;max-width:var(--gh-w-content);
  margin-inline:auto;padding-inline:var(--gh-space-4);
  min-height:var(--gh-h-header);
}
.gh-wordmark{
  font-family:var(--gh-font-display);
  font-weight:var(--gh-weight-display);
  font-size:var(--gh-size-h3);
  line-height:var(--gh-leading-h3);
  letter-spacing:var(--gh-tracking-h1);
  color:var(--gh-color-ink);
  text-decoration:none;
}
.gh-nav{display:flex;align-items:center;gap:var(--gh-space-4);flex-wrap:wrap}
.gh-nav--stacked{flex-direction:column;align-items:flex-start;gap:var(--gh-space-1)}
.gh-nav__link{
  font-family:var(--gh-font-ui);
  font-size:var(--gh-size-ui);
  font-weight:var(--gh-weight-ui);
  line-height:var(--gh-leading-ui);
  text-transform:var(--gh-nav-case);
  color:var(--gh-color-ink-muted);
  text-decoration:none;
  padding-block:var(--gh-space-1);
  border-bottom:2px solid transparent;
}
.gh-nav__link:hover{color:var(--gh-color-ink)}
.gh-nav__link[aria-current="page"]{
  color:var(--gh-color-accent);
  border-bottom-color:var(--gh-color-accent);
}
.gh-header__spacer{flex:1 1 auto}

/* --- realm status pill --------------------------------------------------- */
/* §6.3 rule 3: the luminance spread across ok/warn/danger is too small in the
 * dark scheme for a deuteranope to separate, so the ICON AND THE TEXT LABEL are
 * mandatory and color is reinforcement only. That is why this component has no
 * icon-only variant to reach for. */
.gh-realm{
  display:inline-flex;align-items:center;gap:var(--gh-space-2);
  padding:var(--gh-space-1) var(--gh-space-3);
  border:1px solid var(--gh-color-border-strong);
  border-radius:var(--gh-radius-lg);
  background:var(--gh-color-raised);
  font-family:var(--gh-font-ui);font-size:var(--gh-size-meta);
  font-variant-numeric:tabular-nums;
  color:var(--gh-color-ink-muted);
}
.gh-realm__dot{width:.5rem;height:.5rem;border-radius:50%;flex:none}
.gh-realm--ok .gh-realm__dot{background:var(--gh-color-ok)}
.gh-realm--warn .gh-realm__dot{background:var(--gh-color-warn)}
.gh-realm--down .gh-realm__dot{background:var(--gh-color-danger)}
.gh-realm--unknown .gh-realm__dot{background:transparent;border:1px solid var(--gh-color-ink-muted)}
.gh-realm--ok .gh-realm__label{color:var(--gh-color-ok)}
.gh-realm--warn .gh-realm__label{color:var(--gh-color-warn)}
.gh-realm--down .gh-realm__label{color:var(--gh-color-danger)}
.gh-realm--unknown .gh-realm__label{color:var(--gh-color-ink-muted)}
.gh-realm,.gh-realms__row{flex-wrap:wrap}
.gh-realm__snapshot{flex-basis:100%;font-size:var(--gh-size-meta);color:var(--gh-color-ink-muted)}

/* --- typography ---------------------------------------------------------- */
.gh-h1,h1{
  font-family:var(--gh-font-display);
  font-weight:var(--gh-weight-display);
  font-size:var(--gh-size-h1);
  line-height:var(--gh-leading-h1);
  letter-spacing:var(--gh-tracking-h1);
  color:var(--gh-color-ink);
  margin:0 0 var(--gh-space-4);
}
.gh-h2,h2{
  font-family:var(--gh-font-display);
  font-weight:var(--gh-weight-h2);
  font-size:var(--gh-size-h2);
  line-height:var(--gh-leading-h2);
  color:var(--gh-color-ink);
  margin:0 0 var(--gh-space-3);
}
.gh-h3,h3{
  font-family:var(--gh-font-display);
  font-weight:var(--gh-weight-h3);
  font-size:var(--gh-size-h3);
  line-height:var(--gh-leading-h3);
  color:var(--gh-color-ink);
  margin:0 0 var(--gh-space-2);
}
.gh-eyebrow{
  display:block;
  font-family:var(--gh-font-ui);
  font-size:var(--gh-size-eyebrow);
  font-weight:var(--gh-weight-ui-strong);
  letter-spacing:var(--gh-tracking-eyebrow);
  text-transform:uppercase;
  color:var(--gh-color-ink-faint);
  margin-bottom:var(--gh-space-2);
}
.gh-lead{font-size:var(--gh-size-body);color:var(--gh-color-ink-muted)}
.gh-meta{
  font-family:var(--gh-font-ui);
  font-size:var(--gh-size-meta);
  font-variant-numeric:tabular-nums;
  color:var(--gh-color-ink-faint);
}
.gh-num{font-family:var(--gh-font-ui);font-variant-numeric:tabular-nums}
a{color:var(--gh-color-accent)}
strong,b{font-weight:var(--gh-weight-body-strong)}

/* --- buttons: L3 knobs, always falling back through an L2 name ----------- */
.gh-btn{
  display:inline-flex;align-items:center;justify-content:center;
  gap:var(--gh-space-2);
  padding:var(--gh-space-2) var(--gh-space-6);
  border-radius:var(--gh-radius-md);
  border:1px solid var(--gh-color-border-strong);
  background:transparent;
  color:var(--gh-color-ink);
  font-family:var(--gh-font-ui);
  font-size:var(--gh-size-ui);
  font-weight:var(--gh-weight-ui-strong);
  line-height:var(--gh-leading-ui);
  text-decoration:none;cursor:pointer;
  transition:background-color var(--gh-dur-fast) var(--gh-ease);
}
.gh-btn--primary{
  background:var(--gh-btn-primary-bg,var(--gh-color-accent));
  color:var(--gh-btn-primary-ink,var(--gh-color-accent-ink));
  border-color:var(--gh-btn-primary-bg,var(--gh-color-accent));
}
.gh-btn--ghost{background:transparent;color:var(--gh-color-ink)}

/* --- cards and rules ----------------------------------------------------- */
.gh-card{
  background:var(--gh-color-surface);
  border:1px solid var(--gh-color-border-subtle);
  border-radius:var(--gh-radius-lg);
  padding:var(--gh-space-6);
  box-shadow:var(--gh-shadow-1);
}
.gh-card--raised{background:var(--gh-color-raised);box-shadow:var(--gh-shadow-2)}
.gh-well{
  background:var(--gh-color-sunken);
  border-radius:var(--gh-radius-md);
  padding:var(--gh-space-4);
}
/* §6.4: a section rule is a gradient fading ink -> transparent -> ink, never a
 * flat line. Zero bytes, re-themes for free. */
.gh-rule{
  border:0;height:1px;margin:var(--gh-space-12) 0;
  background:linear-gradient(90deg,transparent,var(--gh-color-gold-ornament),transparent);
}

/* --- ornament frame: rationed to three placements per page (§6.4) -------- */
.gh-ornamented{position:relative}
.gh-ornament{
  position:absolute;width:var(--gh-space-8);height:var(--gh-space-8);
  color:var(--gh-color-gold-ornament);
  pointer-events:none;
}
.gh-ornament--tl{top:0;left:0}
.gh-ornament--tr{top:0;right:0;transform:scaleX(-1)}
.gh-ornament--bl{bottom:0;left:0;transform:scaleY(-1)}
.gh-ornament--br{bottom:0;right:0;transform:scale(-1)}

/* --- hero ---------------------------------------------------------------- */
.gh-hero{padding-block:var(--gh-space-16)}
.gh-hero__actions{display:flex;gap:var(--gh-space-4);flex-wrap:wrap;margin-top:var(--gh-space-8)}

/* --- news ---------------------------------------------------------------- */
.gh-news-grid{
  display:grid;gap:var(--gh-space-6);
  grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));
}
.gh-news-card__title{margin:0 0 var(--gh-space-2)}
.gh-news-card__title a{color:var(--gh-color-ink);text-decoration:none}
.gh-news-card__title a:hover{color:var(--gh-color-accent)}

/* --- forum thread row ---------------------------------------------------- */
.gh-thread{
  display:flex;align-items:baseline;gap:var(--gh-space-4);
  padding:var(--gh-space-3) var(--gh-space-4);
  border-bottom:1px solid var(--gh-color-border-subtle);
}
.gh-thread__title{
  font-family:var(--gh-font-body);
  font-weight:var(--gh-weight-body-strong);
  color:var(--gh-color-ink);text-decoration:none;
}
.gh-thread__count{margin-left:auto}

/* --- ticket status badge ------------------------------------------------- */
.gh-badge{
  display:inline-flex;align-items:center;gap:var(--gh-space-1);
  padding:var(--gh-space-1) var(--gh-space-2);
  border-radius:var(--gh-radius-sm);
  border:1px solid var(--gh-color-border-strong);
  font-family:var(--gh-font-ui);
  font-size:var(--gh-size-meta);
  font-weight:var(--gh-weight-ui-strong);
  color:var(--gh-color-ink-muted);
}
.gh-badge--open{color:var(--gh-color-info)}
.gh-badge--waiting{color:var(--gh-color-warn)}
.gh-badge--resolved{color:var(--gh-color-ok)}
.gh-badge--closed{color:var(--gh-color-ink-faint)}

/* --- auth frame ---------------------------------------------------------- */
.gh-auth{max-width:26rem;margin-inline:auto;padding-block:var(--gh-space-16)}

/* --- footer -------------------------------------------------------------- */
.gh-footer{
  margin-top:var(--gh-space-16);
  border-top:1px solid var(--gh-color-border-subtle);
  background:var(--gh-color-surface);
  padding-block:var(--gh-space-8);
  font-family:var(--gh-font-ui);
  font-size:var(--gh-size-meta);
  color:var(--gh-color-ink-muted);
}
.gh-footer__cols{
  display:grid;gap:var(--gh-space-8);
  grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));
}
.gh-footer a{color:var(--gh-color-ink-muted)}

/* --- page head ----------------------------------------------------------- */
.gh-page-head{padding-block:var(--gh-space-12) var(--gh-space-8)}
.gh-page-head .gh-lead{max-width:var(--gh-measure-prose)}

/* --- realm status strip (wireframe A, region 2) -------------------------- */
/* Icon AND text label on every row, per 6.3 rule 3: the dark scheme's
 * luminance spread across ok/warn/danger is too small for a deuteranope to
 * separate, so colour is reinforcement and never the carrier. */
.gh-realms{
  background:var(--gh-color-surface);
  border-block:1px solid var(--gh-color-border-subtle);
  padding-block:var(--gh-space-6);
  margin-block:var(--gh-space-12);
}
.gh-realms__heading{font-size:var(--gh-size-h3);line-height:var(--gh-leading-h3)}
.gh-realms__list{list-style:none;margin:0;padding:0;display:grid;gap:var(--gh-space-2)}
.gh-realms__row{
  display:flex;align-items:baseline;gap:var(--gh-space-3);flex-wrap:wrap;
  font-family:var(--gh-font-ui);font-size:var(--gh-size-ui);
  color:var(--gh-color-ink-muted);
  padding-block:var(--gh-space-1);
}
.gh-realms__row .gh-realm__dot{align-self:center}
.gh-realms__name{color:var(--gh-color-ink);font-weight:var(--gh-weight-ui-strong)}
.gh-realms__pop,.gh-realms__latency{margin-left:auto;color:var(--gh-color-ink-faint)}
.gh-realms__latency{margin-left:0}
.gh-realms__row.gh-realm--ok .gh-realm__dot{background:var(--gh-color-ok)}
.gh-realms__row.gh-realm--warn .gh-realm__dot{background:var(--gh-color-warn)}
.gh-realms__row.gh-realm--down .gh-realm__dot{background:var(--gh-color-danger)}
.gh-realms__row.gh-realm--ok .gh-realm__label{color:var(--gh-color-ok)}
.gh-realms__row.gh-realm--warn .gh-realm__label{color:var(--gh-color-warn)}
.gh-realms__row.gh-realm--down .gh-realm__label{color:var(--gh-color-danger)}

/* --- two-up (wireframe A, 60/40) ----------------------------------------- */
.gh-twoup{display:grid;gap:var(--gh-space-8);grid-template-columns:1fr}
@media (min-width:1024px){
  .gh-twoup{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
}

/* --- chips --------------------------------------------------------------- */
.gh-chip{
  display:inline-flex;align-items:center;gap:var(--gh-space-1);
  padding:var(--gh-space-1) var(--gh-space-3);
  border:1px solid var(--gh-color-border-strong);
  border-radius:var(--gh-radius-lg);
  font-family:var(--gh-font-ui);font-size:var(--gh-size-meta);
  font-weight:var(--gh-weight-ui-strong);
  color:var(--gh-color-ink-muted);
  text-decoration:none;
}
.gh-chip--version{background:var(--gh-color-sunken)}
.gh-chip--seed{border-style:dashed}

/* --- fleuron ------------------------------------------------------------- */
.gh-fleuron{
  display:block;margin:var(--gh-space-8) auto;
  width:var(--gh-space-12);
  color:var(--gh-color-gold-ornament);
}

/* --- news index ---------------------------------------------------------- */
.gh-filters{
  display:flex;flex-wrap:wrap;gap:var(--gh-space-2);
  margin-bottom:var(--gh-space-8);padding:0;list-style:none;
}
.gh-filter{
  display:inline-block;
  padding:var(--gh-space-1) var(--gh-space-3);
  border:1px solid var(--gh-color-border-strong);
  border-radius:var(--gh-radius-lg);
  font-family:var(--gh-font-ui);font-size:var(--gh-size-ui);
  color:var(--gh-color-ink-muted);text-decoration:none;
}
.gh-filter:hover{color:var(--gh-color-ink)}
.gh-filter[aria-current="page"]{
  color:var(--gh-color-accent-ink);
  background:var(--gh-color-accent);
  border-color:var(--gh-color-accent);
}
.gh-featured{
  display:grid;gap:var(--gh-space-8);grid-template-columns:1fr;
  align-items:center;margin-bottom:var(--gh-space-12);
}
@media (min-width:768px){ .gh-featured{grid-template-columns:1fr 1fr} }
.gh-featured__frame{
  border:1px solid var(--gh-color-border-subtle);
  border-radius:var(--gh-radius-lg);
  background:var(--gh-color-sunken);
  min-height:var(--gh-space-16);
  padding:var(--gh-space-8);
}
.gh-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--gh-space-8)}
.gh-list__item{
  display:grid;gap:var(--gh-space-4);grid-template-columns:1fr;
  padding-bottom:var(--gh-space-8);
  border-bottom:1px solid var(--gh-color-border-subtle);
}
@media (min-width:768px){
  .gh-list__item{grid-template-columns:6rem 1fr;align-items:start}
}
.gh-list__thumb{
  border:1px solid var(--gh-color-border-subtle);
  border-radius:var(--gh-radius-md);
  background:var(--gh-color-sunken);
  min-height:var(--gh-space-16);
}
.gh-list__title{margin:0 0 var(--gh-space-2)}
.gh-list__title a{color:var(--gh-color-ink);text-decoration:none}
.gh-list__title a:hover{color:var(--gh-color-accent)}
.gh-pagination{margin-block:var(--gh-space-12)}
.gh-pagination__list{
  display:flex;flex-wrap:wrap;gap:var(--gh-space-2);list-style:none;margin:0;padding:0;
}
.gh-pagination__link{
  display:inline-block;min-width:var(--gh-space-8);text-align:center;
  padding:var(--gh-space-1) var(--gh-space-3);
  border:1px solid var(--gh-color-border-strong);
  border-radius:var(--gh-radius-md);
  font-family:var(--gh-font-ui);font-variant-numeric:tabular-nums;
  color:var(--gh-color-ink-muted);text-decoration:none;
}
.gh-pagination__link[aria-current="page"]{
  color:var(--gh-color-accent-ink);
  background:var(--gh-color-accent);
  border-color:var(--gh-color-accent);
}

/* --- article ------------------------------------------------------------- */
.gh-article{padding-block:var(--gh-space-12)}
.gh-article__head{max-width:var(--gh-measure-prose);margin-inline:auto;text-align:center}
.gh-article__head .gh-eyebrow{margin-top:var(--gh-space-4)}
.gh-article__body{max-width:var(--gh-measure-prose);margin-inline:auto}
.gh-article__nav{
  max-width:var(--gh-measure-prose);margin:var(--gh-space-16) auto 0;
  display:flex;justify-content:space-between;gap:var(--gh-space-4);flex-wrap:wrap;
  border-top:1px solid var(--gh-color-border-subtle);
  padding-top:var(--gh-space-6);
}
/* The patch-note variant: tighter lists at 1.5, because a change log is
 * scanned rather than read (6.5 wireframe C). */
.gh-article--patch .gh-prose ul{line-height:1.5;margin-block:var(--gh-space-3)}
.gh-article--patch .gh-prose li{margin-block:var(--gh-space-1)}
.gh-article--patch .gh-prose h2{margin-top:var(--gh-space-8)}

/* --- long-form prose: the ONLY place content HTML is styled -------------- */
/* Content is markdown rendered by gh_content and sanitized by ammonia, which
 * strips every class - so these are element selectors on purpose. */
.gh-prose>*+*{margin-top:var(--gh-space-4)}
.gh-prose h2{margin-top:var(--gh-space-12)}
.gh-prose h3{margin-top:var(--gh-space-8)}
.gh-prose ul,.gh-prose ol{padding-left:var(--gh-space-6)}
.gh-prose li{margin-block:var(--gh-space-2)}
.gh-prose blockquote{
  margin-inline:0;padding-left:var(--gh-space-4);
  border-left:3px solid var(--gh-color-gold-ornament);
  color:var(--gh-color-ink-muted);
}
.gh-prose code{
  font-family:var(--gh-font-ui);font-size:var(--gh-size-ui);
  background:var(--gh-color-sunken);
  border-radius:var(--gh-radius-sm);
  padding:0 var(--gh-space-1);
}
.gh-prose pre{
  background:var(--gh-color-sunken);
  border-radius:var(--gh-radius-md);
  padding:var(--gh-space-4);overflow-x:auto;
}
.gh-prose pre code{background:none;padding:0}
.gh-prose table{
  border-collapse:collapse;width:100%;
  font-family:var(--gh-font-ui);font-size:var(--gh-size-ui);
  font-variant-numeric:tabular-nums;
}
.gh-prose th,.gh-prose td{
  border-bottom:1px solid var(--gh-color-border-subtle);
  padding:var(--gh-space-2) var(--gh-space-3);text-align:left;
}
.gh-prose hr{
  border:0;height:1px;margin-block:var(--gh-space-8);
  background:var(--gh-color-border-subtle);
}

/* --- notices ------------------------------------------------------------- */
/* The draft-legal banner. Rendered by the PLATFORM from the document's own
 * status field, so a theme cannot suppress it: "this is not the agreement in
 * force" is a property of the document, not a design decision. */
.gh-notice{
  border:2px solid var(--gh-color-warn);
  border-radius:var(--gh-radius-md);
  background:var(--gh-color-raised);
  color:var(--gh-color-ink);
  padding:var(--gh-space-4) var(--gh-space-6);
  margin-bottom:var(--gh-space-8);
  font-family:var(--gh-font-ui);font-size:var(--gh-size-ui);
  line-height:var(--gh-leading-ui);
}
.gh-notice__label{
  display:block;color:var(--gh-color-warn);
  font-weight:var(--gh-weight-ui-strong);
  letter-spacing:var(--gh-tracking-eyebrow);
  text-transform:uppercase;font-size:var(--gh-size-eyebrow);
  margin-bottom:var(--gh-space-2);
}
.gh-notice__meta{margin:var(--gh-space-2) 0 0;color:var(--gh-color-ink-muted)}

/* --- footer columns ------------------------------------------------------ */
.gh-footer__heading{
  font-family:var(--gh-font-ui);
  font-size:var(--gh-size-eyebrow);
  line-height:var(--gh-leading-ui);
  font-weight:var(--gh-weight-ui-strong);
  letter-spacing:var(--gh-tracking-eyebrow);
  text-transform:uppercase;
  color:var(--gh-color-ink-faint);
  margin:0 0 var(--gh-space-3);
}
.gh-footer__legal{margin-top:var(--gh-space-8)}
@media (min-width:768px){
  .gh-footer__cols{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* --- motion ------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:1ms!important;animation-duration:1ms!important}
}
