/* portale_fornitori — tema sopra Bootstrap 5.3 (nessuna build: solo variabili e classi).
   Niente stili inline nei template: la CSP ha style-src 'self'. */

:root {
  --pf-blu: #1a4f9c;
  --pf-blu-rgb: 26, 79, 156;
  --pf-blu-scuro: #143d79;
  --pf-sfondo: #f3f5f9;
  --pf-bordo: #e2e6ee;
  --pf-testo-tenue: #6b7280;

  --bs-primary: var(--pf-blu);
  --bs-primary-rgb: var(--pf-blu-rgb);
  --bs-link-color: var(--pf-blu);
  --bs-link-color-rgb: var(--pf-blu-rgb);
  --bs-link-hover-color: var(--pf-blu-scuro);
  --bs-body-bg: var(--pf-sfondo);
  --bs-body-color: #1f2937;
  --bs-border-color: var(--pf-bordo);
  --bs-border-radius: .55rem;
}

body { background: var(--pf-sfondo); }

.btn-primary {
  --bs-btn-bg: var(--pf-blu); --bs-btn-border-color: var(--pf-blu);
  --bs-btn-hover-bg: var(--pf-blu-scuro); --bs-btn-hover-border-color: var(--pf-blu-scuro);
  --bs-btn-active-bg: #10336a; --bs-btn-active-border-color: #10336a;
  --bs-btn-focus-shadow-rgb: var(--pf-blu-rgb);
}

