:root {
  color-scheme: light dark;
  --font-display: "Source Han Serif SC", "Songti SC", "STSong", serif;
  --font-body: "Segoe UI Variable", "PingFang SC", "Microsoft YaHei", sans-serif;
  --bg: oklch(0.97 0.008 235);
  --bg-elevated: oklch(0.995 0.004 235);
  --bg-muted: oklch(0.94 0.01 235);
  --line: oklch(0.84 0.012 235);
  --text: oklch(0.24 0.015 245);
  --text-soft: oklch(0.45 0.013 245);
  --accent: oklch(0.55 0.08 220);
  --accent-strong: oklch(0.47 0.09 220);
  --official: oklch(0.48 0.1 220);
  --reference: oklch(0.62 0.08 90);
  --warning: oklch(0.66 0.1 60);
  --danger: oklch(0.58 0.14 25);
  --surface-shadow: 0 18px 40px color-mix(in oklab, black 10%, transparent);
  --radius-lg: 24px;
  --radius-md: 18px;
  --radius-sm: 12px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: oklch(0.16 0.012 245);
    --bg-elevated: oklch(0.2 0.014 245);
    --bg-muted: oklch(0.24 0.015 245);
    --line: oklch(0.34 0.014 245);
    --text: oklch(0.94 0.008 245);
    --text-soft: oklch(0.74 0.012 245);
    --accent: oklch(0.71 0.07 220);
    --accent-strong: oklch(0.78 0.08 220);
    --official: oklch(0.74 0.08 220);
    --reference: oklch(0.79 0.07 90);
    --warning: oklch(0.76 0.09 60);
    --danger: oklch(0.7 0.13 25);
    --surface-shadow: 0 20px 48px color-mix(in oklab, black 45%, transparent);
  }
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
}

body {
  font-family: var(--font-body);
  color: var(--text);
  background:
    radial-gradient(circle at top left, color-mix(in oklab, var(--accent) 14%, transparent), transparent 24rem),
    linear-gradient(180deg, var(--bg), color-mix(in oklab, var(--bg) 92%, var(--accent) 8%));
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: 0.3;
  background:
    linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), color-mix(in oklab, var(--line) 20%, transparent) calc(100% - 1px)),
    linear-gradient(transparent 0, transparent calc(100% - 1px), color-mix(in oklab, var(--line) 14%, transparent) calc(100% - 1px));
  background-size: 104px 104px;
  mask-image: linear-gradient(180deg, black, transparent 86%);
}

.console-body,
.auth-body {
  min-height: 100vh;
}

.app-shell,
.admin-shell,
.auth-shell {
  position: relative;
  max-width: 1520px;
  margin: 0 auto;
  padding: clamp(18px, 3vw, 34px);
}

.topbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  margin-bottom: 18px;
}

.brand-block {
  min-width: 0;
}

.eyebrow,
.panel-kicker,
.meta-label {
  margin: 0;
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: 0.72rem;
}

.brand-block h1,
.panel h2,
.auth-panel h2,
.hero-copy h1 {
  margin: 0.3rem 0 0;
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: -0.035em;
}

.brand-block h1,
.hero-copy h1 {
  font-size: clamp(2.1rem, 4vw, 3.7rem);
  line-height: 1.02;
}

.subtle-copy,
.login-note {
  margin: 0.75rem 0 0;
  color: var(--text-soft);
  line-height: 1.7;
}

.topbar-actions,
.topbar-buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 12px;
}

.meta-card,
.panel,
.tab-button,
.auth-card,
.auth-panel,
.auth-hero {
  border: 1px solid color-mix(in oklab, var(--line) 82%, transparent);
  background: color-mix(in oklab, var(--bg-elevated) 92%, transparent);
  box-shadow: var(--surface-shadow);
}

.meta-card {
  min-width: 180px;
  padding: 14px 16px;
  border-radius: var(--radius-md);
}

.meta-card strong {
  display: block;
  margin-top: 6px;
}

.role-chip {
  display: inline-flex;
  width: fit-content;
  margin-top: 10px;
  padding: 4px 10px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--accent) 12%, var(--bg-muted));
  color: var(--accent-strong);
  font-size: 0.82rem;
  font-weight: 700;
}

