/* Pigeon site tokens. The real brand (docs/brand/BRAND.md, 2026-10-24):
   Pigeon Purple, Black, Sky Blue, Pink, Mist, Orange. Black is the website's
   ground, Mist its text, Purple the call-to-action fill, Sky Blue links and
   focus; Pink and Orange mark state and the odd highlight, nothing else.
   The neutrals lean cool, Mist's way (red <= green <= blue; black is the
   limit case). The light theme is the same palette on white.
   This is the only site file allowed a colour, a length or a font name
   (scripts/site/check.py holds the rest to that).
   Black is the default: it is :root. Light applies only when the visitor
   ticks the theme switch, which needs no script and stores nothing. */

:root {
  color-scheme: dark;
  --pg-bg: #000000;
  --pg-surface: #0B0C0E;
  --pg-surface-2: #15171A;
  /* The fine lines of the grid: decoration, never the only edge of a control. */
  --pg-grid: #1B1D21;
  --pg-border: #2B2E34;
  --pg-border-strong: #7C838D;
  --pg-text: #F0F2F4;
  --pg-text-muted: #A5ABB4;
  --pg-accent: #5432CD;
  --pg-on-accent: #FFFFFF;
  /* Purple is 2.71:1 on black, under the 3:1 a control's edge needs, so a
     filled button carries a 1 px edge of a lighter purple. A UI tint, not a
     brand colour: the mark never uses it. */
  --pg-accent-edge: #8A70E8;
  --pg-focus-ring: #73C1F8;
  --pg-mark: #FFFFFF;
  --pg-mark-ring: transparent;
  --pg-link: #73C1F8;
  --pg-highlight: #F49A31;
  --pg-danger: #E66D9A;
  --pg-success: #73C1F8;
  /* Website v3 (2026-10-25): charcoal, not black, with cards a step
     lighter and hairlines that separate without drawing the eye. */
  --pg-canvas: #1C1D1F;
  --pg-card: #242528;
  --pg-card-hover: #2A2B2F;
  --pg-hairline: #2E3034;
  --pg-pill: #2E3034;
  /* Website v4: the home page's app window, its chat list on black. */
  --pg-window-side: #000000;
  /* Website v5 (2026-10-25): the docs' tags, one hue per kind, each a
     brand colour on a dark tint of itself: Component Purple, Platform
     Sky, Status Orange, Security Pink. The purple is lifted for text on
     black (Purple itself is 2.71:1). */
  --pg-tag-component: #B9A8FF;
  --pg-tag-component-bg: #1A1438;
  --pg-tag-platform: #73C1F8;
  --pg-tag-platform-bg: #0C1F2C;
  --pg-tag-status: #F49A31;
  --pg-tag-status-bg: #2A1A07;
  --pg-tag-security: #E66D9A;
  --pg-tag-security-bg: #2A1019;
}

:root:has(#pg-theme-light:checked) {
  color-scheme: light;
  --pg-bg: #FFFFFF;
  --pg-surface: #F0F2F4;
  --pg-surface-2: #E4E7EB;
  --pg-grid: #E4E7EB;
  --pg-border: #CDD2D9;
  --pg-border-strong: #6E7580;
  --pg-text: #000000;
  --pg-text-muted: #4F5661;
  --pg-accent: #5432CD;
  --pg-on-accent: #FFFFFF;
  --pg-accent-edge: #5432CD;
  /* Sky Blue is 1.96:1 on white; on light, links and focus are the purple. */
  --pg-focus-ring: #5432CD;
  --pg-mark: #5432CD;
  --pg-mark-ring: transparent;
  --pg-link: #5432CD;
  /* Pink and Orange are under 3:1 on white; their state colours darken. */
  --pg-highlight: #A85A00;
  --pg-danger: #B32E62;
  --pg-success: #1D6797;
  --pg-canvas: #FFFFFF;
  --pg-card: #F6F7F9;
  --pg-card-hover: #EEF0F3;
  --pg-hairline: #E4E7EB;
  --pg-pill: #E9ECEF;
  --pg-window-side: #EEF0F3;
  --pg-tag-component: #5432CD;
  --pg-tag-component-bg: #EEEAFC;
  --pg-tag-platform: #1D6797;
  --pg-tag-platform-bg: #E5F3FE;
  --pg-tag-status: #9A5200;
  --pg-tag-status-bg: #FDF1E3;
  --pg-tag-security: #A82A5C;
  --pg-tag-security-bg: #FCEBF2;
}

