/* Terrain — global stylesheet.
   World: a survey map annotated by hand. Tokens in DESIGN.md. */

/* ---------------------------------------------------------------- fonts */
@font-face {
  font-family: 'Fluxisch Else';
  src: url('/fonts/FluxischElse-Regular.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Fluxisch Else';
  src: url('/fonts/FluxischElse-Bold.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Fluxisch Else';
  src: url('/fonts/FluxischElse-Light.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plex Sans';
  src: url('/fonts/ibm-plex-sans-latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plex Sans';
  src: url('/fonts/ibm-plex-sans-latin-500-normal.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plex Sans';
  src: url('/fonts/ibm-plex-sans-latin-700-normal.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plex Mono';
  src: url('/fonts/ibm-plex-mono-latin-400-normal.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plex Mono';
  src: url('/fonts/ibm-plex-mono-latin-500-normal.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plex Mono';
  src: url('/fonts/ibm-plex-mono-latin-600-normal.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap;
}

/* ---------------------------------------------------------------- tokens */
:root {
  --paper: #f2eee6;
  --paper-deep: #e8e2d6;
  --paper-line: #d6cfc0;
  --ink: #141414;
  --pink: #ff6ad5;
  --pink-soft: rgba(255, 106, 213, 0.42);
  --slate: #5b6770;
  --slate-soft: #596570; /* 5.2:1 on paper, 4.6:1 on paper-deep — AA for body copy */
  /* A darker step for secondary copy that has to stay readable on the tinted
     paper-deep panel, where plain slate is only 4.6:1. */
  --slate-strong: #434d55;

  /* Party colours. Used to paint the party's drawn shape and to colour marks
     that encode that party in a chart. Every such mark also carries the party's
     name and a second cue — a shape, a dash — so colour is never the only
     carrier and a black-and-white copy still reads. */
  --party-alp: #d63b3b;
  --party-lib: #1f5fa9;
  --party-nat: #1f6b45;
  --party-grn: #10854a;
  --party-ind: #2a7f86;
  --party-onp: #bf4f10;

  --display: 'Fluxisch Else', 'Arial Black', sans-serif;
  --text: 'Plex Sans', system-ui, sans-serif;
  --mono: 'Plex Mono', ui-monospace, monospace;

  --gutter: clamp(1rem, 4vw, 3.5rem);
  --measure: 68ch;
  --rule: 1px solid var(--ink);
  --rule-soft: 1px solid var(--paper-line);
  --radius: 3px;
  --shadow: 2px 3px 0 rgba(20, 20, 20, 0.10), 6px 10px 22px rgba(20, 20, 20, 0.13);
}

/* ---------------------------------------------------------------- reset */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
img, svg, picture { display: block; max-width: 100%; }
body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--text);
  font-size: 1.0625rem;
  line-height: 1.6;
  font-synthesis-weight: none;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
::selection { background: var(--pink); color: var(--ink); }
html { caret-color: var(--ink); scrollbar-color: var(--slate) var(--paper-deep); }
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: var(--paper-deep); }
::-webkit-scrollbar-thumb { background: var(--slate); border: 3px solid var(--paper-deep); border-radius: 6px; }
::-webkit-scrollbar-thumb:hover { background: var(--ink); }
:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
  box-shadow: 0 0 0 5px var(--pink-soft);
}

/* numerals and data */
.num, time, .stat { font-family: var(--mono); font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }

/* ---------------------------------------------------------------- type */
h1, h2, h3, h4 { font-family: var(--display); font-weight: 700; line-height: 0.98; letter-spacing: -0.015em; text-wrap: balance; }
h1 { font-size: clamp(2.6rem, 8vw, 5.5rem); }
h2 { font-size: clamp(1.8rem, 4.6vw, 3rem); }
h3 { font-size: clamp(1.3rem, 2.6vw, 1.9rem); }
h4 { font-size: 1.15rem; font-family: var(--text); font-weight: 700; letter-spacing: 0; line-height: 1.3; }
p { max-width: var(--measure); }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { text-decoration-color: var(--ink); background: var(--pink-soft); color: var(--ink); }
strong { font-weight: 700; }
.lede { font-size: clamp(1.15rem, 2.2vw, 1.5rem); line-height: 1.45; font-weight: 400; max-width: 46ch; }
.mono { font-family: var(--mono); }
.meta { font-family: var(--mono); font-size: 0.8125rem; letter-spacing: 0.01em; color: var(--slate); text-transform: uppercase; }

/* ---------------------------------------------------------------- layout */
.wrap { width: min(100% - 2 * var(--gutter), 78rem); margin-inline: auto; }
.wrap-wide { width: min(100% - 2 * var(--gutter), 96rem); margin-inline: auto; }
.wrap-text { width: min(100% - 2 * var(--gutter), 44rem); margin-inline: auto; }
section { padding-block: clamp(2.5rem, 6vw, 5rem); }
.grid { display: grid; gap: clamp(1.25rem, 3vw, 2.5rem); }
.hairline { border: 0; border-top: var(--rule); }

/* ---------------------------------------------------------------- entrance
   One authored reveal per page, staggered by position. Content is visible
   without it: the animation only moves what is already rendered, and it is
   disabled outright under prefers-reduced-motion. */
@media (prefers-reduced-motion: no-preference) {
  .reveal {
    animation: reveal-in 0.65s cubic-bezier(0.16, 1, 0.3, 1) both;
    animation-delay: calc(var(--i, 0) * 70ms);
  }
  @keyframes reveal-in {
    from { opacity: 0; transform: translate3d(0, 10px, 0); }
    to { opacity: 1; transform: none; }
  }
}
.hairline-soft { border: 0; border-top: var(--rule-soft); }

/* ---------------------------------------------------------------- section rule
   A titled hairline that opens a section. It is a rule with its heading set on
   it, not a label floating above a heading — the heading carries its own weight. */
.rule-label {
  display: flex; align-items: baseline; justify-content: space-between; gap: 0.75rem 1.5rem;
  flex-wrap: wrap;
  border-top: var(--rule); padding-top: 0.5rem; margin-bottom: 1.5rem;
  font-family: var(--mono); font-size: 0.8125rem; text-transform: uppercase; letter-spacing: 0.08em;
}
.rule-label span:last-child { color: var(--slate); text-transform: none; letter-spacing: 0; }
/* When the rule directly follows its own heading, the heading owns the space. */
h1 + .rule-label, h2 + .rule-label, h3 + .rule-label { margin-top: 1.25rem; }

/* ---------------------------------------------------------------- swipe */
/* Highlighter swipe behind ink text. Never used for pink text. */
.swipe { position: relative; display: inline-block; z-index: 0; }
.swipe::before {
  content: '';
  position: absolute; z-index: -1;
  inset: 0.22em -0.14em 0.16em -0.16em;
  background: var(--pink);
  transform: rotate(-0.6deg);
  opacity: 0.95;
  /* an uneven marker tip: high on the right, dipping left */
  clip-path: polygon(0% 34%, 6% 14%, 94% 2%, 100% 20%, 99% 82%, 93% 98%, 5% 92%, 1% 70%);
}

/* ---------------------------------------------------------------- plates / buttons */
.plate {
  display: inline-flex; align-items: center; gap: 0.5rem;
  border: var(--rule); border-radius: var(--radius);
  padding: 0.4rem 0.7rem; background: transparent;
  font-family: var(--mono); font-size: 0.8125rem; text-transform: uppercase; letter-spacing: 0.06em;
}
button, .btn {
  font: inherit; font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.06em;
  font-size: 0.875rem; cursor: pointer;
  border: var(--rule); border-radius: var(--radius);
  background: var(--ink); color: var(--paper);
  padding: 0.7rem 1.1rem; text-decoration: none; display: inline-block;
  transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.15s cubic-bezier(0.16, 1, 0.3, 1);
}
button:hover, .btn:hover { transform: translate(-1px, -1px); box-shadow: var(--shadow); background: var(--ink); }
button:active, .btn:active { transform: translate(0, 0); box-shadow: none; }
.btn-ghost { background: transparent; color: var(--ink); }
.btn-ghost:hover { background: var(--ink); color: var(--paper); }

/* The one primary action a page carries: the same ink plate, run larger. */
.btn-lg { padding: 0.95rem 1.5rem; font-size: 1.0625rem; letter-spacing: 0.07em; }
.btn-lg .swipe { color: var(--ink); }

input[type='text'], input[type='search'], input[type='number'] {
  font: inherit; font-family: var(--mono); font-size: 1.5rem; letter-spacing: 0.12em;
  border: var(--rule); border-radius: var(--radius); background: var(--paper); color: var(--ink);
  padding: 0.6rem 0.8rem; width: 100%;
}
input::placeholder { color: var(--slate-soft); }

/* ---------------------------------------------------------------- panels */
.panel { background: var(--paper-deep); border: var(--rule); border-radius: var(--radius); padding: clamp(1rem, 2.5vw, 1.75rem); }
.tag {
  display: inline-block; font-family: var(--mono); font-size: 0.75rem; text-transform: uppercase;
  letter-spacing: 0.06em; border: var(--rule); border-radius: var(--radius); padding: 0.15rem 0.45rem;
  white-space: nowrap;
}
.tag-alp { border-color: var(--ink); }
.tag-grn { border-style: dashed; }
.tag-coal { border-width: 2px; }
.tag-onp { border-style: dotted; border-width: 2px; }
/* A tag on a tinted card is filled opaque in the card's own colour, so a contour
   ground behind the card does not read through the label. It is a solid block,
   not a translucent chip: ink text on paper-deep, 13.5:1. */
.tag-solid { background: var(--paper-deep); }

/* Posture tag: what an organisation has done about the election, on its card in
   the players index and on its profile. The mark before the label carries the
   distinction that colour cannot: filled for backing candidates, half for a
   guide, hollow for a campaign against a party, an en dash for an ask put to
   every party, an em dash for nothing recorded. */
.tag-posture {
  display: inline-flex; align-items: baseline; gap: 0.4em;
  text-transform: none; letter-spacing: 0; white-space: nowrap;
}
.tag-posture::before { content: ''; }
.posture-backs.tag-posture::before { content: '\25CF'; }
.posture-guides.tag-posture::before { content: '\25D0'; }
.posture-against.tag-posture::before { content: '\25CB'; }
.posture-asks.tag-posture::before { content: '\2013'; }
.posture-none.tag-posture::before { content: '\2014'; }
.tag-posture.posture-none { color: var(--slate); border-style: dashed; }

/* Party marker: a drawn shape per party, one stroke weight throughout, so
   identity is carried by form — never by colour alone. Each shape is a tiny
   inline SVG mask painted in currentColor, so it inherits ink/slate. */
.holder {
  font-family: var(--mono); font-size: 0.75rem; text-transform: uppercase;
  letter-spacing: 0.05em; display: inline-flex; align-items: center; gap: 0.4em;
}
.holder::before {
  content: ''; flex: 0 0 auto;
  width: 0.72em; height: 0.72em;
  background: var(--party, currentColor);
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: center; mask-position: center;
  -webkit-mask-size: contain; mask-size: contain;
}
.holder[data-p='ALP'] { --party: var(--party-alp); }
.holder[data-p='LIB'] { --party: var(--party-lib); }
.holder[data-p='NAT'] { --party: var(--party-nat); }
.holder[data-p='GRN'] { --party: var(--party-grn); }
.holder[data-p='IND'] { --party: var(--party-ind); }
.holder[data-p='ONP'] { --party: var(--party-onp); }
/* ALP — filled square */
.holder[data-p='ALP']::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Crect x='1' y='1' width='10' height='10'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Crect x='1' y='1' width='10' height='10'/%3E%3C/svg%3E");
}
/* LIB — diamond outline */
.holder[data-p='LIB']::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1 L11 6 L6 11 L1 6 Z M6 3.4 L8.6 6 L6 8.6 L3.4 6 Z' fill-rule='evenodd'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1 L11 6 L6 11 L1 6 Z M6 3.4 L8.6 6 L6 8.6 L3.4 6 Z' fill-rule='evenodd'/%3E%3C/svg%3E");
}
/* NAT — filled diamond */
.holder[data-p='NAT']::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1 L11 6 L6 11 L1 6 Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1 L11 6 L6 11 L1 6 Z'/%3E%3C/svg%3E");
}
/* GRN — filled circle */
.holder[data-p='GRN']::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='5'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='5'/%3E%3C/svg%3E");
}
/* IND — circle outline */
.holder[data-p='IND']::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1a5 5 0 1 0 0 10A5 5 0 0 0 6 1Zm0 2.2a2.8 2.8 0 1 1 0 5.6 2.8 2.8 0 0 1 0-5.6Z' fill-rule='evenodd'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1a5 5 0 1 0 0 10A5 5 0 0 0 6 1Zm0 2.2a2.8 2.8 0 1 1 0 5.6 2.8 2.8 0 0 1 0-5.6Z' fill-rule='evenodd'/%3E%3C/svg%3E");
}
/* ONP — filled triangle */
.holder[data-p='ONP']::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1 L11.4 10.6 L0.6 10.6 Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 1 L11.4 10.6 L0.6 10.6 Z'/%3E%3C/svg%3E");
}