.role-chip-admin {
  background: color-mix(in oklab, var(--reference) 18%, var(--bg-muted));
  color: color-mix(in oklab, var(--reference) 84%, var(--text));
}

.primary-button,
.secondary-button,
.ghost-button,
.quick-prompt,
.tab-button,
.clarification-option {
  appearance: none;
  border: 1px solid color-mix(in oklab, var(--line) 78%, transparent);
  border-radius: var(--radius-sm);
  background: color-mix(in oklab, var(--bg-muted) 72%, var(--bg-elevated));
  color: var(--text);
  cursor: pointer;
  font: inherit;
  text-decoration: none;
  transition: transform 160ms ease, border-color 160ms ease, background 160ms ease;
}

.primary-button,
.secondary-button,
.ghost-button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  padding: 11px 16px;
}

.primary-button {
  background: linear-gradient(135deg, color-mix(in oklab, var(--accent) 88%, white), var(--accent-strong));
  color: white;
  border-color: color-mix(in oklab, var(--accent) 72%, black 8%);
}

.ghost-button {
  background: color-mix(in oklab, var(--bg-elevated) 78%, transparent);
}

.primary-button:hover,
.secondary-button:hover,
.ghost-button:hover,
.quick-prompt:hover,
.tab-button:hover,
.clarification-option:hover {
  transform: translateY(-1px);
  border-color: color-mix(in oklab, var(--accent) 48%, var(--line));
}

.wide-button {
  width: 100%;
}

.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;
}

.tab-strip {
  display: flex;
  gap: 10px;
  margin-bottom: 18px;
}

.tab-button {
  min-width: 120px;
  padding: 10px 16px;
}

.tab-button.is-active {
  border-color: color-mix(in oklab, var(--accent) 56%, var(--line));
  color: var(--accent-strong);
}

.tab-panel {
  display: none;
}

.tab-panel.is-active {
  display: block;
}

.dashboard-grid {
  display: grid;
  grid-template-columns: minmax(320px, 1.06fr) minmax(360px, 1.15fr) minmax(280px, 0.82fr);
  gap: 18px;
  align-items: start;
}

.side-stack,
.debug-grid,
.stack-list {
  display: grid;
  gap: 18px;
}

.debug-grid {
  grid-template-columns: minmax(280px, 0.72fr) minmax(280px, 0.72fr) minmax(420px, 1.2fr);
}

.panel {
  padding: 18px;
  border-radius: var(--radius-lg);
}

.panel-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}

.panel h2,
.auth-panel h2 {
  font-size: clamp(1.25rem, 1.8vw, 1.8rem);
}

.quick-prompt-section,
.composer {
  margin-bottom: 18px;
}

.quick-prompt-list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 10px;
}

.quick-prompt {
  padding: 10px 14px;
}

.composer textarea,
.form-input {
  width: 100%;
  min-height: 54px;
  padding: 14px 16px;
  border-radius: var(--radius-sm);
  border: 1px solid color-mix(in oklab, var(--line) 78%, transparent);
  background: color-mix(in oklab, var(--bg-muted) 78%, var(--bg-elevated));
  color: var(--text);
  font: inherit;
}

.composer textarea {
  min-height: 120px;
  resize: vertical;
  line-height: 1.65;
}

.composer-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 12px;
}

.message-feed {
  display: grid;
  gap: 12px;
  max-height: 62vh;
  overflow: auto;
  padding-right: 4px;
}

.message {
  position: relative;
  padding: 14px 16px;
  border-radius: var(--radius-md);
  border: 1px solid color-mix(in oklab, var(--line) 72%, transparent);
  background: color-mix(in oklab, var(--bg-elevated) 92%, transparent);
}

.message::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  border-radius: 4px;
}

.message-user::before {
  background: color-mix(in oklab, var(--accent) 72%, white);
}

.message-assistant::before {
  background: var(--official);
}

.message-reference::before {
  background: var(--reference);
}

.message.empty-state {
  color: var(--text-soft);
}

.message-meta {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
  color: var(--text-soft);
  font-size: 0.82rem;
}

.message-body {
  margin: 0;
  line-height: 1.65;
  white-space: pre-wrap;
}

.status-banner,
.result-card,
.stack-card,
.conditions-grid div,
.auth-card {
  border: 1px solid color-mix(in oklab, var(--line) 74%, transparent);
  border-radius: var(--radius-md);
  background: color-mix(in oklab, var(--bg-muted) 70%, transparent);
}

