/* Scoped visual primitives. Layout and business state belong to features. */
body { font-family: var(--font-body); }
.font-body { font-family: var(--font-body); }
.font-display, .rc-heading { font-family: var(--font-display); }
.rc-heading { font-size: var(--font-size-heading); line-height: var(--line-height-heading); font-weight: var(--font-weight-strong); }
.rc-button, .rc-input, .rc-select, .rc-textarea, .rc-tab {
  box-sizing: border-box;
  font-family: var(--font-body);
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
  min-height: var(--control-height);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  padding: var(--space-2) var(--space-4);
  touch-action: manipulation;
}
.rc-button, .rc-tab {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-width: var(--control-height); font-weight: var(--font-weight-strong); cursor: pointer;
  transition: background-color var(--motion-duration), color var(--motion-duration);
  background: var(--color-primary); color: var(--color-on-primary); border-color: transparent;
}
.rc-button:hover:not(:disabled) { background: var(--color-primary-hover); }
.rc-button[data-variant='secondary'], .rc-tab { background: var(--color-surface-muted); color: var(--color-text); border-color: var(--color-border); }
.rc-button[data-variant='secondary']:hover:not(:disabled), .rc-tab:hover:not(:disabled) { background: var(--color-surface); }
.rc-button[data-variant='destructive'] { background: var(--color-danger); color: var(--color-on-primary); }
.rc-button[data-variant='destructive']:hover:not(:disabled) { background: var(--color-danger-hover); }
.rc-button[data-variant='ghost'] { background: transparent; color: var(--color-text); }
.rc-button[data-variant='ghost']:hover:not(:disabled) { background: var(--color-surface-muted); }
.rc-button:focus-visible, .rc-tab:focus-visible, .rc-input:focus-visible, .rc-select:focus-visible, .rc-textarea:focus-visible, .rc-dialog:focus-visible {
  outline: var(--focus-width) solid var(--color-focus); outline-offset: 3px;
}
.rc-button:disabled, .rc-tab:disabled, .rc-input:disabled, .rc-select:disabled, .rc-textarea:disabled {
  background: var(--color-disabled); color: var(--color-disabled-text); border-color: var(--color-border); cursor: not-allowed;
}
.rc-button[aria-busy='true']::before {
  content: ''; width: 1em; height: 1em; border: 2px solid var(--color-loading); border-right-color: transparent;
  border-radius: var(--radius-pill); animation: rc-spin 800ms linear infinite;
}
@keyframes rc-spin { to { transform: rotate(360deg); } }
.rc-input, .rc-select, .rc-textarea { width: 100%; color: var(--color-text); background: var(--color-surface); box-shadow: var(--shadow-control); }
.rc-input::placeholder, .rc-textarea::placeholder { color: var(--color-text-muted); opacity: 1; }
.rc-textarea { min-height: 8rem; resize: vertical; }
.rc-input[aria-invalid='true'], .rc-select[aria-invalid='true'], .rc-textarea[aria-invalid='true'] { border-color: var(--color-danger); border-width: 2px; }
.rc-field { display: grid; gap: var(--space-2); margin-block: var(--space-4); }
.rc-label { font: var(--font-weight-strong) var(--font-size-small)/var(--line-height-body) var(--font-body); color: var(--color-text); }
.rc-help, .rc-error { margin: 0; font: var(--font-weight-body) var(--font-size-small)/var(--line-height-body) var(--font-body); }
.rc-help { color: var(--color-text-muted); }
.rc-error { color: var(--color-danger); }
.rc-card, .rc-dialog {
  box-sizing: border-box; color: var(--color-text); background: var(--color-surface);
  border: 1px solid var(--color-border); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: var(--space-6);
  font: var(--font-weight-body) var(--font-size-body)/var(--line-height-body) var(--font-body);
}
.rc-card[data-variant='muted'] { background: var(--color-surface-muted); }
.rc-badge { display: inline-flex; padding: var(--space-1) var(--space-2); border: 1px solid currentColor; border-radius: var(--radius-pill); background: var(--color-surface); color: var(--color-text-muted); font: var(--font-weight-strong) var(--font-size-small)/var(--line-height-body) var(--font-body); }
.rc-badge[data-tone='success'] { color: var(--color-success); }
.rc-badge[data-tone='warning'] { color: var(--color-warning); }
.rc-badge[data-tone='danger'] { color: var(--color-danger); }
.rc-tablist { display: flex; gap: var(--space-2); overflow-x: auto; padding: var(--space-1); }
.rc-tab { flex-shrink: 0; }
.rc-tab[aria-selected='true'] { color: var(--color-on-primary); background: var(--color-primary); border-color: transparent; }
.rc-tab[aria-selected='true']:hover:not(:disabled) { background: var(--color-primary-hover); }
[data-rc-tabs] [role='tabpanel'][hidden] { display: none; }
.rc-dialog { width: min(32rem, calc(100% - var(--space-8))); max-height: calc(100dvh - var(--space-8)); overflow-y: auto; margin: auto; }
.rc-dialog::backdrop { background: var(--color-backdrop); }
@media (prefers-reduced-motion: reduce) { .rc-button, .rc-tab { transition: none; } .rc-button[aria-busy='true']::before { animation: none; } }
@media (forced-colors: active) { .rc-button, .rc-tab, .rc-card { border: 1px solid ButtonText; } }
/* Native boolean control; the associated label and explicit unset state belong to the feature. */
.rc-checkbox { width: var(--control-height); height: var(--control-height); accent-color: var(--color-primary); margin: 0; }
.rc-checkbox:focus-visible { outline: var(--focus-width) solid var(--color-focus); outline-offset: 3px; }
.rc-checkbox[aria-invalid='true'] { outline: 2px solid var(--color-danger); }
