.button {
  display: inline-flex;
  min-height: 2.55rem;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 0.62rem 0.95rem;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  background: var(--brand-750);
  color: white;
  cursor: pointer;
  font-weight: 680;
  line-height: 1.1;
  text-decoration: none;
}

.button:hover { background: var(--brand-850); }
.button-secondary { border-color: var(--line-strong); background: var(--paper); color: var(--ink-800); }
.button-secondary:hover { background: var(--brand-075); }
.button-ghost { background: transparent; color: var(--brand-750); }
.button-ghost:hover { background: var(--brand-075); }
.button-danger { background: var(--danger-750); }
.button-small { min-height: 2.1rem; padding: 0.45rem 0.7rem; font-size: 0.82rem; }
.button-icon { width: 2.6rem; padding: 0; }
.button:disabled { cursor: not-allowed; opacity: 0.48; }

.icon {
  width: 1.1rem;
  height: 1.1rem;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.grid {
  display: grid;
  gap: var(--space-4);
}

.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid-auto { grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr)); }
.grid-main-aside { grid-template-columns: minmax(0, 1.5fr) minmax(18rem, 0.65fr); }

.card,
.panel {
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
}

.card { padding: var(--space-5); }
.panel { overflow: hidden; }
.panel-header,
.panel-body,
.panel-footer { padding: var(--space-5); }
.panel-header { border-bottom: 1px solid var(--line); }
.panel-footer { border-top: 1px solid var(--line); background: var(--canvas); }
.card > :last-child,
.panel-body > :last-child { margin-bottom: 0; }

.entry-card {
  position: relative;
  display: flex;
  min-height: 0;
  flex-direction: column;
  padding: var(--space-4);
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  text-align: left;
}

.entry-card:hover {
  border-color: var(--brand-650);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.entry-card .entry-number {
  color: var(--brand-650);
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.12em;
}

.entry-card h3 { margin: auto 0 var(--space-2); font-size: 1.42rem; }
.entry-card p { margin-bottom: var(--space-4); color: var(--ink-650); }
.entry-card .entry-arrow { color: var(--brand-650); font-weight: 750; }
.entry-card-wide { min-height: 0 !important; }

.kpi-card {
  position: relative;
  min-height: 8.75rem;
  padding: var(--space-5);
  overflow: hidden;
}

.kpi-card::after {
  position: absolute;
  width: 5rem;
  height: 5rem;
  border-radius: 50%;
  background: var(--brand-075);
  content: "";
  right: -2.5rem;
  top: -2.5rem;
}

.kpi-label { color: var(--ink-650); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
.kpi-value { margin: var(--space-2) 0; font-family: var(--font-display); font-size: clamp(1.75rem, 3vw, 2.55rem); font-weight: 760; letter-spacing: -0.04em; }
.kpi-meta { color: var(--ink-650); font-size: 0.82rem; }

.status,
.chip,
.tag {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border-radius: var(--radius-pill);
  font-size: 0.76rem;
  font-weight: 680;
}

.status { padding: 0.3rem 0.55rem; }
.chip { min-height: 2rem; padding: 0.38rem 0.65rem; border: 1px solid var(--line); background: var(--paper); }
.tag { padding: 0.25rem 0.5rem; background: var(--canvas); color: var(--ink-650); }
.status-success { background: var(--success-100); color: var(--success-700); }
.status-warning { background: var(--warning-100); color: var(--warning-800); }
.status-danger { background: var(--danger-100); color: var(--danger-750); }
.status-info { background: var(--info-100); color: var(--info-700); }
.status-demo { background: var(--violet-100); color: var(--violet-700); }
.status-dot::before { width: 0.45rem; height: 0.45rem; border-radius: 50%; background: currentColor; content: ""; }

.notice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-3);
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-left-width: 4px;
  border-radius: var(--radius-sm);
  background: var(--paper);
}

.notice-info { border-left-color: var(--info-700); background: var(--info-100); }
.notice-warning { border-left-color: var(--warning-800); background: var(--warning-100); }
.notice-danger { border-left-color: var(--danger-750); background: var(--danger-100); }
.notice-success { border-left-color: var(--success-700); background: var(--success-100); }
.notice p:last-child { margin-bottom: 0; }

