:root {
  color-scheme: dark;
  --bg: #0b1020;
  --surface: #141b31;
  --surface-2: #1c2543;
  --border: #2a3558;
  --text: #eef2ff;
  --muted: #9aa6cc;
  --accent: #6ea8fe;
  --accent-strong: #4f8ef7;
  --success: #4ade80;
  --warning: #fbbf24;
  --danger: #f87171;
  --info: #38bdf8;
  --radius: 14px;
  --tap: 44px;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

* {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif;
  font-size: 16px;
  line-height: 1.45;
  min-height: 100vh;
  padding-bottom: var(--safe-bottom);
}

.shell {
  max-width: 1180px;
  margin: 0 auto;
  min-height: 100vh;
  padding-top: var(--safe-top);
}

.app-bar {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: rgba(11, 16, 32, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
}

.app-title {
  font-size: 18px;
  font-weight: 650;
  margin: 0;
  flex: 1;
}

.app-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.icon-button,
.text-button {
  min-height: var(--tap);
  min-width: var(--tap);
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  color: var(--text);
  font-size: 18px;
  cursor: pointer;
  padding: 0 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.text-button {
  min-width: auto;
  font-size: 14px;
}

.icon-button:focus-visible,
.text-button:focus-visible,
.primary-button:focus-visible,
.select:focus-visible,
input:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.proposal-editor label {
  display: block;
  color: var(--muted);
  font-size: 13px;
  margin: 12px 0 4px;
}

.proposal-editor input,
.proposal-editor textarea,
#planning-message,
.campaign-conversation textarea {
  width: 100%;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  padding: 11px;
  font: inherit;
  resize: vertical;
}

.steward-planning-primary,
.steward-plan-synopsis,
.control-room-models {
  margin-bottom: 12px;
}

.system-status-card {
  margin-bottom: 12px;
}

.system-status-details {
  border-top: 1px solid var(--border);
  margin-top: 12px;
  padding-top: 4px;
}

.system-status-details > summary {
  color: var(--accent);
  cursor: pointer;
  min-height: var(--tap);
  padding: 8px 0;
}

.system-status-detail {
  overflow-wrap: anywhere;
}

.steward-workspace,
.steve-chat-layout {
  display: grid;
  gap: 12px;
}

.steward-workspace {
  grid-template-columns: minmax(0, 1fr);
}

.steward-workspace > * {
  min-width: 0;
}

.steve-history-panel,
.steve-chat-panel {
  min-width: 0;
}

.steve-history-heading,
.steve-title-row,
.steve-message-heading,
.steve-history-entry {
  display: flex;
  align-items: center;
  gap: 8px;
}

.steve-history-heading,
.steve-title-row {
  justify-content: space-between;
}

.steve-history-heading {
  flex-wrap: wrap;
}

.steve-history-controls {
  display: grid;
  gap: 8px;
  margin: 12px 0;
}

.steve-history-controls input,
.steve-history-controls select {
  width: 100%;
  min-height: var(--tap);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  padding: 9px 10px;
  font: inherit;
}

.steve-history-help {
  font-size: 13px;
  margin: 0 0 12px;
}

.steve-title-row {
  flex-wrap: wrap;
}

.steve-title-row h2 {
  margin: 0;
}

.steve-title-controls {
  display: flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
}

.steve-chat-management {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  min-width: 0;
  max-width: 100%;
  flex-wrap: wrap;
}

.steve-title-controls input {
  min-width: 0;
  width: min(260px, 45vw);
}

.steve-history-item {
  display: block;
  width: 100%;
  min-height: var(--tap);
  min-width: 0;
  padding: 10px 12px;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface-2);
  color: var(--text);
  cursor: pointer;
}

.steve-history-entry {
  margin-top: 8px;
  position: relative;
  min-width: 0;
}

.steve-history-entry:first-child {
  margin-top: 0;
}

.steve-history-title {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 650;
}

.steve-chat-color-picker {
  position: relative;
  min-width: 0;
}

.steve-chat-color-picker > summary {
  min-height: var(--tap);
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
  padding: 0 10px;
  display: inline-flex;
  align-items: center;
  list-style: none;
  font-size: 14px;
}

.steve-chat-color-picker > summary::-webkit-details-marker {
  display: none;
}

.steve-chat-color-picker > summary::after {
  content: "▾";
  color: var(--muted);
  margin-left: 6px;
}

.steve-chat-color-picker[open] > summary::after {
  content: "▴";
}

.steve-chat-color-picker > summary:focus-visible,
.steve-color-option:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.steve-chat-color-menu {
  position: absolute;
  z-index: 2;
  top: calc(100% + 6px);
  right: 0;
  width: min(300px, calc(100vw - 32px));
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  box-shadow: 0 10px 28px rgba(0, 0, 0, .28);
}

.steve-chat-color-label {
  display: block;
  color: var(--muted);
  font-size: 13px;
  margin-bottom: 8px;
}

.steve-chat-color-options {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.steve-color-option {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 36px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-2);
  color: var(--text);
  cursor: pointer;
  padding: 0 10px;
}

.steve-color-swatch {
  width: 13px;
  height: 13px;
  flex: 0 0 13px;
  border-radius: 50%;
  background: var(--steve-marker);
}

.steve-color-default {
  color: var(--muted);
}

.steve-danger-button {
  color: var(--danger);
}

.steve-history-entry.is-archived .steve-history-item {
  border-style: dashed;
  opacity: 0.82;
}

.steve-color-coral { --steve-marker: #ff7675; }
.steve-color-orange { --steve-marker: #ff9f43; }
.steve-color-yellow { --steve-marker: #feca57; }
.steve-color-green { --steve-marker: #1dd1a1; }
.steve-color-cyan { --steve-marker: #48dbfb; }
.steve-color-blue { --steve-marker: #54a0ff; }
.steve-color-purple { --steve-marker: #a55eea; }
.steve-color-pink { --steve-marker: #ff6bcb; }

.steve-history-title.steve-color-coral,
.steve-history-title.steve-color-orange,
.steve-history-title.steve-color-yellow,
.steve-history-title.steve-color-green,
.steve-history-title.steve-color-cyan,
.steve-history-title.steve-color-blue,
.steve-history-title.steve-color-purple,
.steve-history-title.steve-color-pink {
  color: var(--steve-marker);
}

.steve-history-item.is-current {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px var(--accent);
}

.steve-chat-panel {
  display: flex;
  flex-direction: column;
  min-height: 420px;
}

.steve-chat-panel .conversation-list {
  flex: 1;
  min-height: 180px;
  overflow-y: auto;
}

.steve-message-user {
  background: rgba(110, 168, 254, 0.08);
  border-radius: 10px;
  padding-inline: 10px;
}

.steve-message-assistant {
  background: rgba(74, 222, 128, 0.06);
  border-radius: 10px;
  padding-inline: 10px;
}

.steve-message span {
  margin-left: 8px;
}

.steve-plain-text {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.steve-message-content {
  min-width: 0;
  overflow-wrap: anywhere;
}

.steve-markdown > :first-child { margin-top: 8px; }
.steve-markdown > :last-child { margin-bottom: 8px; }
.steve-markdown p { margin: 10px 0; }
.steve-markdown h1,
.steve-markdown h2,
.steve-markdown h3,
.steve-markdown h4,
.steve-markdown h5,
.steve-markdown h6 {
  line-height: 1.2;
  margin: 14px 0 6px;
}
.steve-markdown h1 { font-size: 1.35rem; }
.steve-markdown h2 { font-size: 1.2rem; }
.steve-markdown h3 { font-size: 1.08rem; }
.steve-markdown ul,
.steve-markdown ol { margin: 8px 0; padding-left: 1.5rem; }
.steve-markdown ul ul,
.steve-markdown ul ol,
.steve-markdown ol ul,
.steve-markdown ol ol { margin: 2px 0; }
.steve-markdown li { margin: 3px 0; }
.steve-markdown blockquote {
  border-left: 3px solid var(--accent);
  color: var(--muted);
  margin: 10px 0;
  padding: 2px 0 2px 12px;
}
.steve-markdown hr { border: 0; border-top: 1px solid var(--border); margin: 14px 0; }
.steve-markdown a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.steve-markdown code {
  background: rgba(110, 168, 254, 0.12);
  border-radius: 4px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.9em;
  overflow-wrap: anywhere;
  padding: 2px 4px;
  word-break: break-word;
}
.steve-markdown .markdown-code-block {
  background: #0a0f1d;
  border: 1px solid var(--border);
  border-radius: 9px;
  margin: 12px 0;
  max-width: 100%;
  overflow: hidden;
}
.steve-markdown .markdown-code-toolbar {
  align-items: center;
  background: rgba(42, 53, 88, 0.45);
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  min-height: 34px;
  padding: 3px 6px 3px 10px;
}
.steve-markdown .markdown-code-language {
  color: var(--muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12px;
}
.steve-markdown .markdown-copy-button {
  font-size: 12px;
  min-height: 30px;
  padding: 0 8px;
}
.steve-markdown pre {
  margin: 0;
  max-width: 100%;
  overflow-x: auto;
  padding: 12px;
  -webkit-overflow-scrolling: touch;
  white-space: pre;
}
.steve-markdown pre code {
  background: transparent;
  border-radius: 0;
  display: block;
  overflow-wrap: normal;
  padding: 0;
  white-space: inherit;
  word-break: normal;
  width: max-content;
  min-width: 100%;
}
.steve-markdown .markdown-table-wrap {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: 10px 0;
}
.steve-markdown table {
  border-collapse: collapse;
  min-width: 420px;
  width: 100%;
}
.steve-markdown th,
.steve-markdown td {
  border: 1px solid var(--border);
  padding: 7px 9px;
  text-align: left;
  vertical-align: top;
}
.steve-markdown th { background: rgba(42, 53, 88, 0.45); }
.steve-markdown input[type="checkbox"] { accent-color: var(--accent); margin-right: 6px; }

.steve-composer {
  border-top: 1px solid var(--border);
  margin-top: 12px;
  padding-top: 12px;
}

.steve-composer textarea {
  width: 100%;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  padding: 11px;
  font: inherit;
  resize: vertical;
}

.steve-composer-actions {
  display: flex;
  gap: 8px;
  margin-top: 8px;
}

.steve-composer-actions .primary-button {
  width: auto;
  flex: 1;
  margin-top: 0;
}

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

.technical-plan-details {
  border-top: 1px solid var(--border);
  padding-top: 10px;
}

.technical-plan-details > summary,
.model-pool-details > summary {
  color: var(--accent);
  cursor: pointer;
  font-weight: 650;
  min-height: var(--tap);
  padding: 10px 0;
}

.synopsis-grid {
  margin-top: 8px;
}

.model-status-list {
  display: grid;
  gap: 6px;
}

.model-status-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
  gap: 8px;
  align-items: baseline;
  padding: 7px 0;
  border-top: 1px solid var(--border);
}

.model-status-row span,
.model-status-row small {
  overflow-wrap: anywhere;
}

.model-status-row small {
  color: var(--muted);
}

.registry-grid {
  display: grid;
  gap: 12px;
}

.registry-card {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
}

.registry-card h3 {
  margin: 0;
}

.registry-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.registry-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
  font-size: 13px;
}

.registry-table th,
.registry-table td {
  padding: 10px;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
}

.registry-table th {
  color: var(--muted);
  font-weight: 650;
  white-space: nowrap;
}

.registry-table tr:last-child td {
  border-bottom: 0;
}

.break-anywhere {
  overflow-wrap: anywhere;
}

.notebook-break-glass {
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid rgba(251, 191, 36, 0.45);
  border-radius: var(--radius);
}

.notebook-break-glass > summary {
  color: var(--warning);
  cursor: pointer;
  font-weight: 650;
  min-height: var(--tap);
  padding: 10px 0;
}

.planning-lifecycle {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin: 14px 0 4px;
  padding: 0 0 0 20px;
  color: var(--muted);
  font-size: 13px;
}

.planning-lifecycle li.current {
  color: var(--success);
  font-weight: 700;
}

.estimate-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 10px;
}

.task-editor-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  align-items: end;
  border-top: 1px solid var(--border);
  padding: 8px 0;
}

.task-editor-row .task-fields {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
}

.task-editor-row .steward-task-acceptance {
  grid-column: 1 / -1;
}

.task-editor-controls {
  display: flex;
  gap: 4px;
}

.task-editor-controls button {
  min-width: var(--tap);
}

.legacy-heading {
  margin-top: 22px;
}

.phase-lookup {
  margin: 10px 0 14px;
}

.phase-lookup > label {
  display: block;
  margin-bottom: 6px;
  color: var(--muted);
}

.phase-lookup-controls {
  display: flex;
  gap: 8px;
}

.phase-lookup-controls input {
  flex: 1;
  min-width: 0;
}

.phase-card.is-active-phase {
  border-inline-start: 4px solid var(--success);
}

.campaign-card {
  border-left: 4px solid var(--border);
}

.campaign-card.operator_attention { border-left-color: var(--warning); }
.campaign-card.running { border-left-color: var(--info); }
.campaign-card.completed { border-left-color: var(--success); }

.metric-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.metric {
  background: var(--surface-2);
  border-radius: 10px;
  padding: 10px;
}

.metric-label {
  color: var(--muted);
  display: block;
  font-size: 11px;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.metric-value {
  display: block;
  font-size: 15px;
  margin-top: 4px;
  word-break: break-word;
}

.cockpit-title {
  margin: 4px 0 12px;
}

.cockpit-title h1 {
  font-size: 25px;
  line-height: 1.2;
  margin: 2px 0 0;
}

.operator-banner {
  border: 1px solid var(--border);
  border-left: 6px solid var(--info);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 16px;
  margin-bottom: 12px;
}

.operator-banner.severity-success { border-left-color: var(--success); }
.operator-banner.severity-warning { border-left-color: var(--warning); }
.operator-banner.severity-danger { border-left-color: var(--danger); }
.operator-banner h2 { margin: 8px 0 4px; font-size: 20px; }
.operator-banner p { margin: 6px 0; }
.operator-banner-top { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.operator-banner-label { font-weight: 750; font-size: 12px; letter-spacing: .08em; }
.operator-action-required { color: var(--muted); font-size: 13px; text-align: right; }
.operator-banner-change, .operator-banner-action { color: var(--muted); font-size: 14px; }

.health-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  margin-bottom: 12px;
}

.health-item {
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  padding: 9px;
  min-width: 0;
}

.health-item strong, .health-name, .health-detail { display: block; overflow-wrap: anywhere; }
.health-name { color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.health-detail { color: var(--muted); font-size: 11px; margin-top: 3px; }
.health-healthy strong, .health-fresh strong { color: var(--success); }
.health-stale strong, .health-unknown strong { color: var(--warning); }

.execution-health-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}

.execution-health-grid > div {
  background: var(--surface-2);
  border-radius: 10px;
  padding: 10px;
}

.execution-health-grid span { display: block; color: var(--muted); font-size: 12px; margin-top: 3px; }
.execution-state { display: block; margin-top: 3px; overflow-wrap: anywhere; }
.state-fresh, .state-progressing, .state-passed { color: var(--success); }
.state-stale, .state-potentially_stalled, .state-alive_no_recent_progress, .state-awaiting_operator, .state-awaiting_deployment { color: var(--warning); }
.state-failed { color: var(--danger); }

.lifecycle-stepper, .cockpit-timeline {
  list-style: none;
  margin: 0;
  padding: 0;
}

.lifecycle-stage {
  display: grid;
  grid-template-columns: 18px 1fr;
  gap: 8px;
  min-height: 38px;
  align-items: start;
}

.stage-marker {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid var(--muted);
  margin-top: 4px;
}

.lifecycle-stage div { display: grid; gap: 1px; }
.lifecycle-stage span { color: var(--muted); font-size: 13px; }
.stage-completed .stage-marker { background: var(--success); border-color: var(--success); }
.stage-current .stage-marker { background: var(--info); border-color: var(--info); }
.stage-failed .stage-marker { background: var(--danger); border-color: var(--danger); }
.stage-not_applicable .stage-marker { border-style: dashed; }

.authority-meter { margin-top: 14px; }
.authority-meter div { display: flex; justify-content: space-between; gap: 10px; font-size: 14px; }
.authority-meter strong { font-weight: 550; text-align: right; }
progress { width: 100%; height: 10px; accent-color: var(--accent); }

.validation-state { display: flex; gap: 8px; align-items: baseline; margin-bottom: 8px; }
.validation-state span { color: var(--muted); font-size: 13px; }

.cockpit-work-item {
  border-top: 1px solid var(--border);
  padding: 10px 0;
}

.cockpit-work-item:first-of-type { border-top: 0; }
.cockpit-work-item.is-active { border-left: 3px solid var(--info); padding-left: 9px; }
.cockpit-work-item > div { display: flex; justify-content: space-between; gap: 8px; }
.cockpit-work-item p { margin: 4px 0 0; font-size: 13px; }

.cockpit-timeline li {
  display: grid;
  grid-template-columns: 118px 1fr;
  gap: 10px;
  border-top: 1px solid var(--border);
  padding: 9px 0;
}

.cockpit-timeline li:first-child { border-top: 0; }
.cockpit-timeline time, .cockpit-timeline span { color: var(--muted); font-size: 12px; }
.cockpit-timeline div { display: grid; gap: 2px; }

.intervention-card,
.decision-card,
.conversation-message {
  border-top: 1px solid var(--border);
  padding: 10px 0;
}

.intervention-card:first-child,
.decision-card:first-child,
.conversation-message:first-child {
  border-top: 0;
}

.steve-message-heading {
  justify-content: space-between;
}

.steve-message-meta {
  font-size: 12px;
}

.command-notice {
  margin: 10px 0 0;
  font-size: 14px;
  color: var(--muted);
}

.command-notice.success {
  color: var(--success);
}

.command-notice.error {
  color: var(--danger);
}

.authority-explanation {
  margin: 12px 0 0;
}

.decision-history {
  margin-top: 12px;
  border-top: 1px solid var(--border);
}

.decision-history summary {
  cursor: pointer;
  min-height: var(--tap);
  display: flex;
  align-items: center;
  color: var(--muted);
}

details.technical-evidence summary {
  cursor: pointer;
  min-height: var(--tap);
  display: flex;
  align-items: center;
  color: var(--muted);
}

.connection-state {
  font-size: 12px;
  color: var(--muted);
  padding: 0 6px;
}

.connection-state.is-stale {
  color: var(--warning);
}

.connection-state.is-error {
  color: var(--danger);
}

.app-main {
  padding: 14px;
}

.view[hidden] {
  display: none;
}

.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 12px;
}

.card h2,
.card h3 {
  margin: 0 0 8px;
  font-size: 17px;
}

.muted {
  color: var(--muted);
  font-size: 14px;
}

.toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}

.auto-refresh-label {
  font-size: 14px;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.select {
  background: var(--surface);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 8px;
  font-size: 14px;
}

.login-card {
  max-width: 400px;
  margin: 24px auto;
}

.login-card label {
  display: block;
  font-size: 14px;
  color: var(--muted);
  margin: 12px 0 4px;
}

.login-card input {
  width: 100%;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  padding: 12px;
  font-size: 16px;
}

.primary-button {
  width: 100%;
  min-height: var(--tap);
  margin-top: 18px;
  background: var(--accent-strong);
  color: #081026;
  font-weight: 650;
  font-size: 16px;
  border: none;
  border-radius: 10px;
  cursor: pointer;
}

.primary-button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.error-text {
  color: var(--danger);
  font-size: 14px;
  margin: 10px 0 0;
}

.empty-state {
  text-align: center;
  color: var(--muted);
  padding: 32px 16px;
}

.phase-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.phase-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  cursor: pointer;
  text-align: left;
  color: var(--text);
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
}

.phase-card:active {
  background: var(--surface-2);
}

.phase-card:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.phase-card-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: flex-start;
}

.phase-card-title {
  font-size: 17px;
  font-weight: 650;
  margin: 0;
}

.phase-card-meta {
  margin-top: 8px;
  font-size: 14px;
  color: var(--muted);
}

.badge {
  display: inline-block;
  font-size: 12px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 999px;
  white-space: nowrap;
  border: 1px solid var(--border);
  background: var(--surface-2);
  color: var(--muted);
}

.badge.active {
  color: #081026;
  background: var(--info);
  border-color: var(--info);
}

.badge.success {
  background: var(--success);
  color: #081026;
  border-color: var(--success);
}

.badge.warning {
  background: var(--warning);
  color: #081026;
  border-color: var(--warning);
}

.badge.danger {
  background: var(--danger);
  color: #081026;
  border-color: var(--danger);
}

.badge.pending {
  background: var(--accent-strong);
  color: #081026;
  border-color: var(--accent-strong);
}

.kv {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 12px;
  font-size: 14px;
  margin-top: 10px;
}

.kv dt {
  color: var(--muted);
}

.kv dd {
  margin: 0;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.timer {
  font-variant-numeric: tabular-nums;
}

.detail-content {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.detail-head h2 {
  font-size: 20px;
  margin: 0 0 4px;
}

.detail-head .repo {
  color: var(--muted);
  font-size: 14px;
  margin: 0 0 10px;
}

.section-title {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  margin: 2px 0 8px;
}

.heartbeat {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

.heartbeat-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--muted);
}

.heartbeat-dot.fresh { background: var(--success); }
.heartbeat-dot.stale { background: var(--warning); }
.heartbeat-dot.unknown { background: var(--info); }
.heartbeat-dot.inactive { background: var(--muted); }

.task-card {
  border-top: 1px solid var(--border);
  padding-top: 10px;
  margin-top: 10px;
}

.task-card:first-of-type {
  border-top: none;
  margin-top: 0;
  padding-top: 0;
}

.task-head {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: baseline;
}

.task-summary {
  font-weight: 600;
  margin: 0;
}

.task-state {
  font-size: 13px;
  color: var(--muted);
  white-space: nowrap;
}

.error-block {
  background: rgba(248, 113, 113, 0.12);
  border: 1px solid rgba(248, 113, 113, 0.45);
  border-radius: 10px;
  padding: 10px;
  font-size: 14px;
  margin-top: 10px;
}

.error-block pre {
  white-space: pre-wrap;
  word-break: break-word;
  margin: 6px 0 0;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 12px;
}

.event-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.event-item {
  display: flex;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--border);
  font-size: 14px;
}

.event-item:last-child {
  border-bottom: none;
}

.event-kind {
  color: var(--muted);
  min-width: 96px;
  font-size: 12px;
  word-break: break-word;
}

.event-message {
  flex: 1;
  word-break: break-word;
}

.event-time {
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.load-older {
  width: 100%;
  margin-top: 8px;
}

.new-phase-button {
  width: 100%;
  margin-bottom: 12px;
}

.plan-textarea {
  width: 100%;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  padding: 12px;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 13px;
  line-height: 1.5;
  resize: vertical;
  min-height: 160px;
}

.propose-actions {
  display: flex;
  gap: 10px;
  margin-top: 12px;
  flex-wrap: wrap;
}

.secondary-button {
  flex: 1;
  min-height: var(--tap);
  background: var(--surface-2);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  padding: 0 14px;
}

.secondary-button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.secondary-button:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.propose-actions .primary-button {
  flex: 1;
  margin-top: 0;
}

.action-bar {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 12px;
}

.action-button {
  flex: 1;
  min-width: 140px;
  margin-top: 0;
}

.copy-bar {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.copy-bar .text-button {
  flex: 1;
  min-height: var(--tap);
  white-space: normal;
  text-align: center;
}

.command-notice.warning {
  color: var(--warning);
}

.notebook-content {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 13px;
  line-height: 1.5;
  max-height: 480px;
}

.notebook-list-item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px 14px;
  cursor: pointer;
  text-align: left;
  color: var(--text);
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
}

.notebook-list-item-title {
  display: block;
  font-weight: 600;
  margin-bottom: 4px;
}

.notebook-list-item-meta {
  display: block;
  color: var(--muted);
  font-size: 13px;
}

@media (min-width: 640px) {
  .app-main { padding: 20px; }
  .card { padding: 18px; }
}

@media (min-width: 820px) {
  .registry-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .steward-workspace {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: start;
  }

  .steward-planning-primary {
    grid-column: 1;
    grid-row: 1 / span 2;
  }

  .steward-plan-synopsis,
  .steward-workspace .proposal-editor {
    grid-column: 2;
  }

  .steve-chat-layout {
    grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
    align-items: stretch;
  }
}

@media (max-width: 819px) {
  /* Long immutable snapshot IDs and other status values must wrap inside the
     synopsis instead of expanding the document past the viewport. */
  .kv {
    grid-template-columns: minmax(0, 1fr);
  }

  .kv dd {
    min-width: 0;
    overflow-wrap: anywhere;
    text-align: left;
  }

  .steve-chat-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  .steve-history-panel {
    max-height: 38vh;
    overflow-y: auto;
  }

  .steve-chat-panel {
    min-height: min(620px, 60vh);
  }

  .steve-title-row {
    align-items: flex-start;
  }

  .steve-chat-management {
    width: 100%;
    justify-content: flex-start;
  }

  .steve-title-controls {
    flex: 1 1 100%;
  }

  .steve-title-controls input {
    flex: 1 1 auto;
    width: auto;
  }
}

@media (max-width: 460px) {
  .health-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .operator-banner-top, .authority-meter div { align-items: flex-start; flex-direction: column; }
  .operator-action-required, .authority-meter strong { text-align: left; }
  .cockpit-timeline li { grid-template-columns: 1fr; gap: 2px; }
  /* Keep the complete editable proposal usable on an iPhone-width viewport.
     Task controls and estimates stack instead of competing for a narrow row. */
  .estimate-grid,
  .task-editor-row,
  .task-editor-row .task-fields { grid-template-columns: minmax(0, 1fr); }
  .task-editor-controls { flex-wrap: wrap; }
  .task-editor-controls button { flex: 1 1 var(--tap); }
  .app-actions { flex-wrap: wrap; justify-content: flex-end; }
  .steve-composer-actions { flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
    transition: none !important;
  }
}
