/* Static-first civic documents share the site token sheet through brand.css.
   Keep component rules semantic: no page-local palette, type stack, or spacing scale. */
* {
  box-sizing: border-box;
}

html {
  background: var(--color-canvas);
  color: var(--color-text);
  scroll-behavior: auto;
}

body {
  margin: 0;
  background: var(--color-canvas);
  color: var(--color-text);
  font: 400 1.0625rem/1.6 var(--font-body, "Noto Sans", "Helvetica Neue", Arial, system-ui, sans-serif);
  -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3 {
  color: var(--color-text);
  font-family: var(--font-display);
}

a {
  color: var(--color-action);
}

button,
input,
select {
  font: inherit;
}

.skip {
  position: absolute;
  inset-inline-start: -9999px;
  z-index: 20;
}

.skip:focus {
  inset-block-start: var(--space-3);
  inset-inline-start: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-sm);
  background: var(--color-text);
  color: var(--color-surface);
}

.document-mast {
  border-block-start: 3px solid var(--color-brand);
  border-block-end: 1px solid var(--color-border);
  background: var(--color-surface);
}

.document-mast-inner {
  display: flex;
  max-width: var(--maxw);
  margin-inline: auto;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-5);
  padding: var(--space-4) clamp(var(--space-4), 4vw, var(--space-7));
}

.document-brand {
  justify-content: flex-start;
  color: var(--color-brand);
  font: 700 clamp(1.4rem, 4vw, 2rem)/1 var(--font-brand);
  letter-spacing: -.015em;
  text-decoration: none;
}

.document-brand .brand-mark {
  width: 34px;
  height: 34px;
}

.document-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2, .5rem) var(--space-5, 1.5rem);
  font: 600 .8125rem/1.4 var(--font-label);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.document-nav a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 44px;
  min-width: 44px;
  padding-block: var(--space-2, .5rem);
  padding-inline: var(--space-2, .5rem);
  border-block-end: 2px solid transparent;
  color: var(--color-text-soft);
  text-decoration: none;
}

.document-nav a:hover,
.document-nav a:focus-visible,
.document-nav a[aria-current="page"] {
  border-block-end-color: var(--color-action);
  color: var(--color-action);
}

.guide-help {
  margin: var(--space-2) 0 0;
  font: 500 .875rem/1.45 var(--font-body);
}

.guide-help a {
  color: var(--color-action);
}

.near-hero,
.near-place-guide,
.near-overview,
.near-form,
.near-map-section,
.near-results,
.near-bags,
.near-coverage,
.following-hero,
.following-explainer,
.following-create,
.following-workspace,
.following-packs,
.following-privacy,
.following-personal,
.following-footer,
.near-footer {
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: clamp(var(--space-4), 4vw, var(--space-7));
}

/* ── Shared node-document layout ─────────────────────────────────────────
   Static exam / parcel / pack / digest / agency pages share one grammar.
   Exam keeps its historical class names; civic-object + node-* aliases
   inherit the same rules so future node pages do not re-paste styles. */

.node-document,
.exam-document,
.civic-object-document,
.node-footer,
.exam-footer,
.civic-object-footer,
.node-back,
.exam-back {
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: clamp(var(--space-4), 4vw, var(--space-7));
}

.node-back,
.exam-back {
  padding-block-start: var(--space-5);
  margin: 0;
  font: 600 .875rem/1.4 var(--font-label);
}

.node-back a,
.exam-back a {
  color: var(--color-action);
  text-decoration: none;
}

.node-back a:hover,
.node-back a:focus-visible,
.exam-back a:hover,
.exam-back a:focus-visible {
  text-decoration: underline;
}

.node-hero,
.exam-hero,
.civic-object-hero {
  padding-block: var(--space-6) var(--space-5);
  border-block-end: 3px solid var(--color-text);
}

.node-kicker,
.exam-kicker,
.civic-object-kicker,
.exam-number,
.exam-status,
.node-action,
.exam-action,
.civic-object-action,
.exam-subject-line,
.exam-status-row,
.exam-facts dt,
.exam-process-step,
.exam-muted,
.exam-note,
.node-footer,
.exam-footer,
.civic-object-footer,
.civic-object-meta,
.node-meta {
  font-family: var(--font-label);
}

.node-kicker,
.exam-kicker,
.civic-object-kicker {
  margin: 0 0 var(--space-2);
  color: var(--color-action);
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.node-hero h1,
.exam-hero h1,
.civic-object-hero h1 {
  max-width: 22ch;
  margin: 0;
  font-size: clamp(2.25rem, 6.5vw, 4.75rem);
  font-weight: 600;
  line-height: .98;
  letter-spacing: -.04em;
  /* At 200% zoom on a narrow screen a single long institution word
     ("Development") is wider than the column. Break it only when nothing else
     will fit, rather than letting the title scroll the whole document. */
  overflow-wrap: break-word;
  min-width: 0;
}

.node-lede,
.civic-object-hero > p:not(.node-kicker):not(.civic-object-kicker):not(.civic-object-pivot):not(.node-pivot),
.exam-subject-line {
  margin: var(--space-4) 0 0;
  max-width: var(--measure);
  color: var(--color-text-soft);
  font-size: .95rem;
}

.exam-number {
  color: var(--color-text);
  font-weight: 700;
}

.node-pivot,
.civic-object-pivot {
  margin: var(--space-4) 0 0;
  font: 600 .9375rem/1.4 var(--font-label);
}

.node-pivot a,
.civic-object-pivot a {
  color: var(--color-action);
  text-decoration: none;
}

.node-pivot a:hover,
.node-pivot a:focus-visible,
.civic-object-pivot a:hover,
.civic-object-pivot a:focus-visible {
  text-decoration: underline;
}

/* Agency constellation: identity → primary actions → typed relationships.
   The cards reuse the civic-document type, color, radius, and spacing tokens;
   relationship data and destinations still come from the shared edge model. */
.agency-constellation-hero {
  padding-block: var(--space-5) var(--space-4);
}

.agency-constellation-hero h1 {
  max-width: 28ch;
  font-size: clamp(2rem, 4.2vw, 3.5rem);
  line-height: 1.02;
}

.agency-hero-meta {
  margin: var(--space-3) 0 0;
  color: var(--color-text-muted);
  font: 500 .8125rem/1.4 var(--font-label);
}

/* Reviewed statutory identity: the first-paint answer to "which body is this?".
   Static markup in the hero, so it survives with scripting unavailable. */
.institution-statutory-identity {
  margin: var(--space-3) 0 0;
  max-width: 62ch;
}

.institution-statutory-identity > p {
  margin: 0 0 var(--space-2);
}

.institution-statutory-kind {
  font-size: 1.0625rem;
}

.institution-statutory-kind-label {
  font-weight: 600;
}

.institution-statutory-basis,
.institution-statutory-distinction {
  color: var(--color-text-muted);
  font-size: .9375rem;
  line-height: 1.5;
}

.institution-statutory-history {
  margin: var(--space-2) 0 0;
}

.institution-statutory-history > summary {
  cursor: pointer;
  color: var(--color-text-muted);
  font-size: .9rem;
  min-height: 44px;
  display: flex;
  align-items: center;
}

.related-public-bodies {
  margin: var(--space-4) 0 0;
  min-width: 0;
  max-width: 62ch;
}

.related-public-bodies-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-3);
  min-width: 0;
}

.related-public-bodies-item {
  min-width: 0;
  overflow-wrap: anywhere;
}

.related-public-bodies-statement {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .35rem .6rem;
  min-width: 0;
}

.related-public-bodies-verb {
  font-weight: 650;
}

.related-public-bodies-link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  overflow-wrap: anywhere;
}

.related-public-bodies-explanation {
  margin: .2rem 0 0;
}

.related-public-bodies-source {
  margin: .35rem 0 0;
}

.related-public-bodies-source > summary {
  cursor: pointer;
  color: var(--color-text-muted);
  font-size: .9rem;
  min-height: 44px;
  display: flex;
  align-items: center;
}

.institution-statutory-correction-list,
.institution-statutory-sources {
  margin: 0;
  padding: 0;
  list-style: none;
}

.institution-statutory-correction {
  margin: 0 0 var(--space-3);
}

.institution-statutory-correction > p {
  margin: 0 0 var(--space-1);
  overflow-wrap: anywhere;
}

.institution-statutory-correction-meta {
  color: var(--color-text-muted);
  font-size: .875rem;
}

.institution-statutory-sources > li {
  margin: 0 0 var(--space-1);
}


.agency-hero-meta a {
  color: var(--color-action);
}

.agency-primary-actions {
  gap: var(--space-2);
  padding-block: var(--space-3);
  border-block-end: 0;
}

.agency-primary-actions .civic-object-action {
  min-height: 40px;
  padding: var(--space-2) var(--space-3);
}

.agency-primary-actions .agency-evidence-action {
  border-color: var(--color-border-strong);
}

.agency-connections {
  min-width: 0;
  margin: var(--space-2) 0 var(--space-5);
}

.agency-connections-heading {
  display: flex;
  min-width: 0;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-3);
  margin-block-end: var(--space-3);
}

.agency-connections-kicker {
  margin: 0 0 var(--space-1);
  color: var(--color-text-muted);
  font: 700 .72rem/1.3 var(--font-label);
  letter-spacing: .09em;
  text-transform: uppercase;
}

.agency-connections h2 {
  margin: 0;
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  line-height: 1.1;
}

.agency-connections-summary {
  margin: 0;
  color: var(--color-text-muted);
  font: 500 .8125rem/1.35 var(--font-label);
  text-align: end;
}

.agency-connection-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
  min-width: 0;
}

.agency-connection-card {
  min-width: 0;
  border-block-start: 3px solid var(--color-action);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  background: var(--color-surface);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--color-text) 10%, transparent);
}

.agency-connection-link {
  display: flex;
  min-width: 0;
  min-height: 116px;
  flex-direction: column;
  padding: var(--space-3) var(--space-4);
  color: inherit;
  text-decoration: none;
}

.agency-connection-link:hover,
.agency-connection-link:focus-visible {
  background: color-mix(in srgb, var(--color-action) 5%, var(--color-surface));
}

.agency-connection-link:focus-visible {
  outline: 3px solid var(--color-action);
  outline-offset: 2px;
}

.agency-connection-heading {
  display: flex;
  min-width: 0;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
}

.agency-connection-title {
  min-width: 0;
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.agency-connection-count {
  flex: 0 0 auto;
  color: var(--color-text-muted);
  font: 600 .75rem/1.3 var(--font-label);
  white-space: nowrap;
}

.agency-connection-relation {
  margin: var(--space-1) 0 var(--space-3);
  color: var(--color-text-muted);
  font: 500 .8125rem/1.35 var(--font-label);
}

.agency-connection-action {
  margin-block-start: auto;
  color: var(--color-action);
  font: 700 .8125rem/1.3 var(--font-label);
}

.agency-secondary-actions {
  margin-block-start: var(--space-4);
  padding-block: var(--space-4);
  border-block: 1px solid var(--color-border);
}

@media (max-width: 680px) {
  .agency-connections-heading {
    align-items: start;
    flex-direction: column;
    gap: var(--space-1);
  }

  .agency-connections-summary {
    text-align: start;
  }

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

.exam-status-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
  margin-block-start: var(--space-5);
  color: var(--color-text-soft);
  font-size: .9375rem;
}

.exam-status {
  display: inline-flex;
  min-height: 30px;
  align-items: center;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-action);
  border-radius: var(--radius-pill);
  color: var(--color-action);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.exam-status-closed,
.exam-status-canceled,
.exam-status-unscheduled {
  border-color: var(--color-border);
  color: var(--color-text-muted);
}

.node-actions,
.exam-actions,
.civic-object-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  padding-block: var(--space-5);
  border-block-end: 1px solid var(--color-border);
}

.node-action,
.exam-action,
.civic-object-action {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--color-action);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-action);
  cursor: pointer;
  font-size: .875rem;
  font-weight: 600;
  text-decoration: none;
}

.node-action.primary,
.exam-action.primary,
.civic-object-action.primary {
  background: var(--color-action);
  color: var(--color-surface);
}

.node-action:hover,
.node-action:focus-visible,
.exam-action:hover,
.exam-action:focus-visible,
.civic-object-action:hover,
.civic-object-action:focus-visible {
  filter: brightness(.97);
}

.more-tools {
  margin-block: var(--space-3) var(--space-5);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.more-tools > summary {
  cursor: pointer;
  font-size: .875rem;
  font-weight: 600;
  color: var(--color-text-muted);
  list-style: none;
}

.more-tools > summary::-webkit-details-marker {
  display: none;
}

.more-tools > summary:focus-visible {
  outline: 2px solid var(--color-focus, var(--color-action));
  outline-offset: 3px;
}

.more-tools-body {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  padding-block-start: var(--space-3);
  border-block-end: 0;
}

.ai-context-scope-action {
  display: inline-flex;
  align-items: center;
  margin-inline-start: var(--space-2);
}

.node-section,
.exam-section,
.civic-object-section {
  max-width: var(--measure);
  padding-block: var(--space-6);
  border-block-end: 1px solid var(--color-border);
}

.node-section h2,
.exam-section h2,
.civic-object-section h2 {
  margin: 0 0 var(--space-4);
  font-size: clamp(1.55rem, 3vw, 2.25rem);
  line-height: 1.1;
}

.node-section.procurement-process ol.procurement-process-events {
  margin: 0;
  padding-inline-start: 1.25rem;
  display: grid;
  gap: var(--space-3);
}

.node-section.procurement-process li {
  padding: 0;
}

.node-section.procurement-process summary {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  cursor: pointer;
  color: var(--color-action);
  font-weight: 600;
}

.node-section.procurement-process details p {
  margin: var(--space-2) 0 0;
}

/* Card-styled source groups on parcel / pack / digest documents. */
.civic-object-section[data-parcel-biography-domain],
.node-section.node-card,
.civic-object-section.node-card {
  max-width: var(--measure);
  margin-block: var(--space-4) 0;
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md, 8px);
  background: var(--color-surface);
  border-block-end: 1px solid var(--color-border);
}

.agency-fiscal-context {
  overflow: hidden;
}

.agency-fiscal-context-status,
.agency-fiscal-context-provenance p,
.agency-fiscal-context-rankings p {
  color: var(--ink-muted, #5d6672);
  line-height: 1.55;
}

.agency-fiscal-context-table-wrap {
  overflow-x: auto;
  margin: 1rem 0;
}

.agency-fiscal-context-table,
.agency-fiscal-context-rankings table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
  font-size: .9rem;
}

.agency-fiscal-context-table th,
.agency-fiscal-context-table td,
.agency-fiscal-context-rankings th,
.agency-fiscal-context-rankings td {
  padding: .65rem .75rem;
  border-bottom: 1px solid var(--line, #d9dee5);
  text-align: right;
  vertical-align: top;
  white-space: nowrap;
}

.agency-fiscal-context-table th:first-child,
.agency-fiscal-context-table td:first-child,
.agency-fiscal-context-rankings th:first-child,
.agency-fiscal-context-rankings td:first-child {
  text-align: left;
}

.agency-fiscal-context-table thead th,
.agency-fiscal-context-rankings thead th {
  color: var(--ink-muted, #5d6672);
  font-size: .78rem;
  letter-spacing: .02em;
  white-space: normal;
}

.agency-fiscal-context-unknown {
  color: var(--ink-muted, #5d6672);
  font-style: italic;
}

.agency-fiscal-context-provenance,
.agency-fiscal-context-rankings {
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid var(--line, #d9dee5);
}

.agency-fiscal-context-provenance h3,
.agency-fiscal-context-rankings h3 {
  margin: 0 0 .5rem;
  font-size: 1rem;
}

.agency-fiscal-context-provenance ul {
  margin: .5rem 0 0;
  padding-left: 1.2rem;
}

.civic-object-section[data-parcel-biography-domain] h2,
.node-section.node-card h2,
.civic-object-section.node-card h2 {
  margin-bottom: var(--space-3);
  font-size: clamp(1.25rem, 2.4vw, 1.65rem);
}

.civic-object-section ul,
.node-record-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-2);
}

.civic-object-section li,
.node-record-list > li {
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas);
}

.civic-object-section li a,
.node-record-list a {
  font-weight: 600;
  color: var(--color-action);
  text-decoration: none;
}

.civic-object-section li a:hover,
.civic-object-section li a:focus-visible,
.node-record-list a:hover,
.node-record-list a:focus-visible {
  text-decoration: underline;
}

.civic-object-section .muted,
.node-muted,
.exam-muted {
  color: var(--color-text-muted);
  font-size: .9375rem;
}

.civic-object-section .muted {
  display: block;
  margin-block-start: var(--space-1);
}

.board-coverage-note {
  max-width: var(--measure);
  margin-block: var(--space-4) 0;
  padding: var(--space-3) var(--space-4);
  border-inline-start: 3px solid var(--color-border);
}

/* Board task navigation and the next meeting are deliberately compact: the
   links remain native, wrap on narrow screens, and never widen the document. */
.board-section-menu,
.board-task-links {
  max-width: 100%;
  overflow-wrap: anywhere;
}

.board-section-menu {
  margin-block: var(--space-3);
  line-height: 1.7;
}

.board-next-meeting {
  margin-block-start: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-inline-start: 3px solid var(--color-accent, var(--color-border));
  background: var(--color-surface-raised, transparent);
}

.board-next-meeting p,
.board-next-meeting h3 {
  overflow-wrap: anywhere;
}

.board-next-meeting-label {
  margin: 0;
  font-weight: 700;
}

/* Month/List proceedings switch (CBICS-04). Native radios + `:has()` keep
   the switch fully usable with no JavaScript: both panels are real markup,
   and the unselected one is only ever hidden by CSS. */
.board-proceedings-view-switch {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  padding: 0;
  border: 0;
}

.board-proceedings-view-switch-legend {
  margin: 0 var(--space-2) 0 0;
  color: var(--color-text-soft);
  font: 600 .8125rem/1.4 var(--font-label);
  letter-spacing: .06em;
  text-transform: uppercase;
}

.board-proceedings-view-radio {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.board-proceedings-view-tab {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--color-border-strong);
  border-radius: 999px;
  background: var(--color-surface);
  color: var(--color-text-soft);
  font: 600 .8125rem/1.4 var(--font-label);
  cursor: pointer;
}

.board-proceedings-view-radio:checked + .board-proceedings-view-tab {
  border-color: var(--color-action);
  background: var(--cs-action-tint);
  color: var(--color-text);
}

.board-proceedings-view-radio:focus-visible + .board-proceedings-view-tab {
  outline: 2px solid var(--color-action);
  outline-offset: 2px;
}

.board-proceedings-panel-month {
  display: none;
}

.board-proceedings-view:has(.board-proceedings-view-radio-month:checked) .board-proceedings-panel-month {
  display: block;
}

.board-proceedings-view:has(.board-proceedings-view-radio-month:checked) .board-proceedings-panel-list {
  display: none;
}

@media print {
  .board-proceedings-view-switch {
    display: none;
  }

  .board-proceedings-panel-month,
  .board-proceedings-panel-list {
    display: block !important;
  }
}

.rulemaking-document .rulemaking-phases {
  display: grid;
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: rulemaking-phase;
}

.rulemaking-document .rulemaking-phase {
  counter-increment: rulemaking-phase;
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-inline-start: 4px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas);
}