/* ---------------------------------------------------------------- tables */
table { border-collapse: collapse; width: 100%; font-size: 0.95rem; }
th, td { text-align: left; padding: 0.5rem 0.6rem; border-bottom: var(--rule-soft); vertical-align: baseline; }
th { font-family: var(--mono); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.06em; border-bottom: var(--rule); color: var(--slate); }
tbody tr:hover { background: var(--paper-deep); }
td.num, th.num { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; }

/* ---------------------------------------------------------------- contour ground */
.contours { position: absolute; inset: 0; z-index: -1; pointer-events: none; color: var(--slate); opacity: 0.5; }
.contours svg { width: 100%; height: 100%; }

/* ---------------------------------------------------------------- prose (article body) */
.prose { font-size: 1.125rem; }
.prose > * + * { margin-top: 1.1em; }
.prose h2 { font-size: clamp(1.5rem, 3vw, 2.1rem); margin-top: 2em; }
.prose h3 { font-size: 1.3rem; margin-top: 1.6em; }
.prose ul, .prose ol { padding-left: 1.3em; max-width: var(--measure); }
.prose li + li { margin-top: 0.4em; }
.prose blockquote {
  border: 0; border-top: var(--rule); padding: 0.75rem 0 0; font-family: var(--display);
  font-size: 1.35rem; line-height: 1.15; max-width: 32ch;
}
.prose table { margin-block: 1.5em; }

