/* ==========================================================================
   Gestionale Assicurazioni — stile comune
   Tema chiaro e scuro tramite Bootstrap 5.3 (attributo data-bs-theme su <html>).
   Struttura: menu laterale fisso a sinistra (su schermi piccoli si apre col
   pulsante ☰), barra alta con ricerca/notifiche/utente, contenuto a destra.
   I colori dell'agenzia (pagina Agenzia › Dati, logo e aspetto) arrivano da
   /agenzia/stile.css, che può ridefinire --ga-primario.
   ========================================================================== */

/* ---------- colori e misure ---------- */
:root {
  --ga-primario: #1f4fa3;
  --ga-primario-scuro: #173c7d;
  --ga-menu-largo: 264px;
  --ga-alto: 60px;
  --ga-raggio: .75rem;
  --ga-ombra: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);
  --ga-ombra-su: 0 6px 18px rgba(16, 24, 40, .10);
  --bs-border-radius: .55rem;
  --bs-border-radius-lg: .75rem;
  --bs-font-sans-serif: "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
}
[data-bs-theme="light"] {
  --ga-sfondo: #f3f5f9;
  --ga-superficie: #ffffff;
  --ga-bordo: #e4e8ef;
  --ga-menu-sfondo: #0f1f3d;
  --ga-menu-testo: #c9d3e6;
  --ga-menu-attivo: rgba(255, 255, 255, .12);
  --ga-testata-tabella: #f7f8fb;
}
[data-bs-theme="dark"] {
  --ga-sfondo: #10141b;
  --ga-superficie: #171c25;
  --ga-bordo: #262d3a;
  --ga-menu-sfondo: #0b0f15;
  --ga-menu-testo: #aab4c5;
  --ga-menu-attivo: rgba(255, 255, 255, .08);
  --ga-testata-tabella: #1b212c;
  --bs-body-bg: #10141b;
  --bs-secondary-bg: #1b212c;
  --bs-tertiary-bg: #151a22;
}

body { background: var(--ga-sfondo); font-size: .935rem; -webkit-font-smoothing: antialiased; }
h1, .h1, h2, .h2, h3, .h3, h4, .h4 { font-weight: 650; letter-spacing: -.01em; }
.h4 { font-size: 1.35rem; }
a { text-decoration-thickness: 1px; text-underline-offset: 2px; }

