:root {
    /* ── Banyan Grove palette ── */
    --deep-grove:   #1F4934;
    --primary:      #356B4A;   /* Banyan Green — actions, active states, accents */
    --leaf-green:   #4A7C50;
    --sage:         #88A083;
    --root-brown:   #7A4E2D;
    --warm-bark:    #9A704D;
    --bg-body:      #F7F5EF;   /* Grove Ivory */
    --soft-moss:    #EEF2EA;
    --border-light: #D9DDD4;   /* Warm Border */
    --text-dark:    #202A24;   /* Charcoal */
    --text-muted:   #6D756F;   /* Muted Stone */
    --nav-bg:       #1F4934;   /* Deep Grove */

    /* ── Semantic state colors — do not change ── */
    --provisional:  #e67e22;   /* amber — AI / unreviewed */
    --accepted:     #27ae60;   /* green — confirmed */
    --rejected:     #95a5a6;   /* gray — dismissed */

    /* ── Bootstrap primary override ── */
    --bs-primary:           #356B4A;
    --bs-primary-rgb:       53, 107, 74;
    --bs-link-color:        #356B4A;
    --bs-link-color-rgb:    53, 107, 74;
    --bs-link-hover-color:  #1F4934;

    /* ── Typography roles ──
       One shared system stack app-wide. The ONLY display-font exception is
       the landing page hero (IBM Plex Sans), declared locally in landing.html. */
    --font-ui:   -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-mono: SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;

    /* Role scale — deliberate, not identical */
    --fs-page-title:   1.15rem;   /* one page title size everywhere in the app */
    --fs-section:      0.98rem;   /* section headings inside panels/cards */
    --fs-subsection:   0.9rem;    /* h6-level subsections */
    --fs-body:         0.93rem;
    --fs-label:        0.88rem;
    --fs-meta:         0.78rem;
    --fs-table:        0.88rem;
    --fs-button:       0.875rem;
    --lh-body:         1.5;
    --lh-reading:      1.7;
}

/* ── Typography role classes ── */

/* Page title: the single H at the top of each workspace page.
   Applied regardless of the underlying h3/h4/h5 tag so historical tag
   drift no longer changes the visual hierarchy. */
.page-title {
    font-family: var(--font-ui);
    font-size: var(--fs-page-title);
    font-weight: 600;
    line-height: 1.25;
    letter-spacing: -0.01em;
    color: var(--text-dark);
    margin-bottom: 0;
}

/* Page subtitle / metadata line directly under a page title */
.page-subtitle {
    font-size: var(--fs-meta);
    line-height: 1.45;
    color: var(--text-muted);
}

/* Subsection heading: h6-level headings inside panels and reports */
.type-subsection {
    font-size: var(--fs-subsection);
    font-weight: 700;
    letter-spacing: 0.01em;
    color: var(--text-dark);
    line-height: 1.35;
}

/* Metadata / fine print role */
.type-meta {
    font-size: var(--fs-meta);
    color: var(--text-muted);
}

/* Outcome emphasis: disposition / verdict statements */
.type-outcome {
    font-weight: 700;
    letter-spacing: 0.005em;
}

/* Empty-state title role */
.empty-title {
    font-size: 1.02rem;
    font-weight: 600;
    color: var(--text-muted);
}

/* ── Bootstrap button overrides ── */
.btn-primary {
    --bs-btn-color:              #fff;
    --bs-btn-bg:                 #356B4A;
    --bs-btn-border-color:       #356B4A;
    --bs-btn-hover-color:        #fff;
    --bs-btn-hover-bg:           #1F4934;
    --bs-btn-hover-border-color: #1F4934;
    --bs-btn-focus-shadow-rgb:   53, 107, 74;
    --bs-btn-active-bg:          #1F4934;
    --bs-btn-active-border-color:#1F4934;
    --bs-btn-disabled-bg:        #356B4A;
    --bs-btn-disabled-border-color: #356B4A;
}