.metric-list,
.source-list,
.timeline,
.task-list,
.plain-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.metric-list { display: grid; gap: var(--space-3); }
.metric-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4); align-items: center; }
.metric-row strong { font-variant-numeric: tabular-nums; }

.source-list > li,
.task-list > li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--line);
}

.source-list > li:last-child,
.task-list > li:last-child { border-bottom: 0; }

.source-list p,
.task-list p { margin-bottom: 0; color: var(--ink-650); font-size: 0.84rem; }

.timeline { position: relative; display: grid; gap: 0; }
.timeline::before { position: absolute; top: 1rem; bottom: 1rem; left: 0.45rem; width: 1px; background: var(--line-strong); content: ""; }
.timeline-item { position: relative; display: grid; grid-template-columns: 1rem minmax(0, 1fr); gap: var(--space-3); padding: var(--space-3) 0; }
.timeline-dot { position: relative; z-index: 1; width: 0.9rem; height: 0.9rem; margin-top: 0.25rem; border: 3px solid var(--paper); border-radius: 50%; background: var(--brand-650); box-shadow: 0 0 0 1px var(--brand-650); }
.timeline-item.is-done .timeline-dot { background: var(--success-700); box-shadow: 0 0 0 1px var(--success-700); }
.timeline-item small { color: var(--ink-650); }

.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.field { display: grid; gap: 0.42rem; }
.field-wide { grid-column: 1 / -1; }
.field label,
.field-label { color: var(--ink-800); font-size: 0.82rem; font-weight: 730; }
.field input,
.field select,
.field textarea,
.select,
.input {
  width: 100%;
  min-height: 2.75rem;
  padding: 0.62rem 0.72rem;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: var(--paper);
}
.field textarea { min-height: 7rem; resize: vertical; }
.field-help { color: var(--ink-650); font-size: 0.78rem; }