:root {
  /* Inter, one family for headings and body, served from this site
     (assets/fonts, OFL-1.1: BRAND.md's ruling); the OS font stands in
     while it loads and for a glyph outside its Latin subset. */
  --pg-font-ui: "Inter", system-ui, "Segoe UI", "Ubuntu", "Cantarell", sans-serif;
  --pg-font-mono: ui-monospace, "Cascadia Mono", "DejaVu Sans Mono", monospace;
  /* rem, so the visitor's own text size setting scales the whole page. */
  /* The footer's legal line; 13 px, VISUAL_DIRECTION V5's floor. */
  --pg-text-xs: 0.8125rem;
  --pg-text-sm: 0.875rem;
  --pg-text-md: 1rem;
  --pg-text-lg: 1.125rem;
  --pg-text-xl: 1.375rem;
  --pg-text-2xl: 1.75rem;
  --pg-text-3xl: clamp(2rem, 1.5rem + 2.5vw, 3rem);
  --pg-text-display: clamp(2.75rem, 1.25rem + 6vw, 6rem);
  --pg-leading: 1.6;
  --pg-leading-tight: 1.15;
  --pg-leading-display: 1.02;
  --pg-space-1: 4px;
  --pg-space-2: 8px;
  --pg-space-3: 12px;
  --pg-space-4: 16px;
  --pg-space-5: 24px;
  --pg-space-6: 32px;
  --pg-space-7: 48px;
  --pg-space-8: 64px;
  --pg-space-9: 96px;
  --pg-radius-sm: 2px;
  --pg-radius-md: 4px;
  /* v3's softer scale: controls, cards, the large showcase, and pills. */
  --pg-radius-control: 10px;
  --pg-radius-card: 14px;
  --pg-radius-lg: 20px;
  --pg-radius-pill: 999px;
  --pg-sidebar: 248px;
  --pg-docs-page: 1280px;
  --pg-measure-doc: 72ch;
  --pg-text-hero: clamp(2.5rem, 1.5rem + 4.5vw, 4.75rem);
  --pg-tracking-hero: -0.045em;
  --pg-showcase: 880px;
  --pg-measure-title: 18ch;
  --pg-measure-hero-v3: 15ch;
  --pg-text-code: 0.9em;
  --pg-line: 1px;
  --pg-focus: 2px;
  --pg-mark-size: 24px;
  --pg-mark-hero: clamp(48px, 9vw, 72px);
  /* The header and footer logotype; its width follows from the file. */
  --pg-logotype: 28px;
  --pg-measure: 68ch;
  --pg-measure-hero: 12ch;
  --pg-measure-lede: 44ch;
  --pg-tracking-tight: -0.03em;
  --pg-tracking-wide: 0.08em;
  --pg-page: 1120px;
  --pg-header: 4.5rem;
  --pg-motion: 120ms ease-out;
  /* The one entrance: the page fades in, once, and only when the visitor
     hasn't asked for reduced motion (site.css gates it on the query). */
  --pg-fade: 360ms ease-out;
  /* Website v4 (2026-10-25): lighter and smaller. Headings 500 to 600,
     nothing at 700; display sizes cut by about a quarter. */
  --pg-weight-body: 400;
  --pg-weight-medium: 500;
  --pg-weight-strong: 600;
  --pg-text-hero-v4: clamp(2.25rem, 1.4rem + 3.2vw, 3.75rem);
  --pg-text-title-v4: clamp(1.75rem, 1.45rem + 1.2vw, 2.25rem);
  --pg-text-h2-v4: 1.25rem;
  --pg-tracking-hero-v4: -0.035em;
  --pg-tracking-title-v4: -0.025em;
  --pg-measure-hero-v4: 17ch;
  --pg-measure-lede-v4: 46ch;
  --pg-window: 960px;
  --pg-window-list: 15rem;
  --pg-bubble-max: 26rem;
  --pg-avatar: 28px;
  --pg-article: 680px;
  /* Website v5 (2026-10-25): bigger, calmer. A larger display and section
     scale, full-bleed bands on one 1200 px grid, the docs in three columns
     (sidebar, article, on-page contents) that fold to one with a drawer. */
  --pg-text-hero-v5: clamp(2.75rem, 1.2rem + 6.4vw, 6rem);
  --pg-text-section-v5: clamp(2rem, 1.2rem + 3.4vw, 3.75rem);
  --pg-text-lede-v5: clamp(1.125rem, 1rem + 0.6vw, 1.375rem);
  --pg-tracking-hero-v5: -0.045em;
  --pg-measure-hero-v5: 14ch;
  --pg-measure-lede-v5: 34ch;
  --pg-page-v5: 1200px;
  --pg-band-v5: clamp(72px, 6vw + 48px, 160px);
  --pg-window-v5: 1040px;
  --pg-panel-v5: 26rem;
  --pg-rise: 24px;
  --pg-rise-time: 520ms cubic-bezier(0.2, 0.7, 0.2, 1);
  --pg-step: 700ms;
  --pg-toc: 13.5rem;
  --pg-viewport: 100vh;
  --pg-tag-pad: 6px;
  --pg-seed-tile: 2.75rem;
  --pg-photo: 16rem;
  --pg-dot: 6px;
  --pg-travel: 220%;
}

/* The weights the sites set, Latin only (scripts/site/fonts.cjs): 400 to
   600 here, 700 for droppings.io's site.css. Only a used face is fetched. */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/fonts/inter-latin-400.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/fonts/inter-latin-500.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/fonts/inter-latin-600.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/fonts/inter-latin-700.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --pg-motion: 0ms;
    --pg-fade: 0ms;
  }
}

/* Pigeon site styles, website v5 (2026-10-25), grown from v4's. Every value
   is a token from tokens.css; the tokens are written down in
   docs/brand/VISUAL_DIRECTION.md. The direction: charcoal, quiet, soft
   corners, very few boxes, light type (500 to 600, never 700). v5 adds a
   bigger scale, full-bleed bands, the app drawn as the visual with motion
   that plays once, and tagged docs. No shadows, no gradients, no glow. */


*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: var(--pg-header);
}

body {
  margin: 0;
  background: var(--pg-canvas);
  color: var(--pg-text);
  font-family: var(--pg-font-ui);
  font-size: var(--pg-text-md);
  line-height: var(--pg-leading);
  -webkit-font-smoothing: antialiased;
}

@media (prefers-reduced-motion: no-preference) {
  main {
    animation: pg-fade var(--pg-fade) both;
  }
}

@keyframes pg-fade {
  from {
    opacity: 0;
  }
}

a {
  color: var(--pg-link);
  text-underline-offset: 0.2em;
}

a:hover {
  text-decoration-thickness: var(--pg-focus);
}

:focus-visible {
  outline: var(--pg-focus) solid var(--pg-focus-ring);
  outline-offset: var(--pg-focus);
  border-radius: var(--pg-radius-control);
}

.skip {
  position: absolute;
  z-index: 2;
  left: var(--pg-space-4);
  top: calc(-1 * var(--pg-space-9));
  padding: var(--pg-space-2) var(--pg-space-4);
  background: var(--pg-accent);
  color: var(--pg-on-accent);
  border-radius: var(--pg-radius-control);
}

.skip:focus {
  top: var(--pg-space-4);
}

.wrap {
  max-width: var(--pg-page);
  margin: 0 auto;
  padding: 0 var(--pg-space-5);
}

.wrap-docs {
  max-width: var(--pg-docs-page);
}

