:root{--brand: #10b981;--brand-hover: #059669;--brand-soft: #d1fae5;--brand-strong: #065f46;--sidebar-bg: #064e3b;--sidebar-hover: #047857;--sidebar-divider: #047857;--sidebar-text: #d1fae5;--sidebar-active-bd: #34d399;--sidebar-group-lbl: #6ee7b7;--link-cross: #a7f3d0;--bg: #f6f7f9;--surface: #ffffff;--text: #1a1d21;--text-muted: #6b7280;--text-faint: #9ca3af;--border: #e5e7eb;--border-soft: #f0f1f3;--border-strong: #cbd0d6;--row-hover: #f9fafb;--success: #15803d;--success-bg: #dcfce7;--success-text: #166534;--warn: #b45309;--warn-bg: #fef3c7;--warn-text: #92400e;--info: #1d4ed8;--accent: #7c3aed;--danger: #dc2626;--danger-hover: #b91c1c;--danger-bg: #fee2e2;--danger-text: #991b1b;--radius-sm: 4px;--radius: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 2px rgba(0,0,0,.04);--shadow: 0 2px 6px rgba(0,0,0,.08);--shadow-lg: 0 4px 12px rgba(0,0,0,.15)}*{box-sizing:border-box}body,html,#root{margin:0;padding:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;padding:6px 8px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface)}input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);outline-offset:-1px}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--sidebar-bg);color:#f5f6f7;padding:16px 0}.sidebar h1{font-size:16px;padding:0 16px 16px;margin:0;border-bottom:1px solid var(--sidebar-divider)}.sidebar nav{display:flex;flex-direction:column}.sidebar nav a{padding:10px 16px;color:var(--sidebar-text)}.sidebar nav a.active{background:var(--sidebar-hover);color:#fff;border-left:3px solid var(--sidebar-active-bd);padding-left:13px}.sidebar nav a:hover{background:var(--sidebar-hover)}.sidebar .nav-group-label{font-size:10px;letter-spacing:1.2px;text-transform:uppercase;color:var(--sidebar-group-lbl);padding:14px 16px 6px;margin-top:6px;border-top:1px solid var(--sidebar-divider)}.sidebar .nav-group-label:first-of-type{margin-top:8px}.sidebar .nav-cross{padding:16px;margin-top:16px;border-top:1px solid var(--sidebar-divider);font-size:12px}.sidebar .nav-cross a{color:var(--link-cross)}.main{flex:1;display:flex;flex-direction:column}.topbar{background:var(--surface);padding:10px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-size:13px}.topbar .status-on{color:var(--success)}.topbar .status-off{color:var(--danger-hover)}.content{padding:20px;flex:1;overflow:auto}.btn{background:var(--brand);color:#fff;border:none;padding:7px 14px;border-radius:var(--radius-sm)}.btn:hover{background:var(--brand-hover)}.btn-secondary{background:var(--border);color:#1f2937}.btn-secondary:hover{background:#d1d5db}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}th,td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border-soft)}th{background:var(--row-hover);font-weight:600;font-size:13px;color:var(--text-muted)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--row-hover)}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}.badge-ok{background:var(--success-bg);color:var(--success-text)}.badge-warn{background:var(--warn-bg);color:var(--warn-text)}.badge-err{background:var(--danger-bg);color:var(--danger-text)}.badge-paid{background:var(--success-bg);color:var(--success-text)}.badge-pending{background:var(--warn-bg);color:var(--warn-text)}.badge-overdue{background:var(--danger-bg);color:var(--danger-text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--surface);border-radius:var(--radius-lg);padding:20px;min-width:480px;max-width:720px;max-height:85vh;overflow:auto}.modal h2{margin:0 0 16px}.modal .row{display:flex;gap:10px;margin-bottom:10px}.modal label{display:flex;flex-direction:column;flex:1;font-size:12px;color:var(--text-muted);gap:4px}.modal label input,.modal label select,.modal label textarea{font-size:14px;color:var(--text)}.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.toolbar{display:flex;gap:8px;margin-bottom:12px;align-items:center;flex-wrap:wrap}.toolbar input,.toolbar select{padding:6px 8px}h2.page-title{margin:0 0 16px;font-size:22px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:20px}.card{background:var(--surface);padding:16px 18px;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card .label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.card .val{font-size:22px;font-weight:600;margin-top:6px;color:var(--text)}.card .val.pos{color:var(--success)}.card .val.neg{color:var(--danger-hover)}.card .val.warn{color:var(--warn)}.card .val.info{color:var(--info)}.card .val.accent{color:var(--accent)}.card .sub{font-size:11px;color:var(--text-muted);margin-top:4px}.card h3{margin:0 0 6px;font-size:12px;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.card .v{font-size:22px;font-weight:600}.section-title{font-size:14px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin:24px 0 10px}.subsection{margin-top:24px}.subsection h3{margin:0 0 8px;font-size:14px;color:#374151}.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}.bar-row .nm{width:160px;font-size:13px}.bar-row .bar-wrap{flex:1;background:var(--border);height:12px;border-radius:6px;overflow:hidden}.bar-row .bar{height:100%;background:var(--brand)}.bar-row .bar.warn{background:#f59e0b}.bar-row .bar.over{background:var(--danger)}.bar-row .meta{font-size:12px;color:var(--text-muted);min-width:110px;text-align:right}.empty{background:var(--surface);border-radius:var(--radius-lg);padding:36px;text-align:center;color:var(--text-muted);box-shadow:var(--shadow-sm)}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-day{background:var(--surface);border-radius:var(--radius-sm);min-height:80px;padding:6px;font-size:12px;cursor:pointer}.cal-day:hover{background:#eff6ff}.cal-day.empty{background:transparent;cursor:default;box-shadow:none;padding:6px}.cal-day .day-num{font-weight:600;color:var(--text-muted)}.cal-day .entry{background:var(--brand-soft);color:var(--brand-strong);padding:1px 4px;border-radius:3px;margin-top:2px;font-size:11px}.cal-day .entry-trasferta{background:var(--warn-bg);color:var(--warn-text)}.cal-day .entry-trasf-icon{margin-left:4px}.cal-day-selected{background:var(--brand-soft)!important;outline:2px solid var(--brand);outline-offset:-2px}.cal-day-selected .day-num{color:var(--brand-hover)}.spese-mese-header{display:flex;align-items:center;gap:14px;margin-bottom:16px;padding:14px 20px}.spese-mese-header .spese-mese-titolo{font-size:22px;font-weight:600;min-width:180px;text-align:center}.kpi-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}tr.row-warn td{background:var(--warn-bg)}tr.row-warn:hover td{background:#fde68a}.toast-container{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:1000}.toast{padding:10px 16px;border-radius:var(--radius);font-size:14px;box-shadow:var(--shadow-lg);animation:toastIn .2s ease-out;color:#fff}.toast-success{background:var(--success)}.toast-error{background:var(--danger)}.toast-info{background:#1f2937}@keyframes toastIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.login{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--sidebar-bg)}.login-box{background:var(--surface);padding:28px 32px;border-radius:var(--radius-lg);min-width:360px}.login-box h1{margin:0 0 18px;font-size:18px}.login-box label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#374151;margin-bottom:12px}.login-box .btn{width:100%;padding:10px;margin-top:4px}.login-box .err{color:var(--danger-hover);font-size:13px;margin-top:10px;text-align:center}