.rulemaking-document .rulemaking-phase::before {
  content: counter(rulemaking-phase);
  display: inline-grid;
  width: 1.6rem;
  height: 1.6rem;
  margin-inline-end: var(--space-2);
  place-items: center;
  border-radius: 50%;
  background: var(--color-border);
  color: var(--color-text);
  font-weight: 700;
}

.rulemaking-document .rulemaking-phase-current {
  border-inline-start-color: var(--color-action);
}

.rulemaking-document .rulemaking-phase-current::before {
  background: var(--color-action);
  color: #fff;
}

.rulemaking-document .rulemaking-phase-heading {
  display: inline-flex;
  gap: var(--space-2);
  vertical-align: middle;
}

.rulemaking-document .rulemaking-phase-heading span {
  color: var(--color-text-muted);
}

.rulemaking-document .rulemaking-events {
  display: grid;
  gap: var(--space-2);
  margin: var(--space-3) 0 0;
  padding: 0;
  list-style: none;
}

.rulemaking-document .rulemaking-event {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-2);
  padding-block-start: var(--space-2);
  border-block-start: 1px solid var(--color-border);
}

.rulemaking-document .rulemaking-event span {
  color: var(--color-text-muted);
}

.rulemaking-document .rule-history {
  display: grid;
  gap: var(--space-3);
}

.rulemaking-document .rule-history-coverage,
.rulemaking-document .rule-history-missing,
.rulemaking-document .rule-history-event-meta,
.rulemaking-document .rule-history-basis-label {
  margin: 0;
  color: var(--color-text-muted);
  font-size: .9375rem;
  line-height: 1.5;
}

.rulemaking-document .rule-history-timeline {
  display: grid;
  gap: var(--space-3);
  position: relative;
  margin: 0;
  padding: 0 0 0 var(--space-5);
  list-style: none;
}

.rulemaking-document .rule-history-timeline::before {
  content: "";
  position: absolute;
  inset-block: .5rem;
  inset-inline-start: .55rem;
  width: 2px;
  height: calc(100% - 1rem);
  background: var(--color-border);
}

.rulemaking-document .rule-history-event {
  position: relative;
  display: grid;
  gap: var(--space-1);
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas);
}

.rulemaking-document .rule-history-event::before {
  content: "";
  position: absolute;
  inset-block-start: 1rem;
  inset-inline-start: calc(-1 * var(--space-5) + .18rem);
  width: .75rem;
  height: .75rem;
  border: 2px solid var(--color-canvas);
  border-radius: 50%;
  background: var(--color-action);
  box-shadow: 0 0 0 1px var(--color-border);
}

.rulemaking-document .rule-history-derived {
  border-style: dashed;
  background: var(--color-surface);
}

.rulemaking-document .rule-history-derived::before {
  background: var(--color-text-muted);
}

.rulemaking-document .rule-history-event-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
}

.rulemaking-document .rule-history-event-heading strong {
  flex: 1 1 12rem;
}

.rulemaking-document .rule-history-date {
  color: var(--color-text-muted);
  font-variant-numeric: tabular-nums;
}

.rulemaking-document .rule-history-marker {
  flex: 0 0 auto;
}

.rulemaking-document .rule-history-basis {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.rulemaking-document .rule-history-basis a {
  font-size: .9375rem;
}

.rule-petition-handoff {
  max-width: var(--measure);
  margin-block: var(--space-5);
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  border-inline-start: 4px solid var(--color-action);
  border-radius: var(--radius-md, 8px);
  background: var(--color-surface);
}

.rulemaking-document .rule-exception-modes {
  display: grid;
  gap: var(--space-3);
}

.rulemaking-document .rule-exception-modes h2,
.rulemaking-document .rule-exception-assertion h3,
.rulemaking-document .rule-exception-ordinary h3 {
  margin: 0;
}

.rulemaking-document .rule-exception-lede,
.rulemaking-document .rule-exception-date,
.rulemaking-document .rule-exception-source,
.rulemaking-document .rule-exception-ordinary p {
  margin: 0;
  max-width: 65ch;
  line-height: 1.55;
}

.rulemaking-document .rule-exception-assertion,
.rulemaking-document .rule-exception-ordinary {
  display: grid;
  gap: var(--space-2);
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.rulemaking-document .rule-exception-passage {
  margin: 0;
  padding-inline-start: var(--space-3);
  border-inline-start: 3px solid var(--color-border);
  line-height: 1.5;
}

.rulemaking-document .rule-exception-ordinary ul {
  margin: 0;
  padding-inline-start: 1.4rem;
}

.rule-petition-handoff h2 {
  margin-block: 0 var(--space-3);
  font-size: clamp(1.25rem, 2.4vw, 1.65rem);
}

.rule-petition-handoff p {
  max-width: 65ch;
  line-height: 1.55;
}

.rule-petition-steps {
  display: grid;
  gap: var(--space-3);
  margin-block: var(--space-4);
  padding-inline-start: 1.4rem;
}

.rule-petition-steps li {
  padding-inline-start: var(--space-1);
  line-height: 1.55;
}

.rule-petition-scaffold {
  margin-block: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas);
}

.rule-petition-scaffold summary {
  cursor: pointer;
  font-weight: 700;
}

.rule-petition-scaffold ul {
  margin-block: var(--space-3) 0;
}

.rule-petition-contact,
.rule-petition-outcomes {
  color: var(--color-text-muted);
}

/* The receiving body and the scope note carry the difference between an exact
   institution target and the City's general guidance, so they read as their own
   line rather than as body prose. */
.rule-petition-receiving-body {
  margin-block: var(--space-3);
  padding: var(--space-3);
  border-inline-start: 3px solid var(--color-action);
  background: var(--color-canvas);
  border-radius: var(--radius-sm);
}

.rule-petition-scope {
  color: var(--color-text-muted);
}

/* A role-edge record's metadata line carries source receipts and vintages:
   long, colon-joined tokens with no natural break opportunity, which pushed the
   whole document sideways at narrow widths. */
.agency-role-edge-record,
.agency-role-edge-record .node-record-main,
.agency-role-edge-record .node-muted {
  min-width: 0;
  overflow-wrap: anywhere;
}

.rulemaking-document .rule-version-diff,
.rulemaking-document .rule-change-evidence {
  display: grid;
  gap: var(--space-3);
  margin-block: var(--space-4);
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.rulemaking-document .rule-version-diff h3,
.rulemaking-document .rule-change-evidence h3,
.rulemaking-document .rule-version-diff h4 {
  margin: 0;
}

.rulemaking-document .rule-version-diff-state,
.rulemaking-document .rule-version-diff-summary,
.rulemaking-document .rule-version-diff-navigation,
.rulemaking-document .rule-version-diff-source,
.rulemaking-document .rule-change-evidence p {
  margin: 0;
  line-height: 1.5;
}

.rulemaking-document .rule-version-diff[data-diff-state="unavailable"] {
  border-style: dashed;
}

.rulemaking-document .rule-version-diff-regions {
  display: grid;
  gap: var(--space-3);
  margin: 0;
  padding-inline-start: 1.5rem;
}

.rulemaking-document .rule-version-diff-region {
  display: grid;
  gap: var(--space-2);
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas);
}

.rulemaking-document .rule-version-diff-columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
}

.rulemaking-document .rule-version-diff-columns > div {
  min-width: 0;
}

.rulemaking-document .rule-version-diff-text {
  margin: 0;
  padding: var(--space-2);
  overflow-wrap: anywhere;
  line-height: 1.5;
}

.rulemaking-document .rule-version-diff-removed {
  border-inline-start: 3px solid #a33;
  background: color-mix(in srgb, #a33 8%, var(--color-canvas));
}

.rulemaking-document .rule-version-diff-added {
  border-inline-start: 3px solid #287a4b;
  background: color-mix(in srgb, #287a4b 8%, var(--color-canvas));
}

.rulemaking-document .rule-version-diff-source {
  font-size: .9375rem;
}

@media (max-width: 640px) {
  .rulemaking-document .rule-version-diff-columns {
    grid-template-columns: 1fr;
  }
}

.legislative-matter-document .matter-appearance {
  margin-block: var(--space-5);
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md, 8px);
  background: var(--color-surface);
}

.legislative-matter-document .matter-appearance-head h3 {
  margin: 0 0 var(--space-2);
  font-size: clamp(1.2rem, 2.4vw, 1.55rem);
  line-height: 1.15;
}

.legislative-matter-document .matter-appearance-links,
.legislative-matter-document .matter-committee,
.legislative-matter-document .matter-vote-tally,
.legislative-matter-document .matter-vote-count {
  margin-block: var(--space-2) 0;
  color: var(--color-text-soft);
}

.legislative-matter-document .matter-committee-note {
  display: block;
  margin-block-start: var(--space-1);
}

.legislative-matter-document .matter-appearance .node-section {
  margin-block: var(--space-4) 0;
  padding-block: var(--space-4) 0;
  border-block-end: 0;
}

.legislative-matter-document .matter-appearance .node-section h2 {
  margin-block-end: var(--space-3);
  font-size: 1.2rem;
}

.legislative-matter-document .matter-vote-list {
  margin-block-start: var(--space-3);
}

/* Notice bitemporal history: keep the two clocks visually parallel and explicit. */
.civic-time-history-lede {
  margin: 0 0 var(--space-4);
  color: var(--color-text-soft);
  font-size: .9375rem;
}
.civic-time-event-list {
  display: grid;
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}
.civic-time-event {
  min-width: 0;
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas);
}
.civic-time-event-title {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  min-width: 0;
  overflow-wrap: anywhere;
}
.civic-time-status {
  color: var(--color-text-muted);
  font-size: .8125rem;
}
.civic-time-clocks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
  margin: var(--space-3) 0 0;
}
.civic-time-clocks > div { min-width: 0; }
.civic-time-clocks dt {
  color: var(--color-text-muted);
  font: 700 .6875rem/1.3 var(--font-label);
  letter-spacing: .08em;
}
.civic-time-clocks dd {
  min-width: 0;
  margin: var(--space-1) 0 0;
  overflow-wrap: anywhere;
  font: 500 .875rem/1.4 var(--font-label);
}
.civic-time-history-empty {
  margin: 0;
  color: var(--color-text-muted);
}
@media (max-width: 600px) {
  .civic-time-clocks { grid-template-columns: minmax(0, 1fr); }
}

/* Civic Time Ledger as-of panel — compact valid-time filter. */
.ctl-panel {
  background: var(--color-surface);
  padding-block: var(--space-3);
}

.ctl-head {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  margin: 0 0 var(--space-1);
}

.ctl-head h2 {
  margin: 0;
  font-size: 1.05rem;
}

.ctl-how {
  position: relative;
  margin: 0;
}

.ctl-how > summary {
  list-style: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  color: var(--color-text-muted);
  font: 600 .75rem/1 ui-sans-serif, system-ui, sans-serif;
  user-select: none;
}

.ctl-how > summary::-webkit-details-marker {
  display: none;
}

.ctl-how[open] > summary {
  border-color: var(--color-action);
  color: var(--color-action);
}

.ctl-how > p {
  margin: var(--space-2) 0 0;
  max-width: 48ch;
  color: var(--color-text-muted);
  font-size: .875rem;
  line-height: 1.4;
}

.ctl-lede {
  margin: 0 0 var(--space-2);
  max-width: 48ch;
  color: var(--color-text-muted);
  font-size: .9375rem;
  line-height: 1.35;
}

.ctl-form {
  display: grid;
  gap: var(--space-1);
  margin-block-end: var(--space-2);
}

.ctl-label {
  font-weight: 600;
  font-size: 0.8125rem;
  color: var(--color-text-muted);
}

.ctl-form-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
}

.ctl-input {
  min-height: 2.25rem;
  padding: 0.35rem 0.6rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm, 6px);
  background: var(--color-canvas);
  color: var(--color-text);
  font: inherit;
}

.ctl-input:focus-visible {
  outline: 2px solid var(--color-action);
  outline-offset: 2px;
}

.ctl-comparison {
  margin: 0;
  font-size: .9375rem;
  line-height: 1.4;
}

.ctl-arrived {
  margin: var(--space-2) 0 0;
}

.ctl-arrived summary {
  cursor: pointer;
  font-weight: 600;
  font-size: .875rem;
  color: var(--color-action);
}

.ctl-arrived-list {
  margin-block-start: var(--space-2);
}

@media (max-width: 680px) {
  .ctl-form-row {
    flex-direction: column;
    align-items: stretch;
  }

  .ctl-input,
  .ctl-form-row .node-action {
    width: 100%;
  }
}

.exam-facet-pivot-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.exam-facet-pivot-item {
  display: inline-grid;
  gap: var(--space-1);
  justify-items: start;
}

.exam-facet-value {
  font-size: 12px;
}

.exam-facet-pivot {
  display: inline-flex;
  gap: var(--space-2);
  align-items: baseline;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  padding: 7px 10px;
  color: var(--color-text);
  text-decoration: none;
  font: 600 12px/1.25 ui-sans-serif, system-ui, sans-serif;
}

.exam-facet-pivot:hover,
.exam-facet-pivot:focus-visible {
  border-color: var(--color-action);
  color: var(--color-action);
  background: var(--color-surface-alt, var(--color-canvas-subtle));
}

.exam-facet-pivot.unknown {
  border-style: dashed;
  color: var(--color-text-muted);
}

.exam-title-code-family {
  border-block-start: 2px solid var(--color-action);
}

.exam-title-family-lede {
  max-width: 72ch;
  margin: 0 0 var(--space-3);
  color: var(--color-text-soft);
}

.exam-title-family-lede code {
  color: var(--color-text);
  font: 600 .95em/1.2 ui-monospace, SFMono-Regular, Menlo, monospace;
}

.exam-title-family-marker {
  color: var(--color-text-muted);
  font: 600 .72rem/1 var(--font-label);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.exam-title-family-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-3);
}

.exam-title-family-link {
  padding: .45rem .65rem;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
}

.exam-title-family-link:hover,
.exam-title-family-link:focus-visible {
  border-color: var(--color-action);
  background: var(--color-surface-alt, var(--color-canvas-subtle));
}

.exam-facts,
.exam-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
  margin: 0;
}

.exam-facts > div,
.exam-metrics > div {
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
}