.btn-outline-primary {
    --bs-btn-color:              #356B4A;
    --bs-btn-border-color:       #356B4A;
    --bs-btn-hover-color:        #fff;
    --bs-btn-hover-bg:           #356B4A;
    --bs-btn-hover-border-color: #356B4A;
    --bs-btn-focus-shadow-rgb:   53, 107, 74;
    --bs-btn-active-color:       #fff;
    --bs-btn-active-bg:          #356B4A;
    --bs-btn-active-border-color:#356B4A;
}

.text-primary { color: var(--primary) !important; }
.bg-primary   { background-color: var(--primary) !important; }
.border-primary { border-color: var(--primary) !important; }

body {
    background-color: var(--bg-body);
    font-family: var(--font-ui);
    font-size: var(--fs-body);
    line-height: var(--lh-body);
    color: var(--text-dark);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

main { flex: 1; }

/* ── Nav ── */
.bg-nav { background-color: var(--nav-bg) !important; }

.brand-text {
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}

/* ── Accordion ── */
.accordion-item {
    border: 1px solid var(--border-light);
    margin-bottom: 0;
}

.accordion-button {
    font-size: 0.95rem;
    padding: 0.85rem 1.25rem;
}

.accordion-button:not(.collapsed) { color: #fff; }

/* Panel 1 – Documents: neutral dark; Panel 2 – Evidence: Banyan Green; Panel 3 – Engine: Deep Grove */
.panel-docs     .accordion-button:not(.collapsed) { background-color: #495057; }
.panel-core     .accordion-button:not(.collapsed) { background-color: var(--primary); }
.panel-criteria .accordion-button:not(.collapsed) { background-color: var(--primary); }
.panel-engine   .accordion-button:not(.collapsed) { background-color: var(--deep-grove); }

.accordion-body { padding: 1.5rem; }

/* ── Shared blocks ── */
.section-block {
    background: var(--soft-moss);
    border: 1px solid var(--border-light);
    border-radius: 6px;
    padding: 1.25rem;
}

/* Section heading role: titled blocks inside panels and forms */
.section-title {
    color: var(--primary);
    font-size: var(--fs-section);
    font-weight: 600;
    letter-spacing: 0.005em;
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--border-light);
}

/* Form label role */
.form-label { font-size: var(--fs-label); color: var(--text-muted); margin-bottom: 0.3rem; }
.form-control, .form-select { font-size: 0.9rem; }
textarea.form-control { resize: vertical; }

/* ── Document rows ── */
.document-row { position: relative; transition: box-shadow 0.2s; }
.document-row:hover { box-shadow: 0 0 0 1px var(--primary); }
.remove-doc-btn { padding: 0.15rem 0.4rem; font-size: 0.75rem; }
.has-source-text .doc-upload-btn { background: rgba(39,174,96,0.08); border-color: #27ae60; color: #27ae60; }

/* ── Engine lists ── */
.engine-list { list-style: none; padding-left: 0; margin-bottom: 0; }
.engine-list li {
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.35rem;
    background: #fff8e1;
    border-left: 3px solid #ffc107;
    border-radius: 0 4px 4px 0;
    font-size: 0.88rem;
}
.engine-list-danger li { background: #fef0f0; border-left-color: #dc3545; }
.engine-list-info   li { background: var(--soft-moss); border-left-color: var(--sage); }

/* ── Checklist ── */
.checklist-table { font-size: 0.88rem; margin-bottom: 0; }
.checklist-table td { padding: 0.5rem 0.75rem; vertical-align: middle; }
.checklist-table .fa-check-circle, .checklist-table .fa-times-circle { font-size: 1.1rem; }

.checklist-panel {
    background: #fff;
    border: 1px solid var(--border-light);
    border-radius: 6px;
    padding: 1rem;
    margin-bottom: 1rem;
}
.checklist-panel .form-check { margin-bottom: 0.3rem; }
.checklist-panel .form-check-label { font-size: 0.88rem; }

/* ── Reports ── */
.report-card { border: 1px solid var(--border-light); }
.report-card .card-body { padding: 2rem; }
/* Report section heading role — identical in executive and technical reports */
.report-heading {
    color: var(--primary);
    font-weight: 600;
    letter-spacing: -0.005em;
    border-bottom: 2px solid var(--border-light);
    padding-bottom: 0.4rem;
    margin-top: 1.5rem;
    margin-bottom: 0.75rem;
    font-size: 1.05rem;
}
.report-heading:first-of-type { margin-top: 0; }

/* Report subsection heading role */
.report-subheading {
    font-size: var(--fs-subsection);
    font-weight: 700;
    color: var(--text-dark);
    margin-top: 1rem;
    margin-bottom: 0.5rem;
}

/* Long-form report / compliance prose role: slightly larger, looser leading */
.report-prose { line-height: var(--lh-reading); font-size: 0.95rem; }

.exec-report { line-height: var(--lh-reading); font-size: 0.95rem; }

/* ── Table role ── */
.table { font-size: var(--fs-table); }
.table thead th {
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--text-muted);
}

/* ── Button role ── */
.btn {
    font-size: var(--fs-button);
    font-weight: 500;
    letter-spacing: 0.005em;
}

/* ── Code / identifier role ── */
code { font-family: var(--font-mono); font-size: 0.85em; }

/* ── Long-form compliance content role ── */
.compliance-content { line-height: var(--lh-reading); font-size: 0.95rem; }
.compliance-content h5 {
    color: var(--primary);
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: -0.005em;
    margin-bottom: 0.75rem;
}
.compliance-content .lead { font-size: 1.05rem; line-height: 1.75; }

/* ── Badges & detection — badge label role ── */
.badge { font-weight: 500; font-size: 0.72rem; letter-spacing: 0.01em; }
.bg-purple { background-color: #7c3aed !important; }

.detection-badges { padding-top: 0.5rem; border-top: 1px dashed var(--border-light); }
.detection-badges .badge { font-size: 0.7rem; padding: 0.35em 0.6em; }

/* ── AI relevance badges — semantic, unchanged ── */
.relevance-supports     { background-color: #27ae60 !important; color: #fff; }
.relevance-contradicts  { background-color: #c0392b !important; color: #fff; }
.relevance-inconclusive { background-color: #7f8c8d !important; color: #fff; }
.relevance-gap          { background-color: var(--provisional) !important; color: #fff; }
.relevance-unknown      { background-color: #bdc3c7 !important; color: #333; }

/* ── Evidence item cards ── */
.evidence-items-wrap {
    border-top: 2px dashed var(--border-light);
    padding-top: 0.85rem;
}

.evidence-section-title {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.evidence-card {
    border: 1px solid var(--border-light);
    border-radius: 6px;
    padding: 0.85rem 1rem;
    margin-bottom: 0.6rem;
    background: #fff;
    font-size: 0.88rem;
    transition: border-color 0.2s, background 0.2s;
}

.evidence-card.evidence-accepted,
.evidence-card.evidence-edited {
    border-color: var(--accepted);
    background: #f0faf4;
}

.evidence-card.evidence-rejected {
    border-color: var(--rejected);
    background: #fafafa;
    opacity: 0.75;
}

.evidence-card .evidence-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-bottom: 0.6rem;
}

.evidence-card .source-label {
    font-weight: 600;
    font-size: 0.8rem;
    color: var(--text-muted);
}

.evidence-layer-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    display: block;
    margin-bottom: 0.2rem;
}

.evidence-quote {
    border-left: 3px solid var(--border-light);
    margin: 0.2rem 0 0.6rem 0;
    padding: 0.3rem 0.7rem;
    font-size: 0.86rem;
    color: var(--text-dark);
    background: var(--soft-moss);
    border-radius: 0 4px 4px 0;
    font-style: italic;
}

.evidence-interpretation { color: var(--text-dark); }

.evidence-actions { display: flex; gap: 0.4rem; margin-top: 0.6rem; }

.btn-xs {
    padding: 0.15rem 0.5rem;
    font-size: 0.75rem;
    border-radius: 4px;
}

.reviewer-note {
    border-top: 1px dashed var(--border-light);
    padding-top: 0.35rem;
    margin-top: 0.4rem;
}

.provisional-border { border-color: var(--provisional) !important; }

/* ── AI analysis panel ── */
.ai-panel {
    border: 1px dashed var(--border-light);
    border-radius: 6px;
    padding: 1rem 1.25rem;
    background: #fff;
    margin-bottom: 1.25rem;
}

.ai-panel .ai-status {
    font-size: 0.85rem;
}

/* ── Gap / Conflict panel — semantic amber, preserved ── */
.gc-panel {
    border: 1px solid #f0c040;
    border-radius: 6px;
    padding: 1rem 1.25rem;
    background: #fffdf0;
}

.gc-section-label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.gc-card {
    border: 1px solid var(--border-light);
    border-radius: 6px;
    padding: 0.75rem 0.9rem;
    margin-bottom: 0.5rem;
    background: #fff;
    font-size: 0.88rem;
    transition: border-color 0.2s, background 0.2s;
}

.gc-card.gc-provisional {
    border-color: #f0c040;
    background: #fffef5;
}

.gc-card.gc-accepted,
.gc-card.gc-edited {
    border-color: var(--accepted);
    background: #f0faf4;
}

.gc-card.gc-dismissed {
    border-color: var(--border-light);
    background: var(--soft-moss);
    opacity: 0.65;
}

.gc-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-bottom: 0.5rem;
}

.gc-kind-badge {
    font-size: 0.7rem;
    font-weight: 700;
    padding: 0.2em 0.55em;
    border-radius: 3px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* Semantic gap/conflict badge colors — preserved */
.gc-kind-gap {
    background-color: #fff3cd;
    color: #856404;
    border: 1px solid #ffc107;
}

.gc-kind-conflict {
    background-color: #f8d7da;
    color: #842029;
    border: 1px solid #dc3545;
}

.gc-body { font-size: 0.88rem; }

.gc-actions { display: flex; gap: 0.4rem; flex-wrap: wrap; }

.gc-edit-form {
    margin-top: 0.5rem;
    border-top: 1px dashed var(--border-light);
    padding-top: 0.5rem;
}

/* ── Evidence provenance in reports ── */
.evidence-provenance {
    border-left: 3px solid var(--sage);
    padding: 0.5rem 0.75rem;
    background: var(--soft-moss);
    border-radius: 0 4px 4px 0;
}

.provenance-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--primary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.provenance-item {
    border-bottom: 1px dashed var(--border-light);
    padding-bottom: 0.5rem;
}

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

/* ── Case list table ── */
.table-hover > tbody > tr:hover > td { background-color: rgba(53, 107, 74, 0.04); }

/* ── Run stats ── */
.run-stat {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: var(--soft-moss);
    border: 1px solid var(--border-light);
    border-radius: 20px;
    padding: 0.2rem 0.7rem;
    font-size: 0.8rem;
    font-weight: 500;
}

/* ── Footer ── */
.footer { background: var(--soft-moss); border-top: 1px solid var(--border-light); margin-top: auto; }

/* ── Responsive ── */
@media (max-width: 768px) {
    .accordion-body { padding: 1rem; }
    .report-card .card-body { padding: 1.25rem; }
    .d-flex.flex-wrap.gap-2 .btn { flex: 1 1 auto; }
}

@media print {
    .navbar, .footer, .btn, .accordion-button, .evidence-actions, .gc-actions { display: none !important; }
    .accordion-collapse { display: block !important; }
    .report-card { border: none; box-shadow: none; }
}
