:root {
  color-scheme: light;
}

html.theme-dark {
  color-scheme: dark;
}

/* Application chrome */
.topbar {
  background: var(--header-bg);
  color: var(--header-text);
}

.brand {
  color: var(--header-text);
}

.brand small,
.userbox button:not(.theme-toggle) {
  color: var(--header-muted);
}

.nav {
  background: var(--nav-bg);
}

.nav a,
.nav-more > summary,
.nav-secondary-more-trigger {
  color: var(--nav-text);
}

.nav a:hover,
.nav-more > summary:hover,
.nav-secondary-more-trigger:hover {
  color: var(--nav-active-text);
}

.project-switch {
  color: var(--header-muted);
}

.project-switch select {
  border-color: var(--border-control);
  background: var(--surface-sunken);
  color: var(--text-primary);
}

.nav > a.active,
.nav-more.is-active > summary,
.nav-more > summary:hover,
.nav-secondary-more.is-active > .nav-secondary-more-trigger {
  background: var(--nav-active-bg);
  color: var(--nav-active-text);
}

.nav-more-menu {
  border-color: var(--border);
  background: var(--surface-card);
  box-shadow: var(--shadow-raised);
}

.nav-more-menu a {
  color: var(--text-secondary);
}

.nav-more-menu a:hover {
  background: var(--surface-emphasis);
  color: var(--nav-active-text);
}

.theme-toggle {
  border: 1px solid var(--border-control);
  background: var(--surface-emphasis);
  color: var(--text-primary);
  padding: 7px 10px;
  font-size: 12px;
}

/* Shared controls */
button.is-active,
.button.is-active,
button[aria-pressed="true"]:not(.theme-toggle),
.button[aria-pressed="true"] {
  position: relative;
  border: 1px solid var(--border-focus);
  background: var(--surface-selected);
  color: var(--text-primary);
  box-shadow: var(--shadow-active);
}

button.muted,
.button.muted {
  border: 1px solid var(--border-strong);
  background: var(--surface-interactive);
  color: var(--text-primary);
}

button.muted:hover,
button.muted:focus-visible,
.button.muted:hover,
.button.muted:focus-visible {
  border-color: var(--border-focus);
  background: var(--surface-selected);
  color: var(--text-primary);
}

label,
legend,
summary {
  color: var(--text-secondary);
}

small,
.shift-hint,
output {
  color: var(--text-muted);
}

input,
select,
textarea,
.form-grid input,
.form-grid select,
.form-grid textarea,
.stack input,
.filter select,
.confirmation-form input,
.photo-form input,
.summary-filter-row input {
  border-color: var(--input-border);
  background: var(--input-bg);
  color: var(--text-primary);
}

option {
  background: var(--input-bg);
  color: var(--text-primary);
}

input::placeholder,
textarea::placeholder {
  color: var(--text-placeholder);
}

/* Shared surfaces and tables */
.muted,
.photo-count,
.badge.welding-planned,
.weld-status.unwelded,
.user-roles span {
  background: var(--state-neutral-surface);
  color: var(--state-neutral-text);
}

.metrics article,
.panel,
.module-hero,
.login-card,
.request-card,
.queue-card,
.joints-table-wrap,
.summary-table-wrap,
.report-table-wrap {
  background: var(--surface);
}

.list a,
.joint,
.welder-card,
.repair-list a {
  background: var(--surface-card);
}

.empty {
  border-color: var(--border-strong);
}

.joints-table th,
.welder-table th,
.report-table th,
.summary-table th,
.line-navigator-table thead th,
.shift-new-table thead th,
.shift-existing-list thead th,
.ndt-selection-table th {
  border-color: var(--border);
  background: var(--table-head-bg);
  color: var(--text-secondary);
}

.summary-filter-row th,
.ndt-request-filter-row th,
.ndt-filter-row th {
  background: var(--table-filter-bg);
}

.joints-table tbody tr:hover,
.summary-table tr:hover td,
.ndt-selection-table tbody tr:hover,
.shift-existing-list tbody tr:hover,
.shift-existing-list tbody tr:focus-within {
  background: var(--table-row-hover);
  color: var(--text-primary);
}

.joints-table td,
.welder-table td,
.report-table td,
.summary-table td,
.line-navigator-table td,
.shift-new-table td,
.shift-existing-list td,
.ndt-selection-table td,
.timeline div,
.stamp-form,
.admin-list > div,
.master-joints a,
.dashboard-list a {
  border-color: var(--border-subtle);
}

/* Semantic states */
.badge.confirmed,
.weld-status.welded,
.completion-ready,
.flash.success,
.ndt-result-accepted {
  background: var(--state-success-surface);
  color: var(--state-success-text);
}

.badge.proposed,
.weld-status.active,
.completion-warning {
  background: var(--state-warning-surface);
  color: var(--state-warning-text);
}

.flash.error,
.ndt-result-rejected {
  background: var(--state-danger-surface);
  color: var(--state-danger-text);
}

.stamp {
  background: var(--state-warning-surface);
  color: var(--state-warning-text);
}

.control-list b,
.method-chip {
  background: var(--state-method-surface);
  color: var(--state-method-text);
}

.repair-callout,
.print-note {
  border-color: var(--state-repair-border);
  background: var(--state-repair-surface);
  color: var(--state-repair-text);
}

.ndt-result-delete {
  background: var(--state-neutral-surface);
  color: var(--state-neutral-text);
}