.exam-facts dt,
.exam-metrics dt {
  color: var(--color-text-muted);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.exam-facts dd,
.exam-metrics dd {
  margin: var(--space-1) 0 0;
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 600;
}

.exam-summary {
  margin-block-start: var(--space-4);
  color: var(--color-text-soft);
}

.exam-prediction-claim {
  margin: 0;
  font-size: 1.2rem;
}

.exam-prediction-window {
  color: var(--color-text-soft);
}

.exam-note {
  padding: var(--space-3);
  border-inline-start: 4px solid var(--color-caution);
  color: var(--color-text-soft);
  font-size: .9375rem;
}

.exam-process-list {
  display: grid;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.exam-process-step {
  display: grid;
  grid-template-columns: minmax(9rem, 1fr) minmax(12rem, 1.4fr) auto auto;
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-3);
  border-inline-start: 4px solid var(--color-border);
  background: var(--color-surface);
  font-size: .9rem;
}

.exam-process-step.done {
  border-inline-start-color: var(--color-action);
}

.exam-process-step span {
  color: var(--color-text-soft);
}

.exam-process-step a {
  font-weight: 600;
}

.exam-provenance ul,
.civic-object-section[data-export-class="object_provenance"] ul {
  padding-inline-start: var(--space-5);
}

.node-footer,
.exam-footer,
.civic-object-footer {
  padding-block: var(--space-6);
  color: var(--color-text-muted);
  font-size: .875rem;
}

/* Evidence-bearing edge provenance — subtle warrant chips + inspector */
.edge-summary-freshness{display:inline-flex;gap:.35rem;margin-inline-start:.5rem;vertical-align:middle;font-size:.68rem;font-weight:500;letter-spacing:0;text-transform:none}
.edge-summary-as-of{display:inline-flex;align-items:center;border:1px solid var(--color-border);border-radius:999px;padding:1px 6px;color:var(--color-text-muted);font-size:.68rem;font-weight:500;line-height:1.2;white-space:nowrap}
.node-record-why {
  display: inline;
  margin: 0;
}

.edge-prov-why {
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
  margin-inline-start: .35rem;
  padding: 1px 6px;
  border: 1px solid color-mix(in srgb, var(--color-border) 80%, transparent);
  border-radius: 999px;
  background: transparent;
  color: var(--color-text-muted);
  font: 500 .6875rem/1.2 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .02em;
  text-decoration: none;
  text-transform: lowercase;
}

.edge-prov-why:hover,
.edge-prov-why:focus-visible {
  border-color: var(--color-action);
  color: var(--color-action);
  text-decoration: none;
}

.edge-prov-why[aria-current="true"] {
  border-color: var(--color-action);
  color: var(--color-action);
  background: color-mix(in srgb, var(--color-action) 8%, var(--color-canvas));
}

.edge-prov-confidence {
  font-variant-numeric: tabular-nums;
}

.edge-prov-why-review,
.edge-prov-cross-spine-review .edge-prov-cross-spine-token {
  color: var(--color-caution, #8a5a00);
}

.edge-prov-why-unmatched,
.edge-prov-cross-spine-unmatched .edge-prov-cross-spine-token {
  color: var(--color-text-muted);
}

.edge-prov-panel .edge-prov-panel-body {
  margin-block-start: var(--space-3);
}

.edge-prov-inspector {
  display: grid;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

.edge-prov-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  cursor: pointer;
  list-style: none;
}

.edge-prov-summary::-webkit-details-marker { display: none; }
.edge-prov-summary::before { content: "＋"; color: var(--color-text-muted); }
.edge-prov-inspector[open] .edge-prov-summary::before { content: "−"; }
.edge-prov-summary:focus-visible { outline: 2px solid var(--color-focus,var(--color-action)); outline-offset: 3px; }

.edge-prov-kicker {
  margin: 0 0 var(--space-1);
  color: var(--color-action);
  font: 700 .75rem/1.3 var(--font-label);
  letter-spacing: .1em;
  text-transform: uppercase;
}

.edge-prov-object {
  margin: 0;
  min-width: 0;
  font-size: 1rem;
  font-weight: 600;
  overflow-wrap: anywhere;
}

.edge-prov-meta {
  margin: var(--space-1) 0 0;
}

.edge-prov-warrants {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0;
}

.edge-prov-warrant,
.edge-prov-stance,
.edge-prov-confidence {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--color-border);
  font: 700 .75rem/1.3 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .02em;
}

.edge-prov-confidence-confirmed { border-color: color-mix(in srgb, var(--color-action) 45%, var(--color-border)); color: var(--color-action); }
.edge-prov-confidence-review { border-style: dashed; border-color: var(--color-caution, #8a5a00); color: var(--color-caution, #8a5a00); }
.edge-prov-confidence-unmatched { border-style: dotted; color: var(--color-text-muted); }

.edge-prov-warrant-exact {
  border-color: color-mix(in srgb, var(--color-action) 45%, var(--color-border));
  background: color-mix(in srgb, var(--color-action) 10%, var(--color-canvas));
  color: var(--color-action);
}

.edge-prov-warrant-probabilistic {
  border-style: dashed;
  border-color: var(--color-caution, #8a5a00);
  background: color-mix(in srgb, var(--color-caution, #8a5a00) 10%, var(--color-canvas));
  color: var(--color-text);
}

.edge-prov-warrant-reviewed {
  border-color: color-mix(in srgb, var(--color-action) 30%, var(--color-border));
  background: var(--color-canvas);
}

.edge-prov-warrant-not_yet_classified {
  border-style: dotted;
  color: var(--color-text-muted);
}

.edge-prov-cross-spine {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  font: 700 .75rem/1.3 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: .02em;
}

.edge-prov-cross-spine-confirmed {
  border-color: color-mix(in srgb, var(--color-action) 40%, var(--color-border));
  color: var(--color-action);
}

.edge-prov-cross-spine-review {
  border-style: dashed;
  border-color: var(--color-caution, #8a5a00);
  color: var(--color-caution, #8a5a00);
}

.edge-prov-cross-spine-unmatched {
  border-style: dotted;
  color: var(--color-text-muted);
}

.edge-prov-boundary { margin: 0; color: var(--color-text-muted); font-size: .8rem; line-height: 1.4; }

.edge-prov-as-of { display: inline-flex; align-items: center; margin-block-end: var(--space-2); border: 1px solid var(--color-border); border-radius: 999px; padding: 1px 6px; color: var(--color-text-muted); font-size: .68rem; line-height: 1.2; white-space: nowrap; }

.edge-prov-detail { display: grid; gap: var(--space-3); }

.edge-prov-how { margin: 0; color: var(--color-text-muted); font-size: .875rem; line-height: 1.45; }
.edge-prov-technical-details { border-top: 1px solid var(--color-border); padding-top: var(--space-2); }
.edge-prov-technical-details summary { cursor: pointer; color: var(--color-text-muted); font-size: .8rem; }

/* Long agency mandate and rule inventories stay compact while remaining keyboard-scrollable. */
.mandate-predictions-list,
.mandate-rules-mandates,
.mandate-rules-filings,
.mandate-reports-mandates,
.mandate-meetings-list,
.mandate-land-use-list {
  max-block-size: 28rem;
  overflow-y: auto;
  padding-inline-end: .25rem;
  scrollbar-gutter: stable;
}

.edge-prov-honesty {
  padding: var(--space-3);
  border-inline-start: 4px solid var(--color-action);
  background: color-mix(in srgb, var(--color-action) 6%, var(--color-canvas));
  font-size: .9375rem;
  line-height: 1.5;
}

.edge-prov-honesty.is-possible {
  border-inline-start-color: var(--color-caution, #8a5a00);
  background: color-mix(in srgb, var(--color-caution, #8a5a00) 8%, var(--color-canvas));
}

.edge-prov-honesty p {
  margin: 0;
}

.edge-prov-honesty p + p {
  margin-block-start: var(--space-2);
}

.edge-prov-block h3 {
  margin: 0 0 var(--space-2);
  font-size: 1rem;
}

.edge-prov-dl {
  display: grid;
  gap: var(--space-2);
  margin: 0;
}

.edge-prov-row {
  display: grid;
  grid-template-columns: minmax(7rem, 10rem) minmax(0, 1fr);
  gap: var(--space-2) var(--space-3);
  padding: var(--space-2) 0;
  border-block-end: 1px solid var(--color-border);
  font-size: .9375rem;
}

.edge-prov-row dt {
  margin: 0;
  color: var(--color-text-muted);
  font-weight: 700;
  font-size: .75rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.edge-prov-row dd {
  margin: 0;
  overflow-wrap: anywhere;
}

.edge-prov-missing {
  font-style: italic;
}

.edge-prov-share {
  margin: 0;
}

.edge-prov-empty {
  padding: var(--space-4);
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-sm);
}

@media (max-width: 560px) {
  .edge-prov-row {
    grid-template-columns: 1fr;
    gap: 2px;
  }
}

@media print {
  .document-mast,
  .node-back,
  .exam-back,
  .node-actions,
  .exam-actions,
  .civic-object-actions,
  .node-footer,
  .exam-footer,
  .civic-object-footer,
  .skip {
    display: none !important;
  }

  .node-document,
  .exam-document,
  .civic-object-document {
    max-width: none;
    padding-inline: 0;
  }

  .node-section,
  .exam-section,
  .civic-object-section,
  .node-hero,
  .exam-hero,
  .civic-object-hero {
    break-inside: avoid;
  }

  a {
    color: inherit;
  }
}


.near-hero,
.following-hero {
  padding-block: var(--space-8) var(--space-6);
}

.near-hero h1,
.following-hero h1 {
  max-width: var(--measure);
  margin: 0 0 var(--space-3);
  font-size: clamp(2.2rem, 6vw, 4rem);
  font-weight: 600;
  line-height: .95;
  letter-spacing: -.035em;
}

.near-hero > p,
.following-hero > p {
  max-width: var(--measure);
  margin-block: 0;
  color: var(--color-text-soft);
  font-size: 1.125rem;
  line-height: 1.55;
}

.near-kicker,
.following-kicker {
  margin: 0 0 var(--space-2);
  color: var(--color-action);
  font: 700 .8125rem/1.4 var(--font-label);
  letter-spacing: .12em;
  text-transform: uppercase;
}

.near-scope,
.following-scope ul {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  padding: 0;
  list-style: none;
}

.near-scope {
  margin: var(--space-5) 0;
}

.near-scope li,
.following-scope li {
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  color: var(--color-text-soft);
  font: 600 .8125rem/1.2 var(--font-label);
}

.near-scope li {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.near-scope li a {
  color: inherit;
  font-size: 1.1em;
  line-height: 1;
  text-decoration: none;
}

.near-board-link {
  margin-block: calc(var(--space-2) * -1) var(--space-3) !important;
  font: 600 .95rem/1.4 var(--font-interface);
}

.near-board-link a {
  color: var(--color-action);
}

.near-explore,
.near-advanced {
  margin-block: var(--space-4);
  border-block: 1px solid var(--color-border);
}

.near-explore > summary,
.near-advanced > summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  cursor: pointer;
  color: var(--color-action);
  font: 700 .9rem/1.3 var(--font-interface);
}

.near-explore .walk-entry,
.near-advanced .near-form {
  margin-block: var(--space-3) var(--space-4);
}

.near-actions,
.near-place-actions,
.following-hero nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}

.following-hero nav {
  margin-block-start: var(--space-5);
}

.near-actions a,
.near-place-actions a,
.near-place-actions button,
.following-hero nav a,
.following-pack > a,
.matter-follow-link {
  display: inline-flex;
  min-height: 44px;
  min-width: 44px;
  align-items: center;
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--color-action);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-action);
  font: 600 .875rem/1.3 var(--font-interface);
  text-decoration: none;
  max-width: 100%;
  box-sizing: border-box;
}

.near-actions a:hover,
.near-place-actions a:hover,
.near-place-actions button:hover,
.following-hero nav a:hover,
.following-pack > a:hover,
.matter-follow-link:hover {
  border-color: var(--color-action-hover);
  color: var(--color-action-hover);
}

.matter-watch-summary,
.matter-document-follow,
.meeting-matter-follow {
  margin-block: var(--space-3);
}

.matter-watch-source {
  margin-block-start: var(--space-3);
}

.matter-watch-source summary {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  cursor: pointer;
}

.matter-watch-update {
  margin-block: var(--space-3);
}

.matter-watch-update .matter-follow-link {
  display: inline-flex;
  min-height: 44px;
  min-width: 44px;
  align-items: center;
  padding: 0.5rem 1rem;
}

.matter-coverage-state,
.matter-current-action,
.matter-watch-failed-confirmation,
.matter-watch-unsupported,
.matter-watch-stale {
  margin-block: var(--space-3);
}

.matter-coverage-state[data-matter-current-coverage="false"],
.matter-watch-failed-confirmation,
.matter-watch-unsupported {
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
}

.near-form,
.following-create {
  border-block: 1px solid var(--color-border);
}

.near-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  padding-block: var(--space-5) var(--space-6);
}

.near-place-guide {
  padding-block: var(--space-5);
  border-block: 1px solid var(--color-border);
  background: var(--color-surface);
}

.near-place-guide h2 {
  margin: 0 0 var(--space-2);
  font-size: clamp(1.5rem, 3vw, 2.2rem);
  font-weight: 600;
  line-height: 1.1;
}

.near-place-guide > p:not(.near-kicker, .near-map-status) {
  max-width: var(--measure);
  margin-block: 0 var(--space-4);
  color: var(--color-text-soft);
}

.near-location-action {
  cursor: pointer;
}

.near-form label,
.following-form label,
.following-subscribe label {
  display: grid;
  gap: var(--space-2);
  color: var(--color-text-soft);
  font: 600 .8125rem/1.4 var(--font-label);
  letter-spacing: .06em;
  text-transform: uppercase;
}

.near-form input,
.near-form select,
.following-form input,
.following-form select,
.following-subscribe input {
  min-width: 0;
  width: 100%;
  min-height: 46px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  font: 1rem/1.3 var(--font-interface);
}

.following-availability {
  grid-column: 1 / -1;
  margin: var(--space-4) 0 0;
  padding: var(--space-4);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface-muted);
}

.following-availability legend,
.following-availability-custom legend {
  padding-inline: var(--space-2);
  color: var(--color-text);
  font: 700 .875rem/1.3 var(--font-label);
}

.following-availability-lead,
.following-availability-summary,
.following-availability-result {
  margin: 0 0 var(--space-3);
  color: var(--color-text-soft);
  font: .875rem/1.5 var(--font-interface);
}

.following-availability-options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-2);
}

.following-availability-option {
  display: flex !important;
  grid-template-columns: auto minmax(0, 1fr) !important;
  align-items: start;
  gap: var(--space-2) !important;
  min-height: 46px;
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  text-transform: none !important;
  letter-spacing: normal !important;
}

.following-availability-option input {
  width: auto;
  min-height: 1rem;
  margin-block-start: .2rem;
}

.following-availability-option span {
  display: grid;
  gap: .2rem;
}

.following-availability-option small {
  color: var(--color-text-soft);
  font: .8125rem/1.35 var(--font-interface);
}

.following-availability-custom {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-3);
  margin-block-start: var(--space-3);
  padding-block-start: var(--space-3);
  border-block-start: 1px solid var(--color-border);
}

.following-availability-custom[hidden] { display: none; }
.following-availability-custom > fieldset { min-width: 0; border: 0; padding: 0; }
.following-availability-days { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.following-availability-days label { display: flex !important; grid-template-columns: auto auto !important; align-items: center; text-transform: none !important; letter-spacing: normal !important; }
.following-availability-days input { width: auto; min-height: 1rem; }
.following-availability-times { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); }
.following-availability-result { padding-block: var(--space-2); border-block: 1px solid var(--color-border); }

@media (max-width: 680px) {
  .following-availability-options,
  .following-availability-custom { grid-template-columns: minmax(0, 1fr); }
}

.near-form button,
.following-form button,
.following-subscribe button {
  min-height: 46px;
  align-self: end;
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--color-action);
  border-radius: var(--radius-sm);
  background: var(--color-action);
  color: var(--color-surface);
  font: 600 .875rem/1.3 var(--font-interface);
  cursor: pointer;
}

.near-form button:hover,
.following-form button:hover,
.following-subscribe button:hover {
  border-color: var(--color-action-hover);
  background: var(--color-action-hover);
}

.near-map-status,
.following-form [role="status"] {
  grid-column: 1 / -1;
  margin: 0;
}

.near-coverage,
.following-warning {
  border-color: var(--cs-caution-border);
  background: var(--cs-caution-tint);
  color: var(--color-text-soft);
}

.near-coverage {
  margin-block-start: var(--space-5);
  padding-block: var(--space-4);
  border-block-width: 1px;
  border-block-style: solid;
}

.near-map-section,
.near-results,
.near-bags,
.near-overview,
.following-packs,
.following-suggestions {
  padding-block: var(--space-7);
}

.near-section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-5);
  margin-block-end: var(--space-4);
}

.near-section-heading h2,
.near-bags h2,
.following-create h2,
.following-packs > h2,
.following-privacy h2,
.following-personal h2,
.following-scope h2,
.following-preview h2,
.following-subscribe h2 {
  margin: 0 0 var(--space-4);
  font-size: clamp(1.6rem, 4vw, 2.35rem);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -.02em;
}

.near-map-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(270px, .55fr);
  gap: var(--space-5);
  align-items: start;
}

.near-map-grid > .near-map-state {
  min-width: 0;
  margin-block: var(--space-2) 0;
}

.near-map-wrap,
.near-area-panel,
.near-results,
.near-bag,
.following-explainer article,
.following-scope,
.following-preview,
.following-subscribe,
.following-suggestions,
.following-pack,
.following-privacy,
.following-personal {
  min-width: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  box-shadow: var(--shadow);
}

.near-map-wrap {
  padding: var(--space-4);
}

.near-map-wrap svg {
  display: block;
  width: 100%;
  height: min(62vh, 620px);
}

.map-district {
  stroke: var(--color-surface);
  stroke-width: 1.4;
  vector-effect: non-scaling-stroke;
  cursor: pointer;
  transition: opacity .12s, stroke-width .12s;
}

