/* Sentinella Civica — Main Stylesheet */
/* Institutional design — Titillium Web + Lato, PA Italiana palette */

@import url('https://fonts.googleapis.com/css2?family=Titillium+Web:wght@400;600;700;900&family=Lato:wght@300;400;700&display=swap');

:root {
    --color-bg: #f5f6fa;
    --color-surface: #ffffff;
    --color-primary: #003366;
    --color-primary-light: #004080;
    --color-accent: #004080;
    --color-secondary: #b8860b;
    --color-secondary-dark: #9a7209;
    --color-danger: #c0392b;
    --color-warning: #d4a017;
    --color-success: #1a7a3a;
    --color-text: #2c2c2c;
    --color-text-secondary: #6b7280;
    --color-border: #e2e5ed;
    --color-muted: #6b7280;
    --color-navbar-bg: #002244;
    --color-footer-bg: #1a1a2e;
    --color-footer-text: #8892a6;
    --color-footer-link: #a0aec0;
    --color-footer-muted: #636d80;
    --color-table-header: #003366;
    --color-table-header-border: #002244;
    --color-table-stripe: #f7f9fc;
    --color-table-hover: #edf2f8;
    --color-section-bg: #f8f9fa;
    --color-section-hover: #eef2f7;
    --color-row-hover: #f8fafd;
    --color-notice-bg: #fff8e1;
    --color-notice-border: #ffe082;
    --color-notice-text: #5d4037;
    --color-tag-bg: #e8f4fd;
    --color-tag-border: #c4ddf2;
    --color-highlight-bg: #f0f8ff;
    --color-highlight-border: #d0e4f5;
    --color-input-bg: #ffffff;
    --color-focus-ring: rgba(0,51,102,0.1);
    --color-hero-start: #001a33;
    --color-hero-mid: #003366;
    --color-hero-end: #004080;
    --radius: 6px;
    --radius-sm: 4px;
    --shadow: 0 1px 4px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
    --shadow-md: 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04);
    --font-heading: 'Titillium Web', 'Segoe UI', sans-serif;
    --font-body: 'Lato', 'Segoe UI', sans-serif;
    --transition: 0.2s ease;
}

/* Dark theme variables */
[data-theme="dark"] {
    color-scheme: dark;
    --color-bg: #121212;
    --color-surface: #1e1e2e;
    --color-primary: #4a90d9;
    --color-primary-light: #5ba3e6;
    --color-accent: #4a90d9;
    --color-secondary: #d4a830;
    --color-secondary-dark: #b8960d;
    --color-danger: #ef5350;
    --color-warning: #f0b429;
    --color-success: #66bb6a;
    --color-text: #e0e0e0;
    --color-text-secondary: #a0a0a0;
    --color-border: #2a2a3a;
    --color-muted: #a0a0a0;
    --color-navbar-bg: #0a1020;
    --color-footer-bg: #0d0d1a;
    --color-footer-text: #8892a6;
    --color-footer-link: #a0aec0;
    --color-footer-muted: #636d80;
    --color-table-header: #1a2a40;
    --color-table-header-border: #0f1724;
    --color-table-stripe: #1a1a2a;
    --color-table-hover: #252538;
    --color-section-bg: #252538;
    --color-section-hover: #2a2a3e;
    --color-row-hover: #1e1e30;
    --color-notice-bg: #2a2000;
    --color-notice-border: #5a4200;
    --color-notice-text: #d4a830;
    --color-tag-bg: #1a2a40;
    --color-tag-border: #2a3a52;
    --color-highlight-bg: #1a2538;
    --color-highlight-border: #2a3a52;
    --color-input-bg: #1a1a2a;
    --color-focus-ring: rgba(74,144,217,0.2);
    --color-hero-start: #080e1a;
    --color-hero-mid: #0d1a30;
    --color-hero-end: #122040;
    --shadow: 0 2px 8px rgba(0,0,0,0.3);
    --shadow-md: 0 4px 16px rgba(0,0,0,0.4);
}

/* Auto dark mode for system preference */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        color-scheme: dark;
        --color-bg: #121212;
        --color-surface: #1e1e2e;
        --color-primary: #4a90d9;
        --color-primary-light: #5ba3e6;
        --color-accent: #4a90d9;
        --color-secondary: #d4a830;
        --color-secondary-dark: #b8960d;
        --color-danger: #ef5350;
        --color-warning: #f0b429;
        --color-success: #66bb6a;
        --color-text: #e0e0e0;
        --color-text-secondary: #a0a0a0;
        --color-border: #2a2a3a;
        --color-muted: #a0a0a0;
        --color-navbar-bg: #0a1020;
        --color-footer-bg: #0d0d1a;
        --color-footer-text: #8892a6;
        --color-footer-link: #a0aec0;
        --color-footer-muted: #636d80;
        --color-table-header: #1a2a40;
        --color-table-header-border: #0f1724;
        --color-table-stripe: #1a1a2a;
        --color-table-hover: #252538;
        --color-section-bg: #252538;
        --color-section-hover: #2a2a3e;
        --color-row-hover: #1e1e30;
        --color-notice-bg: #2a2000;
        --color-notice-border: #5a4200;
        --color-notice-text: #d4a830;
        --color-tag-bg: #1a2a40;
        --color-tag-border: #2a3a52;
        --color-highlight-bg: #1a2538;
        --color-highlight-border: #2a3a52;
        --color-input-bg: #1a1a2a;
        --color-focus-ring: rgba(74,144,217,0.2);
        --color-hero-start: #080e1a;
        --color-hero-mid: #0d1a30;
        --color-hero-end: #122040;
        --shadow: 0 2px 8px rgba(0,0,0,0.3);
        --shadow-md: 0 4px 16px rgba(0,0,0,0.4);
    }
}