.status-banner {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  padding: 14px;
  margin-bottom: 14px;
}

.status-dot {
  width: 12px;
  height: 12px;
  margin-top: 6px;
  border-radius: 999px;
  background: var(--text-soft);
}

.status-idle .status-dot {
  background: var(--text-soft);
}

.status-official .status-dot {
  background: var(--official);
}

.status-reference .status-dot {
  background: var(--reference);
}

.status-clarify .status-dot {
  background: var(--warning);
}

.status-banner strong {
  display: block;
  margin-bottom: 4px;
}

.status-banner p,
.result-card p,
.stack-card p,
.muted-empty,
.login-note {
  margin: 0;
  color: var(--text-soft);
  line-height: 1.65;
}

.result-card {
  min-height: 320px;
  padding: 18px;
}

.result-placeholder {
  display: grid;
  place-items: center;
}

.result-headline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}

.result-headline h3 {
  margin: 0;
  font-size: 1.35rem;
}

.status-pill {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 0.82rem;
  font-weight: 700;
}

.status-pill-official {
  background: color-mix(in oklab, var(--official) 14%, var(--bg-muted));
  color: var(--official);
}

.status-pill-reference {
  background: color-mix(in oklab, var(--reference) 14%, var(--bg-muted));
  color: color-mix(in oklab, var(--reference) 84%, var(--text));
}

.status-pill-warning {
  background: color-mix(in oklab, var(--warning) 16%, var(--bg-muted));
  color: color-mix(in oklab, var(--warning) 88%, var(--text));
}

.result-tag-row,
.meta-row,
.detail-grid,
.conditions-grid,
.clarification-actions,
.role-list,
.admin-grid,
.admin-summary-grid,
.admin-workspace-grid,
.filter-grid {
  display: grid;
  gap: 12px;
}

.result-tag-row {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  margin-bottom: 16px;
}

.meta-row,
.detail-grid,
.conditions-grid {
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}

.conditions-grid div,
.stack-card,
.auth-card {
  padding: 14px;
}

.conditions-grid dt,
.stack-card span {
  color: var(--text-soft);
  font-size: 0.82rem;
}

.conditions-grid dd,
.stack-card strong,
.auth-card strong {
  margin: 8px 0 0;
  font-size: 1rem;
}

.data-chip {
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  border: 1px solid color-mix(in oklab, var(--line) 74%, transparent);
  background: color-mix(in oklab, var(--bg-elevated) 76%, transparent);
}

.data-chip strong,
.data-chip span {
  display: block;
}

.data-chip strong {
  color: var(--text-soft);
  font-size: 0.82rem;
}

.data-chip span {
  margin-top: 6px;
  font-size: 1rem;
}

.reason-list,
.inline-list {
  margin: 14px 0 0;
  padding-left: 1.2rem;
  line-height: 1.7;
}

.result-footnote {
  margin-top: 16px;
  color: var(--text-soft);
}

.component-table-wrap {
  overflow: auto;
  margin-top: 10px;
}

.component-table {
  width: 100%;
  border-collapse: collapse;
}

.component-table th,
.component-table td {
  padding: 10px 8px;
  border-bottom: 1px solid color-mix(in oklab, var(--line) 68%, transparent);
  text-align: left;
}

.debug-pre {
  margin: 0;
  min-height: 280px;
  overflow: auto;
  padding: 14px;
  border-radius: var(--radius-md);
  border: 1px solid color-mix(in oklab, var(--line) 72%, transparent);
  background: color-mix(in oklab, var(--bg-muted) 72%, transparent);
  color: var(--text);
  font-family: "Consolas", "SFMono-Regular", monospace;
  font-size: 0.9rem;
}

.debug-meta-list {
  display: grid;
  gap: 12px;
}

.debug-meta-list div {
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  border: 1px solid color-mix(in oklab, var(--line) 72%, transparent);
  background: color-mix(in oklab, var(--bg-muted) 72%, transparent);
}

.debug-meta-list dt {
  color: var(--text-soft);
  font-size: 0.82rem;
}

.debug-meta-list dd {
  margin: 8px 0 0;
}