.map-district:is(:hover, :focus, .is-linked) {
  opacity: .78;
  stroke: var(--color-text);
  stroke-width: 3;
}

.map-label {
  pointer-events: none;
  font-family: var(--font-interface);
  font-size: 13px;
  font-weight: 750;
  letter-spacing: .01em;
  paint-order: stroke fill;
  stroke-linejoin: round;
  stroke-width: 4px;
}

.map-label-borough {
  font-family: var(--font-display);
  font-size: 21px;
  font-weight: 700;
}

.map-label--dark {
  fill: var(--color-map-label-dark);
  stroke: rgba(255, 255, 255, .92);
}

.map-label--light {
  fill: var(--color-surface);
  stroke: rgba(19, 36, 82, .92);
}

.map-label.is-linked {
  font-weight: 850;
  stroke-width: 6px;
}

.map-controls {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.map-controls button {
  min-width: 44px;
  min-height: 44px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
}

.map-legend,
.near-vintage,
.near-area-panel p,
.near-bags > p,
.near-bag > p,
.following-explainer p,
.following-pack p,
.following-pack li,
.following-suggestions p,
.following-suggestions li,
.following-scope p,
.following-preview p,
.following-subscribe p,
.following-privacy p,
.following-personal p {
  color: var(--color-text-muted);
  font: .9375rem/1.55 var(--font-body);
}

.map-legend span {
  display: inline-block;
  width: 70px;
  height: 10px;
  border: 1px solid var(--color-border);
  background: linear-gradient(90deg, var(--color-canvas-subtle), var(--cs-action-tint-border), var(--color-brand));
}

.near-area-panel,
.following-explainer article,
.following-scope,
.following-preview,
.following-subscribe,
.following-suggestions,
.following-pack,
.following-privacy,
.following-personal {
  padding: var(--space-5);
}

.following-suggestions {
  margin-block: var(--space-5);
}

.following-suggestions > h2 {
  margin-block-end: var(--space-2);
}

.following-suggestion-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
  margin: var(--space-5) 0;
  padding: 0;
  list-style: none;
}

.following-suggestion {
  display: flex;
  min-width: 0;
  flex-direction: column;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas-subtle);
}

.following-suggestion h3 {
  margin: 0 0 var(--space-2);
  font-size: 1.05rem;
}

.following-suggestion p {
  margin: 0;
}

.following-suggestion-link {
  align-self: flex-start;
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-action);
  border-radius: var(--radius-sm);
  color: var(--color-action);
  font: 600 .875rem/1.3 var(--font-interface);
  text-decoration: none;
}

.following-suggestion-link:hover {
  border-color: var(--color-action-hover);
  color: var(--color-action-hover);
}

.following-suggestion-note,
.following-pack-lead {
  max-width: 68ch;
}

@media (max-width: 680px) {
  .following-suggestion-list {
    grid-template-columns: minmax(0, 1fr);
  }
}

.near-area-panel h3,
.following-explainer h2,
.following-pack h3 {
  margin: 0 0 var(--space-2);
  font-weight: 600;
}

.near-area-directory-filter {
  display: grid;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
}
.near-area-directory-filter-row {
  display: flex;
  gap: var(--space-2);
  align-items: stretch;
}
.near-area-directory-filter input,
.near-area-directory-filter button {
  box-sizing: border-box;
  min-height: var(--control-min-size, 2.75rem);
  min-width: var(--control-min-size, 2.75rem);
}
.near-area-directory-filter input {
  flex: 1 1 auto;
  width: 100%;
}
.near-area-directory-summary,
.near-area-directory-empty,
.near-area-special-use-note {
  margin: 0 0 var(--space-2);
  color: var(--color-ink-muted, #4a5a61);
  font-size: 0.95rem;
}
.near-area-directory-empty {
  color: var(--color-ink, #202c32);
}
.near-area-directory-groups {
  display: grid;
  gap: var(--space-3);
}
.near-area-borough-group h4,
.near-area-borough {
  margin: 0 0 var(--space-2);
  font-size: 1rem;
}
.near-area-directory-list,
.near-area-special-use {
  margin-top: var(--space-3);
}
.near-area-directory-list > summary,
.near-area-special-use > summary {
  cursor: pointer;
  box-sizing: border-box;
  min-height: var(--control-min-size, 2.75rem);
  display: flex;
  align-items: center;
  padding-block: 0.65rem;
}
.near-area-list {
  max-height: 560px;
  margin: var(--space-4) 0 0;
  padding: 0;
  overflow: auto;
  border-block-start: 1px solid var(--color-border);
  list-style: none;
}

.near-area-list a {
  display: flex;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-1);
  border-block-end: 1px solid var(--color-border);
  color: var(--color-text-soft);
  font: 600 .9375rem/1.35 var(--font-interface);
  text-decoration: none;
}

.near-area-list a:is(:hover, :focus, .is-linked) {
  background: var(--cs-action-tint);
  color: var(--color-action-hover);
  outline: 2px solid var(--color-action);
  outline-offset: -2px;
}

.near-results {
  padding-inline: clamp(var(--space-4), 4vw, var(--space-6));
}

.near-records {
  display: grid;
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.near-record {
  padding-block: var(--space-4);
  border-block-start: 1px solid var(--color-border);
}

.near-record-title {
  color: var(--color-text);
  font-weight: 600;
}

.near-record-title-link {
  color: inherit;
  text-decoration-color: var(--color-border);
  text-underline-offset: 3px;
}

.near-record-title-link:focus-visible {
  outline: 3px solid var(--color-focus, var(--color-action));
  outline-offset: 3px;
  border-radius: 2px;
}

/* Progressive enhancement: static title link until inspection binds; then
   title-sized inspect plus a separately named full-record link. Geographic
   evidence stays inside the inspection dialog, not the default card. */
.near-record-inspect,
.near-record-full-record {
  display: none;
}

[data-near-you-record-inspection-ready] .near-record-title-link {
  display: none;
}

[data-near-you-record-inspection-ready] .near-record-inspect {
  display: inline;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: var(--color-border);
  text-underline-offset: 3px;
  min-height: 44px;
}

[data-near-you-record-inspection-ready] .near-record-inspect:focus-visible {
  outline: 3px solid var(--color-focus, var(--color-action));
  outline-offset: 3px;
  border-radius: 2px;
}

[data-near-you-record-inspection-ready] .near-record-full-record {
  display: inline-block;
  margin-block-start: 2px;
  color: var(--color-action);
  font: 700 .75rem/1.3 var(--font-interface);
  text-underline-offset: 3px;
}

[data-near-you-record-inspection-ready] .near-record-full-record:focus-visible {
  outline: 3px solid var(--color-focus, var(--color-action));
  outline-offset: 3px;
  border-radius: 2px;
}

.near-record-actions {
  margin-block-start: var(--space-2);
}

.near-record-uncertainty {
  margin-block-start: var(--space-1);
  color: var(--color-text-muted);
  font: .75rem/1.4 var(--font-interface);
}

.near-you-record-inspection-dialog {
  max-width: min(520px, calc(100vw - 32px));
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  background: var(--color-surface);
  color: var(--color-text);
  box-shadow: var(--shadow);
}

.near-you-record-inspection-dialog::backdrop {
  background: rgba(20, 28, 34, .42);
}

.near-you-record-inspection-inner {
  padding: 16px 16px 18px;
}

.near-you-record-inspection-close {
  float: right;
  min-height: 44px;
  min-width: 44px;
  margin: 0 0 8px 8px;
  padding: 6px 12px;
  border: 1px solid var(--color-border);
  border-radius: 7px;
  background: var(--color-surface-2);
  color: var(--color-text);
  font: 700 .75rem/1.2 var(--font-interface);
  cursor: pointer;
}

.near-you-record-inspection-kicker {
  margin: 0 0 4px;
  color: var(--color-text-muted);
  font: 700 .625rem/1.2 var(--font-interface);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.near-you-record-inspection-title {
  margin: 0 48px 10px 0;
  font: 700 1.375rem/1.15 var(--font-display, var(--font-reading));
  overflow-wrap: anywhere;
}

.near-you-record-inspection-facts {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
}

.near-you-record-inspection-row {
  display: grid;
  grid-template-columns: minmax(0, 9.5rem) minmax(0, 1fr);
  gap: 6px 10px;
  margin: 0;
}

.near-you-record-inspection-row dt {
  margin: 0;
  color: var(--color-text-muted);
  font: 700 .6875rem/1.3 var(--font-interface);
  letter-spacing: .04em;
  text-transform: uppercase;
}

.near-you-record-inspection-row dd {
  margin: 0;
  color: var(--color-text-soft);
  font: .8125rem/1.4 var(--font-reading, var(--font-interface));
  overflow-wrap: anywhere;
}

.near-you-record-inspection-evidence {
  margin-block-start: 12px;
  padding: var(--space-2) var(--space-3);
  border-inline-start: 3px solid var(--color-action);
  background: var(--cs-action-tint);
  color: var(--color-text-soft);
  font: .8125rem/1.45 var(--font-interface);
}

.near-you-record-inspection-evidence > summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--color-text);
}

.near-you-record-inspection-step,
.near-you-record-inspection-source,
.near-you-record-inspection-uncertainty {
  display: inline;
  min-width: 0;
}

.near-you-record-inspection-source,
.near-you-record-inspection-uncertainty {
  display: block;
  margin-block-start: 4px;
  color: var(--color-text-muted);
  font-size: .75rem;
}

.near-you-record-inspection-separator {
  margin-inline: .35em;
}

.near-you-record-inspection-detail,
.near-you-record-inspection-detail-status {
  margin: 10px 0 0;
  color: var(--color-text-soft);
  font: .8125rem/1.45 var(--font-reading, var(--font-interface));
}

.near-you-record-inspection-detail-status {
  color: var(--color-action);
}

.near-you-record-inspection-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 14px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
}

.near-you-record-inspection-open {
  color: var(--color-action);
  font: 700 .8125rem/1.3 var(--font-interface);
  text-underline-offset: 3px;
}

@media (max-width: 560px) {
  .near-record {
    padding-block: var(--space-3);
  }

  .near-record-meta {
    gap: var(--space-1) var(--space-2);
  }

  .near-you-record-inspection-row {
    grid-template-columns: 1fr;
  }
}

@media print {
  .near-record-inspect,
  .near-record-full-record,
  .near-you-record-inspection-dialog {
    display: none !important;
  }

  [data-near-you-record-inspection-ready] .near-record-title-link {
    display: inline !important;
  }
}

.near-record-role {
  display: inline-block;
  margin-inline-start: var(--space-2);
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--cs-action-tint);
  color: var(--color-action);
  font: 600 .75rem/1.6 var(--font-interface);
  white-space: nowrap;
}

.near-record-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-3);
  margin-block-start: var(--space-2);
  color: var(--color-text-muted);
  font: .8125rem/1.4 var(--font-interface);
}

.near-record-basis {
  margin-block-start: var(--space-2);
  color: var(--color-text-soft);
  font: .8125rem/1.4 var(--font-interface);
}

.near-record-basis strong {
  color: var(--color-action);
}

.near-record-timing {
  margin-block-start: var(--space-1);
  color: var(--color-text-muted);
  font: .8125rem/1.4 var(--font-interface);
}

.near-record-timing[data-action-open="false"] {
  color: var(--color-text-soft);
}

.near-bags {
  border-block-start: 1px solid var(--color-border);
}

.near-bag {
  margin-block-start: var(--space-3);
  padding-inline: var(--space-5);
}

.near-bag summary {
  display: flex;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding-block: var(--space-4);
  color: var(--color-text);
  font: 600 1rem/1.3 var(--font-display);
  cursor: pointer;
}

.near-empty {
  color: var(--color-text-muted);
}

.following-explainer {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  padding-block-end: var(--space-7);
}

.following-create {
  padding-block: var(--space-6);
}

.following-hero-lead,
.following-create-lead,
.following-next-action {
  max-width: var(--measure);
  margin: 0 0 var(--space-4);
  color: var(--color-text-muted);
  font: .9375rem/1.55 var(--font-body);
}

.following-next-action {
  margin-block: var(--space-4) var(--space-3);
  color: var(--color-text);
  font-weight: 600;
}

.following-more-topics,
.following-secondary-entry {
  margin-block-start: var(--space-3);
}

.following-more-topics > summary,
.following-secondary-entry > summary {
  min-height: 44px;
  cursor: pointer;
  color: var(--color-text);
  font: 600 .9375rem/1.4 var(--font-interface);
}

.following-scope-links[data-following-topic-scope] {
  display: grid;
  gap: var(--space-3);
}

.following-surface-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-block: 0 var(--space-4);
  padding-block-end: var(--space-3);
  border-block-end: 1px solid var(--color-border);
}

.following-surface-tabs[hidden],
.following-workspace[hidden] {
  display: none;
}

.following-surface-tab {
  min-height: 44px;
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text-soft);
  font: 600 .875rem/1.3 var(--font-interface);
  cursor: pointer;
}

.following-surface-tab.is-selected,
.following-surface-tab[aria-selected="true"] {
  border-color: var(--color-action);
  background: var(--cs-action-tint);
  color: var(--color-action);
}

.following-rule {
  margin-block-start: var(--space-3);
}

.following-rule-line {
  margin: 0;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--cs-action-tint-border);
  border-radius: var(--radius-sm);
  background: var(--cs-action-tint);
  color: var(--color-text);
  font: 600 .9375rem/1.45 var(--font-interface);
}

.following-cadence {
  grid-column: 1 / -1;
  margin: 0;
  padding: 0;
  border: 0;
}

.following-cadence legend {
  margin: 0 0 var(--space-2);
  color: var(--color-text-soft);
  font: 600 .8125rem/1.4 var(--font-label);
  letter-spacing: .06em;
  text-transform: uppercase;
}

.following-cadence-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
}

.following-cadence-card {
  position: relative;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  column-gap: var(--space-3);
  row-gap: var(--space-1);
  align-items: start;
  min-height: 44px;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text-soft);
  font: 600 .8125rem/1.4 var(--font-label);
  letter-spacing: 0;
  text-transform: none;
  cursor: pointer;
}

.following-cadence-card.is-selected,
.following-cadence-card:has(input:checked) {
  border-color: var(--color-action);
  background: var(--cs-action-tint);
  color: var(--color-text);
}

.following-cadence-card:focus-within {
  outline: 2px solid var(--color-action);
  outline-offset: 2px;
}

.following-cadence-card input {
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  grid-row: 1 / span 2;
  align-self: center;
  accent-color: var(--color-action);
}

.following-cadence-card .following-cadence-title {
  grid-column: 2;
}

.following-cadence-card .following-cadence-copy {
  grid-column: 2;
}

.following-cadence-title {
  color: var(--color-text);
  font: 600 1rem/1.2 var(--font-interface);
}

.following-cadence-copy {
  color: var(--color-text-soft);
  font: .875rem/1.45 var(--font-body);
}

.following-diglist {
  list-style: none;
  padding: 0;
  margin: 0;
}

.following-digitem {
  display: grid;
  gap: var(--space-1);
  padding-block: var(--space-3);
  border-block-start: 1px solid var(--color-border);
}

.following-digitem.is-focus {
  border-inline-start: 3px solid var(--cs-action-tint-border);
  padding-inline-start: var(--space-3);
  background: var(--cs-action-tint);
}

.following-preview-focus {
  display: grid;
  gap: var(--space-2);
  margin: 0 0 var(--space-4);
  padding: var(--space-3);
  border: 1px solid var(--cs-action-tint-border);
  border-radius: var(--radius-md);
  background: var(--cs-action-tint);
}

.following-preview-focus p {
  margin: 0;
}

.following-dig-title {
  font-weight: 600;
}

.following-dig-meta {
  margin: 0;
  color: var(--color-text-soft);
  font: .875rem/1.45 var(--font-body);
}

.following-dig-awareness {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-block-start: var(--space-1);
}

.following-dig-phase {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 var(--space-2);
  border: 1px solid var(--cs-caution-border);
  border-radius: var(--radius-pill);
  background: var(--cs-caution-tint);
  color: var(--color-caution);
  font: 600 .75rem/1 var(--font-label);
  letter-spacing: .04em;
  text-transform: uppercase;
}

.following-dig-next {
  margin: 0;
  color: var(--color-text);
  font: .875rem/1.4 var(--font-interface);
}

.following-dig-next-label {
  font-weight: 700;
}

.following-dig-open {
  margin: var(--space-1) 0 0;
  font: 600 .8125rem/1.3 var(--font-interface);
}

.following-pack-cost {
  margin: 0 0 var(--space-2);
  color: var(--color-text);
  font: 600 .9375rem/1.45 var(--font-interface);
}

.following-pack-subject {
  margin: 0 0 var(--space-2);
  color: var(--color-text-muted);
  font: .875rem/1.45 var(--font-body);
}

.following-scope-pickers {
  display: grid;
  gap: var(--space-4);
  margin-block-end: var(--space-4);
}

.following-scope-block {
  display: grid;
  gap: var(--space-2);
}

.following-scope-title {
  margin: 0;
  color: var(--color-text-soft);
  font: 600 .8125rem/1.4 var(--font-label);
  letter-spacing: .04em;
  text-transform: uppercase;
}

