/* ==========================================================================
   AI PRESENCE + PROVENANCE STYLING
   Version: 1.0.0
   Created: 2026-05-09 — design-system tier-1 #2
   Tokens: --sn-ai-* (DARK_ROAST_ROLE_INVENTORY.md §G)
           --sn-provenance-* (DARK_ROAST_ROLE_INVENTORY.md §H)
   Macros: templates/partials/ai_badge.html
   Spec: outside design-source contract sections 4 and 8

   ── PURPOSE ─────────────────────────────────────────────────────────────
   Two responsibilities:
     1. Style new .sn-ai-label* and .sn-provenance-badge* elements emitted
        by the Jinja macros (forward-looking surfaces).
     2. RETARGET the existing JS-rendered .provenance-item--{source}
        markup in note-generation.js:_renderProvenancePanel onto the same
        --sn-* tokens (zero-JS-change retrofit). The compile provenance
        panel had no CSS before this file — these rules visually wire it
        for the first time.

   ── HARD RULES (Carbon AI guidance) ─────────────────────────────────────
   - AI styling applies ONLY to genuine LLM/model authorship. Parser,
     calculator, RAG, and manual sources use --sn-provenance-*, not
     --sn-ai-*. The selector lists below enforce this.
   - Unknown / null / unrecognized source → provenance-unknown styling
     (warning-tinted), NEVER AI styling. The CSS defaults handle this.

   ── SOURCE CATEGORY RESOLUTION ──────────────────────────────────────────
   The JS today emits raw backend strings (e.g. "haiku-generated",
   "rag-retrieved", "unknown") as the class suffix. This file maps both
   raw backend strings AND canonical category names onto the same tokens
   per the inventory's "Backend e.source → canonical category mapping"
   table (§H). When a JS adapter normalizes raw → canonical, the raw
   selectors below can be dropped per file. Until then, both work.
   ========================================================================== */


/* ==========================================================================
   SECTION 1: AI presence — buttons emitted by ai_badge() macro
   ========================================================================== */

[data-theme="dark-roast"] .sn-ai-label {
    /* button reset for inline badge */
    appearance: none;
    -webkit-appearance: none;
    background: var(--sn-ai-generated-bg);
    color: var(--sn-ai-generated-fg);
    border: 1px solid var(--sn-ai-generated-border);
    border-radius: var(--dr-radius-sm);
    font-family: var(--dr-font-mono);
    font-size: var(--dr-text-xs);
    font-weight: 500;
    letter-spacing: var(--dr-tracking-wide);
    padding: 2px 6px;
    cursor: pointer;
    text-transform: uppercase;
    transition: box-shadow var(--dr-duration-fast) var(--dr-easing);
    /* Carbon: the badge is the path to explainability — nothing else.
       No icon-only ambiguity; the label text always reads. */
}

[data-theme="dark-roast"] .sn-ai-label:hover {
    box-shadow: var(--sn-ai-generated-aura);
}

[data-theme="dark-roast"] .sn-ai-label:focus-visible {
    outline: var(--sn-focus-ring-width) solid var(--sn-focus-ring);
    outline-offset: var(--sn-focus-ring-offset);
}

/* — ai-suggested variant — */
[data-theme="dark-roast"] .sn-ai-label--ai-suggested,
[data-theme="dark-roast"] .sn-ai-label--suggested {
    background: var(--sn-ai-suggested-bg);
    color: var(--sn-ai-suggested-fg);
    border-color: var(--sn-ai-suggested-border);
}
[data-theme="dark-roast"] .sn-ai-label--ai-suggested:hover,
[data-theme="dark-roast"] .sn-ai-label--suggested:hover {
    box-shadow: var(--sn-ai-suggested-aura);
}

/* — ai-inferred variant — */
[data-theme="dark-roast"] .sn-ai-label--ai-inferred,
[data-theme="dark-roast"] .sn-ai-label--inferred {
    background: var(--sn-ai-inferred-bg);
    color: var(--sn-ai-inferred-fg);
    border-color: var(--sn-ai-inferred-border);
}
[data-theme="dark-roast"] .sn-ai-label--ai-inferred:hover,
[data-theme="dark-roast"] .sn-ai-label--inferred:hover {
    box-shadow: var(--sn-ai-inferred-aura);
}


/* ==========================================================================
   SECTION 2: Provenance badges — spans emitted by provenance_badge() macro
   ========================================================================== */