.angular-pipe-fields {
  border-color: color-mix(in srgb, var(--state-info) 48%, var(--border));
  background: var(--state-info-surface);
}

.angular-pipe-fields > b,
.ndt-files a {
  color: var(--state-info-text);
}

.progress-cell span,
.photo-card img {
  background: var(--surface-emphasis);
}

.ndt-files a {
  background: var(--surface-raised);
}

/* Legacy workspaces now consume the same semantic surface contract in both themes. */
form.panel.form-grid[method="get"],
.registry-filters,
.filter-details,
.filter-details > summary,
.filter-options,
.line-refiners,
.line-navigator-filters .actions,
.line-navigator-table-wrap,
.photo-prepare,
.recent-stamps,
.recent-stamps button,
.shift-existing-list,
.shift-new-table,
.shift-save-bar,
.shift-stamp-list label {
  border-color: var(--border);
  background: var(--surface-card);
  color: var(--text-primary);
}

form.panel.form-grid[method="get"],
.registry-filters {
  background-image: none;
  box-shadow: var(--shadow-soft);
}

.filter-details > summary,
.filter-options,
.line-refiners,
.line-navigator-filters .actions,
.photo-prepare,
.recent-stamps,
.shift-save-bar {
  background: var(--surface-raised);
}

.filter-options label,
.line-refiners label,
.shift-stamp-list label {
  background: transparent;
  color: var(--text-secondary);
}

/* Field and project surfaces */
.field-joint-card dl div,
.field-recent-actions a,
.field-stamp-search,
.field-stamp-set,
.field-stamp-set-remove,
.field-stamp-actions button,
.field-stamp-choices button,
.project-cards-list a,
.project-field-action.is-unavailable,
.project-next-actions a {
  border-color: var(--border);
  background: var(--surface-card);
  color: var(--text-primary);
}

.field-joint-card dt,
.field-recent-actions span,
.field-new-series-panel > p,
.project-cards-list small,
.project-quick-start > p,
.project-field-action.is-unavailable small,
.project-next-actions span,
.field-ndt-quick span {
  color: var(--text-muted);
}

.field-next-hint,
.field-series-status,
.field-mobile-more > summary {
  color: var(--accent);
}

.field-save-notice {
  color: var(--state-success);
}

.field-save-notice.error,
.field-stamp-warning {
  color: var(--state-danger);
}

.field-stamp-choices button.selected {
  border-color: var(--border-focus);
  background: var(--surface-selected);
  color: var(--text-primary);
}

.field-stamp-choices button.invalid {
  border-color: var(--state-danger);
  background: var(--state-danger-surface);
  color: var(--state-danger-text);
}

.field-series-panel {
  border-color: var(--border-focus);
  background: var(--surface-selected);
  box-shadow: 0 0 16px color-mix(in srgb, var(--accent) 22%, transparent);
}

.field-series-panel p {
  color: var(--text-secondary);
}

.field-new-series-panel,
.field-new-series-basic,
.field-more-actions > div,
.field-ndt-quick,
.field-upload-quick {
  border-color: var(--border);
  background: var(--surface);
  color: var(--text-primary);
}

.field-new-series-panel > summary,
.field-new-series-basic,
.field-new-series-basic-grid label,
.field-series-setup > label,
.field-series-joint-chooser {
  color: var(--text-primary);
}

.field-new-series-grid input,
.field-new-series-grid select,
.field-new-series-enabled,
.field-series-setup > label > input,
.field-series-setup > label > select,
.field-series-joint-chooser input,
.field-series-joint-chooser select,
.field-selected-stamp,
.field-new-series-basic-grid input,
.field-new-series-basic-grid select,
.project-onboarding-form input {
  border-color: var(--input-border);
  background: var(--input-bg);
  color: var(--text-primary);
}

.field-series-joint-chooser[open],
.project-cards-list a:hover,
.project-next-actions a:hover,
.field-existing-item:hover,
.field-existing-item:focus-visible {
  border-color: var(--border-focus);
  background: var(--surface-interactive);
  color: var(--text-primary);
}

.field-more-actions > summary,
.field-selected-stamp .button,
.field-ndt-quick button,
.field-photo-source-actions .muted {
  border-color: var(--border-strong);
  background: var(--surface-emphasis);
  color: var(--text-primary);
}

.field-more-actions > div,
.field-upload-quick {
  box-shadow: var(--shadow-raised);
}

.field-existing-item:hover small,
.field-existing-item:focus-visible small {
  color: var(--text-secondary);
}

.ndt-selection-wrap,
.ndt-submit-bar {
  border-color: var(--border);
  background: var(--surface);
}

.ndt-method-cell[data-method-state="selected"] {
  background: var(--surface-selected);
}

.ndt-method-cell[data-method-state="completed"] {
  background: var(--state-success-surface);
}

.field-photo-source-actions .primary,
#field-photo-submit.primary {
  border-color: var(--action-primary);
  background: var(--action-primary);
  color: var(--action-primary-text);
  box-shadow: var(--shadow-soft);
}

.field-photo-source-actions .primary:hover,
#field-photo-submit.primary:hover {
  background: var(--action-primary-hover);
}

.field-photo-source-actions .muted:hover {
  border-color: var(--border-focus);
  background: var(--surface-interactive);
}

.shift-existing-list input[type="checkbox"] {
  accent-color: var(--accent);
}
