:root {
    --sidebar-width: 278px;
    --sidebar-bg: #0f1720;
    --sidebar-bg-soft: #162231;
    --sidebar-border: rgba(255, 255, 255, 0.08);
    --sidebar-text: #cbd5e1;
    --sidebar-muted: #8291a5;
    --accent: #1d8cf8;
    --page-bg: #f3f6fa;
    --card-border: #e3e9f0;
    --table-head: #f7f9fc;
    --text-main: #172033;
    --text-muted: #6e7c8f;
}

html, body { min-height: 100%; }
body {
    margin: 0;
    background: var(--page-bg);
    color: var(--text-main);
    font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    -webkit-font-smoothing: antialiased;
}

.app-shell { min-height: 100vh; }
.sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 1040;
    display: flex;
    flex-direction: column;
    width: var(--sidebar-width);
    min-height: 100vh;
    overflow-y: auto;
    color: var(--sidebar-text);
    background: var(--sidebar-bg);
    border-right: 1px solid var(--sidebar-border);
    transition: transform .25s ease;
}
.sidebar-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 78px;
    padding: 18px 20px;
    color: #fff;
    text-decoration: none;
    border-bottom: 1px solid var(--sidebar-border);
}
.sidebar-brand:hover { color: #fff; }
.brand-mark {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    border-radius: 13px;
    color: #fff;
    background: var(--accent);
    box-shadow: 0 10px 24px rgba(29,140,248,.24);
}
.brand-title { display:block; font-size:1rem; font-weight:700; line-height:1.2; }
.brand-subtitle { display:block; margin-top:3px; color:var(--sidebar-muted); font-size:.78rem; }
.sidebar-nav { flex:1; padding:18px 14px; }
.nav-section-title {
    margin: 18px 10px 7px;
    color: var(--sidebar-muted);
    font-size: .69rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.nav-section-title:first-child { margin-top:0; }
.sidebar-link {
    display:flex;
    align-items:center;
    gap:12px;
    min-height:44px;
    margin-bottom:4px;
    padding:10px 12px;
    color:var(--sidebar-text);
    text-decoration:none;
    border:1px solid transparent;
    border-radius:11px;
    transition:background-color .18s ease,color .18s ease,border-color .18s ease;
}
.sidebar-link i { width:21px; flex:0 0 21px; font-size:1.05rem; text-align:center; }
.sidebar-link:hover { color:#fff; background:var(--sidebar-bg-soft); border-color:var(--sidebar-border); }
.sidebar-link.active { color:#fff; background:rgba(29,140,248,.18); border-color:rgba(29,140,248,.38); box-shadow:inset 3px 0 0 var(--accent); }
.sidebar-footer { padding:15px; border-top:1px solid var(--sidebar-border); }
.user-panel { display:flex; align-items:center; gap:11px; margin-bottom:12px; padding:11px; border-radius:12px; background:rgba(255,255,255,.045); }
.user-avatar { display:grid; place-items:center; width:38px; height:38px; flex:0 0 38px; border-radius:50%; color:#fff; background:var(--accent); font-weight:700; }
.user-details { min-width:0; }
.user-details strong,.user-details span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.user-details strong { color:#fff; font-size:.88rem; }
.user-details span { margin-top:2px; color:var(--sidebar-muted); font-size:.74rem; }
.logout-link { display:flex; align-items:center; justify-content:center; gap:8px; min-height:40px; color:#ffb4b4; text-decoration:none; border:1px solid rgba(255,93,93,.22); border-radius:10px; background:rgba(255,93,93,.08); }
.logout-link:hover { color:#fff; background:rgba(255,93,93,.18); }

.main-area { min-height:100vh; margin-left:var(--sidebar-width); }
.topbar { position:sticky; top:0; z-index:1020; display:flex; align-items:center; justify-content:space-between; min-height:70px; padding:0 26px; background:rgba(255,255,255,.94); border-bottom:1px solid var(--card-border); backdrop-filter:blur(10px); }
.topbar-title { margin:0; font-size:1.05rem; font-weight:700; }
.topbar-subtitle { margin-top:2px; color:#7b8798; font-size:.76rem; }
.sidebar-toggle { display:none; width:42px; height:42px; padding:0; border:1px solid var(--card-border); border-radius:10px; background:#fff; }
.content { width:100%; padding:26px; }

/* Superficie e gerarchia visiva uniforme */
.card { border-color:var(--card-border)!important; border-radius:14px!important; box-shadow:0 4px 18px rgba(20,34,55,.045); }
.card-header { min-height:52px; display:flex; align-items:center; border-color:var(--card-border); }
.card-header.bg-light,.card-header.bg-white { background:#fff!important; }
.alert { border-radius:11px; }
.btn { border-radius:9px; font-weight:500; }
.btn-sm { border-radius:8px; }
.form-control,.form-select { min-height:43px; border-color:#d7e0ea; border-radius:9px; }
.form-control:focus,.form-select:focus { border-color:rgba(29,140,248,.7); box-shadow:0 0 0 .2rem rgba(29,140,248,.12); }
.form-label { color:#425066; font-size:.84rem; font-weight:650; }
.form-text { color:#7c8898; }
.modal-content { border:0; border-radius:16px; box-shadow:0 24px 70px rgba(15,23,32,.22); overflow:hidden; }
.modal-header,.modal-footer { border-color:var(--card-border); }
.badge { font-weight:600; }

/* Titoli pagina: rende uniformi anche le viste storiche meno recenti */
.content > h1,.content > h2,.content > h3,.content > h4 { margin-bottom:1rem; font-weight:700; }
.app-page-header { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:24px; }
.app-page-header h1,.app-page-header h2,.app-page-header h3 { margin:0 0 4px; font-weight:750; }
.app-page-header p { margin:0; color:var(--text-muted); }

/* Tabelle: standard unico */
.table-responsive { border-radius:0 0 14px 14px; }
table.table { margin-bottom:0; background:#fff; }
.table > :not(caption) > * > * { padding:.78rem .82rem; vertical-align:middle; border-color:#e8edf3; }
.table thead th {
    position:relative;
    background:var(--table-head)!important;
    color:#526174!important;
    font-size:.75rem!important;
    font-weight:750!important;
    letter-spacing:.025em;
    text-transform:uppercase;
    white-space:nowrap;
    border-bottom:1px solid #dfe6ee!important;
}
.table tbody tr { transition:background-color .12s ease; }
.table-hover > tbody > tr:hover > * { --bs-table-bg-state:#f8fbff; }
.table th.app-sortable { cursor:pointer; user-select:none; padding-right:2rem!important; }
.table th.app-sortable:hover { color:#1d6fc0!important; background:#eef6ff!important; }
.table th.app-sortable:focus-visible { outline:2px solid rgba(29,140,248,.5); outline-offset:-2px; }
.app-sort-icon { position:absolute; right:.72rem; top:50%; transform:translateY(-50%); color:#9aa8b9; font-size:.86rem; }
.table th[aria-sort="ascending"] .app-sort-icon,
.table th[aria-sort="descending"] .app-sort-icon { color:var(--accent); }
.table th[aria-sort="ascending"] { color:#1d6fc0!important; }
.table th[aria-sort="descending"] { color:#1d6fc0!important; }
.app-table-footer { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border-top:1px solid var(--card-border); background:#fff; }
.app-pagination-info { color:var(--text-muted); font-size:.82rem; }
.app-pagination-controls { display:flex; align-items:center; gap:6px; }
.app-pagination-controls .btn { min-width:36px; }
.app-page-size { width:auto; min-height:34px; padding-top:.25rem; padding-bottom:.25rem; font-size:.82rem; }

/* Filtri */
.app-filter-form,.card-body > form[method="GET"] { background:#fff; }
.app-filter-form .form-label,.card-body > form[method="GET"] .form-label { margin-bottom:.35rem; }

/* Toast */
.app-toast-container { position:fixed; top:86px; right:18px; z-index:1090; width:min(390px,calc(100vw - 36px)); }
.app-toast { border:1px solid var(--card-border); border-radius:12px; background:#fff; box-shadow:0 16px 45px rgba(15,23,32,.16); }

/* Modale globale conferma/avviso */
.app-confirm-icon { display:grid; place-items:center; width:48px; height:48px; flex:0 0 48px; border-radius:14px; font-size:1.4rem; }
.app-confirm-icon.warning { color:#986b00; background:#fff5cf; }
.app-confirm-icon.danger { color:#b42318; background:#fee4e2; }
.app-confirm-icon.info { color:#175cd3; background:#eaf2ff; }

/* Login */
.app-login-body { background:radial-gradient(circle at top right,#e8f3ff 0,#f3f6fa 34%,#eef2f7 100%); }
.app-login-card { border-radius:20px!important; }
.app-login-mark { display:grid; place-items:center; width:54px; height:54px; border-radius:16px; color:#fff; background:var(--accent); box-shadow:0 12px 30px rgba(29,140,248,.28); font-size:1.5rem; }

/* Diagnostica */
.diag-status { display:inline-flex; align-items:center; gap:6px; }
.diag-dot { width:9px; height:9px; border-radius:50%; background:currentColor; }

.mobile-overlay { position:fixed; inset:0; z-index:1035; display:none; background:rgba(2,8,23,.55); }

@media (max-width:991.98px) {
    .sidebar { transform:translateX(-100%); }
    body.sidebar-open .sidebar { transform:translateX(0); }
    body.sidebar-open .mobile-overlay { display:block; }
    .main-area { margin-left:0; }
    .sidebar-toggle { display:inline-grid; place-items:center; }
    .topbar { padding:0 16px; }
    .topbar-left { display:flex; align-items:center; gap:12px; }
    .content { padding:20px 16px; }
}

@media (max-width:767.98px) {
    .content { padding:16px 12px; }
    .table > :not(caption) > * > * { padding:.67rem .65rem; }
    .app-table-footer { align-items:flex-start; }
}

@media print {
    .sidebar,.topbar,.mobile-overlay,.app-table-footer,.app-toast-container { display:none!important; }
    .main-area { margin-left:0!important; }
    .content { padding:0!important; }
    .card { box-shadow:none!important; }
}

/* Revisione 18 funzioni - topbar e componenti operativi */
.topbar-actions{display:flex;align-items:center;gap:8px}.topbar-search{align-items:center;gap:8px;width:260px;padding:0 12px;border:1px solid var(--card-border);border-radius:10px;background:#fff;height:40px}.topbar-search i{color:#7c8898}.topbar-search input{width:100%;border:0;outline:0;background:transparent;font-size:.88rem}.topbar-icon-btn{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;color:#526174;text-decoration:none;border:1px solid var(--card-border);border-radius:10px;background:#fff}.topbar-icon-btn:hover{color:var(--accent);background:#f8fbff}.topbar-badge{position:absolute;right:-5px;top:-6px;display:grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#dc3545;color:#fff;font-size:.65rem;font-weight:700;border:2px solid #fff}.app-progress-thin{height:8px;border-radius:99px}.app-group-card{border:1px solid var(--card-border);border-radius:14px;background:#fff}.app-group-card+.app-group-card{margin-top:14px}.app-child-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}.app-child-card{border:1px solid #e3e9f0;border-radius:12px;padding:14px;background:#fbfcfe}.app-child-card.approved{border-color:#b7e4c7;background:#f4fbf6}.app-child-card.pending{border-color:#cfe4ff;background:#f7fbff}.app-bulk-bar{position:sticky;bottom:12px;z-index:1010;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #d9e3ee;border-radius:12px;background:rgba(255,255,255,.96);box-shadow:0 14px 34px rgba(15,23,32,.14);backdrop-filter:blur(8px)}
@media(max-width:767.98px){.topbar-actions .badge{display:none!important}.topbar-search{display:none!important}.app-bulk-bar{align-items:flex-start;flex-direction:column}}