[data-theme="dark-roast"] .sn-provenance-badge {
    display: inline-flex;
    align-items: center;
    background: var(--sn-provenance-manual-bg);
    color: var(--sn-provenance-manual-fg);
    border: 1px solid var(--sn-provenance-manual-border);
    border-radius: var(--dr-radius-sm);
    font-family: var(--dr-font-mono);
    font-size: var(--dr-text-xs);
    letter-spacing: var(--dr-tracking-wide);
    padding: 2px 6px;
    text-transform: uppercase;
}

[data-theme="dark-roast"] .sn-provenance-badge--retrieved {
    background: var(--sn-provenance-retrieved-bg);
    color: var(--sn-provenance-retrieved-fg);
    border-color: var(--sn-provenance-retrieved-border);
}

[data-theme="dark-roast"] .sn-provenance-badge--parser-extracted {
    background: var(--sn-provenance-parser-extracted-bg);
    color: var(--sn-provenance-parser-extracted-fg);
    border-color: var(--sn-provenance-parser-extracted-border);
}

[data-theme="dark-roast"] .sn-provenance-badge--calculator-derived {
    background: var(--sn-provenance-calculator-derived-bg);
    color: var(--sn-provenance-calculator-derived-fg);
    border-color: var(--sn-provenance-calculator-derived-border);
}

[data-theme="dark-roast"] .sn-provenance-badge--system-derived {
    background: var(--sn-provenance-system-derived-bg);
    color: var(--sn-provenance-system-derived-fg);
    border-color: var(--sn-provenance-system-derived-border);
}

[data-theme="dark-roast"] .sn-provenance-badge--human-edited-ai {
    background: var(--sn-provenance-human-edited-ai-bg);
    color: var(--sn-provenance-human-edited-ai-fg);
    border-color: var(--sn-provenance-human-edited-ai-border);
}

[data-theme="dark-roast"] .sn-provenance-badge--unknown {
    background: var(--sn-provenance-unknown-bg);
    color: var(--sn-provenance-unknown-fg);
    border-color: var(--sn-provenance-unknown-border);
}


/* ==========================================================================
   SECTION 3: Compile-provenance panel — JS-rendered surface retrofit
   note-generation.js:_renderProvenancePanel emits this DOM structure.
   Before this file, the panel had zero CSS bindings — these rules wire
   it for the first time using the new --sn-* tokens.
   ========================================================================== */

