/* Hotminds brand — vedi attached_assets/impeccable_chiara.md. Font self-hostati, mai CDN. */
@font-face { font-family:"Montserrat"; src:url("../fonts/montserrat-regular.woff2") format("woff2"); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:"Montserrat"; src:url("../fonts/montserrat-medium.woff2") format("woff2"); font-weight:500; font-style:normal; font-display:swap; }
@font-face { font-family:"Montserrat"; src:url("../fonts/montserrat-semibold.woff2") format("woff2"); font-weight:600; font-style:normal; font-display:swap; }
@font-face { font-family:"Montserrat"; src:url("../fonts/montserrat-bold.woff2") format("woff2"); font-weight:700; font-style:normal; font-display:swap; }
@font-face { font-family:"Montserrat"; src:url("../fonts/montserrat-black.woff2") format("woff2"); font-weight:900; font-style:normal; font-display:swap; }
@font-face { font-family:"JetBrains Mono"; src:url("../fonts/jetbrains-mono-400.woff2") format("woff2"); font-weight:400; font-display:swap; }
@font-face { font-family:"JetBrains Mono"; src:url("../fonts/jetbrains-mono-500.woff2") format("woff2"); font-weight:500; font-display:swap; }

:root, [data-bs-theme="dark"] {
  --lime:#BFDD2E; --lime-ink:#0B1304; --purple:#6C5CE7;
  --ink:#0A0A0F; --paper:#F4F4EE; --ink-soft:#9097A8; --paper-soft:#4B4F5A;
  --ok:#3FA34D; --warn:#E0A12B; --error:#D6453A; --info:#6C5CE7;
  --bg:var(--ink); --fg:#F4F4EE; --muted:var(--ink-soft); --accent:var(--lime);
  --line:rgba(244,244,238,.12); --surface:#12121A;
  --bs-body-bg:var(--bg); --bs-body-color:var(--fg);
  --bs-primary:#BFDD2E; --bs-primary-rgb:191,221,46;
  --bs-border-color:var(--line);
  --bs-font-sans-serif:"Montserrat","Helvetica Neue",Arial,sans-serif;
  --bs-font-monospace:"JetBrains Mono",ui-monospace,monospace;
}
[data-bs-theme="light"] {
  --bg:var(--paper); --fg:#0A0A0F; --muted:var(--paper-soft);
  --line:rgba(10,10,15,.14); --surface:#FFFFFF;
  --bs-body-bg:var(--bg); --bs-body-color:var(--fg);
  --bs-border-color:var(--line);
}

body { background:var(--bg); color:var(--fg); font-family:var(--bs-font-sans-serif); font-size:15px; line-height:24px;
       min-height:100vh; display:flex; flex-direction:column; }
main { flex:1; }
h1, h2 { font-family:"Montserrat","Helvetica Neue",Arial,sans-serif; }
code, pre, .font-mono { font-family:var(--bs-font-monospace); }

.caps { font-size:11px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; }
.text-muted-brand { color:var(--muted); }
.display-title { font-size:40px; line-height:44px; font-weight:700; letter-spacing:-.01em; margin:0 0 .5rem; }
.lead-muted { color:var(--muted); font-size:17px; line-height:26px; margin:0 0 2.5rem; }
.index-number { color:var(--accent); font-weight:900; font-size:28px; line-height:32px; margin:0 0 1rem; }

/* Header / footer */
.site-header { border-bottom:1px solid var(--line); padding:.75rem 0; }
.site-footer { border-top:1px solid var(--line); padding:1.25rem 0; margin-top:4rem; }
/* La maschera fa ereditare al logo il colore del testo in entrambi i temi */
.brand-logo { display:inline-block; width:134px; height:30px; background-color:var(--fg);
              -webkit-mask:url("../img/hotminds-logo.svg") no-repeat left center / contain;
                      mask:url("../img/hotminds-logo.svg") no-repeat left center / contain; }

