/* ============================================================
   LAS — theme.css
   Estende Bootstrap 5.3 usando SOLO i token di tokens.css.
   Caricare dopo bootstrap.min.css e dopo tokens.css.
   Nessun build step, nessun framework aggiuntivo.
   ============================================================ */

/* ---------- 1. Ponte token → variabili Bootstrap ---------- */
:root, [data-bs-theme="light"], [data-bs-theme="dark"] {
  --bs-body-bg: var(--las-bg-body);
  --bs-body-color: var(--las-text);
  --bs-body-font-family: var(--las-font-sans);
  --bs-body-font-size: var(--las-fs-base);
  --bs-body-line-height: var(--las-lh-base);
  --bs-border-color: var(--las-border);
  --bs-border-radius: var(--las-radius-md);
  --bs-border-radius-sm: var(--las-radius-sm);
  --bs-border-radius-lg: var(--las-radius-lg);
  --bs-primary: var(--las-primary);
  --bs-primary-rgb: 20, 88, 108;
  --bs-danger: var(--las-state-scaduto);
  --bs-success: var(--las-state-pagato);
  --bs-warning: var(--las-state-attenzione);
  --bs-link-color: var(--las-primary-text);
  --bs-link-hover-color: var(--las-primary-hover);
  --bs-secondary-color: var(--las-text-muted);
}
[data-bs-theme="dark"] { --bs-primary-rgb: 61, 147, 171; }

a { color: var(--las-primary-text); text-decoration: none; }
a:hover { color: var(--las-primary-hover); text-decoration: underline; }

/* Focus visibile ovunque (AA) */
:focus-visible {
  outline: none;
  box-shadow: var(--las-focus-ring);
  border-radius: var(--las-radius-sm);
}

/* ---------- 2. Bottoni ---------- */
.btn { font-size: var(--las-fs-base); font-weight: var(--las-fw-medium); border-radius: var(--las-radius-md); }
.btn:focus-visible { box-shadow: var(--las-focus-ring); }
.btn-sm { font-size: var(--las-fs-sm); padding: 0.25rem 0.625rem; }

.btn-primary {
  --bs-btn-bg: var(--las-primary);
  --bs-btn-border-color: var(--las-primary);
  --bs-btn-hover-bg: var(--las-primary-hover);
  --bs-btn-hover-border-color: var(--las-primary-hover);
  --bs-btn-active-bg: var(--las-primary-active);
  --bs-btn-active-border-color: var(--las-primary-active);
  --bs-btn-disabled-bg: var(--las-gray-300);
  --bs-btn-disabled-border-color: var(--las-gray-300);
}
.btn-outline-secondary {
  --bs-btn-color: var(--las-gray-700);
  --bs-btn-border-color: var(--las-border-strong);
  --bs-btn-bg: var(--las-bg-surface);
  --bs-btn-hover-bg: var(--las-gray-100);
  --bs-btn-hover-color: var(--las-gray-900);
  --bs-btn-hover-border-color: var(--las-border-strong);
  --bs-btn-active-bg: var(--las-gray-200);
  --bs-btn-active-color: var(--las-gray-900);
  --bs-btn-active-border-color: var(--las-border-strong);
}
.btn-danger {
  --bs-btn-bg: var(--las-state-scaduto);
  --bs-btn-border-color: var(--las-state-scaduto);
  --bs-btn-hover-bg: #9a1e14;
  --bs-btn-hover-border-color: #9a1e14;
}
[data-bs-theme="dark"] .btn-danger { --bs-btn-hover-bg: var(--las-state-scaduto); }
.btn-ghost {
  --bs-btn-color: var(--las-gray-600);
  --bs-btn-bg: transparent;
  --bs-btn-border-color: transparent;
  --bs-btn-hover-bg: var(--las-gray-100);
  --bs-btn-hover-color: var(--las-gray-900);
  --bs-btn-active-bg: var(--las-gray-200);
}
/* Icona-azione di riga: quadrata, compatta, sempre visibile */
.btn-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.75rem; height: 1.75rem; padding: 0;
  color: var(--las-gray-500); background: transparent;
  border: 0; border-radius: var(--las-radius-sm); font-size: var(--las-fs-base);
}
.btn-icon:hover { background: var(--las-gray-100); color: var(--las-gray-900); }
.btn-icon.btn-icon-danger:hover { background: var(--las-state-scaduto-subtle); color: var(--las-state-scaduto); }