.table-wrap { max-width: 100%; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
th,
td { padding: 0.72rem 0.8rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { color: var(--ink-650); font-size: 0.75rem; letter-spacing: 0.03em; text-transform: uppercase; }
tbody tr:hover { background: var(--brand-075); }
.number { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }

.mini-chart {
  display: flex;
  height: 10rem;
  align-items: end;
  gap: var(--space-3);
  padding-top: var(--space-5);
}
.mini-bar { position: relative; flex: 1; min-width: 1.8rem; border-radius: var(--radius-xs) var(--radius-xs) 2px 2px; background: linear-gradient(180deg, #65b5a9, var(--brand-650)); }
.mini-bar span { position: absolute; bottom: calc(100% + 0.35rem); left: 50%; font-size: 0.72rem; font-weight: 720; transform: translateX(-50%); }
.mini-bar small { position: absolute; top: calc(100% + 0.35rem); left: 50%; max-width: 5rem; overflow: hidden; color: rgb(255 255 255 / 0.68); font-size: 0.64rem; text-overflow: ellipsis; transform: translateX(-50%); white-space: nowrap; }

.chart-wrap {
  width: 100%;
  overflow-x: auto;
}

.chart-svg {
  display: block;
  width: 100%;
  min-width: 38rem;
  height: auto;
  font-family: var(--font-sans);
}

.chart-track { fill: var(--canvas); }
.chart-label,
.chart-value { fill: var(--ink-800); font-size: 13px; }
.chart-value { font-weight: 720; }
.chart-missing { fill: var(--ink-500); font-size: 12px; font-style: italic; }
.chart-warning { fill: var(--warning-800); font-size: 15px; }
.chart-grid { stroke: var(--line); stroke-width: 1; }
.chart-axis-label { fill: var(--ink-650); font-size: 11px; }
.line-series { fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3; }
.forecast-zone { fill: rgb(181 122 29 / 0.08); stroke: rgb(181 122 29 / 0.22); stroke-dasharray: 5 5; }

.chart-legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  color: var(--ink-650);
  font-size: 0.78rem;
}

.chart-legend span { display: inline-flex; align-items: center; gap: 0.35rem; }
.chart-legend i { width: 0.75rem; height: 0.75rem; border-radius: 3px; }
.chart-legend .observed-key { border: 2px solid var(--ink-650); background: transparent; }
.chart-legend .forecast-key { border: 1px dashed var(--gold-700); background: var(--gold-100); }

.stacked-chart { display: grid; gap: var(--space-4); }
.stacked-row { display: grid; grid-template-columns: minmax(8rem, 0.35fr) minmax(18rem, 1fr); align-items: center; gap: var(--space-4); }
.stacked-label { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.stacked-track { display: flex; height: 2.2rem; overflow: hidden; border-radius: var(--radius-xs); background: var(--canvas); }
.stacked-segment { display: grid; min-width: 2px; place-items: center; color: white; }
.stacked-segment b { font-size: 0.7rem; text-shadow: 0 1px 2px rgb(0 0 0 / 0.3); }

table caption {
  padding: var(--space-3) 0;
  color: var(--ink-800);
  font-weight: 730;
  text-align: left;
}

.demo-stat { padding: var(--space-4) 0; border-bottom: 1px solid rgb(255 255 255 / 0.12); }
.demo-stat:last-child { border-bottom: 0; }
.demo-stat strong { display: block; margin-bottom: var(--space-1); font-size: 1.6rem; }
.demo-stat span { color: rgb(255 255 255 / 0.65); font-size: 0.82rem; }

.empty-state { padding: var(--space-10); border: 1px dashed var(--line-strong); border-radius: var(--radius-md); background: rgb(255 255 255 / 0.55); text-align: center; }
.empty-state p { max-width: 34rem; margin-inline: auto; color: var(--ink-650); }

.meta-note {
  margin-top: var(--space-5);
  color: var(--ink-650);
  font-size: 0.82rem;
}

.entry-card-wide {
  display: grid;
  grid-template-columns: 7rem minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-5);
}

.context-manager {
  display: grid;
  grid-template-columns: minmax(13rem, 0.7fr) minmax(0, 1.5fr) auto;
  align-items: center;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--paper);
}

.context-manager > div:first-child { display: grid; }
.context-manager small { color: var(--ink-650); }
.context-additions { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.chip-remove { display: inline-grid; width: 1.2rem; height: 1.2rem; padding: 0; border-radius: 50%; background: rgb(18 38 36 / 0.08); cursor: pointer; place-items: center; }

.analysis-tabs {
  display: grid;
  grid-template-columns: repeat(5, minmax(9rem, 1fr));
  gap: var(--space-2);
  margin-bottom: var(--space-4);
  overflow-x: auto;
}

.analysis-tab {
  display: grid;
  min-height: 5.5rem;
  align-content: center;
  gap: var(--space-1);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-top: 4px solid var(--brand-650);
  border-radius: var(--radius-sm);
  background: var(--paper);
  cursor: pointer;
  text-align: left;
}

.analysis-tab span { font-weight: 780; }
.analysis-tab small { color: var(--ink-650); }
.analysis-tab[aria-pressed="true"] { border-color: var(--brand-650); background: var(--brand-075); box-shadow: var(--focus); }
.analysis-tab.tone-blue { border-top-color: var(--blue-700); }
.analysis-tab.tone-violet { border-top-color: var(--violet-700); }
.analysis-tab.tone-gold { border-top-color: var(--gold-700); }
.analysis-tab.tone-coral { border-top-color: var(--coral-700); }

.analysis-manager {
  margin-bottom: var(--space-4);
  box-shadow: none;
}

.analysis-manager summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-3) var(--space-4);
  cursor: pointer;
  font-weight: 720;
}

.analysis-manager summary span { color: var(--ink-650); font-size: 0.78rem; font-weight: 500; }
.analysis-order-list { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; counter-reset: analysis; }
.analysis-order-list li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-4); padding: var(--space-2) 0; border-bottom: 1px solid var(--line); counter-increment: analysis; }
.analysis-order-list li:last-child { border-bottom: 0; }
.analysis-order-list li > div:first-child { display: grid; }
.analysis-order-list li > div:first-child::before { color: var(--ink-500); content: counter(analysis, decimal-leading-zero); font-size: 0.68rem; }
.analysis-order-list small { color: var(--ink-650); }

.analysis-workspace {
  display: grid;
  gap: var(--space-4);
  padding: clamp(1rem, 2.5vw, 2rem);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: rgb(255 255 255 / 0.55);
}

.analysis-workspace-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: var(--space-8);
}