/* ---------------------------------------------------------------- sources */
/* A chip is unbreakable; a run of them is not. Inline, a run stays on one line
   so it reads as one marker. Carrying a block's whole source list (a table or
   a figure), the chips have no space between them to break at, so the run is
   laid out as wrapping flex items instead. */
.cite-wrap { white-space: nowrap; }
.table-cite .cite-wrap, .figure-note .cite-wrap {
  display: inline-flex; flex-wrap: wrap; gap: 0.25rem 0.2rem;
}
.table-cite .cite, .figure-note .cite { vertical-align: baseline; }
.cite {
  font-family: var(--mono); font-size: 0.68em; vertical-align: 0.35em; line-height: 0;
  text-decoration: none; border: 0; padding: 0.1em 0.3em; margin-left: 0.15em;
  color: var(--ink); background: var(--paper-deep); border: 1px solid var(--paper-line);
  border-radius: 2px; cursor: help; white-space: nowrap; letter-spacing: 0.02em;
}
.cite:hover, .cite:focus-visible { background: var(--pink-soft); border-color: var(--ink); }
.cite-pop {
  position: absolute; z-index: 50; max-width: 30rem; background: var(--paper);
  border-radius: var(--radius);
  box-shadow: 0 1px 0 rgba(20, 20, 20, 0.10), 6px 10px 24px rgba(20, 20, 20, 0.20);
  padding: 0.7rem 0.85rem; font-family: var(--text); font-size: 0.85rem; line-height: 1.45;
}
.cite-pop .meta { display: block; margin-bottom: 0.3rem; }
.cite-pop a { text-decoration-thickness: 1px; }
.cite-pop .cite-pop-title { display: block; font-weight: 700; line-height: 1.3; }
.cite-pop .cite-pop-url { display: block; margin-top: 0.2rem; color: var(--slate); font-family: var(--mono); font-size: 0.72rem; word-break: break-all; }
/* A chip that carries several reports from one outlet lists them here. */
.cite-pop hr { border: 0; border-top: 1px solid var(--paper-line); margin: 0.6rem 0; }

