/* Framework-independent component primitives. Load tokens.css + fonts.css first. */
.sc-system {
  box-sizing: border-box;
  font-family: var(--sc-font-body);
  font-size: var(--sc-text-body);
  line-height: 1.6;
  background: var(--sc-bg-canvas);
  color: var(--sc-fg);
  color-scheme: light;
  -webkit-font-smoothing: antialiased;
  overflow-wrap: break-word;
}
.sc-system *,
.sc-system *::before,
.sc-system *::after {
  box-sizing: border-box;
}
.sc-system [hidden] {
  display: none !important;
}
.sc-system h1,
.sc-system h2,
.sc-system h3,
.sc-system h4,
.sc-heading {
  font-family: var(--sc-font-display);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.12;
  color: var(--sc-fg-heading);
  margin: 0;
}
.sc-system h1 {
  font-size: var(--sc-page-title-size, var(--sc-text-display));
  font-weight: 800;
}
.sc-system h2 {
  font-size: var(--sc-text-h2);
}
.sc-system h3 {
  font-size: var(--sc-text-h3);
}
.sc-system h4 {
  font-size: var(--sc-text-h4);
}
.sc-system p {
  margin: 0;
}
.sc-system p + p {
  margin-top: var(--sc-space-4);
}
.sc-system img {
  max-width: 100%;
  height: auto;
  display: block;
}
:where(.sc-system) :where(button, input, select, textarea) {
  font: inherit;
  color: inherit;
}
.sc-system a {
  color: var(--sc-action-secondary-fg);
  text-underline-offset: 4px;
}
.sc-system a:hover {
  text-decoration-thickness: 2px;
}
.sc-system :focus-visible {
  outline: 3px solid var(--sc-focus-ring);
  outline-offset: 3px;
}
.sc-inverse {
  color: var(--sc-fg);
  background: var(--sc-bg-brand);
  --sc-fg: var(--sc-fg-on-brand);
  --sc-fg-heading: var(--sc-fg-on-brand);
  --sc-fg-muted: var(--sc-fg-on-brand-muted);
  --sc-focus-ring: var(--sc-focus-ring-inverse);
}
.sc-inverse--ink {
  background: var(--sc-bg-inverse);
  --sc-fg: var(--sc-fg-on-inverse);
  --sc-fg-heading: var(--sc-fg-on-inverse);
  --sc-fg-muted: var(--sc-fg-on-inverse-muted);
}
.sc-label {
  font-family: var(--sc-font-mono);
  font-size: var(--sc-text-label);
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--sc-fg-muted);
}
.sc-muted {
  color: var(--sc-fg-muted);
}
.sc-small {
  font-size: var(--sc-text-body-sm);
}
.sc-numeral {
  font-family: var(--sc-font-mono);
  font-variant-numeric: tabular-nums;
}
.sc-lede {
  font-size: var(--sc-text-body-lg);
  max-width: 60ch;
  color: var(--sc-fg-muted);
}
.sc-system code {
  font-family: var(--sc-font-mono);
  font-size: 0.8em;
  overflow-wrap: anywhere;
}
.sc-system pre {
  white-space: pre-wrap;
  background: var(--sc-bg-subtle);
  padding: var(--sc-space-4);
  border-radius: var(--sc-radius-sm);
  margin: var(--sc-space-4) 0 0;
}
.sc-row {
  display: flex;
  gap: var(--sc-space-3);
  align-items: center;
  flex-wrap: wrap;
}
.sc-stack {
  display: grid;
  gap: var(--sc-space-4);
}
.sc-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sc-layout-grid-gap);
}
.sc-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sc-layout-grid-gap);
}
.sc-wrap {
  width: 100%;
  max-width: calc(var(--sc-layout-max) + 2 * var(--sc-layout-gutter));
  padding-inline: var(--sc-layout-gutter);
  margin-inline: auto;
}
.sc-section {
  padding-block: var(--sc-layout-section);
}
.sc-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sc-space-2);
  min-height: var(--sc-control-height, 44px);
  max-width: 100%;
  padding: 10px 18px;
  border: 1px solid transparent;
  border-radius: var(--sc-radius-md);
  font-size: var(--sc-text-body-sm) !important;
  line-height: 1.35;
  font-weight: 600 !important;
  text-decoration: none !important;
  text-align: center;
  cursor: pointer;
  background: var(--sc-action-primary-bg);
  color: var(--sc-action-primary-fg) !important;
  transition:
    background-color 120ms ease,
    color 120ms ease,
    border-color 120ms ease;
}
.sc-button:hover,
.sc-button[data-state="hover"] {
  background: var(--sc-action-primary-hover-bg);
  color: var(--sc-action-primary-hover-fg) !important;
}
.sc-button:active,
.sc-button[data-state="pressed"] {
  background: var(--sc-action-primary-active-bg);
  color: var(--sc-action-primary-active-fg) !important;
}
.sc-button--secondary {
  background: var(--sc-action-secondary-bg);
  color: var(--sc-action-secondary-fg) !important;
  border-color: var(--sc-action-secondary-fg);
}
.sc-button--secondary:hover {
  background: var(--sc-action-secondary-hover-bg);
  color: var(--sc-action-secondary-hover-fg) !important;
}
.sc-button--secondary:active {
  background: var(--sc-action-secondary-active-bg);
  color: var(--sc-action-secondary-active-fg) !important;
}
.sc-button--quiet {
  background: transparent;
  color: var(--sc-action-secondary-fg) !important;
}
.sc-button--quiet:hover {
  background: var(--sc-bg-subtle);
  color: var(--sc-action-secondary-fg) !important;
}
.sc-button--danger {
  background: var(--sc-action-danger-bg);
  color: var(--sc-action-danger-fg) !important;
}
.sc-button--danger:hover {
  background: var(--sc-action-danger-hover-bg);
  color: var(--sc-action-danger-hover-fg) !important;
}
.sc-button--danger:active {
  background: var(--sc-action-danger-active-bg);
  color: var(--sc-action-danger-active-fg) !important;
}
.sc-button:disabled,
.sc-button[aria-disabled="true"] {
  background: var(--sc-bg-subtle);
  color: var(--sc-fg-muted) !important;
  border-color: var(--sc-border);
  cursor: not-allowed;
}
.sc-button[aria-busy="true"] {
  cursor: wait;
}
.sc-inverse .sc-button--secondary {
  background: transparent;
  border-color: var(--sc-fg-on-brand);
  color: var(--sc-fg-on-brand) !important;
}
.sc-inverse .sc-button--secondary:hover {
  background: var(--sc-palette-iris-700);
}
.sc-field {
  display: grid;
  gap: var(--sc-space-2);
  min-width: 0;
}
.sc-field > label,
.sc-field > legend {
  font-size: var(--sc-text-body-sm);
  font-weight: 600;
}
.sc-input {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: 11px 12px;
  border: 1px solid var(--sc-border-control);
  border-radius: var(--sc-radius-sm);
  background: var(--sc-bg-canvas);
  font-size: 16px !important;
  line-height: 1.4;
}
.sc-input::placeholder {
  color: var(--sc-fg-muted);
}
textarea.sc-input {
  resize: vertical;
  min-height: 110px;
}
.sc-input[aria-invalid="true"] {
  border: 2px solid var(--sc-status-error-fg);
}
.sc-input:disabled {
  background: var(--sc-bg-subtle);
  cursor: not-allowed;
}
.sc-help {
  font-size: var(--sc-text-body-sm);
  color: var(--sc-fg-muted);
}
.sc-error-text {
  color: var(--sc-status-error-fg);
}
.sc-check {
  display: flex;
  gap: var(--sc-space-3);
  align-items: center;
  min-height: 44px;
  font-size: var(--sc-text-body-sm);
}
.sc-check input {
  width: 20px;
  height: 20px;
  accent-color: var(--sc-palette-iris-600);
}
.sc-card {
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius-lg);
  padding: var(--sc-layout-card-padding);
  background: var(--sc-bg-canvas);
  min-width: 0;
}
.sc-card--subtle {
  background: var(--sc-bg-subtle);
}
.sc-card h3,
.sc-card h4 {
  margin-bottom: var(--sc-space-3);
}
.sc-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--sc-text-caption);
  font-weight: 600;
  line-height: 1.4;
  padding: 5px 9px;
  border-radius: var(--sc-radius-full);
  background: var(--sc-bg-subtle);
  color: var(--sc-fg-muted);
  white-space: nowrap;
}
.sc-badge--success {
  color: var(--sc-status-success-fg);
  background: var(--sc-status-success-bg);
}
.sc-badge--warning {
  color: var(--sc-status-warning-fg);
  background: var(--sc-status-warning-bg);
}
.sc-badge--error {
  color: var(--sc-status-error-fg);
  background: var(--sc-status-error-bg);
}
.sc-badge--info {
  color: var(--sc-status-info-fg);
  background: var(--sc-status-info-bg);
}
.sc-alert {
  padding: var(--sc-space-4);
  border-inline-start: 3px solid var(--sc-status-info-border);
  background: var(--sc-status-info-bg);
  color: var(--sc-status-info-fg);
  font-size: var(--sc-text-body-sm);
}
.sc-alert--error {
  border-color: var(--sc-status-error-border);
  background: var(--sc-status-error-bg);
  color: var(--sc-status-error-fg);
}
.sc-alert--success {
  border-color: var(--sc-status-success-border);
  background: var(--sc-status-success-bg);
  color: var(--sc-status-success-fg);
}
.sc-table-wrap {
  width: 100%;
  overflow-x: auto;
}
.sc-table {
  border-collapse: collapse;
  width: 100%;
  font-size: var(--sc-text-body-sm);
  text-align: left;
}
.sc-table caption {
  text-align: left;
  padding: 0 0 16px;
  color: var(--sc-fg-muted);
}
.sc-table th {
  font-weight: 500;
  color: var(--sc-fg-muted);
  background: var(--sc-bg-subtle);
}
.sc-table td,
.sc-table th {
  padding: 14px 16px;
  border-bottom: 1px solid var(--sc-border);
  vertical-align: middle;
}
.sc-table td:first-child {
  font-weight: 600;
}
.sc-table td.sc-numeral {
  text-align: right;
}
.sc-table th button {
  border: 0;
  background: none;
  padding: 8px 0;
  min-height: 44px;
  text-align: inherit;
  cursor: pointer;
}
.sc-table tr:hover td {
  background: var(--sc-bg-subtle);
}
.sc-tabs {
  display: flex;
  gap: var(--sc-space-2);
  flex-wrap: wrap;
  border-bottom: 1px solid var(--sc-border);
  margin-bottom: var(--sc-space-5);
}
.sc-tabs button {
  min-height: 44px;
  background: none;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 10px 14px;
  color: var(--sc-fg-muted);
  font-weight: 500;
  cursor: pointer;
}
.sc-tabs button[aria-selected="true"] {
  border-color: var(--sc-palette-iris-600);
  color: var(--sc-palette-iris-600);
}
.sc-empty {
  padding: var(--sc-space-7) var(--sc-space-5);
  text-align: center;
  border: 1px dashed var(--sc-border-control);
  border-radius: var(--sc-radius-lg);
}
.sc-empty p {
  margin: 12px auto 20px;
  max-width: 42ch;
  color: var(--sc-fg-muted);
}
.sc-skeleton {
  height: 14px;
  background: var(--sc-border);
  border-radius: 4px;
  margin-block: 12px;
}
.sc-skeleton--title {
  width: 65%;
  height: 24px;
}
.sc-progress {
  width: 100%;
  height: 8px;
  accent-color: var(--sc-palette-iris-600);
}
.sc-dialog {
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius-lg);
  padding: var(--sc-space-6);
  width: min(460px, calc(100% - 32px));
  max-height: calc(100% - 32px);
  background: var(--sc-bg-canvas);
  color: var(--sc-fg);
  box-shadow: var(--sc-shadow-elevated);
}
.sc-dialog::backdrop {
  background: rgba(21, 18, 13, 0.5);
}
.sc-dialog h2 {
  font-size: var(--sc-text-h3);
  margin-bottom: 16px;
}
.sc-dialog .sc-row {
  margin-top: 24px;
  justify-content: flex-end;
}
.sc-accordion {
  border-bottom: 1px solid var(--sc-border);
  padding: 16px 0;
}
.sc-accordion summary {
  cursor: pointer;
  min-height: 44px;
  align-content: center;
  font-weight: 600;
}
.sc-accordion p {
  padding: 8px 0 12px;
  color: var(--sc-fg-muted);
  max-width: 65ch;
}
.sc-icon {
  width: 20px;
  height: 20px;
  display: inline-block;
  flex: none;
}
.sc-sr-only {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
@media (max-width: 640px) {
  .sc-grid-2,
  .sc-grid-3 {
    grid-template-columns: 1fr;
  }
  .sc-card {
    padding: var(--sc-space-4);
  }
}
@media (prefers-reduced-motion: reduce) {
  .sc-system * {
    scroll-behavior: auto !important;
    animation: none !important;
    transition: none !important;
  }
}
@media (forced-colors: active) {
  .sc-button,
  .sc-input,
  .sc-badge {
    border: 1px solid ButtonText;
  }
  .sc-skeleton {
    background: GrayText;
  }
  .sc-system :focus-visible {
    outline-color: Highlight;
  }
}

.sc-button--quiet:active {
  background: var(--sc-palette-iris-100);
  color: var(--sc-palette-iris-700) !important;
}
.sc-inverse a:not(.sc-button),
.sc-inverse .sc-button--quiet {
  color: var(--sc-palette-paper) !important;
}
.sc-inverse .sc-button--quiet:hover,
.sc-inverse .sc-button--quiet:active {
  background: var(--sc-palette-iris-700);
}
.sc-inverse :is(.sc-card, .sc-input, .sc-dialog) {
  --sc-fg: var(--sc-palette-slate-700);
  --sc-fg-heading: var(--sc-palette-ink);
  --sc-fg-muted: var(--sc-palette-slate-500);
  --sc-focus-ring: var(--sc-palette-iris-600);
  color: var(--sc-fg);
}
.sc-inverse .sc-badge:not([class*="sc-badge--"]) {
  color: var(--sc-palette-slate-500);
}
/* A light card or dialog inside an inverse section starts a light context. */
.sc-inverse :is(.sc-card, .sc-dialog) a:not(.sc-button),
.sc-inverse :is(.sc-card, .sc-dialog) .sc-button--quiet {
  color: var(--sc-fg-link) !important;
}
.sc-inverse :is(.sc-card, .sc-dialog) .sc-button--secondary {
  color: var(--sc-action-secondary-fg) !important;
  background: var(--sc-action-secondary-bg);
  border-color: var(--sc-action-secondary-fg);
}
.sc-inverse :is(.sc-card, .sc-dialog) .sc-button--secondary:hover {
  color: var(--sc-action-secondary-hover-fg) !important;
  background: var(--sc-action-secondary-hover-bg);
}
.sc-inverse :is(.sc-card, .sc-dialog) .sc-button--secondary:active {
  color: var(--sc-action-secondary-active-fg) !important;
  background: var(--sc-action-secondary-active-bg);
}
.sc-inverse :is(.sc-card, .sc-dialog) .sc-button--quiet:hover {
  background: var(--sc-bg-subtle);
}
.sc-inverse :is(.sc-card, .sc-dialog) .sc-button--quiet:active {
  background: var(--sc-palette-iris-100);
}