.following-scope-rail-label {
  margin: 0 0 var(--space-2);
  color: var(--color-text-soft);
  font: 600 .8125rem/1.4 var(--font-label);
  letter-spacing: .06em;
  text-transform: uppercase;
}

.following-scope-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.following-form {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
}

.following-refinements,
.following-form-actions,
.following-workspace [data-following-rule-panel] {
  grid-column: 1 / -1;
}

.following-refinements > summary,
.following-precise > summary,
.following-precise-more > summary,
.following-precise-require > summary,
.following-excluded > summary {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  width: max-content;
  padding: 0 var(--space-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  font: 600 .8125rem/1.3 var(--font-interface);
}

/* Closed details must take nested summaries out of the tab order. Chromium
   otherwise keeps them focusable while clipped, which fails focus-not-obscured. */
.following-refinements:not([open]) > :not(summary),
.following-precise:not([open]) > :not(summary),
.following-precise-more:not([open]) > :not(summary),
.following-precise-require:not([open]) > :not(summary),
.following-excluded:not([open]) > :not(summary) {
  display: none;
}

.following-refinement-grid {
  margin: var(--space-3) 0 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
}

.following-precise {
  grid-column: 1 / -1;
  margin-top: var(--space-3);
}

.following-precise-body,
.following-excluded-list {
  display: grid;
  gap: var(--space-3);
  margin-top: var(--space-3);
}

.following-precise-include,
.following-precise-exclude,
.following-precise-require {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: var(--space-3);
  display: grid;
  gap: var(--space-2);
}

.following-precise-entry {
  display: grid;
  gap: var(--space-1);
}

.following-precise-term {
  display: grid;
  gap: var(--space-1);
  font: 500 .8125rem/1.3 var(--font-interface);
}

.following-precise-entry input[type="text"],
.following-precise-entry input:not([type]),
.following-precise-entry input[type="search"] {
  min-height: 44px;
  width: 100%;
}

.following-precise-phrase,
.following-precise-mode-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
  min-height: 44px;
  font: 500 .8125rem/1.3 var(--font-interface);
}

.following-excluded {
  margin-top: var(--space-4);
}

.following-excluded-passage,
.following-dig-excerpt {
  color: var(--color-text-muted);
  font: .875rem/1.45 var(--font-body);
}

.following-preview-retry,
.following-preview-continue,
.following-cancel-edit {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
}

.following-community-board-picker {
  border: 0;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--space-2);
}

.following-community-board-picker legend {
  font: 600 .8125rem/1.3 var(--font-interface);
}

.following-community-board-picker label {
  display: grid;
  gap: var(--space-1);
}

.following-form-actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.following-form-action-preview {
  background: transparent !important;
  color: var(--color-action) !important;
  border-color: var(--color-action) !important;
}

.following-personal--demoted {
  border-style: dashed;
  box-shadow: none;
}

.following-personal-details {
  padding: var(--space-4) var(--space-5);
}

.following-personal-details > summary {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2) var(--space-3);
  min-height: 44px;
  cursor: pointer;
  list-style: none;
  color: var(--color-text);
  font: 600 1.1rem/1.2 var(--font-display);
}

.following-personal-details > summary::-webkit-details-marker {
  display: none;
}

.following-personal-details > summary .following-kicker {
  margin: 0;
}

.following-personal-details[open] > summary {
  margin-block-end: var(--space-3);
}

.following-workspace {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: var(--space-4);
  padding-block: var(--space-6) var(--space-7);
}

.following-watch-identity {
  grid-column: 1 / -1;
  min-width: 0;
  padding: var(--space-5);
  border: 2px solid var(--cs-action-tint-border);
  border-radius: var(--radius-md);
  background: linear-gradient(135deg, var(--cs-action-tint), var(--color-surface));
}

.following-watch-identity h2,
.following-watch-identity h4 {
  margin: 0 0 var(--space-4);
  font-size: clamp(1.35rem, 3vw, 1.8rem);
  line-height: 1.1;
}

.following-identity-facts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr));
  gap: var(--space-3);
  margin: 0;
}

.following-identity-row {
  min-width: 0;
  padding-block-start: var(--space-2);
  border-block-start: 1px solid var(--cs-action-tint-border);
}

.following-identity-row dt {
  color: var(--color-text-soft);
  font: 600 .75rem/1.3 var(--font-label);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.following-identity-row dd {
  min-width: 0;
  margin: var(--space-1) 0 0;
  overflow-wrap: anywhere;
  color: var(--color-text);
  font: 600 1rem/1.35 var(--font-interface);
}

.following-identity-rule {
  margin: var(--space-4) 0 0;
  color: var(--color-text);
  font: 600 .9375rem/1.45 var(--font-interface);
}

.following-identity-scope,
.following-identity-correction {
  margin: var(--space-3) 0 0;
  color: var(--color-text-soft);
  font: 500 .9375rem/1.45 var(--font-body);
}

.following-identity-correction {
  color: var(--color-text);
}

.following-subscribe [data-following-subscribe-retry] {
  min-height: 44px;
}

.following-subscribe [role="status"][data-following-submit-failed] {
  color: var(--color-danger);
}

.following-identity-cadence {
  margin: var(--space-2) 0 0;
  color: var(--color-text-soft);
  font: .875rem/1.4 var(--font-body);
}

.following-identity-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-block-start: var(--space-4);
}

.following-identity-actions-wrap {
  margin: var(--space-4) 0 0;
}

.following-identity-details summary,
.following-watch-facts summary {
  display: flex;
  align-items: center;
  min-height: 44px;
  cursor: pointer;
}

.following-identity-actions a,
.following-pack-watch-entity {
  min-width: 0;
  overflow-wrap: anywhere;
}

.following-pack-watch-list,
.following-watch-scope-links {
  display: grid;
  gap: var(--space-2);
  margin: var(--space-3) 0 var(--space-4);
  padding: 0;
  list-style: none;
}

.following-pack-watch {
  display: grid;
  gap: var(--space-1);
  min-width: 0;
  padding-block: var(--space-2);
  border-block-start: 1px solid var(--color-border);
}

.following-watch-scope-links {
  grid-column: 1 / -1;
  padding-inline: var(--space-5);
}

.following-watch-identity + .following-watch-scope-links {
  margin-block-start: calc(var(--space-4) * -1);
}

.following-preview ol {
  padding-inline-start: var(--space-5);
}

.following-preview li {
  padding-block: var(--space-3);
  border-block-start: 1px solid var(--color-border);
}

.following-preview li > a {
  font-weight: 600;
}

.following-preview li p,
.following-personal .watch-meta {
  margin-block: var(--space-1);
}

.following-subscribe form,
.following-personal [data-personal-watch-list] {
  display: grid;
  gap: var(--space-3);
  min-width: 0;
}

.following-personal [data-personal-state] {
  min-width: 0;
}

.following-personal-recovery {
  margin: 0;
}

.following-personal-retry,
.following-personal [data-following-create-recovery] {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

.following-subscribe [role="status"] {
  margin: 0;
  color: var(--color-success);
  font-weight: 600;
}

.following-packs > div {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.following-pack details {
  margin-block: var(--space-3);
  font: .9375rem/1.55 var(--font-body);
}

.following-pack summary {
  display: flex;
  min-height: 44px;
  align-items: center;
  cursor: pointer;
}

.following-pack > a {
  margin-block-start: var(--space-2);
}

.following-privacy,
.following-personal {
  margin-block-end: var(--space-5);
}

.following-personal article {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 1.25fr);
  gap: var(--space-4);
  align-items: start;
  padding-block: var(--space-4);
  border-block-start: 1px solid var(--color-border);
}

.following-personal article h3 {
  margin: 0;
}

.following-watch-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
  min-width: 0;
  margin-bottom: var(--space-2);
}

.following-watch-actions .following-current-matches {
  font: 600 .875rem/1.2 var(--font-interface);
}

.following-watch-facts {
  margin: var(--space-3) 0 0;
}

.following-watch-fact-list {
  display: grid;
  gap: var(--space-2);
  grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
  margin: var(--space-2) 0 0;
  padding: 0;
}

.following-watch-fact {
  min-width: 0;
  padding: var(--space-2);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
}

.following-watch-fact dt {
  margin: 0;
  color: var(--color-text-soft);
  font: 600 .75rem/1.3 var(--font-label);
  letter-spacing: .08em;
  text-transform: uppercase;
}

.following-watch-fact dd {
  margin: var(--space-1) 0 0;
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--color-text);
  font: 600 1rem/1.35 var(--font-interface);
}

.following-watch-controls {
  display: flex;
  min-width: 0;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: end;
}

.following-watch-controls form {
  display: flex;
  min-width: 0;
  gap: var(--space-2);
  align-items: end;
}

.following-watch-controls label {
  display: grid;
  gap: var(--space-1);
  color: var(--color-text-soft);
  font: 600 .75rem/1.3 var(--font-label);
  letter-spacing: .06em;
  text-transform: uppercase;
}

.following-watch-controls select,
.following-watch-controls button {
  min-height: 42px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  font: 600 .8125rem/1.2 var(--font-interface);
}

.following-watch-controls button {
  cursor: pointer;
}

.following-watch-controls button:hover,
.following-watch-controls button:focus-visible {
  border-color: var(--color-action);
  color: var(--color-action);
}

.following-watch-controls .following-watch-remove {
  color: var(--color-action);
}

.following-warning {
  padding: var(--space-3);
  border-inline-start: 4px solid var(--color-caution);
}

.following-footer,
.near-footer {
  margin-block-start: var(--space-6);
  padding-block: var(--space-5) var(--space-7);
  border-block-start: 1px solid var(--color-border);
  color: var(--color-text-muted);
  font: .875rem/1.55 var(--font-body);
}

@media (max-width: 850px) {
  .near-form,
  .following-form,
  .following-explainer {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .following-refinement-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .near-map-grid,
  .following-workspace {
    grid-template-columns: minmax(0, 1fr);
  }

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

  .near-section-heading {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* Near-you Records / Map switch: progressive enhancement at every width. */
[data-near-you-root] {
  display: flex;
  flex-direction: column;
}
[data-near-you-root] > .near-hero { order: 1; }
[data-near-you-root] > .near-geo-entry { order: 1; }
[data-near-you-root] > .near-place-guide { order: 2; }
[data-near-you-root] > .near-surface-switch { order: 3; }
[data-near-you-root] > .near-overview { order: 4; }
[data-near-you-root] > .near-geo-workspace { order: 5; }
[data-near-you-root] > .near-selected-context { order: 6; }
[data-near-you-root] > .near-advanced { order: 6; }
[data-near-you-root] > .near-records-surface { order: 6; }
[data-near-you-root] > .near-results,
[data-near-you-root] > .near-results-shell { order: 7; }
[data-near-you-root] > .near-map-section { order: 5; }
[data-near-you-root] > .near-bags,
[data-near-you-root] > .near-bags-shell { order: 8; }
[data-near-you-root] > .near-explore,
[data-near-you-root] > .local-constellation { order: 9; }

.near-overview {
  padding-block: var(--space-7);
  border-block: 1px solid var(--color-border);
  background: var(--color-surface);
}

.near-overview-section {
  min-width: 0;
  margin-block-start: var(--space-6);
  padding-block-start: var(--space-5);
  border-block-start: 1px solid var(--color-border);
}

.near-overview h2 {
  margin: 0 0 var(--space-3);
  font-size: clamp(1.6rem, 4vw, 2.35rem);
  font-weight: 600;
  line-height: 1.1;
}

.near-overview-note {
  max-width: var(--measure);
  margin: 0;
  color: var(--color-text-soft);
}

.near-results-more {
  margin-block: var(--space-5) 0;
  font: 650 .95rem/1.4 var(--font-interface);
}
.near-surface-switch {
  display: flex;
  gap: var(--space-2);
  margin: var(--space-4) 0 var(--space-2);
  flex-wrap: wrap;
}
[data-geography-shell][data-near-surface="map"] > .near-surface-switch {
  margin-block: var(--space-1);
}
.near-surface-link {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  color: var(--color-text);
  font: 650 13px/1.2 var(--font-interface);
  text-decoration: none;
}
.near-surface-link.is-active,
.near-surface-link[aria-current="true"] {
  background: var(--color-action);
  border-color: var(--color-action);
  color: var(--color-surface);
}
@media (min-width: 561px) {
  .near-surface-switch {
    max-width: var(--maxw);
    margin-inline: auto;
    padding-inline: clamp(var(--space-4), 4vw, var(--space-7));
  }
}
[data-near-you-root][data-near-mobile-surface="list"] [data-near-surface-panel="map"],
[data-near-you-root][data-near-mobile-surface="map"] [data-near-surface-panel="list"],
[data-near-you-root][data-near-mobile-surface="records"] [data-near-surface-panel="map"],
[data-near-you-root][data-near-mobile-surface="map"] [data-near-surface-panel="records"],
[data-near-you-root][data-near-surface="records"][data-near-mobile-surface="records"] [data-near-surface-panel="map"],
[data-near-you-root][data-near-surface="map"][data-near-mobile-surface="map"] [data-near-surface-panel="records"] {
  display: none;
}

/* Geography map-first shell: rail + map on desktop; collapsible drawer on narrow. */
.near-geo-entry {
  min-width: 0;
  max-width: var(--maxw);
  margin-inline: auto;
  padding: var(--space-3) clamp(var(--space-4), 4vw, var(--space-7)) var(--space-2);
}
.near-geo-entry h1 {
  margin: 0 0 var(--space-2);
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  line-height: 1.1;
}
.near-entry-prompt {
  margin: 0;
  color: var(--color-text-soft);
}
[data-geography-shell] .near-hero {
  padding-block: var(--space-4) var(--space-3);
}
[data-geography-shell] .near-hero h1 {
  font-size: clamp(1.8rem, 4vw, 2.6rem);
}
[data-geography-shell][data-near-surface="map"] .near-hero > .near-kicker {
  display: none;
}
[data-geography-shell][data-near-surface="map"] > .near-hero {
  padding-block: var(--space-3) var(--space-2);
}
[data-geography-shell][data-near-surface="map"] > .near-hero > p:not(.near-board-link),
[data-geography-shell][data-near-surface="map"] > .near-hero > .near-scope {
  display: none;
}
[data-geography-shell] .near-place-guide {
  padding-block: var(--space-2);
}
[data-geography-shell][data-near-surface="map"] > .near-place-guide {
  padding-block: 0;
  border-block: 0;
  background: transparent;
}
[data-geography-shell] .near-place-guide > summary {
  cursor: pointer;
  min-height: var(--control-min-size);
  align-content: center;
  font-weight: 600;
}
[data-geography-shell] .near-place-options > summary,
[data-geography-shell] .near-selected-context > summary {
  display: flex;
  min-height: var(--control-min-size);
  align-items: center;
  cursor: pointer;
  color: var(--color-action);
  font-weight: 600;
}
[data-geography-shell] .near-place-options > p,
[data-geography-shell] .near-selected-context > p {
  max-width: var(--measure);
  margin-block: var(--space-2);
  color: var(--color-text-soft);
}
[data-geography-shell] .near-selected-context {
  width: 100%;
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: clamp(var(--space-4), 4vw, var(--space-7));
  box-sizing: border-box;
}
[data-geography-shell][data-near-surface="map"] > .near-place-guide > summary {
  display: inline-flex;
  align-items: center;
  padding-inline: var(--space-3);
  border: 1px solid var(--color-action);
  border-radius: var(--radius-sm);
  background: var(--color-action);
  color: var(--color-surface);
}
.near-map-section > .near-section-heading > div:first-child {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.near-map-section > .near-section-heading {
  margin: 0;
}
[data-geography-shell] .near-entry-secondary > summary,
[data-geography-shell] .near-selected-context > summary {
  cursor: pointer;
  min-height: var(--control-min-size);
  align-content: center;
}
[data-geography-shell] .near-map-secondary {
  margin-block-start: var(--space-3);
}
/* Explicit display on children can override closed-details hiding; keep nested
   chrome unreachable until the parent disclosure is open. */
[data-geography-shell] .near-entry-secondary:not([open]) > :not(summary),
[data-geography-shell] .near-selected-context:not([open]) > :not(summary) {
  display: none !important;
}
[data-geography-shell] .near-map-secondary-label,
[data-geography-shell] .near-geo-more-boundaries-label {
  display: block;
  margin: 0 0 var(--space-2);
  font: 650 0.95rem/1.3 var(--font-interface);
}
[data-geography-shell] .near-map-layers > summary {
  cursor: pointer;
  min-height: 44px;
  align-content: center;
  font-weight: 600;
}
.near-geo-workspace .near-map-section {
  padding: 0;
  margin: 0;
  width: 100%;
  min-width: 0;
}
[data-geography-shell] .near-scope {
  margin-block: var(--space-2);
}
[data-geography-shell][data-near-surface="map"] > .near-overview {
  order: 6;
}
.near-geo-search {
  display: grid;
  gap: var(--space-2);
  margin: var(--space-2) 0;
}
.near-geo-search-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  min-width: 0;
}
.near-geo-search input {
  flex: 1 1 16rem;
  min-width: 0;
  min-height: var(--control-min-size);
  padding: 10px 12px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  font: 400 1rem/1.3 var(--font-interface);
}
.near-geo-search button,
.near-geo-drawer-toggle,
.near-geo-layer,
.near-surface-link {
  min-height: var(--control-min-size);
}
.near-geo-search button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 14px;
  border: 1px solid var(--color-action);
  border-radius: var(--radius-sm);
  background: var(--color-action);
  color: var(--color-surface);
  font: 700 0.95rem/1.2 var(--font-interface);
  cursor: pointer;
}
.near-geo-layers {
  display: grid;
  gap: var(--space-2);
  margin: var(--space-3) 0;
  min-width: 0;
}
.near-geo-layers-primary,
.near-geo-layers-more {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}
.near-geo-layer {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 12px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  color: var(--color-text);
  font: 650 0.9rem/1.2 var(--font-interface);
  cursor: pointer;
}
.near-geo-layer[aria-pressed="true"],
.near-geo-layer.is-active,
.near-geo-layer[aria-current="true"] {
  background: var(--color-action);
  border-color: var(--color-action);
  color: var(--color-surface);
}
.near-geo-more-boundaries {
  min-width: 0;
}
.near-geo-more-boundaries-label {
  margin: 0 0 var(--space-2);
  font: 650 0.95rem/1.3 var(--font-interface);
}
.near-geo-more-boundaries > summary {
  cursor: pointer;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  font: 650 0.95rem/1.3 var(--font-interface);
}
.near-geo-workspace {
  display: grid;
  gap: var(--space-4);
  min-width: 0;
  max-width: 1440px;
  width: 100%;
  margin: var(--space-2) auto var(--space-5);
  padding-inline: clamp(var(--space-4), 4vw, var(--space-7));
  box-sizing: border-box;
}
.near-geo-rail {
  min-width: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}
.near-geo-drawer-toggle {
  display: none;
  width: 100%;
  margin-bottom: var(--space-2);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-canvas-subtle, var(--color-canvas));
  color: var(--color-text);
  font: 650 0.95rem/1.2 var(--font-interface);
  cursor: pointer;
}
.near-geo-overlap-compare,
.near-geo-overlap-point,
.near-geo-overlap-area,
.near-geo-overlap-details,
.near-geo-overlap-continuation {
  margin-top: var(--space-3);
  min-width: 0;
}
.near-geo-record-lenses {
  margin-top: var(--space-4);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
}
.near-geo-record-lenses h3 {
  margin: 0 0 var(--space-2);
  font: 650 .95rem/1.3 var(--font-interface);
}
.near-geo-record-lenses ul {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.near-geo-record-lenses a,
.near-geo-overlap-continuation a {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  min-width: 0;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  color: var(--color-action);
  font: 650 .9rem/1.3 var(--font-interface);
  text-decoration: none;
}
.near-geo-record-lenses a:focus-visible,
.near-geo-overlap-continuation a:focus-visible {
  outline: 3px solid var(--color-action);
  outline-offset: 2px;
}
.near-geo-record-lens-count {
  flex: 0 0 auto;
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
}

.near-geo-broader-suggestions li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  min-width: 0;
}

.near-geo-broader-suggestions a {
  flex: 1 1 auto;
}

.near-geo-broader-label {
  flex: 0 0 auto;
  padding: 2px 8px;
  border: 1px solid var(--color-border-strong);
  border-radius: 999px;
  color: var(--color-text-muted);
  font: 650 .75rem/1.2 var(--font-interface);
  text-transform: lowercase;
}

.near-broader-districts {
  display: grid;
  gap: var(--space-4);
  margin: 0 0 var(--space-6);
  padding: 0 0 var(--space-5);
  border-bottom: 1px solid var(--color-border);
}

.near-broader-districts-note {
  margin: 0;
  color: var(--color-text-muted);
  font: 500 .95rem/1.45 var(--font-interface);
}

.near-broader-district {
  display: grid;
  gap: var(--space-3);
  min-width: 0;
}

.near-broader-district-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin: 0;
  font: 700 1.05rem/1.3 var(--font-interface);
}