.analysis-workspace-header h2 { margin: var(--space-3) 0 var(--space-2); }
.analysis-workspace-header p { margin-bottom: 0; color: var(--ink-650); }
.analysis-kpi { min-width: 11rem; padding: var(--space-4); border: 1px solid var(--brand-650); border-radius: var(--radius-sm); background: var(--surface-accent); color: var(--ink-950); }
.analysis-kpi span,
.analysis-kpi small { display: block; color: var(--ink-650); }
.analysis-kpi strong { display: block; margin: var(--space-1) 0; font-family: var(--font-display); font-size: 2rem; }

.analysis-filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(10rem, 1fr));
  gap: var(--space-3);
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--paper);
}

.compact-field select { min-height: 2.35rem; padding-block: 0.42rem; }
.segmented { display: inline-flex; width: 100%; padding: 0.2rem; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--canvas); }
.segmented button { flex: 1; padding: 0.42rem 0.58rem; border-radius: var(--radius-xs); background: transparent; cursor: pointer; font-size: 0.8rem; }
.segmented button[aria-pressed="true"] { background: var(--paper); box-shadow: var(--shadow-sm); color: var(--brand-750); font-weight: 740; }

.analysis-panel { min-width: 0; }
.section-band {
  display: flex;
  width: 100%;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  border-color: transparent;
  background: var(--brand-850);
  color: var(--paper);
}
.section-band > .section-heading { width: 100%; }
.section-band h2,
.section-band h3,
.section-band .section-heading p,
.section-band > div > p { color: var(--paper); }
.section-band .section-band-subtitle { margin-bottom: var(--space-2); color: rgb(255 255 255 / 0.82); font-size: 0.84rem; font-weight: 720; }
.section-band .button-ghost { border-color: rgb(255 255 255 / 0.28); color: var(--paper); }
.section-band .button-ghost:hover { background: rgb(255 255 255 / 0.12); }
.knowledge-library > .knowledge-section-band { margin-bottom: var(--space-5); border-radius: var(--radius-sm); }
.dashboard-figure .section-heading { gap: var(--space-4); }
.dashboard-figure .analysis-panel {
  border-radius: var(--radius-sm);
}
.dashboard-figure .analysis-panel > .panel-header,
.dashboard-figure .analysis-panel > .panel-body,
.dashboard-figure .analysis-panel > .panel-footer {
  padding: var(--space-4);
}
.analysis-notes { align-items: stretch; }
.analysis-notes .card { min-width: 0; }
.figure-caveat { margin: 0 var(--space-4) var(--space-4); }
.figure-observation,
.figure-comment,
.figure-hypotheses { margin: 0 var(--space-4) var(--space-4); }
.figure-hypotheses { padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--canvas); }
.figure-hypotheses summary { cursor: pointer; font-weight: 740; }
.figure-hypotheses ul { margin: var(--space-3) 0 0; padding-left: 1.2rem; }
.comment-box { width: 100%; min-height: 9rem; padding: var(--space-3); border: 1px solid var(--line-strong); border-radius: var(--radius-sm); resize: vertical; }
.generated-description { padding: var(--space-4); border-left: 4px solid var(--violet-700); border-radius: var(--radius-sm); background: var(--violet-100); }
.generated-description .meta-row { margin-bottom: var(--space-3); }
.generated-description strong { font-size: 0.76rem; }
.description-empty { display: grid; min-height: 8rem; place-content: center; justify-items: start; }
.auto-hint { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-3); padding-top: var(--space-3); border-top: 1px solid rgb(102 82 163 / 0.2); }
.auto-hint > span { color: var(--violet-700); font-size: 1.7rem; }
.auto-hint p { margin: 0; font-size: 0.78rem; }
.analysis-actions { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-6); padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--paper); }
.analysis-actions p { margin: 0; color: var(--ink-650); font-size: 0.8rem; }
.method-note { color: var(--ink-650); font-size: 0.82rem; }
.compact-notice { padding-block: var(--space-3); }

.preview-section { padding: var(--space-10) 0 0; }
.preview-card { display: flex; min-height: 0; flex-direction: column; padding: var(--space-4); border-radius: var(--radius-sm); }
.preview-card h3 { margin-top: var(--space-4); }
.preview-card .button { align-self: start; margin-top: auto; }