/* Dark theme — badge overrides */
[data-theme="dark"] .badge-determina,
[data-theme="dark"] .badge-avviso { background: #455a64; color: #cfd8dc; }
[data-theme="dark"] .badge-delibera_giunta { background: #00695c; color: #b2dfdb; }
[data-theme="dark"] .badge-delibera_consiglio { background: #4527a0; color: #d1c4e9; }
[data-theme="dark"] .badge-ordinanza { background: #6d2020; color: #ffab91; }
[data-theme="dark"] .badge-bando { background: #5a4e00; color: #fff59d; }
[data-theme="dark"] .badge-decreto { background: #4a0020; color: #f48fb1; }
[data-theme="dark"] .badge-contratto { background: #004d37; color: #a5d6a7; }
[data-theme="dark"] .badge-altro { background: #455a64; color: #cfd8dc; }
[data-theme="dark"] .badge-connector { background: #37474f; color: #b0bec5; }
/* Dark theme — risk panels */
[data-theme="dark"] .risk-panel-ok { background: #1b5e20; border-color: #388e3c; }
[data-theme="dark"] .risk-panel-info { background: #0d47a1; border-color: #1565c0; }
[data-theme="dark"] .risk-panel-warn { background: #e65100; border-color: #f57c00; }
[data-theme="dark"] .risk-panel-high { background: #bf360c; border-color: #d84315; }
[data-theme="dark"] .risk-panel-critical { background: #b71c1c; border-color: #c62828; }
/* Dark theme — component overrides */
[data-theme="dark"] input,
[data-theme="dark"] select,
[data-theme="dark"] textarea { background: var(--color-input-bg); color: var(--color-text); border-color: var(--color-border); }
[data-theme="dark"] .data-table tr:nth-child(even) td,
[data-theme="dark"] .muni-overview-table tr:nth-child(even) td { background: var(--color-table-stripe); }
[data-theme="dark"] .data-table tr:hover td,
[data-theme="dark"] .legal-table tr:nth-child(even),
[data-theme="dark"] .muni-overview-table tr:hover td { background: var(--color-table-hover); }
[data-theme="dark"] .act-row:hover { background: var(--color-row-hover); }
[data-theme="dark"] .anomaly-act-link { background: var(--color-highlight-bg); border-color: var(--color-highlight-border); }
[data-theme="dark"] .anomaly-act-link:hover { background: var(--color-table-hover); }
[data-theme="dark"] .panel-disclaimer { background: var(--color-notice-bg); border-color: var(--color-notice-border); color: var(--color-notice-text); }
[data-theme="dark"] .muni-stat-card { border-top-color: var(--color-accent); }
[data-theme="dark"] .muni-stat-card--alert { background: var(--color-surface); }
[data-theme="dark"] .muni-detail-section { border-top-color: var(--color-accent); }
[data-theme="dark"] .act-detail-header { border-top-color: var(--color-accent); }
[data-theme="dark"] .filters-bar { border-top-color: var(--color-accent); }
[data-theme="dark"] .breadcrumb, [data-theme="dark"] .breadcrumb-nav { background: var(--color-surface); border-color: var(--color-border); }
[data-theme="dark"] .muni-overview-table th, [data-theme="dark"] .data-table th { background: var(--color-table-header); border-bottom-color: var(--color-table-header-border); }
[data-theme="dark"] .muni-overview-table th:hover, [data-theme="dark"] .data-table th:hover { background: #243550; }
[data-theme="dark"] .pagination { background: var(--color-surface); }
[data-theme="dark"] .pagination a { border-color: var(--color-border); color: var(--color-accent); }
[data-theme="dark"] .pagination a:hover { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }
[data-theme="dark"] .ai-block { background: var(--color-section-bg); }
[data-theme="dark"] .ai-foia,
[data-theme="dark"] .ai-raw { background: var(--color-section-bg); }
[data-theme="dark"] .ai-routine { background: var(--color-notice-bg); border-color: var(--color-notice-border); }
[data-theme="dark"] .ai-routine strong,
[data-theme="dark"] .ai-routine p { color: var(--color-notice-text); }
[data-theme="dark"] .ai-explanation { background: var(--color-highlight-bg); border-left-color: var(--color-accent); }
[data-theme="dark"] .act-text { background: var(--color-section-bg); }
[data-theme="dark"] .alert-subscribe-form { border-top-color: var(--color-accent); }
[data-theme="dark"] .alert-success-box { border-top-color: var(--color-success); }
[data-theme="dark"] .alert-result-box { border-top-color: var(--color-success); }
[data-theme="dark"] .alert-consent-box { background: var(--color-highlight-bg); border-color: var(--color-highlight-border); border-left-color: var(--color-accent); }
[data-theme="dark"] .alert-result-details { background: var(--color-section-bg); }
[data-theme="dark"] .alert-error-box { background: #3a1515; border-color: #5a2020; color: #ef9a9a; }
[data-theme="dark"] .foia-act-ref { border-top-color: var(--color-accent); }
[data-theme="dark"] .foia-timeline-section { border-top-color: var(--color-accent); }
[data-theme="dark"] .foia-bookmark-notice { background: var(--color-highlight-bg); border-color: var(--color-highlight-border); border-left-color: var(--color-accent); color: var(--color-text-secondary); }
[data-theme="dark"] .foia-tracker-inline { background: var(--color-section-bg); }
[data-theme="dark"] .foia-form-inline-row input[type="date"],
[data-theme="dark"] .foia-form-inline-row input[type="text"] { background: var(--color-input-bg); }
[data-theme="dark"] .foia-email-fields { background: var(--color-input-bg); border-color: var(--color-border); }
[data-theme="dark"] .foia-act-ref h2,
[data-theme="dark"] .foia-timeline-section h2,
[data-theme="dark"] .foia-update-section h2,
[data-theme="dark"] .foia-next-steps h2 { color: var(--color-accent); }
[data-theme="dark"] .smtp-disabled-banner { background: var(--color-notice-bg); border-color: var(--color-notice-border); color: var(--color-notice-text); }
[data-theme="dark"] .guida-fase-num { background: var(--color-accent); }
[data-theme="dark"] .guida-card { border-top-color: var(--color-accent); }
[data-theme="dark"] .guida-table th { background: var(--color-table-header); border-bottom-color: var(--color-table-header-border); }
[data-theme="dark"] .guida-table tr:nth-child(even) td { background: var(--color-table-stripe); }
[data-theme="dark"] .guida-table tr:hover td { background: var(--color-table-hover); }
[data-theme="dark"] .guida-risorsa { border-left-color: var(--color-accent); }
[data-theme="dark"] .guida-risorsa:hover { background: var(--color-highlight-bg); }
[data-theme="dark"] .guida-disclaimer { background: var(--color-notice-bg); border-color: var(--color-notice-border); color: var(--color-notice-text); }
[data-theme="dark"] .guida-tip { background: #0f2a1a; border-left-color: var(--color-success); color: #a5d6a7; }
[data-theme="dark"] .guida-tip--warning { background: var(--color-notice-bg); border-left-color: var(--color-warning); color: var(--color-notice-text); }
[data-theme="dark"] .guida-timeline-item.gtl-warn { background: var(--color-notice-bg); }
[data-theme="dark"] .guida-fase-body h2 { color: var(--color-accent); }
[data-theme="dark"] .legal-table th { background: var(--color-table-header); }
[data-theme="dark"] .legal-table tr:nth-child(even) { background: var(--color-table-stripe); }
[data-theme="dark"] .legal-table tr:hover { background: var(--color-table-hover); }
/* Privacy / Termini dark mode */
[data-theme="dark"] .privacy-page h2 { color: var(--color-accent); border-left-color: var(--color-accent); }
[data-theme="dark"] .privacy-page h3 { color: var(--color-accent); }
[data-theme="dark"] .privacy-notice { background: linear-gradient(135deg, #1a2538 0%, #1e1a30 100%); border-color: #5a3a8a; }
[data-theme="dark"] .privacy-notice h2 { color: #b39ddb; }
[data-theme="dark"] .privacy-notice p { color: var(--color-text); }
[data-theme="dark"] .privacy-legal-refs { color: #b39ddb; }
/* Disclaimer banner dark mode */
[data-theme="dark"] .disclaimer-banner { background: var(--color-notice-bg); border-color: var(--color-notice-border); color: var(--color-notice-text); border-left-color: var(--color-notice-text); }
/* Metodologia dark mode */
[data-theme="dark"] .metodo-section { border-top-color: var(--color-accent); }
[data-theme="dark"] .metodo-section h2 { color: var(--color-accent); }
[data-theme="dark"] .metodo-note { background: var(--color-notice-bg); border-left-color: var(--color-notice-text); color: var(--color-notice-text); }
[data-theme="dark"] .metodo-note a { color: var(--color-accent); }
[data-theme="dark"] .metodo-formula { background: var(--color-section-bg); border-color: var(--color-border); color: var(--color-text); }
[data-theme="dark"] .metodo-dim-doc { background: #0d2137; }
[data-theme="dark"] .metodo-dim-proc { background: #2a1a0f; }
[data-theme="dark"] .metodo-dim-stat { background: #1e0f2a; }
[data-theme="dark"] .metodo-ref-item { border-left-color: var(--color-accent); }
[data-theme="dark"] .metodo-ref-item:hover { border-left-color: var(--color-secondary); }
/* Glossario dark mode */
[data-theme="dark"] .glossario-nav { border-top-color: var(--color-accent); }
[data-theme="dark"] .glossario-nav a { background: var(--color-tag-bg); color: var(--color-accent); }
[data-theme="dark"] .glossario-nav a:hover { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }
[data-theme="dark"] .glossario-list dt { color: var(--color-accent); border-left-color: var(--color-accent); }
[data-theme="dark"] .glossario-list dd code { background: var(--color-section-bg); border-color: var(--color-border); }
[data-theme="dark"] .gloss-ref { border-left-color: var(--color-accent); }
[data-theme="dark"] details.act-section > summary { background: var(--color-section-bg); }
[data-theme="dark"] details.act-section[open] > summary { background: var(--color-section-hover); }
/* Dark theme — search */
[data-theme="dark"] .search-result:hover { border-left-color: var(--color-accent); }
[data-theme="dark"] .similarity-score { background: var(--color-accent); }
[data-theme="dark"] .filter-tag { background: var(--color-tag-bg); color: var(--color-accent); border-color: var(--color-tag-border); }
[data-theme="dark"] .confidence-pill { background: var(--color-tag-bg); }
/* Dark theme — entity tags */
[data-theme="dark"] .entity-tag { background: var(--color-section-bg); }
[data-theme="dark"] .entity-amount { background: #3a3000; }
[data-theme="dark"] .entity-CIG, [data-theme="dark"] .entity-CUP { background: #003a3a; }
[data-theme="dark"] .entity-date { background: var(--color-section-bg); }
[data-theme="dark"] .entity-procedural_keyword { background: #3a2a6a; }
[data-theme="dark"] .entity-official, [data-theme="dark"] .entity-company { background: #4a2020; }
/* Dark theme — links & misc */
[data-theme="dark"] .link-outgoing { background: #0d2137; color: #64b5f6; }
[data-theme="dark"] .link-incoming { background: #1e0f2a; color: #ce93d8; }
[data-theme="dark"] .doc-icon { background: var(--color-section-bg); }
[data-theme="dark"] .empty-state-hint code { background: var(--color-section-bg); }
[data-theme="dark"] .muni-act-card:hover { border-color: var(--color-accent); background: var(--color-highlight-bg); }
[data-theme="dark"] .anomaly-legal-ref { border-color: var(--color-border); }
[data-theme="dark"] .legal-ref-why { background: var(--color-highlight-bg); color: var(--color-text); border-bottom-color: var(--color-border); }
[data-theme="dark"] .legal-ref-norm { background: var(--color-section-bg); }
[data-theme="dark"] .warning-score-tag { background: #3a3000; color: #f0b429; }
[data-theme="dark"] .ca-featured { background: linear-gradient(135deg, #1a2538 0%, #1e2d45 100%); border-color: #2a3a52; }
[data-theme="dark"] .admin-body { background: var(--color-bg); }
[data-theme="dark"] .admin-stat-card { background: var(--color-surface); }
[data-theme="dark"] .admin-table th { background: var(--color-section-bg); }
[data-theme="dark"] .admin-table td { border-bottom-color: var(--color-border); }
[data-theme="dark"] .admin-table tr:hover td { background: var(--color-row-hover); }
[data-theme="dark"] .admin-filter-group select,
[data-theme="dark"] .admin-filter-group input { background: var(--color-input-bg); }
[data-theme="dark"] .admin-form-grid input,
[data-theme="dark"] .admin-form-grid select { background: var(--color-input-bg); }
[data-theme="dark"] .admin-form-grid input[readonly] { background: var(--color-section-bg); color: var(--color-text-secondary); }
[data-theme="dark"] .admin-flash--success { background: #0f2a1a; color: #a5d6a7; border-color: #1b5e20; }
[data-theme="dark"] .admin-flash--error { background: #3a1515; color: #ef9a9a; border-color: #5a2020; }
[data-theme="dark"] .admin-row--danger td { background: #2a1515; }
[data-theme="dark"] .admin-row--warn td { background: #2a2000; }
/* Map panel risk labels */
[data-theme="dark"] .map-muni-risk.risk-label-ok       { background: #0f2a1a; color: #66bb6a; border-color: #1b5e20; }
[data-theme="dark"] .map-muni-risk.risk-label-info     { background: #0d2137; color: #64b5f6; border-color: #1565c0; }
[data-theme="dark"] .map-muni-risk.risk-label-warn     { background: #2a2000; color: #f0b429; border-color: #5a4200; }
[data-theme="dark"] .map-muni-risk.risk-label-high     { background: #2a1a0f; color: #ffb74d; border-color: #e65100; }
[data-theme="dark"] .map-muni-risk.risk-label-critical { background: #3a1515; color: #ef5350; border-color: #c62828; }
/* FOIA status badges */
[data-theme="dark"] .foia-status-sent      { background: #0d2137; color: #64b5f6; }
[data-theme="dark"] .foia-status-extended  { background: #2a2000; color: #f0b429; }
[data-theme="dark"] .foia-status-responded { background: #0f2a1a; color: #a5d6a7; }
[data-theme="dark"] .foia-status-overdue   { background: #3a1515; color: #ef9a9a; }
[data-theme="dark"] .foia-status-riesame   { background: #1e0f2a; color: #ce93d8; }
[data-theme="dark"] .foia-status-escalated { background: #2a1a0f; color: #ffb74d; }
/* Health badges */
[data-theme="dark"] .badge-health-ok { background: #0f2a1a; color: #66bb6a; }
[data-theme="dark"] .badge-health-warn { background: #2a1a0f; color: #ffb74d; }
[data-theme="dark"] .badge-health-crit { background: #3a1515; color: #ef5350; }
[data-theme="dark"] .badge-health-disabled { background: #2a2a3a; color: #a0a0a0; }
/* AI badges */
[data-theme="dark"] .badge-ai-0 { background: #2a2a3a; color: #a0a0a0; }
[data-theme="dark"] .badge-ai-1 { background: #0f2a1a; color: #a5d6a7; }
[data-theme="dark"] .badge-ai-2 { background: #0d2137; color: #64b5f6; }
[data-theme="dark"] .badge-ai-3 { background: #1e0f2a; color: #ce93d8; }
/* Admin action badges */
[data-theme="dark"] .admin-badge--action-ingested  { background: #0f2a1a; color: #a5d6a7; }
[data-theme="dark"] .admin-badge--action-analyzed  { background: #0d2137; color: #64b5f6; }
[data-theme="dark"] .admin-badge--action-updated   { background: #2a2000; color: #f0b429; }
[data-theme="dark"] .admin-badge--action-processed { background: #1e0f2a; color: #ce93d8; }
[data-theme="dark"] .admin-badge--action-ai_run    { background: #3a1515; color: #ef9a9a; }
[data-theme="dark"] .admin-badge--action-exported  { background: #0a2a2a; color: #80cbc4; }
[data-theme="dark"] .admin-badge--action-redacted  { background: #2a2a3a; color: #b0bec5; }
/* Misc light-bg elements */
[data-theme="dark"] .badge-ok { background: #0f2a1a; color: #a5d6a7; }
[data-theme="dark"] .badge-warn { background: #2a2000; color: #f0b429; }
[data-theme="dark"] .anomaly-contest-link:hover { background: #2a1a0f; color: #ffb74d; }
[data-theme="dark"] .foia-draft-warning { color: #ef5350; }
[data-theme="dark"] .compare-diff { background: #2a2000; }
[data-theme="dark"] .muni-external-section { border-color: #1b5e20; }
[data-theme="dark"] .admin-budget-bar { background: #2a2a3a; }
[data-theme="dark"] .badge-retention { background: #2a2a3a; color: #a0a0a0; }
[data-theme="dark"] img { opacity: 0.9; }

/* Theme toggle button */
.theme-toggle {
    background: none; border: 1px solid rgba(255,255,255,0.25); border-radius: var(--radius-sm);
    cursor: pointer; padding: 0.25rem 0.5rem; font-size: 1.16rem; color: rgba(255,255,255,0.72);
    line-height: 1; display: inline-flex; align-items: center;
    transition: background var(--transition), color var(--transition);
}
.theme-toggle:hover { background: rgba(255,255,255,0.1); color: #fff; }
.theme-icon-dark { display: none; }
[data-theme="dark"] .theme-icon-light { display: none; }
[data-theme="dark"] .theme-icon-dark { display: inline; }
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .theme-icon-light { display: none; }
    :root:not([data-theme="light"]) .theme-icon-dark { display: inline; }
}

/* Honeypot anti-spam */
.ht-field { opacity: 0; position: absolute; height: 0; width: 0; z-index: -1; pointer-events: none; overflow: hidden; }

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
    font-family: var(--font-body);
    font-size: 16px;
    background: var(--color-bg);
    color: var(--color-text);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.container { max-width: 1200px; margin: 0 auto; padding: 0 1.5rem; }

/* ── Navbar ── */
.navbar {
    background: var(--color-navbar-bg);
    padding: 0;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 12px rgba(0,0,0,0.18);
    border-bottom: 3px solid var(--color-secondary);
}
.navbar .container { display: flex; justify-content: space-between; align-items: center; height: 56px; }
.nav-brand {
    color: #fff;
    text-decoration: none;
    font-family: var(--font-heading);
    font-size: 1.38rem;
    font-weight: 700;
    letter-spacing: 0.3px;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.nav-brand::before { content: '⚖'; font-size: 1.21rem; }
.nav-links { display: flex; align-items: center; gap: 0.15rem; }
.nav-links a {
    color: rgba(255,255,255,0.72);
    text-decoration: none;
    margin-left: 0;
    font-size: 0.97rem;
    font-weight: 400;
    transition: color var(--transition), background var(--transition);
    padding: 0.4rem 0.75rem;
    border-radius: var(--radius-sm);
}
.nav-links a:hover { color: #fff; background: rgba(255,255,255,0.1); }

/* Hamburger toggle — hidden on desktop */
.nav-toggle { display: none; }

/* ── Main ── */
main { padding: 2rem 0; min-height: 70vh; }

.page-header { margin-bottom: 1.5rem; }
.page-header h1 { font-family: var(--font-heading); font-size: 1.87rem; font-weight: 700; }

h1, h2, h3, h4 { font-family: var(--font-heading); }
h2 { margin: 1.8rem 0 1rem; font-size: 1.49rem; color: var(--color-primary); font-weight: 700; }

/* ── Hero ── */
.hero {
    text-align: center;
    padding: 3.5rem 1.5rem 2.5rem;
    margin: -2rem -1.5rem 1.75rem;
    background: linear-gradient(160deg, var(--color-hero-start) 0%, var(--color-hero-mid) 50%, var(--color-hero-end) 100%);
    border-radius: 0;
    border-bottom: none;
    box-shadow: inset 0 -4px 0 var(--color-secondary);
    position: relative;
}
.hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E") repeat;
    pointer-events: none;
}
.hero-icon {
    font-size: 3.08rem;
    line-height: 1;
    margin-bottom: 0.75rem;
    display: block;
    color: #fff;
    filter: drop-shadow(0 2px 8px rgba(0,0,0,0.25));
}
.hero h1 {
    font-family: var(--font-heading);
    font-size: 2.86rem;
    margin-bottom: 0.4rem;
    font-weight: 900;
    letter-spacing: -0.3px;
    color: #ffffff;
    position: relative;
}
.hero-tagline {
    font-family: var(--font-heading);
    font-size: 1.26rem;
    color: var(--color-secondary);
    font-weight: 600;
    margin-bottom: 0.85rem;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    position: relative;
}
.hero-desc {
    color: rgba(255,255,255,0.75);
    max-width: 620px;
    margin: 0 auto 1.5rem;
    line-height: 1.8;
    font-size: 1.12rem;
    position: relative;
}
.hero-cta {
    display: flex;
    gap: 1.5rem;
    justify-content: center;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
    position: relative;
}
.btn-hero-primary {
    display: inline-block;
    padding: 0.85rem 2rem;
    background: var(--color-secondary) !important;
    color: #fff !important;
    border: none !important;
    border-radius: var(--radius-sm);
    font-family: var(--font-heading);
    font-size: 1.12rem;
    font-weight: 700;
    text-decoration: none;
    transition: background var(--transition), transform 0.1s;
    box-shadow: 0 3px 10px rgba(0,0,0,0.2);
}
.btn-hero-primary:hover { background: var(--color-secondary-dark) !important; transform: translateY(-1px); }
.btn-hero-secondary {
    display: inline-block;
    padding: 0.85rem 2rem;
    background: transparent;
    color: rgba(255,255,255,0.9);
    border: 2px solid rgba(255,255,255,0.4) !important;
    border-radius: var(--radius-sm);
    font-family: var(--font-heading);
    font-size: 1.12rem;
    font-weight: 700;
    text-decoration: none;
    transition: background var(--transition), color var(--transition), border-color var(--transition), transform 0.1s;
}
.btn-hero-secondary:hover { background: rgba(255,255,255,0.12); color: #fff; border-color: rgba(255,255,255,0.6) !important; transform: translateY(-1px); }
.hero-update { font-size: 0.97rem; color: rgba(255,255,255,0.55); position: relative; }

/* ── Quick actions ── */
.quick-actions { display: flex; gap: 0.75rem; flex-wrap: wrap; margin-bottom: 2rem; }
.quick-actions .btn,
.quick-actions .btn-outline,
.quick-actions .btn-outline-danger,
.quick-actions .btn-outline-warning { padding: 0.6rem 1.25rem; font-size: 1.04rem; }

/* ── Buttons ── */
.btn {
    display: inline-block;
    padding: 0.5rem 1rem;
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-family: var(--font-heading);
    font-size: 0.97rem;
    font-weight: 600;
    text-decoration: none;
    transition: background var(--transition), transform 0.1s, box-shadow var(--transition);
}
.btn:hover { background: var(--color-primary-light); box-shadow: 0 2px 6px rgba(0,51,102,0.2); }
.btn:active { transform: scale(0.98); }
.btn-sm { padding: 0.3rem 0.7rem; font-size: 0.88rem; }
.btn-primary { background: var(--color-primary); }
.btn-primary:hover { background: var(--color-primary-light); }
.btn-ai { background: var(--color-secondary); }
.btn-ai:hover { background: var(--color-secondary-dark); }
.btn-outline {
    background: transparent; color: var(--color-primary);
    border: 1.5px solid var(--color-primary);
    padding: 0.5rem 1rem; border-radius: var(--radius-sm);
    font-family: var(--font-heading);
    font-size: 0.97rem; text-decoration: none; font-weight: 600;
    display: inline-block; transition: background var(--transition), color var(--transition);
}
.btn-outline:hover { background: var(--color-primary); color: #fff; }
.btn-outline-danger {
    background: transparent; color: var(--color-danger);
    border: 1.5px solid var(--color-danger);
    padding: 0.5rem 1rem; border-radius: var(--radius-sm);
    font-family: var(--font-heading);
    font-size: 0.97rem; text-decoration: none; font-weight: 600; display: inline-block;
    transition: background var(--transition), color var(--transition);
}
.btn-outline-danger:hover { background: var(--color-danger); color: #fff; }
.btn-outline-warning {
    background: transparent; color: var(--color-secondary);
    border: 1.5px solid var(--color-secondary);
    padding: 0.5rem 1rem; border-radius: var(--radius-sm);
    font-family: var(--font-heading);
    font-size: 0.97rem; text-decoration: none; font-weight: 600; display: inline-block;
    transition: background var(--transition), color var(--transition);
}
.btn-outline-warning:hover { background: var(--color-secondary); color: #fff; }

/* ── Stats Grid ── */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}
.stat-card {
    background: var(--color-surface);
    padding: 1.5rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    text-align: center;
    border-top: 4px solid var(--color-primary);
    transition: box-shadow var(--transition), transform var(--transition);
}
.stat-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.stat-card--blue { border-top-color: var(--color-primary); }
.stat-card--alert { border-top-color: var(--color-danger); }
.stat-icon { font-size: 1.65rem; margin-bottom: 0.4rem; }
.stat-value { font-family: var(--font-heading); font-size: 2.64rem; font-weight: 900; color: var(--color-primary); line-height: 1.1; }
.stat-label { color: var(--color-text-secondary); font-size: 0.94rem; margin-top: 0.3rem; text-transform: uppercase; letter-spacing: 0.3px; font-weight: 400; }

/* ── Municipality cards ── */
.municipality-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.muni-card {
    background: var(--color-surface);
    padding: 1.3rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    border-left: 4px solid var(--color-border);
    transition: box-shadow 0.2s;
}
.muni-card--alert { border-left-color: var(--color-danger); }
.muni-card:hover { box-shadow: var(--shadow-md); }
.muni-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.3rem; }
.muni-card h3 { font-size: 1.21rem; font-weight: 700; }
.muni-location { font-size: 0.94rem; color: var(--color-text-secondary); margin-bottom: 0.8rem; }
.muni-numbers { display: flex; gap: 1.5rem; margin: 0.6rem 0; }
.muni-stat-item { text-align: center; }
.muni-stat-value { display: block; font-size: 1.76rem; font-weight: 700; color: var(--color-primary); line-height: 1.1; }
.muni-stat-label { font-size: 0.86rem; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.5px; }
.muni-stat-item--alert .muni-stat-value { color: var(--color-danger); }
.muni-meta { font-size: 0.9rem; color: var(--color-text-secondary); margin: 0.5rem 0 0.8rem; }
.muni-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.badge-connector { background: var(--color-tag-bg); color: var(--color-text-secondary); font-size: 0.75rem; font-weight: 600; padding: 0.1rem 0.4rem; border-radius: 3px; font-family: monospace; }

/* ── Homepage section cards ── */
.home-section {
    background: var(--color-surface);
    border-radius: var(--radius);
    border: 1px solid var(--color-border);
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.75rem;
    box-shadow: var(--shadow);
}
.home-section > h2 {
    margin-top: 0;
    margin-bottom: 1rem;
    padding-bottom: 0.6rem;
    padding-left: 0.75rem;
    border-bottom: 1px solid var(--color-border);
    border-left: 4px solid var(--color-primary);
    font-size: 1.26rem;
    font-family: var(--font-heading);
}

/* ── Recent flagged / section links ── */
.recent-flagged { margin-bottom: 2rem; }
.section-more { text-align: right; margin-top: 0.8rem; font-size: 0.99rem; }
.section-more a { color: var(--color-accent); text-decoration: none; }
.section-more a:hover { text-decoration: underline; }
.td-date { white-space: nowrap; }
@media (max-width: 480px) {
    .recent-flagged .data-table th:nth-child(2),
    .recent-flagged .data-table td:nth-child(2),
    .recent-flagged .data-table th:nth-child(5),
    .recent-flagged .data-table td:nth-child(5) { display: none; }
}

/* ── Badges ── */
.badge {
    display: inline-block;
    padding: 0.15rem 0.5rem;
    border-radius: 3px;
    font-size: 0.79rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.badge-determina { background: #dfe6e9; color: #2d3436; }
.badge-delibera_giunta { background: #81ecec; color: #005f5b; }
.badge-delibera_consiglio { background: #a29bfe; color: #2d1b6e; }
.badge-ordinanza { background: #fab1a0; color: #6b2020; }
.badge-bando { background: #ffeaa7; color: #5a4e00; }
.badge-avviso { background: #dfe6e9; color: #2d3436; }
.badge-decreto { background: #fd79a8; color: #4a0020; }
.badge-contratto { background: #55efc4; color: #004d37; }
.badge-altro { background: #b2bec3; color: #2d3436; }
.badge-anomaly { background: var(--color-danger); color: #fff; }
.badge-anomaly-type { background: #636e72; color: #fff; font-size: 0.77rem; }

/* ── Filters ── */
.filters-bar {
    display: flex;
    gap: 0.7rem;
    flex-wrap: wrap;
    margin-bottom: 1.2rem;
    padding: 1rem 1.25rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    border-top: 3px solid var(--color-primary);
    align-items: center;
}
.filters-bar select,
.filters-bar input[type="text"],
.filters-bar input[type="number"] {
    padding: 0.5rem 0.75rem;
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: 0.97rem;
    background: var(--color-input-bg);
    color: var(--color-text);
    transition: border-color var(--transition), box-shadow var(--transition);
}
.filters-bar select:focus,
.filters-bar input:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-focus-ring); }
.filters-bar input[type="text"] { flex: 1; min-width: 180px; }
.filter-checkbox { display: flex; align-items: center; gap: 0.4rem; font-size: 0.97rem; cursor: pointer; white-space: nowrap; }
.filter-checkbox input { cursor: pointer; width: 14px; height: 14px; }
.filter-inline { display: flex; align-items: center; gap: 0.4rem; font-size: 0.97rem; white-space: nowrap; }
.filter-inline label { font-weight: 600; color: var(--color-text-secondary); }
.filter-count-label { font-size: 0.9rem; color: var(--color-text-secondary); margin-left: auto; }
.filter-count-label:empty { display: none; }

/* ── Results count ── */
.results-count { color: var(--color-text-secondary); margin-bottom: 0.8rem; font-size: 0.99rem; padding: 0.4rem 0; }
.results-count strong { color: var(--color-primary); font-size: 1.1rem; }
.filter-tag {
    display: inline-block;
    background: var(--color-tag-bg);
    color: var(--color-primary);
    padding: 0.15rem 0.55rem;
    border-radius: 12px;
    font-size: 0.88rem;
    margin-left: 0.3rem;
    font-weight: 500;
    border: 1px solid var(--color-tag-border);
}

/* ── Acts card list (replaces table) ── */
.acts-card-list { display: flex; flex-direction: column; gap: 0.5rem; margin-bottom: 2rem; }
.act-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1rem 1.25rem;
    box-shadow: var(--shadow);
    border-left: 4px solid transparent;
    border-top: 1px solid var(--color-border);
    transition: box-shadow 0.15s, background 0.15s;
}
.act-row:hover { box-shadow: var(--shadow-md); background: var(--color-row-hover); }
.act-row--flagged { border-left-color: var(--color-danger); }
.act-row-left { flex: 1; min-width: 0; }
.act-row-meta { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.35rem; }
.act-number { font-size: 0.94rem; color: var(--color-text-secondary); font-family: monospace; }
.act-date { font-size: 0.94rem; color: var(--color-text-secondary); }
.act-muni { font-size: 0.94rem; color: var(--color-text-secondary); font-weight: 500; }
.act-subject { display: block; color: var(--color-text); text-decoration: none; font-weight: 500; font-size: 1.1rem; line-height: 1.45; }
.act-subject:hover { color: var(--color-accent); }
.act-dept { font-size: 0.9rem; color: var(--color-text-secondary); margin-top: 0.25rem; }
.act-row-right { flex-shrink: 0; }
.anomaly-count-badge {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    background: var(--color-danger);
    color: #fff;
    padding: 0.25rem 0.6rem;
    border-radius: 12px;
    font-size: 0.9rem;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}
.anomaly-count-badge:hover { opacity: 0.85; }

/* ── Data Table (for dashboard recent acts) ── */
.data-table { width: 100%; border-collapse: collapse; background: var(--color-surface); box-shadow: var(--shadow); border-radius: var(--radius); overflow: hidden; }
.data-table th { background: var(--color-table-header); color: #fff; padding: 0.75rem 0.8rem; text-align: left; font-family: var(--font-heading); font-size: 0.9rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
.data-table td { padding: 0.7rem 0.8rem; border-bottom: 1px solid var(--color-border); font-size: 1.02rem; }
.data-table tr:last-child td { border-bottom: none; }
.data-table tr:nth-child(even) td { background: var(--color-table-stripe); }
.data-table tr:hover td { background: var(--color-table-hover); }
.data-table a { color: var(--color-primary); text-decoration: none; font-weight: 500; }
.data-table a:hover { color: var(--color-primary-light); text-decoration: underline; }
.row-flagged td:first-child { border-left: 3px solid var(--color-danger); }

/* ── Pagination ── */
.pagination { display: flex; justify-content: center; align-items: center; gap: 0.5rem; margin: 2rem 0; padding: 0.75rem; background: var(--color-surface); border-radius: var(--radius); box-shadow: var(--shadow); }
.pagination a { color: var(--color-primary); text-decoration: none; font-weight: 600; padding: 0.45rem 0.9rem; border: 1px solid var(--color-border); border-radius: var(--radius-sm); font-size: 0.94rem; transition: background var(--transition), color var(--transition), border-color var(--transition); }
.pagination a:hover { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.pagination-info { color: var(--color-text-secondary); font-size: 0.94rem; padding: 0 0.5rem; }
.pagination-info strong { color: var(--color-primary); }

/* ── Act Detail ── */
.breadcrumb { margin-bottom: 1.25rem; font-size: 0.94rem; color: var(--color-text-secondary); padding: 0.6rem 1rem; background: var(--color-surface); border-radius: var(--radius-sm); border: 1px solid var(--color-border); display: inline-flex; align-items: center; gap: 0.4rem; }
.breadcrumb a { color: var(--color-accent); text-decoration: none; font-weight: 500; }
.breadcrumb a:hover { text-decoration: underline; color: var(--color-primary); }
.breadcrumb span:last-child { color: var(--color-text); font-weight: 600; }

.act-detail { display: flex; flex-direction: column; gap: 0; }

.act-detail-header {
    background: var(--color-surface);
    padding: 1.75rem 2rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 0.75rem;
    border-top: 4px solid var(--color-primary);
}
.act-detail-header h1 { font-size: 1.54rem; line-height: 1.4; margin-bottom: 0.8rem; color: var(--color-primary); }
.act-meta { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 0.8rem; font-size: 0.97rem; color: var(--color-text-secondary); }
.meta-item { display: flex; align-items: center; gap: 0.25rem; }
.act-detail-actions { margin-top: 0.5rem; }

/* ── Collapsible sections ── */
details.act-section {
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 0.75rem;
    overflow: hidden;
}
details.act-section > summary {
    padding: 0.9rem 1.2rem;
    background: var(--color-section-bg);
    border-bottom: 1px solid transparent;
    cursor: pointer;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--color-primary);
    list-style: none;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    user-select: none;
    transition: background 0.15s;
}
details.act-section > summary::-webkit-details-marker { display: none; }
details.act-section > summary::after {
    content: '▶';
    font-size: 0.72rem;
    margin-left: auto;
    color: var(--color-text-secondary);
    transition: transform 0.2s;
}
details.act-section[open] > summary {
    border-bottom-color: var(--color-border);
    background: var(--color-section-hover);
}
details.act-section[open] > summary::after { transform: rotate(90deg); }
details.act-section > summary:hover { background: var(--color-section-hover); }
.section-count {
    background: var(--color-accent);
    color: #fff;
    font-size: 0.79rem;
    font-weight: 700;
    padding: 0.1rem 0.45rem;
    border-radius: 10px;
    margin-left: 0.25rem;
}
.section-content { padding: 1.2rem 1.5rem; }

/* ── Risk score panel ── */
.risk-score-panel {
    padding: 1.2rem 1.5rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 0.75rem;
}
.risk-panel-ok { background: #e8f5e9; border: 1px solid #81c784; }
.risk-panel-info { background: #e3f2fd; border: 1px solid #64b5f6; }
.risk-panel-warn { background: #fff8e1; border: 1px solid #ffb74d; }
.risk-panel-high { background: #fbe9e7; border: 1px solid #ff8a65; }
.risk-panel-critical { background: #ffebee; border: 1px solid #e57373; }

.risk-panel-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.8rem; }
.risk-label-badge {
    display: inline-block;
    padding: 0.25rem 0.8rem;
    border-radius: 20px;
    font-size: 0.9rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-right: 0.5rem;
}
.risk-label-ok { background: #27ae60; color: #fff; }
.risk-label-info { background: #3498db; color: #fff; }
.risk-label-warn { background: #f39c12; color: #fff; }
.risk-label-high { background: #e67e22; color: #fff; }
.risk-label-critical { background: #e74c3c; color: #fff; }
.risk-total-score { font-size: 1.21rem; font-weight: 700; color: var(--color-primary); }
.risk-warning-count { font-size: 0.94rem; color: var(--color-text-secondary); }

.risk-dimensions { display: flex; flex-direction: column; gap: 0.5rem; }
.dim-row { display: flex; align-items: center; gap: 0.6rem; }
.dim-label { min-width: 185px; font-size: 0.91rem; color: var(--color-text-secondary); }
.dim-bar-track { flex: 1; height: 8px; background: rgba(0,0,0,0.08); border-radius: 4px; overflow: hidden; }
.dim-bar-fill { height: 100%; border-radius: 4px; }
.dim-fill-doc { background: #3498db; }
.dim-fill-proc { background: #e67e22; }
.dim-fill-stat { background: #9b59b6; }
.dim-value { font-weight: 600; min-width: 45px; text-align: right; font-size: 0.91rem; }

/* ── Anomaly Panel ── */
.panel-disclaimer { font-size: 0.96rem; color: var(--color-notice-text); font-style: italic; margin-bottom: 1rem; padding: 0.5rem 0.75rem; background: var(--color-notice-bg); border-radius: var(--radius-sm); border: 1px solid var(--color-notice-border); }
.anomaly-card {
    padding: 1rem 1.25rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    margin-bottom: 0.75rem;
    border-left: 4px solid var(--color-warning);
    box-shadow: var(--shadow);
    transition: box-shadow var(--transition);
}
.anomaly-card:hover { box-shadow: var(--shadow-md); }
.anomaly-card:last-child { margin-bottom: 0; }
.anomaly-header { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.5rem; }
.anomaly-badges { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.anomaly-scores { display: flex; align-items: center; gap: 0.5rem; margin-left: auto; flex-shrink: 0; }
.anomaly-evidence { font-weight: 500; margin-bottom: 0.3rem; font-size: 1.04rem; }
.anomaly-explanation { font-size: 1.02rem; color: var(--color-text-secondary); line-height: 1.6; }

.confidence-pill {
    display: inline-block;
    padding: 0.1rem 0.45rem;
    background: var(--color-tag-bg);
    color: var(--color-primary);
    border-radius: 10px;
    font-size: 0.83rem;
    font-weight: 700;
}

/* ── Severity styles ── */
.severity-border-info { border-left-color: #3498db; }
.severity-border-warn { border-left-color: #f39c12; }
.severity-border-high { border-left-color: #e67e22; }
.severity-border-critical { border-left-color: #e74c3c; }

.badge-severity-info { background: #3498db; color: #fff; }
.badge-severity-warn { background: #f39c12; color: #fff; }
.badge-severity-high { background: #e67e22; color: #fff; }
.badge-severity-critical { background: #e74c3c; color: #fff; }

.badge-dimension { background: #6c5ce7; color: #fff; font-size: 0.75rem; }

.warning-score-tag {
    font-size: 0.79rem;
    font-weight: 700;
    color: var(--color-notice-text);
    background: var(--color-notice-bg);
    padding: 0.1rem 0.4rem;
    border-radius: 3px;
}

/* ── Anomaly list page ── */
.anomaly-list { display: flex; flex-direction: column; gap: 0.75rem; }
.anomaly-act-link { display: block; margin-top: 0.6rem; color: var(--color-accent); text-decoration: none; font-size: 0.94rem; padding: 0.5rem 0.75rem; background: var(--color-highlight-bg); border-radius: var(--radius-sm); border: 1px solid var(--color-highlight-border); transition: background 0.15s, border-color 0.15s; }
.anomaly-act-link:hover { background: var(--color-table-hover); border-color: var(--color-accent); }
.anomaly-date { font-size: 0.86rem; color: var(--color-text-secondary); }

/* ── AI blocks ── */
.ai-section { display: flex; flex-direction: column; gap: 0.75rem; }
.ai-block {
    background: var(--color-section-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 1rem;
}
.ai-block-header { display: flex; align-items: center; gap: 0.7rem; flex-wrap: wrap; margin-bottom: 0.7rem; }
.ai-block-header h3 { font-size: 1.1rem; margin: 0; color: var(--color-primary); }
.ai-timestamp { font-size: 0.84rem; color: var(--color-text-secondary); margin-left: auto; }
.ai-block-content { border-top: 1px solid var(--color-border); padding-top: 0.8rem; }
.ai-block-content h4 { margin: 0.8rem 0 0.3rem; font-size: 0.97rem; color: var(--color-primary); font-weight: 600; }
.inline-form { display: inline; }

.ai-summary { font-size: 1.04rem; line-height: 1.7; margin-bottom: 0.8rem; }
.ai-list { margin: 0.4rem 0 0.8rem 1.4rem; }
.ai-list li { margin-bottom: 0.35rem; line-height: 1.5; font-size: 0.99rem; }
.ai-meta-row { display: flex; gap: 1.5rem; flex-wrap: wrap; margin-top: 0.5rem; font-size: 0.97rem; }
.ai-classify-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; }
.classify-item { display: flex; gap: 0.5rem; font-size: 0.97rem; padding: 0.3rem 0; border-bottom: 1px solid var(--color-border); }
.classify-item:last-child { border-bottom: none; }
.ai-label { font-weight: 600; min-width: 120px; color: var(--color-primary); }
.ai-questions { margin: 0.4rem 0 0 1.2rem; }
.ai-questions li { margin-bottom: 0.7rem; line-height: 1.5; font-size: 0.99rem; }
.ai-text { white-space: pre-wrap; line-height: 1.7; font-size: 1.02rem; }
.ai-foia { line-height: 1.7; font-size: 1.02rem; background: var(--color-section-bg); padding: 1.25rem 1.5rem; border-radius: var(--radius-sm); border-left: 4px solid var(--color-primary); }
.ai-foia h3, .ai-foia h4, .ai-foia h5 { font-family: var(--font-heading); margin: 1.2rem 0 0.5rem; color: var(--color-primary); }
.ai-foia h3 { font-size: 1.21rem; }
.ai-foia h4 { font-size: 1.1rem; }
.ai-foia h5 { font-size: 1.02rem; }
.ai-foia p { margin: 0.4rem 0; }
.ai-foia ul { margin: 0.5rem 0 0.5rem 1.2rem; }
.ai-foia li { margin-bottom: 0.3rem; }
.ai-foia hr { border: none; border-top: 1px solid var(--color-border); margin: 1rem 0; }
.ai-raw { white-space: pre-wrap; font-size: 0.94rem; background: var(--color-section-bg); padding: 0.8rem; border-radius: var(--radius-sm); margin-top: 0.5rem; color: var(--color-text-secondary); }
.ai-routine { background: var(--color-notice-bg); border: 1px solid var(--color-notice-border); padding: 0.8rem; border-radius: var(--radius-sm); }
.ai-routine strong { display: block; margin-bottom: 0.3rem; color: var(--color-notice-text); }
.ai-routine p { color: var(--color-notice-text); margin: 0; font-size: 0.99rem; }
.ai-explanation { background: var(--color-highlight-bg); padding: 0.8rem; border-radius: var(--radius-sm); margin-top: 0.6rem; border-left: 3px solid var(--color-accent); }

/* ── Act body text ── */
.act-text {
    white-space: pre-wrap;
    font-size: 0.97rem;
    line-height: 1.7;
    padding: 1rem;
    background: var(--color-section-bg);
    border-radius: var(--radius-sm);
    max-height: 500px;
    overflow-y: auto;
}
.text-truncated { display: block; margin-top: 0.5rem; color: var(--color-text-secondary); font-style: italic; font-size: 0.9rem; }

/* ── Documents ── */
.doc-list { list-style: none; }
.doc-list li { padding: 0.5rem 0; border-bottom: 1px solid var(--color-border); display: flex; gap: 0.7rem; align-items: center; font-size: 0.97rem; }
.doc-list li:last-child { border-bottom: none; }
.doc-icon { font-size: 0.79rem; background: var(--color-tag-bg); padding: 0.2rem 0.45rem; border-radius: 3px; text-transform: uppercase; font-weight: 700; font-family: monospace; }
.doc-size { color: var(--color-text-secondary); font-size: 0.9rem; margin-left: auto; }
.quality-score { font-size: 0.86rem; color: var(--color-success); font-weight: 600; }
.badge-archived { background: var(--color-success); color: #fff; font-size: 0.73rem; padding: 0.1rem 0.4rem; border-radius: 8px; }

/* ── Entities ── */
.entity-tags { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.entity-tag { display: inline-block; padding: 0.2rem 0.6rem; border-radius: 3px; font-size: 0.9rem; background: var(--color-border); }
.entity-tag small { font-size: 0.75rem; color: var(--color-text-secondary); margin-right: 0.3rem; }
.entity-amount { background: #ffeaa7; }
.entity-CIG, .entity-CUP { background: #81ecec; }
.entity-date { background: #dfe6e9; }
.entity-procedural_keyword { background: #a29bfe; color: #fff; }
.entity-official, .entity-company { background: #fab1a0; }

/* ── Links ── */
.link-list { list-style: none; }
.link-list li { padding: 0.5rem 0; border-bottom: 1px solid var(--color-border); display: flex; gap: 0.5rem; align-items: flex-start; flex-wrap: wrap; font-size: 0.97rem; }
.link-list li:last-child { border-bottom: none; }
.link-direction-badge { font-size: 0.79rem; padding: 0.1rem 0.4rem; border-radius: 3px; font-weight: 600; white-space: nowrap; }
.link-outgoing { background: #e3f2fd; color: #1565c0; }
.link-incoming { background: #f3e5f5; color: #6a1b9a; }
.link-strength { font-size: 0.86rem; color: var(--color-accent); font-weight: 600; white-space: nowrap; }
.link-evidence { font-size: 0.86rem; color: var(--color-text-secondary); display: block; }

/* ── Risk distribution (dashboard) ── */
.risk-distribution {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    background: var(--color-surface);
    padding: 1.2rem 1.5rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 2rem;
}
.risk-bar-item { display: flex; align-items: center; gap: 0.7rem; }
.risk-bar-item .badge { min-width: 120px; text-align: center; font-size: 0.83rem; }
.risk-bar-track { flex: 1; height: 10px; background: var(--color-border); border-radius: 5px; overflow: hidden; }
.risk-bar-fill { height: 100%; border-radius: 5px; transition: width 0.4s ease; }
.risk-fill-ok { background: #27ae60; }
.risk-fill-info { background: #3498db; }
.risk-fill-warn { background: #f39c12; }
.risk-fill-high { background: #e67e22; }
.risk-fill-critical { background: #e74c3c; }
.risk-fill-unscored { background: #b2bec3; }
.risk-bar-count { font-weight: 700; min-width: 30px; text-align: right; font-size: 0.97rem; }
.risk-note { font-size: 0.86rem; color: var(--color-text-secondary); margin-top: 0.5rem; text-align: right; }

.badge-risk-ok { background: #27ae60; color: #fff; }
.badge-risk-info { background: #3498db; color: #fff; }
.badge-risk-warn { background: #f39c12; color: #fff; }
.badge-risk-high { background: #e67e22; color: #fff; }
.badge-risk-critical { background: #e74c3c; color: #fff; }
.badge-risk-unscored { background: #b2bec3; color: #2d3436; }

/* ── Search ── */
.search-form { display: flex; gap: 0.6rem; margin-bottom: 2rem; max-width: 800px; margin-left: auto; margin-right: auto; }
.search-form input { flex: 1; padding: 0.85rem 1rem; font-size: 1.1rem; border: 2px solid var(--color-border); border-radius: var(--radius); transition: border-color 0.15s, box-shadow 0.15s; }
.search-form input:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-focus-ring); }
.search-result { padding: 1.25rem; background: var(--color-surface); border-radius: var(--radius); margin-bottom: 0.75rem; box-shadow: var(--shadow); border-left: 4px solid transparent; transition: border-color 0.15s, box-shadow 0.15s; }
.search-result:hover { box-shadow: var(--shadow-md); border-left-color: var(--color-primary); }
.search-result h3 { margin-bottom: 0.25rem; }
.search-result h3 a { color: var(--color-primary); text-decoration: none; font-size: 1.1rem; }
.search-result h3 a:hover { text-decoration: underline; color: var(--color-accent); }
.search-meta { display: flex; gap: 0.8rem; margin-top: 0.4rem; font-size: 0.94rem; color: var(--color-text-secondary); flex-wrap: wrap; align-items: center; }
.search-mode-select { padding: 0.85rem 0.75rem; font-size: 1.1rem; border: 2px solid var(--color-border); border-radius: var(--radius); background: var(--color-surface); transition: border-color 0.15s; }
.search-mode-select:focus { outline: none; border-color: var(--color-accent); }
.similarity-score { background: var(--color-primary); color: #fff; padding: 0.15rem 0.5rem; border-radius: 10px; font-weight: 600; font-size: 0.88rem; }

/* ── Disclaimer banner ── */
.disclaimer-banner {
    background: var(--color-notice-bg);
    border: 1px solid var(--color-notice-border);
    border-left: 4px solid var(--color-warning);
    padding: 0.75rem 1rem;
    border-radius: var(--radius-sm);
    margin-bottom: 1.5rem;
    font-size: 0.97rem;
    color: var(--color-notice-text);
}

/* ── Empty state ── */
.empty-state { text-align: center; color: var(--color-text-secondary); padding: 3rem 1rem; font-size: 1.16rem; }

/* ── Error page ── */
.error-page {
    text-align: center;
    max-width: 560px;
    margin: 3rem auto;
    padding: 3rem 2rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    border-top: 4px solid var(--color-danger);
}
.error-page::before {
    content: '';
    display: block;
    width: 80px;
    height: 80px;
    margin: 0 auto 1.25rem;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(220,53,69,0.12) 0%, rgba(220,53,69,0.04) 70%, transparent 100%);
    border: 2px solid rgba(220,53,69,0.15);
}
.error-code {
    font-family: var(--font-heading);
    font-size: 5rem;
    font-weight: 900;
    color: var(--color-border);
    line-height: 1;
    margin-bottom: 0.5rem;
    letter-spacing: -2px;
    background: linear-gradient(180deg, var(--color-text-secondary), var(--color-border));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}
.error-page h1 {
    font-family: var(--font-heading);
    font-size: 1.54rem;
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: 0.75rem;
}
.error-message {
    font-size: 1.08rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    margin-bottom: 1.5rem;
    max-width: 380px;
    margin-left: auto;
    margin-right: auto;
}
.error-search {
    display: flex;
    gap: 0.5rem;
    max-width: 400px;
    margin: 0 auto 1.5rem;
}
.error-search input {
    flex: 1;
    padding: 0.6rem 1rem;
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius);
    font-size: 0.95rem;
    background: var(--color-surface);
    color: var(--color-text);
}
.error-search input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(26,35,126,0.1);
}
.error-actions { display: flex; gap: 0.75rem; justify-content: center; flex-wrap: wrap; }
.error-actions .btn { min-width: 140px; }
.error-suggestions {
    margin-top: 2rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border);
}
.error-suggestions-title {
    font-size: 0.92rem;
    color: var(--color-text-secondary);
    margin-bottom: 0.75rem;
}
.error-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: center;
}
.error-links a {
    display: inline-block;
    padding: 0.45rem 0.9rem;
    font-size: 0.88rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    color: var(--color-primary);
    text-decoration: none;
    background: var(--color-bg);
    transition: all 0.15s ease;
}
.error-links a:hover {
    background: var(--color-primary);
    color: #fff;
    border-color: var(--color-primary);
}
[data-theme="dark"] .error-code { -webkit-text-fill-color: #2a3a52; background: none; }
[data-theme="dark"] .error-page { border-top-color: var(--color-danger); }
[data-theme="dark"] .error-page::before { background: radial-gradient(circle, rgba(220,53,69,0.15) 0%, rgba(220,53,69,0.05) 70%, transparent 100%); border-color: rgba(220,53,69,0.2); }
[data-theme="dark"] .error-page h1 { color: var(--color-accent); }
[data-theme="dark"] .error-search input { background: var(--color-bg); border-color: var(--color-border); color: var(--color-text); }
[data-theme="dark"] .error-search input:focus { border-color: var(--color-accent); box-shadow: 0 0 0 3px rgba(100,181,246,0.15); }
[data-theme="dark"] .error-links a { background: var(--color-surface); border-color: var(--color-border); color: var(--color-accent); }
[data-theme="dark"] .error-links a:hover { background: var(--color-accent); color: #111; border-color: var(--color-accent); }

/* ── Privacy notice ── */
.privacy-notice {
    background: linear-gradient(135deg, var(--color-highlight-bg), #f0e6ff);
    border: 2px solid #7c3aed;
    border-radius: var(--radius);
    padding: 2rem;
    margin-bottom: 0.75rem;
    text-align: center;
}
.privacy-icon { font-size: 2.75rem; margin-bottom: 0.5rem; }
.privacy-notice h2 { color: #5b21b6; margin-bottom: 0.8rem; font-size: 1.43rem; }
.privacy-notice p { color: var(--color-text); line-height: 1.7; margin-bottom: 0.5rem; max-width: 700px; margin-left: auto; margin-right: auto; }
.privacy-legal-refs { font-size: 0.86rem; color: #7c3aed; margin-top: 1rem; }

/* ── Privacy page ── */
.privacy-page { max-width: 800px; margin: 0 auto; }
.privacy-page h1 { margin-bottom: 1.5rem; font-family: var(--font-heading); }
.privacy-page h2 { margin: 2rem 0 1rem; color: var(--color-primary); border-bottom: none; padding-bottom: 0.5rem; font-size: 1.38rem; border-left: 4px solid var(--color-primary); padding-left: 0.75rem; font-family: var(--font-heading); font-weight: 700; }
.privacy-page h3 { font-size: 1.1rem; color: var(--color-primary); margin-top: 1.5rem; font-family: var(--font-heading); font-weight: 600; }
.privacy-page section { background: var(--color-surface); border-radius: var(--radius); padding: 1.5rem 2rem; margin-bottom: 1.2rem; box-shadow: var(--shadow); }
.privacy-page p { margin-bottom: 1rem; line-height: 1.7; font-size: 1.02rem; }
.privacy-page ul { margin: 1rem 0 1rem 1.5rem; }
.privacy-page li { margin-bottom: 0.8rem; line-height: 1.7; font-size: 1.01rem; }
.privacy-page ol { margin: 1rem 0 1rem 1.5rem; }
.privacy-page ol li { margin-bottom: 0.6rem; line-height: 1.7; font-size: 1.01rem; }
.legal-last-updated { font-size: 0.94rem; color: var(--color-text-secondary); font-style: italic; margin-bottom: 1.5rem; }
.gdpr-email-cta { margin: 1.5rem 0; text-align: center; }
.gdpr-email-cta .btn { font-size: 1.1rem; padding: 0.75rem 2rem; }
.legal-table { width: 100%; border-collapse: collapse; margin: 1rem 0; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.legal-table th, .legal-table td { padding: 0.75rem 0.9rem; border: 1px solid var(--color-border); text-align: left; }
.legal-table th { background: var(--color-table-header); color: white; font-family: var(--font-heading); font-weight: 600; font-size: 0.86rem; text-transform: uppercase; letter-spacing: 0.4px; border-bottom: 2px solid var(--color-table-header-border); }
.legal-table tr:nth-child(even) { background: var(--color-table-stripe); }
.legal-table tr:hover { background: var(--color-table-hover); }
.legal-table td { font-size: 0.97rem; vertical-align: top; }
.legal-table a { color: var(--color-accent); text-decoration: none; }
.legal-table a:hover { text-decoration: underline; }

/* ── Footer ── */
.footer {
    background: var(--color-footer-bg);
    color: var(--color-footer-text);
    padding: 2.5rem 0 1.5rem;
    margin-top: 3rem;
    font-size: 0.9rem;
    border-top: 3px solid var(--color-secondary);
}
.footer-grid {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 2rem;
    margin-bottom: 1.5rem;
}
.footer-col h4 {
    font-family: var(--font-heading);
    color: #fff;
    font-size: 0.97rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 0.75rem;
}
.footer-col p { line-height: 1.6; margin-bottom: 0.4rem; }
.footer-col a { color: var(--color-footer-link); text-decoration: none; transition: color var(--transition); }
.footer-col a:hover { color: var(--color-secondary); }
.footer-col ul { list-style: none; padding: 0; margin: 0; }
.footer-col ul li { margin-bottom: 0.35rem; }
.footer-col ul li a { font-size: 0.9rem; }
.donate-btn {
    display: inline-block;
    margin-top: 0.8rem;
    padding: 10px 24px;
    background: #e74c3c;
    color: #fff;
    font-weight: 700;
    font-size: 0.95rem;
    border-radius: 24px;
    text-decoration: none;
    letter-spacing: 0.3px;
    box-shadow: 0 2px 8px rgba(231,76,60,0.35);
    transition: background var(--transition), transform var(--transition), box-shadow var(--transition);
}
.donate-btn:hover { background: #c0392b; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(231,76,60,0.45); color: #fff; }
.footer-disclaimer {
    border-top: 1px solid rgba(255,255,255,0.08);
    padding: 0.8rem 0;
    text-align: center;
    font-size: 0.8rem;
    color: var(--color-footer-text);
    opacity: 0.85;
    line-height: 1.5;
    max-width: 700px;
    margin: 0 auto;
}
.footer-bottom {
    border-top: 1px solid rgba(255,255,255,0.08);
    padding-top: 1rem;
    text-align: center;
}
@media (max-width: 768px) {
    .footer-grid { grid-template-columns: 1fr; gap: 1.25rem; }
}
.footer .disclaimer { font-size: 0.8rem; margin-top: 0.5rem; font-style: italic; max-width: 800px; margin-left: auto; margin-right: auto; color: var(--color-footer-muted); }
.footer-legal { font-size: 0.79rem; margin-top: 0.4rem; color: var(--color-footer-muted); }
.footer-legal a { color: var(--color-footer-link); text-decoration: underline; }
.footer-legal a:hover { color: var(--color-secondary); }
.foia-draft-warning { display: block; margin-top: 0.5rem; font-size: 0.84rem; color: #b71c1c; line-height: 1.45; font-style: italic; }
.anomaly-contest-row { margin-top: 0.6rem; padding-top: 0.5rem; border-top: 1px solid var(--color-border); }
.anomaly-contest-link { font-size: 0.86rem; color: var(--color-text-secondary); text-decoration: none; padding: 0.2rem 0.4rem; border-radius: var(--radius-sm); transition: background 0.15s, color 0.15s; }
.anomaly-contest-link:hover { background: #fff3e0; color: #e65100; text-decoration: none; }

/* ── Map page ── */
.map-page { margin: 0 -1.5rem; } /* full bleed inside container */

/* Leaflet tooltip style override */
.leaflet-tooltip {
    font-family: inherit;
    font-size: 0.9rem;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    box-shadow: var(--shadow);
    padding: 6px 10px;
}

/* Risk label colors for map panel cards */
.map-muni-risk.risk-label-ok       { background: #e8f8f0; color: #27ae60; border-color: #a9dfbf; }
.map-muni-risk.risk-label-info     { background: #ebf5fb; color: #3498db; border-color: #a9cce3; }
.map-muni-risk.risk-label-warn     { background: #fef9e7; color: #f39c12; border-color: #f9e4b7; }
.map-muni-risk.risk-label-high     { background: #fef0e7; color: #e67e22; border-color: #f0c59c; }
.map-muni-risk.risk-label-critical { background: #fdecea; color: #e74c3c; border-color: #f1948a; }

/* ── Anomaly legal reference box ── */
.anomaly-legal-ref {
    margin-top: 0.75rem;
    border-radius: var(--radius-sm);
    overflow: hidden;
    border: 1px solid var(--color-highlight-border);
    font-size: 1.01rem;
    line-height: 1.6;
}
.legal-ref-why {
    background: var(--color-highlight-bg);
    padding: 0.65rem 0.9rem;
    color: var(--color-text);
    border-bottom: 1px solid var(--color-highlight-border);
}
.legal-ref-why strong {
    color: var(--color-primary);
    display: block;
    margin-bottom: 0.25rem;
    font-size: 0.88rem;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.legal-ref-norm {
    background: var(--color-section-bg);
    padding: 0.5rem 0.9rem;
    color: var(--color-text-secondary);
    font-size: 0.97rem;
}
.legal-ref-norm a {
    color: var(--color-accent);
    font-weight: 600;
    text-decoration: none;
}
.legal-ref-norm a:hover { text-decoration: underline; }

/* ── Trend chart ── */
.trend-chart {
    background: var(--color-surface);
    padding: 1.2rem 1.5rem 1rem;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 2rem;
}
.trend-subtitle {
    font-size: 0.86rem;
    color: var(--color-text-secondary);
    margin-bottom: 0.8rem;
}
.trend-bars {
    display: flex;
    align-items: flex-end;
    gap: 0.5rem;
    height: 110px;
}
.trend-bar-group {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    height: 100%;
    gap: 0.25rem;
    justify-content: flex-end;
    cursor: default;
}
.trend-bar {
    width: 100%;
    background: var(--color-accent);
    border-radius: 3px 3px 0 0;
    transition: opacity 0.15s;
    min-height: 3px;
}
.trend-bar-group:hover .trend-bar { opacity: 0.72; }
.trend-bar-count {
    font-size: 0.77rem;
    font-weight: 700;
    color: var(--color-primary);
    height: 1rem;
    text-align: center;
    line-height: 1;
}
.trend-bar-label {
    font-size: 0.75rem;
    color: var(--color-text-secondary);
    white-space: nowrap;
    text-align: center;
}

/* ── Municipalities overview table ── */
.table-wrap { overflow-x: auto; margin-bottom: 2rem; border-radius: var(--radius); box-shadow: var(--shadow); }
.muni-overview-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--color-surface);
    overflow: hidden;
}
.muni-overview-table th {
    background: var(--color-table-header);
    color: #fff;
    padding: 0.75rem 0.9rem;
    text-align: left;
    font-family: var(--font-heading);
    font-size: 0.86rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
    border-bottom: 2px solid var(--color-table-header-border);
}
.muni-overview-table th:hover { background: var(--color-primary-light); }
.muni-overview-table td {
    padding: 0.65rem 0.9rem;
    border-bottom: 1px solid var(--color-border);
    font-size: 0.97rem;
}
.muni-overview-table tr:last-child td { border-bottom: none; }
.muni-overview-table tr:nth-child(even) td { background: var(--color-table-stripe); }
.muni-overview-table tr:hover td { background: var(--color-table-hover); }
.muni-overview-table a { color: var(--color-accent); text-decoration: none; }
.muni-overview-table a:hover { text-decoration: underline; }
.muni-row-flagged td:first-child { border-left: 3px solid var(--color-danger); }
.col-num { text-align: right; }
.col-risk { text-align: center; }
.col-actions { white-space: nowrap; font-size: 0.9rem; }
.muted-zero { color: var(--color-text-secondary); font-size: 0.94rem; }

/* Date inputs in filters bar */
.filters-bar input[type="date"] {
    padding: 0.5rem 0.75rem;
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: 0.97rem;
    background: var(--color-bg);
    color: var(--color-text);
    transition: border-color var(--transition), box-shadow var(--transition);
}
.filters-bar input[type="date"]:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-focus-ring); }

/* ── How it works (homepage) ── */
.how-it-works {
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1.5rem 2rem 1.2rem;
    box-shadow: var(--shadow);
    margin-bottom: 2rem;
}
.how-it-works h2 {
    margin-top: 0;
    margin-bottom: 1.2rem;
    padding-left: 0.75rem;
    border-left: 4px solid var(--color-primary);
    font-family: var(--font-heading);
}
.hiw-steps {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    flex-wrap: nowrap;
}
.hiw-step {
    flex: 1;
    background: var(--color-section-bg);
    border-radius: var(--radius);
    padding: 1.1rem 1rem;
    position: relative;
    border-top: 3px solid var(--color-primary);
    min-width: 0;
}
.hiw-step-icon {
    font-size: 1.76rem;
    margin-bottom: 0.3rem;
    display: block;
}
.hiw-step-num {
    position: absolute;
    top: 0.7rem;
    right: 0.8rem;
    background: var(--color-primary);
    color: #fff;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    font-family: var(--font-heading);
    font-size: 0.83rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}
.hiw-step h3 { font-family: var(--font-heading); font-size: 1.04rem; font-weight: 700; margin-bottom: 0.4rem; color: var(--color-primary); }
.hiw-step p { font-size: 0.92rem; color: var(--color-text-secondary); line-height: 1.55; margin: 0; }
.hiw-arrow {
    font-size: 1.54rem;
    color: var(--color-secondary);
    padding-top: 1rem;
    flex-shrink: 0;
    align-self: center;
}
.hiw-footer {
    margin-top: 1rem;
    padding-top: 0.8rem;
    border-top: 1px solid var(--color-border);
    font-size: 0.97rem;
    display: flex;
    gap: 0.7rem;
    align-items: center;
}
.hiw-link { color: var(--color-accent); text-decoration: none; font-weight: 600; }
.hiw-link:hover { text-decoration: underline; }
.hiw-sep { color: var(--color-text-secondary); }

/* ── Last update line ── */
.last-update-line {
    text-align: right;
    font-size: 0.9rem;
    color: var(--color-text-secondary);
    margin-bottom: 1rem;
    margin-top: -0.8rem;
}

/* ── Empty state box ── */
.empty-state-box {
    text-align: center;
    padding: 3rem 1.5rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 2rem;
}
.empty-state-icon { font-size: 2.75rem; margin-bottom: 0.5rem; }
.empty-state-box h3 { font-size: 1.26rem; margin-bottom: 0.5rem; color: var(--color-primary); }
.empty-state-box p { color: var(--color-text-secondary); font-size: 1.02rem; margin-bottom: 0.6rem; max-width: 550px; margin-left: auto; margin-right: auto; }
.empty-state-hint { font-size: 0.94rem !important; font-style: italic; }
.empty-state-hint code { background: var(--color-section-bg); padding: 0.1rem 0.4rem; border-radius: 3px; font-size: 0.9rem; }
.empty-state-box .btn { margin-top: 0.5rem; }

/* ── Anomaly legal details (collapsible in list) ── */
.anomaly-legal-details {
    margin-top: 0.6rem;
}
.anomaly-legal-details > summary {
    font-size: 0.9rem;
    color: var(--color-accent);
    cursor: pointer;
    font-weight: 600;
    user-select: none;
    list-style: none;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.2rem 0;
}
.anomaly-legal-details > summary::-webkit-details-marker { display: none; }
.anomaly-legal-details > summary::after {
    content: '▶';
    font-size: 0.61rem;
    transition: transform 0.15s;
    margin-left: 0.2rem;
}
.anomaly-legal-details[open] > summary::after { transform: rotate(90deg); }
.anomaly-legal-details .anomaly-legal-ref { margin-top: 0.4rem; }

/* ── Risk score explanation ── */
.risk-score-explain {
    font-size: 0.88rem;
    color: var(--color-text-secondary);
    line-height: 1.5;
    margin-bottom: 0.8rem;
    padding: 0.5rem 0.7rem;
    background: rgba(0,0,0,0.04);
    border-radius: var(--radius-sm);
}
.risk-explain-link {
    color: var(--color-accent);
    text-decoration: none;
    font-weight: 600;
    white-space: nowrap;
}
.risk-explain-link:hover { text-decoration: underline; }

/* ── Footer links (legacy, now in grid columns) ── */
.footer-links {
    display: flex;
    justify-content: center;
    gap: 1.2rem;
    margin-bottom: 0.8rem;
    flex-wrap: wrap;
}
.footer-links a {
    color: var(--color-footer-link);
    text-decoration: none;
    font-size: 0.9rem;
    transition: color var(--transition);
}
.footer-links a:hover { color: var(--color-secondary); }

/* ── Metodologia page ── */
.metodo-page { max-width: 800px; margin: 0 auto; }
.metodo-section {
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1.75rem 2rem;
    margin-bottom: 1.2rem;
    box-shadow: var(--shadow);
    border-top: 4px solid var(--color-primary);
}
.metodo-section h2 { margin-top: 0; margin-bottom: 1rem; font-size: 1.32rem; color: var(--color-primary); font-family: var(--font-heading); }
.metodo-section p { line-height: 1.7; margin-bottom: 0.8rem; font-size: 1.02rem; }
.metodo-section ul { margin: 0.5rem 0 0.8rem 1.3rem; }
.metodo-section li { line-height: 1.65; margin-bottom: 0.4rem; font-size: 1.01rem; }
.metodo-note {
    background: var(--color-notice-bg);
    border-left: 4px solid var(--color-warning);
    border-radius: var(--radius-sm);
    padding: 0.7rem 1rem;
    font-size: 0.97rem;
    margin-top: 1rem;
    color: var(--color-notice-text);
    line-height: 1.6;
}
.metodo-note a { color: var(--color-accent); }
.metodo-formula {
    background: var(--color-section-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.6rem 1rem;
    font-family: monospace;
    font-size: 0.99rem;
    margin: 0.8rem 0;
    text-align: center;
}
.metodo-dim-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0.8rem;
    margin: 0.8rem 0;
}
.metodo-dim-card {
    border-radius: var(--radius);
    padding: 1.25rem;
    border-left: 4px solid var(--color-border);
    box-shadow: var(--shadow);
    transition: box-shadow var(--transition), transform var(--transition);
}
.metodo-dim-card:hover { box-shadow: var(--shadow-md); transform: translateY(-1px); }
.metodo-dim-doc { background: #e3f2fd; border-left-color: #3498db; }
.metodo-dim-proc { background: #fbe9e7; border-left-color: #e67e22; }
.metodo-dim-stat { background: #f3e5f5; border-left-color: #9b59b6; }
.metodo-dim-card h3 { font-size: 0.99rem; margin-bottom: 0.5rem; font-family: var(--font-heading); font-weight: 600; }
.metodo-dim-card p { font-size: 0.94rem; margin-bottom: 0.4rem; }
.metodo-dim-card ul { margin-left: 1rem; }
.metodo-dim-card li { font-size: 0.92rem; margin-bottom: 0.3rem; line-height: 1.5; }
.dim-weight { font-weight: 400; color: var(--color-text-secondary); font-size: 0.9rem; }
.metodo-severity-table, .metodo-risk-table {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin: 0.8rem 0;
}
.sev-row, .risk-row {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    font-size: 0.97rem;
}
.sev-row .badge { min-width: 90px; text-align: center; }
.risk-row .badge { min-width: 80px; text-align: center; }
.metodo-refs { }
.metodo-refs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 0.6rem;
}
.metodo-ref-item {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    padding: 0.75rem 1rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-primary);
    font-size: 0.97rem;
    box-shadow: var(--shadow);
    transition: border-color var(--transition), box-shadow var(--transition);
}
.metodo-ref-item:hover { border-left-color: var(--color-secondary); box-shadow: var(--shadow-md); }
.metodo-ref-item a { color: var(--color-accent); font-weight: 600; text-decoration: none; }
.metodo-ref-item a:hover { text-decoration: underline; }
.metodo-ref-item span { color: var(--color-text-secondary); font-size: 0.9rem; }

/* ── Glossary page ── */
.glossario-page { max-width: 800px; margin: 0 auto; }
.glossario-intro { font-size: 1.04rem; color: var(--color-text-secondary); margin-bottom: 1.2rem; line-height: 1.6; }
.glossario-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 1.5rem;
    padding: 0.8rem 1rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    border-top: 3px solid var(--color-primary);
}
.glossario-nav a {
    color: var(--color-accent);
    text-decoration: none;
    font-size: 0.88rem;
    font-weight: 600;
    font-family: var(--font-heading);
    padding: 0.25rem 0.6rem;
    border-radius: 3px;
    background: var(--color-tag-bg);
    border: 1px solid transparent;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.glossario-nav a:hover { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.glossario-list { list-style: none; }
.glossario-list dt {
    font-size: 1.21rem;
    font-weight: 700;
    font-family: var(--font-heading);
    color: var(--color-primary);
    margin-top: 1.5rem;
    margin-bottom: 0.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border);
    padding-left: 0.75rem;
    border-left: 4px solid var(--color-primary);
}
.glossario-list dt:first-child { border-top: none; padding-top: 0; margin-top: 0; }
.glossario-list dd {
    margin-left: 0;
    padding: 0 0 0.8rem 1rem;
}
.glossario-list dd p { font-size: 1.01rem; line-height: 1.7; margin-bottom: 0.5rem; }
.glossario-list dd ul { margin: 0.4rem 0 0.5rem 1.3rem; }
.glossario-list dd li { font-size: 0.99rem; line-height: 1.65; margin-bottom: 0.3rem; }
.glossario-list dd code { background: var(--color-section-bg); padding: 0.15rem 0.45rem; border-radius: 3px; font-size: 0.94rem; border: 1px solid var(--color-border); }
.gloss-ref {
    font-size: 0.9rem;
    color: var(--color-text-secondary);
    margin-top: 0.6rem;
    padding: 0.4rem 0.75rem;
    background: var(--color-surface);
    border-left: 3px solid var(--color-primary);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    box-shadow: var(--shadow);
}
.gloss-ref a { color: var(--color-accent); font-weight: 500; }

/* ── Breadcrumb ── */
.breadcrumb-nav {
    font-size: 0.94rem;
    color: var(--color-text-secondary);
    margin-bottom: 1.25rem;
    padding: 0.55rem 1rem;
    background: var(--color-surface);
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
.breadcrumb-nav a { color: var(--color-accent); text-decoration: none; font-weight: 500; }
.breadcrumb-nav a:hover { text-decoration: underline; color: var(--color-primary); }
.breadcrumb-nav span:last-child { color: var(--color-text); font-weight: 600; }
.bc-sep { color: var(--color-text-secondary); font-size: 0.82rem; font-weight: 400; }

/* ── Homepage: top municipalities ranking ── */
.section-legal-note {
    font-size: 0.88rem;
    color: var(--color-muted);
    margin: -0.5rem 0 1rem;
}
.section-legal-note a { color: var(--color-accent); }
.top-munis-list { display: flex; flex-direction: column; gap: 0.6rem; }
.top-muni-row {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    padding: 0.65rem 0.9rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: 6px;
}
.top-muni-rank {
    font-size: 1.21rem;
    font-weight: 800;
    color: var(--color-muted);
    min-width: 2rem;
    text-align: center;
}
.top-muni-info { flex: 1; min-width: 0; }
.top-muni-name {
    font-weight: 700;
    color: var(--color-accent);
    text-decoration: none;
    font-size: 1.07rem;
}
.top-muni-name:hover { text-decoration: underline; }
.top-muni-location {
    display: block;
    font-size: 0.86rem;
    color: var(--color-muted);
}
.top-muni-stats { display: flex; gap: 0.4rem; align-items: center; }
.top-muni-link {
    font-size: 0.9rem;
    color: var(--color-accent);
    text-decoration: none;
    white-space: nowrap;
}
.top-muni-link:hover { text-decoration: underline; }

/* ── Citizen actions panel (act detail) ── */
.citizen-actions-panel {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 2rem;
    margin: 1.5rem 0;
}
.citizen-actions-panel h2 {
    margin-top: 0;
    font-size: 1.26rem;
    color: var(--color-primary);
    margin-bottom: 0.3rem;
}
.citizen-actions-intro {
    font-size: 0.97rem;
    color: var(--color-text-secondary);
    margin-bottom: 1.5rem;
    line-height: 1.5;
}
/* Featured action (FOIA) */
.ca-featured {
    position: relative;
    background: linear-gradient(135deg, var(--color-highlight-bg) 0%, var(--color-tag-bg) 100%);
    border: 1px solid var(--color-highlight-border);
    border-left: 4px solid var(--color-accent);
    border-radius: var(--radius);
    padding: 1.75rem;
    margin-bottom: 1.25rem;
}
[data-theme="dark"] .ca-featured {
    background: linear-gradient(135deg, #1a2740 0%, #1e2d45 100%);
    border-color: #2d4a6a;
}
.ca-featured-badge {
    position: absolute;
    top: -0.6rem;
    left: 1.5rem;
    background: var(--color-accent);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 0.2rem 0.7rem;
    border-radius: 10px;
}
.ca-featured-content {
    display: flex;
    gap: 2rem;
    align-items: center;
}
.ca-featured-left { flex: 1; }
.ca-featured-left h3 {
    font-family: var(--font-heading);
    font-size: 1.12rem;
    font-weight: 700;
    color: var(--color-primary);
    margin: 0 0 0.5rem;
}
.ca-featured-left p {
    font-size: 0.97rem;
    color: var(--color-text);
    line-height: 1.6;
    margin: 0;
}
.ca-featured-actions {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    align-items: flex-start;
}
.ca-featured-actions .btn-primary {
    padding: 0.6rem 1.4rem;
    font-size: 0.97rem;
}
/* Secondary actions grid */
.ca-secondary-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    margin-bottom: 1rem;
}
.ca-secondary-card {
    padding: 1.25rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    transition: box-shadow var(--transition), transform var(--transition);
}
.ca-secondary-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}
.ca-secondary-card h4 {
    font-family: var(--font-heading);
    font-size: 0.97rem;
    font-weight: 700;
    margin: 0 0 0.4rem;
    color: var(--color-text);
}
.ca-secondary-card p {
    font-size: 0.90rem;
    color: var(--color-text-secondary);
    line-height: 1.5;
    margin: 0 0 0.6rem;
}
.ca-secondary-card .btn { margin-right: 0.3rem; }
.ca-legal-note {
    font-size: 0.82rem;
    color: var(--color-text-secondary);
    font-style: italic;
    text-align: center;
    margin: 0;
}
.ca-legal-note a { color: var(--color-accent); }
@media (max-width: 768px) {
    .ca-featured-content { flex-direction: column; gap: 1rem; align-items: flex-start; }
    .ca-secondary-grid { grid-template-columns: 1fr; }
}

/* ── Guida cittadino page ── */
.page-subtitle {
    font-size: 1.1rem;
    color: var(--color-muted);
    margin-top: 0.4rem;
    max-width: 680px;
}
.guida-disclaimer {
    background: var(--color-notice-bg);
    border: 1px solid var(--color-notice-border);
    border-left: 4px solid var(--color-warning);
    border-radius: var(--radius);
    padding: 0.85rem 1.25rem;
    font-size: 0.97rem;
    margin-bottom: 1.5rem;
    color: var(--color-notice-text);
}
.guida-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 2rem;
}
.guida-nav a {
    background: var(--color-surface);
    border: 1.5px solid var(--color-border);
    border-radius: 20px;
    padding: 0.4rem 1rem;
    font-size: 0.91rem;
    text-decoration: none;
    color: var(--color-accent);
    font-weight: 600;
    font-family: var(--font-heading);
    transition: background var(--transition), color var(--transition), border-color var(--transition);
}
.guida-nav a:hover { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.guida-fase {
    display: flex;
    gap: 1.5rem;
    margin-bottom: 2.5rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--color-border);
}
.guida-fase:last-child { border-bottom: none; }
.guida-fase-num {
    font-size: 2.2rem;
    font-weight: 900;
    color: #fff;
    background: var(--color-primary);
    min-width: 2.8rem;
    height: 2.8rem;
    text-align: center;
    line-height: 2.8rem;
    flex-shrink: 0;
    border-radius: 50%;
    font-family: var(--font-heading);
}
.guida-fase-body { flex: 1; min-width: 0; }
.guida-fase-body h2 { margin-top: 0; font-size: 1.38rem; color: var(--color-primary); }
.guida-fase-body h3 { font-size: 1.1rem; margin-top: 1.25rem; color: var(--color-primary); }
.guida-tip {
    background: #e8f5e9;
    border-left: 3px solid var(--color-success);
    border-radius: 4px;
    padding: 0.65rem 1rem;
    font-size: 0.94rem;
    margin-top: 1rem;
    color: #1a3d20;
}
.guida-tip--warning {
    background: var(--color-notice-bg);
    border-left-color: var(--color-warning);
    color: var(--color-notice-text);
}
.guida-timeline { display: flex; flex-direction: column; gap: 0.5rem; margin: 1rem 0; }
.guida-timeline-item {
    display: flex;
    gap: 1rem;
    align-items: baseline;
    padding: 0.5rem 0.75rem;
    background: var(--color-bg);
    border-radius: 4px;
    font-size: 0.96rem;
}
.guida-timeline-item.gtl-warn { background: var(--color-notice-bg); }
.gtl-day { font-weight: 700; min-width: 130px; color: var(--color-accent); }
.guida-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1rem;
    margin-top: 0.75rem;
}
.guida-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-top: 3px solid var(--color-primary);
    border-radius: var(--radius);
    padding: 1.25rem;
    box-shadow: var(--shadow);
    transition: box-shadow var(--transition), transform var(--transition);
}
.guida-card:hover { box-shadow: var(--shadow-md); transform: translateY(-1px); }
.guida-card h3 { font-size: 1.02rem; margin-top: 0; margin-bottom: 0.4rem; }
.guida-card p { font-size: 0.97rem; color: var(--color-muted); margin: 0; line-height: 1.55; }
.guida-table { width: 100%; border-collapse: collapse; font-size: 0.96rem; margin-top: 0.75rem; }
.guida-table th { background: var(--color-table-header); color: #fff; padding: 0.6rem 0.75rem; text-align: left; border-bottom: 2px solid var(--color-table-header-border); font-family: var(--font-heading); font-size: 0.88rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; }
.guida-table tr:nth-child(even) td { background: var(--color-table-stripe); }
.guida-table tr:hover td { background: var(--color-table-hover); }
.guida-table td { padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--color-border); vertical-align: top; }
.guida-risorse { display: flex; flex-direction: column; gap: 0.6rem; margin-top: 0.75rem; }
.guida-risorsa {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.85rem 1rem;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-primary);
    border-radius: var(--radius);
    text-decoration: none;
    color: var(--color-text);
    font-size: 0.97rem;
    box-shadow: var(--shadow);
    transition: border-color var(--transition), box-shadow var(--transition), background var(--transition);
}
.guida-risorsa:hover { border-left-color: var(--color-secondary); box-shadow: var(--shadow-md); background: var(--color-highlight-bg); }
.guida-risorsa strong { color: var(--color-accent); min-width: 220px; }
.guida-risorsa span { color: var(--color-muted); }
@media (max-width: 480px) {
    .ca-secondary-grid { grid-template-columns: 1fr; }
    .guida-fase { flex-direction: column; gap: 0.5rem; }
    .guida-fase-num { font-size: 1.54rem; min-width: 2.2rem; height: 2.2rem; line-height: 2.2rem; }
    .guida-cards { grid-template-columns: 1fr; }
    .guida-risorsa { flex-direction: column; gap: 0.2rem; }
    .guida-risorsa strong { min-width: unset; }
}

/* ── Municipality detail page ── */
.muni-detail-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 2rem;
    flex-wrap: wrap;
}
.muni-detail-header h1 { font-size: 2.09rem; margin-bottom: 0.25rem; }
.muni-detail-location { color: var(--color-text-secondary); font-size: 1.1rem; }
.muni-detail-risk-badge { display: flex; align-items: flex-start; padding-top: 0.5rem; }

.muni-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
    margin-bottom: 2rem;
}
.muni-stat-card {
    background: var(--color-surface);
    border-radius: var(--radius);
    border: 1px solid var(--color-border);
    border-top: 4px solid var(--color-primary);
    padding: 1.25rem 1rem;
    text-align: center;
    box-shadow: var(--shadow);
    transition: box-shadow var(--transition), transform var(--transition);
}
.muni-stat-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.muni-stat-card--alert {
    border-top-color: var(--color-danger);
    border-color: var(--color-warning);
    background: var(--color-notice-bg);
}
.muni-stat-value {
    font-size: 2.2rem;
    font-weight: 700;
    color: var(--color-primary);
    line-height: 1;
    margin-bottom: 0.4rem;
}
.muni-stat-label {
    font-size: 0.88rem;
    color: var(--color-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.muni-detail-section {
    background: var(--color-surface);
    border-radius: var(--radius);
    border: 1px solid var(--color-border);
    border-top: 4px solid var(--color-primary);
    padding: 1.75rem;
    margin-bottom: 1.5rem;
    box-shadow: var(--shadow);
}
.muni-detail-section h2 {
    font-size: 1.21rem;
    margin-bottom: 1rem;
    color: var(--color-primary);
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--color-border);
}

/* Risk distribution bar */
.risk-dist-bar {
    display: flex;
    height: 20px;
    border-radius: var(--radius-sm);
    overflow: hidden;
    margin-bottom: 0.75rem;
    background: var(--color-border);
}
.risk-dist-segment { height: 100%; min-width: 2px; cursor: pointer; transition: opacity 0.15s; text-decoration: none; display: block; }
.risk-dist-segment:hover { opacity: 0.75; }
.risk-dist-critical { background: #e74c3c; }
.risk-dist-high     { background: #e67e22; }
.risk-dist-warn     { background: #f39c12; }
.risk-dist-info     { background: #3498db; }
.risk-dist-ok       { background: #27ae60; }
.risk-dist-legend { display: flex; flex-wrap: wrap; gap: 0.75rem; font-size: 0.94rem; }
.risk-dist-item { display: flex; align-items: center; gap: 0.4rem; }
.risk-dist-item-link { text-decoration: none; color: inherit; padding: 0.15rem 0.4rem; border-radius: var(--radius-sm); transition: background 0.15s; }
.risk-dist-item-link:hover { background: var(--color-border); }

/* Act type breakdown */
.act-type-breakdown { display: flex; flex-direction: column; gap: 0.6rem; }
.act-type-row { display: flex; align-items: center; gap: 0.75rem; }
.act-type-label { min-width: 180px; font-size: 0.97rem; color: var(--color-text-secondary); }
.act-type-bar-wrap { flex: 1; background: var(--color-bg); border-radius: 4px; height: 10px; overflow: hidden; }
.act-type-bar { height: 100%; background: var(--color-accent); border-radius: 4px; transition: width 0.3s; }
.act-type-count { font-size: 0.97rem; font-weight: 600; min-width: 30px; text-align: right; }

/* Recent acts cards */
.muni-recent-acts { display: flex; flex-direction: column; gap: 0.6rem; margin-bottom: 1.25rem; }
.muni-act-card {
    display: block;
    padding: 0.85rem 1rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s, background 0.15s;
}
.muni-act-card:hover { border-color: var(--color-accent); background: var(--color-highlight-bg); }
.muni-act-card--anomaly { border-left: 3px solid var(--color-warning); }
.muni-act-meta { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.3rem; }
.muni-act-num, .muni-act-date { font-size: 0.9rem; color: var(--color-text-secondary); }
.muni-act-subject { font-size: 1.02rem; font-weight: 500; }
.muni-act-dept { font-size: 0.88rem; color: var(--color-text-secondary); margin-top: 0.2rem; }
.muni-acts-cta { display: flex; gap: 0.75rem; flex-wrap: wrap; }

/* External link section */
.muni-external-section { border-color: #c8e6c9; }
.muni-ext-link {
    font-size: 1.1rem;
    color: var(--color-accent);
    font-weight: 500;
}
.muni-ext-link:hover { text-decoration: underline; }
.muni-ext-note { font-size: 0.9rem; color: var(--color-text-secondary); margin-top: 0.5rem; }

/* Municipality list: name link */
.muni-name-link { color: var(--color-primary); text-decoration: none; }
.muni-name-link:hover { color: var(--color-accent); text-decoration: underline; }

/* ── Confronto comuni ── */
.page-subtitle { color: var(--color-text-secondary); margin: -0.5rem 0 1.5rem; font-size: 1.05rem; }
.confronto-selector { margin-bottom: 2rem; }
.confronto-checkboxes {
    display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem;
}
.confronto-check-label {
    display: inline-flex; align-items: center; gap: 0.3rem;
    padding: 0.4rem 0.8rem; border-radius: 6px; cursor: pointer;
    border: 1px solid var(--color-border); font-size: 0.92rem;
    transition: background 0.15s, border-color 0.15s;
}
.confronto-check-label:hover { border-color: var(--color-primary); }
.confronto-check-label.selected { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.confronto-check-label.selected .confronto-check-prov { color: rgba(255,255,255,0.75); }
.confronto-check-label input[type="checkbox"] { display: none; }
.confronto-check-prov { font-size: 0.82rem; color: var(--color-text-secondary); }
.confronto-section { margin-top: 2rem; }
.confronto-section h2 { margin-bottom: 1rem; }
.confronto-cards {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
}
.confronto-card {
    background: var(--color-bg-card); border-radius: 8px;
    padding: 1.2rem; box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.confronto-card h3 { margin: 0 0 0.2rem; font-size: 1.1rem; }
.confronto-card-location { font-size: 0.85rem; color: var(--color-text-secondary); margin: 0 0 0.8rem; }
.confronto-card-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
.confronto-stat { text-align: center; }
.confronto-stat-val { display: block; font-size: 1.4rem; font-weight: 700; color: var(--color-text-primary); }
.confronto-stat-lbl { display: block; font-size: 0.78rem; color: var(--color-text-secondary); }
.confronto-card-risk { margin-top: 0.8rem; text-align: center; }
.confronto-charts { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.confronto-chart-wrap {
    background: var(--color-bg-card); border-radius: 8px;
    padding: 1.2rem; box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.confronto-chart-wrap h3 { margin: 0 0 0.8rem; font-size: 0.95rem; color: var(--color-text-secondary); }
.confronto-table { width: 100%; border-collapse: collapse; }
.confronto-table th, .confronto-table td {
    padding: 0.6rem 0.8rem; text-align: center;
    border-bottom: 1px solid var(--color-border);
}
.confronto-table th { font-weight: 600; background: var(--color-bg-card); }
.confronto-table td:first-child, .confronto-table th:first-child { text-align: left; }
@media (max-width: 768px) {
    .confronto-charts { grid-template-columns: 1fr; }
    .confronto-cards { grid-template-columns: 1fr; }
}

/* ── Responsive ── */
@media (max-width: 768px) {
    /* Navbar: hamburger menu */
    .navbar .container { flex-wrap: wrap; height: auto; padding-top: 0.5rem; padding-bottom: 0.5rem; }
    .nav-toggle {
        display: flex; flex-direction: column; justify-content: center; gap: 4px;
        background: none; border: none; cursor: pointer; padding: 6px; z-index: 101;
    }
    .nav-toggle span {
        display: block; width: 22px; height: 2px; background: #fff; border-radius: 1px;
        transition: transform 0.25s, opacity 0.25s;
    }
    .nav-toggle--active span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
    .nav-toggle--active span:nth-child(2) { opacity: 0; }
    .nav-toggle--active span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
    .nav-links {
        display: none; flex-direction: column; width: 100%;
        padding: 0.5rem 0; gap: 0;
    }
    .nav-links.nav-open { display: flex; }
    .nav-links a { padding: 0.6rem 0.75rem; font-size: 0.95rem; border-radius: 0; }
    .nav-links a:hover { background: rgba(255,255,255,0.08); }
    .theme-toggle { align-self: flex-start; margin: 0.3rem 0.75rem; }

    /* Tables: scrollabili orizzontalmente */
    .table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .data-table { min-width: 540px; }
    .muni-overview-table { min-width: 580px; }

    /* Top comuni ranking */
    .top-muni-row { flex-wrap: wrap; gap: 0.5rem; }
    .top-muni-stats { flex-wrap: wrap; }

    /* Trend chart: barre più leggibili */
    .trend-bars { gap: 0.3rem; }
    .trend-bar-label { font-size: 0.72rem; }

    /* Generici */
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
    .filters-bar { flex-direction: column; }
    .filters-bar input[type="text"] { min-width: unset; }
    .ai-classify-grid { grid-template-columns: 1fr; }
    .act-detail-header { padding: 1rem; }
    .section-content { padding: 1rem; }
    .dim-label { min-width: 140px; font-size: 0.86rem; }
    .risk-bar-item .badge { min-width: 90px; }
    .muni-numbers { gap: 1rem; }
    .act-row { flex-direction: column; gap: 0.5rem; }
    .act-row-right { align-self: flex-start; }
    .hiw-steps { flex-direction: column; }
    .hiw-arrow { display: none; }
    .hiw-step { border-top: none; border-left: 3px solid var(--color-accent); }
    .metodo-section { padding: 1rem; }
    .metodo-dim-grid { grid-template-columns: 1fr; }
    .metodo-refs-grid { grid-template-columns: 1fr; }
    .how-it-works { padding: 1rem; }
    .glossario-nav { display: none; }
    .privacy-page section { padding: 1rem 1.25rem; }
    .privacy-page h2 { font-size: 1.2rem; }
    .legal-table { font-size: 0.9rem; }
    .legal-table th, .legal-table td { padding: 0.5rem 0.6rem; }
    .error-page { margin: 2rem auto; padding: 2rem 1.25rem; }
    .error-code { font-size: 3.5rem; }
    .error-page h1 { font-size: 1.3rem; }
    .error-search { max-width: 100%; }
    .error-links { gap: 0.4rem; }
    .error-links a { font-size: 0.82rem; padding: 0.4rem 0.7rem; }
    .muni-stats-grid { grid-template-columns: repeat(2, 1fr); }
    .muni-detail-hero { flex-direction: column; }
    .act-type-label { min-width: 120px; }
    .muni-acts-cta { flex-direction: column; }
    .hero { padding: 2.5rem 1rem 1.75rem; margin: -2rem -1.5rem 1.5rem; }
    .hero h1 { font-size: 1.98rem; }
    .hero-icon { font-size: 2.42rem; }
    .btn-hero-primary, .btn-hero-secondary { width: 100%; text-align: center; padding: 0.75rem 1.5rem; }
    .foia-tracker-section > div { grid-template-columns: 1fr !important; }
    /* Guida timeline */
    .guida-timeline-item { flex-direction: column; gap: 0.2rem; }
    .gtl-day { min-width: unset; }
    /* Guida table */
    .guida-table { display: block; overflow-x: auto; }
}

/* ── Small phones (≤ 480px) ── */
@media (max-width: 480px) {
    .container { padding: 0 0.75rem; }
    main { padding: 1rem 0; }
    .page-header h1 { font-size: 1.4rem; }
    .muni-stats-grid { grid-template-columns: 1fr; }
    .stats-grid { grid-template-columns: 1fr; }
    .muni-stat-value { font-size: 1.3rem; }
    .risk-dist-legend { flex-direction: column; gap: 0.3rem; }
    .muni-recent-acts { gap: 0.5rem; }
    .hero h1 { font-size: 1.5rem; }
    .hero-icon { font-size: 2rem; }
    .hero-sub { font-size: 0.88rem; }
    .act-detail-header h1 { font-size: 1.2rem; }
    .footer-grid { gap: 1rem; }
    .footer-col h4 { font-size: 0.95rem; }
}

/* ── FOIA Tracker Inline (act_detail) ───────────────────────────────────── */

.foia-tracker-inline {
    margin-top: 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: var(--color-highlight-bg);
}
.foia-tracker-inline > summary {
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    font-size: 0.97rem;
    font-weight: 600;
    color: var(--color-accent);
    list-style: none;
    user-select: none;
}
.foia-tracker-inline > summary::-webkit-details-marker { display: none; }
.foia-tracker-inline[open] > summary { border-bottom: 1px solid var(--color-border); }

.foia-tracker-form {
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}
.foia-form-inline-row {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}
.foia-form-inline-row label {
    display: flex;
    flex-direction: column;
    font-size: 0.91rem;
    color: var(--color-text-secondary);
    gap: 0.2rem;
}
.foia-form-inline-row input[type="date"],
.foia-form-inline-row input[type="text"] {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.35rem 0.6rem;
    font-size: 0.97rem;
    background: var(--color-input-bg);
    color: var(--color-text);
}

.foia-email-optional {
    font-size: 0.94rem;
    border: none;
}
.foia-email-optional > summary {
    cursor: pointer;
    color: var(--color-text-secondary);
    list-style: none;
}
.foia-email-optional > summary::-webkit-details-marker { display: none; }
.foia-email-fields {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-top: 0.4rem;
    padding: 0.5rem;
    background: var(--color-input-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
}
.foia-email-fields label {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    font-size: 0.91rem;
    color: var(--color-text-secondary);
}
.foia-email-fields input[type="email"] {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.35rem 0.6rem;
    font-size: 0.97rem;
    max-width: 280px;
}
.foia-consent-row {
    flex-direction: row !important;
    align-items: flex-start;
    gap: 0.4rem !important;
    font-size: 0.9rem;
    line-height: 1.4;
}
.foia-consent-row input[type="checkbox"] { margin-top: 0.2rem; flex-shrink: 0; }

/* ── FOIA Tracker Page ───────────────────────────────────────────────────── */

.foia-tracker-page {
    max-width: 780px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.foia-bookmark-notice {
    background: var(--color-highlight-bg);
    border: 1px solid var(--color-highlight-border);
    border-left: 4px solid var(--color-primary);
    border-radius: var(--radius);
    padding: 0.75rem 1.25rem;
    font-size: 0.99rem;
    color: var(--color-text-secondary);
}

.foia-act-ref {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-top: 4px solid var(--color-primary);
    border-radius: var(--radius);
    padding: 1.25rem 1.5rem;
    box-shadow: var(--shadow);
}
.foia-act-ref h2 { font-size: 1.1rem; margin-bottom: 0.5rem; font-family: var(--font-heading); color: var(--color-primary); }
.foia-act-info {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem;
}
.foia-act-link { font-weight: 600; color: var(--color-accent); }
.foia-act-muni { font-size: 0.94rem; color: var(--color-text-secondary); }

/* Status section */
.foia-status-section {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    box-shadow: var(--shadow);
}
.foia-status-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.foia-status-label { font-size: 0.97rem; color: var(--color-text-secondary); margin-right: 0.4rem; }

/* Status badges */
.foia-status-badge {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    border-radius: 20px;
    font-size: 0.91rem;
    font-weight: 600;
}
.foia-status-sent     { background: #e3f2fd; color: #1565c0; }
.foia-status-extended { background: #fff8e1; color: #f57f17; }
.foia-status-responded{ background: #e8f5e9; color: #2e7d32; }
.foia-status-overdue  { background: #fce4ec; color: #c62828; }
.foia-status-riesame  { background: #fff3e0; color: #e65100; }
.foia-status-escalated{ background: #f3e5f5; color: #6a1b9a; }

.foia-days-remaining {
    font-size: 0.99rem;
    color: var(--color-success);
    font-weight: 500;
}
.foia-days-urgent { color: var(--color-warning); }
.foia-overdue-alert {
    font-size: 0.99rem;
    color: var(--color-danger);
    font-weight: 500;
}

/* Progress bar */
.foia-progress-bar {
    height: 10px;
    background: var(--color-border);
    border-radius: 5px;
    overflow: hidden;
}
.foia-progress-fill {
    height: 100%;
    background: var(--color-success);
    border-radius: 5px;
    transition: width 0.3s ease;
}
.foia-progress-warning { background: var(--color-warning); }
.foia-progress-overdue { background: var(--color-danger); }
.foia-progress-labels {
    display: flex;
    justify-content: space-between;
    font-size: 0.83rem;
    color: var(--color-text-secondary);
    margin-top: 0.25rem;
}

/* Timeline */
.foia-timeline-section {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-top: 4px solid var(--color-primary);
    border-radius: var(--radius);
    padding: 1.25rem;
    box-shadow: var(--shadow);
}
.foia-timeline-section h2 { font-size: 1.1rem; margin-bottom: 1rem; font-family: var(--font-heading); color: var(--color-primary); }
.foia-timeline-list {
    display: flex;
    flex-direction: column;
    gap: 0;
    border-left: 2px solid var(--color-border);
    padding-left: 1rem;
    margin-left: 0.5rem;
}
.foia-timeline-item {
    position: relative;
    padding: 0.6rem 0;
}
.foia-timeline-item::before {
    content: "";
    position: absolute;
    left: -1.35rem;
    top: 0.9rem;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--color-border);
    border: 2px solid var(--color-surface);
}
.foia-tl-done::before  { background: var(--color-success); }
.foia-tl-today::before { background: var(--color-warning); }
.foia-tl-overdue::before { background: var(--color-danger); }
.foia-tl-future::before { background: var(--color-border); }

.foia-tl-date {
    font-size: 0.9rem;
    color: var(--color-text-secondary);
    display: block;
}
.foia-tl-event {
    font-size: 1.02rem;
    font-weight: 500;
    display: block;
}
.foia-tl-note {
    font-size: 0.91rem;
    color: var(--color-text-secondary);
    display: block;
    margin-top: 0.1rem;
}

/* Update form */
.foia-update-section {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.25rem;
    box-shadow: var(--shadow);
}
.foia-update-section h2 { font-size: 1.1rem; margin-bottom: 1rem; font-family: var(--font-heading); color: var(--color-primary); }
.foia-update-form {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.foia-form-row {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.foia-form-row label {
    font-size: 0.94rem;
    color: var(--color-text-secondary);
    font-weight: 500;
}
.foia-select,
.foia-update-form input[type="date"],
.foia-update-form input[type="text"] {
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.5rem 0.75rem;
    font-size: 1.02rem;
    background: var(--color-bg);
    color: var(--color-text);
    max-width: 360px;
    transition: border-color var(--transition), box-shadow var(--transition);
}
.foia-select:focus,
.foia-update-form input[type="date"]:focus,
.foia-update-form input[type="text"]:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-focus-ring); }

.foia-next-steps {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.25rem;
    box-shadow: var(--shadow);
}
.foia-next-steps h2 { font-size: 1.1rem; margin-bottom: 0.75rem; font-family: var(--font-heading); color: var(--color-primary); }
.foia-actions-row {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 0.75rem;
}

.foia-email-notice {
    font-size: 0.94rem;
    color: var(--color-text-secondary);
    text-align: center;
    padding: 0.5rem;
}

/* ── Alert Subscribe ─────────────────────────────────────────────────────── */

.smtp-disabled-banner {
    background: var(--color-notice-bg);
    border: 1px solid var(--color-notice-border);
    border-radius: var(--radius);
    padding: 0.85rem 1.1rem;
    font-size: 0.99rem;
    color: var(--color-notice-text);
    margin-bottom: 1.5rem;
}

.alert-subscribe-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    align-items: start;
}
@media (max-width: 768px) {
    .alert-subscribe-container { grid-template-columns: 1fr; }
}

.alert-subscribe-form {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-top: 4px solid var(--color-primary);
    border-radius: var(--radius);
    padding: 1.75rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    box-shadow: var(--shadow);
}

.alert-form-group { display: flex; flex-direction: column; gap: 0.35rem; }
.alert-form-label { font-size: 0.99rem; font-weight: 600; }
.required { color: var(--color-danger); }
.alert-form-select,
.alert-form-input {
    border: 1.5px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.55rem 0.75rem;
    font-size: 1.02rem;
    background: var(--color-bg);
    color: var(--color-text);
    width: 100%;
    transition: border-color var(--transition), box-shadow var(--transition);
}
.alert-form-select:focus,
.alert-form-input:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px var(--color-focus-ring); }
.alert-form-hint { font-size: 0.88rem; color: var(--color-text-secondary); }

.alert-consent-box {
    background: var(--color-highlight-bg);
    border: 1px solid var(--color-highlight-border);
    border-left: 4px solid var(--color-primary);
    border-radius: var(--radius-sm);
    padding: 1rem 1.25rem;
}
.alert-consent-title { font-weight: 600; font-size: 0.97rem; margin-bottom: 0.5rem; }
.alert-consent-text { font-size: 0.91rem; color: var(--color-text-secondary); margin-bottom: 0.5rem; line-height: 1.5; }
.alert-consent-details {
    font-size: 0.9rem;
    color: var(--color-text-secondary);
    margin: 0 0 0.75rem 1.1rem;
    padding: 0;
    line-height: 1.6;
}
.alert-consent-details li { margin-bottom: 0.2rem; }
.alert-consent-check {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: 0.94rem;
    cursor: pointer;
    line-height: 1.4;
}
.alert-consent-check input { margin-top: 0.15rem; flex-shrink: 0; }

.alert-submit-btn { width: 100%; padding: 0.7rem 1rem; font-size: 1.1rem; }

.alert-subscribe-info {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.5rem;
    box-shadow: var(--shadow);
}
.alert-subscribe-info h3 { font-size: 1.1rem; margin-bottom: 0.75rem; font-family: var(--font-heading); color: var(--color-primary); }
.alert-how-list {
    padding-left: 1.4rem;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    font-size: 0.99rem;
}
.alert-how-list li { line-height: 1.5; }

.alert-success-box {
    background: var(--color-surface);
    border: 1px solid #a7f3d0;
    border-top: 4px solid var(--color-success);
    border-radius: var(--radius);
    padding: 2rem;
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
    max-width: 600px;
    margin: 0 auto;
    box-shadow: var(--shadow);
}
.alert-success-icon { font-size: 2.75rem; }
.alert-success-box h2 { margin-bottom: 0.5rem; }
.alert-success-note { font-size: 0.94rem; color: var(--color-text-secondary); margin-top: 0.5rem; }

.alert-error-box {
    background: #fce4ec;
    border: 1px solid #ef9a9a;
    border-radius: var(--radius-sm);
    padding: 0.75rem 1rem;
    font-size: 0.99rem;
    color: #c62828;
    margin-bottom: 1rem;
}

/* ── Alert Result (confirmed / unsubscribed) ─────────────────────────────── */

.alert-result-box {
    max-width: 540px;
    margin: 2rem auto;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-top: 4px solid var(--color-success);
    border-radius: var(--radius);
    padding: 2.5rem;
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    box-shadow: var(--shadow-md);
}
.alert-result-icon { font-size: 3.3rem; line-height: 1; }
.alert-result-box h2 { font-size: 1.54rem; font-family: var(--font-heading); color: var(--color-primary); }
.alert-result-details {
    background: var(--color-highlight-bg);
    border-radius: var(--radius-sm);
    padding: 0.75rem 1rem;
    font-size: 0.97rem;
    color: var(--color-text-secondary);
    text-align: left;
}
.alert-unsub-note { font-size: 0.91rem; color: var(--color-text-secondary); margin-top: 0.4rem; }
.alert-result-note { font-size: 0.94rem; color: var(--color-text-secondary); }
.alert-result-actions {
    display: flex;
    justify-content: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 0.5rem;
}

/* ── Admin area ────────────────────────────────────────────────────────────── */
.admin-body { background: var(--color-bg); }

.admin-nav {
    background: #1a2332;
    color: #fff;
    padding: 0;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 8px rgba(0,0,0,.25);
}
.admin-nav-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 52px;
}
.admin-nav-brand {
    font-weight: 700;
    font-size: 1.1rem;
    color: #fff;
}
.admin-badge {
    background: #e74c3c;
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: .05em;
    vertical-align: middle;
    margin-left: 6px;
}
.admin-nav-links {
    display: flex;
    gap: 1.25rem;
    align-items: center;
}
.admin-nav-links a {
    color: #adb5bd;
    text-decoration: none;
    font-size: 0.99rem;
    transition: color .15s;
}
.admin-nav-links a:hover,
.admin-nav-links a.active { color: #fff; }
.admin-nav-links .admin-logout { color: #e74c3c; }
.admin-nav-links .admin-logout:hover { color: #ff6b6b; }

.admin-main { padding-top: 1.5rem; padding-bottom: 3rem; }

.admin-header {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    margin-bottom: 1.25rem;
}
.admin-header h1 { margin: 0; font-size: 1.76rem; }

/* Stats grid */
.admin-stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 1rem;
    margin-bottom: 0;
}
.admin-stat-card {
    background: var(--color-surface);
    border-radius: 10px;
    padding: 1.25rem 1rem;
    text-align: center;
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
}
.admin-stat-card--alert { border-top: 3px solid #e74c3c; }
.admin-stat-value { font-size: 2.2rem; font-weight: 700; color: var(--color-primary); }
.admin-stat-label { font-size: 0.9rem; color: var(--color-text-secondary); margin-top: .25rem; }

/* Admin table */
.admin-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.99rem;
}
.admin-table th {
    background: var(--color-section-bg);
    text-align: left;
    padding: .6rem .75rem;
    font-size: 0.86rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--color-text-secondary);
    border-bottom: 2px solid var(--color-border);
}
.admin-table td {
    padding: .65rem .75rem;
    border-bottom: 1px solid var(--color-border);
    vertical-align: middle;
}
.admin-table tr:last-child td { border-bottom: none; }
.admin-table tr:hover td { background: var(--color-row-hover); }
.admin-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin-bottom: 1rem; }
@media (max-width: 768px) {
    .admin-table { min-width: 600px; font-size: 0.88rem; }
    .admin-table th, .admin-table td { padding: 0.5rem 0.5rem; white-space: nowrap; }
}

/* CLI card */
.admin-cli-card { background: #1a2332; color: #e2e8f0; }
.admin-cli-card h2 { color: #fff; margin-bottom: .75rem; }
.admin-cli-card p { color: #adb5bd; }
.admin-cli-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}
.admin-cli-item {
    background: #243044;
    border-radius: 8px;
    padding: .85rem 1rem;
}
.admin-cli-item code {
    display: block;
    font-family: 'Courier New', monospace;
    font-size: 0.94rem;
    color: #7dd3fc;
    margin-bottom: .35rem;
    word-break: break-all;
}
.admin-cli-item p { font-size: 0.88rem; color: #94a3b8; margin: 0; }

.admin-pre {
    background: #243044;
    border-radius: 8px;
    padding: 1rem 1.25rem;
    overflow-x: auto;
    margin-top: .5rem;
}
.admin-pre code {
    font-family: 'Courier New', monospace;
    font-size: 0.9rem;
    color: #7dd3fc;
    white-space: pre;
}

/* badge-muted */
.badge-muted { background: #6c757d; color: #fff; }

.text-danger { color: #e74c3c; }

/* ------------------------------------------------------------------ */
/* Admin — extended features                                            */
/* ------------------------------------------------------------------ */

/* Flash message */
.admin-flash {
    padding: .85rem 1.25rem;
    border-radius: var(--radius);
    margin-bottom: 1.25rem;
    font-weight: 500;
}
.admin-flash--success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
.admin-flash--error   { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }

/* Filter row */
.admin-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    align-items: flex-end;
}
.admin-filter-group {
    display: flex;
    flex-direction: column;
    gap: .3rem;
}
.admin-filter-group label { font-size: 0.88rem; font-weight: 600; color: var(--color-text-secondary); }
.admin-filter-group select,
.admin-filter-group input {
    padding: .4rem .65rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: 0.99rem;
    background: var(--color-input-bg);
}

/* Table row states */
.admin-row--danger td { background: var(--color-surface); }
.admin-row--warn   td { background: var(--color-notice-bg); }
.admin-row--muted  td { opacity: .55; }

/* Budget bar */
.admin-budget-bar {
    height: 6px;
    background: #e9ecef;
    border-radius: 3px;
    overflow: hidden;
    margin: .4rem 0 .3rem;
}
.admin-budget-fill {
    height: 100%;
    background: var(--color-success);
    border-radius: 3px;
    transition: width .4s;
}
.admin-budget-fill--warn   { background: var(--color-warning); }
.admin-budget-fill--danger { background: var(--color-danger); }

/* Stat card variants */
.admin-stat-card--warn { border-top: 3px solid var(--color-warning); }

/* Audit action badges */
.admin-badge--action-ingested  { background: #d4edda; color: #155724; }
.admin-badge--action-analyzed  { background: #cce5ff; color: #004085; }
.admin-badge--action-updated   { background: #fff3cd; color: #856404; }
.admin-badge--action-processed { background: #e2d9f3; color: #432874; }
.admin-badge--action-ai_run    { background: #f8d7da; color: #721c24; }
.admin-badge--action-exported  { background: #d1ecf1; color: #0c5460; }
.admin-badge--action-redacted  { background: #e2e3e5; color: #383d41; }
.admin-badge {
    display: inline-block;
    padding: .15rem .5rem;
    border-radius: 3px;
    font-size: 0.83rem;
    font-weight: 600;
}

/* Trigger form */
.admin-trigger-form { display: flex; flex-direction: column; gap: .75rem; }
.admin-trigger-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
@media (max-width: 768px) { .admin-trigger-grid { grid-template-columns: 1fr; } }

/* Export form */
.admin-export-form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem; margin: 1rem 0 .5rem; }
.admin-csv-columns {
    font-size: 0.88rem;
    color: var(--color-text-secondary);
    margin-top: .5rem;
    padding: .5rem .75rem;
    background: var(--color-bg);
    border-radius: var(--radius-sm);
}

/* FOIA status badges in admin */
.foia-status-badge {
    display: inline-block;
    padding: .15rem .5rem;
    border-radius: 3px;
    font-size: 0.83rem;
    font-weight: 600;
}
.foia-status-sent      { background: #cce5ff; color: #004085; }
.foia-status-extended  { background: #fff3cd; color: #856404; }
.foia-status-responded { background: #d4edda; color: #155724; }
.foia-status-overdue   { background: #f8d7da; color: #721c24; }
.foia-status-riesame   { background: #e2d9f3; color: #432874; }
.foia-status-escalated { background: #fce8d5; color: #7d3c0d; }

/* badge-ok for AI status */
.badge-ok { background: #d4edda; color: #155724; }

/* Cookie Banner */
.cookie-banner {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 9999;
    background: var(--color-surface, #fff);
    border-top: 2px solid var(--color-primary, #1a56db);
    box-shadow: 0 -2px 12px rgba(0,0,0,.12);
    padding: .75rem 1rem;
}
.cookie-banner-inner {
    max-width: 960px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}
.cookie-banner-inner p {
    margin: 0;
    font-size: 0.94rem;
    line-height: 1.45;
    flex: 1 1 0;
    min-width: 0;
}
.cookie-banner-close {
    white-space: nowrap;
    flex-shrink: 0;
}
@media (max-width: 480px) {
    .cookie-banner { padding: 0.6rem 0.75rem; }
    .cookie-banner-inner { flex-direction: column; text-align: center; gap: 0.5rem; }
    .cookie-banner-inner p { font-size: 0.82rem; }
    .comparison-bar { flex-direction: column; gap: 0.4rem; padding: 0.5rem 0.75rem; }
}

/* ── Delete button ── */
.btn-danger {
    background: #c0392b;
    color: #fff;
    border: 1px solid #a93226;
}
.btn-danger:hover { background: #a93226; }

/* ── FOIA tracker delete section ── */
.foia-delete-section {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
}
.foia-delete-section summary {
    color: var(--color-text-secondary);
    font-size: 0.94rem;
    cursor: pointer;
}
.foia-delete-section p {
    font-size: 0.94rem;
    color: var(--color-text-secondary);
    margin: .5rem 0;
    line-height: 1.6;
}

/* ── Confidence tooltip hint ── */
.confidence-pill {
    cursor: help;
}

/* ── Admin Municipality Form ── */
.admin-muni-form .card {
    margin-bottom: 1.25rem;
}
.admin-muni-form .card h2 {
    font-size: 1.21rem;
    margin-bottom: 1rem;
    padding-bottom: .5rem;
    border-bottom: 1px solid var(--color-border);
}
.admin-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
@media (max-width: 768px) {
    .admin-form-grid { grid-template-columns: 1fr; }
}
.admin-form-grid .form-group {
    display: flex;
    flex-direction: column;
    gap: .3rem;
}
.admin-form-grid .form-group-wide {
    grid-column: 1 / -1;
}
.admin-form-grid label {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--color-text-secondary);
}
.admin-form-grid input,
.admin-form-grid select {
    padding: .5rem .75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: 0.99rem;
    background: var(--color-input-bg);
    transition: border-color .2s;
}
.admin-form-grid input:focus,
.admin-form-grid select:focus {
    border-color: var(--color-primary);
    outline: none;
    box-shadow: 0 0 0 3px rgba(26, 86, 219, .12);
}
.admin-form-grid input[readonly] {
    background: var(--color-section-bg);
    color: var(--color-text-secondary);
    cursor: not-allowed;
}
.admin-form-grid .text-muted {
    font-size: 0.86rem;
    color: #999;
}
.admin-form-actions {
    display: flex;
    gap: .75rem;
    margin-top: .5rem;
}

/* Municipality table action buttons */
.admin-muni-actions-cell {
    display: flex;
    gap: .4rem;
    flex-wrap: wrap;
}
.admin-muni-actions-cell .btn {
    font-size: 0.86rem;
    padding: .25rem .6rem;
}
.admin-muni-actions-cell form { margin: 0; }

/* Inline badge variants for municipality table */
/* Health monitoring dashboard */
.admin-health-summary {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}
.health-card {
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1.2rem;
    text-align: center;
    box-shadow: var(--shadow);
    border-top: 4px solid #ccc;
}
.health-card-ok { border-top-color: #2e7d32; }
.health-card-warn { border-top-color: #e65100; }
.health-card-crit { border-top-color: #c62828; }
.health-card-total { border-top-color: var(--color-accent); }
.health-card-count {
    display: block;
    font-size: 2.2rem;
    font-weight: 700;
    line-height: 1.2;
}
.health-card-label {
    display: block;
    font-size: 0.94rem;
    color: var(--color-text-secondary);
    margin-top: .25rem;
}

.badge-health {
    display: inline-block;
    padding: .15rem .5rem;
    border-radius: var(--radius-sm);
    font-size: 0.88rem;
    font-weight: 600;
}
.badge-health-ok { background: #e8f5e9; color: #2e7d32; }
.badge-health-warn { background: #fff3e0; color: #e65100; }
.badge-health-crit { background: #ffebee; color: #c62828; }
.badge-health-disabled { background: #e0e0e0; color: #616161; }

.health-error-msg {
    font-size: 0.88rem;
    color: #616161;
    word-break: break-all;
    max-width: 300px;
    display: inline-block;
}

.badge-ai-level {
    display: inline-block;
    padding: .12rem .45rem;
    border-radius: 3px;
    font-size: 0.79rem;
    font-weight: 600;
}
.badge-ai-0 { background: #e9ecef; color: #495057; }
.badge-ai-1 { background: #d4edda; color: #155724; }
.badge-ai-2 { background: #cce5ff; color: #004085; }
.badge-ai-3 { background: #e2d9f3; color: #432874; }

.badge-retention {
    display: inline-block;
    padding: .12rem .45rem;
    border-radius: 3px;
    font-size: 0.79rem;
    font-weight: 600;
    background: #f0f0f0;
    color: #555;
}

/* ── F10: Accessibility — Skip to content ── */
.skip-to-content {
    position: absolute;
    top: -100%;
    left: 0;
    background: var(--color-accent);
    color: #fff;
    padding: 0.5rem 1rem;
    z-index: 9999;
    font-weight: 600;
    text-decoration: none;
    border-radius: 0 0 var(--radius-sm) 0;
}
.skip-to-content:focus {
    top: 0;
}

/* ── F6: Notification badge ── */
.nav-notification {
    position: relative;
    display: inline-flex;
    align-items: center;
    margin-left: 0.25rem;
    color: rgba(255,255,255,0.72);
    text-decoration: none;
    font-size: 0.99rem;
    padding: 0.4rem 0.5rem;
    border-radius: var(--radius-sm);
    transition: color var(--transition), background var(--transition);
}
.nav-notification:hover { color: #fff; background: rgba(255,255,255,0.1); }
.notification-dot {
    position: absolute;
    top: -4px;
    right: -8px;
    background: var(--color-danger);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    min-width: 16px;
    height: 16px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 3px;
    line-height: 1;
}
.notification-dot:empty { display: none; }

/* ── F5: Modal ── */
.modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s, visibility 0.2s;
}
.modal-overlay.active {
    opacity: 1;
    visibility: visible;
}
.modal-content {
    background: var(--color-surface);
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
    max-width: 700px;
    width: 92%;
    max-height: 85vh;
    overflow-y: auto;
    padding: 1.5rem;
    position: relative;
}
.modal-close {
    position: absolute;
    top: 0.8rem;
    right: 0.8rem;
    background: none;
    border: none;
    font-size: 1.54rem;
    cursor: pointer;
    color: var(--color-text-secondary);
    line-height: 1;
    padding: 0.2rem 0.4rem;
}
.modal-close:hover { color: var(--color-danger); }
.modal-header { margin-bottom: 1rem; padding-right: 2rem; }
.modal-header h3 { margin: 0; font-size: 1.21rem; }
.modal-body { line-height: 1.7; }
.modal-body .anomaly-card { margin-bottom: 0; border: none; padding: 0; box-shadow: none; }
.modal-body .score-breakdown { margin: 1rem 0; }
.modal-body .score-breakdown .dim-row { margin-bottom: 0.4rem; }
.modal-body .action-links { margin-top: 1rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }

/* ── F4: Timeline stepper ── */
.timeline-stepper {
    position: relative;
    padding: 0.5rem 0 0.5rem 2rem;
    margin: 0.5rem 0;
}
.timeline-stepper::before {
    content: '';
    position: absolute;
    left: 0.75rem;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--color-border);
}
.timeline-step {
    position: relative;
    padding: 0.6rem 0 0.6rem 1rem;
}
.timeline-step::before {
    content: '';
    position: absolute;
    left: -1.35rem;
    top: 1rem;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--color-accent);
    border: 2px solid var(--color-surface);
    z-index: 1;
}
.timeline-step.step-current::before {
    background: var(--color-danger);
    box-shadow: 0 0 0 3px rgba(231,76,60,0.2);
}
.timeline-step-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.timeline-step-date {
    font-size: 0.9rem;
    color: var(--color-text-secondary);
}
.timeline-step-subject {
    font-size: 0.99rem;
    margin-top: 0.2rem;
}
.timeline-step-subject a {
    color: var(--color-accent);
    text-decoration: none;
}
.timeline-step-subject a:hover { text-decoration: underline; }

/* ── F7: Print view ── */
@media print {
    .navbar, .footer, .cookie-banner, .hero-cta, .quick-actions,
    .filters-bar, .pagination, .citizen-actions-panel,
    .skip-to-content, .modal-overlay, .theme-toggle,
    .notification-dot, .nav-notification,
    .comparison-bar, .act-compare-check,
    .kb-help-hint, .btn-print, .home-map-section { display: none !important; }

    body {
        font-size: 12.1pt;
        color: #000;
        background: #fff;
        line-height: 1.5;
    }
    .container { max-width: 100%; padding: 0; }
    main.container { padding: 0 1cm; }
    a { color: #000; text-decoration: underline; }
    .act-detail-header h1 { font-size: 15.4pt; }
    .badge { border: 1px solid #999; background: #f5f5f5 !important; color: #333 !important; }
    details.act-section { break-inside: avoid; }
    details.act-section[open] > summary { font-weight: 700; }

    .print-header {
        display: block !important;
        text-align: center;
        margin-bottom: 1rem;
        border-bottom: 2px solid #000;
        padding-bottom: 0.5rem;
    }
    .print-header h2 { font-size: 13.2pt; margin: 0; }
    .print-footer {
        display: block !important;
        margin-top: 2rem;
        border-top: 1px solid #ccc;
        padding-top: 0.5rem;
        font-size: 9.9pt;
        text-align: center;
        color: #666;
    }
    .print-qr { display: block !important; text-align: center; margin: 1rem 0; }
}
.print-header, .print-footer, .print-qr { display: none; }
.btn-print {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

/* ── F8: Keyboard shortcuts help ── */
.kb-help-hint {
    position: fixed;
    bottom: 1rem;
    right: 1rem;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.3rem 0.6rem;
    font-size: 0.83rem;
    color: var(--color-text-secondary);
    box-shadow: var(--shadow);
    z-index: 50;
    cursor: pointer;
}
.kb-help-hint:hover { background: var(--color-border); }
@media (max-width: 768px) { .kb-help-hint { display: none; } }
.kb-grid {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.4rem 1rem;
    margin: 0.5rem 0;
}
.kb-grid kbd {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: 3px;
    padding: 0.1rem 0.4rem;
    font-family: monospace;
    font-size: 0.94rem;
    min-width: 1.8rem;
    text-align: center;
}

/* ── F9: Comparison view ── */
.act-compare-check {
    flex-shrink: 0;
    margin-right: 0.5rem;
    width: 16px;
    height: 16px;
    cursor: pointer;
    accent-color: var(--color-accent);
}
.comparison-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--color-primary);
    color: #fff;
    padding: 0.7rem 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    z-index: 200;
    box-shadow: 0 -2px 12px rgba(0,0,0,0.2);
    transform: translateY(100%);
    transition: transform 0.25s;
}
.comparison-bar.visible { transform: translateY(0); }
.comparison-bar .btn { margin-left: 0.5rem; }
.comparison-selected-label { font-size: 0.99rem; }
.compare-modal-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
.compare-col { border: 1px solid var(--color-border); border-radius: var(--radius-sm); padding: 0.8rem; }
.compare-col h4 { margin: 0 0 0.5rem; font-size: 1.04rem; }
.compare-diff { background: #fff3cd; padding: 0.1rem 0.3rem; border-radius: 2px; }
@media (max-width: 768px) {
    .compare-modal-grid { grid-template-columns: 1fr; }
}

/* ── F3: Advanced filters panel ── */
.filters-panel-toggle {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    background: none;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.4rem 0.8rem;
    cursor: pointer;
    font-size: 0.97rem;
    color: var(--color-text);
    margin-bottom: 0.8rem;
}
.filters-panel-toggle:hover { background: var(--color-bg); }
.filters-panel-toggle .filter-count-badge {
    background: var(--color-accent);
    color: #fff;
    font-size: 0.77rem;
    padding: 0.1rem 0.4rem;
    border-radius: 8px;
    margin-left: 0.3rem;
}

/* ── F2: Chart.js dashboard containers ── */
.charts-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.2rem;
    margin: 1rem 0;
}
.chart-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1rem;
    box-shadow: var(--shadow);
}
.chart-card h3 {
    font-size: 1.04rem;
    margin: 0 0 0.5rem;
    color: var(--color-text);
}
.chart-card canvas { max-height: 250px; }
.chart-card--wide { grid-column: 1 / -1; }
@media (max-width: 768px) {
    .charts-grid { grid-template-columns: 1fr; }
}

/* ── Why It Matters section ── */
.why-it-matters {
    margin-bottom: 2rem;
}
.why-it-matters h2 {
    text-align: center;
    font-family: var(--font-heading);
    font-size: 1.54rem;
    margin-bottom: 0.4rem;
}
.wim-subtitle {
    text-align: center;
    color: var(--color-text-secondary);
    font-size: 1.04rem;
    margin-bottom: 1.5rem;
}
.wim-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1.2rem;
}
.wim-card {
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1.5rem;
    box-shadow: var(--shadow);
    border-left: 4px solid var(--color-secondary);
    transition: box-shadow var(--transition), transform var(--transition);
}
.wim-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}
.wim-icon {
    font-size: 2.2rem;
    margin-bottom: 0.5rem;
    display: block;
}
.wim-card h3 {
    font-family: var(--font-heading);
    font-size: 1.16rem;
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: 0.5rem;
}
.wim-card p {
    font-size: 0.99rem;
    line-height: 1.65;
    color: var(--color-text);
    margin-bottom: 0.75rem;
}
.wim-anomaly-tag {
    display: inline-block;
    font-size: 0.79rem;
    font-weight: 600;
    color: var(--color-secondary);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

/* ── Example anomaly showcase ── */
.example-anomaly {
    margin-bottom: 2rem;
}
.example-anomaly h2 {
    font-family: var(--font-heading);
    font-size: 1.26rem;
    margin-bottom: 1rem;
    padding-left: 0.75rem;
    border-left: 4px solid var(--color-secondary);
}
.example-anomaly-card {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.5rem;
    box-shadow: var(--shadow);
}
.example-anomaly-header {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}
.example-anomaly-subject {
    font-family: var(--font-heading);
    font-size: 1.16rem;
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: 1rem;
    font-style: italic;
}
.example-anomaly-findings {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.example-finding {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    padding: 0.75rem;
    background: var(--color-bg);
    border-radius: var(--radius-sm);
    border-left: 3px solid var(--color-danger);
}
.example-finding-icon {
    font-size: 1.43rem;
    flex-shrink: 0;
    margin-top: 0.1rem;
}
.example-finding strong {
    display: block;
    font-size: 0.97rem;
    color: var(--color-primary);
    margin-bottom: 0.2rem;
}
.example-finding p {
    font-size: 0.92rem;
    color: var(--color-text-secondary);
    line-height: 1.55;
    margin: 0;
}
.example-anomaly-note {
    font-size: 0.88rem;
    color: var(--color-text-secondary);
    margin-bottom: 0.75rem;
}

/* ── Trust bar ── */
.trust-bar {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1.5rem;
    padding: 0.75rem 1rem;
    margin-bottom: 1.5rem;
    background: var(--color-surface);
    border-radius: var(--radius);
    border: 1px solid var(--color-border);
    box-shadow: var(--shadow);
}
.trust-item {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.9rem;
    color: var(--color-text-secondary);
    white-space: nowrap;
}
.trust-icon {
    font-size: 1.1rem;
}
.trust-item a {
    color: var(--color-accent);
    text-decoration: none;
}
.trust-item a:hover {
    text-decoration: underline;
}

/* ── Accent outline button ── */
.btn-outline--accent {
    border-color: var(--color-secondary);
    color: var(--color-secondary);
}
.btn-outline--accent:hover {
    background: var(--color-secondary);
    color: #fff;
}

/* ── Animated counters ── */
@keyframes countFadeIn {
    from { opacity: 0.3; transform: scale(0.85); }
    to { opacity: 1; transform: scale(1); }
}
[data-count-target] {
    animation: countFadeIn 0.4s ease-out;
}

/* ── Blog ─────────────────────────────────────────────────────────────── */

/* Blog index — card grid */
.blog-index {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: 1.2rem;
    margin-bottom: 2rem;
}
.blog-card {
    display: flex;
    flex-direction: column;
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1.5rem;
    box-shadow: var(--shadow);
    border-top: 4px solid var(--color-primary);
    text-decoration: none;
    color: inherit;
    transition: box-shadow var(--transition), transform var(--transition);
}
.blog-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}
.blog-card h2 {
    font-family: var(--font-heading);
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--color-text);
    margin: 0.5rem 0 0.6rem;
    line-height: 1.4;
}
.blog-card p {
    font-size: 0.95rem;
    color: var(--color-text-secondary);
    line-height: 1.6;
    flex: 1;
    margin: 0 0 0.75rem;
}
.blog-card-category,
.blog-article-category {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--color-secondary);
    font-family: var(--font-heading);
}
.blog-card-meta {
    font-size: 0.85rem;
    color: var(--color-muted);
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

/* Blog article page */
.blog-article { margin-bottom: 2rem; }
.blog-article-header { margin-bottom: 1.5rem; }
.blog-article-header h1 {
    font-family: var(--font-heading);
    font-size: 1.87rem;
    font-weight: 700;
    line-height: 1.3;
    margin: 0.5rem 0 0.75rem;
}
.blog-article-meta {
    font-size: 0.92rem;
    color: var(--color-muted);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.blog-meta-sep { color: var(--color-border); }

/* Blog FAQ */
.blog-faq {
    max-width: 800px;
    margin: 2rem auto 0;
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1.75rem 2rem;
    box-shadow: var(--shadow);
    border-top: 4px solid var(--color-secondary);
}
.blog-faq h2 {
    margin-top: 0;
    margin-bottom: 1rem;
    font-size: 1.32rem;
    color: var(--color-primary);
    font-family: var(--font-heading);
}
.blog-faq-list dt {
    font-weight: 700;
    font-size: 1.02rem;
    margin-top: 1rem;
    color: var(--color-text);
}
.blog-faq-list dt:first-child { margin-top: 0; }
.blog-faq-list dd {
    margin-left: 0;
    margin-top: 0.3rem;
    font-size: 0.99rem;
    line-height: 1.7;
    color: var(--color-text-secondary);
}

/* Related articles */
.blog-related {
    max-width: 800px;
    margin: 2rem auto 0;
}
.blog-related h2 {
    font-size: 1.2rem;
    font-family: var(--font-heading);
    color: var(--color-primary);
    margin-bottom: 0.8rem;
}
.blog-related-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.8rem;
}
.blog-related-card {
    display: block;
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1rem 1.25rem;
    box-shadow: var(--shadow);
    border-left: 4px solid var(--color-primary);
    text-decoration: none;
    color: inherit;
    transition: box-shadow var(--transition), transform var(--transition);
}
.blog-related-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}
.blog-related-card h3 {
    font-size: 0.95rem;
    font-family: var(--font-heading);
    font-weight: 600;
    margin: 0.3rem 0;
    color: var(--color-text);
    line-height: 1.35;
}
.blog-related-category {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--color-secondary);
}
.blog-related-meta {
    font-size: 0.82rem;
    color: var(--color-muted);
}

/* Back to blog */
.blog-back {
    max-width: 800px;
    margin: 1.5rem auto 0;
}
.blog-back a {
    color: var(--color-accent);
    text-decoration: none;
    font-weight: 500;
    font-size: 0.95rem;
}
.blog-back a:hover { text-decoration: underline; }

/* Blog article body — lists & paragraphs */
.blog-article-body p { line-height: 1.8; margin-bottom: 0.8rem; }
.blog-article-body ul,
.blog-article-body ol { margin: 0.5rem 0 1rem 1.5rem; line-height: 1.7; }
.blog-article-body li { margin-bottom: 0.3rem; }

/* Dark mode blog */
[data-theme="dark"] .blog-card { border-top-color: var(--color-accent); }
[data-theme="dark"] .blog-card h2 { color: var(--color-text); }
[data-theme="dark"] .blog-faq { border-top-color: var(--color-secondary); }
[data-theme="dark"] .blog-related-card { border-left-color: var(--color-accent); }

/* Responsive blog */
@media (max-width: 768px) {
    .blog-index { grid-template-columns: 1fr; }
    .blog-related-grid { grid-template-columns: 1fr; }
    .blog-faq { padding: 1rem; }
    .blog-article-header h1 { font-size: 1.45rem; }
}

/* ── Donate CTA (homepage section) ── */
.donate-cta {
    margin: 2rem 0;
    background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow-md);
}
.donate-cta-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    padding: 2rem 2.5rem;
}
.donate-cta-text {
    flex: 1;
}
.donate-cta-text h2 {
    font-family: var(--font-heading);
    font-size: 1.3rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 0.5rem;
}
.donate-cta-text p {
    font-size: 0.95rem;
    color: #a0aec0;
    line-height: 1.6;
    margin: 0;
}
.donate-cta-btn {
    display: inline-block;
    flex-shrink: 0;
    padding: 12px 28px;
    background: #e74c3c;
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
    border-radius: 24px;
    text-decoration: none;
    letter-spacing: 0.3px;
    box-shadow: 0 2px 10px rgba(231,76,60,0.4);
    transition: background var(--transition), transform var(--transition), box-shadow var(--transition);
    white-space: nowrap;
}
.donate-cta-btn:hover {
    background: #c0392b;
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(231,76,60,0.5);
    color: #fff;
}
@media (max-width: 768px) {
    .donate-cta-inner {
        flex-direction: column;
        text-align: center;
        padding: 1.5rem;
        gap: 1.2rem;
    }
}

/* ── Donate card (municipality detail) ── */
.donate-card {
    margin: 2rem 0;
    padding: 1.2rem 1.5rem;
    background: var(--color-section-bg);
    border: 1px solid var(--color-border);
    border-left: 4px solid #e74c3c;
    border-radius: var(--radius);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.donate-card-text {
    flex: 1;
    font-size: 0.95rem;
    color: var(--color-text);
    line-height: 1.5;
    margin: 0;
}
@media (max-width: 480px) {
    .donate-card {
        flex-direction: column;
        text-align: center;
    }
}

/* ── Donate banner (dismissable, bottom fixed) ── */
.donate-banner {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1100;
    background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
    border-top: 2px solid #e74c3c;
    box-shadow: 0 -2px 12px rgba(0,0,0,0.15);
}
.donate-banner-inner {
    max-width: 960px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.2rem;
    padding: 0.8rem 1.5rem;
    flex-wrap: wrap;
}
.donate-banner-inner p {
    margin: 0;
    color: #cbd5e0;
    font-size: 0.92rem;
    line-height: 1.4;
}
.donate-banner-btn {
    display: inline-block;
    padding: 8px 22px;
    background: #e74c3c;
    color: #fff;
    font-weight: 700;
    font-size: 0.88rem;
    border-radius: 20px;
    text-decoration: none;
    box-shadow: 0 2px 8px rgba(231,76,60,0.35);
    transition: background var(--transition), transform var(--transition);
    white-space: nowrap;
}
.donate-banner-btn:hover {
    background: #c0392b;
    transform: translateY(-1px);
    color: #fff;
}
.donate-banner-close {
    background: none;
    border: none;
    color: #8892a6;
    font-size: 1.4rem;
    cursor: pointer;
    padding: 4px 8px;
    line-height: 1;
    transition: color var(--transition);
}
.donate-banner-close:hover {
    color: #fff;
}
@media (max-width: 480px) {
    .donate-banner-inner {
        flex-direction: column;
        text-align: center;
        gap: 0.6rem;
        padding: 0.7rem 1rem;
    }
}

/* Dark mode donate overrides */
[data-theme="dark"] .donate-card {
    background: var(--color-section-bg);
    border-color: var(--color-border);
    border-left-color: #e74c3c;
}