.auth-layout {
  display: grid;
  grid-template-columns: minmax(340px, 1.2fr) minmax(320px, 0.88fr);
  gap: 18px;
  align-items: stretch;
  min-height: calc(100vh - 68px);
}

.auth-hero,
.auth-panel {
  position: relative;
  overflow: hidden;
  border-radius: 32px;
}

.auth-hero {
  min-height: 720px;
}

.hero-image,
.hero-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.hero-image {
  object-fit: cover;
}

.hero-overlay {
  background:
    linear-gradient(180deg, color-mix(in oklab, black 16%, transparent), color-mix(in oklab, black 52%, transparent)),
    linear-gradient(120deg, color-mix(in oklab, var(--accent) 22%, transparent), transparent 52%);
}

.hero-copy {
  position: absolute;
  inset: auto 0 0 0;
  padding: clamp(24px, 4vw, 42px);
  color: white;
}

.hero-copy p {
  max-width: 42rem;
  line-height: 1.7;
}

.auth-panel {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
  padding: clamp(22px, 4vw, 36px);
}

.auth-panel-head {
  margin-bottom: 6px;
}

.role-list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.auth-form {
  display: grid;
  gap: 14px;
}

.form-field {
  display: grid;
  gap: 8px;
}

.form-field span {
  font-size: 0.92rem;
  color: var(--text-soft);
}

.admin-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.table-row-card {
  padding: 16px;
  border-radius: var(--radius-md);
  border: 1px solid color-mix(in oklab, var(--line) 72%, transparent);
  background: color-mix(in oklab, var(--bg-elevated) 74%, transparent);
}

.table-row-card summary {
  list-style: none;
}

.table-row-card summary::-webkit-details-marker {
  display: none;
}

.table-row-main {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px;
}

.table-row-main strong {
  display: block;
  margin-top: 8px;
}

.panel-meta {
  display: flex;
  align-items: center;
}

.filter-grid {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.filter-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 10px;
}

.pagination-bar {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  margin-top: 16px;
}

.summary-panel strong {
  display: block;
  margin-top: 10px;
  font-size: clamp(1.6rem, 2vw, 2.3rem);
}

.schema-summary-head,
.detail-json-toolbar,
.data-row-summary {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}

.schema-summary-head {
  margin-bottom: 12px;
}

.schema-chip-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.extract-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
}

.extract-textarea {
  min-height: 180px;
  resize: vertical;
}

.schema-chip {
  padding: 14px;
  border-radius: var(--radius-sm);
  border: 1px solid color-mix(in oklab, var(--line) 72%, transparent);
  background: color-mix(in oklab, var(--bg-muted) 74%, transparent);
}

.schema-chip strong {
  display: block;
  margin-top: 8px;
}

.schema-chip p {
  margin: 8px 0 0;
  color: var(--text-soft);
  font-size: 0.9rem;
  line-height: 1.5;
}

.data-row-card[open] {
  border-color: color-mix(in oklab, var(--accent) 28%, var(--line));
}

.data-row-summary {
  cursor: pointer;
}

.detail-json-panel {
  margin-top: 14px;
}

.detail-json-toolbar strong {
  margin-top: 4px;
  display: block;
}

.form-error {
  margin: 0;
  color: var(--danger);
}

.admin-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 18px;
}

.admin-workspace-grid {
  grid-template-columns: repeat(2, minmax(280px, 1fr));
  margin-bottom: 18px;
}

.admin-grid {
  grid-template-columns: 1fr;
}

button:disabled {
  cursor: not-allowed;
  opacity: 0.45;
  transform: none !important;
}

.admin-topbar {
  align-items: flex-end;
}

@media (max-width: 1100px) {
  .dashboard-grid,
  .debug-grid,
  .auth-layout,
  .admin-grid,
  .admin-summary-grid,
  .admin-workspace-grid {
    grid-template-columns: 1fr;
  }

  .auth-hero {
    min-height: 420px;
  }

  .role-list {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 720px) {
  .app-shell,
  .admin-shell,
  .auth-shell {
    padding: 14px;
  }

  .topbar,
  .topbar-actions,
  .topbar-buttons {
    flex-direction: column;
    align-items: stretch;
  }

  .tab-strip {
    overflow: auto;
  }

  .result-tag-row,
  .meta-row,
  .detail-grid,
  .conditions-grid {
    grid-template-columns: 1fr;
  }
}