.dashboard-layout {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(17rem, 0.8fr);
  align-items: start;
  gap: var(--space-5);
}

.dashboard-figure-list {
  display: grid;
  min-width: 0;
  gap: var(--space-5);
}

.dashboard-figure {
  display: grid;
  min-width: 0;
  gap: var(--space-3);
}

.dashboard-figure-filters {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding: var(--space-3);
}

.dashboard-aside {
  display: grid;
  gap: var(--space-5);
  position: sticky;
  top: 7.2rem;
}

.dashboard-context,
.dashboard-preview-section {
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--paper);
}

.dashboard-context .context-manager {
  grid-template-columns: 1fr;
  margin: var(--space-4) 0;
  padding: 0;
  border: 0;
}

.dashboard-context .context-additions { gap: var(--space-2); }
.dashboard-context .context-addition { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.dashboard-context .context-region { color: var(--ink-650); font-size: 0.82rem; }
.dashboard-context .notice { margin-bottom: 0; }
.dashboard-preview-list { display: grid; gap: var(--space-3); margin: var(--space-4) 0 0; padding: 0; list-style: none; }
.dashboard-preview-list > li { padding-top: var(--space-3); border-top: 1px solid var(--line); }
.dashboard-preview-list > li:first-child { padding-top: 0; border-top: 0; }
.dashboard-preview-list h3 { margin-bottom: var(--space-1); font-size: 1rem; }
.dashboard-preview-list p { margin-bottom: var(--space-2); color: var(--ink-650); font-size: 0.82rem; }
.dashboard-preview-list ul { display: grid; gap: var(--space-1); margin: var(--space-2) 0 var(--space-3); padding-left: 1.1rem; color: var(--ink-650); font-size: 0.78rem; }

@media (max-width: 1024px) {
  .dashboard-layout { grid-template-columns: 1fr; }
  .dashboard-aside { position: static; }
}

.method-list { display: grid; gap: 0; margin: 0 0 var(--space-5); }
.method-list > div { display: grid; grid-template-columns: 10rem minmax(0, 1fr); gap: var(--space-4); padding: var(--space-3) 0; border-bottom: 1px solid var(--line); }
.method-list dt { color: var(--ink-650); font-weight: 700; }
.method-list dd { margin: 0; }
.method-references ul,
.snapshot-references { display: grid; gap: var(--space-2); margin: var(--space-3) 0; padding-left: 1.2rem; }
.method-references li,
.snapshot-references li { display: grid; gap: var(--space-1); }
.method-references small,
.snapshot-references small { color: var(--ink-650); }

.data-page > .notice {
  margin-bottom: var(--space-8);
}

.source-catalog {
  margin-bottom: var(--space-10);
}

.source-card {
  display: flex;
  min-height: 0;
  flex-direction: column;
  padding: var(--space-4);
  border-radius: var(--radius-sm);
}

.public-section[aria-labelledby="source-title"] .card {
  padding: var(--space-4);
  border-radius: var(--radius-sm);
}

.source-card.is-selected {
  border-color: var(--brand-650);
  box-shadow: var(--focus);
}
.source-selected-marker { color: var(--brand-750); font-size: .78rem; font-weight: 760; }
.upload-technical { margin-top: var(--space-5); color: var(--ink-650); }
.upload-technical summary { color: var(--brand-750); cursor: pointer; font-weight: 720; }

.source-card h3 { margin-top: var(--space-4); }
.source-card .source-analyses { margin-top: auto; }
.source-card .source-analyses p { color: var(--ink-650); font-size: 0.8rem; }
.source-card .button { align-self: start; }

.upload-workspace {
  margin-top: var(--space-6);
}

.selected-source {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0 var(--space-4);
  margin-bottom: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-sm);
  background: var(--brand-075);
}

.selected-source .field-label { grid-row: 1 / 3; align-self: center; }
.selected-source small { color: var(--ink-650); }

.upload-dropzone {
  display: grid;
  min-height: 18rem;
  margin: var(--space-5) 0;
  padding: var(--space-8);
  place-content: center;
  justify-items: center;
  border: 2px dashed var(--line-strong);
  border-radius: var(--radius-md);
  background: var(--canvas);
  text-align: center;
}