/* ---------------------------------------------------------------- countdown */
.countdown { display: flex; align-items: baseline; gap: clamp(0.6rem, 2vw, 1.4rem); }
.countdown .unit { text-align: center; }
.countdown .unit b {
  display: block; font-family: var(--display); font-weight: 700;
  font-size: clamp(2rem, 6vw, 3.6rem); line-height: 0.85;
}
.countdown .unit span { font-family: var(--mono); font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--slate); }

/* ---------------------------------------------------------------- helpers */
.stack > * + * { margin-top: var(--gap, 1rem); }
.cluster { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; }
.right { text-align: right; }
.hidden { display: none; }
.visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.site-head[data-astro-cid-5hce7sga]{border-bottom:var(--rule);position:sticky;top:0;z-index:40;background:var(--paper)}.site-head-inner[data-astro-cid-5hce7sga]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:0.75rem}.wordmark[data-astro-cid-5hce7sga]{display:inline-flex;align-items:center;gap:0.5rem;font-family:var(--display);font-weight:700;font-size:1.5rem;text-decoration:none;letter-spacing:-0.01em}.wordmark[data-astro-cid-5hce7sga]:hover{background:none}.site-nav[data-astro-cid-5hce7sga] ul[data-astro-cid-5hce7sga]{display:flex;flex-wrap:wrap;gap:clamp(0.6rem,1.6vw,1.4rem);list-style:none;padding:0;margin:0}.site-nav[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]{font-family:var(--mono);font-size:0.8125rem;text-transform:uppercase;letter-spacing:0.05em;text-decoration:none;display:inline-block}.site-nav[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga][aria-current=page]{border-bottom:2px solid var(--ink)}.nav-toggle[data-astro-cid-5hce7sga]{display:none}.nav-toggle-bars[data-astro-cid-5hce7sga]{display:block;position:relative;width:1.5rem;height:1rem}.nav-toggle-bar[data-astro-cid-5hce7sga]{position:absolute;left:0;right:0;top:calc(50% - 1px);height:2px;background:var(--ink);transition:transform 0.18s cubic-bezier(0.16,1,0.3,1)}.nav-toggle-bar[data-astro-cid-5hce7sga]:first-child{transform:translateY(-0.25rem)}.nav-toggle-bar[data-astro-cid-5hce7sga]:last-child{transform:translateY(0.25rem)}.site-head[data-astro-cid-5hce7sga].is-open .nav-toggle-bar[data-astro-cid-5hce7sga]:first-child{transform:rotate(45deg)}.site-head[data-astro-cid-5hce7sga].is-open .nav-toggle-bar[data-astro-cid-5hce7sga]:last-child{transform:rotate(-45deg)}@media (max-width: 640px){:root.has-js.nav-open{overflow:hidden}.nav-toggle[data-astro-cid-5hce7sga]{display:inline-flex;align-items:center;justify-content:center;position:relative;padding:0;background:none;border:0;border-radius:0}.nav-toggle[data-astro-cid-5hce7sga]::after{content:"";position:absolute;inset:-0.6rem -0.65rem}.nav-toggle[data-astro-cid-5hce7sga]:hover{background:none;transform:none;box-shadow:none}:root:not(.has-js) .nav-toggle[data-astro-cid-5hce7sga]{display:none}:root:not(.has-js) .site-head-inner[data-astro-cid-5hce7sga]{flex-wrap:wrap}:root:not(.has-js) .site-nav[data-astro-cid-5hce7sga]{flex-basis:100%}:root:not(.has-js) .site-nav[data-astro-cid-5hce7sga] ul[data-astro-cid-5hce7sga]{gap:0.5rem 1rem}:root.has-js .site-nav[data-astro-cid-5hce7sga]{display:none}:root.has-js .site-head[data-astro-cid-5hce7sga].is-open .site-nav[data-astro-cid-5hce7sga]{position:fixed;inset:0;background:var(--paper);display:flex;align-items:flex-start;justify-content:flex-end;padding:calc(env(safe-area-inset-top,0px) + 5rem) var(--gutter) 2rem;overflow:auto;overscroll-behavior:contain}:root.has-js .site-head[data-astro-cid-5hce7sga].is-open .site-nav[data-astro-cid-5hce7sga] ul[data-astro-cid-5hce7sga]{flex-direction:column;align-items:flex-end;gap:1.15rem;width:100%}:root.has-js .site-head[data-astro-cid-5hce7sga].is-open .wordmark[data-astro-cid-5hce7sga],:root.has-js .site-head[data-astro-cid-5hce7sga].is-open .nav-toggle[data-astro-cid-5hce7sga]{position:relative;z-index:1}}.site-foot[data-astro-cid-5hce7sga]{padding-block:3rem 4rem;margin-top:2rem}.foot-grid[data-astro-cid-5hce7sga]{display:grid;gap:1.5rem 3rem;grid-template-columns:2fr 1fr;padding-top:1.5rem}@media (max-width: 760px){.foot-grid[data-astro-cid-5hce7sga]{grid-template-columns:1fr}}.foot-links[data-astro-cid-5hce7sga]{list-style:none;padding:0;margin:0;display:grid;gap:0.35rem;font-size:0.95rem}