/* Bottoni */
.btn { min-height:44px; font-weight:600; }
.btn-primary { --bs-btn-bg:var(--lime); --bs-btn-color:var(--lime-ink); --bs-btn-border-color:var(--lime);
               --bs-btn-hover-bg:#a8c226; --bs-btn-hover-border-color:#a8c226; --bs-btn-hover-color:var(--lime-ink);
               --bs-btn-active-bg:#a8c226; --bs-btn-active-border-color:#a8c226; --bs-btn-active-color:var(--lime-ink); }
.btn-outline-brand { --bs-btn-color:var(--fg); --bs-btn-border-color:var(--line);
                     --bs-btn-hover-color:var(--fg); --bs-btn-hover-bg:var(--surface); --bs-btn-hover-border-color:var(--muted); }
.btn-icon { min-width:44px; color:var(--fg); border:1px solid transparent; font-size:18px; }
.btn-icon:hover { border-color:var(--line); color:var(--fg); }
a:focus-visible, button:focus-visible, .btn:focus-visible, .form-control:focus {
  outline:2px solid var(--purple); outline-offset:2px; box-shadow:none; }

/* Login */
.login { max-width:420px; margin:12vh auto 0; }
.login-form { display:flex; flex-direction:column; gap:.75rem; }
.form-label { color:var(--muted); margin:0; }
.form-control { background:var(--surface); color:var(--fg); border-color:var(--line); min-height:44px; }
.form-control:focus { background:var(--surface); color:var(--fg); border-color:var(--purple); }
.pin-input { font-size:28px; letter-spacing:.6em; text-align:center; }
.form-error { color:var(--error); font-weight:600; margin:0; }
[data-bs-theme="light"] .form-error { color:#B3362C; }

.page-head { margin-top:4rem; }
.link-brand { color:var(--fg); text-decoration-color:var(--purple); text-underline-offset:4px; font-weight:600; }
.report-actions { display:flex; flex-wrap:wrap; align-items:center; gap:.75rem 1rem; margin:0 0 2.5rem; }
.report-actions .link-brand { margin-right:auto; }
/* §9.1: PDF blu e Excel verde, colori canonici; il verde regge il contrasto solo con testo scuro. */
.btn-download-pdf { --bs-btn-bg:#0A3D6B; --bs-btn-color:#FFFFFF; --bs-btn-border-color:var(--line);
                    --bs-btn-hover-bg:#0D4D87; --bs-btn-hover-color:#FFFFFF; --bs-btn-hover-border-color:var(--line);
                    --bs-btn-active-bg:#0D4D87; --bs-btn-active-color:#FFFFFF; }
.btn-download-excel { --bs-btn-bg:#27AE60; --bs-btn-color:var(--ink); --bs-btn-border-color:#27AE60;
                      --bs-btn-hover-bg:#2FC46D; --bs-btn-hover-color:var(--ink); --bs-btn-hover-border-color:#2FC46D;
                      --bs-btn-active-bg:#2FC46D; --bs-btn-active-color:var(--ink); }

/* Riquadri di messaggi (_Notice): errori di upload, controlli sui file */
.notice { border:1px solid var(--line); border-left:4px solid var(--warn); background:var(--surface);
          padding:1rem 1.25rem; margin:0 0 1.5rem; }
.notice-error { border-left-color:var(--error); }
.notice-title { margin:0 0 .5rem; color:var(--warn); }
[data-bs-theme="light"] .notice-title { color:#8A5A00; }
.notice-list { margin:0; padding-left:1.1rem; }

/* Upload: 7 slot, il 7° (extra) a tutta larghezza */
.slot-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:1rem; }
.slot { position:relative; border:1px solid var(--line); background:var(--surface); display:flex; flex-direction:column; }
.slot-extra { grid-column:1 / -1; border-style:dashed; }
.slot-drop { display:flex; flex-direction:column; gap:.35rem; padding:1.25rem; min-height:132px; cursor:pointer; margin:0; }
.slot-head { display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.slot-label { color:var(--fg); }
.slot-desc { color:var(--muted); }
.slot-file { color:var(--fg); font-size:13px; overflow-wrap:anywhere; }
.slot-ok { background:var(--ok); color:var(--ink); font-size:11px; font-weight:500; padding:0 .5rem; line-height:20px; }
.slot.is-loaded { border-color:var(--ok); }
.slot.is-dragging { border-color:var(--purple); }
/* Input nascosto alla vista ma raggiungibile da tastiera: il focus si vede sulla card. */
.slot-input { position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.slot:focus-within { outline:2px solid var(--purple); outline-offset:2px; }
.slot-error { color:var(--error); font-weight:600; margin:0; padding:0 1.25rem 1rem; }
[data-bs-theme="light"] .slot-error { color:#B3362C; }
.extra-list { list-style:none; margin:0; padding:0 1.25rem .75rem; font-size:13px; }
.extra-list li { display:flex; align-items:center; justify-content:space-between; gap:.5rem; border-top:1px solid var(--line); }

/* Report */
.report-stats { margin:0 0 2.5rem; }
.stats-line { margin:0 0 .25rem; font-family:var(--bs-font-monospace); font-size:14px; }
.section-title { font-size:22px; line-height:28px; font-weight:700; margin:0 0 1rem; }
.report-section { margin:0 0 2.5rem; }
.data-table { --bs-table-bg:transparent; --bs-table-color:var(--fg); --bs-table-border-color:var(--line); margin-bottom:.5rem; }
.data-table th { font-weight:600; }
.data-table thead th { color:var(--muted); font-size:11px; letter-spacing:.12em; text-transform:uppercase; }
.data-table .num { text-align:right; font-family:var(--bs-font-monospace); }
.data-table tfoot th, .data-table tfoot td { font-weight:700; }
.data-table .mono, .data-table .num-date { font-family:var(--bs-font-monospace); font-size:13px; white-space:nowrap; }
.data-table .note { font-size:13px; min-width:18rem; }
.mapping-footer { margin-top:2rem; }
.empty-state { color:var(--muted); border:1px dashed var(--line); padding:1rem 1.25rem; margin:0; }

/* KPI: contatori lime, il bordo sinistro porta il colore dello stato */
.kpi-strip { display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); border-block:1px solid var(--line); margin:0 0 1.5rem; }
.kpi { border-left:4px solid var(--kpi); padding:1rem 1.25rem; display:flex; flex-direction:column-reverse; justify-content:flex-end; }
.kpi dt { color:var(--muted); }
.kpi dd { margin:0; color:var(--accent); font-weight:900; font-size:40px; line-height:44px; }
[data-bs-theme="light"] .kpi dd { color:var(--fg); }
.kpi-match { --kpi:#27AE60; } .kpi-verificare { --kpi:#F39C12; } .kpi-indagare { --kpi:#E74C3C; }
.kpi-analizzati { --kpi:var(--fg); } .kpi-unmatched { --kpi:var(--muted); }
@media (max-width:767.98px) { .kpi-strip { grid-template-columns:repeat(2, minmax(0, 1fr)); } }

/* Tabelle di riconciliazione: header blu Applied / viola Hotminds (colori canonici §5) */
.recon-applied { --group:#0A3D6B; } .recon-hotminds { --group:#6A1B9A; }
.recon-table > thead > tr > th { --bs-table-bg:var(--group); color:#FFFFFF; white-space:nowrap; }
.recon-table > tbody > tr > th { font-weight:600; }
.recon-table tr[data-detail] { cursor:pointer; }
/* RCA-006: riga gialla, testo scuro per il contrasto in entrambi i temi */
.recon-table > tbody > tr.row-highlight > * { --bs-table-bg:#FFF3CD; color:#0A0A0F; }

/* Valori colorati: varianti per tema per tenere il contrasto ≥ 4.5:1 */
:root, [data-bs-theme="dark"] { --val-ok:#3FA34D; --val-bad:#E5675C; --val-ferie:#A29BFE; }
[data-bs-theme="light"] { --val-ok:#2B7A36; --val-bad:#B3362C; --val-ferie:#5A4BD1; }
.data-table .val-ok { color:var(--val-ok); } .data-table .val-bad { color:var(--val-bad); font-weight:600; }
.data-table .val-ferie { color:var(--val-ferie); font-weight:600; } .data-table .val-neutral { color:var(--muted); }

/* Status a pill (§9.1), testo scuro sui colori canonici */
.status-pill { display:inline-block; font-family:var(--bs-font-monospace); font-size:12px; font-weight:500; line-height:22px;
               padding:0 .65rem; border-radius:999px; color:#0A0A0F; white-space:nowrap; }
.status-match { background:#27AE60; } .status-verificare { background:#F39C12; } .status-indagare { background:#E74C3C; }

/* Nome persona: bottone del drill-down e badge informativi (RCH-006 viola, RCH-007 arancione) */
.drill-toggle { background:none; border:0; padding:0; color:inherit; font:inherit; font-weight:600; min-height:44px;
                display:inline-flex; align-items:center; gap:.5rem; text-align:left; cursor:pointer; }
.drill-caret::before { content:"▸"; display:inline-block; transition:transform .15s; }
.drill-toggle[aria-expanded="true"] .drill-caret::before { transform:rotate(90deg); }
.person-name { display:inline-flex; align-items:center; min-height:44px; }
.person-badges { display:flex; flex-wrap:wrap; gap:.25rem; margin-bottom:.35rem; }
.badge-signal { font-size:11px; font-weight:600; line-height:20px; padding:0 .5rem; border-radius:999px; white-space:nowrap; }
.badge-absence { background:#6A1B9A; color:#FFFFFF; }
.badge-uncovered { background:#E67E22; color:#0A0A0F; }

/* Drill-down */
.recon-table > tbody > tr.drill-row > td { --bs-table-bg:var(--surface); padding:.25rem 1rem 1rem 2.5rem; }
.drill-table { font-size:13px; width:auto; min-width:min(100%, 40rem); }
.drill-table > tbody > tr.day-off > * { --bs-table-bg:rgba(224,161,43,.14); }
.drill-subtitle { margin:1rem 0 .5rem; color:var(--muted); }
.drill-note { font-size:13px; margin:0; max-width:60rem; }

/* Non riconciliati: stessa cornice ambra dei riquadri di controllo */
.unmatched-subtitle { margin:1rem 0 .5rem; color:var(--muted); }
