/*
 * C1 platform foundation — Slice 1.
 *
 * Tokens, reset, focus treatment and base shell/nav/menu/notice/dialog styling
 * for the authenticated application, built with the same local fonts, palette
 * and focus standard already established by the nonprofit-registration C1 work
 * (src/public/css/nonprofit-registration-c1.css).
 *
 * ACTIVATION: every rule below (other than the @font-face declarations, which
 * cannot be scoped and are inert until a font-family references them) is
 * scoped under the `.c1-platform` activation class. The class is only applied
 * to the app shell when `C1_PLATFORM_SHELL=on` is set in the environment, so
 * loading this stylesheet alongside /output.css changes nothing by default.
 * Slice 1 intentionally ships the foundation in parallel with the legacy
 * Tailwind/DaisyUI system; removal is Slice 7.
 *
 * Slice 2 extends the same file, under the same scope and tokens, with the
 * shared component primitives (buttons, cards, fields and validation states,
 * section headings, nav links) that the legacy z-button / z-card / z-field
 * layer in src/public/main.css provides today.
 */

@font-face { font-family: 'Instrument Serif'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/c1/instrument-serif-latin-400-normal.woff2') format('woff2'); }
@font-face { font-family: 'Instrument Serif'; font-style: italic; font-weight: 400; font-display: swap; src: url('/fonts/c1/instrument-serif-latin-400-italic.woff2') format('woff2'); }
@font-face { font-family: Manrope; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/c1/manrope-latin-400-normal.woff2') format('woff2'); }
@font-face { font-family: Manrope; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/c1/manrope-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family: Manrope; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/c1/manrope-latin-600-normal.woff2') format('woff2'); }
@font-face { font-family: Manrope; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/c1/manrope-latin-700-normal.woff2') format('woff2'); }
@font-face { font-family: Manrope; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/c1/manrope-latin-800-normal.woff2') format('woff2'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/c1/ibm-plex-mono-latin-500-normal.woff2') format('woff2'); }

/* Tokens — palette, type and spacing carried over from the registration C1 flow. */
.c1-platform {
  --c1-cream: #f7f0e3;
  --c1-ink: #20201d;
  --c1-terracotta: #b95035;
  --c1-terracotta-dark: #8f3828;
  --c1-leaf: #385844;
  --c1-marigold: #e4a72c;
  --c1-marigold-dark: #b8821c;
  --c1-border: #c9bda9;
  --c1-muted: #625e55;
  --c1-focus: #145ca8;
  --c1-surface: #fffdf9;
  --c1-serif: 'Instrument Serif', Georgia, serif;
  --c1-sans: Manrope, sans-serif;
  --c1-mono: 'IBM Plex Mono', monospace;
  --c1-space-1: .25rem;
  --c1-space-2: .5rem;
  --c1-space-3: .75rem;
  --c1-space-4: 1rem;
  --c1-space-6: 1.5rem;
  --c1-radius-sm: .25rem;
  --c1-radius-md: .35rem;
  --c1-radius-pill: 999px;
  --c1-elevation-sm: 0 .5rem 1.5rem rgb(32 32 29 / .08);
  --c1-line-height: 1.5;
}

/* Reset — scoped, minimal, and limited to the shell subtree. */
.c1-platform { box-sizing: border-box; background: var(--c1-cream); color: var(--c1-ink); font-family: var(--c1-sans); line-height: var(--c1-line-height); overflow-x: clip; -webkit-font-smoothing: antialiased; }
.c1-platform *, .c1-platform *::before, .c1-platform *::after { box-sizing: inherit; }
.c1-platform img, .c1-platform svg { max-width: 100%; }
.c1-platform h1, .c1-platform h2, .c1-platform h3 { font-family: var(--c1-serif); font-weight: 400; line-height: 1.1; margin: 0; }

/* Focus — single standard, identical to the registration flow. */
.c1-platform a:focus-visible,
.c1-platform button:focus-visible,
.c1-platform input:focus-visible,
.c1-platform select:focus-visible,
.c1-platform textarea:focus-visible,
.c1-platform [tabindex]:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: 3px; }

/* Skip link. */
.c1-platform .c1-skip { position: absolute; left: -9999px; }
.c1-platform .c1-skip:focus { left: 1rem; top: 1rem; background: #fff; padding: var(--c1-space-2); z-index: 20; }

/* Shell. */
.c1-platform .c1-shell-main { flex: 1 1 auto; margin: var(--c1-space-4); min-width: 0; }

/* Nav. */
.c1-platform .c1-nav { align-items: center; background: var(--c1-surface); border-bottom: 1px solid var(--c1-border); display: flex; gap: var(--c1-space-3); padding: var(--c1-space-2) var(--c1-space-4); }
.c1-platform .c1-nav-start, .c1-platform .c1-nav-end { flex: 1 1 0%; min-width: 0; width: auto; display: flex; align-items: center; gap: var(--c1-space-2); }
.c1-platform .c1-nav-end { justify-content: flex-end; }
.c1-platform .c1-nav-center { min-width: 0; display: flex; align-items: center; }
.c1-platform .c1-nav-button { background: none; border: 0; border-radius: var(--c1-radius-pill); color: var(--c1-ink); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: var(--c1-space-2); }
.c1-platform .c1-nav-button:hover { background: var(--c1-cream); }
.c1-platform .c1-nav-link { border-radius: var(--c1-radius-sm); color: var(--c1-ink); font-weight: 500; padding: var(--c1-space-1) var(--c1-space-2); text-decoration: none; }
.c1-platform .c1-nav-link:hover { color: var(--c1-terracotta); }

/* Menu. */
.c1-platform .c1-menu { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); list-style: none; margin: var(--c1-space-2) 0 0; min-width: 13rem; padding: var(--c1-space-2); }
.c1-platform .c1-menu li { min-width: 0; }
.c1-platform .c1-menu a { border-radius: var(--c1-radius-sm); color: var(--c1-ink); display: block; overflow-wrap: anywhere; padding: var(--c1-space-2) var(--c1-space-3); text-decoration: none; }
.c1-platform .c1-menu a:hover { background: var(--c1-cream); }
.c1-platform .c1-menu-label { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; letter-spacing: .12em; padding: var(--c1-space-2) var(--c1-space-3); text-transform: uppercase; }
.c1-platform .c1-menu-separator { border-top: 1px solid var(--c1-border); margin-top: var(--c1-space-2); padding-top: var(--c1-space-2); }
/* Dropdown menus stay inside the viewport on narrow screens.
 *
 * The shell's only C1 menu is the nav dropdown, which lives inside
 * `.navbar-start` at the LEFT edge. A blanket `right: 0` anchored the menu to
 * the right edge of that narrow left-hand container and pushed most of it past
 * the left edge of a 320px viewport, so it must anchor from the left instead.
 * This matches the legacy shell, whose own right-anchoring rule in
 * src/public/main.css is deliberately scoped to `#main-container` dropdowns and
 * therefore never applied to the nav. Verified by rendered geometry in
 * src/c1-platform.geometry.spec.ts. */
@media (max-width: 42rem) {
  .c1-platform .c1-nav .c1-menu { left: 0; right: auto; max-width: calc(100vw - var(--c1-space-4)); }
}

/* Notices — success/danger/warning, matching the alert roles the shell renders. */
.c1-platform .c1-notice { border-left: .35rem solid var(--c1-marigold); background: #f9edc8; border-radius: var(--c1-radius-sm); color: var(--c1-ink); line-height: var(--c1-line-height); padding: var(--c1-space-4); }
.c1-platform .c1-notice--success { background: #eef5ef; border-left-color: var(--c1-leaf); }
.c1-platform .c1-notice--danger { background: #fbeae6; border-left-color: var(--c1-terracotta); }
.c1-platform .c1-notice--warning { background: #f9edc8; border-left-color: var(--c1-marigold); }

/* Dialog. */
.c1-platform .c1-dialog { background: transparent; border: 0; color: var(--c1-ink); padding: 0; }
.c1-platform .c1-dialog::backdrop { background: rgb(32 32 29 / .55); }
.c1-platform .c1-dialog-box { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); margin: auto; max-width: 32rem; padding: var(--c1-space-6); position: relative; width: 100%; }
.c1-platform .c1-dialog-close { position: absolute; right: var(--c1-space-3); top: var(--c1-space-3); }

/* Buttons — Slice 2. Filled primary (terracotta), outlined secondary, filled
 * accent (marigold with ink text for contrast). Disabled and busy states cover
 * both native <button> and anchor-as-button usage. */
.c1-platform .c1-button { align-items: center; background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-pill); color: var(--c1-ink); cursor: pointer; display: inline-flex; font-family: var(--c1-sans); font-size: 1rem; font-weight: 600; gap: var(--c1-space-2); justify-content: center; line-height: 1.2; min-height: 2.75rem; padding: var(--c1-space-3) var(--c1-space-6); text-decoration: none; transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease; }
.c1-platform .c1-button:hover { background: var(--c1-cream); }
.c1-platform .c1-button--primary { background: var(--c1-terracotta); border-color: var(--c1-terracotta); color: #fff; }
.c1-platform .c1-button--primary:hover { background: var(--c1-terracotta-dark); border-color: var(--c1-terracotta-dark); }
.c1-platform .c1-button--secondary { background: var(--c1-surface); border-color: var(--c1-border); color: var(--c1-leaf); }
.c1-platform .c1-button--secondary:hover { background: var(--c1-cream); border-color: var(--c1-leaf); }
.c1-platform .c1-button--accent { background: var(--c1-marigold); border-color: var(--c1-marigold); color: var(--c1-ink); }
.c1-platform .c1-button--accent:hover { background: var(--c1-marigold-dark); border-color: var(--c1-marigold-dark); }
.c1-platform .c1-button:disabled, .c1-platform .c1-button[aria-disabled='true'] { cursor: not-allowed; opacity: .55; pointer-events: none; }
.c1-platform .c1-button[aria-busy='true'] { cursor: progress; opacity: .7; }

/* Cards. */
.c1-platform .c1-card { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); overflow: hidden; }
.c1-platform .c1-card-body { padding: var(--c1-space-6); }
.c1-platform .c1-card-title { font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; margin: 0 0 var(--c1-space-2); }

/* Fields and validation. The invalid state keys off aria-invalid, which the
 * native intake script already toggles, so no markup or script change is
 * needed to light it up. */
.c1-platform .c1-field { display: grid; gap: var(--c1-space-2); }
.c1-platform .c1-field-label { color: var(--c1-ink); font-size: .9rem; font-weight: 600; }
.c1-platform .c1-field-control { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-sm); color: var(--c1-ink); font: inherit; line-height: var(--c1-line-height); min-height: 2.75rem; padding: var(--c1-space-2) var(--c1-space-3); width: 100%; }
.c1-platform textarea.c1-field-control { min-height: 6rem; resize: vertical; }
.c1-platform .c1-field-control:hover { border-color: var(--c1-muted); }
.c1-platform .c1-field-control:disabled { background: var(--c1-cream); color: var(--c1-muted); cursor: not-allowed; }
.c1-platform .c1-field-control[aria-invalid='true'] { border-color: var(--c1-terracotta); box-shadow: inset 0 0 0 1px var(--c1-terracotta); }
.c1-platform .c1-field-error { color: var(--c1-terracotta-dark); font-size: .9rem; }
.c1-platform .c1-field-hint { color: var(--c1-muted); font-size: .9rem; }

/* Section heading (title + subtitle rule used above app tables and forms). */
.c1-platform .c1-section-header { border-bottom: 1px solid var(--c1-border); margin-bottom: var(--c1-space-4); padding-bottom: var(--c1-space-2); }
.c1-platform .c1-section-title { font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; }
.c1-platform .c1-section-subtitle { color: var(--c1-muted); font-size: .9rem; font-style: normal; margin: var(--c1-space-1) 0 0; }

/* Slice 3 — discovery surfaces (app/home, app/events, app/organizations, card
 * partials). Same scope and tokens; every hook sits next to its legacy class. */

/* Badges — card status pills; --info reuses the focus blue (the only blue token). */
.c1-platform .c1-badge { align-items: center; background: var(--c1-cream); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-pill); color: var(--c1-ink); display: inline-flex; font-family: var(--c1-mono); font-size: .68rem; font-weight: 500; height: auto; letter-spacing: .06em; line-height: 1; padding: var(--c1-space-1) var(--c1-space-2); text-transform: uppercase; white-space: nowrap; }
.c1-platform .c1-badge--success { background: var(--c1-leaf); border-color: var(--c1-leaf); color: #fff; }
.c1-platform .c1-badge--danger { background: var(--c1-terracotta); border-color: var(--c1-terracotta); color: #fff; }
.c1-platform .c1-badge--warning { background: var(--c1-marigold); border-color: var(--c1-marigold); color: var(--c1-ink); }
.c1-platform .c1-badge--info { background: var(--c1-focus); border-color: var(--c1-focus); color: #fff; }
.c1-platform .c1-badge--neutral { background: var(--c1-surface); border-color: var(--c1-border); color: var(--c1-muted); }
.c1-platform .c1-badge-row { display: flex; flex-wrap: wrap; gap: var(--c1-space-1); justify-content: center; }

/* Card sub-parts: link cards, media band (token colour under the name), meta. */
.c1-platform .c1-card--link { color: var(--c1-ink); display: flex; flex-direction: column; text-decoration: none; transition: border-color 150ms ease, box-shadow 150ms ease; }
.c1-platform .c1-card--link:hover { border-color: var(--c1-muted); box-shadow: 0 .75rem 2rem rgb(32 32 29 / .14); }
.c1-platform .c1-card-media { margin: 0; position: relative; }
.c1-platform .c1-card-media-band { background: var(--c1-leaf); border-bottom: 4px solid var(--c1-marigold); }
.c1-platform .c1-card-media-band--live { background: var(--c1-terracotta); }
.c1-platform .c1-card-media-band--past { background: var(--c1-muted); }
.c1-platform .c1-card-media-band--corporate { background: var(--c1-ink); }
.c1-platform .c1-card-media .c1-card-title { font-size: 1.25rem; margin: var(--c1-space-2); }
.c1-platform .c1-card-meta { color: var(--c1-muted); font-size: .8rem; text-align: center; }

/* Filters. Buttons and panels take a hook; option rows, checkboxes and labels
 * are styled as panel descendants. eventBinders.js marks the active button with
 * the legacy `btn-warning` class — the only state signal without a script
 * change — so it is styled here. */
.c1-platform .c1-filter-row { gap: var(--c1-space-1); }
.c1-platform .c1-filter-button { align-items: center; background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-pill); color: var(--c1-ink); cursor: pointer; display: inline-flex; font-family: var(--c1-sans); font-size: .875rem; font-weight: 600; gap: var(--c1-space-1); height: auto; line-height: 1.2; min-height: 2.25rem; padding: var(--c1-space-2) var(--c1-space-4); text-transform: none; }
.c1-platform .c1-filter-button:hover { background: var(--c1-cream); border-color: var(--c1-muted); }
.c1-platform .c1-filter-button.btn-warning { background: var(--c1-marigold); border-color: var(--c1-marigold); color: var(--c1-ink); }
.c1-platform .c1-filter-panel { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); padding: var(--c1-space-2); }
.c1-platform .c1-filter-panel > div { align-items: center; border-radius: var(--c1-radius-sm); display: flex; gap: var(--c1-space-2); margin: 0; padding: var(--c1-space-1) var(--c1-space-2); }
.c1-platform .c1-filter-panel input[type='checkbox'] { accent-color: var(--c1-terracotta); flex: none; height: 1rem; margin: 0; width: 1rem; }
.c1-platform .c1-filter-panel label { color: var(--c1-ink); cursor: pointer; flex: 1 1 auto; font-size: .875rem; min-width: 0; overflow-wrap: anywhere; }
/* Narrow viewports: the legacy `#main-container .dropdown-content { right: 0 }`
 * rule (main.css) pushes a 15rem panel off the left edge at 320px. Under the
 * flag the row is the positioning box and the panel spans it; the id outranks
 * the legacy id rule. Verified in src/c1-platform.discovery.spec.ts. */
@media (max-width: 42rem) {
  .c1-platform .c1-filter-row { position: relative; }
  .c1-platform .c1-filter-row .dropdown { position: static; }
  .c1-platform #main-container .c1-filter-row .c1-filter-panel { left: 0; max-width: none; right: 0; width: auto; }
}

/* Stats — stacked below 40rem, equal columns above; 1px gap draws separators. */
.c1-platform .c1-stats { background: var(--c1-border); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); display: grid; gap: 1px; grid-auto-flow: row; overflow: hidden; text-align: center; }
.c1-platform .c1-stat { background: var(--c1-surface); border: 0; display: block; padding: var(--c1-space-4) var(--c1-space-6); }
.c1-platform .c1-stat-title { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; }
.c1-platform .c1-stat-value { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 2.25rem; font-weight: 400; line-height: 1.1; }
.c1-platform .c1-stat-desc { color: var(--c1-muted); font-size: .9rem; }
@media (min-width: 40rem) {
  .c1-platform .c1-stats { grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; }
}

/* Tables — the "🔥 New on Zinda" recent users/organizations lists. */
.c1-platform .c1-table { background: var(--c1-surface); border: 1px solid var(--c1-border); border-collapse: separate; border-radius: var(--c1-radius-md); border-spacing: 0; box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); max-width: 100%; overflow: hidden; width: 100%; }
.c1-platform .c1-table th { border-bottom: 1px solid var(--c1-border); color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.25rem; font-weight: 400; letter-spacing: normal; padding: var(--c1-space-3) var(--c1-space-4); text-transform: none; }
.c1-platform .c1-table td { border-bottom: 1px solid var(--c1-border); padding: var(--c1-space-3) var(--c1-space-4); }
.c1-platform .c1-table-row:hover { background: var(--c1-cream); }

/* Empty state — the "Discover More!" fragment; its CTA reuses c1-button. */
.c1-platform .c1-empty-state { background: var(--c1-surface); border: 1px dashed var(--c1-border); border-radius: var(--c1-radius-md); color: var(--c1-ink); padding: var(--c1-space-6); text-align: center; }
.c1-platform .c1-empty-state h1 { font-size: 2.25rem; margin-bottom: var(--c1-space-2); }
.c1-platform .c1-empty-state p { color: var(--c1-muted); padding: var(--c1-space-2) 0 var(--c1-space-4); }

/* Legacy `.divider` headings ("🔥 Events") take the section-header role; their
 * flex/height/line pseudo-elements are switched off. `> b` mirrors c1-section-title. */
.c1-platform .c1-section-header.divider { display: block; height: auto; margin: var(--c1-space-6) 0 var(--c1-space-4); white-space: normal; }
.c1-platform .c1-section-header.divider::before, .c1-platform .c1-section-header.divider::after { display: none; }
.c1-platform .c1-section-header.divider > b { font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; }

/* Slice 4 — detail surfaces (app/event, app/organization, the events2/events3
 * chart pages) and the printable donation receipt. Same scope and tokens;
 * every hook sits next to its legacy class. Payment ids/scripts and the D3
 * chart scripts are untouched: only containers and leaf styling change. */

/* Detail sheet: the legacy absolute overlay becomes an in-flow C1 surface. */
.c1-platform .c1-detail { position: static; }
.c1-platform .c1-detail-layer { padding: 0; position: static; width: auto; }
.c1-platform .c1-detail-sheet { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); margin: var(--c1-space-4) auto; padding: var(--c1-space-6); }
.c1-platform .c1-detail-title { font-family: var(--c1-serif); font-size: 2.25rem; font-weight: 400; line-height: 1.1; margin: 0 0 var(--c1-space-3); overflow-wrap: anywhere; }
.c1-platform .c1-detail-label { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; font-weight: 500; letter-spacing: .12em; margin-top: var(--c1-space-3); text-transform: uppercase; }
.c1-platform .c1-detail-meta { color: var(--c1-ink); font-size: 1rem; font-style: normal; font-weight: 500; }
.c1-platform .c1-detail-body { color: var(--c1-ink); font-size: 1rem; line-height: 1.6; }
.c1-platform .c1-detail-body b { font-weight: 600; }
.c1-platform .c1-map { border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); }
/* Bare-text `.divider` headings ("Organizer", "Where") — same type as the `> b` variant above. */
.c1-platform .c1-section-header.divider { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; }

/* Stats blocks: the detail pages hook `c1-stats` on the container only, so the
 * DaisyUI cells inside are styled as descendants (same values as c1-stat*). */
.c1-platform .c1-stats .stat { background: var(--c1-surface); border: 0; display: block; padding: var(--c1-space-4) var(--c1-space-6); }
.c1-platform .c1-stats .stat-title { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; }
.c1-platform .c1-stats .stat-value { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 2.25rem; font-weight: 400; line-height: 1.1; }

/* Action rail (right-hand Donate / Attend / Support panels). Buttons fill the
 * rail; the count rows and avatar stacks inside are styled as descendants. */
.c1-platform .c1-action-panel { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: none; margin: 0 0 var(--c1-space-4); padding: var(--c1-space-4); text-align: center; }
.c1-platform .c1-action-panel .c1-button { width: 100%; }
.c1-platform .c1-action-panel .c1-badge { margin-bottom: var(--c1-space-2); }
.c1-platform .c1-action-panel p { color: var(--c1-muted); font-size: .8rem; font-weight: 500; }
.c1-platform .c1-action-panel img { border: 2px solid var(--c1-surface); box-shadow: none; }
.c1-platform .c1-progress { accent-color: var(--c1-leaf); background-color: var(--c1-cream); color: var(--c1-leaf); margin-top: var(--c1-space-3); width: 100%; }

/* FAQ and "Did you know?" copy. */
.c1-platform .c1-faq-question { color: var(--c1-ink); font-weight: 600; }
.c1-platform .c1-faq-answer { color: var(--c1-muted); font-style: normal; margin-bottom: var(--c1-space-4); }

/* Dialogs — donation, attendees, supporters, donors. The donation fields keep
 * their ids; only the field/button skins change. Title and action row are
 * styled as c1-dialog-box descendants. */
.c1-platform .c1-dialog-box h3 { font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; margin: var(--c1-space-2) 0; }
.c1-platform .c1-dialog-box .modal-action { display: flex; justify-content: flex-end; margin-top: var(--c1-space-4); }
.c1-platform .c1-dialog-box .modal-action form { display: flex; flex-wrap: wrap; gap: var(--c1-space-2); justify-content: flex-end; }
.c1-platform .c1-dialog-box select.c1-field-control { flex: none; width: 7rem; }

/* Chart frames: container skin only; the D3/Plot scripts inside are unchanged. */
.c1-platform .c1-chart { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); overflow-x: auto; padding: var(--c1-space-4); }

/* Organization contact list (icon + label + value rows). */
.c1-platform .c1-contact-list { gap: var(--c1-space-4) var(--c1-space-6); }
.c1-platform .c1-contact-list h3 { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.c1-platform .c1-contact-list p { color: var(--c1-terracotta-dark); font-weight: 500; overflow-wrap: anywhere; }
.c1-platform .c1-contact-list a { color: inherit; }

/* Donation receipt: a standalone document with no app shell, so its <body>
 * carries the flag class itself (two classes outrank the Tailwind CDN utilities
 * the page still loads). */
.c1-platform.c1-receipt-page { background: var(--c1-cream); color: var(--c1-ink); font-family: var(--c1-sans); }
.c1-platform .c1-receipt { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); }
.c1-platform .c1-receipt-title { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 2rem; font-weight: 400; letter-spacing: normal; text-transform: none; }
.c1-platform .c1-receipt-details { background: var(--c1-cream); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); }
.c1-platform .c1-receipt-row { align-items: baseline; display: flex; gap: var(--c1-space-4); justify-content: space-between; }
.c1-platform .c1-receipt-row > span:first-child { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.c1-platform .c1-receipt-row > span:last-child { color: var(--c1-ink); font-weight: 500; overflow-wrap: anywhere; text-align: right; }
.c1-platform .c1-receipt-row > .c1-receipt-amount { color: var(--c1-leaf); font-family: var(--c1-serif); font-size: 2rem; font-weight: 400; }
.c1-platform .c1-receipt-rule { border-color: var(--c1-border); }
.c1-platform .c1-receipt-note { color: var(--c1-muted); }
@media print {
  .c1-platform .c1-receipt { box-shadow: none; }
}

/* Slice 5a — org settings and payment-provider admin (admin/editOrganization,
 * admin/paymentProviderSelector, admin/stripeSettings, admin/paypalSettings).
 * Same scope and tokens; every hook sits next to its legacy class. Provider
 * keys, form actions, field names/ids, onclick handlers and inline scripts are
 * untouched: only containers, fields and button skins change. */

/* Form column: the legacy w-1/2 / w-2/3 sheets become a full-width column
 * capped at 44rem so they fit a 320px viewport. The sheet adds the C1 surface. */
.c1-platform .c1-form-column, .c1-platform .c1-form-sheet { min-width: 0; width: 100%; max-width: 44rem; }
.c1-platform .c1-form-sheet { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); padding: var(--c1-space-6); }
/* Two-column field groups stack below 40rem; the legacy grid-cols-2 is outranked. */
.c1-platform .c1-form-grid { gap: 0 var(--c1-space-6); }
@media (max-width: 40rem) {
  .c1-platform .c1-form-grid { grid-template-columns: minmax(0, 1fr); }
}
/* Action rows keep the legacy justify-* utility; wrapping and gap come from here. */
.c1-platform .c1-form-actions { align-items: center; flex-wrap: wrap; gap: var(--c1-space-2); margin-top: var(--c1-space-4); }
/* "Currently Active" provider status line. */
.c1-platform .c1-status-line { color: var(--c1-leaf); font-family: var(--c1-mono); font-size: .8rem; font-weight: 500; letter-spacing: .06em; margin-bottom: var(--c1-space-2); text-transform: uppercase; }
/* Empty `.divider` rule between the fields and the action row. */
.c1-platform .c1-rule { border-top: 1px solid var(--c1-border); height: auto; margin: var(--c1-space-6) 0 0; }
.c1-platform .c1-rule::before, .c1-platform .c1-rule::after { display: none; }

/* Danger button (Delete): outlined terracotta, filled on hover. */
.c1-platform .c1-button--danger { background: var(--c1-surface); border-color: var(--c1-terracotta); color: var(--c1-terracotta-dark); }
.c1-platform .c1-button--danger:hover { background: var(--c1-terracotta); border-color: var(--c1-terracotta); color: #fff; }

/* Provider chooser cards: the DaisyUI glass skin (backdrop blur, gradient,
 * text shadow) is switched off; c1-card / c1-card--link carry the surface. */
.c1-platform .c1-provider-card { -webkit-backdrop-filter: none; backdrop-filter: none; background-image: none; margin: var(--c1-space-2); text-shadow: none; }
.c1-platform .c1-provider-card .c1-card-body { align-items: center; text-align: center; }
.c1-platform .c1-provider-card img { border-radius: var(--c1-radius-md); }

/* Setup guide: the outer legacy sheet becomes a transparent column and each
 * step is its own C1 surface; prose copy, links and <code> take the tokens. */
.c1-platform .c1-guide { background: transparent; border: 0; box-shadow: none; min-width: 0; padding: 0; width: 100%; max-width: 44rem; }
.c1-platform .c1-guide-step { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); padding: var(--c1-space-6); }
.c1-platform .c1-guide-step .c1-card-title { color: var(--c1-ink); margin-bottom: var(--c1-space-3); }
.c1-platform .c1-prose { color: var(--c1-ink); line-height: 1.6; overflow-wrap: anywhere; }
.c1-platform .c1-prose p { color: var(--c1-muted); }
.c1-platform .c1-prose a { color: var(--c1-terracotta-dark); text-decoration: underline; text-underline-offset: .15em; }
.c1-platform .c1-prose a:hover { color: var(--c1-terracotta); }
.c1-platform .c1-prose code { background: var(--c1-cream); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-sm); font-family: var(--c1-mono); font-size: .85em; padding: 0 var(--c1-space-1); }
.c1-platform .c1-prose .c1-notice p { color: var(--c1-ink); }