.near-broader-district-count {
  margin: 0;
  color: var(--color-text-muted);
  font: 650 .9rem/1.3 var(--font-interface);
}

.near-broader-district-open {
  font: 650 .95rem/1.3 var(--font-interface);
  text-decoration: none;
}

.near-broader-district-open:focus-visible {
  outline: 3px solid var(--color-action);
  outline-offset: 2px;
}

.near-geo-overlap-compare-label {
  margin: 0 0 var(--space-2);
  font: 650 0.95rem/1.3 var(--font-interface);
}
.near-geo-overlap-list {
  list-style: none;
  margin: var(--space-2) 0 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.near-geo-overlap-row {
  display: grid;
  gap: 6px;
  min-width: 0;
}
.near-geo-overlap-highlight {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  font: 650 0.95rem/1.3 var(--font-interface);
  text-align: left;
  cursor: pointer;
}
.near-geo-overlap-highlight:focus-visible,
.near-geo-overlap-select:focus-visible,
.near-geo-drawer-toggle:focus-visible {
  outline: 3px solid var(--color-action);
  outline-offset: 2px;
}
.near-geo-overlap-pct {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.near-geo-overlap-select {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 8px 10px;
  border-radius: var(--radius-sm);
  font: 650 0.9rem/1.2 var(--font-interface);
}
.near-geo-overlap-details > summary {
  cursor: pointer;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  font: 650 0.95rem/1.3 var(--font-interface);
}
.near-geo-overlap-details dl {
  display: grid;
  gap: var(--space-2);
  margin: var(--space-2) 0;
}
.near-geo-overlap-details dt {
  font: 650 0.85rem/1.3 var(--font-interface);
}
.near-geo-overlap-details dd {
  margin: 0;
  font: 400 0.9rem/1.4 var(--font-interface);
}
.near-geo-overlap-immaterial {
  margin: var(--space-2) 0 0;
  padding-left: 1.2rem;
  font: 400 0.9rem/1.4 var(--font-interface);
}
@media (prefers-reduced-motion: reduce) {
  .near-geo-overlap-highlight,
  .near-geo-overlap-select,
  .near-geo-drawer-toggle {
    transition: none;
  }
}
.near-map-enhanced {
  width: 100%;
  min-height: var(--near-map-first-view-min);
  height: min(70vh, 720px);
  border-radius: var(--radius-md);
  background: var(--color-canvas-subtle, #eceef2);
}
.near-map-wrap[data-geography-map-mode="enhanced"] #nearMapSvg,
.near-map-wrap[data-geography-map-mode="enhanced"] .map-legend {
  display: none;
}
.near-map-wrap[data-geography-map-mode="enhanced"] .near-map-enhanced {
  display: block;
}
/* MapLibre's compact attribution control is 24px by default. Keep its
   disclosure target usable when the enhanced map is active on touch screens. */
.near-map-enhanced .maplibregl-ctrl-attrib-button {
  width: var(--control-min-size) !important;
  height: var(--control-min-size) !important;
  min-width: var(--control-min-size);
  min-height: var(--control-min-size);
  border-radius: 22px;
}
.near-map-state a[data-near-recovery],
.near-deferred-recovery {
  display: inline-flex;
  min-width: var(--control-min-size);
  min-height: var(--control-min-size);
  align-items: center;
  padding-inline: var(--space-3);
}
.near-map-enhanced .maplibregl-ctrl-attrib a {
  text-decoration: underline;
}
.near-records-surface {
  min-width: 0;
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: clamp(var(--space-4), 4vw, var(--space-7));
  box-sizing: border-box;
}
@media (min-width: 901px) {
  .near-geo-workspace {
    grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
    align-items: start;
  }
  .near-geo-rail {
    position: sticky;
    top: var(--space-4);
    max-height: calc(100vh - 2 * var(--space-4));
    overflow: auto;
  }
  .near-geo-workspace .near-map-section {
    min-width: 0;
    padding: 0;
    margin: 0;
    width: 100%;
  }
  .near-geo-workspace .near-map-wrap {
    min-height: 60vh;
  }
  .near-geo-workspace .near-map-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .near-geo-workspace .near-area-panel {
    /* Areas live in the rail conceptually; keep list under map on desktop too for no-JS. */
    margin-top: var(--space-3);
  }
}
@media (max-width: 900px) {
  .near-geo-workspace {
    grid-template-columns: minmax(0, 1fr);
  }
  .near-geo-rail {
    order: 2;
  }
  .near-geo-workspace .near-map-section {
    order: 1;
  }
  .near-geo-drawer-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .near-geo-workspace[data-geography-drawer-state="closed"] .near-geo-rail-body,
  .near-geo-workspace[data-geography-drawer-state="closed"] .near-area-panel {
    display: none;
  }
  .near-geo-workspace .near-map-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 560px) {
  [data-geography-shell] .near-geo-entry > .near-kicker {
    margin-bottom: var(--space-1);
  }
  [data-geography-shell] .near-geo-entry h1 {
    font-size: 1.75rem;
  }
  [data-geography-shell] .near-geo-entry .near-geo-search-row {
    flex-wrap: nowrap;
  }
  [data-geography-shell] .near-geo-entry .near-geo-search input {
    flex-basis: 0;
  }
  .near-geo-search input {
    font-size: 16px;
  }
  .near-surface-link {
    min-height: 44px;
    padding: 10px 12px;
  }
}

.following-scope-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}
.following-scope-chip,
.alert-context-scope-chips .qchip {
  display: inline-flex;
  align-items: center;
}
.alert-context-scope-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  list-style: none;
  margin: 0 0 10px;
  padding: 0;
}
.following-scope-count {
  margin: var(--space-2) 0 0;
  font: 650 13px/1.4 var(--font-interface);
  color: var(--color-text-soft);
}

@media (max-width: 560px) {
  body {
    font-size: 1rem;
  }

  .document-mast-inner {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--space-2);
  }

  .document-nav {
    width: 100%;
    justify-content: space-between;
    gap: var(--space-1) var(--space-2);
  }

  .near-hero,
  .following-hero {
    padding-block: var(--space-7) var(--space-5);
  }

  .near-form,
  .following-form,
  .following-explainer,
  .following-packs > div {
    grid-template-columns: minmax(0, 1fr);
  }

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

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

  .exam-process-step {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-1);
  }

  .node-action,
  .exam-action,
  .civic-object-action {
    width: 100%;
    justify-content: center;
  }

  .near-actions a,
  .near-place-actions a,
  .near-place-actions button,
  .near-form button,
  .following-hero nav a,
  .following-pack > a,
  .following-form button,
  .following-subscribe button {
    width: 100%;
    justify-content: center;
  }

  .near-map-section,
  .near-results,
  .near-bags,
  .following-packs {
    padding-block: var(--space-6);
  }

  /* Mobile keeps the same list-first switch, with its compact active-state rule. */
  [data-near-you-root][data-near-mobile-surface="map"] [data-near-surface="map"],
  [data-near-you-root][data-near-mobile-surface="list"] [data-near-surface="list"],
  [data-near-you-root]:not([data-near-mobile-surface]) [data-near-surface="list"] {
    background: var(--color-action);
    border-color: var(--color-action);
    color: var(--color-surface);
  }

  .near-map-wrap {
    padding: var(--space-2);
  }

  .near-map-wrap svg {
    height: 36vh;
  }

  .map-label-borough {
    font-size: 28px;
  }
}

.data-health-body {
  background: var(--color-canvas);
  color: var(--color-text);
}

.data-health-page,
.data-health-footer {
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: clamp(var(--space-4), 4vw, var(--space-7));
}

.data-health-hero {
  padding-block: var(--space-7) var(--space-5);
  border-block-end: 1px solid var(--color-border);
}

.data-health-hero h1 {
  margin: 0 0 var(--space-3);
  font-size: clamp(2rem, 6vw, 3rem);
  line-height: 1;
  text-transform: uppercase;
}

.data-health-lede,
.data-health-crosslink,
.data-health-asof {
  max-width: var(--measure);
  margin: 0 0 var(--space-3);
  color: var(--color-text-soft);
}

.data-health-group {
  padding-block: var(--space-6);
  border-block-end: 1px solid var(--color-border);
}

.data-health-group h2 {
  margin: 0 0 var(--space-4);
  font-size: clamp(1.25rem, 2.4vw, 1.65rem);
}

.data-health-cards {
  display: grid;
  gap: var(--space-4);
}

.data-health-card {
  display: grid;
  gap: var(--space-4);
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md, 8px);
  background: var(--color-surface);
}

.data-health-card-head h3 {
  margin: 0 0 var(--space-2);
  font-size: 1.2rem;
  line-height: 1.25;
}

.data-health-meta,
.data-health-note,
.data-health-coverage-when,
.data-health-clock-basis {
  margin: 0;
  color: var(--color-text-soft);
  font-size: 0.95rem;
}

.data-health-official {
  display: inline-block;
  margin-top: var(--space-2);
}

.data-health-condition,
.data-health-vintage,
.data-health-coverage {
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
}

.data-health-status,
.data-health-vintage-status,
.data-health-coverage-status {
  margin: 0 0 var(--space-2);
  font-weight: 700;
}

.data-health-coverage-heading {
  margin: 0 0 var(--space-2);
  font: 700 0.75rem/1.2 var(--font-label, system-ui);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-text-soft);
}

.data-health-clocks {
  display: grid;
  gap: var(--space-3);
  margin: var(--space-3) 0 0;
}

.data-health-clock {
  margin: 0;
}

.data-health-clock dt {
  font: 700 0.75rem/1.2 var(--font-label, system-ui);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.data-health-clock dd {
  display: grid;
  gap: 0.15rem;
  margin: 0.15rem 0 0;
}

.data-health-clock-value {
  font-weight: 700;
}

.data-health-card[data-health-status="Delayed"] .data-health-status,
.data-health-card[data-health-status="Degraded"] .data-health-status,
.data-health-card[data-health-status="Manual-refresh"] .data-health-status {
  color: var(--color-caution);
}

.data-health-card[data-health-status="Source-unavailable"] .data-health-status {
  color: var(--color-danger);
}

.data-health-card[data-vintage-status="source-vintage-stale"] .data-health-vintage-status,
.data-health-card[data-vintage-status="ingestion-stale"] .data-health-vintage-status {
  color: var(--color-caution);
}

.data-health-card[data-health-status="UNKNOWN"] .data-health-status,
.data-health-clock[data-clock-state="UNKNOWN"] dd,
.data-health-coverage-status {
  color: var(--color-text);
}

.data-health-clock[data-clock-state="UNKNOWN"] .data-health-clock-value,
.data-health-card[data-health-status="UNKNOWN"] .data-health-status {
  display: inline-block;
  padding: 0.1rem 0.4rem;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm, 4px);
  background: var(--color-canvas);
  font-family: var(--font-interface, ui-sans-serif, system-ui, sans-serif);
}

.data-health-footer {
  padding-block: var(--space-5) var(--space-8);
  color: var(--color-text-muted);
  font-size: 0.95rem;
}