/* ---------- 3. Shell: sidebar + topbar + contenuto ---------- */
body.las-app { min-height: 100vh; }

.las-sidebar {
  position: fixed; inset: 0 auto 0 0; z-index: 1040;
  width: var(--las-sidebar-w);
  display: flex; flex-direction: column;
  background: var(--las-sidebar-bg); color: var(--las-sidebar-text);
  transition: width .15s ease;
}
.las-sidebar-brand {
  display: flex; align-items: center; gap: var(--las-sp-2);
  height: var(--las-topbar-h); flex: 0 0 auto;
  padding: 0 var(--las-sp-4);
  color: #fff; font-size: var(--las-fs-lg); font-weight: var(--las-fw-bold);
  letter-spacing: 0.04em; border-bottom: 1px solid var(--las-sidebar-border);
  white-space: nowrap; overflow: hidden;
}
.las-sidebar-brand .bi { color: var(--las-primary-border); font-size: 1.25rem; }
.las-sidebar-nav { flex: 1 1 auto; overflow-y: auto; padding: var(--las-sp-2) 0 var(--las-sp-4); }
.las-nav-heading {
  padding: var(--las-sp-3) var(--las-sp-4) var(--las-sp-1);
  font-size: var(--las-fs-xs); font-weight: var(--las-fw-semibold);
  text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--las-sidebar-heading); white-space: nowrap; overflow: hidden;
}
.las-nav-link {
  display: flex; align-items: center; gap: var(--las-sp-2);
  padding: 0.375rem var(--las-sp-4);
  background: transparent; /* annulla il buttonface UA sui <button> di sezione */
  color: var(--las-sidebar-text); font-size: var(--las-fs-base);
  text-decoration: none; white-space: nowrap; overflow: hidden;
  border-left: 3px solid transparent;
}
.las-nav-link .bi { font-size: 1rem; flex: 0 0 auto; width: 1.25rem; text-align: center; }
.las-nav-link:hover { background: var(--las-sidebar-bg-hover); color: #fff; text-decoration: none; }
.las-nav-link.active {
  background: var(--las-sidebar-bg-active); color: var(--las-sidebar-text-active);
  border-left-color: #fff; font-weight: var(--las-fw-medium);
}
.las-nav-sub .las-nav-link { padding-left: 2.75rem; font-size: var(--las-fs-sm); }
.las-nav-sub .las-nav-link .bi { display: none; }
.las-nav-toggle[aria-expanded="true"] .las-nav-caret { transform: rotate(90deg); }
.las-nav-caret { margin-left: auto; font-size: var(--las-fs-xs); transition: transform .1s; }
.las-sidebar-foot { flex: 0 0 auto; border-top: 1px solid var(--las-sidebar-border); }
.las-sidebar-foot .las-nav-link { border-left: 0; }

/* Sidebar collassata a icone */
body.las-sb-min .las-sidebar { width: var(--las-sidebar-w-min); }
body.las-sb-min .las-sidebar .las-nav-heading { padding: var(--las-sp-3) 0 var(--las-sp-1); text-align: center; font-size: 0.5625rem; }
body.las-sb-min .las-sidebar .las-nav-link { justify-content: center; padding-left: 0; padding-right: 0; }
body.las-sb-min .las-sidebar .las-nav-link .nav-label,
body.las-sb-min .las-sidebar .las-nav-caret,
body.las-sb-min .las-sidebar .las-nav-sub,
body.las-sb-min .las-sidebar-brand .brand-label { display: none; }
body.las-sb-min .las-sidebar-brand { justify-content: center; padding: 0; }
body.las-sb-min .las-main { margin-left: var(--las-sidebar-w-min); }

.las-main { margin-left: var(--las-sidebar-w); transition: margin-left .15s ease; }

/* Topbar */
.las-topbar {
  position: sticky; top: 0; z-index: 1030;
  display: flex; align-items: center; gap: var(--las-sp-4);
  height: var(--las-topbar-h); padding: 0 var(--las-sp-5);
  background: var(--las-bg-surface); border-bottom: 1px solid var(--las-border);
}
.las-topbar .breadcrumb { margin: 0; font-size: var(--las-fs-sm); }
.las-topbar .breadcrumb-item.active { color: var(--las-text); font-weight: var(--las-fw-medium); }
.las-global-search { position: relative; width: 340px; margin-left: auto; }
.las-global-search .bi-search {
  position: absolute; left: 0.625rem; top: 50%; transform: translateY(-50%);
  color: var(--las-gray-400); font-size: var(--las-fs-sm); pointer-events: none;
}
.las-global-search .form-control {
  padding-left: 2rem; font-size: var(--las-fs-sm);
  background: var(--las-bg-sunken); height: 2rem;
}
.las-topbar-icon {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 2.125rem; height: 2.125rem; border: 0; border-radius: var(--las-radius-md);
  background: transparent; color: var(--las-gray-600); font-size: 1.125rem;
}
.las-topbar-icon:hover { background: var(--las-gray-100); color: var(--las-gray-900); }
.las-topbar-icon .las-notif-dot {
  position: absolute; top: 4px; right: 4px; min-width: 15px; height: 15px;
  padding: 0 3px; border-radius: 8px;
  background: var(--las-state-scaduto); color: #fff;
  font-size: 0.625rem; font-weight: var(--las-fw-bold); line-height: 15px; text-align: center;
}
.las-company-select { max-width: 200px; font-size: var(--las-fs-sm); height: 2rem; padding-block: 0.2rem; }

/* Area contenuto */
.las-content { padding: var(--las-sp-5); }
.las-page-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--las-sp-4); margin-bottom: var(--las-sp-4); flex-wrap: wrap;
}
.las-page-title { margin: 0; font-size: var(--las-fs-xl); font-weight: var(--las-fw-semibold); line-height: var(--las-lh-tight); }
.las-page-title small { display: block; margin-top: 2px; font-size: var(--las-fs-sm); font-weight: var(--las-fw-normal); color: var(--las-text-muted); }
.las-page-actions { display: flex; gap: var(--las-sp-2); flex-wrap: wrap; }