/* Slice 5b — members and attendance admin (admin/members, admin/attendance).
 * Same scope and tokens; every hook sits next to its legacy class. The
 * memberList field, the add/remove form actions and the adminToggle /
 * attendanceToggle action-id / action-name attributes the page script binds to
 * are untouched: only containers, table chrome and control skins change. */

/* Toolbar above the table (org/event name + "Add Members"). The legacy
 * grid-cols-2 becomes a wrapping flex row so a long name and the action keep
 * their own lines at 320px instead of sharing two fixed columns. */
.c1-platform .c1-toolbar { align-items: center; display: flex; flex-wrap: wrap; gap: var(--c1-space-2); justify-content: space-between; margin-bottom: var(--c1-space-4); }
.c1-platform .c1-toolbar-title { font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; min-width: 0; overflow-wrap: anywhere; }
.c1-platform .c1-toolbar-actions { display: flex; flex-wrap: wrap; gap: var(--c1-space-2); }

/* Small button — the legacy btn-sm / btn-xs sizes. Still a 2.25rem target,
 * which is larger than btn-xs gives today on a touch screen. */
.c1-platform .c1-button--small { font-size: .875rem; height: auto; min-height: 2.25rem; padding: var(--c1-space-2) var(--c1-space-4); }

/* Data tables. The Slice 3 c1-table carries the surface; --data swaps the
 * serif column heads for compact mono labels and replaces the DaisyUI zebra
 * (which paints the cells) with a cream band. Each selector outranks its
 * table-xs / table-zebra counterpart. */
.c1-platform .c1-table.c1-table--data { font-size: .9rem; }
.c1-platform .c1-table.c1-table--data th { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; font-weight: 500; letter-spacing: .12em; padding: var(--c1-space-2) var(--c1-space-3); text-align: left; text-transform: uppercase; white-space: nowrap; }
.c1-platform .c1-table.c1-table--data td { padding: var(--c1-space-2) var(--c1-space-3); vertical-align: middle; }
.c1-platform .c1-table.c1-table--data tbody tr:nth-child(2n) { background-color: var(--c1-cream); }
.c1-platform .c1-table.c1-table--data tbody tr:last-child td { border-bottom: 0; }
/* Action cell: the row form is inline so the button does not stretch. */
.c1-platform .c1-table-actions { text-align: right; white-space: nowrap; }
.c1-platform .c1-table-actions form { display: inline-flex; }

/* Card t_90ef91fb — horizontal scroll affordance for the shared data table.
 * At 375px every `--data` table overflows its `overflow-x-auto` wrapper by
 * 350-400px. The swipe worked but nothing said so: the table is simply clipped
 * at the wrapper edge, so the hidden columns read as missing rather than
 * off-screen. This is the "scroll shadow" pair — a shadow anchored to the
 * scrollport (`background-attachment: scroll`) under a cover anchored to the
 * content (`local`) — so each end's shadow is revealed by the scroll position
 * itself and needs no script: at rest only the right shadow shows, mid-scroll
 * both, at the far end only the left, and on a table that fits (or a desktop
 * width) the covers sit on the shadows and nothing is drawn at all.
 *
 * The shadows sit in a `--c1-space-2` rail below the table rather than over
 * its edges, because a wrapper background paints *behind* its content and
 * c1-table's surface and the --data zebra band are opaque: a full-height
 * gradient here is invisible at every scroll offset (verified in Chromium; a
 * pseudo-element overlay would paint on top but cannot hide itself at the ends
 * without a scroll listener). The cover is `--c1-cream` — the shell background
 * the rail sits on — held solid across the full shadow width before it fades,
 * and it fades to that same colour at zero alpha so the ramp does not pick up
 * the grey of `transparent`.
 *
 * The wrapper carries no c1-* hook, so the three views (admin/events,
 * admin/members, admin/attendance) and the superadmin lists that reuse
 * c1-table--data keep their markup byte-for-byte; `:has()` matches the wrapper
 * by what it contains, and a browser without it drops the rule and is left
 * with today's behaviour. Pinned in src/c1-platform.table-scroll.spec.ts. */
.c1-platform .overflow-x-auto:has(> .c1-table.c1-table--data) {
  background-attachment: local, local, scroll, scroll;
  background-image:
    linear-gradient(to right, var(--c1-cream) 2.5rem, rgb(247 240 227 / 0) 4rem),
    linear-gradient(to left, var(--c1-cream) 2.5rem, rgb(247 240 227 / 0) 4rem),
    radial-gradient(farthest-side at 0 50%, rgb(32 32 29 / .32), rgb(32 32 29 / 0)),
    radial-gradient(farthest-side at 100% 50%, rgb(32 32 29 / .32), rgb(32 32 29 / 0));
  background-position: 0 100%, 100% 100%, 0 100%, 100% 100%;
  background-repeat: no-repeat;
  background-size: 4rem var(--c1-space-2), 4rem var(--c1-space-2), 2.5rem var(--c1-space-2), 2.5rem var(--c1-space-2);
  padding-bottom: var(--c1-space-2);
}

/* Toggles (adminToggle, attendanceToggle). The legacy red/success skins are
 * replaced by token colours; the DaisyUI handle geometry is left alone and
 * only its --tglbg knob colour is re-pointed at the C1 surface. */
.c1-platform .c1-toggle { --tglbg: var(--c1-surface); background-color: var(--c1-border); border-color: var(--c1-border); color: var(--c1-border); }
.c1-platform .c1-toggle:hover { background-color: var(--c1-muted); border-color: var(--c1-muted); color: var(--c1-muted); }
.c1-platform .c1-toggle:checked { background-color: var(--c1-leaf); border-color: var(--c1-leaf); color: var(--c1-leaf); }
.c1-platform .c1-toggle:disabled { --togglehandleborder: 0 0 0 3px var(--c1-border) inset, var(--handleoffsetcalculator) 0 0 3px var(--c1-border) inset; background-color: transparent; border-color: var(--c1-border); cursor: not-allowed; opacity: .55; }

/* Pagination. The legacy `join` group keeps its geometry (shared borders, one
 * rounded end each); only the segment skin and the active state change. */
.c1-platform .c1-pagination { margin-top: var(--c1-space-4); }
.c1-platform .c1-pagination-list { border-radius: var(--c1-radius-md); max-width: 100%; overflow-x: auto; }
.c1-platform .c1-page-link { align-items: center; background-color: var(--c1-surface); border: 1px solid var(--c1-border); color: var(--c1-ink); display: inline-flex; font-family: var(--c1-mono); font-size: .8rem; font-weight: 500; height: auto; justify-content: center; min-height: 2.25rem; min-width: 2.25rem; padding: 0 var(--c1-space-2); text-decoration: none; }
.c1-platform .c1-page-link:hover { background-color: var(--c1-cream); }
.c1-platform .c1-page-link.btn-active { background-color: var(--c1-terracotta); border-color: var(--c1-terracotta); color: #fff; }
.c1-platform .c1-pagination-note { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; letter-spacing: .12em; margin-top: var(--c1-space-2); text-transform: uppercase; }

/* Add-members dialog: box, fields and actions reuse the Slice 2-5a primitives;
 * only the heading and the worked example need rules of their own. */
.c1-platform .c1-dialog-title { border-bottom: 1px solid var(--c1-border); font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; margin-bottom: var(--c1-space-4); padding-bottom: var(--c1-space-2); }
.c1-platform .c1-code-block { background: var(--c1-cream); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-sm); color: var(--c1-ink); font-family: var(--c1-mono); font-size: .8rem; overflow-wrap: anywhere; padding: var(--c1-space-2); }

/* Slice 5c — organization events admin (admin/events). Reuses the 5b toolbar,
 * data-table, button and pagination primitives; every event href (/admin/events
 * /:id and its participants / donations / attendance children, /admin/events/new)
 * and the {{#if}} branches that pick the Manage dropdown over the single Edit
 * link are untouched. Only the row menu needed a rule of its own. */

/* Row "Manage" dropdown. Trigger and panel reuse c1-button and c1-menu; only
 * the anchoring is new. The action cell sits at the right edge of the table, so
 * the panel is right-aligned at every width rather than only below 640px as the
 * legacy `#main-container .dropdown-content` rule (main.css) does, keeping it
 * out of the wrapper's `overflow-x-auto` scroller. */
.c1-platform .c1-row-menu .c1-menu { left: auto; right: 0; }

/* Slice 5d — event create/edit admin forms (admin/newEvent, admin/editEvent).
 * Reuses the Slice 2-5a field, notice, rule, section-header, dialog, FAQ and
 * button primitives; the accent buttons (AI Content, Save and Publish) take
 * c1-button--accent so they stay distinct from the primary Save Draft in the
 * same action row. Every field name/id, the datepicker attributes, the
 * #dateDiv / #timeDiv / #description / #descriptionHTML / #latitude /
 * #longitude / #orgCountry / #eventTypeSelect / #aEventCapacity /
 * #aDonationTarget / #frmEvent / modal* hooks and both inline scripts are
 * untouched: only class attributes changed. The flowbite datepicker popup and
 * the tiptap toolbar come from the shared wysiwyg partial and the flowbite CDN
 * stylesheet, so they keep their legacy skin in this slice. */

/* Date/time pairs: the nested grid inside a field stacks below 40rem (c1-form-grid),
 * where its two inputs carry no margin of their own, so the row needs a gap. */
.c1-platform .c1-field > .c1-form-grid { row-gap: var(--c1-space-2); }

/* Slice 5e — analytics and reporting admin (admin/analytics, reports/report).
 * Reuses the 5b toolbar, the Slice 4 c1-chart frame and c1-stats block, and the
 * Slice 2 button / field / menu / card primitives.
 *
 * R6 — the D3 and Grid.js pages are script-driven, so two groups of elements are
 * deliberately left alone. (a) The four chart divs (#analytics-chart,
 * #supporters-chart, #donors-chart, #members-chart) keep their class attributes
 * byte-identical to main: createChart() reads clientWidth/clientHeight off them
 * to build the scales and viewBox, so nothing may change their box. Only the
 * card around each one takes the c1-chart frame, and the chart re-renders on
 * resize anyway. (b) #custom-date-picker and #loading-indicator have their
 * `hidden` class toggled by the script, so no rule here sets `display` on
 * anything inside the filter row. The inline scripts, the ids they bind to and
 * the Grid.js className map are untouched. */

/* Meta copy: the "Displaying data from" range line and the "updated hourly"
 * footnote. The footnote's <p> drops the legacy italic. */
.c1-platform .c1-meta-note { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; }
.c1-platform .c1-meta-note p { font-style: normal; }
/* Hover read-out above each chart; the script writes its coloured spans into it. */
.c1-platform .c1-chart-label { color: var(--c1-muted); font-family: var(--c1-mono); font-size: .8rem; }
/* Custom range inputs sit inline beside their label, so they opt out of the
 * field control's full-bleed width. */
.c1-platform .c1-field-control--inline { width: auto; }

/* Report summary stats: the values are formatted currency strings, so the
 * compact variant keeps the legacy small size rather than the 2.25rem display
 * size c1-stats gives the discovery and detail pages. */
.c1-platform .c1-stats--compact .stat-value { font-size: 1.25rem; }

/* Grid.js report table. The page loads no Grid.js stylesheet — the generated
 * markup is skinned entirely by the className map in the view's inline script,
 * which is untouched — so the C1 skin styles that generated markup as
 * descendants of the wrapper hook. `> div` is the container the map puts
 * `overflow-x-auto bg-white` on. */
.c1-platform .c1-report-grid > div { background-color: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); }
.c1-platform .c1-report-grid table { color: var(--c1-ink); font-size: .9rem; width: 100%; }
.c1-platform .c1-report-grid th { background-color: var(--c1-cream); border-bottom: 1px solid var(--c1-border); color: var(--c1-muted); font-family: var(--c1-mono); font-size: .68rem; font-weight: 500; letter-spacing: .12em; text-align: left; text-transform: uppercase; white-space: nowrap; }
.c1-platform .c1-report-grid td { border-bottom: 1px solid var(--c1-border); }
.c1-platform .c1-report-grid a { color: var(--c1-terracotta-dark); }
.c1-platform .c1-report-grid .btn { background-color: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-sm); color: var(--c1-ink); font-family: var(--c1-mono); font-size: .8rem; font-weight: 500; height: auto; min-height: 2.25rem; text-transform: none; }
.c1-platform .c1-report-grid .btn:hover { background-color: var(--c1-cream); }
.c1-platform .c1-report-grid .btn:disabled { cursor: not-allowed; opacity: .55; }
/* t_e6f9a391 — Grid.js pagination below 42rem. report.hbs gives the bar
 * `flex justify-between` and no Grid.js stylesheet is loaded, so on a phone the
 * summary and the button group were two shrinking columns of one nowrap row:
 * the summary broke over three lines and the buttons, laid out as inline
 * content in ~205px, wrapped wherever they ran out of room ("20 Next" alone on
 * a second line). The bar also sits inside the `overflow-x-auto` container, so
 * it slid away sideways with a wide table.
 * Here the bar stacks: summary, then the page numbers on a centred row, then
 * Previous/Next as two half-width buttons — always the group's first and last
 * child — pinned to the bottom of it, so no button count or label width can
 * orphan one. The "..." spreads are inert (tabindex -1, no handler), so they
 * drop the button chrome, which is what lets nine controls fit a 320px
 * viewport. The footer sticks to the container's left edge. No rule sets
 * `display` (pinned in src/c1-platform.analytics-reports.spec.ts); geometry is
 * measured in src/c1-platform.report-pagination.spec.ts. */
@media (max-width: 42rem) {
  .c1-platform .c1-report-grid .gridjs-footer { left: 0; position: sticky; }
  .c1-platform .c1-report-grid .gridjs-pagination { align-items: stretch; flex-direction: column; gap: var(--c1-space-3); padding-left: var(--c1-space-2); padding-right: var(--c1-space-2); }
  .c1-platform .c1-report-grid .gridjs-summary { text-align: center; }
  .c1-platform .c1-report-grid .gridjs-pages { padding-bottom: calc(2.25rem + var(--c1-space-3)); position: relative; text-align: center; }
  .c1-platform .c1-report-grid .gridjs-pages .btn { margin: .125rem; min-width: 2.25rem; }
  .c1-platform .c1-report-grid .gridjs-pages .gridjs-spread { background-color: transparent; border-color: transparent; min-width: 1.5rem; padding-left: 0; padding-right: 0; }
  .c1-platform .c1-report-grid .gridjs-pages .btn:first-child, .c1-platform .c1-report-grid .gridjs-pages .btn:last-child { bottom: 0; margin: 0; position: absolute; width: calc(50% - var(--c1-space-1)); }
  .c1-platform .c1-report-grid .gridjs-pages .btn:first-child { left: 0; }
  .c1-platform .c1-report-grid .gridjs-pages .btn:last-child { right: 0; }
}

/* Slice 6a — superadmin views (superadmin/organizations, superadmin/members,
 * superadmin/newOrganization, superadmin/editOrganization, superadmin/payments).
 * Reuses the 5a form-sheet / field / notice / section-header primitives, the 5b
 * toolbar / data-table / toggle / pagination / dialog primitives and the Slice 3
 * empty-state and badge, so one rule is all this slice adds. Form actions, field
 * names/ids, hrefs, the org-id / action-id / action-name attributes the
 * superAdminToggle script binds to and both inline Places Autocomplete
 * `initMap` scripts are untouched: only class attributes changed.
 *
 * R6 — /scripts/payments.js reveals each onboarding step on superadmin/payments
 * by removing the legacy `hidden` class, and a `.c1-platform .c1-*` rule setting
 * `display` would outrank it (two classes vs one) and show every step at once.
 * So no element carrying `hidden` takes a token, and the rule below sets no
 * `display`. Pinned in src/c1-platform.superadmin.spec.ts. */

/* Toolbar with an action but no title beside it — the org list's "Create New"
 * row, where c1-toolbar's space-between would drop the legacy `text-right`. */
.c1-platform .c1-toolbar--end { justify-content: flex-end; }

/* Slice 6b — error, legal and login pages (notFound, serverError, terms,
 * login). Same scope and tokens; every hook sits next to its legacy class. No
 * href, id, target or conditional changes: the isAuthenticated recovery links
 * on the error pages, the three OAuth hrefs on /login and the full legal text
 * of /terms are untouched, and AllExceptionsFilter's 404 -> /not-found,
 * 403 -> /login, * -> /server-error redirects are unaffected. Pinned in
 * src/c1-platform.error-legal-login.spec.ts. */

/* Error pages — a centred C1 panel in place of the legacy full-bleed hero. The
 * legacy wrapper keeps `flex flex-col justify-center`, so this only re-centres
 * on the cross axis and replaces the 6rem block padding. */
.c1-platform .c1-error-page { align-items: center; min-height: 60vh; padding: var(--c1-space-6) var(--c1-space-4); }
.c1-platform .c1-error-panel { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); max-width: 34rem; padding: var(--c1-space-6); text-align: center; }
/* "Oops!" — the legacy text-7xl/lg:text-9xl extrabold is outranked so the
 * headline sits in the C1 serif scale on a 320px viewport too. */
.c1-platform .c1-error-code { color: var(--c1-terracotta); font-family: var(--c1-serif); font-size: 3rem; font-weight: 400; line-height: 1; margin: 0 0 var(--c1-space-2); }
.c1-platform .c1-error-title { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; margin: 0 0 var(--c1-space-3); }
.c1-platform .c1-error-note { color: var(--c1-muted); font-size: 1rem; font-weight: 400; margin: 0 0 var(--c1-space-6); }

/* /terms — the legal document keeps its imported inline styles (they outrank
 * this layer by nature); the container becomes a measured C1 sheet so the copy
 * is no longer full-bleed. c1-detail-sheet carries the surface, and the top
 * margin clears the `absolute top-0` 4rem site header the legacy `m-8` (2rem)
 * left the first heading tucked under. */
.c1-platform .c1-legal { margin-top: 5rem; max-width: 56rem; padding: var(--c1-space-6); }

/* /login — the emerald wave backdrop and the dark nav scrim are decorative
 * (pointer-events-none, and the wave SVGs are aria-hidden) and clash with the
 * C1 palette, so they are switched off the way the DaisyUI glass skin is on
 * c1-provider-card.
 * Neither element uses the legacy `hidden` class, so nothing here can outrank
 * a script-driven toggle. */
.c1-platform .c1-auth-decor { display: none; }
/* Side and bottom padding only: the site header is `absolute top-0` and 4rem
 * tall, so the legacy pt-24 clearance under it has to stay. */
.c1-platform .c1-auth-page { padding-bottom: var(--c1-space-6); padding-left: var(--c1-space-4); padding-right: var(--c1-space-4); }
.c1-platform .c1-auth-panel { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); color: var(--c1-ink); margin: 0 auto; max-width: 44rem; padding: var(--c1-space-6); }
.c1-platform .c1-auth-panel .c1-detail-title { margin-top: var(--c1-space-4); }

/* Slice 6c — public homepage and core marketing pages (home2, features, about).
 * 2026-09-29. Same scope and tokens; every hook sits next to its legacy class.
 * No href, id, target, data-analytics attribute or copy changes, and the SEO
 * model (pageTitle / pageDescription in home.controller.ts, the <head> in
 * index.hbs) is untouched. Buttons, cards, badges, stat values, section
 * headers, c1-prose, c1-map, the filter chip (c1-filter-button on the event
 * tag links, which keeps a 2.25rem touch target) and the Slice 6b decoration
 * switch (c1-auth-decor, on the emerald mesh / blob / wave layers) are reused
 * as they are. Pinned in src/c1-platform.public-marketing.spec.ts. */

/* Page canvas. <main> swaps bg-white for the cream shell colour and each
 * top-level band drops its emerald/amber/sky wash; the closing "Stay
 * connected" band is the one that keeps a fill of its own. */
.c1-platform .c1-marketing { background: var(--c1-cream); color: var(--c1-ink); }
.c1-platform .c1-marketing > section { background: transparent; border-color: var(--c1-border); }
.c1-platform .c1-marketing > .c1-band-leaf { background: var(--c1-leaf); color: #fff; }
/* The 4px rainbow rule on top of the legacy cards becomes a marigold one. */
.c1-platform .c1-marketing .h-1.bg-gradient-to-r { background: var(--c1-marigold); }
/* Hero scrim: ink instead of emerald, and no lighter than the legacy gradient
 * at any point, so the white hero copy keeps its contrast over the photo. */
.c1-platform .c1-hero-scrim { background: linear-gradient(to bottom, rgb(32 32 29 / .75), rgb(32 32 29 / .45)); }
/* The homepage hero pill is a sentence, so it may wrap at 320px. */
.c1-platform .c1-badge--wrap { line-height: 1.3; white-space: normal; }
/* Marketing headings keep a display size above the 1.5rem app section title. */
.c1-platform .c1-marketing .c1-section-title, .c1-platform .c1-stories h2 { color: var(--c1-leaf); font-size: 2rem; }
/* Partner logos: c1-card replaces the conic-gradient ring on the figure; the
 * tile inside drops its hover gradient and shadow. */
.c1-platform .c1-logo-tile > div { background: var(--c1-surface); box-shadow: none; }
/* "Stories of impact" renders the shared sparkRecentPosts partial, which
 * for-non-profits and for-corporations also include and which this slice
 * leaves byte-identical, so its markup is styled from the home2 wrapper. */
.c1-platform .c1-stories section { background: transparent; }
.c1-platform .c1-stories article { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); }
.c1-platform .c1-stories h3 { font-size: 1.5rem; }
.c1-platform .c1-stories a { color: var(--c1-terracotta-dark); }

/* Slice 6d — public audience landing pages (for-individuals, for-non-profits,
 * for-corporations, nonProfit, corporation, non-profit-landing,
 * corporations-landing). 2026-09-29. Same scope and tokens; every hook sits
 * next to its legacy class. No href, id, target, data-analytics attribute or
 * copy changes. The Slice 6c page canvas, hero scrim and decoration switch,
 * buttons, cards, badges, filter chips, section titles, c1-map, c1-form-sheet
 * (the landing form card) and c1-auth-page (the two application-embed stubs)
 * are reused as they are. Pinned in src/c1-platform.audience-landing.spec.ts. */

/* The landing pages have no <main> to carry c1-marketing, so each band drops
 * its wash by itself. Their <body> comes from landingHead (Slice 6e), which has
 * no .c1-platform class yet: until it does, every hook on them is inert. */
.c1-platform .c1-band { background: transparent; border-color: var(--c1-border); }
/* for-non-profits and for-corporations include sparkRecentPosts as a direct
 * child of <main>, so there is no wrapper to carry the Slice 6c c1-stories
 * hook and the partial stays byte-identical. Its token-less heading, cards and
 * emerald text links are reached from the page hook instead. */
.c1-platform .c1-stories-host h2:not(.c1-section-title) { color: var(--c1-leaf); font-size: 2rem; }
.c1-platform .c1-stories-host article:not(.c1-card) { background: var(--c1-surface); border: 1px solid var(--c1-border); border-radius: var(--c1-radius-md); box-shadow: var(--c1-elevation-sm); }
.c1-platform .c1-stories-host article:not(.c1-card) h3 { font-size: 1.5rem; }
.c1-platform .c1-stories-host .text-emerald-700.underline { color: var(--c1-terracotta-dark); }

/* Slice 6e -- pricing/intake pages + native-intake partials. Additive only;
 * no href/id/target/data-analytics/src/copy changes. Reuses Slice 2-6c
 * button, card, badge, notice, section-title, filter-chip and form-sheet
 * primitives. Pinned in src/c1-platform.pricing-intake.spec.ts.
 * Removes legacy z-field/z-field-control/z-field-error from the intake pair
 * (superseded by c1-field-control flag-on; native-intake.css covers flag-off;
 * main.css/profile.hbs keep the z-field layer). No rule below sets `display`:
 * native-intake.js toggles `hidden` on summary/success/restart/employee band.
 * Billing toggle below keys off aria-pressed (script-driven), not colour
 * classes c1-filter-button would outrank; only outer corners stay rounded. */