.upload-dropzone > .icon {
  width: 2.6rem;
  height: 2.6rem;
  margin-bottom: var(--space-3);
  color: var(--brand-650);
}

.upload-dropzone p { max-width: 40rem; color: var(--ink-650); }
.upload-dropzone.is-disabled { opacity: 0.58; }
.button.is-disabled { pointer-events: none; opacity: 0.48; }

.demo-files { display: grid; gap: var(--space-3); }
.demo-file { display: grid; min-height: 6rem; align-content: center; gap: var(--space-1); padding: var(--space-4); border: 1px solid var(--line); border-left: 4px solid var(--success-700); border-radius: var(--radius-sm); background: var(--paper); cursor: pointer; text-align: left; }
.demo-file.warning { border-left-color: var(--warning-800); }
.demo-file.danger { border-left-color: var(--danger-750); }
.demo-file:hover { background: var(--brand-075); }
.demo-file small { color: var(--ink-650); }
.demo-file:disabled { cursor: not-allowed; opacity: 0.45; }

.upload-state,
.upload-review {
  display: grid;
  gap: var(--space-5);
  min-height: 15rem;
  align-content: center;
  margin-top: var(--space-5);
  padding: var(--space-6);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--canvas);
}

.upload-state > .button { justify-self: start; }
.loading-mark { width: 3rem; height: 3rem; border: 4px solid var(--line); border-top-color: var(--brand-650); border-radius: 50%; animation: local-spin 800ms linear infinite; }
@keyframes local-spin { to { transform: rotate(360deg); } }
.input-static { min-height: 2.75rem; padding: 0.65rem 0.75rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--paper); }

.outcome-lists > div { padding: var(--space-4); border-radius: var(--radius-sm); background: var(--paper); }
.outcome-lists ul { margin-bottom: 0; padding-left: 1.2rem; }
.outcome-lists > div:first-child { border-left: 4px solid var(--success-700); }
.outcome-lists > div:last-child { border-left: 4px solid var(--danger-750); }
.upload-outcome-banner { margin-bottom: var(--space-4); }

.collaboration-types { margin-bottom: var(--space-6); }
.collaboration-types .is-featured { border-color: var(--brand-650); background: linear-gradient(145deg, var(--paper), var(--brand-075)); }
.plain-list { display: grid; gap: var(--space-2); margin-top: var(--space-4); }
.plain-list li { display: grid; grid-template-columns: minmax(7rem, 0.45fr) minmax(0, 1fr); gap: var(--space-3); padding: var(--space-2) 0; border-bottom: 1px solid var(--line); }
.plain-list span { color: var(--ink-650); font-size: 0.8rem; }
.group-analysis { margin-bottom: var(--space-8); }
.municipal-release { padding: var(--space-6); border: 1px solid var(--line); border-radius: var(--radius-lg); background: rgb(255 255 255 / 0.5); }
.municipal-release > .notice { margin-bottom: var(--space-4); }
.locked-level { display: grid; min-height: 18rem; padding: var(--space-8); place-content: center; justify-items: center; border: 1px dashed var(--line-strong); border-radius: var(--radius-md); background: var(--canvas); text-align: center; }
.locked-level p { max-width: 38rem; color: var(--ink-650); }
.lock-symbol { display: grid; width: 4rem; height: 4rem; margin-bottom: var(--space-3); place-items: center; border-radius: 50%; background: var(--brand-075); color: var(--brand-750); font-size: 2rem; }

.tasks-page .grid-main-aside { margin-bottom: var(--space-10); }
.tasks-section { padding-top: var(--space-2); }
.task-filter { width: auto; min-width: min(30rem, 100%); }
.task-board { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.task-card { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--space-4); }
.task-card.is-done { opacity: 0.72; }
.task-card.is-done h3 { text-decoration: line-through; }
.task-check button { display: grid; width: 1.7rem; height: 1.7rem; padding: 0; place-items: center; border: 2px solid var(--brand-650); border-radius: 50%; background: var(--paper); color: var(--brand-750); cursor: pointer; font-weight: 800; }
.origin-link { padding: 0; background: transparent; color: var(--brand-750); cursor: pointer; font-size: 0.8rem; font-weight: 720; text-align: left; text-decoration: underline; text-underline-offset: 0.18rem; }
.comment-list { margin: var(--space-3) 0; padding-left: 1.25rem; color: var(--ink-650); font-size: 0.82rem; }
.inline-comment { display: flex; gap: var(--space-2); margin-top: var(--space-3); }
.inline-comment input { min-width: 0; flex: 1; padding: 0.55rem 0.65rem; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); }
.timeline-dot { padding: 0; cursor: pointer; }
.timeline-item.is-done strong { text-decoration: line-through; }
.drawer-note-form { display: grid; gap: var(--space-3); margin-top: var(--space-5); padding-top: var(--space-5); border-top: 1px solid var(--line); }