/* ---------- 4. Card e pannelli ---------- */
.card { background: var(--las-bg-surface); border: 1px solid var(--las-border); border-radius: var(--las-radius-lg); box-shadow: var(--las-shadow-sm); }
.card-header {
  background: transparent; border-bottom: 1px solid var(--las-border);
  padding: var(--las-sp-3) var(--las-sp-4);
  font-size: var(--las-fs-md); font-weight: var(--las-fw-semibold);
}
.card-body { padding: var(--las-sp-4); }

/* KPI card: numeri operativi cliccabili */
.las-kpi {
  display: block; padding: var(--las-sp-4);
  background: var(--las-bg-surface); border: 1px solid var(--las-border);
  border-radius: var(--las-radius-lg); box-shadow: var(--las-shadow-sm);
  color: inherit; text-decoration: none;
}
.las-kpi:hover { border-color: var(--las-primary-border); box-shadow: var(--las-shadow-md); color: inherit; text-decoration: none; }
.las-kpi-label { display: flex; align-items: center; gap: var(--las-sp-2); font-size: var(--las-fs-sm); color: var(--las-text-muted); font-weight: var(--las-fw-medium); }
.las-kpi-label .bi { color: var(--las-primary); }
.las-kpi-value { display: block; margin-top: var(--las-sp-1); font-size: var(--las-fs-2xl); font-weight: var(--las-fw-bold); line-height: var(--las-lh-tight); font-variant-numeric: tabular-nums; }
.las-kpi-sub { display: block; margin-top: var(--las-sp-1); font-size: var(--las-fs-xs); color: var(--las-text-muted); }
.las-kpi.kpi-alert .las-kpi-value { color: var(--las-state-scaduto); }
.las-kpi.kpi-alert .las-kpi-label .bi { color: var(--las-state-scaduto); }

/* ---------- 5. Barra filtri elenco ---------- */
.las-filters {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--las-sp-3);
  padding: var(--las-sp-3) var(--las-sp-4); margin-bottom: var(--las-sp-4);
  background: var(--las-bg-surface); border: 1px solid var(--las-border);
  border-radius: var(--las-radius-lg);
}
.las-filters .form-label { margin-bottom: 2px; font-size: var(--las-fs-xs); font-weight: var(--las-fw-semibold); color: var(--las-text-muted); text-transform: uppercase; letter-spacing: 0.03em; }
.las-filters .form-control, .las-filters .form-select { font-size: var(--las-fs-sm); height: 2rem; padding-block: 0.2rem; }
.las-filter-field { min-width: 130px; }

/* ---------- 6. Tabelle dense + DataTables ---------- */
.las-table-card { overflow: hidden; }
.las-table-card .card-body { padding: 0; }