h1,
h2,
h3 {
  font-weight: var(--pg-weight-medium);
  letter-spacing: var(--pg-tracking-title-v4);
  line-height: var(--pg-leading-tight);
}

h1 {
  font-size: var(--pg-text-title-v4);
  font-weight: var(--pg-weight-strong);
  margin: 0 0 var(--pg-space-3);
}

h2 {
  font-size: var(--pg-text-h2-v4);
  margin: var(--pg-space-7) 0 var(--pg-space-3);
}

h3 {
  font-size: var(--pg-text-md);
  letter-spacing: 0;
  margin: var(--pg-space-6) 0 var(--pg-space-2);
}

strong,
b,
th {
  font-weight: var(--pg-weight-strong);
}

p,
ul,
ol {
  margin: 0 0 var(--pg-space-4);
}

li + li {
  margin-top: var(--pg-space-2);
}

code,
kbd {
  font-family: var(--pg-font-mono);
  font-size: var(--pg-text-code);
}

pre {
  overflow-x: auto;
  padding: var(--pg-space-4);
  background: var(--pg-card);
  border: var(--pg-line) solid var(--pg-hairline);
  border-radius: var(--pg-radius-control);
  font-size: var(--pg-text-sm);
}

.muted,
.lede {
  color: var(--pg-text-muted);
}

.lede {
  font-size: var(--pg-text-lg);
  max-width: var(--pg-measure-lede);
}

.eyebrow,
.label {
  font-size: var(--pg-text-sm);
  color: var(--pg-text-muted);
  margin: 0 0 var(--pg-space-2);
}

/* Header: the logotype, four words, one button (and the X icon, when
   there is a handle). A hairline under it, the one rule on the page. */

.site-header {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--pg-canvas);
  border-bottom: var(--pg-line) solid var(--pg-hairline);
}

.site-header .wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--pg-space-3) var(--pg-space-5);
  min-height: var(--pg-header);
}

.brand {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
}

.logotype {
  display: block;
  height: var(--pg-logotype);
  width: auto;
}

img.on-light {
  display: none;
}

:root:has(#pg-theme-light:checked) img.on-light {
  display: block;
}

:root:has(#pg-theme-light:checked) img.on-dark {
  display: none;
}

.site-nav {
  margin-right: auto;
}

.site-nav ul {
  display: flex;
  gap: var(--pg-space-5);
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-nav li + li {
  margin: 0;
}

.site-nav a,
.site-footer a {
  color: var(--pg-text-muted);
  text-decoration: none;
  font-size: var(--pg-text-sm);
}

.site-nav a:hover,
.site-nav a[aria-current],
.site-footer a:hover {
  color: var(--pg-text);
}

.header-actions {
  display: flex;
  align-items: center;
  gap: var(--pg-space-4);
}

.x-link {
  display: inline-flex;
  color: var(--pg-text-muted);
}

.x-link:hover {
  color: var(--pg-text);
}

/* Buttons: soft, filled, one size step per role. */

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--pg-space-2);
  min-height: var(--pg-space-7);
  padding: 0 var(--pg-space-5);
  background: var(--pg-accent);
  color: var(--pg-on-accent);
  font-weight: var(--pg-weight-medium);
  font-size: var(--pg-text-md);
  text-decoration: none;
  border: var(--pg-line) solid var(--pg-accent-edge);
  border-radius: var(--pg-radius-pill);
  transition: background var(--pg-motion);
}

.button:hover {
  text-decoration: none;
  background: var(--pg-accent-edge);
}

.button-sm {
  min-height: var(--pg-space-6);
  padding: 0 var(--pg-space-4);
  font-size: var(--pg-text-sm);
}

.button-lg {
  min-height: var(--pg-space-8);
  padding: 0 var(--pg-space-7);
  font-size: var(--pg-text-lg);
}

.button-quiet,
.button-outline {
  background: transparent;
  color: var(--pg-text);
  border-color: var(--pg-border-strong);
}

.button-grey {
  background: var(--pg-card-hover);
  color: var(--pg-text);
  border-color: var(--pg-border-strong);
}

.button-quiet:hover,
.button-outline:hover,
.button-grey:hover {
  background: var(--pg-card-hover);
}

.button[aria-disabled="true"] {
  background: var(--pg-card);
  color: var(--pg-text-muted);
  border-color: var(--pg-border-strong);
  cursor: not-allowed;
}

.actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pg-space-3);
  margin: var(--pg-space-6) 0 0;
}

/* The visual: Pigeon's own window, drawn in HTML and the tokens. It is a
   picture (aria-hidden), not an interface. */

.window {
  display: grid;
  grid-template-columns: var(--pg-window-list) minmax(0, 1fr);
  max-width: var(--pg-window);
  margin: 0 auto;
  background: var(--pg-card);
  border-radius: var(--pg-radius-lg);
  overflow: hidden;
  font-size: var(--pg-text-sm);
  text-align: left;
}

.window-side {
  padding: var(--pg-space-5) var(--pg-space-3);
  background: var(--pg-window-side);
}

/* No display here: the theme's on-dark / on-light rule picks the mark. */
.w-mark {
  height: var(--pg-mark-size);
  width: auto;
  margin: 0 var(--pg-space-3) var(--pg-space-5);
}

.w-chat {
  display: flex;
  align-items: center;
  gap: var(--pg-space-3);
  padding: var(--pg-space-2) var(--pg-space-3);
  border-radius: var(--pg-radius-control);
  color: var(--pg-text-muted);
}

.w-chat b {
  display: block;
  color: var(--pg-text);
  font-weight: var(--pg-weight-medium);
}

.w-chat.is-open {
  background: var(--pg-pill);
}

.w-avatar {
  flex: none;
  display: grid;
  place-items: center;
  width: var(--pg-avatar);
  height: var(--pg-avatar);
  border-radius: var(--pg-radius-pill);
  background: var(--pg-pill);
  color: var(--pg-text);
  font-size: var(--pg-text-xs);
}

.is-open .w-avatar {
  background: var(--pg-accent);
  color: var(--pg-on-accent);
}