@media (min-width: 720px) {
  .data-health-clocks {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (prefers-reduced-motion: reduce) {
  * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

.cross-source-evidence-receipt {
  border-color: color-mix(in srgb, var(--color-action) 35%, var(--color-border));
}

.cross-source-evidence-lead,
.cross-source-evidence-honesty,
.cross-source-evidence-provenance {
  color: var(--color-text-muted);
  line-height: 1.45;
}

.cross-source-evidence-lead {
  margin-block: 0 var(--space-4);
}

.cross-source-evidence-sources,
.cross-source-evidence-facts,
.cross-source-evidence-fact ul {
  display: grid;
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.cross-source-evidence-sources {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  margin-block-end: var(--space-5);
}

.cross-source-evidence-source,
.cross-source-evidence-fact {
  min-width: 0;
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm, 4px);
  background: var(--color-canvas);
}

.cross-source-evidence-source {
  display: grid;
  gap: var(--space-1);
  color: var(--color-text-muted);
  font-size: 0.82rem;
}

.cross-source-evidence-source code,
.cross-source-evidence-provenance code {
  overflow-wrap: anywhere;
  font-size: 0.78rem;
}

.cross-source-evidence-source-link {
  color: var(--color-action);
}

.cross-source-evidence-fact {
  background: color-mix(in srgb, var(--color-canvas) 88%, var(--color-action));
}

.cross-source-evidence-fact-disagrees {
  border-color: var(--color-caution, #8a5a00);
}

.cross-source-evidence-fact h3 {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: baseline;
  margin: 0;
  font-size: 0.98rem;
}

.cross-source-evidence-state {
  color: var(--color-text-muted);
  font-size: 0.75rem;
  font-weight: 500;
}

.cross-source-evidence-fact-disagrees .cross-source-evidence-state {
  color: var(--color-caution, #8a5a00);
}

.cross-source-evidence-assertion {
  min-width: 0;
  padding-block-start: var(--space-2);
  border-block-start: 1px solid var(--color-border);
}

.cross-source-evidence-assertion-value {
  overflow-wrap: anywhere;
  font-weight: 650;
}

.cross-source-evidence-assertion-kind {
  color: var(--color-text-muted);
  font-size: 0.75rem;
}

.cross-source-evidence-provenance {
  overflow-wrap: anywhere;
  font-size: 0.78rem;
}

.cross-source-evidence-agreements {
  display: grid;
  gap: var(--space-2);
  margin-block-end: var(--space-3);
}

.cross-source-evidence-agreement {
  margin: 0;
  color: var(--color-text-muted);
  font-size: 0.88rem;
  line-height: 1.45;
}

.cross-source-evidence-honesty {
  margin: var(--space-3) 0 0;
  font-size: 0.82rem;
}

.cross-source-coverage-ledger {
  max-width: 42rem;
}

.cross-source-coverage-lead,
.cross-source-coverage-rate,
.cross-source-coverage-meta {
  color: var(--color-text-muted);
  font-size: 0.82rem;
  line-height: 1.4;
}

.cross-source-coverage-lead {
  margin: 0 0 var(--space-3);
}

.cross-source-coverage-sources {
  display: grid;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.cross-source-coverage-source {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.15rem var(--space-3);
  align-items: baseline;
  padding: var(--space-2) 0;
  border-block-end: 1px solid var(--color-border);
  font-size: 0.88rem;
}

.cross-source-coverage-source:last-child {
  border-block-end: 0;
  padding-block-end: 0;
}

.cross-source-coverage-name {
  font-weight: 650;
}

.cross-source-coverage-state {
  justify-self: end;
  color: var(--color-text-muted);
  font-size: 0.8rem;
}

.cross-source-coverage-meta {
  grid-column: 1 / -1;
}

.cross-source-coverage-rate {
  margin: var(--space-3) 0 0;
}

@media (max-width: 390px) {
  .cross-source-coverage-source {
    grid-template-columns: 1fr;
  }

  .cross-source-coverage-state {
    justify-self: start;
  }
}

.institution-nav-capabilities {
  margin: 0 0 var(--space-3);
}

.institution-nav-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-2);
}

.institution-nav-item {
  display: grid;
  gap: 2px;
}

.institution-nav-main {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
}

.institution-nav-state {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  padding: 1px 8px;
  color: var(--color-text-muted);
  font-size: .68rem;
  line-height: 1.2;
}

.institution-nav-item[data-evidence-state="blocked"] .institution-nav-state,
.institution-nav-item[data-evidence-state="unresolved"] .institution-nav-state,
.institution-nav-stop[data-identity-state] {
  border-color: var(--color-caution, #8a5a00);
  color: var(--color-caution, #8a5a00);
}

.institution-nav-stop {
  margin: 0 0 var(--space-3);
}

.institution-nav-disclosure {
  margin: var(--space-3) 0 0;
}

.institution-nav-disclosure > summary {
  cursor: pointer;
  color: var(--color-text-muted);
  font-size: .9rem;
}

.institution-nav-subhead {
  margin: var(--space-4) 0 var(--space-2);
  font-size: 1rem;
}

/* Reader-facing agency identity-and-coverage disclosure (one profile block). */
.agency-identity-coverage {
  display: block;
}

.agency-coverage-headline {
  margin: 0 0 var(--space-1);
  font-weight: 600;
}

.agency-coverage-copy {
  margin: 0 0 var(--space-2);
}

.agency-coverage-supported {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.agency-coverage-supported-item {
  margin: 0;
}

.agency-coverage-disclosure {
  margin: var(--space-3) 0 0;
}

.agency-coverage-disclosure > summary {
  cursor: pointer;
  color: var(--color-text-muted);
  font-size: .9rem;
}

.agency-coverage-subhead {
  margin: var(--space-3) 0 var(--space-1);
  font-size: .95rem;
}

.agency-coverage-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.agency-coverage-item {
  margin: 0 0 var(--space-2);
  min-width: 0;
}

.agency-coverage-main {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
  min-width: 0;
}

.agency-coverage-meta {
  display: block;
  overflow-wrap: anywhere;
}

.agency-coverage-state {
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--color-text-muted);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  padding: 0 .5em;
  /* A multi-word state ("empty in this snapshot") is wider than a narrow
     column at 200% zoom. The flex row already gives the pill its own line
     first; when even that is not enough it wraps inside the pill rather than
     pushing the whole document sideways. */
  max-width: 100%;
  overflow-wrap: anywhere;
}

.agency-coverage-item[data-evidence-state="blocked"] .agency-coverage-state,
.agency-coverage-item[data-identity-state="collision"] .agency-coverage-state,
.agency-coverage-item[data-identity-state="unresolved"] .agency-coverage-state {
  border-style: dashed;
}

/* Public-body directory: compact grouped rows a reader can scan.
   The page width is the group's to use on a wide screen; a narrow screen keeps
   one column. Every control here is a real form or anchor, so the layout does
   not depend on the enhancement that filters it. */
.agency-directory {
  padding-block: var(--space-5);
}

.agency-directory-search {
  display: grid;
  /* A grid track defaults to min-content, which lets the controls below push
     the form wider than the page at high zoom. Cap the track instead. */
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-2);
  margin: 0 0 var(--space-4);
  max-width: min(100%, var(--measure));
}

.agency-directory-search label {
  font: 600 .8125rem/1.4 var(--font-label);
  color: var(--color-text-soft);
}

.agency-directory-search-controls {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
  min-width: 0;
}

.agency-directory-input {
  flex: 1 1 10rem;
  min-width: 0;
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 1rem;
}

.agency-directory-groups {
  margin: 0 0 var(--space-3);
}

.agency-directory-groups ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.agency-directory-group-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border-strong);
  border-radius: 999px;
  background: var(--color-surface);
  color: var(--color-action);
  font: 600 .875rem/1.2 var(--font-label);
  text-decoration: none;
}

.agency-directory-group-link:hover,
.agency-directory-group-link:focus-visible {
  text-decoration: underline;
}

.agency-directory-group-link[aria-current="true"] {
  background: var(--cs-action-tint);
  border-color: var(--cs-action-tint-border);
}

.agency-directory-count {
  color: var(--color-text-muted);
  font-variant-numeric: tabular-nums;
  font-weight: 500;
}

.agency-directory-summary,
.agency-directory-empty {
  margin: 0 0 var(--space-4);
  max-width: min(100%, var(--measure));
  color: var(--color-text-soft);
  font-size: .9375rem;
}

.agency-directory-group {
  margin: 0 0 var(--space-6);
}

.agency-directory-group h2 {
  margin: 0 0 var(--space-1);
  font-size: 1.0625rem;
}

.agency-directory-group-note,
.agency-directory-group-sources {
  margin: 0 0 var(--space-3);
  max-width: min(100%, var(--measure));
  color: var(--color-text-muted);
  font-size: .875rem;
}

.agency-directory-group-sources {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}

.agency-directory-rows {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-2);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 21rem), 1fr));
}

.agency-directory-row {
  min-width: 0;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-canvas);
}

.agency-directory-row a.agency-index-link,
.agency-directory-name {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
  font-weight: 600;
  color: var(--color-action);
  text-decoration: none;
}

.agency-directory-name {
  color: var(--color-text);
}

.agency-directory-row a.agency-index-link:hover,
.agency-directory-row a.agency-index-link:focus-visible {
  text-decoration: underline;
}

.agency-directory-row-meta {
  margin: var(--space-1) 0 0;
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--color-text-muted);
  font-size: .8125rem;
  line-height: 1.4;
}

.agency-directory-kind {
  display: inline-block;
  margin-inline-end: var(--space-1);
  padding: 0 .5em;
  border: 1px solid var(--color-border-strong);
  border-radius: 999px;
  color: var(--color-text-soft);
  font: 600 .75rem/1.6 var(--font-label);
}

/*
 * The district land-project list keeps its overflow behind a fragment rather
 * than a <details> element. A browser restores a history entry's URL and scroll
 * offset, not an element's open state, so putting the expansion in the URL is
 * what lets a reader open the rest of the list, follow a project, and come back
 * to the list as they left it. With no stylesheet at all the whole list simply
 * renders, which is the right failure.
 */
.board-district-projects-overflow {
  margin-block-start: var(--space-2);
}

.board-district-projects-overflow > .board-district-projects-overflow-list,
.board-district-projects-overflow > .board-district-projects-less {
  display: none;
}

.board-district-projects-overflow:target > .board-district-projects-overflow-list {
  display: grid;
  margin-block-end: var(--space-2);
}

.board-district-projects-overflow:target > .board-district-projects-less {
  display: inline-block;
}

.board-district-projects-overflow:target > .board-district-projects-more {
  display: none;
}

.board-district-projects-more,
.board-district-projects-less {
  display: inline-block;
  /* WCAG 2.5.8: a comfortable target on a touch screen. */
  min-height: 24px;
  padding-block: var(--space-1);
  color: var(--color-action);
  font-weight: 600;
}

.board-district-projects-boundary {
  max-width: var(--measure);
}

.board-district-project-id {
  color: var(--color-text-muted);
  font-weight: 400;
}

/* Committees linked through shared members, on a committee record.

   Each expansion is a `:target` disclosure rather than a <details> element: a
   history entry carries the URL and the scroll offset, not element state, so an
   expansion that lives in the fragment is the one still open when the reader
   walks out to a member, on to another committee, and presses Back. No script
   is involved, a modified click still opens a new tab, and with this stylesheet
   unavailable every member simply renders. The `:has()` rules keep the overflow
   list open while one of its own rows is the target; they are written as
   separate rules so a browser without `:has()` drops only those. */
.committee-shared-summary {
  max-width: var(--measure);
  margin: 0 0 var(--space-1);
}

.committee-shared-basis {
  max-width: var(--measure);
  margin: 0 0 var(--space-3);
}

.committee-shared-list > li {
  display: grid;
  gap: var(--space-2);
}

.committee-shared-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-1) var(--space-2);
  margin: 0;
  min-width: 0;
  overflow-wrap: anywhere;
}

.committee-shared-count {
  display: inline-block;
  padding: 0 .5em;
  border: 1px solid var(--color-border-strong);
  border-radius: 999px;
  color: var(--color-text-soft);
  font: 600 .75rem/1.6 var(--font-label);
}

.committee-shared-controls {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-3);
  margin: 0;
}

.committee-shared-controls a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  font-size: .9375rem;
}

.committee-shared-members {
  list-style: none;
  display: none;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
}

.committee-shared-members > li {
  display: grid;
  gap: var(--space-1);
  min-width: 0;
  padding-inline-start: var(--space-3);
  border-inline-start: 3px solid var(--color-border);
  overflow-wrap: anywhere;
}

.committee-shared-member-detail {
  display: block;
}

.committee-shared-row:target > .committee-shared-members {
  display: grid;
}

.committee-shared-row:target > .committee-shared-controls .committee-shared-open {
  display: none;
}

.committee-shared-row:not(:target) > .committee-shared-controls .committee-shared-close {
  display: none;
}

.committee-shared-overflow > .committee-shared-list {
  display: none;
}

.committee-shared-overflow:target > .committee-shared-list {
  display: grid;
}

.committee-shared-overflow:has(.committee-shared-row:target) > .committee-shared-list {
  display: grid;
}

.committee-shared-overflow:target > .committee-shared-controls .committee-shared-open {
  display: none;
}

.committee-shared-overflow:has(.committee-shared-row:target) > .committee-shared-controls .committee-shared-open {
  display: none;
}

.committee-shared-overflow:not(:target) > .committee-shared-controls .committee-shared-close {
  display: none;
}

.committee-shared-overflow:has(.committee-shared-row:target) > .committee-shared-controls .committee-shared-close {
  display: inline-flex;
}

@media print {
  .committee-shared-controls {
    display: none;
  }

  .committee-shared-members,
  .committee-shared-overflow > .committee-shared-list {
    display: grid;
  }
}

/*
 * Recorded board positions on land use projects.
 *
 * The overflow disclosure is held behind a fragment rather than a <details>
 * element, for the same reason the district project list is: a browser restores
 * a history entry's URL and scroll offset, not an element's open state, so
 * putting the expansion in the URL is what lets a reader open the rest of the
 * list, follow a project, and come back to the list as they left it. With no
 * stylesheet at all the whole list simply renders, which is the right failure.
 */
.board-land-positions-overflow {
  margin-block-start: var(--space-2);
}

.board-land-positions-overflow > .board-land-positions-overflow-list,
.board-land-positions-overflow > .board-land-positions-less {
  display: none;
}

.board-land-positions-overflow:target > .board-land-positions-overflow-list {
  display: grid;
  margin-block-end: var(--space-2);
}

.board-land-positions-overflow:target > .board-land-positions-less {
  display: inline-block;
}

.board-land-positions-overflow:target > .board-land-positions-more {
  display: none;
}

.board-land-positions-more,
.board-land-positions-less {
  display: inline-block;
  /* WCAG 2.5.8: a comfortable target on a touch screen. */
  min-height: 24px;
  padding-block: var(--space-1);
  color: var(--color-action);
  font-weight: 600;
}

.board-land-positions-advisory,
.board-land-positions-tally-boundary,
.board-land-positions-row-boundary {
  max-width: var(--measure);
}

.board-land-position-id {
  color: var(--color-text-muted);
  font-weight: 400;
}

.board-land-position-waiver {
  display: block;
  max-width: var(--measure);
}

/* Progressive enhancement follows the calendar grammar: before binding, the
   ordinary title link is the only offered destination. Once the behaviour is
   ready, the title-sized inspect button becomes primary and a separately named
   project link stays available beside it. */
.board-land-position-inspect {
  display: none;
}

.board-land-position-full-record {
  display: none;
}

[data-board-land-positions-ready] .board-land-position-link {
  display: none;
}

[data-board-land-positions-ready] .board-land-position-inspect {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: baseline;
  width: 100%;
  margin: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  text-align: start;
  overflow-wrap: anywhere;
  background: transparent;
  border: 0;
  border-radius: 0;
  cursor: pointer;
  min-width: 0;
  min-height: 32px;
}

[data-board-land-positions-ready] .board-land-position-full-record {
  display: inline-block;
  margin-inline-start: var(--space-2);
  font-size: .75rem;
  font-weight: 600;
  color: var(--color-action);
  overflow-wrap: anywhere;
}

[data-board-land-positions-ready] .board-land-position-inspect:hover {
  background: var(--color-canvas-subtle, transparent);
}