.table.las-table {
  margin: 0; font-size: var(--las-fs-sm);
  --bs-table-bg: var(--las-bg-surface);
  --bs-table-color: var(--las-text);
  --bs-table-border-color: var(--las-border);
  --bs-table-hover-bg: var(--las-gray-50);
  --bs-table-hover-color: var(--las-text);
}
.las-table > thead > tr > th {
  padding: var(--las-sp-2) var(--las-row-px);
  font-size: var(--las-fs-xs); font-weight: var(--las-fw-semibold);
  text-transform: uppercase; letter-spacing: 0.04em;
  color: var(--las-text-muted); background: var(--las-bg-sunken);
  border-bottom: 1px solid var(--las-border-strong); white-space: nowrap;
}
.las-table > tbody > tr > td {
  padding: var(--las-row-py) var(--las-row-px);
  vertical-align: middle; line-height: var(--las-lh-tight);
}
.las-table > tbody > tr:focus-within { background: var(--las-primary-subtle); }
.las-table tr.las-row-selected > td { background: var(--las-primary-subtle); box-shadow: inset 3px 0 0 var(--las-primary); }
.las-table tr.las-row-overdue > td { background: var(--las-state-scaduto-subtle); }
.las-table td.num, .las-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
.las-table .las-doc-num { font-weight: var(--las-fw-semibold); }
.las-cell-sub { display: block; font-size: var(--las-fs-xs); color: var(--las-text-muted); }
.las-row-actions { display: flex; gap: 2px; justify-content: flex-end; white-space: nowrap; }
.las-thumb { width: 34px; height: 34px; object-fit: cover; border-radius: var(--las-radius-sm); border: 1px solid var(--las-border); background: var(--las-gray-100); }
.las-thumb-ph { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: var(--las-radius-sm); border: 1px dashed var(--las-border-strong); color: var(--las-gray-400); background: var(--las-gray-50); }

/* Overrides DataTables (tema Bootstrap 5) */
.dt-container { padding: var(--las-sp-3) var(--las-sp-4); }
.dt-container .dt-search input, .dt-container .dt-length select { font-size: var(--las-fs-sm); }
.dt-container .dt-info { font-size: var(--las-fs-xs); color: var(--las-text-muted); padding-top: var(--las-sp-3); }
.dt-container .dt-paging { padding-top: var(--las-sp-2); }
table.dataTable > thead > tr > th { border-bottom-color: var(--las-border-strong) !important; }

/* Paginazione */
.pagination { --bs-pagination-font-size: var(--las-fs-sm); --bs-pagination-padding-y: 0.25rem; --bs-pagination-padding-x: 0.625rem;
  --bs-pagination-color: var(--las-gray-700); --bs-pagination-bg: var(--las-bg-surface);
  --bs-pagination-border-color: var(--las-border);
  --bs-pagination-hover-bg: var(--las-gray-100); --bs-pagination-hover-color: var(--las-gray-900); --bs-pagination-hover-border-color: var(--las-border);
  --bs-pagination-active-bg: var(--las-primary); --bs-pagination-active-border-color: var(--las-primary);
  --bs-pagination-disabled-bg: var(--las-bg-surface); --bs-pagination-disabled-color: var(--las-gray-400); --bs-pagination-disabled-border-color: var(--las-border);
  margin: 0;
}

/* ---------- 7. Badge di stato ---------- */
.las-badge {
  display: inline-flex; align-items: center; gap: 0.3em;
  padding: 0.125rem 0.5rem; border-radius: 999px;
  font-size: var(--las-fs-xs); font-weight: var(--las-fw-semibold); line-height: 1.4;
  white-space: nowrap;
}
.las-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.las-badge-bozza       { color: var(--las-state-bozza);       background: var(--las-state-bozza-subtle); }
.las-badge-confermato  { color: var(--las-state-confermato);  background: var(--las-state-confermato-subtle); }
.las-badge-pagato      { color: var(--las-state-pagato);      background: var(--las-state-pagato-subtle); }
.las-badge-scaduto     { color: var(--las-state-scaduto);     background: var(--las-state-scaduto-subtle); }
.las-badge-trasformato { color: var(--las-state-trasformato); background: var(--las-state-trasformato-subtle); }
.las-badge-attenzione  { color: var(--las-state-attenzione);  background: var(--las-state-attenzione-subtle); }
.las-badge-neutro      { color: var(--las-gray-600); background: var(--las-gray-100); }
.las-badge-neutro::before { display: none; }