[data-theme="dark-roast"] .compile-provenance-panel {
    background: var(--sn-surface-overlay);
    border: 1px solid var(--sn-border-default);
    border-radius: var(--dr-radius-md);
    padding: var(--dr-space-3);
    margin-top: var(--dr-space-3);
    font-family: var(--dr-font-body);
    color: var(--sn-text-secondary);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--dr-space-3);
    padding-bottom: var(--dr-space-2);
    border-bottom: 1px solid var(--sn-border-subtle);
    margin-bottom: var(--dr-space-2);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-title {
    font-size: var(--dr-text-base);
    font-weight: 600;
    color: var(--sn-text-primary);
    letter-spacing: var(--dr-tracking-wide);
    text-transform: uppercase;
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-stats {
    font-family: var(--dr-font-mono);
    font-size: var(--dr-text-xs);
    color: var(--sn-text-muted);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-problem {
    background: var(--sn-surface-raised);
    border: 1px solid var(--sn-border-default);
    border-radius: var(--dr-radius-sm);
    padding: var(--dr-space-2) var(--dr-space-3);
    margin-bottom: var(--dr-space-2);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-problem > summary {
    display: flex;
    align-items: center;
    gap: var(--dr-space-2);
    cursor: pointer;
    list-style: none;
    color: var(--sn-text-primary);
    min-height: var(--sn-density-review-row);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-problem > summary::-webkit-details-marker {
    display: none;
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-problem-name {
    font-weight: 500;
    flex: 1;
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-evidence-count {
    font-family: var(--dr-font-mono);
    font-size: var(--dr-text-xs);
    color: var(--sn-text-muted);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-fallback-badge {
    background: var(--sn-status-warning-bg);
    color: var(--sn-status-warning-fg);
    border: 1px solid var(--sn-status-warning-border);
    border-radius: var(--dr-radius-sm);
    font-family: var(--dr-font-mono);
    font-size: var(--dr-text-xs);
    letter-spacing: var(--dr-tracking-wide);
    padding: 1px 5px;
    text-transform: uppercase;
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-list {
    list-style: none;
    margin: var(--dr-space-2) 0 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--dr-space-1);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-empty {
    color: var(--sn-text-muted);
    font-style: italic;
    font-size: var(--dr-text-sm);
    padding: var(--dr-space-2);
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-item {
    background: var(--sn-provenance-manual-bg);
    border: 1px solid var(--sn-provenance-manual-border);
    border-left-width: 3px;   /* category accent */
    border-radius: var(--dr-radius-sm);
    color: var(--sn-text-secondary);
    font-size: var(--dr-text-sm);
    padding: var(--dr-space-1) var(--dr-space-2);
    display: flex;
    align-items: baseline;
    gap: var(--dr-space-2);
    flex-wrap: wrap;
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-source {
    font-family: var(--dr-font-mono);
    font-size: var(--dr-text-xs);
    letter-spacing: var(--dr-tracking-wide);
    color: var(--sn-text-muted);
    text-transform: uppercase;
}

[data-theme="dark-roast"] .compile-provenance-panel .provenance-low-conf {
    background: var(--sn-status-warning-bg);
    color: var(--sn-status-warning-fg);
    border: 1px solid var(--sn-status-warning-border);
    border-radius: var(--dr-radius-sm);
    font-family: var(--dr-font-mono);
    font-size: var(--dr-text-xs);
    padding: 1px 5px;
    margin-left: auto;
    text-transform: uppercase;
}


/* ==========================================================================
   SECTION 4: Source-category retargeting for .provenance-item--{source}
   Maps both raw backend strings and canonical category suffixes onto the
   correct --sn-* family per DARK_ROAST_ROLE_INVENTORY.md §H mapping table.

   When a JS adapter normalizes raw → canonical e.source values, the raw
   selectors here can be dropped. Until then, both shapes work.
   ========================================================================== */

/* — AI generated (LLM authorship) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--ai-generated,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--generated,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--haiku-generated,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--claude-generated,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--openai-generated,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--gemini-generated,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--llm-generated {
    background: var(--sn-ai-generated-bg);
    border-color: var(--sn-ai-generated-border);
    color: var(--sn-ai-generated-fg);
}

/* — AI suggested — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--ai-suggested,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--suggested,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--draft-suggested,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--rewrite-suggested {
    background: var(--sn-ai-suggested-bg);
    border-color: var(--sn-ai-suggested-border);
    color: var(--sn-ai-suggested-fg);
}

/* — AI inferred (model classification) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--ai-inferred,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--inferred,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--risk-inferred,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--model-inferred,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--classifier-inferred {
    background: var(--sn-ai-inferred-bg);
    border-color: var(--sn-ai-inferred-border);
    color: var(--sn-ai-inferred-fg);
}

/* — Retrieved (RAG, prior note, EHR) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--retrieved,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--rag-retrieved,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--prior-note,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--ehr-source,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--source-cited {
    background: var(--sn-provenance-retrieved-bg);
    border-color: var(--sn-provenance-retrieved-border);
    color: var(--sn-provenance-retrieved-fg);
}

/* — Parser-extracted (rule-based extraction) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--parser-extracted,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--text-extracted,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--ocr-extracted {
    background: var(--sn-provenance-parser-extracted-bg);
    border-color: var(--sn-provenance-parser-extracted-border);
    color: var(--sn-provenance-parser-extracted-fg);
}

/* — Calculator-derived (deterministic computation) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--calculator-derived,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--score-calculated,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--rule-derived {
    background: var(--sn-provenance-calculator-derived-bg);
    border-color: var(--sn-provenance-calculator-derived-border);
    color: var(--sn-provenance-calculator-derived-fg);
}

/* — System-derived (pipeline / compiled) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--system-derived,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--system,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--pipeline,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--compiled {
    background: var(--sn-provenance-system-derived-bg);
    border-color: var(--sn-provenance-system-derived-border);
    color: var(--sn-provenance-system-derived-fg);
}

/* — Manual (human-authored) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--manual,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--user,
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--human {
    background: var(--sn-provenance-manual-bg);
    border-color: var(--sn-provenance-manual-border);
    color: var(--sn-provenance-manual-fg);
}

/* — Human-edited AI (was AI, now user-modified) — */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--human-edited-ai {
    background: var(--sn-provenance-human-edited-ai-bg);
    border-color: var(--sn-provenance-human-edited-ai-border);
    color: var(--sn-provenance-human-edited-ai-fg);
}

/* — Unknown / null / unrecognized (warning treatment) —
     Critical: NOT AI styling. Carbon's contract says unknown provenance
     gets the warning-tinted unknown family, never AI presence. This is
     what JS emits today when e.source is missing/null. */
[data-theme="dark-roast"] .compile-provenance-panel .provenance-item--unknown {
    background: var(--sn-provenance-unknown-bg);
    border-color: var(--sn-provenance-unknown-border);
    color: var(--sn-provenance-unknown-fg);
}