.window-main {
  display: flex;
  flex-direction: column;
  gap: var(--pg-space-3);
  padding: var(--pg-space-5) var(--pg-space-6) var(--pg-space-6);
}

.w-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: var(--pg-space-3);
  border-bottom: var(--pg-line) solid var(--pg-hairline);
  font-weight: var(--pg-weight-medium);
}

.w-sealed {
  color: var(--pg-text-muted);
  font-weight: var(--pg-weight-body);
}

.w-msg {
  max-width: var(--pg-bubble-max);
  padding: var(--pg-space-2) var(--pg-space-4);
  border-radius: var(--pg-radius-card);
  background: var(--pg-pill);
}

.w-msg.is-mine {
  align-self: flex-end;
  background: var(--pg-accent);
  color: var(--pg-on-accent);
}

.w-msg.is-mine .icon {
  color: inherit;
}

.w-file {
  display: flex;
  align-items: center;
  gap: var(--pg-space-3);
}

.w-day {
  align-self: center;
  color: var(--pg-text-muted);
  font-size: var(--pg-text-xs);
}

.w-compose {
  margin-top: var(--pg-space-3);
  padding: var(--pg-space-3) var(--pg-space-4);
  border: var(--pg-line) solid var(--pg-hairline);
  border-radius: var(--pg-radius-pill);
  color: var(--pg-text-muted);
}

.icon {
  display: block;
  color: var(--pg-text-muted);
}

/* Insights and About: one readable column. */

.article {
  max-width: var(--pg-article);
  margin: 0 auto;
  padding: var(--pg-space-9) 0 var(--pg-space-8);
}

.article h1 {
  font-size: var(--pg-text-title-v4);
}

.article .meta {
  color: var(--pg-text-muted);
  font-size: var(--pg-text-sm);
  margin-bottom: var(--pg-space-6);
}

.post-list {
  list-style: none;
  padding: 0;
  margin: var(--pg-space-6) 0 0;
}

.post-list li {
  padding: var(--pg-space-5) 0;
  border-top: var(--pg-line) solid var(--pg-hairline);
}

.post-list h2 {
  font-size: var(--pg-text-lg);
  margin: 0 0 var(--pg-space-1);
}

.post-list a {
  color: var(--pg-text);
  text-decoration: none;
}

.post-list a:hover {
  color: var(--pg-link);
}

/* The docs overview's table of what Pigeon does. */

.what th[scope="row"] {
  white-space: nowrap;
  font-weight: var(--pg-weight-medium);
}

.what td {
  color: var(--pg-text-muted);
}

.doc-links {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
  gap: var(--pg-space-5) var(--pg-space-6);
  list-style: none;
  padding: 0;
  margin: var(--pg-space-5) 0 0;
}

.doc-links li + li {
  margin: 0;
}

.doc-links a {
  font-weight: var(--pg-weight-medium);
}

.doc-links p {
  margin: var(--pg-space-1) 0 0;
  color: var(--pg-text-muted);
  font-size: var(--pg-text-sm);
}

.glossary dt {
  font-weight: var(--pg-weight-medium);
  margin-top: var(--pg-space-5);
}

.glossary dd {
  margin: var(--pg-space-1) 0 0;
  color: var(--pg-text-muted);
}

/* A retired URL's stub, seen only for the instant before it moves on. */

.moved {
  max-width: var(--pg-article);
  margin: 0 auto;
  padding: var(--pg-space-9) var(--pg-space-5);
}

/* Installation: the download moment. The first system shows; #linux or
   #windows in the address shows that one instead (CSS :target, no script). */

.dl {
  margin: var(--pg-space-4) 0 0;
}

.dl-option {
  display: none;
}

.dl-option.dl-default,
.dl-option:target {
  display: block;
}

.dl:has(.dl-option:target) .dl-default:not(:target) {
  display: none;
}

.dl-meta {
  margin: var(--pg-space-3) 0 0;
  font-size: var(--pg-text-sm);
  color: var(--pg-text-muted);
}

.dl-other,
.small-links {
  margin: var(--pg-space-6) 0 0;
  font-size: var(--pg-text-sm);
  color: var(--pg-text-muted);
}

.dl-other a,
.small-links a {
  color: var(--pg-text-muted);
}

.dl-other a:hover,
.small-links a:hover {
  color: var(--pg-text);
}

/* Docs: sidebar, article, pager. */

.docs-body {
  display: grid;
  grid-template-columns: var(--pg-sidebar) minmax(0, 1fr);
  gap: var(--pg-space-8);
}

.sidebar {
  grid-column: 1;
  grid-row: 1;
  /* Not sticky: the whole tree shows, with no scroll box inside the page. */
  align-self: start;
  padding: var(--pg-space-6) 0;
  font-size: var(--pg-text-sm);
}

.doc {
  overflow-wrap: break-word;
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  padding: var(--pg-space-7) 0 var(--pg-space-8);
}

.doc code {
  overflow-wrap: anywhere;
}

.side-group + .side-group {
  margin-top: var(--pg-space-5);
}

.side-group h2 {
  font-size: var(--pg-text-xs);
  font-weight: 400;
  letter-spacing: 0;
  color: var(--pg-text-muted);
  margin: 0 0 var(--pg-space-2);
  padding: 0 var(--pg-space-3);
}

.sidebar ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.sidebar li + li {
  margin-top: 0;
}

.sidebar a,
.sidebar summary {
  display: flex;
  align-items: center;
  gap: var(--pg-space-2);
  padding: var(--pg-space-1) var(--pg-space-3);
  min-height: var(--pg-space-6);
  color: var(--pg-text);
  text-decoration: none;
  border-radius: var(--pg-radius-control);
}

.sidebar a:hover,
.sidebar summary:hover {
  background: var(--pg-card);
}

.sidebar a[aria-current="page"] {
  background: var(--pg-pill);
  font-weight: var(--pg-weight-medium);
}

.sidebar summary {
  cursor: pointer;
  list-style: none;
}