/* ---------- 8. Form ---------- */
.form-label { margin-bottom: 0.2rem; font-size: var(--las-fs-sm); font-weight: var(--las-fw-medium); color: var(--las-gray-700); }
.form-label .req { color: var(--las-state-scaduto); }
.form-control, .form-select {
  font-size: var(--las-fs-base); border-color: var(--las-border-strong);
  border-radius: var(--las-radius-md); background-color: var(--las-bg-surface); color: var(--las-text);
}
.form-control:focus, .form-select:focus { border-color: var(--las-primary); box-shadow: var(--las-focus-ring); }
.form-control:disabled, .form-select:disabled { background: var(--las-gray-100); color: var(--las-text-muted); }
.form-control.is-invalid, .form-select.is-invalid { border-color: var(--las-state-scaduto); }
.form-control.is-invalid:focus { box-shadow: 0 0 0 3px var(--las-state-scaduto-subtle); }
.invalid-feedback { font-size: var(--las-fs-xs); color: var(--las-state-scaduto); }
.form-text { font-size: var(--las-fs-xs); color: var(--las-text-muted); }
.form-check-input:checked { background-color: var(--las-primary); border-color: var(--las-primary); }
.input-group-text { font-size: var(--las-fs-sm); background: var(--las-bg-sunken); border-color: var(--las-border-strong); color: var(--las-text-muted); }

/* ---------- 9. Autocomplete con risultati ricchi ---------- */
.las-ac { position: relative; }
.las-ac-menu {
  position: absolute; z-index: 1060; inset: calc(100% + 2px) 0 auto 0;
  max-height: 300px; overflow-y: auto;
  background: var(--las-bg-surface); border: 1px solid var(--las-border-strong);
  border-radius: var(--las-radius-md); box-shadow: var(--las-shadow-lg);
}
.las-ac-item {
  display: grid; grid-template-columns: auto 1fr auto; gap: var(--las-sp-3);
  align-items: baseline; padding: var(--las-sp-2) var(--las-sp-3);
  font-size: var(--las-fs-sm); cursor: pointer;
}
.las-ac-item + .las-ac-item { border-top: 1px solid var(--las-border); }
.las-ac-item:hover, .las-ac-item.active { background: var(--las-primary-subtle); }
.las-ac-code { font-family: var(--las-font-mono); font-size: var(--las-fs-xs); color: var(--las-primary-text); font-weight: var(--las-fw-semibold); }
.las-ac-desc { min-width: 0; }
.las-ac-desc small { display: block; color: var(--las-text-muted); font-size: var(--las-fs-xs); }
.las-ac-price { font-variant-numeric: tabular-nums; font-weight: var(--las-fw-semibold); }
.las-ac-empty { padding: var(--las-sp-3); font-size: var(--las-fs-sm); color: var(--las-text-muted); text-align: center; }

/* ---------- 10. Pagina documento ---------- */
.las-doc-grid { display: grid; grid-template-columns: 1fr 320px; gap: var(--las-sp-4); align-items: start; }
.las-doc-grid > * { min-width: 0; } /* consente alla colonna 1fr di restringersi sotto la larghezza del contenuto */
.las-doc-side { position: sticky; top: calc(var(--las-topbar-h) + var(--las-sp-4)); display: flex; flex-direction: column; gap: var(--las-sp-4); }
.las-fieldset-title {
  margin: 0 0 var(--las-sp-3); font-size: var(--las-fs-xs); font-weight: var(--las-fw-semibold);
  text-transform: uppercase; letter-spacing: 0.06em; color: var(--las-text-muted);
}

/* Griglia righe editabile */
.las-righe { font-size: var(--las-fs-sm); }
.las-righe .form-control, .las-righe .form-select {
  height: 1.875rem; padding: 0.125rem 0.375rem; font-size: var(--las-fs-sm);
  border-color: transparent; background: transparent; border-radius: var(--las-radius-sm);
}
.las-righe .form-control:hover, .las-righe .form-select:hover { border-color: var(--las-border-strong); background: var(--las-bg-surface); }
.las-righe .form-control:focus, .las-righe .form-select:focus { border-color: var(--las-primary); background: var(--las-bg-surface); box-shadow: var(--las-focus-ring); }
.las-righe .drag-handle { cursor: grab; color: var(--las-gray-300); text-align: center; }
.las-righe tr:hover .drag-handle { color: var(--las-gray-500); }
.las-riga-nuova > td { background: var(--las-bg-sunken); border-top: 2px dashed var(--las-border-strong); }
.las-riga-totale { font-weight: var(--las-fw-semibold); font-variant-numeric: tabular-nums; text-align: right; }