/* ── Barra in alto ──────────────────────────────────────────────────── */
.striscia-dev {
  background: repeating-linear-gradient(-45deg, #fff3cd, #fff3cd 12px, #ffecb5 12px, #ffecb5 24px);
  color: #664d03; font-size: .85rem; text-align: center; padding: .3rem 1rem;
}
.barra { background: #fff; border-bottom: 1px solid var(--pf-bordo); }
.barra .logo { height: 40px; width: auto; }
.titolo-app { font-weight: 600; color: var(--bs-body-color); line-height: 1.15; }
.titolo-app small { display: block; font-weight: 400; font-size: .75rem; color: var(--pf-testo-tenue); }
/* Telefoni stretti (360 px): il titolo va a capo invece di allargare la pagina (collaudo L107). */
.barra .navbar-brand { min-width: 0; white-space: normal; }
@media (max-width: 400px) {
  .barra .navbar-brand { gap: .5rem !important; margin-right: .5rem; }
  .barra .logo { height: 32px; }
}
.lato-interno .barra { border-bottom: 3px solid var(--pf-blu); }

/* ── Area interna: menu laterale ─────────────────────────────────────
   Da lg in su sempre aperto e fermo mentre si scorre; sotto, si apre col pulsante
   della barra (#menu e' un .collapse, d-lg-block lo tiene visibile sui monitor). */
.menu-laterale { background: #fff; padding: 1rem .75rem; border-bottom: 1px solid var(--pf-bordo); }
.menu-laterale .nav-link {
  display: flex; align-items: center; gap: .6rem;
  padding: .4rem .6rem; border-radius: .4rem; color: var(--bs-body-color);
}
.menu-laterale .nav-link .bi { width: 1.1rem; text-align: center; color: var(--pf-testo-tenue); }
.menu-laterale .nav-link:hover { background: var(--pf-sfondo); }
.menu-laterale .nav-link.active { background: rgba(var(--pf-blu-rgb), .1); color: var(--pf-blu-scuro); font-weight: 600; }
.menu-laterale .nav-link.active .bi { color: var(--pf-blu); }
.menu-gruppo {
  margin: 1rem .6rem .3rem; font-size: .7rem; font-weight: 600;
  letter-spacing: .06em; text-transform: uppercase; color: var(--pf-testo-tenue);
}
.contatore { margin-left: auto; background: var(--pf-blu); color: #fff; font-weight: 600; }
.contenuto-interno { flex: 1 1 auto; min-width: 0; padding: 1.25rem 1rem; }
@media (min-width: 992px) {
  /* La colonna bianca e' alta quanto la pagina; e' il suo contenuto a restare fermo mentre si scorre. */
  .guscio-interno { display: flex; min-height: calc(100vh - 73px); }
  .menu-laterale { flex: 0 0 15rem; border-bottom: 0; border-right: 1px solid var(--pf-bordo); }
  .menu-laterale-dentro { position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; }
  .contenuto-interno { padding: 1.5rem 2rem; max-width: 1600px; }
}

/* ── Pagine vuote / errori ──────────────────────────────────────────── */
.vuoto { text-align: center; color: var(--pf-testo-tenue); }
.vuoto > .bi { font-size: 3rem; display: block; margin-bottom: .5rem; }

.piede { font-size: .8rem; color: var(--pf-testo-tenue); }

/* ── Riquadri, utente, ruoli ────────────────────────────────────────── */
.riquadro-stretto { max-width: 440px; margin: 0 auto; }
.riquadro-medio { max-width: 640px; }
.sottotitolo { font-size: .72rem; }
.ruolo { display: inline-block; padding: 0 .4rem; margin-right: .25rem; border-radius: 1rem; font-weight: 500; }
.ruolo-admin { background: rgba(var(--pf-blu-rgb), .12); color: var(--pf-blu-scuro); }
.ruolo-backoffice { background: #e6f4ea; color: #1e6b34; }
.ruolo-user { background: #eef0f3; color: #4b5563; }
.codice-otp { letter-spacing: .5rem; font-variant-numeric: tabular-nums; }
.testo-email { white-space: pre-wrap; font-family: inherit; font-size: .9rem; }

/* ── Documenti ──────────────────────────────────────────────────────── */
.anteprima { width: 100%; height: 75vh; border: 1px solid var(--pf-bordo); border-radius: var(--bs-border-radius); background: #fff; }
.hash { font-size: .75rem; }
details > summary { cursor: pointer; color: var(--pf-blu); }
.riquadro-largo { max-width: 960px; }

/* ── Riepilogo interno ──────────────────────────────────────────────── */
.riquadro-azione:hover, .riquadro-azione:focus { border-color: rgba(var(--pf-blu-rgb), .45); }
.riquadro-da-fare { border-left: 4px solid var(--pf-blu); }
.matrice-stati td, .matrice-stati th { padding-top: .45rem; padding-bottom: .45rem; }
.matrice-stati td:first-child, .matrice-stati th:first-child { padding-left: 1rem; }
.matrice-stati td:last-child, .matrice-stati th:last-child { padding-right: 1rem; }

/* ── Validazione ────────────────────────────────────────────────────── */
/* Giorni in coda: ambra e rosso oltre le soglie (interno_albo.SOGLIE_ATTESA). */
.attesa { color: var(--pf-testo-tenue); }
.attesa-lunga { color: #8a5a00; font-weight: 600; }
.attesa-troppo { color: #b42318; font-weight: 600; }
/* Pagina di controllo: le azioni restano a vista mentre si scorre l'anteprima. */
@media (min-width: 992px) {
  .colonna-azioni { position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; }
}
.motivi-pronti .btn { --bs-btn-padding-y: .1rem; --bs-btn-font-size: .78rem; }
.matrice select { min-width: 9rem; }

/* ── Cruscotto del fornitore ────────────────────────────────────────── */
.intestazione-fornitore h1 { font-weight: 600; letter-spacing: -.01em; }
.voce-da-fare { display: flex; align-items: center; gap: .9rem; padding-top: .85rem; padding-bottom: .85rem; }
.min-w-0 { min-width: 0; }
.icona-tonda {
  flex: 0 0 2.25rem; width: 2.25rem; height: 2.25rem; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center; font-size: 1rem;
  background: rgba(var(--pf-blu-rgb), .1); color: var(--pf-blu);
}
.icona-rifiutato, .icona-scaduto { background: #fde8e8; color: #b42318; }
.icona-in_scadenza { background: #fff4db; color: #8a5a00; }
.card-qualifica { border-left: 4px solid var(--pf-bordo); }
.qualifica-qualificato { border-left-color: #198754; }
.qualifica-in_revisione { border-left-color: var(--pf-blu); }
.qualifica-in_qualifica, .qualifica-invitato { border-left-color: #0dcaf0; }
.qualifica-sospeso { border-left-color: #ffc107; }
.qualifica-non_qualificato { border-left-color: #dc3545; }
progress.avanzamento {
  -webkit-appearance: none; appearance: none; display: block; width: 100%; height: .5rem;
  border: 0; border-radius: 1rem; background: #e9edf3; overflow: hidden;
}
progress.avanzamento::-webkit-progress-bar { background: #e9edf3; border-radius: 1rem; }
progress.avanzamento::-webkit-progress-value { background: #198754; border-radius: 1rem; }
progress.avanzamento::-moz-progress-bar { background: #198754; border-radius: 1rem; }

/* ── Questionari ────────────────────────────────────────────────────── */
.risposta-diversa { background: #fff8e1; }

/* ── Assegnazione alle classi (tipi e questionari) ───────────────────
   Classi, non style="": la CSP ha style-src 'self' (collaudo L148). */
.classi-assegnate { max-height: 28rem; }
.classi-assegnate .col-richiesta { width: 9.5rem; }

/* ── Candidatura pubblica ───────────────────────────────────────────── */
/* Campo trappola per i bot: fuori dallo schermo, non "display: none". */
.campo-trappola { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* ── Scadenze ───────────────────────────────────────────────────────── */
/* Giorni alla scadenza: rosso entro 7, ambra entro 30 (soglie degli avvisi ai fornitori). */
.scade-subito { color: #b42318; font-weight: 600; }
.scade-presto { color: #8a5a00; font-weight: 600; }
.sezioni-vuote > summary { color: var(--pf-testo-tenue); }
