/* Bartleby — admin design system. Tokens + utilities; Tailwind handles the rest. */

:root {
  --color-admin-surface:          #f9f9fc;
  --color-admin-surface-sub:      #f3f3f6;
  --color-admin-card:             #ffffff;
  --color-admin-text:             #1a1c1e;
  --color-admin-text-muted:       #58413f;
  --color-admin-accent:           #570005;
  --color-admin-accent-dim:       #7b1113;
  --color-admin-ghost:            #c0c8c4;
  --color-admin-error:            #93000a;
  --color-admin-error-bg:         #ffdad6;
}

body { font-family: 'Inter', sans-serif; background: var(--color-admin-surface); color: var(--color-admin-text); }
.material-symbols-outlined { font-variation-settings: 'FILL' 0, 'wght' 300, 'GRAD' 0, 'opsz' 24; vertical-align: middle; }

.is-hidden { display: none !important; }

/* Ambient shadow — felt, not seen. */
.shadow-admin-modal { box-shadow: 0 12px 40px rgba(26, 28, 30, 0.06); }
.shadow-admin-card  { box-shadow: 0 1px 3px rgba(26, 28, 30, 0.04); }
.border-ghost       { border-color: rgba(192, 200, 196, 0.5); }

/* Form inputs — bottom-border discipline. */
.input-admin {
  width: 100%;
  background: #ffffff;
  border: none;
  border-bottom: 1px solid rgba(192, 200, 196, 0.6);
  border-radius: 4px 4px 0 0;
  padding: 8px 10px;
  font-size: 0.875rem;
  color: var(--color-admin-text);
  outline: none;
  transition: border-bottom-color 0.15s;
}
.input-admin:focus { border-bottom: 2px solid var(--color-admin-accent); padding-bottom: 7px; }
.input-admin::placeholder { color: #adb3b4; }
textarea.input-admin { resize: vertical; min-height: 84px; }

/* Buttons — near-black primary, accent for destructive/CTA. */
.btn-admin-primary {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--color-admin-text); color: #f8f8f8;
  border-radius: 4px; font-weight: 500; font-size: 0.875rem;
  padding: 8px 20px; transition: opacity 0.15s; cursor: pointer; border: 0;
}
.btn-admin-primary:hover:not(:disabled) { opacity: 0.85; }
.btn-admin-primary:disabled { opacity: 0.4; cursor: not-allowed; }

.btn-admin-accent {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--color-admin-accent); color: #ffffff;
  border-radius: 4px; font-weight: 500; font-size: 0.875rem;
  padding: 8px 20px; transition: background 0.15s; cursor: pointer; border: 0;
}
.btn-admin-accent:hover:not(:disabled) { background: var(--color-admin-accent-dim); }
.btn-admin-accent:disabled { opacity: 0.5; cursor: not-allowed; }

.btn-admin-ghost {
  display: inline-flex; align-items: center; gap: 6px;
  background: transparent; color: var(--color-admin-text-muted);
  border: 0; padding: 6px 10px; font-size: 0.8125rem; font-weight: 500;
  cursor: pointer; border-radius: 4px;
}
.btn-admin-ghost:hover { color: var(--color-admin-text); background: rgba(192, 200, 196, 0.18); }

/* Badges — uppercase editorial label. */
.badge-admin {
  display: inline-block;
  font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase;
  padding: 3px 8px; border-radius: 4px;
}
.status-queued    { background: #eeeef0; color: #58413f; }
.status-scanning,
.status-analyzing,
.status-generating { background: #fff3b0; color: #6e5200; }
.status-done      { background: #d7f0dc; color: #14532d; }
.status-failed    { background: #ffdad6; color: #93000a; }
.status-failed_empty_scan { background: #ffe8d0; color: #6e3c00; }

/* Section card — neutral container, no editorial drama. */
.card-admin {
  background: var(--color-admin-card);
  border: 1px solid rgba(192, 200, 196, 0.4);
  border-radius: 6px;
  padding: 24px;
}

.label-admin {
  display: block;
  font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--color-admin-text-muted);
  margin-bottom: 6px;
}

/* File-drop affordance for ZIP upload. */
.file-drop {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  border: 1px dashed rgba(192, 200, 196, 0.8);
  border-radius: 6px;
  padding: 18px;
  background: var(--color-admin-surface-sub);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.file-drop:hover { background: #ffffff; border-color: var(--color-admin-accent); }

/* Download chips on the history table. */
.download-chip {
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  padding: 3px 8px; min-width: 44px;
  background: var(--color-admin-surface-sub);
  color: var(--color-admin-text);
  text-decoration: none;
  border: 1px solid rgba(192, 200, 196, 0.4);
  border-radius: 4px;
  font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
  transition: background 0.15s, border-color 0.15s;
}
.download-chip:hover { background: #ffffff; border-color: var(--color-admin-text-muted); }
.download-chip .material-symbols-outlined { font-size: 14px; }

/* Stacked download grid — 3 rows × (label + PDF + DOCX). */
.downloads-grid {
  display: inline-grid;
  grid-template-columns: auto auto auto;
  gap: 4px 6px;
  justify-content: end;
  align-items: center;
}
.downloads-grid .doc-label {
  font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--color-admin-text-muted);
  padding-right: 4px;
}

/* Force-generate link on failed_empty_scan rows. */
.force-generate-link {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 8px;
  background: #fff3cd; color: #6e3c00;
  border: 1px solid #c44a1a; border-radius: 4px;
  font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
  cursor: pointer; text-decoration: none;
}
.force-generate-link:hover { background: #ffe8a3; }
.force-generate-link .material-symbols-outlined { font-size: 14px; }

/* Inline alert — used after settings save, etc. */
.alert-admin {
  font-size: 0.8125rem; padding: 8px 12px; border-radius: 4px; margin-top: 12px;
}
.alert-admin.is-success { background: #d7f0dc; color: #14532d; }
.alert-admin.is-error   { background: var(--color-admin-error-bg); color: var(--color-admin-error); }