.report-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: var(--space-4); margin-bottom: var(--space-4); padding: var(--space-4); }
.reports-page .page-header .inline-actions { justify-content: end; }
.report-toolbar > div:first-child { display: grid; }
.report-layout { grid-template-columns: minmax(15rem, 0.32fr) minmax(0, 1fr); align-items: start; }
.report-library { position: sticky; top: 7.2rem; }
.available-report-item { display: grid; width: 100%; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-1) var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--line); background: transparent; cursor: pointer; text-align: left; }
.available-report-item .tag { justify-self: start; }
.available-report-item strong,
.available-report-item small { grid-column: 1; }
.available-report-item small { color: var(--ink-650); }
.available-report-item b { grid-column: 2; grid-row: 1 / 4; align-self: center; color: var(--brand-650); font-size: 1.6rem; }
.report-canvas { min-width: 0; }
.report-canvas-heading { display: flex; align-items: end; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); }
.report-items { display: grid; gap: var(--space-4); }
.report-card[draggable="true"] { cursor: grab; }
.report-card:active { cursor: grabbing; }
.report-card-title { display: grid; width: 100%; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-3); }
.report-card-title h3 { margin: var(--space-1) 0 0; }
.drag-handle { color: var(--ink-500); font-size: 1.4rem; }
.report-snapshot { display: grid; grid-template-columns: minmax(9rem, 0.25fr) minmax(0, 1fr); align-items: start; gap: var(--space-4); margin-bottom: var(--space-5); padding: var(--space-4); border-radius: var(--radius-sm); background: var(--canvas); }
.report-snapshot > div:first-child { display: grid; }
.snapshot-figure { min-width: 0; }
.report-findings { display: grid; gap: var(--space-3); margin-bottom: var(--space-5); }
.report-caveat { padding: var(--space-3); border-left: 4px solid var(--danger-700, #a64c3b); background: #fff5f2; }
.report-caveat p { margin: var(--space-1) 0 0; }
.provenance { display: grid; gap: var(--space-2); padding: var(--space-3); border-left: 3px solid var(--brand-650); background: var(--brand-075); font-size: 0.78rem; }
.report-comment-form { margin-top: var(--space-4); }
.report-comment-form textarea { min-height: 5rem; }
.approval-panel { margin-top: var(--space-8); }

.document-preview { max-width: 52rem; margin: 0 auto; padding: clamp(1rem, 4vw, 3rem); border: 1px solid var(--line); background: white; box-shadow: var(--shadow-sm); }
.document-preview > header { padding-bottom: var(--space-5); border-bottom: 3px solid var(--brand-650); }
.document-preview article { padding: var(--space-6) 0; border-bottom: 1px solid var(--line); }
.document-preview blockquote { margin-inline: 0; padding: var(--space-3); border-left: 4px solid var(--brand-650); background: var(--brand-075); }
.document-preview dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); }
.document-preview dl div { padding: var(--space-2); background: var(--canvas); }
.document-preview dt { color: var(--ink-650); font-size: 0.72rem; font-weight: 700; text-transform: uppercase; }
.document-preview dd { margin: var(--space-1) 0 0; font-size: 0.8rem; }
.slides-preview { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); margin-bottom: var(--space-5); }
.slide { aspect-ratio: 16 / 9; padding: var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-sm); background: linear-gradient(145deg, var(--brand-950), var(--brand-750)); color: white; box-shadow: var(--shadow-sm); }
.slide-inner { display: grid; height: 100%; align-content: center; }
.slide h1,
.slide h2 { color: white; }
.slide p,
.slide small { color: rgb(255 255 255 / 0.72); }

