:root{--bg:#ffffff;--bg-subtle:#f8f9fa;--bg-muted:#f1f3f5;--surface:#ffffff;--surface-hover:#f8f9fa;--border:#e5e7eb;--border-strong:#d1d5db;--text:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--accent:#4f46e5;--accent-hover:#4338ca;--accent-subtle:#eef2ff;--success:#059669;--success-subtle:#ecfdf5;--warning:#d97706;--warning-subtle:#fffbeb;--danger:#dc2626;--danger-subtle:#fef2f2;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-serif:"Source Serif Pro","Lora",Georgia,serif;--font-mono:"JetBrains Mono","Fira Code",ui-monospace,monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--radius-sm:4px;--radius:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 rgb(0 0 0/0.05);--shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--shadow-md:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--shadow-lg:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--transition:150ms ease-out}@media (prefers-color-scheme:dark){:root{--bg:#0f172a;--bg-subtle:#1e293b;--bg-muted:#334155;--surface:#1e293b;--surface-hover:#334155;--border:#334155;--border-strong:#475569;--text:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--accent:#818cf8;--accent-hover:#a5b4fc;--accent-subtle:#1e1b4b;--success:#10b981;--success-subtle:#064e3b;--warning:#f59e0b;--warning-subtle:#78350f;--danger:#ef4444;--danger-subtle:#7f1d1d}}*{box-sizing:border-box}html{font-size:16px}body{background:var(--bg);font:400 1rem/1.6 var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,h1,h2,h3,h4{margin:0;color:var(--text)}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:600;line-height:1.2}h1{font-size:2rem;letter-spacing:-.02em}h2{font-size:1.5rem;letter-spacing:-.01em}h3{font-size:1.25rem}h4{font-size:1.125rem}p{margin:0 0 1rem}a{color:var(--accent);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--accent-hover)}code{font:500 .875em/1 var(--font-mono);background:var(--bg-muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px 6px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-layout{display:grid;grid-template-columns:260px 1fr;grid-template-rows:60px 1fr;min-height:100vh}.topbar{grid-column:1/-1;justify-content:space-between;padding:0 var(--space-6);background:var(--surface);border-bottom:1px solid var(--border);height:60px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.topbar,.topbar-left{display:flex;align-items:center}.topbar-left{gap:var(--space-8)}.logo{font:700 1.125rem/1 var(--font-sans);letter-spacing:.1em;color:var(--text);text-decoration:none;text-transform:uppercase}.topbar-nav{display:flex;align-items:center;gap:var(--space-1)}.topbar-nav a{padding:var(--space-2) var(--space-4);font:500 .875rem/1 var(--font-sans);color:var(--text-secondary);border-radius:var(--radius);transition:all var(--transition)}.topbar-nav a:hover{background:var(--surface-hover);color:var(--text)}.topbar-nav a.active{background:var(--accent-subtle);color:var(--accent)}.topbar-right{gap:var(--space-4)}.topbar-right,.user-info{display:flex;align-items:center}.user-info{gap:var(--space-3);font:400 .875rem/1 var(--font-sans);color:var(--text-secondary)}.user-avatar{width:32px;height:32px;border-radius:var(--radius-full);background:var(--accent-subtle);color:var(--accent);display:flex;align-items:center;justify-content:center;font:600 .75rem/1 var(--font-sans)}.sidebar{background:var(--bg-subtle);border-right:1px solid var(--border);padding:var(--space-6) 0;overflow-y:auto;height:calc(100vh - 60px);position:-webkit-sticky;position:sticky;top:60px}.sidebar-section{margin-bottom:var(--space-6)}.sidebar-title{padding:0 var(--space-5);font:600 .6875rem/1 var(--font-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-2)}.sidebar-nav{list-style:none;margin:0;padding:0}.sidebar-nav a{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-5);font:400 .875rem/1.4 var(--font-sans);color:var(--text-secondary);transition:all var(--transition);border-left:3px solid transparent}.sidebar-nav a:hover{background:var(--surface-hover);color:var(--text)}.sidebar-nav a.active{background:var(--accent-subtle);color:var(--accent);border-left-color:var(--accent);font-weight:500}.sidebar-nav svg{width:18px;height:18px;flex-shrink:0}.content{padding:var(--space-8);overflow-y:auto;height:calc(100vh - 60px)}.content-inner{max-width:1200px;margin:0 auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font:500 .875rem/1 var(--font-sans);border-radius:var(--radius);border:1px solid transparent;cursor:pointer;transition:all var(--transition);text-decoration:none}.btn-primary{background:var(--accent);color:white;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:white}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn-secondary:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--surface-hover);color:var(--text)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:.8125rem}.btn-lg{padding:var(--space-3) var(--space-6);font-size:1rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-6);transition:all var(--transition)}.card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.card-title{font:600 1rem/1.3 var(--font-sans);color:var(--text)}.card-description{font:400 .875rem/1.5 var(--font-sans);color:var(--text-secondary);margin:0}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:var(--space-4);gap:var(--space-4);margin-bottom:var(--space-8)}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5)}.stat-value{font:700 2rem/1 var(--font-sans);color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-bottom:var(--space-1)}.stat-label{font:500 .75rem/1 var(--font-sans);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.table-container{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.table{width:100%;border-collapse:collapse;font:400 .875rem/1.5 var(--font-sans)}.table th{text-align:left;font:600 .75rem/1 var(--font-sans);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-subtle)}.table td,.table th{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.table td{color:var(--text)}.table tbody tr:hover{background:var(--surface-hover)}.table tbody tr:last-child td{border-bottom:none}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;font:500 .875rem/1 var(--font-sans);color:var(--text);margin-bottom:var(--space-2)}.form-input{width:100%;padding:var(--space-2) var(--space-3);font:400 .875rem/1.5 var(--font-sans);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:all var(--transition)}.form-input:hover{border-color:var(--border-strong)}.form-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);font:500 .75rem/1 var(--font-sans);border-radius:var(--radius-full)}.badge-success{background:var(--success-subtle);color:var(--success)}.badge-warning{background:var(--warning-subtle);color:var(--warning)}.badge-danger{background:var(--danger-subtle);color:var(--danger)}.badge-neutral{background:var(--bg-muted);color:var(--text-secondary)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-6);background:var(--bg-subtle)}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-10);box-shadow:var(--shadow-lg)}.login-logo{text-align:center;margin-bottom:var(--space-8)}.login-logo h1{font:700 1.5rem/1 var(--font-sans);letter-spacing:.1em;text-transform:uppercase;color:var(--text);margin-bottom:var(--space-2)}.login-logo p{font:400 .875rem/1.4 var(--font-sans);color:var(--text-secondary);margin:0}.page-header{margin-bottom:var(--space-8)}.page-header h1{margin-bottom:var(--space-2)}.page-header p{font:400 1rem/1.5 var(--font-sans);color:var(--text-secondary);margin:0}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-accent{color:var(--accent)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}@media (max-width:1024px){.app-layout{grid-template-columns:1fr}.sidebar{display:none}.content{padding:var(--space-6)}}@media (max-width:640px){.topbar-nav{display:none}.content{padding:var(--space-4)}.stat-grid{grid-template-columns:1fr}}.riquadro.scorrevole{overflow-x:auto}.banda{fill:var(--bg-subtle)}.txt-mese{font:600 10px/1 var(--font-sans);fill:var(--text-muted)}.filo-ordito{stroke:var(--border);stroke-width:1.5}.txt-soggetto{font:500 11px/1 var(--font-sans);fill:var(--text-secondary)}.txt-gruppo{font:700 9px/1 var(--font-sans);fill:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.nodo-scaduto{stroke:var(--danger)}.nodo-scadenza{stroke:var(--warning)}.telaio-piede{padding:var(--space-3) 0;font:400 .8125rem/1.4 var(--font-sans);color:var(--text-secondary)}.mono{font-family:var(--font-mono);font-size:.8125rem}.attenuato{color:var(--text-muted)}.piccolo{font-size:.875rem;color:var(--text-secondary)}.niente{padding:var(--space-12) 0;text-align:center;color:var(--text-muted)}