.lib-flow > * + * {
  margin-block-start: var(--lib-flow-space, var(--lib-space-4));
}

.lib-reading-width {
  max-width: var(--lib-content-measure);
}

.lib-full-width {
  width: 100%;
}

.lib-center {
  margin-inline: auto;
}

.lib-surface {
  color: var(--lib-text-primary);
  background: var(--lib-surface-elevated);
}

.lib-surface--soft {
  background: var(--lib-surface-section);
}

/* Semantic Retrofit Group A1, 2026-09-08: deliberately NOT migrated.
   deep/inverse are a real, pre-existing, Canvas-independent fixed-dark-
   identity pairing (catalog/governance/CANVAS_AUTHORITY_MODEL.md: "Brand
   identity, not page-context -- Canvas never touches these") -- neither
   a neutral role nor one of the primary/secondary/accent brand roles the
   Color Role Contract defines a semantic alias for. Forcing this into an
   ill-fitting existing role would be a real rename, not a semantic
   migration; inventing a new role for it is real new taxonomy, out of
   this batch's scope (see "NO INFRASTRUCTURE DRIFT"). Left on the raw
   tokens it has always legitimately used. */
.lib-surface--deep {
  color: var(--lib-color-inverse);
  background: var(--lib-color-deep);
}

.lib-panel {
  padding: var(--lib-space-5);
  border: var(--lib-space-hairline) solid var(--lib-border-default);
  border-radius: var(--lib-radius-md);
  box-shadow: var(--lib-shadow-card-soft);
}

.lib-visually-hidden:not(:focus, :active) {
  position: absolute;
  width: 0.0625rem;
  height: 0.0625rem;
  padding: 0;
  margin: calc(var(--lib-space-hairline) * -1);
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.lib-no-list {
  padding-inline-start: 0;
  list-style: none;
}

.lib-grid--compact {
  --lib-grid-min: 13rem;
}