.knowledge-intro,
.planning-guide { margin-bottom: var(--space-10); }
.knowledge-intro .panel-header { background: linear-gradient(135deg, var(--brand-075), var(--paper)); }
.knowledge-intro .panel-header h2 { max-width: 54rem; margin-top: var(--space-2); }
.knowledge-intro-tasks { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-6); margin: var(--space-4) 0 0; padding-left: 1.25rem; color: var(--ink-800); font-weight: 680; }
.knowledge-intro-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.knowledge-intro-grid article { padding-left: var(--space-4); border-left: 3px solid var(--brand-150); }
.knowledge-intro-grid h3 { font-size: 1rem; }
.knowledge-intro-grid p { margin-bottom: 0; color: var(--ink-650); font-size: 0.88rem; }
.planning-steps { display: grid; margin: 0; padding: 0; list-style: none; }
.planning-step { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--space-4); padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--line); }
.planning-step:last-child { border-bottom: 0; }
.planning-step.is-done { background: var(--success-100); }
.planning-step.is-done strong { text-decoration: line-through; }
.planning-step > div { display: grid; }
.planning-step small { color: var(--ink-650); }
.step-check { display: grid; width: 2.2rem; height: 2.2rem; padding: 0; place-items: center; border: 2px solid var(--brand-650); border-radius: 50%; background: var(--paper); color: var(--brand-750); cursor: pointer; font-weight: 800; }
.planning-step.is-done .step-check { border-color: var(--success-700); background: var(--success-700); color: white; }
.knowledge-library { margin-bottom: var(--space-10); }
.knowledge-tools { display: grid; grid-template-columns: minmax(14rem, 1fr) minmax(12rem, 0.4fr) auto; align-items: end; gap: var(--space-4); margin-bottom: var(--space-5); padding: var(--space-4); }
.knowledge-card { display: flex; min-height: 19rem; flex-direction: column; }
.tag-row { display: flex; flex-wrap: wrap; gap: var(--space-1); margin-top: var(--space-3); }
.knowledge-card footer { display: grid; gap: var(--space-3); margin-top: auto; padding-top: var(--space-4); border-top: 1px solid var(--line); }
.knowledge-card footer small { color: var(--ink-650); }
.knowledge-card .button { justify-self: start; }
.methods-index { margin-bottom: var(--space-6); }
.methods-index article { padding: var(--space-3); border-left: 3px solid var(--brand-650); background: var(--canvas); }
.methods-index article h3 { margin-top: var(--space-3); }
.methods-index article small { color: var(--ink-650); }

@media (max-width: 1100px) {
  .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-main-aside { grid-template-columns: 1fr; }
  .analysis-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .context-manager { grid-template-columns: 1fr; }
  .report-layout { grid-template-columns: 1fr; }
  .report-library { position: static; }
  .task-board { grid-template-columns: 1fr; }
  .knowledge-intro-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .section-band { flex-direction: column; align-items: stretch; }
  .grid-2,
  .grid-3,
  .grid-4,
  .form-grid { grid-template-columns: 1fr; }
  .source-list > li,
  .task-list > li { grid-template-columns: 1fr; }
  .field-wide { grid-column: auto; }
  .stacked-row { grid-template-columns: 1fr; gap: var(--space-2); }
  .entry-card-wide,
  .analysis-workspace-header,
  .analysis-actions,
  .method-list > div { grid-template-columns: 1fr; }
  .analysis-filters { grid-template-columns: 1fr; }
  .analysis-tabs { grid-template-columns: repeat(5, 12rem); }
  .analysis-order-list li { grid-template-columns: 1fr; }
  .auto-hint { grid-template-columns: auto 1fr; }
  .auto-hint .button { grid-column: 1 / -1; }
  .plain-list li,
  .report-toolbar,
  .report-card-title,
  .report-snapshot,
  .knowledge-tools,
  .planning-step,
  .document-preview dl { grid-template-columns: 1fr; }
  .report-card-title .inline-actions { justify-content: start; }
  .slides-preview { grid-template-columns: 1fr; }
  .planning-step .button { justify-self: start; }
  .task-filter { min-width: 100%; overflow-x: auto; }
  .card,
  .panel-header,
  .panel-body,
  .panel-footer { padding: var(--space-4); }
}