/* Riquadro totali */
.las-totali { font-size: var(--las-fs-sm); font-variant-numeric: tabular-nums; }
.las-totali .row-line { display: flex; justify-content: space-between; padding: 0.25rem 0; }
.las-totali .row-line.muted { color: var(--las-text-muted); }
.las-totali .row-total {
  display: flex; justify-content: space-between; margin-top: var(--las-sp-2); padding-top: var(--las-sp-2);
  border-top: 2px solid var(--las-border-strong);
  font-size: var(--las-fs-lg); font-weight: var(--las-fw-bold);
}

/* Barra azioni documento (sticky in basso) */
.las-doc-actions {
  position: sticky; bottom: 0; z-index: 1020;
  display: flex; align-items: center; gap: var(--las-sp-2);
  margin-top: var(--las-sp-4); padding: var(--las-sp-3) var(--las-sp-4);
  background: var(--las-bg-surface); border: 1px solid var(--las-border);
  border-radius: var(--las-radius-lg); box-shadow: var(--las-shadow-md);
}

/* ---------- 11. Tab ---------- */
.nav-tabs { --bs-nav-tabs-border-color: var(--las-border); --bs-nav-tabs-link-active-border-color: var(--las-border) var(--las-border) var(--las-bg-surface); font-size: var(--las-fs-base); }
.nav-tabs .nav-link { color: var(--las-text-muted); font-weight: var(--las-fw-medium); padding: 0.4rem 0.875rem; }
.nav-tabs .nav-link:hover { color: var(--las-text); border-color: transparent; }
.nav-tabs .nav-link.active { color: var(--las-primary-text); background: var(--las-bg-surface); font-weight: var(--las-fw-semibold); box-shadow: inset 0 2px 0 var(--las-primary); }
.nav-tabs .nav-link .badge-count { margin-left: 0.375rem; padding: 0 0.375rem; border-radius: 999px; background: var(--las-gray-100); color: var(--las-gray-600); font-size: var(--las-fs-xs); }

/* ---------- 12. Modali, offcanvas, toast ---------- */
.modal-content { background: var(--las-bg-surface); border: 1px solid var(--las-border); border-radius: var(--las-radius-lg); box-shadow: var(--las-shadow-lg); }
.modal-header { padding: var(--las-sp-4); border-bottom: 1px solid var(--las-border); }
.modal-title { font-size: var(--las-fs-lg); font-weight: var(--las-fw-semibold); }
.modal-footer { padding: var(--las-sp-3) var(--las-sp-4); border-top: 1px solid var(--las-border); }
.las-modal-danger-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2.5rem; height: 2.5rem; border-radius: 50%;
  background: var(--las-state-scaduto-subtle); color: var(--las-state-scaduto); font-size: 1.25rem;
}
.offcanvas { background: var(--las-bg-surface); }

.toast { background: var(--las-bg-surface); border: 1px solid var(--las-border); border-radius: var(--las-radius-md); box-shadow: var(--las-shadow-lg); font-size: var(--las-fs-base); }
.toast .toast-body { display: flex; align-items: center; gap: var(--las-sp-2); }
.toast.las-toast-ok { border-left: 3px solid var(--las-state-pagato); }
.toast.las-toast-ok .bi { color: var(--las-state-pagato); }
.toast.las-toast-err { border-left: 3px solid var(--las-state-scaduto); }
.toast.las-toast-err .bi { color: var(--las-state-scaduto); }

/* ---------- 13. Empty state ---------- */
.las-empty { padding: var(--las-sp-8) var(--las-sp-4); text-align: center; color: var(--las-text-muted); }
.las-empty .bi { font-size: 2rem; color: var(--las-gray-300); }
.las-empty h6 { margin: var(--las-sp-3) 0 var(--las-sp-1); color: var(--las-text); font-weight: var(--las-fw-semibold); font-size: var(--las-fs-md); }
.las-empty p { margin: 0 0 var(--las-sp-4); font-size: var(--las-fs-sm); }