.c1-platform .c1-billing-toggle .c1-filter-button { border-radius: 0; }
.c1-platform .c1-billing-toggle .c1-filter-button:first-child { border-bottom-left-radius: var(--c1-radius-md); border-top-left-radius: var(--c1-radius-md); }
.c1-platform .c1-billing-toggle .c1-filter-button:last-child { border-bottom-right-radius: var(--c1-radius-md); border-top-right-radius: var(--c1-radius-md); }
.c1-platform .c1-billing-toggle .c1-filter-button[aria-pressed='true'] { background: var(--c1-leaf); border-color: var(--c1-leaf); color: #fff; }

/* Slice 6f-1 -- the shared public chrome partials (landingHead, header, footer,
 * loginbar, sectionHeader). 2026-09-29. Additive only; no href, id, target,
 * data-analytics, src or copy changes. The button, menu and nav-link primitives
 * these partials reach for are the Slice 2-6e ones, reused as they are, so only
 * the site-chrome skin is defined here. Pinned in
 * src/c1-platform.chrome-partials.spec.ts.
 *
 * sectionHeader.hbs needed no change: Slice 2 already gave it the full
 * c1-section-header / -title / -subtitle set, and only app-shell views use it.
 *
 * The public header is `absolute top-0` over a photo hero and its links carry
 * `text-white`, which `.c1-nav-link`'s ink already outranks: an opaque surface
 * is what makes that readable, and it also rescues the white wordmark on cream
 * pages. Position, stacking and the 4rem height stay with the legacy utilities,
 * so no page's hero clearance moves. The bottom rule is an inset shadow, not a
 * border, because header.hbs's non-light branch carries `!border-transparent`;
 * border-color still recolours the branches that do draw one (lightHeader, and
 * landingHead's `border-b border-slate-200`). */
.c1-platform .c1-site-header { background: var(--c1-surface); border-color: var(--c1-border); box-shadow: inset 0 -1px 0 var(--c1-border); color: var(--c1-ink); }
.c1-platform .c1-site-brand { color: var(--c1-ink); }
.c1-platform .c1-site-footer { background: var(--c1-cream); border-top: 1px solid var(--c1-border); color: var(--c1-ink); }
/* The footer's 4px rainbow hairline, as c1-marketing already does for cards. */
.c1-platform .c1-site-footer .h-1.bg-gradient-to-r { background: var(--c1-marigold); }

/* Slice 6f-2 -- events index/city pages and the content partials
 * (publicEventCard, socialProof, sparkRecentPosts). 2026-09-29. Additive only;
 * no href, id, target, data-analytics, src or copy changes. Reuses the Slice
 * 2-6e band, scrim, decoration-switch, button, card, badge, field,
 * section-title, empty-state, meta-note, logo-tile and nav-link primitives, and
 * the Slice 6f-1 site-chrome skin above. Pinned in
 * src/c1-platform.events-public.spec.ts.
 *
 * sparkRecentPosts.hbs takes its own tokens now; the Slice 6c/6d host hooks
 * (c1-stories, c1-stories-host) keep working, their `:not(.c1-card)` /
 * `:not(.c1-section-title)` pair simply no-ops against the equivalent base
 * primitives. Only the 2rem leaf heading needs restating, at the end. */

/* Bands. This slice does not touch index.hbs's <main>, so each top-level band
 * drops its wash by itself with the Slice 6d c1-band; --leaf is the fill the
 * two dark bands keep. events-city's hero text sits at the BOTTOM of a 280px
 * map, so its scrim runs the other way than the Slice 6c one, and no lighter at
 * any point than the emerald gradient it replaces. */
.c1-platform .c1-band--leaf { background: var(--c1-leaf); color: #fff; }
.c1-platform .c1-hero-scrim--up { background: linear-gradient(to top, rgb(32 32 29 / .8), rgb(32 32 29 / .35)); }
/* events-city's sticky radius/when bar: a full-bleed rule, not a floating
 * c1-filter-panel, so square corners and no shadow. Its two label/select pairs
 * share one flex row, and the C1 control is wider than the legacy select, so
 * below 30rem each label takes a row of its own rather than being orphaned
 * from a control that wrapped without it. */
.c1-platform .c1-filter-bar { background: var(--c1-surface); border-bottom: 1px solid var(--c1-border); box-shadow: none; }

/* publicEventCard: the 1px status rule above the body, and the CTA, which is
 * `block` in the legacy skin and must stay full-width as a button. The date
 * pill reuses c1-badge--wrap: mono uppercase at c1-badge's `nowrap` pushed the
 * pill row past the card's `overflow: hidden` edge. */
.c1-platform .c1-card-accent { background: var(--c1-leaf); }
.c1-platform .c1-card-accent--live { background: var(--c1-terracotta); }
.c1-platform .c1-event-card .c1-button { width: 100%; }

/* socialProof duplicates its CTA -- `hidden sm:inline-flex` for wide screens, a
 * `sm:hidden` block for narrow ones. Below sm, `.c1-button`'s inline-flex would
 * outrank Tailwind's `hidden` and show both; above sm this does not apply and
 * `sm:inline-flex` is restored. The spec pins it as the only `hidden` C1 button
 * in the repo and as gated on sm. */
@media (max-width: 39.9375rem) {
  .c1-platform .c1-button.hidden { display: none; }
}
@media (max-width: 29.9375rem) {
  .c1-platform .c1-filter-bar .c1-field-label { flex: 1 0 100%; }
}

.c1-platform .c1-stories-host .c1-section-title { color: var(--c1-leaf); font-size: 2rem; }

/* Card t_9f0ec3b8 -- staging layout trial: the editorial shell on `/` and
 * `/for-non-profits`. 2026-09-29. Every rule needs BOTH `.c1-platform` and the
 * `c1-editorial` body class (src/main.ts sets c1Editorial for those two paths,
 * and only with the C1 flag on) or a `c1-ed-*` hook that only the two trial
 * partials emit, so no other page and no flag-off render can match one. Tokens
 * only: no new colour, font or remote request. Pinned in
 * src/c1-platform.editorial-trial.spec.ts.
 *
 * Two families. The mono token resolves to the sans stack in scope, so nothing
 * on these pages can ask for IBM Plex Mono; badges drop the all-caps skin. */
.c1-platform.c1-editorial { --c1-mono: var(--c1-sans); }
.c1-platform.c1-editorial .c1-badge { border-radius: var(--c1-radius-md); font-size: .8125rem; letter-spacing: 0; text-transform: none; }

/* Navbar: sticky and opaque, so the same cream bar sits behind the links after
 * scroll; the bar itself is the Top nav B nameplate at the end of this file.
 * Wordmark left, links centred 34px apart, Log In right. */
.c1-platform.c1-editorial .c1-site-header { background: var(--c1-cream); position: sticky; }
.c1-platform.c1-editorial .c1-site-header > div { margin: 0 auto; max-width: 80rem; }
.c1-platform.c1-editorial .c1-site-header span.c1-site-brand { font-family: var(--c1-serif); font-size: 2rem; font-weight: 400; letter-spacing: -.015em; line-height: 1; }
.c1-platform.c1-editorial .c1-site-header .c1-nav-link { font-size: .8125rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.c1-platform.c1-editorial .c1-site-header nav > ul > li + li { margin-left: 1.125rem; }
.c1-platform.c1-editorial .c1-nav-link:hover { color: var(--c1-terracotta-dark); }
.c1-platform.c1-editorial .c1-nav-link:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
@media (min-width: 48rem) {
  .c1-platform.c1-editorial .c1-site-header nav { margin-left: 0; }
  .c1-platform.c1-editorial .c1-site-header nav:last-child { flex: 1 1 0%; }
  .c1-platform.c1-editorial .c1-site-header nav:last-child > ul { justify-content: flex-end; }
}
/* Between md and lg the five uppercase labels did not clear the viewport after
 * all: at 768px the brand, the labels and the signed-in account button needed
 * 925px, so the page scrolled sideways and the button was clipped off the right
 * edge (t_6ab5fa69). Four tightenings bring the row to 713px. The 18px label
 * gap closes up, the label padding and the bar's own gap halve, and the account
 * button keeps only its avatar and chevron -- the name is clipped the way
 * phones clip it below, so it is still announced. lg keeps all four. */
@media (min-width: 48rem) and (max-width: 63.9375rem) {
  .c1-platform.c1-editorial .c1-site-header nav > ul > li + li { margin-left: .5rem; }
  .c1-platform.c1-editorial .c1-site-header .c1-nav-link { padding-left: var(--c1-space-1); padding-right: var(--c1-space-1); }
  .c1-platform.c1-editorial .c1-site-header .c1-ed-nameplate { gap: var(--c1-space-2); }
  /* Scoped to the public header: the /app bar carries no link row, so it has
   * the room for the name and keeps it. */
  .c1-platform.c1-editorial .c1-site-header .c1-ed-acct-name { clip: rect(0 0 0 0); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }
}

/* Button: one size, one radius, two variants. `--small` takes the same box, so
 * hero, cards, bands and the nav Log In all match. White on terracotta is
 * 4.93:1; terracotta-dark on surface 7.48:1. The secondary keeps a surface
 * fill so it stays legible on the leaf band. */
.c1-platform.c1-editorial .c1-button, .c1-platform.c1-editorial .c1-button--small { border-radius: var(--c1-radius-md); font-size: .875rem; font-weight: 600; letter-spacing: .01em; line-height: 1.2; min-height: 2.5rem; padding: var(--c1-space-2) var(--c1-space-4); white-space: nowrap; }
.c1-platform.c1-editorial .c1-button--primary { background: var(--c1-terracotta); border-color: var(--c1-terracotta); color: #fff; }
.c1-platform.c1-editorial .c1-button--primary:hover { background: var(--c1-terracotta-dark); border-color: var(--c1-terracotta-dark); }
.c1-platform.c1-editorial .c1-button--secondary { background: var(--c1-surface); border-color: var(--c1-terracotta-dark); color: var(--c1-terracotta-dark); }
.c1-platform.c1-editorial .c1-button--secondary:hover { background: var(--c1-cream); border-color: var(--c1-ink); color: var(--c1-ink); }
.c1-platform.c1-editorial .c1-button:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
/* Log In keeps the one button box; the signed-in control is the nameplate's
 * account button (end of file). */
.c1-platform.c1-editorial .c1-site-header .c1-button { padding-bottom: 0; padding-top: 0; }
/* The focus blue is 1.2:1 on the leaf band, so the ring turns white there. */
.c1-platform.c1-editorial .c1-band-leaf a:focus-visible { outline-color: #fff; }

/* Audience cards. The widest CTA pair ("More Info" + "Register your company")
 * needs 305px, so a column is never narrower than 22.5rem and the pair stays
 * primary-left / secondary-right; phones get the room from tighter padding.
 * Without :has() the legacy three-column grid simply stays. */
.c1-platform.c1-editorial .grid:has(> .z-card) { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22.5rem), 1fr)); }
@media (max-width: 39.9375rem) {
  .c1-platform.c1-editorial .z-card .c1-card-body { padding: var(--c1-space-4); }
  .c1-platform.c1-editorial .z-card .c1-button { padding-left: var(--c1-space-3); padding-right: var(--c1-space-3); }
}

/* Hero: all copy on the page surface, the photo last and untouched (no
 * overlay, tint, caption or text). */
.c1-platform .c1-ed-hero { padding: var(--c1-space-2) 0 var(--c1-space-6); }
.c1-platform .c1-ed-headline { border-bottom: 1px solid var(--c1-ink); font-size: clamp(1.75rem, 1.1rem + 2.6vw, 2.8125rem); letter-spacing: -.01em; padding: var(--c1-space-6) 0; }
.c1-platform .c1-ed-columns { align-items: start; display: grid; gap: var(--c1-space-6); padding: var(--c1-space-6) 0; }
.c1-platform .c1-ed-subhead { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.35; margin: 0; max-width: 36rem; }
.c1-platform .c1-ed-actions { align-items: center; display: flex; flex-wrap: wrap; gap: var(--c1-space-3) var(--c1-space-4); margin-top: var(--c1-space-4); }
.c1-platform .c1-ed-note { color: var(--c1-muted); font-size: .8125rem; margin: var(--c1-space-3) 0 0; }
.c1-platform .c1-ed-photo { aspect-ratio: 10 / 3; display: block; height: auto; object-fit: cover; width: 100%; }
.c1-platform .c1-ed-columns > .c1-ed-photo { aspect-ratio: 3 / 2; }
@media (min-width: 60rem) {
  .c1-platform .c1-ed-columns { gap: 4rem; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
}

/* Card t_5be4a50d -- round 2 declutter, `/` only. 2026-09-29. `c1-ed-home` is
 * on the homepage hero alone, so the `c1-ed-home ~ section` rules for the bands
 * after it cannot match /for-non-profits or any other page. Same tokens; pinned
 * in src/c1-platform.editorial-trial.spec.ts. The hero's own rules are in the
 * round 3 block at the end of this file. */
/* How Zinda Works: three plain columns, a number each. */
.c1-platform .c1-ed-steps { display: grid; gap: var(--c1-space-6); list-style: none; margin: var(--c1-space-6) 0 0; padding: 0; }
.c1-platform .c1-ed-step-num { color: var(--c1-terracotta-dark); display: block; font-family: var(--c1-serif); font-size: 2rem; line-height: 1; margin-bottom: var(--c1-space-2); }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
/* Audience cards: the body fills the card instead of claiming its full height
 * again under the photo, which left 120-144px above the buttons; every row is
 * as tall as the tallest card. */
.c1-platform .c1-ed-home ~ section .grid:has(> .z-card) { grid-auto-rows: 1fr; }
.c1-platform .c1-ed-home ~ section .z-card .c1-card-body { flex: 1 1 auto; height: auto; }
/* Stories of impact: three posts share one row from tablet up, never 2 + 1. */
@media (min-width: 48rem) {
  .c1-platform .c1-ed-home ~ .c1-stories .grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Card t_687b1303 -- round 3, the `/` hero. 2026-09-29. Same tokens, no new
 * colour, font or request; pinned in src/c1-platform.editorial-trial.spec.ts.
 *
 * Shared header: ONE rule under the nav, 2px ink, drawn by the header itself on
 * every C1 page. Before, the Slice 6f-1 hairline sat on top of the `border-b`
 * that lightHeader and landingHead draw (/pricing), and on top of the hero's
 * ink rule on `/`. The border goes and the shadow is the rule. This selector
 * is the only one after the trial heading that is not trial-scoped. */
.c1-platform .c1-site-header { border-bottom-width: 0; box-shadow: inset 0 -2px 0 var(--c1-ink); }
/* Editorial shell: the nameplate's double rule (end of file) replaces it. */
.c1-platform.c1-editorial .c1-site-header { box-shadow: none; }

/* Hero, top to bottom: masthead strip (thin rule), two-line headline (heavy
 * rule), subhead + CTA beside the ruled stats, photo, closing rule (thin).
 * Heavy is 2px ink, thin 1px ink, the stats hairline 1px border. */
.c1-platform .c1-ed-home { padding: 0; }
.c1-platform .c1-ed-masthead { border-bottom: 1px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: 0 var(--c1-space-6); justify-content: space-between; padding: var(--c1-space-3) 0; }
.c1-platform .c1-ed-masthead p { margin: 0; }
.c1-platform .c1-ed-masthead, .c1-platform .c1-ed-stats dt { color: var(--c1-muted); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; line-height: 1.5; text-transform: uppercase; }
/* One line (HomeCleanUp follow-up): the sentence is 9.06em wide, the content
 * box is the viewport less the 64px gutters, so 10.8vw - .5rem fits it at
 * every width, capped at 132px for the 80rem container (130px at 1280, 103px
 * at 1024, 36px at 375). */
.c1-platform .c1-ed-home .c1-ed-headline { border-bottom: 1px solid var(--c1-ink); font-size: clamp(2.25rem, 10.8vw - .5rem, 8.25rem); letter-spacing: -.02em; line-height: .95; padding: 2rem 0 2.5rem; white-space: nowrap; }
.c1-platform .c1-ed-headline span { display: block; }
.c1-platform .c1-ed-home .c1-ed-headline span { display: inline; }
.c1-platform .c1-ed-home .c1-ed-columns { align-items: stretch; padding: 2rem 0 2.5rem; }
.c1-platform .c1-ed-home .c1-ed-subhead { font-size: 1.5rem; line-height: 1.3; max-width: 30rem; }
.c1-platform .c1-ed-home .c1-ed-actions { gap: var(--c1-space-3) var(--c1-space-6); margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-link { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.25rem; font-style: italic; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.c1-platform .c1-ed-link:hover { color: var(--c1-terracotta-dark); }
/* Stats: label left, number right, a hairline under each row. The two rows
 * share the height of the copy column, so the last hairline meets the CTA. */
.c1-platform .c1-ed-stats { display: grid; gap: var(--c1-space-4) var(--c1-space-6); grid-auto-rows: 1fr; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.c1-platform .c1-ed-stats > div { align-items: baseline; border-bottom: 1px solid var(--c1-border); display: flex; gap: var(--c1-space-3); justify-content: space-between; padding-bottom: var(--c1-space-4); }
.c1-platform .c1-ed-stats dd { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 2.25rem; line-height: 1; margin: 0; }
/* Photo: 8:3 of the container (456px at 1280): more of the 1.9:1 mural than
 * the 16:5 band, 76px taller rather than 228; never a sliver on a phone. */
.c1-platform .c1-ed-home .c1-ed-photo { aspect-ratio: 8 / 3; min-height: 12rem; object-position: 50% 20%; }
/* Plate: a hairline ink rule with a 12px cream mount inside it (8px on
 * phones). border-box, so the 8:3 box is unchanged. */
.c1-platform .c1-ed-home .c1-ed-photo { background: var(--c1-cream); border: 1px solid var(--c1-ink); padding: .75rem; }
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-home .c1-ed-photo { padding: .5rem; }
}
/* Card t_1abb2178 removed the interest row; HomeCleanUp (below) removed the
 * closing rule, so the hero ends on the photo. */
@media (min-width: 60rem) {
  .c1-platform .c1-ed-home .c1-ed-columns { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }
}
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-stats { grid-template-columns: minmax(0, 1fr); }
}

/* HomeCleanUp broadsheet (docs/Broadsheet -- HomeCleanUp.zip). 2026-10-18. The
 * four bands under the `/` hero become ruled sections: a 2px ink rule 56px
 * under the previous content, 20px to a title row with a muted kicker at the
 * right, then flat ruled columns with no card chrome. The headline rule above
 * thins to 1px so the heavy rules are the section tops. `c1-ed-sec`,
 * `c1-ed-sec-head` and `c1-ed-near` are emitted by home2 alone; the card and
 * story rules hang off `c1-ed-home ~`, so no other page can match one. Same
 * tokens, no new colour, font or request; copy unchanged. Pinned in
 * src/c1-platform.editorial-trial.spec.ts. */
.c1-platform .c1-ed-sec { margin-top: 3.5rem; padding-bottom: 0; padding-top: 0; }
/* The rule is a block inside the container's side padding, so it is as wide
 * as the content (and the hero photo), not the gutters. */
.c1-platform .c1-ed-sec::before { border-top: 2px solid var(--c1-ink); content: ''; display: block; margin-bottom: 1.25rem; }
.c1-platform .c1-ed-sec:has(> .c1-ed-near) { padding-bottom: 4rem; }
.c1-platform .c1-ed-sec-head { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-6); justify-content: space-between; margin: 0; }
.c1-platform .c1-ed-sec .c1-section-title { font-size: clamp(2rem, 1.5rem + 1.6vw, 2.75rem); letter-spacing: -.02em; line-height: 1; }
/* Steps: a 1px rule tops each column; number, serif title, muted text. */
.c1-platform .c1-ed-sec-head + * { margin-top: 1.75rem; }
.c1-platform .c1-ed-steps > li { border-top: 1px solid var(--c1-ink); display: flex; flex-direction: column; gap: .625rem; padding-top: .875rem; }
.c1-platform .c1-ed-steps .c1-ed-step-num { font-size: 1.25rem; margin: 0; }
.c1-platform .c1-ed-steps h3 { font-size: 1.875rem; letter-spacing: -.015em; }
.c1-platform .c1-ed-steps p { color: var(--c1-muted); margin: 0; }
/* Audience columns: no card box; the hairline is a 3px rule over a 16:9 photo,
 * dash bullets, and a ruled CTA row of primary button + italic link. */
.c1-platform .c1-ed-home ~ section .z-card, .c1-platform .c1-ed-home ~ section .z-card:hover { background: transparent; border: 0; border-radius: 0; box-shadow: none; transform: none; }
.c1-platform .c1-ed-home ~ section .z-card > .h-1 { height: 3px; }
.c1-platform .c1-ed-home ~ section .z-card figure > div { aspect-ratio: 16 / 9; height: auto; }
.c1-platform .c1-ed-home ~ section .z-card .c1-card-body { gap: .875rem; padding: .875rem 0 0; }
.c1-platform .c1-ed-home ~ section .z-card .c1-card-body > :not(.mt-auto) { margin-top: 0; }
.c1-platform .c1-ed-home ~ section .z-card h3 { font-size: 1.875rem; letter-spacing: -.015em; }
.c1-platform .c1-ed-home ~ section .z-card h3 + p { color: var(--c1-ink); font-size: 1.0625rem; line-height: 1.45; }
.c1-platform .c1-ed-home ~ section .z-card ul { color: var(--c1-muted); }
.c1-platform .c1-ed-home ~ section .z-card li { padding-left: 1.375rem; position: relative; }
.c1-platform .c1-ed-home ~ section .z-card li::before { background: var(--c1-terracotta-dark); content: ''; height: 2px; left: 0; position: absolute; top: .7em; width: .625rem; }
.c1-platform .c1-ed-home ~ section .z-card .mt-auto { align-items: center; border-top: 1px solid var(--c1-border); gap: var(--c1-space-3) 1.25rem; padding-top: 1.125rem; }
.c1-platform .c1-ed-home ~ section .z-card .c1-ed-link { font-size: 1.125rem; }
/* Stories: the partial's own band padding goes; flat columns, the tag a small
 * uppercase line under the 16:9 photo, the read link italic serif. */
.c1-platform .c1-ed-home ~ .c1-stories .c1-ed-sec > section > div { padding: 0; }
.c1-platform .c1-ed-home ~ .c1-stories div:has(> .c1-section-title) { align-items: baseline; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-section-title ~ a { color: var(--c1-ink); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; text-decoration: underline; text-decoration-thickness: 1px; text-transform: uppercase; text-underline-offset: .3em; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-section-title ~ a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-home ~ .c1-stories .grid { margin-top: 1.75rem; }
.c1-platform .c1-ed-home ~ .c1-stories article, .c1-platform .c1-ed-home ~ .c1-stories article:hover { background: transparent; border: 0; border-radius: 0; box-shadow: none; display: flex; flex-direction: column; gap: .75rem; transform: none; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-card-media { display: flex; flex-direction: column; gap: .75rem; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-card-media img { aspect-ratio: 16 / 9; height: auto; object-fit: cover; width: 100%; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-badge { background: none; border: 0; border-radius: 0; color: var(--c1-terracotta-dark); font-size: .75rem; font-weight: 600; letter-spacing: .06em; padding: 0; position: static; text-transform: uppercase; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-card-body { display: flex; flex-direction: column; gap: .75rem; padding: 0; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-card-body > * { margin-top: 0; }
.c1-platform .c1-ed-home ~ .c1-stories h3 { font-size: 1.75rem; letter-spacing: -.015em; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-card-body p { color: var(--c1-muted); font-size: .9375rem; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-card-body a { align-self: flex-start; color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.125rem; font-style: italic; font-weight: 400; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.c1-platform .c1-ed-home ~ .c1-stories .c1-card-body a:hover { color: var(--c1-terracotta-dark); }
/* What's near you: copy 5/12, map 6/12 from the seventh column; serif lead,
 * the vetted line as a kicker, a square 3:2 map. */
.c1-platform .c1-ed-near { align-items: start; }
.c1-platform .c1-ed-near .c1-section-title + p { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.4; margin-top: 1.125rem; }
.c1-platform .c1-ed-near .c1-section-title + p + p { color: var(--c1-muted); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; line-height: 1.5; margin-top: 1.125rem; text-transform: uppercase; }
.c1-platform .c1-ed-near .c1-map { aspect-ratio: 3 / 2; border: 1px solid var(--c1-border); border-radius: 0; height: auto; object-fit: cover; width: 100%; }
@media (min-width: 48rem) {
  .c1-platform .c1-ed-near { column-gap: clamp(2rem, 8%, 7rem); grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); }
}

/* Card t_d84dd731 -- the editorial `/for-individuals` page. 2026-09-29. Part of
 * the same staging trial: src/main.ts adds the path to c1Editorial, so these
 * rules need the C1 flag as well. `c1-ed-ind` is on the three sections the
 * trial partial emits and on nothing else, so `/` and /for-non-profits cannot
 * match one. Same tokens, no new colour, font or request; pinned in
 * src/c1-platform.individuals-redesign.spec.ts.
 *
 * Hero, top to bottom: masthead strip (thin rule), two-line headline (thin
 * rule), subhead + one CTA beside the four ruled points, then the photo. */
.c1-platform .c1-ed-ind { padding: 0; }
.c1-platform .c1-ed-ind .c1-ed-headline { font-size: clamp(3rem, 6.4vw, 5.5rem); letter-spacing: -.02em; line-height: .98; padding: 2rem 0 2.5rem; }
.c1-platform .c1-ed-ind .c1-ed-columns { padding: 2rem 0 2.5rem; }
.c1-platform .c1-ed-ind .c1-ed-actions .c1-ed-note { margin: 0; max-width: 24rem; }
/* 20:7 of the container (426px at 1280), full colour, never a sliver on a phone. */
.c1-platform .c1-ed-ind .c1-ed-photo { aspect-ratio: 20 / 7; min-height: 12rem; }
/* Points: number, title, line, in two columns with a hairline under each. */
.c1-platform .c1-ed-points { display: grid; gap: var(--c1-space-6) var(--c1-space-6); grid-template-columns: repeat(2, minmax(0, 1fr)); list-style: none; margin: 0; padding: 0; }
.c1-platform .c1-ed-points > li { border-bottom: 1px solid var(--c1-border); column-gap: var(--c1-space-3); display: grid; grid-template-columns: auto minmax(0, 1fr); padding-bottom: var(--c1-space-4); }
.c1-platform .c1-ed-point-num { color: var(--c1-terracotta-dark); font-family: var(--c1-serif); font-size: 1.125rem; grid-row: span 2; line-height: 1.4; }
.c1-platform .c1-ed-point-title { font-size: .875rem; font-weight: 700; margin: 0; }
.c1-platform .c1-ed-points p:last-child { color: var(--c1-muted); font-size: .8125rem; margin: var(--c1-space-1) 0 0; }
/* Impact profile: copy beside the screenshot, its caption under the frame. */
.c1-platform .c1-ed-ind-impact { padding: var(--c1-space-6) 0; }
.c1-platform .c1-ed-ind-label { color: var(--c1-muted); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; line-height: 1.5; margin: 0; text-transform: uppercase; }
.c1-platform .c1-ed-ind-title { font-family: var(--c1-serif); font-size: clamp(1.75rem, 1.2rem + 1.7vw, 2.5rem); font-weight: 400; letter-spacing: -.01em; line-height: 1.15; margin: var(--c1-space-3) 0 0; }
.c1-platform .c1-ed-ind-body { margin: var(--c1-space-4) 0 0; max-width: 34rem; }
.c1-platform .c1-ed-ind-more { margin: var(--c1-space-4) 0 0; }
.c1-platform .c1-ed-ind-more .c1-ed-link { font-size: 1.0625rem; }
.c1-platform .c1-ed-shot { margin: 0; }
.c1-platform .c1-ed-shot img { border: 1px solid var(--c1-border); display: block; height: auto; width: 100%; }
.c1-platform .c1-ed-shot figcaption { margin-top: var(--c1-space-3); }
/* Closing band: heading left, the one CTA and its note right, between rules. */
.c1-platform .c1-ed-close { align-items: center; border-bottom: 1px solid var(--c1-ink); border-top: 1px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-4) var(--c1-space-6); justify-content: space-between; padding: var(--c1-space-6) 0 var(--c1-space-6); }
.c1-platform .c1-ed-close .c1-ed-actions { margin-top: 0; }
.c1-platform .c1-ed-ind-end { padding-bottom: 4rem; }
@media (min-width: 60rem) {
  .c1-platform .c1-ed-ind .c1-ed-columns { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }
  .c1-platform .c1-ed-ind-impact .c1-ed-columns { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); }
}
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-points { grid-template-columns: minmax(0, 1fr); }
  .c1-platform .c1-ed-ind .c1-ed-actions .c1-ed-note { max-width: none; }
}

/* Card t_17653915 -- /for-non-profits rebuilt on the shared editorial layout.
 * 2026-09-30. This replaces the card t_48a3986d block: the page now sets with
 * the hero, type scale, band rhythm and rules `/` and /for-individuals already
 * use, so the hooks below are the generalised equivalents of that card's
 * page-only rules. `c1-ed-page` is the page-family hook the partial puts on
 * each of its sections (and nothing else carries), and `c1-ed-label` and
 * `c1-ed-title` are shared editorial primitives -- the micro-label and the
 * serif band title -- that any trial page can reuse. Same tokens, no new
 * colour, font, button or request; pinned in
 * src/c1-platform.nonprofits-simplify.spec.ts.
 *
 * Bands: one rhythm for every section, the hero flush under the nav rule and
 * the last band closing the page. */
.c1-platform .c1-ed-page { padding: var(--c1-space-6) 0; }
.c1-platform .c1-ed-hero.c1-ed-page { padding: 0; }
.c1-platform .c1-ed-page:last-child { padding-bottom: 4rem; }
/* Hero: masthead strip (thin rule), display headline (thin rule), subhead and
 * one CTA beside the ruled stats, then the photo band. */
.c1-platform .c1-ed-page .c1-ed-headline { font-size: clamp(3rem, 6.4vw, 5.5rem); letter-spacing: -.02em; line-height: .98; padding: 2rem 0 2.5rem; }
.c1-platform .c1-ed-page .c1-ed-columns { padding: 2rem 0 2.5rem; }
/* 20:7 of the container (426px at 1280), full colour, never a sliver on a phone. */
.c1-platform .c1-ed-page .c1-ed-photo { aspect-ratio: 20 / 7; min-height: 12rem; }
/* Shared primitives. */
.c1-platform .c1-ed-label { color: var(--c1-muted); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; line-height: 1.5; margin: 0; text-transform: uppercase; }
.c1-platform .c1-ed-title { font-family: var(--c1-serif); font-size: clamp(1.75rem, 1.2rem + 1.7vw, 2.5rem); font-weight: 400; letter-spacing: -.01em; line-height: 1.15; margin: 0; }
/* A point may carry a label above its title: that is a third line, so its
 * numeral spans one more row than the two /for-individuals gives it. Without
 * :has() the numeral simply sets beside the label. */
.c1-platform .c1-ed-points > li:has(> .c1-ed-label) > .c1-ed-point-num { grid-row: span 3; }
.c1-platform .c1-ed-label + .c1-ed-point-title { margin-top: var(--c1-space-1); }
/* Closing band: the offer note is three sentences, so it is bounded to keep the
 * heading and the CTA on one row. */
.c1-platform .c1-ed-page .c1-ed-close .c1-ed-note { max-width: 34rem; }

/* Pricing -- the editorial `/non-profit-pricing`. 2026-09-30. Same staging
 * trial: src/main.ts adds the path to c1Editorial. Same tokens, no new colour,
 * font, button or request; pinned in src/c1-platform.nonprofit-pricing.spec.ts.
 *
 * Founding Partner callout: a ruled box in the hero's second column. */
.c1-platform .c1-ed-accent { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-callout { border: 1px solid var(--c1-ink); padding: var(--c1-space-6); }
.c1-platform .c1-ed-callout-head { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-1) var(--c1-space-4); justify-content: space-between; }
.c1-platform .c1-ed-callout .c1-ed-title { font-size: 1.5rem; margin-top: var(--c1-space-2); }
.c1-platform .c1-ed-callout a { color: var(--c1-ink); font-size: .75rem; font-weight: 600; letter-spacing: .08em; text-decoration: underline; text-decoration-thickness: 1px; text-transform: uppercase; text-underline-offset: .3em; }
.c1-platform .c1-ed-callout a:hover { color: var(--c1-terracotta-dark); }
/* Band heading: a heavy rule, the title left and a micro-label right. */
.c1-platform .c1-ed-head { align-items: baseline; border-top: 2px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-6); justify-content: space-between; padding-top: var(--c1-space-4); }
/* Plans: the billing toggle keys off aria-pressed, as the Slice 6e one does.
 * From tablet up the ruled columns share their rows (subgrid), so prices, lists
 * and buttons line up whether or not a plan carries the accent note in row 4.
 * /corporate-pricing sets three plans (`c1-ed-plans-three`): one column, then three. */
.c1-platform .c1-ed-toggle { display: flex; margin-top: var(--c1-space-4); }
.c1-platform .c1-ed-plans .c1-filter-button[aria-pressed='true'] { background: var(--c1-ink); border-color: var(--c1-ink); color: var(--c1-surface); }
.c1-platform .c1-ed-plan-grid { display: grid; gap: 2.5rem var(--c1-space-6); margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-plan { border-top: 1px solid var(--c1-ink); display: grid; padding-top: var(--c1-space-3); row-gap: var(--c1-space-3); }
.c1-platform .c1-ed-plan--lead { border-top-width: 3px; }
.c1-platform .c1-ed-plan .c1-ed-label { display: flex; justify-content: space-between; }
.c1-platform .c1-ed-plan .c1-ed-note { margin: 0; }
.c1-platform .c1-ed-price { font-family: var(--c1-serif); font-size: clamp(2.5rem, 2rem + 1.6vw, 3.5rem); font-weight: 400; line-height: 1; margin: 0; }
.c1-platform .c1-ed-price small { color: var(--c1-muted); font-family: var(--c1-sans); font-size: .875rem; }
.c1-platform .c1-ed-tagline { font-family: var(--c1-serif); font-size: 1.125rem; font-style: italic; margin: 0; }
.c1-platform .c1-ed-features { border-top: 1px solid var(--c1-border); font-size: .875rem; list-style: none; margin: 0; padding: 0; }
.c1-platform .c1-ed-features li { border-bottom: 1px solid var(--c1-border); padding: var(--c1-space-2) 0; }
/* Comparison: a plain ruled table that scrolls inside its own box on a phone. */
.c1-platform .c1-ed-compare { margin-top: var(--c1-space-4); overflow-x: auto; }
.c1-platform .c1-ed-compare table { border-collapse: collapse; font-size: .875rem; min-width: 44rem; width: 100%; }
.c1-platform .c1-ed-compare th, .c1-platform .c1-ed-compare td { border-bottom: 1px solid var(--c1-border); color: var(--c1-muted); font-weight: 400; padding: var(--c1-space-3) var(--c1-space-4) var(--c1-space-3) 0; text-align: left; vertical-align: top; }
.c1-platform .c1-ed-compare thead th { border-bottom-color: var(--c1-ink); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.c1-platform .c1-ed-compare tbody th { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.125rem; }
.c1-platform .c1-ed-compare tbody tr:last-child th, .c1-platform .c1-ed-compare tbody tr:last-child td { border-bottom-color: var(--c1-ink); }
.c1-platform .c1-ed-compare-own td { color: var(--c1-ink); font-weight: 700; }
/* Questions: the heading beside the rows, each a question beside its answer. */
.c1-platform .c1-ed-faq { border-top: 2px solid var(--c1-ink); display: grid; gap: var(--c1-space-4) 4rem; padding-top: var(--c1-space-4); }
.c1-platform .c1-ed-faq dl { margin: 0; }
.c1-platform .c1-ed-faq dl > div { border-bottom: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-2) var(--c1-space-6); padding: var(--c1-space-4) 0; }
.c1-platform .c1-ed-faq dl > div:first-child { border-top: 1px solid var(--c1-border); }
.c1-platform .c1-ed-faq dt { font-family: var(--c1-serif); font-size: 1.25rem; line-height: 1.25; }
.c1-platform .c1-ed-faq dd { color: var(--c1-muted); font-size: .875rem; margin: 0; }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-plan-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .c1-platform .c1-ed-plans-three .c1-ed-plan-grid { grid-template-columns: minmax(0, 1fr); }
  .c1-platform .c1-ed-plan { grid-row: span 6; grid-template-rows: subgrid; }
  .c1-platform .c1-ed-features { grid-row: 5; }
  .c1-platform .c1-ed-plan .c1-button { align-self: end; grid-row: 6; }
  .c1-platform .c1-ed-faq dl > div { grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr); }
}
@media (min-width: 60rem) {
  .c1-platform .c1-ed-plan-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .c1-platform .c1-ed-plans-three .c1-ed-plan-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c1-platform .c1-ed-faq { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
}

/* Sign in -- the editorial `/login`. 2026-09-30. Same staging trial:
 * src/main.ts adds the path to c1Editorial. Same tokens, no new colour, font,
 * button or request; pinned in src/c1-platform.login.spec.ts.
 *
 * Masthead strip, then the headline and intro beside the sign-in column: a
 * thin rule, the label, three ruled provider rows (56px, provider mark and
 * label left, arrow right) and the terms note under a hairline.
 * Rows are white, not cream: Google's branding guideline requires the G to sit
 * on white. */
.c1-platform .c1-ed-login .c1-ed-columns { padding: 2.5rem 0 4rem; }
.c1-platform .c1-ed-login .c1-ed-headline { border-bottom: 0; padding: 0 0 2rem; }
.c1-platform .c1-ed-signin { border-top: 1px solid var(--c1-ink); padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-providers { display: grid; gap: var(--c1-space-3); list-style: none; margin: var(--c1-space-4) 0 0; padding: 0; }
.c1-platform .c1-ed-provider { align-items: center; background: #fff; border: 1px solid var(--c1-ink); color: var(--c1-ink); display: flex; font-weight: 600; gap: var(--c1-space-3); justify-content: space-between; min-height: 3.5rem; padding: var(--c1-space-2) var(--c1-space-4); }
.c1-platform .c1-ed-provider-label { align-items: center; display: flex; gap: var(--c1-space-3); min-width: 0; }
.c1-platform .c1-ed-provider-icon { flex: none; height: 1.25rem; width: 1.25rem; }
.c1-platform .c1-ed-provider:hover { background: var(--c1-surface); border-color: var(--c1-terracotta-dark); color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-provider:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
.c1-platform .c1-ed-signin .c1-ed-note { border-top: 1px solid var(--c1-border); margin-top: var(--c1-space-6); padding-top: var(--c1-space-4); }
.c1-platform .c1-ed-signin .c1-ed-note a { color: var(--c1-ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.c1-platform .c1-ed-signin .c1-ed-note a:hover { color: var(--c1-terracotta-dark); }

/* Dashboard -- the broadsheet `/app` body (2026-09-30). `c1-ed-dash-*` hooks are
 * emitted by app/home.hbs and app/partials/eventRows.hbs only; the masthead,
 * stats, band heads, labels, notes and links reuse the c1-ed-* primitives
 * above. The app shell has no `c1-editorial` body class, so every rule hangs
 * off a `c1-ed-dash-*` hook. Tokens only: no new colour, font or request.
 * Hero 7/4 and the lower 5/6 grids collapse to one column under 60rem; the
 * event row keeps its date column on a phone and drops cause + action under
 * the title. */
/* Every /app page (`c1-ed-shell` on the shell's main container) sits in a
 * centred 80rem column; the side gutter widens from tablet up, the phone
 * keeps the 1rem shell margin. */
.c1-platform .c1-ed-shell { margin-left: max(var(--c1-space-4), calc((100% - 80rem) / 2)); margin-right: max(var(--c1-space-4), calc((100% - 80rem) / 2)); }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-shell { padding: 0 var(--c1-space-6); }
}
/* Buttons on every /app page take the dashboard action's shape: square
 * corners and one size whatever legacy size class they carry. The 7rem floor
 * (2026-10-01) pads short labels out to the width of the longest common one
 * ("Create New"), so a screen's buttons line up instead of hugging their
 * text. Icon (circle) buttons, pagination (page links, Grid.js) and the
 * dashboard's own controls are left to their rules. */
.c1-platform .c1-ed-shell .btn:not(.btn-circle):not(.c1-page-link):not(.c1-ed-dash-quiet):not(.c1-report-grid .btn),
.c1-platform .c1-ed-shell .c1-button,
.c1-platform .c1-ed-shell .c1-filter-button { border-radius: 0; font-size: .8125rem; font-weight: 700; height: auto; letter-spacing: .06em; line-height: 1.2; min-height: 2.25rem; min-width: 7rem; padding: var(--c1-space-2) var(--c1-space-4); text-transform: uppercase; }
.c1-platform .c1-ed-shell .c1-button,
.c1-platform .c1-ed-shell .c1-filter-button { border-width: 2px; }
.c1-platform .c1-ed-shell .c1-button--secondary { border-color: var(--c1-ink); }
.c1-platform .c1-ed-dash { padding-bottom: 4rem; }
.c1-platform .c1-ed-dash-hero { align-items: end; display: grid; gap: var(--c1-space-6); padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-dash-greeting { font-family: var(--c1-serif); font-size: clamp(2.5rem, 1.5rem + 3vw, 3.5rem); font-weight: 400; letter-spacing: -.02em; line-height: 1; margin: 0 0 var(--c1-space-3); }
.c1-platform .c1-ed-dash-hero .c1-ed-subhead { font-size: 1.25rem; }
.c1-platform .c1-ed-dash-hero .c1-ed-link { display: inline-block; font-size: 1.125rem; margin-top: var(--c1-space-3); }
.c1-platform .c1-ed-dash-hero .c1-ed-stats { gap: var(--c1-space-3); grid-auto-rows: auto; grid-template-columns: minmax(0, 1fr); }
.c1-platform .c1-ed-dash-hero .c1-ed-stats > div { padding-bottom: var(--c1-space-2); }
.c1-platform .c1-ed-dash-hero .c1-ed-stats dd { font-size: 1.75rem; }
.c1-platform .c1-ed-dash-section { margin-top: 2.5rem; }
/* A section straight under the masthead (/app/events) shares its rule. */
.c1-platform .c1-ed-masthead + .c1-ed-dash-section > .c1-ed-head { border-top: 0; padding-top: 0; }
.c1-platform .c1-ed-dash-more { color: var(--c1-ink); font-size: .875rem; font-weight: 600; text-decoration: underline; text-decoration-color: var(--c1-terracotta); text-decoration-thickness: 1px; text-underline-offset: .2em; }
.c1-platform .c1-ed-dash-masthead-mark { color: var(--c1-terracotta); }
.c1-platform .c1-ed-dash-more:hover { color: var(--c1-terracotta-dark); }
/* Filter row: segments, three selects, the Places input, Suggest and Clear at the far right. */
.c1-platform .c1-ed-dash-filters { align-items: center; border-bottom: 1px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-3); margin-top: var(--c1-space-4); padding-bottom: var(--c1-space-4); }
.c1-platform .c1-ed-dash-segments { border: 1px solid var(--c1-ink); display: flex; max-width: 100%; }
/* Phones: the four segments share the row and may shrink, so they fit 320px. */
.c1-platform .c1-ed-dash-segments button, .c1-platform .c1-ed-dash-segments a { align-items: center; background: transparent; border: 0; color: var(--c1-ink); cursor: pointer; display: inline-flex; flex: 1 1 auto; font: inherit; font-size: .8125rem; font-weight: 600; justify-content: center; min-height: 2.5rem; min-width: 0; padding: 0 var(--c1-space-1); text-decoration: none; white-space: nowrap; }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-dash-segments { display: inline-flex; }
  .c1-platform .c1-ed-dash-suggest, .c1-platform .c1-ed-dash-end { margin-left: auto; }
  .c1-platform .c1-ed-dash-segments button, .c1-platform .c1-ed-dash-segments a { flex: none; font-size: .875rem; padding: 0 var(--c1-space-4); }
}
.c1-platform .c1-ed-dash-segments button[aria-pressed='true'], .c1-platform .c1-ed-dash-segments a[aria-current] { background: var(--c1-ink); color: var(--c1-surface); }
.c1-platform .c1-ed-dash-filters select, .c1-platform .c1-ed-dash-filters input[type='text'], .c1-platform .c1-ed-dash-filters input[type='search'] { background: transparent; border: 1px solid var(--c1-ink); border-radius: 0; color: var(--c1-ink); font: inherit; font-size: .875rem; max-width: 100%; min-height: 2.5rem; padding: 0 var(--c1-space-3); }
.c1-platform .c1-ed-dash-quiet { background: transparent; border: 0; color: var(--c1-muted); cursor: pointer; font: inherit; font-size: .8125rem; letter-spacing: .04em; min-height: 2.5rem; padding: 0 var(--c1-space-2); text-transform: uppercase; }
.c1-platform .c1-ed-dash-quiet:hover, .c1-platform .c1-ed-dash-quiet.btn-warning { color: var(--c1-ink); text-decoration: underline; text-underline-offset: .2em; }
/* Phones, member pages (/app, /app/events, /app/organizations; /admin/events has
 * its own rules below): the segments fill the content width as equal cells, the
 * two selects split a row, and the Places input shares its row with Suggest and
 * Clear; every control is a 2.75rem target. */
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) .c1-ed-dash-segments { flex: 1 1 100%; }
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) .c1-ed-dash-segments button { flex: 1 1 0; font-size: .75rem; min-height: 2.75rem; padding: 0; }
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) select { flex: 1 1 40%; min-height: 2.75rem; min-width: 0; }
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) input[type='text'] { flex: 1 1 8rem; min-height: 2.75rem; min-width: 0; }
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) .c1-ed-dash-quiet { min-height: 2.75rem; }
}
/* Under 24rem a five-segment group (/app/events) wraps three over two, where
 * "Supporting" no longer fits a fifth, the input takes a line of its own and
 * Suggest and Clear share the next. */
@media (max-width: 23.9375rem) {
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) .c1-ed-dash-segments { flex-wrap: wrap; }
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) .c1-ed-dash-segments:has(> :nth-child(5)) button { flex-basis: 30%; }
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) input[type='text'] { flex-basis: 100%; }
  .c1-platform .c1-ed-dash-filters:not(.c1-ed-adm-filters) .c1-ed-dash-quiet { flex: 1 1 0; }
}
/* Rows under a month head: weekday/day | title, meta, excerpt, tags. The whole row is the
 * link; hover/focus tint the title. */
.c1-platform .c1-ed-dash-month { margin-top: var(--c1-space-6); padding-top: var(--c1-space-3); }
.c1-platform .c1-ed-dash-month:first-child { margin-top: 0; }
.c1-platform .c1-ed-dash-month .c1-ed-title { font-size: 2rem; }
.c1-platform .c1-ed-dash-row { border-bottom: 1px solid var(--c1-border); color: var(--c1-ink); display: grid; gap: var(--c1-space-3) var(--c1-space-4); grid-template-columns: 4rem minmax(0, 1fr); padding: var(--c1-space-4) 0; text-decoration: none; }
.c1-platform .c1-ed-dash-row:hover .c1-ed-dash-row-title, .c1-platform .c1-ed-dash-row:focus-visible .c1-ed-dash-row-title { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-dash-row:focus-visible { outline: 2px solid var(--c1-ink); outline-offset: 2px; }
.c1-platform .c1-ed-dash-row-date { align-content: start; display: grid; gap: 2px; }
.c1-platform .c1-ed-dash-row-day { font-family: var(--c1-serif); font-size: 2.25rem; line-height: 1; }
.c1-platform .c1-ed-dash-row--past .c1-ed-dash-row-day { color: var(--c1-muted); }
.c1-platform .c1-ed-dash-row-body { display: grid; gap: var(--c1-space-2); min-width: 0; }
.c1-platform .c1-ed-dash-row-body p { margin: 0; }
.c1-platform .c1-ed-dash-row-title { font-family: var(--c1-serif); font-size: 1.75rem; line-height: 1.15; overflow-wrap: anywhere; }
.c1-platform .c1-ed-dash-row-title .c1-ed-label { display: inline-block; font-family: var(--c1-sans); margin-left: var(--c1-space-2); vertical-align: .35em; }
.c1-platform .c1-ed-dash-row-meta { color: var(--c1-muted); font-size: 1rem; }
.c1-platform .c1-ed-dash-row-desc { -webkit-box-orient: vertical; display: -webkit-box; -webkit-line-clamp: 2; font-size: 1.0625rem; overflow: hidden; }
/* The viewer's own ties to the event; supporting and giving are different things. */
.c1-platform .c1-ed-dash-you--attending, .c1-platform .c1-ed-dash-you--member { color: var(--c1-leaf); }
/* Organization rows (/app/organizations): the logo takes the date's column; ties are
 * dot-separated spans, and the line goes when there are none. */
.c1-platform .c1-ed-dash-row-logo { background: var(--c1-surface); border: 1px solid var(--c1-border); height: 4rem; object-fit: contain; padding: var(--c1-space-1); width: 4rem; }
.c1-platform .c1-ed-dash-ties:empty { display: none; }
.c1-platform .c1-ed-dash-ties > span + span::before { color: var(--c1-muted); content: ' · '; }
.c1-platform .c1-ed-dash-you--supporting { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-dash-you--given { color: var(--c1-ink); font-weight: 800; }
/* Rows beside the organization checklist (name, count, box at the right edge). */
.c1-platform .c1-ed-dash-events { display: grid; gap: var(--c1-space-6); }
.c1-platform .c1-ed-dash-orgs { border: 0; margin: 0; min-width: 0; padding: 0; }
.c1-platform .c1-ed-dash-orgs legend { padding: var(--c1-space-3) 0 var(--c1-space-2); }
.c1-platform .c1-ed-dash-orgs label { align-items: center; border-top: 1px solid var(--c1-border); cursor: pointer; display: flex; font-size: .9375rem; gap: var(--c1-space-3); padding: var(--c1-space-2) 0; }
.c1-platform .c1-ed-dash-orgs label:last-child { border-bottom: 1px solid var(--c1-border); }
.c1-platform .c1-ed-dash-orgs label > span { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.c1-platform .c1-ed-dash-orgs small { color: var(--c1-muted); font-size: .75rem; }
.c1-platform .c1-ed-dash-orgs input { accent-color: var(--c1-ink); flex: none; height: 1rem; margin: 0; width: 1rem; }
/* For you: full-width ruled items. */
.c1-platform .c1-ed-dash-item { border-top: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-2); justify-items: start; margin-top: var(--c1-space-2); padding: var(--c1-space-3) 0; }
.c1-platform .c1-ed-dash-item + .c1-ed-dash-item { margin-top: 0; }
.c1-platform .c1-ed-dash-item:last-child { border-bottom: 1px solid var(--c1-border); }
.c1-platform .c1-ed-dash-item > p:not(.c1-ed-label) { font-family: var(--c1-serif); font-size: 1.25rem; line-height: 1.3; margin: 0; }
.c1-platform .c1-ed-dash-item > p a { color: var(--c1-ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
@media (min-width: 60rem) {
  .c1-platform .c1-ed-dash-hero { gap: 4rem; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); }
  .c1-platform .c1-ed-dash-events { align-items: start; column-gap: var(--c1-space-6); grid-template-columns: minmax(0, 1fr) 16rem; }
}

/* Event page -- the broadsheet `/app/events/:id` (2026-10-01), after
 * docs/Broadsheet — Event page. `c1-ed-event-*` hooks are emitted by
 * app/event.hbs only; masthead, labels, band heads, FAQ and the closing band
 * reuse the c1-ed-* primitives, buttons take the /app shell shape. Tokens only:
 * no new colour, font or request. Mobile stacks top -> actions -> map/organizer;
 * from 60rem the actions sit in a 4fr column beside a 7fr body. */
.c1-platform .c1-ed-event { padding-bottom: 4rem; }
.c1-platform .c1-ed-event-masthead a { color: inherit; }
.c1-platform .c1-ed-event-masthead a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-event-title { font-family: var(--c1-serif); font-size: clamp(2.75rem, 1.5rem + 4.5vw, 5.25rem); font-weight: 400; letter-spacing: -.025em; line-height: 1; margin: 2rem 0 0; max-width: 62rem; overflow-wrap: anywhere; text-wrap: balance; }
.c1-platform .c1-ed-event-grid { border-top: 1px solid var(--c1-ink); display: grid; gap: 1.75rem; grid-template-areas: 'top' 'aside' 'bottom'; grid-template-columns: minmax(0, 1fr); margin-top: 2rem; padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-event-top, .c1-platform .c1-ed-event-bottom { display: grid; gap: 1.75rem; min-width: 0; }
.c1-platform .c1-ed-event-top { grid-area: top; }
.c1-platform .c1-ed-event-bottom { align-content: start; grid-area: bottom; }
.c1-platform .c1-ed-event-desc { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.4; max-width: 44rem; overflow-wrap: anywhere; white-space: pre-line; }
.c1-platform .c1-ed-event p { margin: 0; }
.c1-platform .c1-ed-event-desc p + p { margin-top: .75em; }
.c1-platform .c1-ed-event-sub { color: var(--c1-muted); font-size: .9375rem; }
.c1-platform .c1-ed-event-fact { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.2; }
.c1-platform .c1-ed-event-facts { display: grid; gap: var(--c1-space-6); }
.c1-platform .c1-ed-event-facts > div { border-bottom: 1px solid var(--c1-border); border-top: 1px solid var(--c1-ink); display: grid; gap: .375rem; padding: .875rem 0; }
.c1-platform .c1-ed-event-map { background: var(--c1-cream); border: 1px solid var(--c1-ink); height: 18.75rem; }
.c1-platform .c1-ed-event-causes { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) 1.25rem; }
.c1-platform .c1-ed-event-causes p:last-child { display: flex; flex-wrap: wrap; font-family: var(--c1-serif); font-size: 1.25rem; min-width: 0; }
.c1-platform .c1-ed-event-causes span { color: var(--c1-border); padding: 0 .625rem; }
.c1-platform .c1-ed-event-causes a, .c1-platform .c1-ed-event-count { color: var(--c1-ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.c1-platform .c1-ed-event-causes a:hover, .c1-platform .c1-ed-event-count:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-event-org { align-items: center; border-bottom: 1px solid var(--c1-border); border-top: 2px solid var(--c1-ink); color: var(--c1-ink); display: flex; gap: var(--c1-space-4); padding: 1.125rem 0; text-decoration: none; }
.c1-platform .c1-ed-event-org img { background: var(--c1-surface); border: 1px solid var(--c1-ink); flex: none; height: 3.5rem; object-fit: contain; width: 3.5rem; }
.c1-platform .c1-ed-event-org > span { display: grid; gap: 2px; min-width: 0; }
.c1-platform .c1-ed-event-org-name { font-family: var(--c1-serif); font-size: 1.5rem; line-height: 1.1; }
.c1-platform .c1-ed-event-org:hover .c1-ed-event-org-name { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-event-org .c1-ed-event-sub { -webkit-box-orient: vertical; display: -webkit-box; font-size: .875rem; -webkit-line-clamp: 2; overflow: hidden; }
/* Actions: ruled blocks inside one ink-bordered surface. */
.c1-platform .c1-ed-event-aside { align-self: start; background: var(--c1-surface); border: 1px solid var(--c1-ink); grid-area: aside; min-width: 0; padding: var(--c1-space-6); }
.c1-platform .c1-ed-event-block { border-bottom: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-3); padding: var(--c1-space-6) 0; }
.c1-platform .c1-ed-event-aside > :first-child { padding-top: 0; }
.c1-platform .c1-ed-event-aside > :last-child { border-bottom: 0; padding-bottom: 0; }
.c1-platform .c1-ed-event-donate, .c1-platform .c1-ed-event-ended { border-bottom-color: var(--c1-ink); }
.c1-platform .c1-ed-event-fundraiser { margin-bottom: var(--c1-space-4); }
.c1-platform .c1-ed-event-raised { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-2); justify-content: space-between; }
.c1-platform .c1-ed-event-raised span { font-family: var(--c1-serif); font-size: 2.125rem; letter-spacing: -.01em; line-height: 1; }
.c1-platform .c1-ed-event-raised small { color: var(--c1-muted); font-size: .8125rem; }
.c1-platform .c1-ed-event-progress { appearance: none; background: var(--c1-cream); border: 0; display: block; height: 6px; width: 100%; }
.c1-platform .c1-ed-event-progress::-webkit-progress-bar { background: var(--c1-cream); }
.c1-platform .c1-ed-event-progress::-webkit-progress-value { background: var(--c1-ink); }
.c1-platform .c1-ed-event-progress::-moz-progress-bar { background: var(--c1-ink); }
.c1-platform .c1-ed-event .c1-ed-event-cta { min-height: 3.25rem; width: 100%; }
.c1-platform .c1-ed-event .c1-button--secondary { color: var(--c1-ink); }
.c1-platform .c1-ed-event .c1-ed-event-cta--fill { background: var(--c1-ink); border-color: var(--c1-ink); color: var(--c1-surface); }
.c1-platform .c1-ed-event .c1-ed-event-cta--fill:hover { background: var(--c1-terracotta-dark); border-color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-event-center { text-align: center; }
.c1-platform .c1-ed-event-count { background: none; border: 0; cursor: pointer; font: inherit; padding: 0; }
.c1-platform .c1-ed-event-split { align-items: center; display: flex; flex-wrap: wrap; font-size: .8125rem; gap: var(--c1-space-2); justify-content: space-between; }
.c1-platform .c1-ed-event-split .c1-ed-event-count { align-items: center; display: inline-flex; gap: var(--c1-space-2); }
.c1-platform .c1-ed-event-avatars { display: inline-flex; }
.c1-platform .c1-ed-event-avatars img { background: var(--c1-cream); border: 1px solid var(--c1-ink); height: 1.75rem; object-fit: cover; width: 1.75rem; }
.c1-platform .c1-ed-event-avatars img + img { margin-left: -.375rem; }
/* Support / wall rows: label left, button right on the org page (the button leads in source). */
.c1-platform .c1-ed-event-row { align-items: center; border-bottom: 1px solid var(--c1-border); display: flex; flex-direction: row-reverse; gap: var(--c1-space-4); justify-content: space-between; padding: 1.125rem 0; }
.c1-platform .c1-ed-event-row > span { display: grid; gap: 2px; min-width: 0; }
.c1-platform .c1-ed-event-row strong { font-size: .9375rem; font-weight: 600; }
.c1-platform .c1-ed-event-row .c1-ed-event-sub { font-size: .8125rem; }
.c1-platform .c1-ed-event-row .c1-button { flex: none; }
/* The event page stacks the same rows: full-width action on top, its line beneath. */
.c1-platform .c1-ed-event-row--stack { align-items: stretch; display: grid; gap: var(--c1-space-3); grid-template-columns: minmax(0, 1fr); }
.c1-platform .c1-ed-event-thanks { font-family: var(--c1-serif); font-size: 1.5rem; line-height: 1.2; }
.c1-platform .c1-ed-event-tiles { display: grid; gap: var(--c1-space-3) var(--c1-space-4); grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: .375rem; }
.c1-platform .c1-ed-event-tiles > * { background: none; border: 0; border-top: 1px solid var(--c1-border); color: var(--c1-muted); display: grid; font: inherit; font-size: .75rem; gap: 2px; letter-spacing: .04em; padding: var(--c1-space-2) 0 0; text-align: left; text-transform: uppercase; }
.c1-platform .c1-ed-event-tiles > button { cursor: pointer; }
.c1-platform .c1-ed-event-tiles > button:hover span { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-event-tiles span { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.625rem; letter-spacing: 0; line-height: 1; text-transform: none; }
.c1-platform .c1-ed-event-share { display: grid; gap: var(--c1-space-2); padding-top: 1.125rem; }
/* Bands under the grid: top donors, questions, facts, the closing call. */
.c1-platform .c1-ed-event-band { margin-top: 3rem; }
.c1-platform .c1-ed-event-list { display: grid; gap: var(--c1-space-6); grid-template-columns: minmax(0, 1fr); margin-top: 1.25rem; }
.c1-platform .c1-ed-event-list > * { border-top: 1px solid var(--c1-ink); color: var(--c1-ink); display: grid; gap: .625rem; padding-top: .875rem; text-decoration: none; }
.c1-platform .c1-ed-event-list .c1-ed-event-fact { font-size: 1.25rem; line-height: 1.35; overflow-wrap: anywhere; }
.c1-platform .c1-ed-event-list a:hover .c1-ed-event-fact { color: var(--c1-terracotta-dark); }
/* Did you know?: terracotta sequence number, source pinned to the foot so every box in a row ends level. */
.c1-platform .c1-ed-event-dyk > div { align-content: start; grid-template-rows: auto auto 1fr; }
.c1-platform .c1-ed-event-seq { color: var(--c1-terracotta); font-family: var(--c1-serif); font-size: 1.875rem; line-height: 1; }
.c1-platform .c1-ed-event-source { align-self: end; color: var(--c1-muted); font-size: .8125rem; letter-spacing: .02em; overflow-wrap: anywhere; padding-top: var(--c1-space-2); }
.c1-platform .c1-ed-event-faq { margin-top: 2rem; }
/* Questions: the /for-non-profits accordion -- a card of rows, + turns to x. */
.c1-platform .c1-ed-event-faq details + details { border-top: 1px solid var(--c1-border); }
.c1-platform .c1-ed-event-faq summary { align-items: center; cursor: pointer; display: flex; gap: var(--c1-space-4); justify-content: space-between; list-style: none; padding: var(--c1-space-6); }
.c1-platform .c1-ed-event-faq summary::-webkit-details-marker { display: none; }
.c1-platform .c1-ed-event-faq summary > span:first-child { font-weight: 600; }
.c1-platform .c1-ed-event-faq summary > span:last-child { color: var(--c1-muted); flex: none; transition: transform 150ms ease; }
.c1-platform .c1-ed-event-faq details[open] summary > span:last-child { transform: rotate(45deg); }
.c1-platform .c1-ed-event-faq summary:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: -3px; }
.c1-platform .c1-ed-event-faq p { color: var(--c1-muted); margin-top: calc(-1 * var(--c1-space-3)); padding: 0 var(--c1-space-6) var(--c1-space-6); }
.c1-platform .c1-ed-event-close { border-bottom-width: 2px; margin-top: 3rem; padding: 2rem 0; }
.c1-platform .c1-ed-event-close-line { font-family: var(--c1-serif); font-size: clamp(1.75rem, 1.25rem + 1.5vw, 2.125rem); letter-spacing: -.02em; line-height: 1.15; }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-event-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 60rem) {
  .c1-platform .c1-ed-event-grid { column-gap: 4rem; grid-template-areas: 'top aside' 'bottom aside'; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); grid-template-rows: auto 1fr; }
  .c1-platform .c1-ed-event-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c1-platform .c1-ed-event-dyk { grid-auto-rows: 1fr; }
}

/* Org profile (/app/organizations/:id), after docs/Broadsheet — Non-profit
 * profile. `c1-ed-org` sits beside `c1-ed-event` on the wrapper, so the action
 * panel, rows, fill CTA and closing band reuse the event page's rules above;
 * these are the page's own. Tokens only: no new colour, font or request. */
.c1-platform .c1-ed-org-top { display: grid; gap: 2rem; grid-template-columns: minmax(0, 1fr); padding: 2rem 0 3rem; }
/* The event page names its aside's grid area; this grid has none. */
.c1-platform .c1-ed-org .c1-ed-event-aside { grid-area: auto; }
.c1-platform .c1-ed-org-intro { align-content: start; display: grid; gap: var(--c1-space-4) var(--c1-space-6); grid-template-columns: minmax(0, 1fr); }
.c1-platform .c1-ed-org-logo { background: var(--c1-surface); border: 1px solid var(--c1-ink); height: 6rem; object-fit: contain; padding: var(--c1-space-2); width: 6rem; }
.c1-platform .c1-ed-org-lede { align-content: start; display: grid; gap: 1.25rem; min-width: 0; }
.c1-platform .c1-ed-org-name { font-family: var(--c1-serif); font-size: clamp(2.5rem, 1.5rem + 4vw, 4.5rem); font-weight: 400; letter-spacing: -.025em; line-height: 1; margin: 0; overflow-wrap: anywhere; text-wrap: balance; }
.c1-platform .c1-ed-org-mission { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.4; max-width: 40rem; overflow-wrap: anywhere; white-space: pre-line; }
.c1-platform .c1-ed-org-nav { display: flex; flex-wrap: wrap; gap: var(--c1-space-2) 1.25rem; }
.c1-platform .c1-ed-org-nav a { color: var(--c1-ink); font-size: .6875rem; font-weight: 700; letter-spacing: .1em; text-decoration: none; text-transform: uppercase; }
.c1-platform .c1-ed-org-nav a:hover, .c1-platform .c1-ed-org-nav a:focus-visible { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .4em; }
.c1-platform .c1-ed-org section { scroll-margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-org-band { margin-top: 3rem; }
/* Impact tiles: ink rule, serif number, bold caption, muted line. */
.c1-platform .c1-ed-org-impact { display: grid; gap: var(--c1-space-6); grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 1.25rem 0 0; }
.c1-platform .c1-ed-org-impact > div { align-content: start; border-top: 1px solid var(--c1-ink); display: grid; gap: 2px; padding-top: .875rem; }
.c1-platform .c1-ed-org-impact dt { font-size: .875rem; font-weight: 700; }
.c1-platform .c1-ed-org-impact dd { margin: 0; }
.c1-platform .c1-ed-org-impact .c1-ed-event-sub { font-size: .8125rem; }
.c1-platform .c1-ed-org-num { font-family: var(--c1-serif); font-size: 2.75rem; line-height: 1; order: -1; padding-bottom: var(--c1-space-2); }
/* Event rows: the dashboard row (whole row is the link) plus a status column. */
.c1-platform .c1-ed-org .c1-ed-dash-row-title { font-size: 1.375rem; }
.c1-platform .c1-ed-org .c1-ed-dash-row-desc { font-size: .9375rem; }
.c1-platform .c1-ed-org .c1-ed-org-event-status { align-self: center; grid-column: 2; }
/* Donations, financials, location + contact: two ruled columns. */
.c1-platform .c1-ed-org-split { display: grid; gap: 2rem 4rem; grid-template-columns: minmax(0, 1fr); }
.c1-platform .c1-ed-org-band > .c1-ed-org-split { margin-top: 1.25rem; }
.c1-platform .c1-ed-org-ledger { gap: 0; grid-auto-rows: auto; grid-template-columns: minmax(0, 1fr); margin-top: var(--c1-space-4); }
.c1-platform .c1-ed-org-ledger > div { padding: .75rem 0; }
.c1-platform .c1-ed-org-ledger > div:first-child { border-top: 1px solid var(--c1-ink); }
.c1-platform .c1-ed-org-ledger dd { font-size: 1.75rem; }
.c1-platform .c1-ed-org .c1-ed-org-chart-title { font-size: .8125rem; font-weight: 700; margin-bottom: var(--c1-space-3); }
.c1-platform .c1-ed-org-chart svg { display: block; height: auto; max-width: 100%; }
.c1-platform .c1-ed-org .c1-ed-note, .c1-platform .c1-ed-org .c1-ed-org-summary { margin-top: var(--c1-space-3); }
/* ProPublica's data_source note is plain text with line breaks. */
.c1-platform .c1-ed-org .c1-ed-org-source { white-space: pre-line; }
.c1-platform .c1-ed-org-summary { font-size: .9375rem; line-height: 1.5; }
.c1-platform .c1-ed-org .c1-ed-org-summary { border-top: 1px solid var(--c1-border); margin-top: 2rem; padding-top: var(--c1-space-4); }
.c1-platform .c1-ed-org-summary .c1-ed-label { display: block; }
.c1-platform .c1-ed-org .c1-ed-org-address { margin: 1.25rem 0 var(--c1-space-4); }
.c1-platform .c1-ed-org-contact { margin: 1.25rem 0 0; }
.c1-platform .c1-ed-org-contact > div { align-items: baseline; border-bottom: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-4); grid-template-columns: 6rem minmax(0, 1fr); padding: .75rem 0; }
.c1-platform .c1-ed-org-contact dt { color: var(--c1-muted); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.c1-platform .c1-ed-org-contact dd { margin: 0; overflow-wrap: anywhere; }
.c1-platform .c1-ed-org-contact a, .c1-platform .c1-ed-org-address a { color: var(--c1-ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.c1-platform .c1-ed-org-contact a:hover, .c1-platform .c1-ed-org-address a:hover { color: var(--c1-terracotta-dark); }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-org-intro { grid-template-columns: 6rem minmax(0, 1fr); }
  .c1-platform .c1-ed-org-event { grid-template-columns: 4rem minmax(0, 1fr) auto; }
  .c1-platform .c1-ed-org .c1-ed-org-event-status { grid-column: auto; text-align: right; }
}
@media (min-width: 60rem) {
  .c1-platform .c1-ed-org-top { column-gap: 4rem; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); }
  .c1-platform .c1-ed-org-impact { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .c1-platform .c1-ed-org-impact--members { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c1-platform .c1-ed-org-split { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); }
  .c1-platform .c1-ed-org-split--wide { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); }
}

/* Card t_25420051 -- the dashboard's membership-aware welcome. 2026-10-03. The
 * copy is built server-side (src/services/welcome/welcome.ts); these rules size
 * the corporate second line, space the two hero links, and clip a long
 * organization or event name -- visually, the stored name is never truncated.
 * Same tokens, no new colour, font or request. */
.c1-platform .c1-ed-dash-welcome, .c1-platform .c1-ed-dash-welcome-aside { -webkit-box-orient: vertical; display: -webkit-box; overflow: hidden; overflow-wrap: anywhere; }
.c1-platform .c1-ed-dash-welcome { -webkit-line-clamp: 4; }
.c1-platform .c1-ed-dash-welcome-aside { -webkit-line-clamp: 3; color: var(--c1-muted); font-size: .9375rem; line-height: 1.5; margin: var(--c1-space-3) 0 0; }
.c1-platform .c1-ed-dash-welcome-links { display: flex; flex-wrap: wrap; gap: 0 var(--c1-space-6); }

/* Broadsheet event wizard -- admin/newEvent and admin/editEvent
 * (app/partials/eventWizard.hbs). 2026-10-03. Four client-side steps beside a
 * live Discover preview; fields are square, ink-ruled and on the surface tone.
 * Same tokens, no new colour, font or request. */
.c1-platform .c1-ed-wiz [hidden] { display: none !important; }
.c1-platform .c1-ed-wiz-head { align-items: end; display: flex; gap: var(--c1-space-4); justify-content: space-between; margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-wiz-head .c1-ed-title { margin: 0; }
.c1-platform .c1-ed-wiz-head-actions { align-items: baseline; display: flex; flex-shrink: 0; gap: var(--c1-space-6); }
.c1-platform .c1-ed-wiz-link { background: none; border: 0; border-bottom: 1px solid var(--c1-ink); color: var(--c1-ink); cursor: pointer; font-size: .875rem; font-weight: 600; padding: 0; text-decoration: none; }
.c1-platform .c1-ed-wiz-link:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wiz-danger { border-color: var(--c1-terracotta-dark); color: var(--c1-terracotta-dark); justify-self: start; }
.c1-platform .c1-ed-wiz-steps { display: grid; gap: var(--c1-space-3); grid-template-columns: repeat(4, minmax(0, 1fr)); list-style: none; margin: var(--c1-space-6) 0 0; padding: 0; }
.c1-platform .c1-ed-wiz-steps button { align-items: flex-start; background: none; border: 0; border-top: 1px solid var(--c1-border); color: var(--c1-ink); cursor: pointer; display: flex; gap: var(--c1-space-3); padding: var(--c1-space-3) 0 0; text-align: left; width: 100%; }
.c1-platform .c1-ed-wiz-steps button.is-done { border-top-color: var(--c1-ink); }
.c1-platform .c1-ed-wiz-steps button[aria-current] { border-top: 3px solid var(--c1-ink); }
.c1-platform .c1-ed-wiz-steps span:last-child { display: grid; gap: 2px; }
.c1-platform .c1-ed-wiz-steps small { color: var(--c1-muted); font-size: .8125rem; }
.c1-platform .c1-ed-wiz-num { color: var(--c1-muted); font-family: var(--c1-serif); font-size: 1.75rem; line-height: 1; }
.c1-platform .c1-ed-wiz-steps .is-done .c1-ed-wiz-num { color: var(--c1-leaf); }
.c1-platform .c1-ed-wiz-steps [aria-current] .c1-ed-wiz-num { color: var(--c1-ink); }
.c1-platform .c1-ed-wiz-grid { align-items: start; display: grid; gap: var(--c1-space-6) 2rem; margin-top: 2rem; }
.c1-platform .c1-ed-wiz-form, .c1-platform .c1-ed-wiz-form > section { display: grid; gap: 2rem; min-width: 0; }
.c1-platform .c1-ed-wiz-field { border: 0; display: grid; gap: var(--c1-space-2); margin: 0; min-width: 0; padding: 0; }
.c1-platform .c1-ed-wiz-field > label, .c1-platform .c1-ed-wiz-field legend, .c1-platform .c1-ed-wiz-legend { font-size: .9375rem; font-weight: 600; padding: 0; }
.c1-platform .c1-ed-wiz-field legend { margin-bottom: var(--c1-space-2); }
.c1-platform .c1-ed-wiz-row, .c1-platform .c1-ed-wiz-line { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; }
.c1-platform .c1-ed-wiz-line { border: 1px solid var(--c1-border); font-size: .875rem; padding: var(--c1-space-2) var(--c1-space-3); }
.c1-platform .c1-ed-wiz input:where(:not([type='radio']):not([type='checkbox'])), .c1-platform .c1-ed-wiz select { background: var(--c1-surface); border: 1px solid var(--c1-ink); border-radius: 0; box-sizing: border-box; color: var(--c1-ink); font-size: 1rem; min-height: 3rem; padding: 0 var(--c1-space-3); width: 100%; }
.c1-platform .c1-ed-wiz input[readonly] { background: transparent; border-color: var(--c1-border); color: var(--c1-muted); }
.c1-platform .c1-ed-wiz .c1-ed-wiz-title { font-family: var(--c1-serif); font-size: 1.625rem; min-height: 3.5rem; }
.c1-platform .c1-ed-wiz-editor > div { background: var(--c1-surface); border: 1px solid var(--c1-ink); border-radius: 0; }
.c1-platform .c1-ed-wiz-editor .ProseMirror { font-size: 1rem; line-height: 1.55; min-height: 11rem !important; padding: var(--c1-space-2) 0; }
.c1-platform .c1-ed-wiz-error { color: var(--c1-terracotta-dark); font-size: .875rem; margin: 0; }
.c1-platform .c1-ed-wiz-cards { display: grid; gap: var(--c1-space-3); }
.c1-platform .c1-ed-wiz-cards label { border: 1px solid var(--c1-border); cursor: pointer; display: grid; gap: var(--c1-space-1); padding: var(--c1-space-3) var(--c1-space-4); position: relative; }
.c1-platform .c1-ed-wiz-cards label:has(:checked) { background: var(--c1-surface); border: 2px solid var(--c1-ink); padding: calc(var(--c1-space-3) - 1px) calc(var(--c1-space-4) - 1px); }
.c1-platform .c1-ed-wiz-cards label:has(:focus-visible) { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
.c1-platform .c1-ed-wiz-cards input { opacity: 0; position: absolute; }
.c1-platform .c1-ed-wiz-cards small { color: var(--c1-muted); font-size: .8125rem; line-height: 1.4; }
.c1-platform .c1-ed-wiz-when { align-items: center; display: grid; gap: var(--c1-space-3); grid-template-columns: 4rem minmax(0, 1fr) minmax(0, 8rem); }
.c1-platform .c1-ed-wiz-when label { color: var(--c1-muted); font-size: .875rem; }
.c1-platform .c1-ed-wiz-pair { display: grid; gap: var(--c1-space-4) 1.25rem; }
.c1-platform .c1-ed-wiz-check { align-items: center; display: inline-flex; font-size: .875rem; font-weight: 400; gap: var(--c1-space-2); }
.c1-platform .c1-ed-wiz-check input { accent-color: var(--c1-ink); height: 1.125rem; margin: 0; width: 1.125rem; }
.c1-platform .c1-ed-wiz-contact { border-top: 1px solid var(--c1-border); padding-top: var(--c1-space-4); }
.c1-platform .c1-ed-wiz-contact p { margin: 0; }
.c1-platform .c1-ed-wiz-summary { margin: 0; }
.c1-platform .c1-ed-wiz-summary > div { align-items: baseline; border-top: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-1) var(--c1-space-4); grid-template-columns: minmax(0, 1fr) auto; padding: var(--c1-space-3) 0; }
.c1-platform .c1-ed-wiz-summary dt { color: var(--c1-muted); font-size: .75rem; grid-column: 1 / -1; letter-spacing: .06em; text-transform: uppercase; }
.c1-platform .c1-ed-wiz-summary dd { margin: 0; overflow-wrap: anywhere; }
.c1-platform .c1-ed-wiz-summary button { background: none; border: 0; border-bottom: 1px solid var(--c1-ink); cursor: pointer; font-size: .875rem; font-weight: 600; padding: 0; }
.c1-platform .c1-ed-wiz-panel { background: var(--c1-surface); border: 1px solid var(--c1-ink); display: grid; gap: var(--c1-space-3); padding: 1.25rem; }
.c1-platform .c1-ed-wiz-panel .c1-ed-wiz-row .c1-ed-note { display: block; }
/* FAQ & Did you know step: the event page's accordion and numbered facts
 * (.c1-ed-event-faq, .c1-ed-event-dyk), numbered here by a counter so saved
 * and just-generated lists read the same. */
.c1-platform .c1-ed-wiz-extras { display: grid; gap: var(--c1-space-3); }
.c1-platform .c1-ed-wiz .c1-ed-event-faq, .c1-platform .c1-ed-wiz .c1-ed-wiz-dyk { margin-top: 0; }
.c1-platform .c1-ed-wiz .c1-ed-wiz-dyk { counter-reset: c1-ed-wiz-dyk; grid-template-columns: minmax(0, 1fr); }
.c1-platform .c1-ed-wiz-dyk p { margin: 0; }
.c1-platform .c1-ed-wiz-dyk .c1-ed-event-seq::before { content: counter(c1-ed-wiz-dyk, decimal-leading-zero); counter-increment: c1-ed-wiz-dyk; }
.c1-platform .c1-ed-wiz [aria-busy] .loading { margin-left: var(--c1-space-2); vertical-align: middle; }
.c1-platform .c1-ed-wiz-foot { align-items: center; border-top: 2px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-4); justify-content: space-between; padding-top: 1.25rem; }
.c1-platform .c1-ed-wiz-foot > div { align-items: center; display: flex; gap: var(--c1-space-4); }
.c1-platform .c1-ed-wiz-aside { display: grid; gap: var(--c1-space-3); min-width: 0; }
.c1-platform .c1-ed-wiz-rule { border-bottom: 1px solid var(--c1-ink); padding-bottom: var(--c1-space-2); }
.c1-platform .c1-ed-wiz-card { border-bottom: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-4); grid-template-columns: 3.25rem minmax(0, 1fr); padding-bottom: var(--c1-space-4); }
.c1-platform .c1-ed-wiz-card p { margin: 0 0 var(--c1-space-1); }
.c1-platform .c1-ed-wiz-card-title { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.2; overflow-wrap: anywhere; }
.c1-platform .c1-ed-wiz-card-desc { -webkit-box-orient: vertical; display: -webkit-box; font-size: .875rem; -webkit-line-clamp: 3; line-height: 1.45; overflow: hidden; }
.c1-platform .c1-ed-wiz-chips { display: flex; gap: var(--c1-space-2); margin-top: var(--c1-space-2); }
.c1-platform .c1-ed-wiz-chips span { border: 1px solid var(--c1-ink); font-size: .75rem; font-weight: 600; letter-spacing: .04em; padding: var(--c1-space-1) var(--c1-space-3); text-transform: uppercase; }
.c1-platform .c1-ed-wiz-chips span + span { background: var(--c1-ink); color: var(--c1-surface); }
.c1-platform .c1-ed-wiz-checks { border: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-2); padding: var(--c1-space-4); }
.c1-platform .c1-ed-wiz-checks ul { display: grid; gap: var(--c1-space-2); list-style: none; margin: 0; padding: 0; }
.c1-platform .c1-ed-wiz-checks li { color: var(--c1-muted); font-size: .875rem; padding-left: 1.5rem; position: relative; }
.c1-platform .c1-ed-wiz-checks li::before { content: '\00B7'; font-weight: 700; left: 0; position: absolute; }
.c1-platform .c1-ed-wiz-checks li[data-done] { color: var(--c1-ink); }
.c1-platform .c1-ed-wiz-checks li[data-done]::before { color: var(--c1-leaf); content: '\2713'; }
.c1-platform .c1-ed-wiz-ai-btn { background: transparent; border: 1px solid var(--c1-ink); color: var(--c1-ink); cursor: pointer; font-size: .8125rem; font-weight: 600; min-height: 2rem; padding: 0 var(--c1-space-3); }
.c1-platform .c1-ed-wiz-ai-btn + .c1-ed-wiz-ai-btn { border-color: var(--c1-border); }
.c1-platform .c1-ed-wiz-ai-btn:disabled { color: var(--c1-muted); cursor: default; }
.c1-platform .c1-ed-wiz-ai-btn[aria-busy] { border-style: dashed; }
.c1-platform .c1-ed-wiz-editor .ProseMirror p + p { margin-top: var(--c1-space-3); }
.c1-platform .c1-ed-wiz-aibar { display: flex; flex-wrap: wrap; gap: var(--c1-space-2); }
.c1-platform .c1-ed-wiz-ideas { background: var(--c1-surface); border: 1px solid var(--c1-ink); border-top: 0; display: grid; gap: var(--c1-space-2); margin-top: calc(-1 * var(--c1-space-2)); padding: var(--c1-space-3) var(--c1-space-4); }
.c1-platform .c1-ed-wiz-ideas ul { list-style: none; margin: 0; padding: 0; }
.c1-platform .c1-ed-wiz-ideas li { align-items: center; border-bottom: 1px solid var(--c1-border); display: flex; gap: var(--c1-space-4); justify-content: space-between; padding: var(--c1-space-3) 0; }
.c1-platform .c1-ed-wiz-ideas li span { font-family: var(--c1-serif); font-size: 1.25rem; overflow-wrap: anywhere; }
.c1-platform .c1-ed-wiz-ideas li button { background: transparent; border: 1px solid var(--c1-ink); cursor: pointer; flex-shrink: 0; font-size: .75rem; font-weight: 600; letter-spacing: .04em; min-height: 2rem; padding: 0 var(--c1-space-3); text-transform: uppercase; }
.c1-platform .c1-ed-wiz-ideas > .c1-ed-wiz-link { justify-self: start; }
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-wiz-steps small { display: none; }
  .c1-platform .c1-ed-wiz-steps button:not([aria-current]) strong { display: none; }
  .c1-platform .c1-ed-wiz-when { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .c1-platform .c1-ed-wiz-when label { grid-column: 1 / -1; }
  .c1-platform .c1-ed-wiz-foot > button { width: 100%; }
}
@media (min-width: 40rem) {
  .c1-platform .c1-ed-wiz-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c1-platform .c1-ed-wiz-pair, .c1-platform .c1-ed-wiz .c1-ed-wiz-dyk { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 60rem) {
  .c1-platform .c1-ed-wiz-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); }
  .c1-platform .c1-ed-wiz-aside { position: sticky; top: var(--c1-space-4); }
}

/* Admin event preview (/app/events/:id?preview=1) and its wizard link. 2026-10-04. */
.c1-platform .c1-ed-wiz-aside > .c1-ed-wiz-link { justify-self: start; }
.c1-platform .c1-ed-event-preview { margin: var(--c1-space-4) 0 0; padding: var(--c1-space-3) var(--c1-space-4); }

/* Inline validation on the event wizard (t_fa6aeb00). 2026-10-04. */
.c1-platform .c1-ed-wiz [aria-invalid='true'] { border-color: var(--c1-terracotta-dark); box-shadow: inset 0 0 0 1px var(--c1-terracotta-dark); }

/* Top nav B -- the "nameplate" bar. 2026-10-05. One skin for the public header
 * (header.hbs, loginbar) and the /app shell (applayout): a 76px cream bar over a
 * 6px double rule (2px ink, 3px gap, 1px ink) at the content width, logo and
 * serif wordmark, square ink-outlined controls. The account button and menu are
 * the shared accountMenu partial. Tokens and fonts unchanged. The rule is drawn
 * in the bar's bottom padding: positioned from the content box, painted past it. */
.c1-platform .c1-ed-nameplate { background: linear-gradient(var(--c1-ink), var(--c1-ink)) left 0 bottom -2px / 100% 2px no-repeat content-box border-box, linear-gradient(var(--c1-ink), var(--c1-ink)) left 0 bottom -.375rem / 100% 1px no-repeat content-box border-box, var(--c1-cream); border: 0; box-sizing: border-box; gap: var(--c1-space-4); height: 5.125rem; min-height: 0; padding: 0 var(--c1-space-4) .375rem; }
.c1-platform .c1-ed-nameplate .c1-nav-start { gap: var(--c1-space-4); }
.c1-platform .c1-ed-nameplate .c1-nav-end { gap: var(--c1-space-6); }
.c1-platform .c1-ed-brand { color: var(--c1-ink); gap: .625rem; text-decoration: none; }
.c1-platform .c1-ed-brand span { font-family: var(--c1-serif); font-size: 2rem; letter-spacing: -.015em; line-height: 1; }
.c1-platform .c1-ed-nameplate a:focus-visible, .c1-platform .c1-ed-nameplate button:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
.c1-platform .c1-ed-nav-square { background: transparent; border: 1px solid var(--c1-ink); border-radius: 0; height: 2.5rem; min-height: 2.5rem; padding: 0; width: 2.5rem; }
.c1-platform .c1-ed-nav-square:hover { background: var(--c1-surface); }
.c1-platform .c1-ed-guide { align-items: center; color: var(--c1-ink); display: inline-flex; font-size: .8125rem; font-weight: 600; gap: var(--c1-space-2); letter-spacing: .1em; text-decoration: none; text-transform: uppercase; white-space: nowrap; }
.c1-platform .c1-ed-guide:hover, .c1-platform .c1-ed-acct-button:hover { color: var(--c1-terracotta-dark); }
/* Account button: 40px, a 28px square avatar (photo, else the name's first
 * letter on terracotta), the name, a chevron. Bare (no outline) in the shell. */
.c1-platform .c1-ed-acct-button { align-items: center; background: var(--c1-surface); border: 1px solid var(--c1-ink); border-radius: 0; color: var(--c1-ink); cursor: pointer; display: inline-flex; font-family: var(--c1-sans); font-size: .9375rem; font-weight: 600; gap: .625rem; height: 2.5rem; padding: 0 .625rem 0 .375rem; }
.c1-platform .c1-ed-acct-button--bare { background: transparent; border-color: transparent; }
.c1-platform .c1-ed-acct-name { max-width: min(10rem, 28vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.c1-platform .c1-ed-avatar { background: var(--c1-terracotta-dark); color: var(--c1-cream); flex: none; height: 1.75rem; object-fit: cover; width: 1.75rem; }
.c1-platform .c1-ed-avatar--initial { display: inline-block; font-family: var(--c1-serif); font-size: 0; font-weight: 400; line-height: 1.75rem; overflow: hidden; text-align: center; white-space: nowrap; }
.c1-platform .c1-ed-avatar--initial::first-letter { font-size: .9375rem; }
/* Menus (account, Pricing, both hamburgers): square, ink outline, a 4px offset
 * ink shadow, 48px rows on border hairlines, an ink rule before signing out. */
.c1-platform .c1-ed-navmenu { background: var(--c1-surface); border: 1px solid var(--c1-ink); border-radius: 0; box-shadow: 4px 4px 0 var(--c1-ink); display: flex; flex-direction: column; margin-top: var(--c1-space-2); min-width: 0; padding: 0; width: 15rem; }
.c1-platform .c1-ed-navmenu li { padding: 0; }
.c1-platform .c1-ed-navmenu a { align-items: center; border-bottom: 1px solid var(--c1-border); border-radius: 0; color: var(--c1-ink); display: flex; font-size: .9375rem; min-height: 3rem; padding: 0 1.125rem; text-decoration: none; }
.c1-platform .c1-ed-navmenu a:hover { background: var(--c1-cream); color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-navmenu li:last-child > a { border-bottom: 0; }
.c1-platform .c1-ed-navmenu .c1-menu-separator { border-top: 1px solid var(--c1-ink); margin: -1px 0 0; padding: 0; }
.c1-platform .c1-ed-signout { border-top: 1px solid var(--c1-ink); margin-top: -1px; }
.c1-platform .c1-ed-navmenu .c1-ed-signout, .c1-platform .c1-ed-navmenu .c1-menu-separator > a { border-bottom: 0; color: var(--c1-muted); font-size: .8125rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
/* The account menu and the /app shell's left menu are compact: 36px rows,
 * tighter type; the left one is wide enough for "Register a corporation". */
.c1-platform .c1-ed-acct .c1-ed-navmenu, .c1-platform .c1-ed-navmenu:is(.c1-nav-start *) { box-shadow: 3px 3px 0 var(--c1-ink); margin-top: var(--c1-space-1); width: 11rem; }
.c1-platform .c1-ed-navmenu:is(.c1-nav-start *) { width: 13rem; }
.c1-platform .c1-ed-acct .c1-ed-navmenu a, .c1-platform .c1-ed-navmenu:is(.c1-nav-start *) a { font-size: .875rem; min-height: 2.25rem; padding: 0 var(--c1-space-3); }
.c1-platform .c1-ed-acct .c1-ed-navmenu .c1-ed-signout, .c1-platform .c1-ed-navmenu:is(.c1-nav-start *) .c1-menu-separator > a { font-size: .75rem; }
.c1-platform .c1-ed-navmenu:is(.c1-nav-start *) .c1-menu-label { padding: var(--c1-space-2) var(--c1-space-3) var(--c1-space-1); }
/* Phones: the account name and the guide label stay for screen readers only. */
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-acct-name, .c1-platform .c1-ed-guide span { clip: rect(0 0 0 0); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }
}
/* Edges line up with the body: the public header's 80rem box takes the hero's
 * px-4 / sm:px-6 / lg:px-8 gutters; the full-width /app bar takes c1-ed-shell's
 * centred 80rem column and its 1.5rem tablet-up gutter. */
@media (min-width: 40rem) {
  .c1-platform .c1-ed-nameplate { padding-left: var(--c1-space-6); padding-right: var(--c1-space-6); }
  .c1-platform .c1-ed-nameplate.c1-nav { padding-left: calc(max(var(--c1-space-4), (100% - 80rem) / 2) + var(--c1-space-6)); padding-right: calc(max(var(--c1-space-4), (100% - 80rem) / 2) + var(--c1-space-6)); }
}
@media (min-width: 64rem) {
  .c1-platform .c1-ed-nameplate { padding-left: 2rem; padding-right: 2rem; }
  .c1-platform .c1-ed-nameplate.c1-nav { padding-left: calc(max(var(--c1-space-4), (100% - 80rem) / 2) + var(--c1-space-6)); padding-right: calc(max(var(--c1-space-4), (100% - 80rem) / 2) + var(--c1-space-6)); }
}

/* Zinda Journey (/app/profile/:id), after docs/Broadsheet — Zinda Journey.
 * 2026-10-05. The page wears `c1-ed-org`, so the masthead, intro, lede,
 * impact tiles, bands and splits are the org profile's rules above; these
 * are the journey's own. Tokens only: no new colour, font or request. */
.c1-platform .c1-ed-journey-initial { display: block; font-family: var(--c1-serif); font-size: 0; line-height: 5rem; overflow: hidden; text-align: center; white-space: nowrap; }
.c1-platform .c1-ed-journey-initial::first-letter { font-size: 3rem; }
.c1-platform .c1-ed-journey-avatar { object-fit: cover; padding: 0; }
/* ShareThis centers its buttons in their box, so the box spans the callout. */
.c1-platform .c1-ed-journey-share { align-self: start; display: grid; gap: var(--c1-space-3); }
.c1-platform .c1-ed-journey-share .c1-ed-label { border-bottom: 1px solid var(--c1-ink); padding-bottom: var(--c1-space-3); }
.c1-platform .c1-ed-journey-lede { border-top: 1px solid var(--c1-ink); display: grid; gap: var(--c1-space-4); padding-top: var(--c1-space-6); }
/* The summary runs full width, the byline beneath it. */
.c1-platform .c1-ed-journey .c1-ed-org-mission { font-size: clamp(1.125rem, 1rem + .4vw, 1.375rem); max-width: none; }
.c1-platform .c1-ed-journey-stats .c1-ed-note { margin: 0; }
/* Rhythm: one bar per month, height a percentage of the busiest month. */
.c1-platform .c1-ed-journey-rhythm { margin: 0; }
.c1-platform .c1-ed-journey-bars { align-items: flex-end; border-bottom: 1px solid var(--c1-ink); display: flex; gap: 2px; height: 9rem; margin-top: var(--c1-space-4); }
.c1-platform .c1-ed-journey-bars > span { background: var(--c1-terracotta-dark); border-radius: 3px 3px 0 0; flex: 1; min-width: 1px; }
.c1-platform .c1-ed-journey-bars > .c1-ed-journey-bar--empty { background: var(--c1-border); }
.c1-platform .c1-ed-journey-axis { color: var(--c1-muted); display: flex; font-size: .75rem; justify-content: space-between; margin-top: var(--c1-space-2); }
.c1-platform .c1-ed-journey-causes { list-style: none; margin: var(--c1-space-3) 0 0; padding: 0; }
.c1-platform .c1-ed-journey-causes li { align-items: baseline; border-top: 1px solid var(--c1-border); display: flex; justify-content: space-between; padding: .5rem 0; }
.c1-platform .c1-ed-journey-causes .c1-ed-note { margin: 0; }
/* The journey: the year beside a ruled list, a marker on the rule per row. */
.c1-platform .c1-ed-journey-year { display: grid; gap: var(--c1-space-3) var(--c1-space-6); padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-journey-yr { font-family: var(--c1-serif); font-size: 3rem; letter-spacing: -.02em; line-height: 1; margin: 0; }
.c1-platform .c1-ed-journey-year .c1-ed-note { margin-top: var(--c1-space-1); }
.c1-platform .c1-ed-journey-list { border-left: 1px solid var(--c1-ink); min-width: 0; }
.c1-platform .c1-ed-journey-list ol { list-style: none; margin: 0; padding: 0; }
.c1-platform .c1-ed-journey-row { align-items: baseline; border-bottom: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-1) var(--c1-space-4); grid-template-columns: 3rem minmax(0, 1fr); padding: .7rem 0 .7rem 1.5rem; position: relative; }
.c1-platform .c1-ed-journey-row::before { background: var(--c1-cream); border: 1px solid var(--c1-ink); content: ''; height: 9px; left: -5px; position: absolute; top: 1.1rem; width: 9px; }
.c1-platform .c1-ed-journey-row--milestone::before { background: var(--c1-terracotta-dark); border-color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-journey-verb { color: var(--c1-muted); font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; }
.c1-platform .c1-ed-journey-row--milestone .c1-ed-journey-verb { color: var(--c1-terracotta-dark); font-weight: 600; }
.c1-platform .c1-ed-journey-what { font-family: var(--c1-serif); font-size: 1.25rem; grid-column: 1 / -1; line-height: 1.25; overflow-wrap: anywhere; }
.c1-platform .c1-ed-journey-what a, .c1-platform .c1-ed-journey-org { color: var(--c1-ink); text-decoration: none; }
.c1-platform .c1-ed-journey-what a:hover, .c1-platform .c1-ed-journey-org:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-journey-extra { color: var(--c1-muted); font-size: .75rem; grid-column: 1 / -1; }
.c1-platform .c1-ed-journey-extra:empty { display: none; }
.c1-platform .c1-ed-journey-list summary { cursor: pointer; font-size: .875rem; font-weight: 600; padding: .75rem 0 .75rem 1.5rem; text-decoration: underline; text-underline-offset: .3em; }
/* Memberships: logo, name over roles, since, View. */
.c1-platform .c1-ed-journey-orgs { list-style: none; margin: var(--c1-space-4) 0 0; padding: 0; }
.c1-platform .c1-ed-journey-orgs li { align-items: center; border-top: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-2) 1.25rem; grid-template-columns: 3rem minmax(0, 1fr) auto; padding: .75rem 0; }
.c1-platform .c1-ed-journey-orgs .c1-ed-org-logo { height: 3rem; padding: 2px; width: 3rem; }
.c1-platform .c1-ed-journey-orgs .c1-ed-note { display: block; margin: 0; }
.c1-platform .c1-ed-journey-orgs li > .c1-ed-note { grid-column: 2; }
.c1-platform .c1-ed-journey-org { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.15; }
.c1-platform .c1-ed-journey .c1-ed-close { margin-bottom: 4rem; }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-journey-row { grid-template-columns: 3rem 6.5rem minmax(0, 1fr) auto; }
  .c1-platform .c1-ed-journey-what, .c1-platform .c1-ed-journey-extra { grid-column: auto; }
  .c1-platform .c1-ed-journey-orgs li { grid-template-columns: 3rem minmax(0, 1fr) 8rem auto; }
  .c1-platform .c1-ed-journey-orgs li > .c1-ed-note { grid-column: auto; }
}
@media (min-width: 60rem) {
  .c1-platform .c1-ed-journey-stats { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .c1-platform .c1-ed-journey-year { grid-template-columns: 9rem minmax(0, 1fr); }
}

/* Admin events list (/admin/events), after docs/Broadsheet — Admin organization
 * events. 2026-10-07. Segments are links (server-side filters), the rows a
 * six-column grid from 60rem that stacks date | body on a phone, the row
 * menu the nameplate's c1-ed-navmenu. Same tokens, no new colour, font or request. */
.c1-platform .c1-ed-adm-head { align-items: end; }
.c1-platform .c1-ed-adm-head .c1-ed-title { font-size: clamp(2.5rem, 1.5rem + 3vw, 3.5rem); letter-spacing: -.02em; line-height: 1; }
.c1-platform .c1-ed-adm-filters { border-top: 2px solid var(--c1-ink); margin-top: var(--c1-space-6); padding-top: var(--c1-space-3); }
.c1-platform .c1-ed-adm-search { flex: 1 1 8rem; }
/* Phones: the segments fill the content width as equal cells (two by two under
 * 24rem, where "Upcoming · 12" no longer fits a quarter), the select keeps its
 * content width and the search takes the rest or its own full line; every
 * control is a 2.75rem target. */
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-adm-filters .c1-ed-dash-segments { flex: 1 1 100%; }
  .c1-platform .c1-ed-adm-filters .c1-ed-dash-segments a { flex: 1 1 0; font-size: .75rem; min-height: 2.75rem; padding: 0; }
  .c1-platform .c1-ed-adm-filters select, .c1-platform .c1-ed-adm-filters input[type='search'] { min-height: 2.75rem; }
  .c1-platform .c1-ed-adm-filters select { flex: none; }
  .c1-platform .c1-ed-adm-filters .c1-ed-adm-search { min-width: 0; }
}
@media (max-width: 23.9375rem) {
  .c1-platform .c1-ed-adm-filters .c1-ed-dash-segments { display: grid; grid-template-columns: 1fr 1fr; }
}
@media (min-width: 40rem) {
  .c1-platform .c1-ed-adm-search { flex: 0 1 15rem; margin-left: auto; }
}
/* Grid: date | body on phones, time / visibility / status / actions under the body. */
.c1-platform .c1-ed-adm-cols, .c1-platform .c1-ed-adm-row { column-gap: var(--c1-space-4); display: grid; grid-template-columns: 4rem minmax(0, 1fr); }
.c1-platform .c1-ed-adm-cols { display: none; }
.c1-platform .c1-ed-adm-group { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; padding: var(--c1-space-6) 0 var(--c1-space-2); }
.c1-platform .c1-ed-adm-group-title { font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; line-height: 1.1; margin: 0; }
.c1-platform .c1-ed-adm-row { border-top: 1px solid var(--c1-border); padding: var(--c1-space-3) 0; row-gap: var(--c1-space-2); }
.c1-platform .c1-ed-adm-row > * { margin: 0; min-width: 0; }
.c1-platform .c1-ed-adm-row .c1-ed-dash-row-date { grid-row: span 5; }
.c1-platform .c1-ed-adm-row .c1-ed-dash-row-day { font-size: 1.75rem; }
.c1-platform .c1-ed-adm-row--past .c1-ed-dash-row-day { color: var(--c1-muted); }
.c1-platform .c1-ed-adm-body { display: grid; gap: 2px; }
.c1-platform .c1-ed-adm-title { color: var(--c1-ink); font-family: var(--c1-serif); font-size: 1.3125rem; line-height: 1.2; overflow-wrap: anywhere; text-decoration: none; }
.c1-platform .c1-ed-adm-title:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-adm-sub, .c1-platform .c1-ed-adm-vis { color: var(--c1-muted); font-size: .8125rem; }
.c1-platform .c1-ed-adm-when { font-size: .875rem; line-height: 1.35; }
.c1-platform .c1-ed-adm-status--draft { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-adm-status--live { color: var(--c1-leaf); }
.c1-platform .c1-ed-adm-status--past { color: var(--c1-muted); font-weight: 400; }
/* Actions: compact square buttons (the 7rem shell floor is for form actions), the
 * quiet ones on a hairline, and a square dots trigger for the menu. */
.c1-platform .c1-ed-adm-actions { align-items: center; display: flex; flex-wrap: wrap; gap: .375rem; }
.c1-platform .c1-ed-shell .c1-ed-adm-actions .c1-button { border-width: 1px; font-size: .75rem; letter-spacing: .04em; min-height: 2.25rem; min-width: 0; padding: 0 var(--c1-space-3); white-space: nowrap; }
.c1-platform .c1-ed-shell .c1-ed-adm-actions .c1-ed-adm-quiet { border-color: var(--c1-border); }
.c1-platform .c1-ed-shell .c1-ed-adm-actions .c1-ed-adm-quiet:hover { border-color: var(--c1-ink); }
.c1-platform .c1-ed-adm-more-btn { align-items: center; background: transparent; border: 1px solid var(--c1-border); color: var(--c1-ink); cursor: pointer; display: inline-flex; flex: none; height: 2.25rem; justify-content: center; padding: 0; width: 2.25rem; }
.c1-platform .c1-ed-adm-more-btn:hover { border-color: var(--c1-ink); }
/* DaisyUI's .menu is a wrapping column: a long caption would widen every row. */
.c1-platform .c1-ed-adm-more .c1-ed-navmenu { flex-wrap: nowrap; width: 14rem; }
.c1-platform .c1-ed-adm-more .c1-menu-label { border-bottom: 1px solid var(--c1-ink); display: block; padding: var(--c1-space-2) 1.125rem; }
.c1-platform .c1-ed-adm-more .c1-menu-label span { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.c1-platform .c1-ed-adm-empty { border-top: 1px solid var(--c1-border); font-size: 1rem; margin-top: var(--c1-space-6); padding-top: var(--c1-space-4); }
.c1-platform .c1-ed-adm-empty a { color: var(--c1-ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
/* Foot: an ink rule, the count left, square page boxes and Next right. */
.c1-platform .c1-ed-adm-foot { align-items: center; border-top: 1px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-3) var(--c1-space-6); justify-content: space-between; margin-top: var(--c1-space-4); padding-top: var(--c1-space-4); }
.c1-platform .c1-ed-adm-foot .c1-ed-note { font-size: .875rem; margin: 0; }
.c1-platform .c1-ed-adm-pages { align-items: center; display: flex; flex-wrap: wrap; font-size: .875rem; font-weight: 600; gap: var(--c1-space-3); }
.c1-platform .c1-ed-adm-pages a, .c1-platform .c1-ed-adm-pages span { align-items: center; border: 1px solid var(--c1-ink); color: var(--c1-ink); display: inline-flex; height: 2rem; justify-content: center; min-width: 2rem; text-decoration: none; }
.c1-platform .c1-ed-adm-pages span { background: var(--c1-ink); color: var(--c1-surface); }
.c1-platform .c1-ed-adm-pages a:hover { background: var(--c1-cream); color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-adm-pages .c1-ed-adm-next { border: 0; border-bottom: 1px solid var(--c1-ink); height: auto; min-width: 0; padding: 0; }
@media (min-width: 60rem) {
  /* Each row is its own grid, so the actions column is a fixed width to keep the columns in line. */
  .c1-platform .c1-ed-adm-cols, .c1-platform .c1-ed-adm-row { align-items: center; grid-template-columns: 4rem minmax(0, 1fr) 10rem 7rem 8rem 19rem; }
  .c1-platform .c1-ed-adm-cols { border-bottom: 1px solid var(--c1-ink); color: var(--c1-muted); display: grid; font-size: .6875rem; font-weight: 600; letter-spacing: .1em; margin-top: var(--c1-space-4); padding-bottom: var(--c1-space-2); text-transform: uppercase; }
  .c1-platform .c1-ed-adm-cols span:last-child { text-align: right; }
  .c1-platform .c1-ed-adm-row .c1-ed-dash-row-date { grid-row: auto; }
  .c1-platform .c1-ed-adm-actions { flex-wrap: nowrap; justify-content: flex-end; }
}

/* Spark story (/spark/:id), after docs/Broadsheet — Spark story. Kicker,
 * display headline, a 16:9 picture at its own aspect ratio beside the
 * standfirst/byline/share column, then the article beside the "Who's working
 * on this" rail. Tokens only; the rail's numbers block waits on post facts. */
.c1-platform .c1-ed-spark { padding-bottom: 4rem; }
.c1-platform .c1-ed-spark-masthead a { color: inherit; text-decoration: none; }
.c1-platform .c1-ed-spark-masthead a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-spark-title { font-family: var(--c1-serif); font-size: clamp(2.75rem, 1.5rem + 4.5vw, 5.25rem); font-weight: 400; letter-spacing: -.025em; line-height: 1; margin: 2rem 0 0; max-width: 62rem; overflow-wrap: anywhere; text-wrap: balance; }
.c1-platform .c1-ed-spark-sub { color: var(--c1-muted); display: block; font-size: .8125rem; line-height: 1.4; }

/* Hero: picture never behind text, never cropped. */
.c1-platform .c1-ed-spark-hero { border-top: 1px solid var(--c1-ink); display: grid; gap: 1.5rem; grid-template-columns: minmax(0, 1fr); margin-top: 2rem; padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-spark-figure { display: grid; gap: .625rem; margin: 0; min-width: 0; }
.c1-platform .c1-ed-spark-frame { aspect-ratio: 16 / 9; background: var(--c1-surface); border: 1px solid var(--c1-border); overflow: hidden; width: 100%; }
.c1-platform .c1-ed-spark-frame img { display: block; height: 100%; object-fit: contain; width: 100%; }
.c1-platform .c1-ed-spark-figure figcaption { text-align: right; }
.c1-platform .c1-ed-spark-standfirst { align-content: start; display: grid; gap: var(--c1-space-4); min-width: 0; }
.c1-platform .c1-ed-spark-lede { font-family: var(--c1-serif); font-size: 1.5rem; line-height: 1.35; margin: 0; overflow-wrap: anywhere; text-wrap: pretty; }
.c1-platform .c1-ed-spark-byline { align-items: center; border-top: 1px solid var(--c1-border); display: flex; gap: var(--c1-space-3); padding-top: var(--c1-space-4); }
.c1-platform .c1-ed-spark-byline > span:last-child { display: grid; gap: 2px; }
.c1-platform .c1-ed-spark-byline strong { font-size: .9375rem; font-weight: 600; }
.c1-platform .c1-ed-spark-mark { align-items: center; background: var(--c1-ink); color: var(--c1-cream); display: inline-flex; flex: none; height: 2.5rem; justify-content: center; width: 2.5rem; }
.c1-platform .c1-ed-spark-share { border-top: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-2); padding-top: var(--c1-space-4); }

/* Article beside the rail. */
.c1-platform .c1-ed-spark-grid { display: grid; gap: 2.5rem; grid-template-columns: minmax(0, 1fr); margin-top: 3rem; }
.c1-platform .c1-ed-spark-article { min-width: 0; }
.c1-platform .c1-ed-spark-body { font-family: var(--c1-serif); font-size: 1.25rem; line-height: 1.5; max-width: 44rem; overflow-wrap: anywhere; }
.c1-platform .c1-ed-spark-body p, .c1-platform .c1-ed-spark-body ul, .c1-platform .c1-ed-spark-body blockquote { margin: 0 0 1.375rem; }
.c1-platform .c1-ed-spark-body > p:first-of-type::first-letter { color: var(--c1-terracotta-dark); float: left; font-size: 3.5em; line-height: .8; padding: .1em .12em 0 0; }
.c1-platform .c1-ed-spark-body h2 { border-top: 1px solid var(--c1-ink); font-family: var(--c1-serif); font-size: 2rem; font-weight: 400; letter-spacing: -.015em; line-height: 1.15; margin: 2.25rem 0 .875rem; padding-top: 1.125rem; }
.c1-platform .c1-ed-spark-body ul { list-style: none; padding: 0; }
.c1-platform .c1-ed-spark-body li { margin-bottom: .625rem; padding-left: 1.75rem; position: relative; }
.c1-platform .c1-ed-spark-body li::before { background: var(--c1-terracotta); content: ''; height: 2px; left: 0; position: absolute; top: .8em; width: .75rem; }
.c1-platform .c1-ed-spark-body a { border-bottom: 1px solid var(--c1-terracotta-dark); color: var(--c1-terracotta-dark); text-decoration: none; }
.c1-platform .c1-ed-spark-body a:hover { color: var(--c1-ink); }
.c1-platform .c1-ed-spark-body strong { font-style: italic; font-weight: 400; }
.c1-platform .c1-ed-spark-body blockquote { border-left: 2px solid var(--c1-terracotta); color: var(--c1-muted); font-style: italic; padding-left: var(--c1-space-4); }
.c1-platform .c1-ed-spark-cta { align-items: center; border-top: 2px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-4) var(--c1-space-6); justify-content: space-between; margin-top: 2.25rem; max-width: 44rem; padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-spark-cta > span { display: grid; flex: 1 1 20rem; gap: var(--c1-space-1); min-width: 0; }
.c1-platform .c1-ed-spark-cta-lead { font-family: var(--c1-serif); font-size: 1.5rem; line-height: 1.2; }
.c1-platform .c1-ed-spark-cta .c1-ed-spark-sub { font-size: .9375rem; }
/* Ink fill like the event page's primary action; outranks the editorial .c1-button--primary rule. */
.c1-platform .c1-ed-spark-cta .c1-ed-spark-cta-button { background: var(--c1-ink); border-color: var(--c1-ink); border-radius: 0; color: var(--c1-surface); flex: none; font-size: .8125rem; font-weight: 700; letter-spacing: .06em; min-height: 3.25rem; padding: 0 1.75rem; text-transform: uppercase; white-space: nowrap; }
.c1-platform .c1-ed-spark-cta .c1-ed-spark-cta-button:hover { background: var(--c1-terracotta-dark); border-color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-spark-foot { border-top: 1px solid var(--c1-border); color: var(--c1-muted); display: flex; flex-wrap: wrap; font-size: .8125rem; gap: var(--c1-space-2) var(--c1-space-6); justify-content: space-between; letter-spacing: .02em; margin-top: 2rem; max-width: 44rem; padding-top: .875rem; }
.c1-platform .c1-ed-spark-foot-links { display: flex; gap: 1.125rem; }
.c1-platform .c1-ed-spark-foot a { border-bottom: 1px solid var(--c1-border); color: inherit; text-decoration: none; }
.c1-platform .c1-ed-spark-foot a:hover { color: var(--c1-terracotta-dark); }

/* Rail. */
.c1-platform .c1-ed-spark-rail { min-width: 0; }
.c1-platform .c1-ed-spark-orgs-head { border-bottom: 2px solid var(--c1-ink); display: flex; gap: var(--c1-space-4); justify-content: space-between; padding-bottom: .625rem; }
.c1-platform .c1-ed-spark-orgs ul { list-style: none; margin: 0; padding: 0; }
.c1-platform .c1-ed-spark-orgs li { border-bottom: 1px solid var(--c1-border); }
.c1-platform .c1-ed-spark-orgs li a { align-items: center; color: var(--c1-ink); display: flex; gap: var(--c1-space-3); min-width: 0; padding: .625rem 0; text-decoration: none; }
.c1-platform .c1-ed-spark-orgs li a > span { display: grid; gap: 1px; min-width: 0; }
.c1-platform .c1-ed-spark-orgs li a:hover .c1-ed-spark-org-name { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-spark-org-logo { background: var(--c1-surface); border: 1px solid var(--c1-border); flex: none; height: 2.25rem; object-fit: contain; padding: 2px; width: 2.25rem; }
.c1-platform .c1-ed-spark-org-name { font-size: .9375rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.c1-platform .c1-ed-spark-orgs .c1-ed-note { margin-top: var(--c1-space-3); }

@media (min-width: 60rem) {
  .c1-platform .c1-ed-spark-hero { column-gap: 1.5rem; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); }
  .c1-platform .c1-ed-spark-grid { column-gap: 4rem; grid-template-columns: minmax(0, 7fr) minmax(0, 3fr); }
  .c1-platform .c1-ed-spark-body > p:first-of-type::first-letter { font-size: 4.25em; }
}

/* Spark index (/spark), after docs/Broadsheet — Spark index. Kicker, masthead,
 * the latest story as a lead beside its uncropped 16:9 picture, three picture
 * cards, then text rows by month (older months fold in a <details>) beside
 * the topics rail. Tokens only. */
.c1-platform .c1-ed-sparks { padding-bottom: 4rem; }
.c1-platform .c1-ed-sparks-masthead a, .c1-platform .c1-ed-sparks-empty a { color: inherit; text-decoration: none; }
.c1-platform .c1-ed-sparks-masthead a:hover, .c1-platform .c1-ed-sparks-empty a:hover, .c1-platform .c1-ed-sparks-tags a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-sparks-sub { color: var(--c1-muted); display: block; font-size: .8125rem; line-height: 1.4; }
.c1-platform .c1-ed-sparks-head { align-items: end; display: grid; gap: var(--c1-space-4) 1.5rem; grid-template-columns: minmax(0, 1fr); margin-top: 2rem; }
.c1-platform .c1-ed-sparks-title { font-family: var(--c1-serif); font-size: clamp(3rem, 1.5rem + 5vw, 6rem); font-weight: 400; letter-spacing: -.025em; line-height: 1; margin: 0; }
.c1-platform .c1-ed-sparks-tagline { font-family: var(--c1-serif); font-size: 1.5rem; line-height: 1.35; margin: 0; text-wrap: pretty; }
.c1-platform .c1-ed-sparks-empty { border-top: 2px solid var(--c1-ink); font-size: 1rem; margin-top: 2rem; padding-top: var(--c1-space-6); }

/* Lead. */
.c1-platform .c1-ed-sparks-lead { border-top: 2px solid var(--c1-ink); display: grid; gap: 1.5rem; grid-template-columns: minmax(0, 1fr); margin-top: 2rem; padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-sparks-figure { display: grid; gap: .625rem; margin: 0; min-width: 0; }
.c1-platform .c1-ed-sparks-figure figcaption { text-align: right; }
.c1-platform .c1-ed-sparks-frame { aspect-ratio: 16 / 9; background: var(--c1-surface); border: 1px solid var(--c1-border); display: block; overflow: hidden; width: 100%; }
.c1-platform .c1-ed-sparks-frame img { display: block; height: 100%; object-fit: contain; width: 100%; }
.c1-platform .c1-ed-sparks-lead-body { display: flex; flex-direction: column; gap: 1.125rem; min-width: 0; }
.c1-platform .c1-ed-sparks-lead-kicker, .c1-platform .c1-ed-sparks-card-kicker { display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; }
.c1-platform .c1-ed-sparks-lead-title { font-family: var(--c1-serif); font-size: clamp(2rem, 1.2rem + 2.6vw, 3rem); font-weight: 400; letter-spacing: -.02em; line-height: 1.05; margin: 0; overflow-wrap: anywhere; text-wrap: balance; }
.c1-platform .c1-ed-sparks-lead-title a, .c1-platform .c1-ed-sparks-card-title a, .c1-platform .c1-ed-sparks-row { color: var(--c1-ink); text-decoration: none; }
.c1-platform .c1-ed-sparks-lead-title a:hover, .c1-platform .c1-ed-sparks-card-title a:hover, .c1-platform .c1-ed-sparks-row:hover .c1-ed-sparks-row-title { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-sparks-lead-excerpt { font-family: var(--c1-serif); font-size: 1.25rem; line-height: 1.45; margin: 0; overflow-wrap: anywhere; text-wrap: pretty; }
.c1-platform .c1-ed-sparks-tags { color: var(--c1-muted); font-size: .875rem; margin: 0; }
.c1-platform .c1-ed-sparks-tags a { border-bottom: 1px solid var(--c1-border); color: var(--c1-muted); text-decoration: none; }
.c1-platform .c1-ed-sparks-lead-foot { align-items: center; border-top: 1px solid var(--c1-border); display: flex; flex-wrap: wrap; gap: var(--c1-space-4) var(--c1-space-6); justify-content: space-between; margin-top: auto; padding-top: 1.125rem; }
.c1-platform .c1-ed-sparks-byline { align-items: center; display: flex; font-size: .875rem; gap: .625rem; }
.c1-platform .c1-ed-sparks-byline .c1-ed-sparks-sub, .c1-platform .c1-ed-sparks-topics a .c1-ed-sparks-sub { display: inline; font-size: inherit; white-space: nowrap; }
.c1-platform .c1-ed-sparks-mark { align-items: center; background: var(--c1-ink); color: var(--c1-cream); display: inline-flex; flex: none; height: 1.75rem; justify-content: center; width: 1.75rem; }
.c1-platform .c1-ed-sparks-lead .c1-ed-sparks-cta { background: var(--c1-ink); border-color: var(--c1-ink); border-radius: 0; color: var(--c1-surface); flex: none; font-size: .8125rem; font-weight: 700; letter-spacing: .06em; min-height: 3rem; padding: 0 1.5rem; text-transform: uppercase; white-space: nowrap; }
.c1-platform .c1-ed-sparks-lead .c1-ed-sparks-cta:hover { background: var(--c1-terracotta-dark); border-color: var(--c1-terracotta-dark); }

/* Band heads and the recent cards. */
.c1-platform .c1-ed-sparks-band-head { align-items: baseline; border-bottom: 2px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-6); justify-content: space-between; padding-bottom: .625rem; }
.c1-platform .c1-ed-sparks-band-head .c1-ed-title { font-size: 1.75rem; }
.c1-platform .c1-ed-sparks-recent { margin-top: 3rem; }
.c1-platform .c1-ed-sparks-cards { display: grid; gap: 2rem 1.5rem; grid-template-columns: minmax(0, 1fr); padding-top: var(--c1-space-6); }
.c1-platform .c1-ed-sparks-card { display: flex; flex-direction: column; gap: .75rem; min-width: 0; }
.c1-platform .c1-ed-sparks-card-title { font-family: var(--c1-serif); font-size: 1.75rem; font-weight: 400; letter-spacing: -.015em; line-height: 1.1; margin: 0; overflow-wrap: anywhere; text-wrap: balance; }
.c1-platform .c1-ed-sparks-card-excerpt { -webkit-box-orient: vertical; color: var(--c1-muted); display: -webkit-box; font-size: .9375rem; -webkit-line-clamp: 3; line-height: 1.5; margin: 0; overflow: hidden; }
.c1-platform .c1-ed-sparks-card-tags { border-top: 1px solid var(--c1-border); margin: auto 0 0; padding-top: .625rem; }

/* Earlier rows beside the rail. */
.c1-platform .c1-ed-sparks-grid { display: grid; gap: 2.5rem; grid-template-columns: minmax(0, 1fr); margin-top: 3rem; }
.c1-platform .c1-ed-sparks-earlier, .c1-platform .c1-ed-sparks-rail { min-width: 0; }
.c1-platform .c1-ed-sparks-month-head { border-bottom: 1px solid var(--c1-ink); padding: 1.125rem 0 var(--c1-space-2); }
.c1-platform .c1-ed-sparks-row { align-items: baseline; border-bottom: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-1) 1.25rem; grid-template-columns: minmax(0, 1fr); padding: .75rem 0; }
.c1-platform .c1-ed-sparks-row > span:nth-child(2) { display: grid; gap: 3px; min-width: 0; }
.c1-platform .c1-ed-sparks-row-title { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.15; overflow-wrap: anywhere; }
.c1-platform .c1-ed-sparks-row-excerpt { -webkit-box-orient: vertical; display: -webkit-box; font-size: .875rem; -webkit-line-clamp: 2; overflow: hidden; }
.c1-platform .c1-ed-sparks-more { margin-top: var(--c1-space-4); }
.c1-platform .c1-ed-sparks-more > summary { align-items: center; border: 1px solid var(--c1-ink); color: var(--c1-ink); cursor: pointer; display: inline-flex; font-size: .8125rem; font-weight: 600; letter-spacing: .06em; list-style: none; min-height: 2.75rem; padding: 0 1.25rem; text-transform: uppercase; }
.c1-platform .c1-ed-sparks-more > summary::-webkit-details-marker { display: none; }
.c1-platform .c1-ed-sparks-more > summary:hover { background: var(--c1-surface); color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-sparks-more[open] > summary { margin-bottom: var(--c1-space-2); }
.c1-platform .c1-ed-sparks-more[open] > summary .c1-ed-sparks-more-open, .c1-platform .c1-ed-sparks-more:not([open]) > summary .c1-ed-sparks-more-close { display: none; }
.c1-platform .c1-ed-sparks-more-note { margin-top: var(--c1-space-3); }
.c1-platform .c1-ed-sparks-rail-head { border-bottom: 2px solid var(--c1-ink); padding-bottom: .625rem; }
.c1-platform .c1-ed-sparks-topics a { align-items: baseline; border-bottom: 1px solid var(--c1-border); color: var(--c1-ink); display: flex; font-size: .9375rem; gap: var(--c1-space-4); justify-content: space-between; padding: .625rem 0; text-decoration: none; }
.c1-platform .c1-ed-sparks-about { margin-top: 2.5rem; }
.c1-platform .c1-ed-sparks-about .c1-ed-sparks-sub { font-size: .9375rem; line-height: 1.5; margin: .75rem 0 0; }

@media (min-width: 60rem) {
  .c1-platform .c1-ed-sparks-head { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); margin-top: 2.5rem; }
  .c1-platform .c1-ed-sparks-lead { column-gap: 1.5rem; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
  .c1-platform .c1-ed-sparks-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c1-platform .c1-ed-sparks-grid { column-gap: 1.5rem; grid-template-columns: minmax(0, 9fr) minmax(0, 3fr); }
  .c1-platform .c1-ed-sparks-row { grid-template-columns: 4.5rem minmax(0, 1fr) 13rem; }
  .c1-platform .c1-ed-sparks-row-tags { text-align: right; }
}

/* Platform-wide rules -- the editorial trial block that starts at Card
 * t_9f0ec3b8 ends here. Its stylesheet guards (editorial-trial,
 * individuals-redesign, nonprofits-simplify specs) stop at this marker, so
 * rules that are not `c1-ed-*` scoped go below it and trial rules above. */

/* Page bottom: the last bottom margin on a page would collapse through <body>
 * and show the theme's near-white <html> as a band under the cream;
 * flow-root keeps it inside the body. */
.c1-platform:is(body) { display: flow-root; }

/* Text boxes and selects: no blue focus ring. Focus reads as the border going
 * ink and thickening to 2px (inset shadow, so nothing shifts). Checkboxes,
 * radios, buttons and links keep the standard ring above. */
.c1-platform input:where(:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']):not([type='color']):not([type='submit']):not([type='button']):not([type='reset']):not([type='image'])):focus-visible,
.c1-platform select:focus-visible,
.c1-platform textarea:focus-visible { border-color: var(--c1-ink); box-shadow: inset 0 0 0 1px var(--c1-ink); outline: none; }
/* The TipTap editor is a contenteditable with tabindex, so the [tabindex] ring
 * above caught it. Same treatment as a text box: its frame thickens to 2px. */
.c1-platform .ProseMirror:focus-visible { outline: none; }
.c1-platform .c1-ed-wiz-editor > div:has(.ProseMirror:focus-visible) { box-shadow: inset 0 0 0 1px var(--c1-ink); }

/* docs/EventWall.pdf — the event wall. `c1-ed-wall-*` hooks are emitted by
 * app/eventwall.hbs and its wallPost/wallFeed partials only; the kicker,
 * labels, band head, buttons and fields reuse the c1-ed-* and c1-* primitives.
 * Tokens only. Phones read the grid's source order; from 64rem the goal and
 * summary (c1-ed-wall-side) sit in a sticky 20rem column beside the feed. */
.c1-platform .c1-ed-wall { padding-bottom: 4rem; }
.c1-platform .c1-ed-wall-kicker a { color: inherit; text-decoration: none; }
.c1-platform .c1-ed-wall-kicker a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-kicker .c1-ed-dash-masthead-mark { color: var(--c1-ink); }
.c1-platform .c1-ed-wall-head { display: grid; gap: var(--c1-space-2); margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-wall-back { color: var(--c1-ink); font-size: .9375rem; font-weight: 600; text-decoration: none; }
.c1-platform .c1-ed-wall-back:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-title { border-top: 1px solid var(--c1-ink); font-family: var(--c1-serif); font-size: clamp(2.25rem, 1.25rem + 3.5vw, 4rem); font-weight: 400; letter-spacing: -.02em; line-height: 1.05; margin: 0; overflow-wrap: anywhere; padding-top: var(--c1-space-2); text-wrap: balance; }
.c1-platform .c1-ed-wall-title span { color: var(--c1-muted); }
.c1-platform .c1-ed-wall-meta { color: var(--c1-muted); font-size: .9375rem; margin: 0; }
.c1-platform .c1-ed-wall-meta a { color: inherit; }
.c1-platform .c1-ed-wall-prompt { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.3; margin: var(--c1-space-2) 0 0; }
.c1-platform .c1-ed-wall-sub { color: var(--c1-muted); font-size: .8125rem; }
.c1-platform .c1-ed-wall-grid { display: grid; gap: var(--c1-space-6); margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-wall-side { display: contents; }
.c1-platform .c1-ed-wall-side > section { background: var(--c1-surface); border: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-3); padding: var(--c1-space-4); }
/* Needs your answer: the organizer's red-framed count. */
.c1-platform .c1-ed-wall-needs { align-items: center; border: 2px solid var(--c1-terracotta-dark); display: flex; gap: var(--c1-space-3); margin: 0; padding: var(--c1-space-3) var(--c1-space-4); }
.c1-platform .c1-ed-wall-needs-count { color: var(--c1-terracotta-dark); font-family: var(--c1-serif); font-size: 2rem; line-height: 1; }
.c1-platform .c1-ed-wall-needs a { color: var(--c1-ink); font-weight: 600; margin-left: auto; }
/* Announcement and pinned answers: bordered cards; the answer's left rule is leaf green. */
.c1-platform .c1-ed-wall-announce, .c1-platform .c1-ed-wall-pinned { background: var(--c1-surface); border: 1px solid var(--c1-ink); display: grid; gap: var(--c1-space-2); padding: var(--c1-space-4) var(--c1-space-6); }
.c1-platform .c1-ed-wall-pinned { border-left: 4px solid var(--c1-leaf); }
/* Announcements carry terracotta the way answers carry leaf. */
.c1-platform .c1-ed-wall-announce { border-left: 4px solid var(--c1-terracotta); }
.c1-platform .c1-ed-wall-announce > .c1-ed-label:first-child { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-announce-item, .c1-platform .c1-ed-wall-pinned-item { display: grid; gap: var(--c1-space-2); }
.c1-platform .c1-ed-wall-announce-item + .c1-ed-wall-announce-item, .c1-platform .c1-ed-wall-pinned-item + .c1-ed-wall-pinned-item { border-top: 1px solid var(--c1-border); padding-top: var(--c1-space-3); }
.c1-platform .c1-ed-wall-pinned-head { display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; }
.c1-platform .c1-ed-wall-pinned-label { color: var(--c1-leaf); }
.c1-platform .c1-ed-wall-announce-text, .c1-platform .c1-ed-wall-pinned-text { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.3; margin: 0; }
.c1-platform .c1-ed-wall-announce p, .c1-platform .c1-ed-wall-pinned p { margin: 0; }
/* Composer: one field, Post disabled until there is text. */
.c1-platform .c1-ed-wall-composer { background: var(--c1-surface); border: 1px solid var(--c1-ink); display: grid; }
.c1-platform .c1-ed-wall-composer-head, .c1-platform .c1-ed-wall-composer-foot { align-items: center; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; padding: var(--c1-space-3) var(--c1-space-4); }
.c1-platform .c1-ed-wall-composer-head { border-bottom: 1px solid var(--c1-border); }
.c1-platform .c1-ed-wall-composer-foot { border-top: 1px solid var(--c1-border); }
.c1-platform .c1-ed-wall-composer-body { display: flex; gap: var(--c1-space-3); padding: var(--c1-space-4); }
.c1-platform .c1-ed-wall-composer textarea { border: 0; border-radius: 0; min-height: 4.5rem; padding: var(--c1-space-1) 0; }
.c1-platform .c1-ed-wall-composer textarea:hover { border: 0; }
/* The frame carries the focus ring; the field inside stays borderless. */
.c1-platform .c1-ed-wall-composer textarea:focus-visible { box-shadow: none; outline: none; }
.c1-platform .c1-ed-wall-composer:focus-within { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
.c1-platform .c1-ed-wall-composer .c1-button { min-height: 2.5rem; padding: var(--c1-space-2) var(--c1-space-6); }
.c1-platform .c1-ed-wall-visitor { align-items: center; background: var(--c1-surface); border: 1px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-4); justify-content: space-between; padding: var(--c1-space-4) var(--c1-space-6); }
.c1-platform .c1-ed-wall-visitor p { margin: 0; }
.c1-platform .c1-ed-wall-visitor-title { font-family: var(--c1-serif); font-size: 1.375rem; }
/* Feed. */
.c1-platform .c1-ed-wall-feed-head { align-items: baseline; }
.c1-platform .c1-ed-wall-feed-head .c1-ed-title { font-size: 1.75rem; }
.c1-platform .c1-ed-wall-feed-head p { margin: 0; }
.c1-platform .c1-ed-wall-post { border-bottom: 1px solid var(--c1-border); display: grid; gap: var(--c1-space-3); padding: var(--c1-space-4) 0; }
.c1-platform .c1-ed-wall-post-head { align-items: flex-start; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; }
.c1-platform .c1-ed-wall-who { align-items: center; display: flex; gap: var(--c1-space-3); min-width: 0; }
.c1-platform .c1-ed-wall-who > span:last-child { display: grid; gap: 1px; min-width: 0; }
.c1-platform .c1-ed-wall-who strong { font-size: .9375rem; font-weight: 600; }
.c1-platform .c1-ed-wall-avatar { align-items: center; background: var(--c1-surface); border: 1px solid var(--c1-ink); display: inline-flex; flex: none; font-family: var(--c1-serif); font-size: .9375rem; height: 2.25rem; justify-content: center; width: 2.25rem; }
.c1-platform .c1-ed-wall-avatars { display: inline-flex; flex: none; }
.c1-platform .c1-ed-wall-avatars .c1-ed-wall-avatar + .c1-ed-wall-avatar { margin-left: -1px; }
.c1-platform .c1-ed-wall-tags { align-items: center; display: flex; flex-wrap: wrap; gap: var(--c1-space-2); margin: 0; }
.c1-platform .c1-ed-wall-tag { border: 1px solid var(--c1-ink); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; padding: 2px var(--c1-space-2); text-transform: uppercase; }
.c1-platform .c1-ed-wall-status { font-size: .6875rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.c1-platform .c1-ed-wall-status--open { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-status--done { color: var(--c1-leaf); }
.c1-platform .c1-ed-wall-text { margin: 0; overflow-wrap: anywhere; white-space: pre-line; }
.c1-platform .c1-ed-wall-post--question .c1-ed-wall-text { font-family: var(--c1-serif); font-size: 1.375rem; line-height: 1.3; }
.c1-platform .c1-ed-wall-reply { background: var(--c1-surface); border-left: 4px solid var(--c1-leaf); display: grid; gap: var(--c1-space-2); padding: var(--c1-space-3) var(--c1-space-4); }
.c1-platform .c1-ed-wall-reply p { margin: 0; }
.c1-platform .c1-ed-wall-reply-label { color: var(--c1-leaf); }
.c1-platform .c1-ed-wall-see-pinned { color: var(--c1-ink); font-size: .8125rem; font-weight: 600; justify-self: start; }
.c1-platform .c1-ed-wall-more { display: flex; justify-content: center; margin: var(--c1-space-6) 0 0; }
.c1-platform .c1-ed-wall-more .c1-button { border-color: var(--c1-ink); border-radius: 0; font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; }
@media (min-width: 64rem) {
  .c1-platform .c1-ed-wall-grid { grid-template-columns: minmax(0, 1fr) 20rem; }
  .c1-platform .c1-ed-wall-grid > * { grid-column: 1; }
  .c1-platform .c1-ed-wall-side { align-self: start; display: grid; gap: var(--c1-space-4); grid-column: 2; grid-row: 1 / span 6; position: sticky; top: var(--c1-space-4); }
}
/* Organizer actions, inline reply form, composer failed/done bars. Anything
 * the page toggles with the hidden attribute must not set display unguarded. */
.c1-platform .c1-ed-wall [hidden] { display: none !important; }
.c1-platform .c1-ed-wall-actions { display: flex; flex-wrap: wrap; gap: var(--c1-space-4); margin: 0; }
.c1-platform .c1-ed-wall-row { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; margin: 0; }
.c1-platform .c1-ed-wall-action { background: none; border: 0; color: var(--c1-ink); cursor: pointer; font: inherit; font-size: .8125rem; font-weight: 600; padding: 0; text-decoration: underline; text-underline-offset: .25em; }
.c1-platform .c1-ed-wall-action:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-action--danger { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-reply-form:not([hidden]) { background: var(--c1-surface); border: 1px solid var(--c1-ink); display: grid; gap: var(--c1-space-3); padding: var(--c1-space-4); }
.c1-platform .c1-ed-wall-reply-form-foot { align-items: center; display: flex; flex-wrap: wrap; gap: var(--c1-space-3); margin: 0; }
.c1-platform .c1-ed-wall-reply-form .c1-button { min-height: 2.5rem; padding: var(--c1-space-2) var(--c1-space-4); }
.c1-platform .c1-ed-wall-check { align-items: center; display: inline-flex; gap: var(--c1-space-2); }
.c1-platform .c1-ed-wall-failed:not([hidden]) { align-items: center; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); justify-content: space-between; }
.c1-platform .c1-ed-wall-failed { border-left: 0; border-radius: 0; border-top: 1px solid var(--c1-border); color: var(--c1-terracotta-dark); font-size: .9375rem; margin: 0; padding: var(--c1-space-3) var(--c1-space-4); }
.c1-platform .c1-ed-wall-done { border-left-color: var(--c1-leaf); margin: 0; }
.c1-platform .c1-ed-wall-done a { color: var(--c1-ink); float: right; font-weight: 600; }
.c1-platform .c1-ed-wall-edit-form { display: grid; gap: var(--c1-space-3); }
.c1-platform .c1-ed-wall-edit-form .c1-button { min-height: 2.5rem; padding: var(--c1-space-2) var(--c1-space-4); }
/* Goal block (the event page's raised/progress primitives) and feed moments. */
.c1-platform .c1-ed-wall-goal { border-color: var(--c1-ink); }
.c1-platform .c1-ed-wall-goal p { margin: 0; }
.c1-platform .c1-ed-wall-donate { border-color: var(--c1-ink); border-radius: 0; font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; width: 100%; }
.c1-platform .c1-ed-wall-moment { border-bottom: 1px solid var(--c1-border); color: var(--c1-ink); font-size: .9375rem; margin: 0; overflow-wrap: anywhere; padding: var(--c1-space-3) 0; }
.c1-platform .c1-ed-wall-moment-mark { color: var(--c1-muted); display: inline-block; width: 1.5rem; }
.c1-platform .c1-ed-wall-moment--donation .c1-ed-wall-moment-mark { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-moment--attendance .c1-ed-wall-moment-mark { color: var(--c1-leaf); }
/* AI summary: three short lists in the side column. */
.c1-platform .c1-ed-wall-summary p { margin: 0; }
.c1-platform .c1-ed-wall-summary-h { border-bottom: 1px solid var(--c1-border); color: var(--c1-ink); padding-bottom: var(--c1-space-1); }
.c1-platform .c1-ed-wall-summary-list { display: grid; gap: var(--c1-space-2); list-style: none; margin: 0; padding: 0; }
.c1-platform .c1-ed-wall-summary-list li + li { border-top: 1px solid var(--c1-border); padding-top: var(--c1-space-2); }
.c1-platform .c1-ed-wall-summary-list a { color: var(--c1-ink); text-decoration: none; }
.c1-platform .c1-ed-wall-summary-list a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-wall-summary-info, .c1-platform .c1-ed-wall-summary-saying { display: grid; gap: var(--c1-space-2); margin: 0; }
.c1-platform .c1-ed-wall-summary-info div + div, .c1-platform .c1-ed-wall-summary-saying div + div { border-top: 1px solid var(--c1-border); padding-top: var(--c1-space-2); }
.c1-platform .c1-ed-wall-summary-info dt { display: inline; font-weight: 600; }
.c1-platform .c1-ed-wall-summary-info dt::after { content: ' · '; font-weight: 400; }
.c1-platform .c1-ed-wall-summary-info dd { display: inline; margin: 0; }
.c1-platform .c1-ed-wall-summary-saying div { display: grid; gap: var(--c1-space-1) var(--c1-space-3); grid-template-columns: 4.5rem minmax(0, 1fr); }
.c1-platform .c1-ed-wall-summary-saying dd { display: grid; gap: var(--c1-space-1); margin: 0; }
.c1-platform .c1-ed-wall-leaf { color: var(--c1-leaf); }
/* AI-drafted reply: the organizer's to approve, edit or dismiss. */
.c1-platform .c1-ed-wall-draft:not([hidden]) { background: var(--c1-surface); border: 1px solid var(--c1-ink); display: grid; gap: var(--c1-space-3); padding: var(--c1-space-4); }
.c1-platform .c1-ed-wall-draft p { margin: 0; }
.c1-platform .c1-ed-wall-draft .c1-button { min-height: 2.5rem; padding: var(--c1-space-2) var(--c1-space-4); }
.c1-platform .c1-ed-wall-draft .c1-button--primary { background: var(--c1-ink); border-color: var(--c1-ink); }

/* Broadsheet registration -- the standalone nonprofit and corporate
 * self-registration pages (src/views/nonprofit-registration*.hbs,
 * corporate-registration*.hbs). 2026-10-09. They render outside the app shell
 * with this stylesheet alone: `c1-nav c1-ed-nameplate` for the bar, `c1-ed-shell`
 * for the square buttons, `c1-ed-wiz` for the square inputs. The step rail is
 * static (no buttons) and the plan cards keep the `c1-plan-card` hooks the
 * plan scripts read. Same tokens, no new colour, font or request.
 * Pinned in src/c1-platform.registration.spec.ts. */
.c1-platform.c1-ed-reg { margin: 0; min-height: 100vh; }
.c1-platform.c1-ed-reg .c1-ed-brand { align-items: center; display: inline-flex; }
.c1-platform.c1-ed-reg .c1-ed-brand img { height: 1.75rem; width: 1.75rem; }
.c1-platform .c1-ed-reg-main { margin-bottom: 4rem; }
.c1-platform .c1-ed-reg-sheet { display: grid; gap: var(--c1-space-6); margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-reg-main .c1-ed-close { margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-reg-main .c1-ed-close p { margin: 0; }
.c1-platform .c1-ed-reg-main .c1-ed-close nav { display: flex; flex-wrap: wrap; gap: var(--c1-space-4) var(--c1-space-6); }
.c1-platform .c1-ed-reg-main .c1-ed-close .c1-ed-link { font-size: 1.0625rem; }
.c1-platform .c1-ed-reg-head { display: grid; gap: var(--c1-space-3); }
.c1-platform .c1-ed-reg-head .c1-ed-title { font-size: clamp(2rem, 1.4rem + 2vw, 3rem); }
.c1-platform .c1-ed-reg-head .c1-ed-subhead { max-width: 40rem; }
.c1-platform .c1-ed-reg-main .c1-ed-note { margin: 0; max-width: 40rem; }
.c1-platform .c1-ed-reg-main .c1-ed-note a, .c1-platform .c1-ed-reg-callout a { color: var(--c1-ink); font-size: inherit; font-weight: 600; letter-spacing: normal; text-decoration: underline; text-transform: none; text-underline-offset: .2em; }
.c1-platform .c1-ed-reg-main .c1-ed-note a:hover, .c1-platform .c1-ed-reg-callout a:hover { color: var(--c1-terracotta-dark); }
/* Step rail: the wizard's numbered rail without its buttons. Five columns for
 * the nonprofit flow, four for corporate. */
.c1-platform.c1-ed-reg .c1-ed-wiz-steps { margin-top: 0; }
.c1-platform .c1-ed-reg-steps--five { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.c1-platform.c1-ed-reg .c1-ed-wiz-steps li { border-top: 1px solid var(--c1-border); color: var(--c1-muted); display: flex; gap: var(--c1-space-3); min-width: 0; padding: var(--c1-space-3) 0 0; }
.c1-platform.c1-ed-reg .c1-ed-wiz-steps li.is-done { border-top-color: var(--c1-ink); color: var(--c1-ink); }
.c1-platform.c1-ed-reg .c1-ed-wiz-steps li[aria-current] { border-top: 3px solid var(--c1-ink); color: var(--c1-ink); padding-top: calc(var(--c1-space-3) - 2px); }
.c1-platform.c1-ed-reg .c1-ed-wiz-steps li strong { font-size: .875rem; font-weight: 600; }
/* Callouts: the pricing callout box, with an error tone for failed input. */
.c1-platform .c1-ed-reg-callout { font-size: .9375rem; line-height: 1.5; padding: var(--c1-space-4) var(--c1-space-6); }
.c1-platform .c1-ed-reg-callout p { margin: 0; }
.c1-platform .c1-ed-reg-callout--error { border-color: var(--c1-terracotta-dark); box-shadow: inset 0 0 0 1px var(--c1-terracotta-dark); }
.c1-platform .c1-ed-reg-callout--error::before { color: var(--c1-terracotta-dark); content: 'Please check'; display: block; font-size: .6875rem; font-weight: 600; letter-spacing: .1em; margin-bottom: var(--c1-space-1); text-transform: uppercase; }
/* Forms: inputs come from the wizard rule; textareas and the narrow EIN field here. */
.c1-platform.c1-ed-reg form { display: grid; gap: var(--c1-space-4); margin: 0; }
.c1-platform.c1-ed-reg textarea { background: var(--c1-surface); border: 1px solid var(--c1-ink); border-radius: 0; box-sizing: border-box; color: var(--c1-ink); font: inherit; line-height: 1.5; padding: var(--c1-space-3) var(--c1-space-4); width: 100%; }
.c1-platform.c1-ed-reg textarea:focus { border-width: 2px; outline: none; }
.c1-platform.c1-ed-reg textarea:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
.c1-platform .c1-ed-reg-ein { font-family: var(--c1-mono); font-size: 1.25rem; letter-spacing: .08em; max-width: 20rem; }
.c1-platform.c1-ed-reg .c1-ed-wiz-check { align-items: flex-start; border: 1px solid var(--c1-border); font-size: .9375rem; gap: var(--c1-space-3); padding: var(--c1-space-4); }
.c1-platform.c1-ed-reg .c1-ed-wiz-check input { margin-top: .2rem; }
.c1-platform.c1-ed-reg .c1-ed-wiz-check:has(:checked) { border-color: var(--c1-ink); }
.c1-platform.c1-ed-reg .c1-ed-wiz-foot { margin-top: var(--c1-space-2); }
.c1-platform.c1-ed-reg .c1-ed-wiz-foot form { display: contents; }
.c1-platform.c1-ed-reg .c1-ed-wiz-foot > div { flex-wrap: wrap; }
.c1-platform.c1-ed-reg .c1-button--primary { background: var(--c1-ink); border-color: var(--c1-ink); color: var(--c1-surface); }
.c1-platform.c1-ed-reg .c1-button--primary:hover { background: var(--c1-terracotta-dark); border-color: var(--c1-terracotta-dark); }
.c1-platform.c1-ed-reg .c1-button--secondary { color: var(--c1-ink); }
.c1-platform.c1-ed-reg .c1-ed-wiz-summary > div:last-child { border-bottom: 1px solid var(--c1-border); }
.c1-platform.c1-ed-reg .c1-ed-wiz-summary dd { font-size: 1.0625rem; }
.c1-platform.c1-ed-reg .c1-ed-wiz-summary .c1-ed-reg-summary-name dd { font-family: var(--c1-serif); font-size: 1.75rem; line-height: 1.15; }
/* Plan cards: the wizard's radio cards carrying the plan script's hooks. */
.c1-platform.c1-ed-reg .c1-ed-wiz-cards { align-items: stretch; }
.c1-platform.c1-ed-reg .c1-plan-card { gap: var(--c1-space-2); }
.c1-platform.c1-ed-reg .c1-plan-card__top { align-items: baseline; display: flex; justify-content: space-between; }
.c1-platform.c1-ed-reg .c1-plan-card__top strong { font-size: 1.0625rem; }
.c1-platform.c1-ed-reg .c1-plan-card__state { color: var(--c1-muted); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.c1-platform.c1-ed-reg .c1-plan-card.is-selected .c1-plan-card__state { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-reg-price { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-2); }
.c1-platform .c1-ed-reg-price strong { font-family: var(--c1-serif); font-size: 2.25rem; font-weight: 400; letter-spacing: -.01em; line-height: 1.1; }
.c1-platform .c1-ed-reg-price small { color: var(--c1-muted); font-size: .8125rem; }
.c1-platform .c1-ed-reg-badge { align-self: flex-start; border: 1px solid var(--c1-ink); font-size: .6875rem; font-weight: 600; letter-spacing: .06em; padding: 2px var(--c1-space-2); text-transform: uppercase; }
.c1-platform .c1-ed-reg-cadence { border: 0; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-4); margin: 0; padding: 0; }
.c1-platform .c1-ed-reg-cadence[hidden] { display: none; }
.c1-platform .c1-ed-reg-cadence legend { font-size: .9375rem; font-weight: 600; margin-bottom: var(--c1-space-2); padding: 0; }
.c1-platform .c1-ed-reg-cadence-options { border: 1px solid var(--c1-ink); display: inline-flex; }
.c1-platform .c1-ed-reg-cadence label { align-items: center; cursor: pointer; display: inline-flex; font-size: .875rem; font-weight: 600; gap: var(--c1-space-2); min-height: 2.5rem; padding: 0 var(--c1-space-4); }
.c1-platform .c1-ed-reg-cadence label:has(:checked) { background: var(--c1-ink); color: var(--c1-surface); }
.c1-platform .c1-ed-reg-cadence label { position: relative; }
.c1-platform .c1-ed-reg-cadence input { margin: 0; opacity: 0; position: absolute; }
.c1-platform .c1-ed-reg-cadence label:has(:focus-visible) { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
.c1-platform.c1-ed-reg .c1-ed-wiz-panel { align-items: center; grid-template-columns: minmax(0, 1fr) auto; }
.c1-platform.c1-ed-reg .c1-ed-wiz-panel p { margin: var(--c1-space-1) 0 0; }
.c1-platform.c1-ed-reg .c1-ed-wiz-panel .c1-ed-label { display: block; margin-bottom: var(--c1-space-1); }
.c1-platform.c1-ed-reg .c1-ed-wiz-panel > strong { font-family: var(--c1-serif); font-size: 2rem; font-weight: 400; line-height: 1; }
/* Sign-in providers: the login page's ruled rows. */
.c1-platform.c1-ed-reg .c1-ed-providers { max-width: 32rem; }
/* Invite results: ruled rows, outcome read from the script's is-* classes. */
.c1-platform.c1-ed-reg .c1-invite-results { display: grid; }
.c1-platform.c1-ed-reg .c1-invite-rows { list-style: none; margin: 0; padding: 0; }
.c1-platform.c1-ed-reg .c1-invite-headline { font-family: var(--c1-serif); font-size: 1.25rem; margin: 0 0 var(--c1-space-3); }
.c1-platform.c1-ed-reg .c1-invite-row { border-top: 1px solid var(--c1-border); display: grid; font-size: .875rem; gap: var(--c1-space-1) var(--c1-space-4); grid-template-columns: 4rem minmax(0, 1fr); padding: var(--c1-space-2) 0; }
.c1-platform.c1-ed-reg .c1-invite-row:last-child { border-bottom: 1px solid var(--c1-border); }
.c1-platform.c1-ed-reg .c1-invite-row__line { color: var(--c1-muted); font-size: .6875rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.c1-platform.c1-ed-reg .c1-invite-row__input { font-weight: 600; overflow-wrap: anywhere; }
.c1-platform.c1-ed-reg .c1-invite-row__message { grid-column: 2; }
.c1-platform.c1-ed-reg .c1-invite-row.is-added .c1-invite-row__message { color: var(--c1-leaf); }
.c1-platform.c1-ed-reg .c1-invite-row:not(.is-added) .c1-invite-row__message { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-reg-skip { position: absolute; left: -9999px; }
.c1-platform .c1-ed-reg-skip:focus { background: var(--c1-surface); left: 1rem; padding: .5rem; top: 1rem; z-index: 1; }
@media (max-width: 39.9375rem) {
  .c1-platform.c1-ed-reg .c1-ed-wiz-steps li strong { display: none; }
  .c1-platform.c1-ed-reg .c1-ed-wiz-steps li[aria-current] strong { display: inline; white-space: nowrap; }
  .c1-platform.c1-ed-reg .c1-ed-wiz-foot .c1-button { width: 100%; }
  .c1-platform.c1-ed-reg .c1-ed-wiz-foot > div { flex-direction: column; width: 100%; }
  .c1-platform.c1-ed-reg .c1-ed-wiz-panel { grid-template-columns: minmax(0, 1fr); }
}
.c1-platform .c1-ed-reg-compare { justify-self: start; }

/* Superadmin platform dashboard (/superadmin/dashboard), after docs/Super
 * admin · Platform dashboard. 2026-10-09. Range segments and two date fields
 * on a heavy rule; three tile links (top rule thickens when its list is open);
 * then one panel that is the stacked-bar graph or the active-days grid
 * (client switch), or the chosen tile's list. Series colours are the focus
 * blue, terracotta-dark and marigold-dark tokens; bar heights are twenty step
 * classes. Same tokens, no new colour, font or request. Pinned in
 * src/c1-platform.platform-dashboard.spec.ts. */
.c1-platform .c1-ed-pd-head { align-items: end; display: flex; flex-wrap: wrap; gap: var(--c1-space-2) var(--c1-space-6); justify-content: space-between; margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-pd-head .c1-ed-title { font-size: clamp(2.5rem, 1.5rem + 3vw, 3.5rem); letter-spacing: -.02em; line-height: 1; }
.c1-platform .c1-ed-pd-range { color: var(--c1-muted); font-size: .9375rem; margin: 0; }
.c1-platform .c1-ed-pd-filters { align-items: center; border-bottom: 1px solid var(--c1-ink); border-top: 2px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-3); margin-top: var(--c1-space-6); padding: .875rem 0; }
.c1-platform .c1-ed-pd-filters label { color: var(--c1-muted); font-size: .8125rem; }
.c1-platform .c1-ed-pd-filters .c1-ed-dash-segments + label { margin-left: var(--c1-space-2); }
.c1-platform .c1-ed-pd-filters input[type='date'] { background: transparent; border: 1px solid var(--c1-ink); border-radius: 0; color: var(--c1-ink); font: inherit; font-size: .875rem; height: 2.5rem; padding: 0 var(--c1-space-3); }
.c1-platform .c1-ed-pd-filters input[type='date']:focus-visible { outline: 3px solid var(--c1-focus); outline-offset: 3px; }
.c1-platform .c1-ed-pd-filters .c1-button { min-height: 2.5rem; }
.c1-platform .c1-ed-pd-swatch { background: var(--c1-ink); display: inline-block; height: .625rem; margin-right: var(--c1-space-2); vertical-align: middle; width: .625rem; }
.c1-platform .c1-ed-pd-swatch--users { background: var(--c1-focus); }
.c1-platform .c1-ed-pd-swatch--nonprofits { background: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-pd-swatch--corporations { background: var(--c1-marigold-dark); }
/* Tiles: links styled as the mock's buttons; the open one carries a 3px rule. */
.c1-platform .c1-ed-pd-tiles { display: grid; gap: var(--c1-space-4) var(--c1-space-6); grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: var(--c1-space-6); }
.c1-platform .c1-ed-pd-tile { border-top: 1px solid var(--c1-ink); color: var(--c1-ink); display: flex; flex-direction: column; gap: var(--c1-space-2); padding-top: .875rem; text-decoration: none; }
.c1-platform .c1-ed-pd-tile.is-active { border-top: 3px solid var(--c1-ink); padding-top: calc(.875rem - 2px); }
.c1-platform .c1-ed-pd-tile:hover .c1-ed-pd-tile-hint { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-pd-tile-top { color: var(--c1-muted); display: flex; font-size: .75rem; justify-content: space-between; letter-spacing: .06em; text-transform: uppercase; }
.c1-platform .c1-ed-pd-tile-hint { color: var(--c1-border); font-size: .6875rem; }
.c1-platform .c1-ed-pd-tile.is-active .c1-ed-pd-tile-hint { border-bottom: 1px solid var(--c1-ink); color: var(--c1-ink); font-weight: 600; }
.c1-platform .c1-ed-pd-tile-value { align-items: baseline; display: flex; flex-wrap: wrap; gap: var(--c1-space-3); }
.c1-platform .c1-ed-pd-tile-value strong { font-family: var(--c1-serif); font-size: 3.25rem; font-weight: 400; letter-spacing: -.02em; line-height: 1; }
.c1-platform .c1-ed-pd-tile-value small, .c1-platform .c1-ed-pd-tile-note { color: var(--c1-muted); font-size: .8125rem; }
/* Panel head: serif title, then the legend + Graph/Grid switch or count + Close. */
.c1-platform .c1-ed-pd-panel { margin-top: 2rem; }
.c1-platform .c1-ed-pd-panel-head { align-items: center; border-bottom: 2px solid var(--c1-ink); display: flex; flex-wrap: wrap; gap: var(--c1-space-3) var(--c1-space-6); justify-content: space-between; padding-bottom: .625rem; }
.c1-platform .c1-ed-pd-panel-title { font-family: var(--c1-serif); font-size: 1.5rem; font-weight: 400; margin: 0; }
.c1-platform .c1-ed-pd-panel-tools { align-items: center; display: flex; flex-wrap: wrap; gap: var(--c1-space-4); }
.c1-platform .c1-ed-pd-legend { color: var(--c1-muted); display: flex; flex-wrap: wrap; font-size: .8125rem; gap: var(--c1-space-4); }
.c1-platform .c1-ed-pd-views button { min-height: 2.25rem; }
.c1-platform .c1-ed-pd-views button[aria-checked='true'] { background: var(--c1-ink); color: var(--c1-surface); }
.c1-platform .c1-ed-pd-close { min-height: 2.25rem; }
/* Graph: a 200px plot, ticks left, one stacked column per bucket. */
.c1-platform .c1-ed-pd-graph { display: grid; gap: .625rem; margin: 1.25rem 0 0; }
.c1-platform .c1-ed-pd-plot, .c1-platform .c1-ed-pd-axis { column-gap: var(--c1-space-2); display: grid; grid-template-columns: 1.75rem minmax(0, 1fr); }
.c1-platform .c1-ed-pd-ticks { color: var(--c1-muted); display: flex; flex-direction: column; font-size: .6875rem; height: 12.5rem; justify-content: space-between; text-align: right; }
.c1-platform .c1-ed-pd-bars { align-items: flex-end; border-bottom: 1px solid var(--c1-ink); border-left: 1px solid var(--c1-border); display: flex; gap: .375rem; height: 12.5rem; }
.c1-platform .c1-ed-pd-col { display: flex; flex: 1 1 0; flex-direction: column-reverse; gap: 2px; height: 100%; justify-content: flex-start; min-width: 0; }
.c1-platform .c1-ed-pd-col.is-empty::before { background: var(--c1-border); content: ''; display: block; height: 2px; }
.c1-platform .c1-ed-pd-seg { background: var(--c1-ink); display: block; }
.c1-platform .c1-ed-pd-seg--users { background: var(--c1-focus); }
.c1-platform .c1-ed-pd-seg--nonprofits { background: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-pd-seg--corporations { background: var(--c1-marigold-dark); }
.c1-platform .c1-ed-pd-seg--0 { display: none; }
.c1-platform .c1-ed-pd-seg--5 { height: 5%; }
.c1-platform .c1-ed-pd-seg--10 { height: 10%; }
.c1-platform .c1-ed-pd-seg--15 { height: 15%; }
.c1-platform .c1-ed-pd-seg--20 { height: 20%; }
.c1-platform .c1-ed-pd-seg--25 { height: 25%; }
.c1-platform .c1-ed-pd-seg--30 { height: 30%; }
.c1-platform .c1-ed-pd-seg--35 { height: 35%; }
.c1-platform .c1-ed-pd-seg--40 { height: 40%; }
.c1-platform .c1-ed-pd-seg--45 { height: 45%; }
.c1-platform .c1-ed-pd-seg--50 { height: 50%; }
.c1-platform .c1-ed-pd-seg--55 { height: 55%; }
.c1-platform .c1-ed-pd-seg--60 { height: 60%; }
.c1-platform .c1-ed-pd-seg--65 { height: 65%; }
.c1-platform .c1-ed-pd-seg--70 { height: 70%; }
.c1-platform .c1-ed-pd-seg--75 { height: 75%; }
.c1-platform .c1-ed-pd-seg--80 { height: 80%; }
.c1-platform .c1-ed-pd-seg--85 { height: 85%; }
.c1-platform .c1-ed-pd-seg--90 { height: 90%; }
.c1-platform .c1-ed-pd-seg--95 { height: 95%; }
.c1-platform .c1-ed-pd-seg--100 { height: 100%; }
.c1-platform .c1-ed-pd-axis-labels { color: var(--c1-muted); display: flex; font-size: .75rem; justify-content: space-between; }
.c1-platform .c1-ed-pd-graph figcaption { color: var(--c1-muted); font-size: .8125rem; }
/* Grid and lists: ruled rows on a CSS grid. */
.c1-platform .c1-ed-pd-grid[hidden], .c1-platform .c1-ed-pd-graph[hidden] { display: none; }
.c1-platform .c1-ed-pd-list { display: grid; margin-top: .25rem; }
.c1-platform .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list-row { column-gap: var(--c1-space-4); display: grid; grid-template-columns: minmax(0, 1fr) repeat(3, 10rem); }
.c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-row,
.c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-row,
.c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-row { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) 6rem 6rem 6rem; }
.c1-platform .c1-ed-pd-list-head { border-bottom: 1px solid var(--c1-ink); color: var(--c1-muted); font-size: .6875rem; letter-spacing: .06em; padding: .625rem 0 .5rem; text-transform: uppercase; }
.c1-platform .c1-ed-pd-list-row { align-items: baseline; border-bottom: 1px solid var(--c1-border); font-size: .875rem; padding: .6875rem 0; }
.c1-platform .c1-ed-pd-list-row span, .c1-platform .c1-ed-pd-list-row a { min-width: 0; overflow-wrap: anywhere; }
.c1-platform .c1-ed-pd-list-row small { color: var(--c1-muted); display: block; font-size: .75rem; }
.c1-platform .c1-ed-pd-list-name a, .c1-platform .c1-ed-pd-list-title { color: var(--c1-ink); display: block; font-family: var(--c1-serif); font-size: 1.0625rem; line-height: 1.2; text-decoration: none; }
.c1-platform .c1-ed-pd-list-name a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-pd-list-row a { color: var(--c1-ink); text-decoration: none; }
.c1-platform .c1-ed-pd-list-row a:hover { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-pd-list-muted { color: var(--c1-muted); }
.c1-platform .c1-ed-pd-list-quiet { color: var(--c1-border); }
.c1-platform .c1-ed-pd-list-strong { font-weight: 600; }
.c1-platform .c1-ed-pd-list-right { text-align: right; }
.c1-platform .c1-ed-pd-list-status { font-size: .75rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.c1-platform .c1-ed-pd-list-status.is-ok { color: var(--c1-leaf); }
.c1-platform .c1-ed-pd-list-status.is-warn { color: var(--c1-terracotta-dark); }
.c1-platform .c1-ed-pd-foot { color: var(--c1-muted); font-size: .8125rem; margin: .75rem 0 0; }
@media (max-width: 59.9375rem) {
  .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-row,
  .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-row,
  .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-row { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); }
  .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-head span:nth-child(n+4), .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-row > span:nth-child(n+4),
  .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-head span:nth-child(n+4), .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-row > span:nth-child(n+4),
  .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-head span:nth-child(n+4), .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-row > span:nth-child(n+4) { display: none; }
}
@media (max-width: 39.9375rem) {
  .c1-platform .c1-ed-pd-tiles { grid-template-columns: minmax(0, 1fr); }
  .c1-platform .c1-ed-pd-tile-value strong { font-size: 2.5rem; }
  .c1-platform .c1-ed-pd-filters .c1-ed-dash-segments { flex: 1 1 100%; }
  .c1-platform .c1-ed-pd-filters .c1-ed-dash-segments a { flex: 1 1 0; font-size: .75rem; min-height: 2.75rem; padding: 0; }
  .c1-platform .c1-ed-pd-filters input[type='date'] { flex: 1 1 8rem; min-width: 0; }
  .c1-platform .c1-ed-pd-bars { gap: 2px; }
  .c1-platform .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list-row { grid-template-columns: minmax(0, 1fr) repeat(3, 4.5rem); }
  .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-row,
  .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-row,
  .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-head, .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-head span:nth-child(n+3), .c1-platform .c1-ed-pd-list--users .c1-ed-pd-list-row > span:nth-child(n+3),
  .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-head span:nth-child(n+3), .c1-platform .c1-ed-pd-list--nonprofits .c1-ed-pd-list-row > span:nth-child(n+3),
  .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-head span:nth-child(n+3), .c1-platform .c1-ed-pd-list--corporations .c1-ed-pd-list-row > span:nth-child(n+3) { display: none; }
}
@media (max-width: 23.9375rem) {
  .c1-platform .c1-ed-pd-filters .c1-ed-dash-segments { display: grid; grid-template-columns: 1fr 1fr; }
}

/* One-line headlines on every public editorial page. 2026-10-18. Each hero
 * section carries `--c1-ed-em`, the width of its own headline in em (measured
 * with Instrument Serif at the headline's tracking), so the size is the
 * content box (the viewport less the 64px gutters, capped at the 76rem
 * container) divided by that width, with half a rem to spare. Under 40rem the
 * sentence wraps at a 2.25rem floor instead. `/` keeps its own rule above.
 * The login headline shares its row with the sign-in column, so its box is
 * half the viewport, 38.5rem at most. */
.c1-platform .c1-ed-hero:not(.c1-ed-home) .c1-ed-headline { font-size: clamp(2.25rem, (100vw - 4.5rem) / var(--c1-ed-em, 12), 75.5rem / var(--c1-ed-em, 12)); line-height: .98; }
.c1-platform .c1-ed-hero:not(.c1-ed-home) .c1-ed-headline span { display: inline; }
.c1-platform .c1-ed-hero.c1-ed-login .c1-ed-headline { font-size: clamp(2.5rem, (50vw - 4.5rem) / var(--c1-ed-em, 6), 38.5rem / var(--c1-ed-em, 6)); }
@media (min-width: 40rem) {
  .c1-platform .c1-ed-hero:not(.c1-ed-home) .c1-ed-headline { white-space: nowrap; }
}