.sidebar summary::-webkit-details-marker {
  display: none;
}

.sidebar summary::after {
  content: "›";
  margin-left: auto;
  color: var(--pg-text-muted);
  transition: transform var(--pg-motion);
}

.sidebar details[open] > summary::after {
  transform: rotate(90deg);
}

.sidebar details ul {
  margin-left: var(--pg-space-3);
  padding-left: var(--pg-space-2);
  border-left: var(--pg-line) solid var(--pg-hairline);
}

.badge,
.chip,
.tag {
  display: inline-block;
  padding: 0 var(--pg-space-2);
  font-size: var(--pg-text-xs);
  font-weight: 400;
  line-height: var(--pg-leading);
  letter-spacing: 0;
  color: var(--pg-text);
  background: var(--pg-pill);
  border-radius: var(--pg-radius-pill);
  vertical-align: middle;
  white-space: nowrap;
}

.badge {
  color: var(--pg-link);
}

.tag-built {
  color: var(--pg-success);
}

.tag-planned,
.tag-draft {
  color: var(--pg-text-muted);
}

.doc h1,
.doc .page-title {
  font-size: var(--pg-text-title-v4);
  letter-spacing: var(--pg-tracking-title-v4);
  line-height: var(--pg-leading-tight);
  max-width: var(--pg-measure-title);
}

.doc .lede {
  margin-bottom: var(--pg-space-6);
}

.prose {
  max-width: var(--pg-measure-doc);
}

.prose h2 {
  font-size: var(--pg-text-h2-v4);
}

.section {
  padding-top: var(--pg-space-7);
}

.section > h2 {
  margin-top: 0;
}

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
  gap: var(--pg-space-4);
  list-style: none;
  margin: var(--pg-space-5) 0 0;
  padding: 0;
}

.cards-3 {
  grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
}

.cards li + li {
  margin-top: 0;
}

.card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--pg-space-2);
  padding: var(--pg-space-5);
  background: var(--pg-card);
  border-radius: var(--pg-radius-card);
  transition: background var(--pg-motion);
}

.card:hover {
  background: var(--pg-card-hover);
}

.card h2,
.card h3 {
  font-size: var(--pg-text-md);
  font-weight: var(--pg-weight-medium);
  margin: var(--pg-space-2) 0 0;
  letter-spacing: 0;
}

.card p {
  margin: 0;
  color: var(--pg-text-muted);
  font-size: var(--pg-text-sm);
}

.card a.card-link {
  color: var(--pg-text);
  text-decoration: none;
}

/* The whole card is the link's target, for pointers; the link text is
   still the one accessible name. */
.card a.card-link::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: var(--pg-radius-card);
}

.card .chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pg-space-1);
  margin-top: auto;
  padding-top: var(--pg-space-2);
}

.card .more {
  margin-top: auto;
  color: var(--pg-link);
  font-size: var(--pg-text-sm);
}

.pager {
  display: flex;
  justify-content: space-between;
  gap: var(--pg-space-4);
  margin-top: var(--pg-space-8);
  padding-top: var(--pg-space-5);
  border-top: var(--pg-line) solid var(--pg-hairline);
}

.pager a {
  color: var(--pg-text);
  text-decoration: none;
  font-weight: var(--pg-weight-medium);
}

.pager-prev::before {
  content: "← ";
  color: var(--pg-text-muted);
}

.pager-next::after {
  content: " →";
  color: var(--pg-text-muted);
}

.pager-next {
  margin-left: auto;
}

.pager a:hover {
  color: var(--pg-link);
}

/* What v2's technical pages carry, restyled quietly. */

.sources {
  font-size: var(--pg-text-sm);
  color: var(--pg-text-muted);
}

.note {
  padding: var(--pg-space-4) var(--pg-space-5);
  background: var(--pg-card);
  border-radius: var(--pg-radius-card);
}

.checksum {
  font-family: var(--pg-font-mono);
  font-size: var(--pg-text-xs);
  word-break: break-all;
  color: var(--pg-text-muted);
}

.table-scroll {
  overflow-x: auto;
}

table {
  border-collapse: collapse;
  width: 100%;
  margin: 0 0 var(--pg-space-5);
  font-size: var(--pg-text-sm);
}

th,
td {
  text-align: left;
  vertical-align: top;
  padding: var(--pg-space-3) var(--pg-space-3) var(--pg-space-3) 0;
  border-bottom: var(--pg-line) solid var(--pg-hairline);
}

.steps {
  padding-left: var(--pg-space-5);
}

.steps h3 {
  margin-top: 0;
}

/* Footer: small text, nothing else. */

.site-footer {
  border-top: var(--pg-line) solid var(--pg-hairline);
  font-size: var(--pg-text-sm);
  color: var(--pg-text-muted);
}

.site-footer .wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--pg-space-3) var(--pg-space-5);
  padding-top: var(--pg-space-5);
  padding-bottom: var(--pg-space-5);
}

.site-footer p {
  margin: 0 auto 0 0;
}

.site-footer ul {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pg-space-2) var(--pg-space-5);
  list-style: none;
  margin: 0;
  padding: 0;
}

.site-footer li + li {
  margin: 0;
}

.theme-switch {
  display: inline-flex;
  align-items: center;
  gap: var(--pg-space-2);
  cursor: pointer;
}

.theme-switch input {
  accent-color: var(--pg-accent);
  width: var(--pg-space-4);
  height: var(--pg-space-4);
  margin: 0;
}

/* Website v5: the home page. Full-bleed bands on one grid, a large
   headline, at most one line, and the app itself doing the explaining. */

.wrap-v5 {
  max-width: var(--pg-page-v5);
  margin: 0 auto;
  padding: 0 var(--pg-space-5);
}

.v5-hero {
  padding: var(--pg-band-v5) 0;
  text-align: center;
}

.v5-hero h1 {
  font-size: var(--pg-text-hero-v5);
  font-weight: var(--pg-weight-strong);
  letter-spacing: var(--pg-tracking-hero-v5);
  line-height: var(--pg-leading-display);
  max-width: var(--pg-measure-hero-v5);
  margin: 0 auto var(--pg-space-5);
}

