:root{--bianco:#fff;--celeste:#eaf4fb;--celeste-2:#d3e9f8;--azzurro:#2e9fe0;--azzurro-scuro:#1c7fb8;--blu:#1a4d8f;--blu-scuro:#123566;--grigio:#5b6b7c;--grigio-chiaro:#c7d2dc;--nero:#1a1f26;--rosso:#c0392b;--radius:8px;--shadow:0 2px 10px #14284614}*{box-sizing:border-box}body{color:var(--nero);background:var(--celeste);margin:0;font-family:Segoe UI,Roboto,Helvetica,Arial,sans-serif}button,input,select,textarea{font-family:inherit;font-size:14px}h1,h2,h3{color:var(--blu);margin:0}[hidden]{display:none!important}.login-screen{grid-template-columns:1.1fr 1fr;min-height:100vh;display:grid}.login-screen-left{background:linear-gradient(160deg, var(--blu) 0%, var(--blu-scuro) 100%);color:var(--bianco);flex-direction:column;justify-content:center;gap:28px;padding:56px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand-mark{background:var(--azzurro);width:44px;height:44px;color:var(--bianco);border-radius:var(--radius);justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex}.brand-mark.small{width:32px;height:32px;font-size:13px}.brand-name{font-size:20px;font-weight:600}.brand-name.small{color:var(--blu);font-size:15px}.brand-tag{color:var(--celeste-2);max-width:380px;line-height:1.5}.category-preview-label{text-transform:uppercase;letter-spacing:.08em;color:var(--celeste-2);margin-top:16px;font-size:11px}.category-preview{flex-wrap:wrap;gap:8px;max-width:420px;margin:0;padding:0;list-style:none;display:flex}.category-preview li{background:#ffffff14;border:1px solid #ffffff2e;border-radius:999px;padding:6px 14px;font-size:13px}.login-screen-right{background:var(--bianco);justify-content:center;align-items:center;padding:24px;display:flex}.login-card{flex-direction:column;gap:14px;width:100%;max-width:340px;display:flex}.login-sub{color:var(--grigio);margin:-8px 0 6px;font-size:13px}.field{color:var(--grigio);flex-direction:column;gap:6px;font-size:13px;display:flex}input,select,textarea{border:1px solid var(--grigio-chiaro);border-radius:var(--radius);background:var(--bianco);color:var(--nero);padding:10px 12px}input:focus,select:focus,textarea:focus{outline:2px solid var(--azzurro);outline-offset:1px;border-color:var(--azzurro)}.btn{border-radius:var(--radius);cursor:pointer;border:none;padding:10px 16px;font-weight:600}.btn-primary{background:var(--azzurro);color:var(--bianco)}.btn-primary:hover{background:var(--azzurro-scuro)}.btn-secondary{background:var(--celeste-2);color:var(--blu)}.btn-secondary:hover{background:#c1e0f5}.btn-danger{background:var(--bianco);color:var(--rosso);border:1px solid var(--rosso)}.btn-danger:hover{background:#fbeceb}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.form-error{color:var(--rosso);border-radius:var(--radius);background:#fbeceb;padding:8px 10px;font-size:13px}.app-shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--blu);color:var(--bianco);flex-direction:column;padding:20px 14px;display:flex}.sidebar-header{align-items:center;gap:10px;padding:0 6px 20px;display:flex}.sidebar-nav{flex-direction:column;gap:4px;display:flex}.nav-section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--celeste-2);margin:16px 10px 6px;font-size:11px}.nav-item{text-align:left;color:var(--celeste-2);border-radius:var(--radius);cursor:pointer;background:0 0;border:none;padding:9px 10px;font-size:14px;text-decoration:none;display:block}.nav-item:hover{background:var(--blu-scuro);color:var(--bianco)}.nav-item.active{background:var(--azzurro);color:var(--bianco);font-weight:600}.main-column{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--bianco);border-bottom:1px solid var(--grigio-chiaro);justify-content:space-between;align-items:center;padding:16px 28px;display:flex}.topbar-title{font-size:18px}.topbar-right{align-items:center;gap:16px;display:flex}.account-box{align-items:center;gap:12px;display:flex}.account-email{color:var(--grigio);font-size:13px}.role-badge{background:var(--celeste-2);color:var(--blu);text-transform:uppercase;border-radius:999px;padding:3px 9px;font-size:11px;font-weight:600}.role-badge.admin{background:var(--blu);color:var(--bianco)}.content{padding:24px 28px;overflow:auto}.toolbar{flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:18px;display:flex}.toolbar .field{min-width:160px}.toolbar-spacer{flex:1}.table-card{background:var(--bianco);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}table{border-collapse:collapse;width:100%}thead th{text-align:left;background:var(--celeste);color:var(--blu);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--grigio-chiaro);padding:10px 14px;font-size:12px}tbody td{border-bottom:1px solid var(--celeste);vertical-align:middle;padding:12px 14px;font-size:14px}tbody tr:hover{background:var(--celeste)}.row-actions{flex-wrap:wrap;gap:6px;display:flex}.row-actions button{border:1px solid var(--grigio-chiaro);cursor:pointer;color:var(--blu);background:0 0;border-radius:6px;padding:5px 10px;font-size:12px}.row-actions button:hover{background:var(--celeste-2)}.row-actions button.danger{color:var(--rosso);border-color:#f0c4c0}.row-actions button.danger:hover{background:#fbeceb}.badge-special{color:var(--grigio);border:1px solid var(--grigio-chiaro);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;display:inline-flex}.empty-state{text-align:center;color:var(--grigio);padding:48px 20px}.loading-state{text-align:center;color:var(--grigio);flex-direction:column;align-items:center;gap:14px;padding:48px 20px;display:flex}.spinner{border:3px solid var(--celeste-2);border-top-color:var(--azzurro);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-state{text-align:center;color:var(--rosso);flex-direction:column;align-items:center;gap:14px;padding:40px 20px;display:flex}.expiry-badge{border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.expiry-ok{background:var(--celeste-2);color:var(--blu)}.expiry-soon{color:#8a6100;background:#fff3d6}.expiry-expired{color:var(--rosso);background:#fbeceb}.pagination{border-top:1px solid var(--celeste);color:var(--grigio);justify-content:flex-end;align-items:center;gap:10px;padding:12px 14px;font-size:13px;display:flex}.modal-backdrop{z-index:50;background:#0f1e3273;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-backdrop[hidden]{display:none}.modal{background:var(--bianco);border-radius:var(--radius);width:100%;max-width:520px;max-height:88vh;box-shadow:var(--shadow);padding:24px;overflow:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-close{cursor:pointer;color:var(--grigio);background:0 0;border:none;font-size:18px;line-height:1}.modal form{flex-direction:column;gap:12px;display:flex}.radio-group{color:var(--grigio);gap:16px;font-size:13px;display:flex}.radio-group label{align-items:center;gap:6px;display:flex}.checkbox-field{color:var(--grigio);align-items:center;gap:8px;font-size:13px;display:flex}.modal-actions{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.detail-section{margin-bottom:16px}.detail-section h3{text-transform:uppercase;color:var(--grigio);margin-bottom:8px;font-size:13px}.detail-grid{grid-template-columns:1fr 1fr;gap:8px 16px;font-size:14px;display:grid}.detail-grid dt{color:var(--grigio);font-size:12px}.detail-grid dd{margin:0}.version-list,.audit-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.version-list li,.audit-list li{border:1px solid var(--grigio-chiaro);border-radius:6px;justify-content:space-between;padding:8px 10px;font-size:13px;display:flex}.toast-stack{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--nero);color:var(--bianco);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 16px;font-size:13px}.toast.error{background:var(--rosso)}.toast.success{background:var(--azzurro-scuro)}@media (width<=800px){.login-screen{grid-template-columns:1fr}.login-screen-left{padding:32px}.app-shell{grid-template-columns:1fr}.sidebar{display:none}}