/* ---------- 14. Scadenzario ---------- */
.las-week-head {
  padding: var(--las-sp-2) var(--las-row-px);
  background: var(--las-gray-100); font-size: var(--las-fs-xs);
  font-weight: var(--las-fw-semibold); text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--las-gray-600);
}
.las-cal { font-size: var(--las-fs-sm); }
.las-cal table { width: 100%; text-align: center; border-collapse: collapse; }
.las-cal th { font-size: var(--las-fs-xs); color: var(--las-text-muted); font-weight: var(--las-fw-semibold); padding: 0.25rem 0; }
.las-cal td { padding: 0; }
.las-cal .cal-day {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.875rem; height: 1.875rem; margin: 1px; border-radius: var(--las-radius-sm);
  color: var(--las-text); text-decoration: none;
}
.las-cal .cal-day:hover { background: var(--las-gray-100); }
.las-cal .cal-day.other { color: var(--las-gray-300); }
.las-cal .cal-day.today { background: var(--las-primary); color: #fff; font-weight: var(--las-fw-semibold); }
.las-cal .cal-day.has-due { box-shadow: inset 0 -3px 0 var(--las-state-attenzione); }
.las-cal .cal-day.has-overdue { box-shadow: inset 0 -3px 0 var(--las-state-scaduto); }

/* ---------- 15. Anteprima di stampa ---------- */
.las-pdf-viewer { background: var(--las-gray-700); border-radius: var(--las-radius-md); padding: var(--las-sp-5); max-height: 70vh; overflow: auto; }
.las-pdf-page { width: 100%; max-width: 640px; margin: 0 auto; aspect-ratio: 210/297; background: #fff; box-shadow: var(--las-shadow-lg); }

/* ---------- 16. Login ---------- */
.las-login-body { display: grid; place-items: center; min-height: 100vh; background: var(--las-bg-body); }
.las-login-card { width: 100%; max-width: 400px; }
.las-login-brand { display: flex; align-items: center; justify-content: center; gap: var(--las-sp-2); margin-bottom: var(--las-sp-5); font-size: 1.5rem; font-weight: var(--las-fw-bold); letter-spacing: 0.05em; color: var(--las-primary-text); }

/* ---------- 17. Utilità ---------- */
.mono { font-family: var(--las-font-mono); font-size: 0.9em; }
.text-muted { color: var(--las-text-muted) !important; }
.las-dl { display: grid; grid-template-columns: auto 1fr; gap: 0.25rem var(--las-sp-4); font-size: var(--las-fs-sm); margin: 0; }
.las-dl dt { color: var(--las-text-muted); font-weight: var(--las-fw-normal); }
.las-dl dd { margin: 0; font-weight: var(--las-fw-medium); }
.las-amount-neg { color: var(--las-state-scaduto); }
.las-amount-pos { color: var(--las-state-pagato); }

/* ---------- 18. Responsive ---------- */
@media (max-width: 1100px) {
  .las-doc-grid { grid-template-columns: 1fr; }
  .las-doc-side { position: static; }
  .las-global-search { width: 220px; }
}
@media (max-width: 991.98px) {
  /* Sotto i 992px la sidebar diventa a icone; sotto i 768 è nascosta e si apre da pulsante hamburger */
  body:not(.las-sb-open) .las-sidebar { width: var(--las-sidebar-w-min); }
  body:not(.las-sb-open) .las-main { margin-left: var(--las-sidebar-w-min); }
  body:not(.las-sb-open) .las-sidebar .las-nav-heading { padding: var(--las-sp-3) 0 var(--las-sp-1); text-align: center; font-size: 0.5625rem; }
  body:not(.las-sb-open) .las-sidebar .las-nav-link { justify-content: center; padding-left: 0; padding-right: 0; }
  body:not(.las-sb-open) .las-sidebar .las-nav-link .nav-label,
  body:not(.las-sb-open) .las-sidebar .las-nav-caret,
  body:not(.las-sb-open) .las-sidebar .las-nav-sub,
  body:not(.las-sb-open) .las-sidebar-brand .brand-label { display: none; }
  body:not(.las-sb-open) .las-sidebar-brand { justify-content: center; padding: 0; }
  .las-table-responsive { overflow-x: auto; }
}
@media (max-width: 767.98px) {
  .las-sidebar { transform: translateX(-100%); transition: transform .15s ease; }
  body.las-sb-open .las-sidebar { transform: none; width: var(--las-sidebar-w); }
  .las-main { margin-left: 0 !important; }
  .las-content { padding: var(--las-sp-3); }
}