.v5-lede {
  font-size: var(--pg-text-lede-v5);
  color: var(--pg-text-muted);
  max-width: var(--pg-measure-lede-v5);
  margin: 0 auto;
}

.v5-hero .actions {
  justify-content: center;
  margin-bottom: var(--pg-space-8);
}

.v5-band {
  padding: var(--pg-band-v5) 0;
}

.v5-alt {
  background: var(--pg-card);
}

.v5-band h2 {
  font-size: var(--pg-text-section-v5);
  font-weight: var(--pg-weight-strong);
  letter-spacing: var(--pg-tracking-hero-v5);
  line-height: var(--pg-leading-display);
  margin: 0;
}

.v5-line {
  margin: var(--pg-space-4) 0 0;
  font-size: var(--pg-text-lede-v5);
  color: var(--pg-text-muted);
}

.v5-center {
  text-align: center;
}

.v5-split {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  align-items: center;
  gap: var(--pg-space-8);
}

.v5-window {
  max-width: var(--pg-window-v5);
}

/* The windows below the hero: one pane, a chat as Pigeon draws it. */

.window-solo {
  display: block;
  max-width: var(--pg-panel-v5);
  width: 100%;
  margin: 0;
}

.v5-alt .window,
.v5-alt .w-msg:not(.is-mine) {
  background: var(--pg-canvas);
}

.v5-alt .window .w-msg:not(.is-mine) {
  background: var(--pg-pill);
}

.window-solo .window-main {
  padding: var(--pg-space-5);
}

.w-from {
  display: block;
  font-size: var(--pg-text-xs);
  color: var(--pg-text-muted);
}

.w-people {
  display: flex;
}

.w-people i {
  width: var(--pg-space-5);
  height: var(--pg-space-5);
  border-radius: var(--pg-radius-pill);
  border: var(--pg-focus) solid var(--pg-card);
  background: var(--pg-tag-component);
}

.w-people i + i {
  margin-left: calc(-1 * var(--pg-space-2));
}

.w-people i:nth-child(2) {
  background: var(--pg-tag-platform);
}

.w-people i:nth-child(3) {
  background: var(--pg-tag-security);
}

.w-people i:nth-child(4) {
  background: var(--pg-tag-status);
}

.w-photo {
  align-self: flex-start;
  padding: var(--pg-space-1);
  overflow: hidden;
}

.photo {
  display: block;
  width: 100%;
  max-width: var(--pg-photo);
  height: auto;
  border-radius: var(--pg-radius-control);
}

.ph-wall {
  fill: var(--pg-surface-2);
}

.ph-unit {
  fill: var(--pg-tag-status);
}

.ph-line {
  fill: none;
  stroke: var(--pg-canvas);
  stroke-width: 3;
}

.ph-win {
  fill: var(--pg-tag-platform);
}

.ph-top {
  fill: var(--pg-text-muted);
}

.ph-knob {
  fill: var(--pg-canvas);
}

.v5-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, var(--pg-panel-v5)));
  justify-content: center;
  align-items: start;
  gap: var(--pg-space-6);
  margin-top: var(--pg-space-8);
}

.v5-stack {
  display: grid;
  gap: var(--pg-space-6);
}

/* Sealed: the same words leave one device and arrive on another; between
   them the network carries only a locked envelope. */

.seal {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--pg-space-4);
  font-size: var(--pg-text-lg);
}

.seal .w-msg {
  white-space: nowrap;
}

.seal-track {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--pg-space-3);
  padding: var(--pg-space-3) var(--pg-space-4);
  border: var(--pg-line) dashed var(--pg-border-strong);
  border-radius: var(--pg-radius-pill);
  overflow: hidden;
}

.seal-lock .icon {
  color: var(--pg-tag-security);
}

.seal-bits {
  display: flex;
  flex: 1;
  gap: var(--pg-space-1);
}

.seal-bits i {
  flex: 1;
  height: var(--pg-space-3);
  border-radius: var(--pg-radius-sm);
  background: var(--pg-border);
}

.seal-bits i:nth-child(3n) {
  background: var(--pg-tag-component-bg);
}

.seal-dot {
  position: absolute;
  left: 0;
  width: var(--pg-space-3);
  height: var(--pg-space-3);
  border-radius: var(--pg-radius-pill);
  background: var(--pg-accent-edge);
  opacity: 0;
}

/* Yours alone: 24 places, each word hidden, numbered by the list. */

.seed {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: var(--pg-space-3);
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: seed;
}

.seed li + li {
  margin: 0;
}

.seed li {
  display: flex;
  align-items: center;
  gap: var(--pg-space-2);
  height: var(--pg-seed-tile);
  padding: 0 var(--pg-space-3);
  border-radius: var(--pg-radius-control);
  background: var(--pg-canvas);
  color: var(--pg-text-muted);
  font-size: var(--pg-text-xs);
}

.seed li::before {
  counter-increment: seed;
  content: counter(seed);
  min-width: var(--pg-space-4);
}

.seed li::after {
  content: "";
  flex: 1;
  height: var(--pg-dot);
  border-radius: var(--pg-radius-pill);
  background: var(--pg-border);
}

.seed li:nth-child(5n + 2)::after {
  background: var(--pg-tag-component);
}

.v5-close {
  text-align: center;
}

.v5-mark {
  width: auto;
  height: var(--pg-space-8);
  margin: 0 auto var(--pg-space-6);
}

img.v5-mark.on-dark {
  display: block;
}

/* Motion. The hero conversation plays once; each band rises in as it
   scrolls into view where the browser has scroll timelines. All of it is
   off under prefers-reduced-motion, and every end state is the resting
   page, so a browser without the features shows it complete. */

@keyframes pg-rise {
  from {
    opacity: 0;
    transform: translateY(var(--pg-rise));
  }
}