.board-land-position-dialog {
  max-width: 36rem;
  width: calc(100vw - 32px);
  padding: 0;
  border: 1px solid var(--color-border-strong, #7a828f);
  border-radius: 4px;
  background: var(--color-surface, #fff);
  color: var(--color-text, #12181f);
}

.board-land-position-dialog::backdrop {
  background: rgb(18 24 31 / 45%);
}

.board-land-position-dialog-inner {
  padding: 16px;
  font: 14px/1.55 var(--font-interface, ui-sans-serif, system-ui, sans-serif);
}

.board-land-position-dialog-close {
  float: right;
  margin: -4px -4px 0 8px;
  padding: 4px 10px;
  font: inherit;
  font-size: 13px;
  color: inherit;
  background: transparent;
  border: 1px solid var(--color-border-strong, #7a828f);
  border-radius: 2px;
  cursor: pointer;
  min-height: 32px;
}

.board-land-position-dialog-kicker {
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .02em;
  color: var(--color-text-muted, #5b6470);
}

.board-land-position-dialog-title {
  margin: 4px 0 8px;
  font-size: 18px;
  line-height: 1.25;
  /* A long published project name wraps rather than pushing the dialog wide. */
  overflow-wrap: anywhere;
}

.board-land-position-dialog-subhead {
  margin: 14px 0 4px;
  font-size: 13px;
  font-weight: 700;
}

.board-land-position-dialog-facts {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 2px;
}

.board-land-position-dialog-facts li {
  overflow-wrap: anywhere;
}

.board-land-position-dialog-others {
  margin: 0;
  display: grid;
  gap: 4px;
}

.board-land-position-dialog-other {
  display: grid;
  grid-template-columns: minmax(0, max-content) minmax(0, 1fr);
  gap: 2px 12px;
}

.board-land-position-dialog-other dt {
  font-weight: 600;
  color: var(--color-text-muted, #5b6470);
}

.board-land-position-dialog-other dd {
  margin: 0;
  overflow-wrap: anywhere;
}

.board-land-position-dialog-other-note {
  grid-column: 2;
  color: var(--color-text-muted, #5b6470);
  font-size: 13px;
}

.board-land-position-dialog-note,
.board-land-position-dialog-others-none {
  margin: 10px 0 0;
  color: var(--color-text-muted, #5b6470);
  font-size: 13px;
}

.board-land-position-dialog-actions {
  margin: 14px 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: baseline;
}

/* Both controls in the action row are real destinations a reader is asked to
   choose between, so each gets a box a pointer can land on without hitting its
   neighbour. */
.board-land-position-dialog-open,
.board-land-position-dialog-portal {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  min-height: 24px;
  padding: 2px 0;
}

.board-land-position-dialog-open {
  font-weight: 600;
}

.board-land-position-dialog-portal,
.board-land-position-dialog-record {
  font-size: 13px;
  color: var(--color-text-muted, #5b6470);
}

.board-land-position-dialog-record {
  margin: 12px 0 0;
  overflow-wrap: anywhere;
}

/*
 * Board decisions keep their source passage and their excluded tallies behind
 * fragments rather than <details> elements. A browser restores a history
 * entry's URL and scroll offset, not an element's open state, so a reader who
 * opens a passage, follows the link to the published document and presses Back
 * returns to the list exactly as they left it. Each control is a plain
 * same-page link: no script, no new tab, no subscription. With no stylesheet at
 * all every passage and tally simply renders, which is the right failure.
 */
.board-decision + .board-decision {
  margin-block-start: var(--space-3);
  padding-block-start: var(--space-3);
  border-block-start: 1px solid var(--color-border);
}

.board-decision-plain {
  margin-block: var(--space-1) 0;
  font-weight: 600;
}

.board-decision-votes {
  margin-block: var(--space-2) 0;
  padding-inline-start: 0;
  list-style: none;
  display: grid;
  gap: var(--space-1);
}

.board-decision-vote {
  min-width: 0;
  overflow-wrap: anywhere;
}

.board-decision-quote {
  margin-block: var(--space-1);
  margin-inline: 0;
  padding-inline-start: var(--space-2);
  border-inline-start: 3px solid var(--color-border-strong);
  color: var(--color-text-soft);
}

.board-decision-excluded-list {
  margin-block: var(--space-1) 0;
  padding-inline-start: 0;
  list-style: none;
  display: grid;
  gap: var(--space-1);
}

.board-decision-passage,
.board-decision-excluded {
  margin-block-start: var(--space-2);
}

.board-decision-passage > .board-decision-passage-body,
.board-decision-passage > .board-decision-less,
.board-decision-excluded > .board-decision-excluded-body,
.board-decision-excluded > .board-decision-less {
  display: none;
}

.board-decision-passage:target > .board-decision-passage-body,
.board-decision-excluded:target > .board-decision-excluded-body {
  display: block;
  margin-block-end: var(--space-2);
}

.board-decision-passage:target > .board-decision-less,
.board-decision-excluded:target > .board-decision-less {
  display: inline-block;
}

.board-decision-passage:target > .board-decision-more,
.board-decision-excluded:target > .board-decision-more {
  display: none;
}

.board-decision-more,
.board-decision-less {
  display: inline-block;
  /* WCAG 2.5.8: a comfortable target on a touch screen. */
  min-height: 24px;
  padding-block: var(--space-1);
  color: var(--color-action);
  font-weight: 600;
}

/* Community board budget requests — the district's requests to city agencies
 * and the dated answers published for them.
 *
 * The agency scope is a fragment, not a script. A group past the opening few
 * keeps its heading and its count but holds its list closed until the page's
 * own address names it, because a browser restores a history entry's URL and
 * scroll offset and not an element's open state — so putting the chosen agency
 * in the URL is what lets a reader open one, follow a request out, and come
 * back to the same agency at the same place. With no stylesheet at all every
 * group simply renders open, which is the right failure.
 */
.board-budget-requests-scope {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-2);
  margin: var(--space-2) 0;
  padding: 0;
  list-style: none;
}

.board-budget-requests-scope-link {
  display: inline-block;
  /* WCAG 2.5.8: a comfortable target on a touch screen. */
  min-height: 24px;
  padding-block: var(--space-1);
}

.board-budget-requests-scope-count {
  color: var(--color-text-muted);
}

.board-budget-request-group {
  margin-block-start: var(--space-3);
}

.board-budget-request-group > h3 {
  margin-block-end: var(--space-1);
}

.board-budget-request-group[data-budget-request-group-collapsed] > .board-budget-request-list,
.board-budget-request-group[data-budget-request-group-collapsed] > .board-budget-request-group-close {
  display: none;
}

.board-budget-request-group[data-budget-request-group-collapsed]:target > .board-budget-request-list {
  display: grid;
}

/* A request deep link is a valid destination too. Its containing agency must
 * open before the browser scrolls to the request, without requiring script. */
.board-budget-request-group[data-budget-request-group-collapsed]:has(.board-budget-request:target) > .board-budget-request-list {
  display: grid;
}

.board-budget-request-group[data-budget-request-group-collapsed]:target > .board-budget-request-group-close {
  display: inline-block;
}

.board-budget-request-group[data-budget-request-group-collapsed]:has(.board-budget-request:target) > .board-budget-request-group-close {
  display: inline-block;
}

.board-budget-request-group[data-budget-request-group-collapsed]:target > .board-budget-request-group-open {
  display: none;
}

.board-budget-request-group[data-budget-request-group-collapsed]:has(.board-budget-request:target) > .board-budget-request-group-open {
  display: none;
}

@media print {
  .board-budget-request-group-open,
  .board-budget-request-group-close {
    display: none !important;
  }

  .board-budget-request-group[data-budget-request-group-collapsed] > .board-budget-request-list {
    display: grid !important;
  }
}

.board-budget-request-group-open,
.board-budget-request-group-close {
  display: inline-block;
  /* WCAG 2.5.8: a comfortable target on a touch screen. */
  min-height: 24px;
  padding-block: var(--space-1);
  color: var(--color-action);
  font-weight: 600;
}

.board-budget-requests-boundary,
.board-budget-requests-rank-boundary,
.board-budget-requests-changed,
.agency-budget-requests-boundary,
.agency-budget-requests-scope,
.agency-budget-requests-changed,
.board-budget-request-explanation,
.agency-budget-request-more {
  max-width: var(--measure);
}

.board-budget-request-code {
  color: var(--color-text-muted);
  font-weight: 400;
}

.board-budget-request-explanation {
  margin-block: var(--space-1);
}

.board-budget-request-answers {
  margin: var(--space-1) 0 0;
  padding-inline-start: var(--space-3);
}

.board-budget-request-answer {
  max-width: var(--measure);
  margin-block-end: var(--space-1);
}

.board-budget-request-answer-date {
  font-weight: 600;
}

.board-budget-request-answer[data-answer-state="changed"] > .board-budget-request-answer-note {
  font-weight: 600;
}

/* The inspect control is progressive enhancement: it stays out of the
   document's flow until the boot module marks the section ready, so a reader
   without scripting is only ever offered the links, which work for them, and
   every fact it would have shown is already written into the row. */
.board-budget-request-inspect {
  display: none;
}

[data-budget-requests-ready] .board-budget-request-inspect {
  display: inline-block;
  margin-inline-start: var(--space-1);
  padding: 1px 8px;
  font: inherit;
  font-size: .75rem;
  font-weight: 600;
  color: var(--color-action);
  background: transparent;
  border: 1px solid currentColor;
  border-radius: 2px;
  cursor: pointer;
  /* WCAG 2.5.8: a comfortable target on a touch screen. */
  min-height: 24px;
}

[data-budget-requests-ready] .board-budget-request-inspect:hover {
  background: var(--color-canvas-subtle, transparent);
}

.budget-request-dialog {
  max-width: 36rem;
  width: calc(100vw - 32px);
  padding: 0;
  border: 1px solid var(--color-border-strong, #7a828f);
  border-radius: 4px;
  background: var(--color-surface, #fff);
  color: var(--color-text, #12181f);
}

.budget-request-dialog::backdrop {
  background: rgb(18 24 31 / 45%);
}

.budget-request-dialog-inner {
  padding: 16px;
  font: 14px/1.55 var(--font-interface, ui-sans-serif, system-ui, sans-serif);
}

.budget-request-dialog-close {
  float: right;
  margin: -4px -4px 0 8px;
  padding: 4px 10px;
  font: inherit;
  font-size: 13px;
  color: inherit;
  background: transparent;
  border: 1px solid var(--color-border-strong, #7a828f);
  border-radius: 2px;
  cursor: pointer;
  /* WCAG 2.5.8: a comfortable target on a touch screen. */
  min-height: 24px;
}

.budget-request-dialog-kicker {
  margin: 0;
  color: var(--color-text-muted);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.budget-request-dialog-title {
  margin: 4px 0 0;
  font-size: 18px;
  line-height: 1.3;
}

.budget-request-dialog-code {
  margin: 2px 0 0;
  color: var(--color-text-muted);
}

.budget-request-dialog-subhead {
  margin: 12px 0 4px;
  font-size: 14px;
}

.budget-request-dialog-facts {
  margin: 8px 0 0;
  padding-inline-start: 18px;
}

.budget-request-dialog-facts li {
  margin-block-end: 2px;
}

.budget-request-dialog-answers {
  margin: 4px 0 0;
  padding-inline-start: 18px;
}

.budget-request-dialog-answer {
  margin-block-end: 8px;
}

.budget-request-dialog-answer-date {
  margin: 0;
  font-weight: 600;
}

.budget-request-dialog-answer-text,
.budget-request-dialog-explanation {
  margin: 2px 0 0;
}

.budget-request-dialog-answer-note {
  margin: 2px 0 0;
  color: var(--color-text-muted);
}

.budget-request-dialog-note {
  margin: 8px 0 0;
  color: var(--color-text-muted);
}

.budget-request-dialog-actions {
  margin: 12px 0 0;
}

/* Hearing preparation: the board's published agenda beside the previous
 * cycle's own record.
 *
 * The whole section is ordinary flow content, so with no stylesheet it renders
 * as an ordered list of times and titles followed by prose — which is the
 * correct failure, because the reading is a sequence of statements and not a
 * layout. Everything below is spacing and emphasis.
 *
 * The two fiscal years are the one thing the styling is asked to help with.
 * The budget segment is marked out from the rest of the evening, and the
 * previous cycle's sentence naming both years is given the weight of a lede,
 * so a reader skimming still meets the distinction rather than only the list.
 */
.board-hearing-segments {
  margin: var(--space-2) 0 0;
  padding: 0;
  list-style: none;
}

.board-hearing-segment {
  margin-block-start: var(--space-2);
  padding-inline-start: var(--space-2);
  border-inline-start: 2px solid var(--color-border-subtle, currentColor);
}

.board-hearing-segment[data-hearing-budget-segment] {
  border-inline-start-color: var(--color-action);
}

.board-hearing-segment-time {
  font-variant-numeric: tabular-nums;
}

.board-hearing-segment-label {
  color: var(--color-text-muted);
  font-size: .875rem;
}

.board-hearing-segment[data-hearing-budget-segment] > .node-record-main > .board-hearing-segment-label {
  color: var(--color-action);
  font-weight: 600;
}

.board-hearing-segment-title,
.board-hearing-segment-detail,
.board-hearing-participation-passage,
.board-hearing-example-question {
  margin: var(--space-1) 0 0;
}

.board-hearing-agenda-links,
.board-hearing-participation-action,
.board-hearing-participation-watch,
.board-hearing-previous-link,
.board-hearing-document-link,
.board-hearing-disagreement-link {
  margin: var(--space-2) 0 0;
}

.board-hearing-previous-lede {
  margin-block-start: var(--space-2);
}

.board-hearing-example-list {
  margin: var(--space-2) 0 0;
  padding: 0;
  list-style: none;
}

.board-hearing-example-statement {
  margin: var(--space-1) 0 0;
  padding-inline-start: var(--space-2);
  border-inline-start: 2px solid var(--color-border-subtle, currentColor);
}

.board-hearing-documents {
  margin: var(--space-2) 0 0;
  padding: 0;
  list-style: none;
}

.board-hearing-document,
.board-hearing-disagreement {
  margin-block-start: var(--space-2);
}

/* A document this site has not read is marked as such in the flow of the list,
   not only in its sentence, so the state survives a skim. */
.board-hearing-document[data-extraction-state="not_extracted"] > .board-hearing-document-state,
.board-hearing-document[data-extraction-state="not_attempted"] > .board-hearing-document-state {
  font-style: italic;
}

.board-hearing-disagreements {
  margin: var(--space-2) 0 0;
  padding: 0;
  list-style: none;
}

.board-hearing-disagreement-code {
  font-variant-numeric: tabular-nums;
}

.board-hearing-disagreement-register,
.board-hearing-disagreement-document {
  margin: var(--space-1) 0 0;
  padding-inline-start: var(--space-2);
  border-inline-start: 2px solid var(--color-border-subtle, currentColor);
}

/* The capital project a request names: a block inside the request row, set off
   by a rule rather than a box so it reads as part of the record it belongs to
   and never as a second card competing with it. Logical properties throughout,
   so the inset side follows the reader's writing direction. */
.board-request-project {
  margin-block-start: var(--space-2);
  padding-inline-start: var(--space-2);
  border-inline-start: 2px solid var(--color-border, #d7dce3);
  max-width: var(--measure);
}

.board-request-project-heading {
  margin: 0;
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.board-request-project-identity {
  margin-block: var(--space-1) 0;
}

.board-request-project-code {
  color: var(--color-text-muted);
  font-weight: 400;
}

.board-request-project-named,
.board-request-project-passage,
.board-request-project-spelling,
.board-request-project-scope,
.board-request-project-difference,
.board-request-project-boundary {
  margin-block: var(--space-1) 0;
  max-width: var(--measure);
}

.board-request-project-observations {
  margin-block: var(--space-1) 0;
  padding-inline-start: var(--space-3);
}

.board-request-project-observation {
  max-width: var(--measure);
  margin-block-end: 2px;
}

.board-request-project-difference {
  font-weight: 600;
}

/* Every destination is an ordinary anchor. They wrap onto their own lines on a
   narrow screen rather than forcing the row to scroll sideways. */
.board-request-project-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-2);
  margin-block: var(--space-2) 0;
}

.budget-request-dialog-project-identity,
.budget-request-dialog-project-named,
.budget-request-dialog-project-passage,
.budget-request-dialog-project-spelling,
.budget-request-dialog-project-scope,
.budget-request-dialog-project-difference {
  margin: 2px 0 0;
}

.budget-request-dialog-project-difference {
  font-weight: 600;
}

.budget-request-dialog-project-observations {
  margin: 4px 0 0;
  padding-inline-start: 18px;
}

.budget-request-dialog-project-observations li {
  margin-block-end: 2px;
}

.budget-request-dialog-project-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  margin: 8px 0 0;
}

/* Follow / calendar / feed discovery group (shared across Browse, Near You, Now). */
.follow-discovery {
  display: grid;
  gap: 8px;
  max-width: 46rem;
  margin: 2px 0 6px;
  padding: 10px 12px;
  border: 1px solid var(--rule);
  border-radius: 8px;
  background: var(--paper-2);
}
.follow-discovery-kicker {
  margin: 0;
  color: var(--muted);
  font: 750 10px/1.2 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.follow-discovery-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: center;
}
.follow-discovery-actions a,
.follow-discovery-actions button {
  color: var(--oxblood);
  font: 700 12.5px/1.3 ui-sans-serif, system-ui, sans-serif;
  text-decoration: underline;
  text-underline-offset: 2px;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}
.follow-discovery-semantics {
  margin: 0;
  padding-inline-start: 1.1rem;
  color: var(--ink-soft, var(--muted));
  font: 12.5px/1.45 ui-sans-serif, system-ui, sans-serif;
}
.follow-discovery-semantics li { margin: 0 0 4px; }
.follow-discovery-feeds { margin: 0; }
.follow-discovery-feeds summary {
  cursor: pointer;
  color: var(--oxblood);
  font: 700 12px/1.3 ui-sans-serif, system-ui, sans-serif;
}
.follow-discovery-feeds p,
.follow-discovery-feeds ul {
  margin: 6px 0 0;
  color: var(--ink-soft, var(--muted));
  font: 12.5px/1.45 ui-sans-serif, system-ui, sans-serif;
}
.follow-discovery-guide-help { margin: 0; }
.near-hero .follow-discovery,
.now-surface .follow-discovery { margin-top: 10px; }

/* Admission-gated procurement-intent lifecycle panels on meeting/procurement detail. */
.procurement-intent-lifecycle {
  margin: 1.1rem 0 1.4rem;
  padding: 0.9rem 1rem;
  border: 1px solid var(--color-border, #d6d1c7);
  border-radius: 8px;
  background: var(--color-surface, #fff);
}
.procurement-intent-lifecycle h2 {
  margin: 0 0 0.45rem;
  font-size: 1.15rem;
  line-height: 1.3;
}
.procurement-intent-status,
.procurement-intent-first-signal,
.procurement-intent-advance,
.procurement-intent-window {
  margin: 0.25rem 0;
  color: var(--color-text, #1b1b1b);
  font: 600 0.95rem/1.45 ui-sans-serif, system-ui, sans-serif;
}
.procurement-intent-evidence {
  display: grid;
  gap: 0.55rem;
  margin: 0.75rem 0 0.4rem;
}
.procurement-intent-evidence > div {
  padding: 0.45rem 0.55rem;
  border-left: 3px solid var(--color-border, #d6d1c7);
  background: var(--color-bg-soft, #f7f5f0);
}
.procurement-intent-evidence > div[data-evidence-state="source_fact"] {
  border-left-color: #166b70;
}
.procurement-intent-evidence > div[data-evidence-state="cityscroll_interpretation"] {
  border-left-color: #765500;
}
.procurement-intent-evidence > div[data-evidence-state="later_observation"] {
  border-left-color: #176334;
}
.procurement-intent-evidence dt {
  font: 700 0.72rem/1.3 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--color-text-muted, #666);
}
.procurement-intent-evidence dd {
  margin: 0.15rem 0 0;
  font: 0.95rem/1.5 ui-sans-serif, system-ui, sans-serif;
}
.procurement-intent-realizations {
  margin: 0.45rem 0 0.2rem;
  padding-inline-start: 1.15rem;
}
.procurement-intent-source-details {
  margin-top: 0.55rem;
}
.procurement-intent-source-details > summary {
  cursor: pointer;
  color: var(--color-text-muted, #666);
  font: 0.85rem/1.4 ui-sans-serif, system-ui, sans-serif;
}
