/* Error page */
.error-page    { text-align: center; margin-top: var(--sp-10); }
.error-page h1 { font-size: var(--fs-4xl); color: var(--c-error); }


/* ================================================================== */


/* ================================================================== */
/* 6. UTILITIES                                                        */
/* ================================================================== */

/* Late normalization for shared controls loaded before page CSS. */
.btn {
  min-height: var(--size-touch);
  padding: 0 var(--sp-4);
  border-radius: var(--radius-field);
  font-size: var(--fs-sm);
  font-weight: 600;
  box-shadow: none;
}

.btn-sm,
.pane-tools .btn {
  min-height: var(--size-md);
  padding: 0 var(--sp-3);
  font-size: var(--fs-xs);
}

.btn-sm svg {
  width: var(--sp-4-25);
  height: var(--sp-4-25);
}

.btn-primary {
  border-color: var(--c-link);
  color: var(--c-surface);
  background: var(--c-link);
}

.btn-secondary {
  color: var(--c-text);
  background: var(--c-surface);
}

.status-badge {
  min-height: var(--sp-6);
  padding: 0 var(--sp-2);
  border: var(--border-width) solid transparent;
  border-radius: var(--radius-field);
  background: var(--tone-bg, var(--status-gray-bg));
  color: var(--tone-fg, var(--status-gray-fg));
  font-size: var(--fs-xs);
  font-weight: 600;
  line-height: 1;
}

.side-pane .row-badges .status-badge,
.pane-workspace .row-badges .status-badge {
  padding: 0 var(--sp-2);
}

.badge-list {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.badge-list-end {
  justify-content: flex-end;
}

.action-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-3);
}

.action-row-end {
  justify-content: flex-end;
}

/* Shared surfaces */
.page-heading {
  margin: 0 0 var(--sp-3);
}

.page-heading span {
  display: block;
  margin-bottom: var(--sp-1);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.page-heading h1 {
  margin: 0;
  color: var(--c-text);
  font-size: var(--fs-3xl);
  line-height: 1.08;
  letter-spacing: 0;
}

.page-heading p {
  margin: var(--sp-1) 0 0;
  color: var(--c-text-muted);
}

.eyebrow {
  color: var(--c-link);
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0;
  text-transform: uppercase;
}

.workspace-surface {
  min-width: 0;
  min-height: 0;
  max-width: none;
  overflow-y: auto;
  padding: var(--sp-3-5) var(--sp-4-5) 0;
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
  box-shadow: var(--my-panel-shadow);
  scroll-behavior: smooth;
}

.workspace-view {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  padding: var(--sp-3) var(--my-page-gutter);
}

.section-panel {
  min-width: 0;
  padding: var(--sp-3) 0;
  background: transparent;
  scroll-margin-top: var(--sp-6);
}

.section-panel h2,
.section-panel h3 {
  margin: 0 0 var(--sp-2);
  color: var(--c-text);
  line-height: 1.2;
  letter-spacing: 0;
}

.section-panel h2 {
  font-size: var(--fs-lg);
}

.section-panel h3 {
  font-size: var(--fs-base);
}

@media (max-width: 640px) {
  .workspace-view {
    padding: var(--sp-2-5) var(--my-page-gutter);
  }

  .workspace-surface {
    padding: var(--sp-3) var(--sp-2-5) 0;
  }
}

.list-pane,
.detail-pane,
.file-list,
.picker-card,
.picker-choice,
.message-card,
.compose-panel,
.choice-grid label,
.rec-list,
.orcid-results-list,
.user-menu-panel,
.filter-panel {
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
  box-shadow: none;
}

/* Shared list rows */
.item-card,
.list-row,
.file-row,
.orcid-result-item,
.rec-item,
.email-candidate-row {
  border-color: var(--c-border);
  background: var(--c-surface);
  color: var(--c-text);
}

.item-card:hover,
.list-row:hover,
.file-row:hover {
  background: var(--c-surface-soft);
}

.item-card.is-warning {
  border-color: var(--status-amber-border);
  background: var(--status-amber-bg);
}

.item-detail {
  display: grid;
  gap: var(--sp-1);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.item-detail p {
  margin: 0;
}

.item-detail strong {
  color: var(--c-text);
}

/* Shared selected/open states */
.list-row.is-selected,
.list-row.is-bulk-selected,
.message-card[open],
.choice-grid label.is-selected,
.picker-choice.is-current,
.picker-choice.is-recommended {
  border-color: var(--c-link);
  background: var(--c-info-bg);
  box-shadow: none;
}

/* Shared notices */
.notice,
.assignment-cta:not([data-variant="inline"]),
.review-status-strip {
  padding: var(--sp-3) var(--sp-4);
  border: var(--border-width) solid var(--notice-border, var(--c-border));
  border-radius: var(--radius-card);
  background: var(--notice-bg, var(--c-surface-soft));
  color: var(--notice-fg, var(--c-text));
  font-size: var(--fs-sm);
  line-height: var(--lh-hint);
  box-shadow: none;
}

.notice-error {
  --notice-bg: var(--c-error-bg);
  --notice-border: var(--c-error-border);
  --notice-fg: var(--status-red-fg);
}

.notice-warning {
  --notice-bg: var(--c-warning-bg);
  --notice-border: var(--c-warning-border);
  --notice-fg: var(--c-warning-text);
}

.notice-success {
  --notice-bg: var(--c-success-bg);
  --notice-border: var(--c-success);
  --notice-fg: var(--c-success-text);
}

.assignment-cta:not([data-variant="inline"]) {
  --notice-bg: var(--c-info-bg);
  --notice-border: var(--c-link);
  --notice-fg: var(--c-text);
}

/* Shared icon containers */
.avatar,
.profile-avatar,
.person-icon {
  border-radius: var(--radius-field);
}

.avatar[data-tone="author"],
.avatar[data-tone="editor"] {
  background: var(--c-link);
}

.avatar[data-tone="reviewer"] {
  background: var(--c-success);
}

.avatar[data-tone="system"] {
  background: var(--c-text-muted);
}

/* Shared search and compact filter controls */
.search-field input,
.search-field-split input[type="search"],
.search-field-split select {
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-field);
  background: var(--c-surface);
  box-shadow: none;
}

.search-field input:focus,
.search-field-split input[type="search"]:focus,
.search-field-split select:focus {
  outline: none;
  border-color: var(--c-link);
  box-shadow: var(--focus-ring);
}

.filter-panel a,
.search-clear,
.filter-menu summary,
.pane-back {
  border-radius: var(--radius-field);
  box-shadow: none;
}

/* Flatten decorative chrome that otherwise varies by page. */
.tabbar,
.user-menu-panel,
.filter-panel {
  box-shadow: none;
}

.timeline-list::before {
  background: var(--c-border);
}

.sticky-actions {
  background: var(--c-surface);
}

.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--sp-1-5);
  min-height: var(--width-md);
  padding: var(--sp-7);
  color: var(--c-text-muted);
  text-align: center;
}

.empty-state strong {
  color: var(--c-text);
  font-size: var(--fs-lg);
}

.empty-state-pane {
  min-height: var(--width-prose-lg);
}

.empty-state-compact {
  min-height: var(--width-xs);
  padding: var(--sp-5);
}

[hidden] { display: none !important; }

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

.htmx-indicator { display: none; }
.htmx-request .htmx-indicator { display: inline; }
.htmx-request.htmx-indicator  { display: inline; }

/* ================================================================== */