/* ---------- menu laterale ---------- */
.barra-laterale {
  background: var(--ga-menu-sfondo) !important; color: var(--ga-menu-testo);
  display: flex; flex-direction: column;
}
@media (min-width: 1200px) {
  .barra-laterale { position: fixed; inset: 0 auto 0 0; width: var(--ga-menu-largo); z-index: 1030; }
  .con-menu .area-principale { margin-left: var(--ga-menu-largo); }
}
@media (max-width: 1199.98px) {
  .barra-laterale.offcanvas-xl { --bs-offcanvas-width: 290px; --bs-offcanvas-bg: var(--ga-menu-sfondo); }
}
.intestazione-menu { display: flex; align-items: center; gap: .5rem; padding: 0 .9rem 0 1rem; height: var(--ga-alto); border-bottom: 1px solid rgba(255, 255, 255, .07); flex-shrink: 0; }
.marchio { display: flex; align-items: center; gap: .6rem; color: #fff; text-decoration: none; font-weight: 650; font-size: 1.02rem; min-width: 0; }
.marchio span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.marchio .logo-agenzia { height: 30px; width: auto; max-width: 44px; object-fit: contain; border-radius: .35rem; background: rgba(255, 255, 255, .95); padding: 2px; }
.marchio .icona-menu { width: 34px; height: 34px; border-radius: .5rem; flex-shrink: 0; }
.marchio-icona { width: 32px; height: 32px; border-radius: .5rem; background: var(--ga-primario); display: inline-flex; align-items: center; justify-content: center; font-size: 1.1rem; flex-shrink: 0; }
.logo-agenzia-scuro { display: none; }
[data-bs-theme="dark"] .logo-agenzia-chiaro { display: none; }
[data-bs-theme="dark"] .logo-agenzia-scuro { display: inline-block; }
.menu-voci { flex: 1; overflow-y: auto; padding: .75rem .6rem; scrollbar-width: thin; }
.menu-voci .nav-link {
  display: flex; align-items: center; gap: .7rem; width: 100%; border: 0; background: none; text-align: left;
  color: var(--ga-menu-testo); padding: .48rem .7rem; border-radius: .5rem; font-size: .9rem; line-height: 1.25;
  transition: background .12s, color .12s;
}
.menu-voci .nav-link > .bi:first-child { font-size: 1.05rem; width: 1.2rem; text-align: center; opacity: .9; }
.menu-voci .nav-link:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.menu-voci .nav-link.active { color: #fff; background: var(--ga-menu-attivo); box-shadow: inset 3px 0 0 #6ea2ff; font-weight: 600; }
.gruppo-titolo { margin-top: .35rem; }
.gruppo-titolo .freccia { margin-left: auto; font-size: .75rem; transition: transform .15s; }
.gruppo-titolo.collapsed .freccia { transform: rotate(-90deg); }
.gruppo-voci { padding-left: .9rem; border-left: 1px solid rgba(255, 255, 255, .08); margin-left: 1.25rem; }
.gruppo-voci .nav-link { font-size: .86rem; padding: .38rem .6rem; }
.piede-menu { padding: .6rem 1rem; font-size: .72rem; opacity: .55; border-top: 1px solid rgba(255, 255, 255, .07); }

/* ---------- barra alta ---------- */
.barra-alta {
  position: sticky; top: 0; z-index: 1020; height: var(--ga-alto);
  display: flex; align-items: center; gap: .75rem; padding: 0 1.25rem;
  background: color-mix(in srgb, var(--ga-superficie) 88%, transparent); backdrop-filter: saturate(160%) blur(8px);
  border-bottom: 1px solid var(--ga-bordo);
}
.ricerca-alta { position: relative; flex: 1; max-width: 520px; }
.ricerca-alta .bi-search { position: absolute; left: .8rem; top: 50%; transform: translateY(-50%); color: var(--bs-secondary-color); pointer-events: none; }
.ricerca-alta .form-control { padding-left: 2.3rem; background: var(--ga-sfondo); border-color: transparent; border-radius: 2rem; }
.ricerca-alta .form-control:focus { background: var(--ga-superficie); border-color: var(--bs-primary-border-subtle); }
.btn-icona { width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; font-size: 1.15rem; color: var(--bs-body-color); }
.btn-icona:hover { background: var(--ga-sfondo); }
.utente-alto { display: flex; align-items: center; gap: .6rem; border: 0; padding: .25rem .5rem; border-radius: 2rem; }
.utente-alto:hover { background: var(--ga-sfondo); }
.utente-alto::after { margin-left: .1rem; }
.avatar { width: 34px; height: 34px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--ga-primario); color: #fff; font-weight: 600; font-size: .8rem; flex-shrink: 0; }

/* ---------- contenuto ---------- */
.contenuto { padding: 1.5rem 1.75rem 2rem; max-width: 1720px; }
.contenuto.senza-menu { margin: 0 auto; }
@media (max-width: 767.98px) { .contenuto { padding: 1rem; } .barra-alta { padding: 0 .75rem; } }
.contenuto > .d-flex:first-child h1, .contenuto > div:first-child > h1 { margin-bottom: 0; }

/* schede (card) */
.card { border: 1px solid var(--ga-bordo); border-radius: var(--ga-raggio); box-shadow: var(--ga-ombra); background: var(--ga-superficie); }
.card > .card-header { background: transparent; border-bottom: 1px solid var(--ga-bordo); font-weight: 600; padding: .8rem 1.1rem; }
.card-body { padding: 1.1rem 1.2rem; }
a.card { transition: box-shadow .15s, transform .15s; }
a.card:hover { box-shadow: var(--ga-ombra-su); transform: translateY(-1px); }

/* pulsanti */
.btn { font-weight: 500; }
.btn-primary { --bs-btn-bg: var(--ga-primario); --bs-btn-border-color: var(--ga-primario); --bs-btn-hover-bg: var(--ga-primario-scuro); --bs-btn-hover-border-color: var(--ga-primario-scuro); --bs-btn-active-bg: var(--ga-primario-scuro); }
.btn-outline-secondary { --bs-btn-border-color: var(--ga-bordo); --bs-btn-color: var(--bs-body-color); --bs-btn-hover-bg: var(--ga-sfondo); --bs-btn-hover-color: var(--bs-body-color); --bs-btn-hover-border-color: var(--bs-border-color); background: var(--ga-superficie); }
.btn .bi { margin-right: .15rem; }

/* tabelle */
.table { --bs-table-bg: transparent; margin-bottom: 0; }
.table > :not(caption) > * > * { padding: .62rem .8rem; border-bottom-color: var(--ga-bordo); }
.table thead th { background: var(--ga-testata-tabella); font-size: .74rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 600; color: var(--bs-secondary-color); white-space: nowrap; vertical-align: middle; }
.table-hover > tbody > tr:hover > * { --bs-table-bg-state: color-mix(in srgb, var(--ga-primario) 6%, transparent); }
.card > .table-responsive:first-child .table thead th:first-child, .card > .table:first-child thead th:first-child { border-top-left-radius: var(--ga-raggio); }
.card > .table-responsive:first-child .table thead th:last-child, .card > .table:first-child thead th:last-child { border-top-right-radius: var(--ga-raggio); }
td.text-end, th.text-end { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* campi */
.form-label { font-weight: 500; font-size: .85rem; margin-bottom: .3rem; }
.form-label.small { font-size: .82rem; }
.form-control, .form-select { border-color: var(--ga-bordo); }
[data-bs-theme="dark"] .form-control, [data-bs-theme="dark"] .form-select { background-color: #11161e; }
.form-control:focus, .form-select:focus { border-color: color-mix(in srgb, var(--ga-primario) 55%, transparent); box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--ga-primario) 18%, transparent); }
.form-text { font-size: .78rem; margin-top: .3rem; line-height: 1.35; }

/* ALLINEAMENTO dei moduli in riga (filtri): le descrizioni sotto i campi hanno
   lunghezze diverse, quindi i campi si allineano IN ALTO; le colonne che hanno
   solo un pulsante (senza etichetta) scendono dell'altezza di un'etichetta. */
.row.align-items-end { align-items: flex-start !important; }
.row.align-items-end > [class*="col"]:not(:has(label, .form-label)) { padding-top: calc(.82rem * 1.5 + .3rem); }
.row.align-items-end > [class*="col"]:not(:has(label, .form-label)) > .btn,
.row.align-items-end > [class*="col"]:not(:has(label, .form-label)) > .d-flex > .btn { min-height: calc(1.5em + .75rem + 2px); }

/* intestazione di pagina */
.contenuto > .d-flex.flex-wrap:first-of-type { padding-bottom: .25rem; }
.contenuto h1 .bi { color: var(--ga-primario); margin-right: .2rem; }
[data-bs-theme="dark"] .contenuto h1 .bi { color: #6ea2ff; }

/* KPI e riquadri */
.kpi .valore { font-size: 1.7rem; font-weight: 650; letter-spacing: -.02em; }
.badge { font-weight: 600; letter-spacing: .01em; }

/* avvisi */
.alert { border-radius: var(--ga-raggio); border-width: 1px; }
.avviso-tecnico { position: sticky; top: calc(var(--ga-alto) + .5rem); z-index: 1010; box-shadow: var(--ga-ombra-su); }

/* zone di trascinamento */
.zona-trascina { border: 2px dashed var(--ga-bordo); background: var(--ga-sfondo); transition: border-color .15s, background .15s; }
.zona-trascina.sopra, .zona-trascina:hover { border-color: var(--ga-primario); }

/* varie */
.campo-obbligatorio::after { content: " *"; color: var(--bs-danger); }
.permessi-area { break-inside: avoid; }
.dropdown-menu { border-color: var(--ga-bordo); box-shadow: var(--ga-ombra-su); border-radius: .6rem; padding: .35rem; }
.dropdown-item { border-radius: .4rem; padding: .4rem .7rem; }
.modal-content { border-radius: var(--ga-raggio); border-color: var(--ga-bordo); }
.nav-tabs .nav-link { font-weight: 500; }
footer { opacity: .7; }

/* Descrizioni sotto i campi: si nascondono se l'utente le ha spente dal profilo */
html[data-aiuti="no"] .aiuto-campo { display: none !important; }

/* ---------- menu del tasto destro ---------- */
.menu-contestuale {
  position: fixed; z-index: 2000; min-width: 230px; max-width: 340px; padding: .35rem;
  background: var(--ga-superficie); border: 1px solid var(--ga-bordo); border-radius: .6rem; box-shadow: 0 10px 30px rgba(16, 24, 40, .22);
  font-size: .88rem; user-select: none;
}
.menu-contestuale .voce { display: flex; align-items: center; gap: .6rem; width: 100%; padding: .42rem .65rem; border: 0; background: none; color: var(--bs-body-color); text-align: left; border-radius: .4rem; text-decoration: none; cursor: pointer; }
.menu-contestuale .voce:hover, .menu-contestuale .voce:focus { background: color-mix(in srgb, var(--ga-primario) 12%, transparent); outline: none; }
.menu-contestuale .voce .bi { width: 1.1rem; text-align: center; color: var(--bs-secondary-color); }
.menu-contestuale .voce.pericolo, .menu-contestuale .voce.pericolo .bi { color: var(--bs-danger); }
.menu-contestuale .voce .scorciatoia { margin-left: auto; font-size: .75rem; color: var(--bs-secondary-color); }
.menu-contestuale .titolo { padding: .35rem .65rem .2rem; font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--bs-secondary-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.menu-contestuale hr { margin: .3rem .2rem; border-color: var(--ga-bordo); opacity: 1; }
.avviso-copiato { position: fixed; bottom: 1.2rem; left: 50%; transform: translateX(-50%); z-index: 2001; background: #1d2433; color: #fff; padding: .5rem 1rem; border-radius: 2rem; font-size: .85rem; box-shadow: var(--ga-ombra-su); }

/* ---------- stampa ---------- */
@media print {
  .barra-laterale, .barra-alta, footer, .no-print { display: none !important; }
  .con-menu .area-principale { margin-left: 0 !important; }
  .card { box-shadow: none; border: 0; }
}