@keyframes pg-travel {
  0% {
    opacity: 0;
    transform: translateX(0);
  }
  15%,
  85% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateX(var(--pg-travel));
  }
}

@media (prefers-reduced-motion: no-preference) {
  .seq {
    animation: pg-rise var(--pg-rise-time) both;
  }

  .seq-1 {
    animation-delay: calc(1 * var(--pg-step));
  }

  .seq-2 {
    animation-delay: calc(2 * var(--pg-step));
  }

  .seq-3 {
    animation-delay: calc(3 * var(--pg-step));
  }

  .seq-4 {
    animation-delay: calc(4 * var(--pg-step));
  }

  .seal-dot {
    left: var(--pg-space-4);
    animation: pg-travel 2.4s ease-in-out infinite;
  }

  @supports (animation-timeline: view()) {
    .reveal {
      animation: pg-rise linear both;
      animation-timeline: view();
      animation-range: entry 0% entry 60%;
    }
  }
}

/* Website v5: tagged docs. A tag is a two-part pill, the kind in grey
   and the value in its kind's colour on a tint of it. */

.tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pg-space-2);
  list-style: none;
  margin: 0 0 var(--pg-space-5);
  padding: 0;
}

.tags li + li {
  margin: 0;
}

.tag:has(.tag-k) {
  display: inline-flex;
  align-items: stretch;
  padding: 0;
  overflow: hidden;
  font-size: var(--pg-text-xs);
  line-height: var(--pg-leading);
  font-weight: var(--pg-weight-medium);
  border-radius: var(--pg-radius-pill);
}

.tag-k {
  padding: 0 var(--pg-tag-pad) 0 var(--pg-space-3);
  background: var(--pg-pill);
  color: var(--pg-text-muted);
  font-weight: var(--pg-weight-body);
}

.tag:has(.tag-k) {
  padding-right: var(--pg-space-3);
}

.tag-k {
  margin-right: var(--pg-tag-pad);
}

.tag-component {
  color: var(--pg-tag-component);
  background: var(--pg-tag-component-bg);
}

.tag-platform {
  color: var(--pg-tag-platform);
  background: var(--pg-tag-platform-bg);
}

.tag-status {
  color: var(--pg-tag-status);
  background: var(--pg-tag-status-bg);
}

.tag-security {
  color: var(--pg-tag-security);
  background: var(--pg-tag-security-bg);
}

.doc h2 + .tags,
.doc h3 + .tags {
  margin: calc(-1 * var(--pg-space-1)) 0 var(--pg-space-4);
}

/* A spec table: a term and its value, the value often code. */

.spec th[scope="row"] {
  width: 34%;
  font-weight: var(--pg-weight-medium);
}

.spec td {
  color: var(--pg-text-muted);
}

.code {
  margin: 0 0 var(--pg-space-5);
}

.code figcaption {
  display: flex;
  justify-content: space-between;
  padding: var(--pg-space-2) var(--pg-space-4);
  background: var(--pg-pill);
  border: var(--pg-line) solid var(--pg-hairline);
  border-bottom: 0;
  border-radius: var(--pg-radius-control) var(--pg-radius-control) 0 0;
  font-size: var(--pg-text-xs);
  color: var(--pg-text-muted);
}

.code pre {
  margin: 0;
  border-radius: 0 0 var(--pg-radius-control) var(--pg-radius-control);
  line-height: var(--pg-leading);
}

.callout {
  margin: 0 0 var(--pg-space-5);
  padding: var(--pg-space-4) var(--pg-space-5);
  background: var(--pg-card);
  border-left: var(--pg-focus) solid var(--pg-tag-security);
  border-radius: 0 var(--pg-radius-card) var(--pg-radius-card) 0;
}

.callout-component {
  border-left-color: var(--pg-tag-component);
}

.callout p:last-child {
  margin-bottom: 0;
}

.legend {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
  gap: var(--pg-space-4);
  list-style: none;
  margin: var(--pg-space-4) 0 var(--pg-space-5);
  padding: 0;
}

.legend li + li {
  margin: 0;
}

.legend p {
  margin: var(--pg-space-2) 0 0;
  font-size: var(--pg-text-sm);
  color: var(--pg-text-muted);
}

/* The docs in three columns on a wide screen: the tree, the article, and
   the page's own contents; the tree folds into a drawer on a phone. */

.docs-body {
  grid-template-columns: var(--pg-sidebar) minmax(0, 1fr) var(--pg-toc);
  gap: var(--pg-space-7);
}

.sidebar {
  position: sticky;
  top: var(--pg-header);
  max-height: calc(var(--pg-viewport) - var(--pg-header));
  overflow-y: auto;
}

.doc {
  grid-column: 2;
}

.toc {
  grid-column: 3;
  grid-row: 1;
  align-self: start;
  position: sticky;
  top: var(--pg-header);
  padding: var(--pg-space-7) 0;
  font-size: var(--pg-text-sm);
}

.toc-title {
  font-size: var(--pg-text-xs);
  color: var(--pg-text-muted);
  margin: 0 0 var(--pg-space-2);
}

.toc ul {
  list-style: none;
  margin: 0;
  padding: 0 0 0 var(--pg-space-3);
  border-left: var(--pg-line) solid var(--pg-hairline);
}

.toc li + li {
  margin-top: var(--pg-space-2);
}

.toc a {
  color: var(--pg-text-muted);
  text-decoration: none;
}

.toc a:hover {
  color: var(--pg-text);
}

.drawer {
  display: none;
}

.drawer summary {
  display: flex;
  align-items: center;
  gap: var(--pg-space-3);
  min-height: var(--pg-space-7);
  padding: 0 var(--pg-space-4);
  background: var(--pg-card);
  border-radius: var(--pg-radius-control);
  cursor: pointer;
  list-style: none;
  font-size: var(--pg-text-sm);
}

.drawer summary::-webkit-details-marker {
  display: none;
}

.drawer summary::before {
  content: "☰";
  color: var(--pg-text-muted);
}

.drawer-k {
  color: var(--pg-text-muted);
}

