/* Component colour bindings. Layout remains in the corresponding feature modules. */
:root {color:var(--ink);background:var(--canvas)}
body {background:var(--canvas);color:var(--ink)}
button,.button,input,select,textarea {background:var(--input);color:var(--ink);border-color:var(--line)}
button:hover,.button:hover {background:var(--hover)}
input::placeholder,textarea::placeholder,.compact-filters input::placeholder {color:var(--muted);opacity:1}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible {outline-color:var(--focus)}
.primary {background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
.primary:hover {background:var(--primary-hover)}
.quiet {background:transparent}
.app-header {background:var(--header);color:var(--brand-ink);box-shadow:0 6px 18px #00000012}
.brand {color:var(--brand-ink)}.brand img {filter:brightness(0) invert(1);opacity:.9}
.brand small,.local-indicator {color:var(--header-muted)}.local-indicator::before {background:var(--header-muted)}
.header-button {color:var(--brand-ink);background:transparent;border-color:var(--header-muted)}
.header-button:hover {background:#ffffff18}
.header-actions {gap:12px}.theme-toggle {white-space:nowrap;font-size:11px}
.sidebar nav a,.sidebar-note,.stat-label {color:var(--muted)}
.sidebar nav a.active,.webinar-subnav [aria-current],.metric-tabs [aria-current] {background:var(--brand-soft);color:var(--brand-accent)}
.sidebar nav a:hover {background:var(--hover)}
.sidebar-section,.sidebar-bottom,.webinar-subnav {border-color:var(--line)}
.panel,.stat,.process-card,.empty,.donut-center,.webinar-link.active,dialog,.export-options,.picker-menu {background:var(--surface);border-color:var(--line)}
.stat.featured {background:var(--header);border-color:var(--header);color:var(--brand-ink)}
.stat.featured .stat-label,.stat.featured small,.stat.featured strong {color:var(--header-muted)}
.process-card.mockup,.schema-card {background:var(--soft)}
th {background:var(--soft);color:var(--muted)}td,.chart-foot {border-color:var(--line)}
tbody tr:hover {background:var(--hover)}
.filter-band {background:var(--surface);box-shadow:0 6px 8px var(--surface)}
.compact-filters input,.picker-trigger {background:var(--input);border-color:var(--line)}
.picker-trigger[aria-expanded=true],.picker-menu button[aria-selected=true] {background:var(--brand-soft);color:var(--brand-accent);border-color:var(--brand-accent)}
.picker-menu button:focus-visible {outline-color:var(--focus);background:var(--hover)}
.app-footer {background:var(--surface);border-color:var(--line);box-shadow:0 -4px 24px #00000018}
.app-footer nav a,.app-footer nav button {border-color:var(--line);color:var(--ink);background:var(--input)}
.app-footer nav a:hover,.app-footer nav button:hover {background:var(--hover);border-color:var(--brand-accent)}
.app-footer .footer-back {background:var(--primary);border-color:var(--primary);color:var(--primary-ink);box-shadow:none}
.app-footer .footer-back:hover {background:var(--primary-hover)}
.app-footer a:focus-visible,.app-footer button:focus-visible {outline-color:var(--focus)}
.contact-summary,.drop-file {background:var(--soft);border-color:var(--line)}
.drop-file input {background:var(--input)}
.timeline-entry::after {background:var(--brand-accent);border-color:var(--surface)}
.timeline-entry::before {background:var(--line)}.timeline-entry time {color:var(--muted)}
.chat-post {background:var(--soft);border-color:var(--line)}
.chat-post.answer,.next-step,.notice.neutral {background:var(--positive-bg);color:var(--positive-ink);border-color:var(--line)}
.next-step p,.next-step .step-icon {color:var(--positive-ink)}.next-step .step-icon {background:var(--surface)}
.notice,.schema-gap,.chat-post.reference {background:var(--warning-bg);color:var(--warning-ink);border-color:var(--line)}
.badge,.badge.internal {background:var(--soft);color:var(--muted)}
.badge.engaged,.badge.approved {background:var(--positive-bg);color:var(--positive-ink)}
.badge.review,.badge.pending {background:var(--warning-bg);color:var(--warning-ink)}
.badge.blocked,.schema-error {background:var(--error-bg);color:var(--error-ink);border-color:var(--line)}
.badge.mock {background:var(--mock-bg);color:var(--mock-ink)}.form-error {color:var(--error-ink)}
.schema-matrix th,.schema-matrix td {border-color:var(--line)}
.schema-matrix thead th,.schema-matrix tr>th:first-child {background:var(--soft)}
.schema-matrix .shared-field,.schema-matrix caption {background:var(--brand-soft);color:var(--brand-accent)}
.schema-matrix .matrix-reference th,.schema-matrix .matrix-reference td {background:var(--warning-bg)}
.schema-matrix .matrix-output th,.schema-matrix .matrix-output td {background:var(--soft)}
.matrix-missing {color:var(--muted)}
.registered {--metric-color:#957866}.attended {--metric-color:#577e75}.engaged {--metric-color:#a27836}.approved {--metric-color:#637d99}
[data-theme=dark] .registered {--metric-color:#b3917a}[data-theme=dark] .attended {--metric-color:#7caa9c}
[data-theme=dark] .engaged {--metric-color:#c69c55}[data-theme=dark] .approved {--metric-color:#92aac6}
.chart-groups {background-image:repeating-linear-gradient(to top,transparent 0,transparent 44px,var(--line) 44px,var(--line) 45px)}
.chart-bars,.metric-tabs a {border-color:var(--line)}.metric-tabs a {background:var(--input)}
.bar-track {background:var(--soft)}
dialog::backdrop {background:#15131099}
#toast {bottom:calc(var(--footer-height,78px) + 24px)}
@media(max-width:760px) {.header-actions {gap:6px}.header-button {padding:8px}.brand small {display:none}}
@media(max-width:460px) {.header-brand {gap:6px}.brand img {display:none}.brand {font-size:16px}.app-header {padding:10px}.header-actions {gap:5px}}

.evidence-cell {color:var(--muted)}
.analytics .chart-groups {background-image:repeating-linear-gradient(to top,transparent 0,transparent 56.5px,var(--line) 56.5px,var(--line) 57.5px)}
.timeline-entry.unplaced::before {background:repeating-linear-gradient(to bottom,var(--line) 0 4px,transparent 4px 8px)}
@media(max-width:760px) {.analytics .chart-groups {background-image:repeating-linear-gradient(to top,transparent 0,transparent 46.5px,var(--line) 46.5px,var(--line) 47.5px)}}