.drawer-here {
  font-weight: var(--pg-weight-medium);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.drawer summary::after {
  content: "›";
  margin-left: auto;
  color: var(--pg-text-muted);
  transform: rotate(90deg);
  transition: transform var(--pg-motion);
}

.drawer[open] summary::after {
  transform: rotate(-90deg);
}

.drawer[open] summary {
  border-radius: var(--pg-radius-control) var(--pg-radius-control) 0 0;
}

.drawer-nav {
  padding: var(--pg-space-3) var(--pg-space-2) var(--pg-space-4);
  background: var(--pg-card);
  border-radius: 0 0 var(--pg-radius-control) var(--pg-radius-control);
  font-size: var(--pg-text-sm);
}

.drawer-nav .side-group + .side-group {
  margin-top: var(--pg-space-4);
}

.drawer-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.drawer-nav li + li {
  margin: 0;
}

.drawer-nav a,
.drawer-nav summary {
  display: flex;
  align-items: center;
  min-height: var(--pg-space-7);
  padding: 0 var(--pg-space-3);
  background: transparent;
  color: var(--pg-text);
  text-decoration: none;
  border-radius: var(--pg-radius-control);
}

.drawer-nav summary::before {
  content: none;
}

.drawer-nav a[aria-current="page"] {
  background: var(--pg-pill);
  font-weight: var(--pg-weight-medium);
}

.drawer-nav details ul {
  margin-left: var(--pg-space-3);
  border-left: var(--pg-line) solid var(--pg-hairline);
}

@media (max-width: 1200px) {
  .docs-body {
    grid-template-columns: var(--pg-sidebar) minmax(0, 1fr);
  }

  .toc {
    display: none;
  }
}

@media (max-width: 960px) {
  .docs-body {
    display: block;
  }

  .sidebar {
    display: none;
  }

  .drawer {
    display: block;
    margin-bottom: var(--pg-space-6);
  }

  .doc {
    padding-top: var(--pg-space-5);
  }

  .window {
    grid-template-columns: minmax(0, 1fr);
  }

  .window-side {
    display: none;
  }

  .v5-split {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--pg-space-7);
  }

  .v5-copy {
    text-align: center;
  }

  .v5-pair {
    grid-template-columns: minmax(0, var(--pg-panel-v5));
  }
}

@media (max-width: 560px) {
  .site-header .wrap {
    flex-wrap: wrap;
    gap: var(--pg-space-3);
    padding-top: var(--pg-space-3);
    padding-bottom: var(--pg-space-3);
  }

  .site-nav {
    order: 3;
    width: 100%;
  }

  .header-actions {
    margin-left: auto;
  }

  .article {
    padding: var(--pg-space-8) 0 var(--pg-space-7);
  }

  .button-lg {
    padding: 0 var(--pg-space-6);
  }

  .window-main {
    padding: var(--pg-space-4);
  }

  .seed {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--pg-space-2);
  }

  .seal {
    grid-template-columns: minmax(0, 1fr);
    justify-items: center;
  }

  .seal-track {
    width: 100%;
  }

  .seal .w-msg:last-child {
    justify-self: end;
  }

  .seal .w-msg:first-child {
    justify-self: start;
  }

  .spec th[scope="row"] {
    width: auto;
  }
}

/* The invite request form (ADR-0018). It is served by
   intake.pigeonmessage.io with this stylesheet; no page of this site has a
   form. */

/* The form is hidden until its script runs; [hidden] must beat display. */
.intake-form[hidden],
.intake-note[hidden] {
  display: none;
}

.intake-form {
  display: grid;
  gap: var(--pg-space-5);
  max-width: var(--pg-measure-lede);
  margin-top: var(--pg-space-6);
}

/* A <button> doesn't inherit the page's font by default. */
.intake-form button {
  font-family: inherit;
  cursor: pointer;
}

.intake-form button:disabled {
  cursor: progress;
}

.field {
  display: grid;
  gap: var(--pg-space-2);
}

.field label {
  font-weight: var(--pg-weight-medium);
}

.field input[type="email"] {
  min-height: var(--pg-space-7);
  padding: 0 var(--pg-space-4);
  font: inherit;
  color: var(--pg-text);
  background: var(--pg-card);
  border: var(--pg-line) solid var(--pg-border-strong);
  border-radius: var(--pg-radius-control);
}

.field input[aria-invalid="true"] {
  border-color: var(--pg-danger);
}

.field .hint {
  margin: 0;
  color: var(--pg-text-muted);
  font-size: var(--pg-text-sm);
}

.field-check {
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: var(--pg-space-3);
}

.field-check input {
  accent-color: var(--pg-accent);
  width: var(--pg-space-5);
  height: var(--pg-space-5);
  margin: 0;
}

.field-check label {
  font-weight: var(--pg-weight-body);
}

/* The honeypot: in the form for a bot, off screen and out of the
   accessibility tree for a person. */
.intake-hp {
  position: absolute;
  width: var(--pg-line);
  height: var(--pg-line);
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.intake-status:empty {
  display: none;
}

.intake-status {
  margin: 0;
  padding: var(--pg-space-4);
  background: var(--pg-card);
  border-radius: var(--pg-radius-control);
}

.intake-status.is-error {
  color: var(--pg-danger);
}

.intake-status.is-done {
  color: var(--pg-success);
  font-size: var(--pg-text-lg);
}

.intake-note {
  padding: var(--pg-space-4) var(--pg-space-5);
  background: var(--pg-card);
  border-radius: var(--pg-radius-card);
}

/* ALTCHA's widget (its own altcha.css) in the site's colours. */
altcha-widget {
  --altcha-color-base: var(--pg-card);
  --altcha-color-base-content: var(--pg-text);
  --altcha-color-neutral: var(--pg-border-strong);
  --altcha-color-primary: var(--pg-accent);
  --altcha-color-error: var(--pg-danger);
  --altcha-color-success: var(--pg-success);
  --altcha-border-radius: var(--pg-radius-control);
}
