/* ================================================================
   PRODUZIONE ANGELI — Design System v2
   Fonts: Outfit (display) · DM Sans (body) · JetBrains Mono (data)
   ================================================================ */
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600&family=JetBrains+Mono:wght@400;500&display=swap');

/* ── Tokens ──────────────────────────────────────────────────── */
:root {
  --sb-w:240px;
  --bg:#EEF2F7; --surface:#FFF; --surface-2:#F8FAFC; --border:#E2E8F0; --border-2:#CBD5E1;
  --sb-bg:#0B1120; --sb-text:#64748B; --sb-head:#F1F5F9;
  --sb-hover:rgba(255,255,255,.06); --sb-active:rgba(59,130,246,.15); --sb-accent:#3B82F6;
  --accent:#2563EB; --accent-h:#1D4ED8; --accent-lt:#EFF6FF;
  --purple:#7C3AED; --purple-lt:#EDE9FE;
  --success:#059669; --success-lt:#D1FAE5;
  --warning:#D97706; --warning-lt:#FEF3C7;
  --danger:#DC2626;  --danger-lt:#FEE2E2;
  --info:#0284C7;    --info-lt:#E0F2FE;
  --text:#0F172A; --text-2:#475569; --text-3:#94A3B8;
  --r:6px; --r-lg:12px; --r-xl:16px;
  --sh-sm:0 1px 3px rgba(0,0,0,.07),0 1px 2px rgba(0,0,0,.04);
  --sh:0 4px 12px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.05);
  --sh-lg:0 12px 32px rgba(0,0,0,.12);
  --sh-xl:0 24px 64px rgba(0,0,0,.16);
}

/* ── Reset ───────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:14px;-webkit-font-smoothing:antialiased}
body{font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* ── App Layout ──────────────────────────────────────────────── */
.layout{display:flex;min-height:100vh}

/* ── Sidebar ─────────────────────────────────────────────────── */
.sidebar{
  width:var(--sb-w);min-width:var(--sb-w);background:var(--sb-bg);
  display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;
  z-index:200;overflow-y:auto;transition:transform .25s ease;
}
.sb-logo{
  padding:20px 16px 16px;border-bottom:1px solid rgba(255,255,255,.06);
  display:flex;align-items:center;gap:10px;
}
.sb-logo-icon{
  width:34px;height:34px;background:var(--accent);border-radius:6px;
  display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;
}
.sb-logo-text{font-family:'Outfit',sans-serif;font-weight:800;font-size:14px;color:var(--sb-head);line-height:1.2}
.sb-logo-sub{font-size:10px;color:var(--sb-text);text-transform:uppercase;letter-spacing:.06em}

.sb-section{padding:16px 10px 6px}
.sb-section-label{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--sb-text);padding:0 8px;margin-bottom:4px;opacity:.5}

.sb-link{
  display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:var(--r);
  color:var(--sb-text);font-size:13px;font-weight:500;cursor:pointer;
  transition:background .15s,color .15s;text-decoration:none;
  margin-bottom:1px;border:none;background:none;width:100%;text-align:left;
}
.sb-link:hover{background:var(--sb-hover);color:var(--sb-head);text-decoration:none}
.sb-link.active{background:var(--sb-active);color:var(--sb-accent)}
.sb-icon{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.sb-link.active .sb-icon{filter:drop-shadow(0 0 4px rgba(59,130,246,.6))}

.sb-footer{margin-top:auto;padding:10px;border-top:1px solid rgba(255,255,255,.06)}
.sb-user{display:flex;align-items:center;gap:9px;padding:8px}
.sb-avatar{
  width:30px;height:30px;border-radius:50%;background:var(--accent);color:white;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;
}
.sb-user-info{flex:1;min-width:0}
.sb-user-name{font-size:12px;font-weight:600;color:var(--sb-head);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-user-role{font-size:10px;color:var(--sb-text);text-transform:uppercase;letter-spacing:.05em}
.sb-logout{
  width:26px;height:26px;border:none;background:none;cursor:pointer;color:var(--sb-text);
  font-size:14px;border-radius:4px;display:flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s;flex-shrink:0;
}
.sb-logout:hover{background:rgba(220,38,38,.2);color:#FC8181}

/* Mobile toggle */
.sb-toggle{
  display:none;position:fixed;top:12px;left:12px;z-index:300;width:36px;height:36px;
  border-radius:var(--r);background:var(--sb-bg);border:none;cursor:pointer;
  color:white;font-size:17px;align-items:center;justify-content:center;box-shadow:var(--sh);
}
.sb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:199}

/* ── Main ────────────────────────────────────────────────────── */
.main{flex:1;margin-left:var(--sb-w);display:flex;flex-direction:column;min-height:100vh;min-width:0}

/* ── Topbar ──────────────────────────────────────────────────── */
.topbar{
  background:var(--surface);border-bottom:1px solid var(--border);
  padding:0 22px;height:54px;display:flex;align-items:center;
  justify-content:space-between;gap:14px;position:sticky;top:0;z-index:100;
}
.topbar-title{font-family:'Outfit',sans-serif;font-size:16px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px}
.topbar-right{display:flex;align-items:center;gap:7px;flex-wrap:wrap}

/* ── Page ────────────────────────────────────────────────────── */
.page{padding:18px 22px;flex:1}

/* ── Cards ───────────────────────────────────────────────────── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);margin-bottom:14px}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--border);gap:10px;flex-wrap:wrap}
.card-title{font-family:'Outfit',sans-serif;font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:7px}
.card-body{padding:16px}
.card-body.p0{padding:0}
.card-footer{padding:10px 16px;border-top:1px solid var(--border);background:var(--surface-2);border-radius:0 0 var(--r-lg) var(--r-lg)}

/* ── Stats ───────────────────────────────────────────────────── */
.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px;margin-bottom:14px}
.stat-card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:14px 16px;box-shadow:var(--sh-sm);display:flex;flex-direction:column;gap:4px;
  border-left:3px solid var(--border-2);
}
.stat-card.c-blue{border-left-color:var(--accent)} .stat-card.c-green{border-left-color:var(--success)}
.stat-card.c-yellow{border-left-color:var(--warning)} .stat-card.c-red{border-left-color:var(--danger)}
.stat-card.c-purple{border-left-color:var(--purple)} .stat-card.c-info{border-left-color:var(--info)}
.stat-val{font-family:'Outfit',sans-serif;font-size:26px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.stat-card.c-blue   .stat-val{color:var(--accent)}   .stat-card.c-green  .stat-val{color:var(--success)}
.stat-card.c-yellow .stat-val{color:var(--warning)}  .stat-card.c-red    .stat-val{color:var(--danger)}
.stat-card.c-purple .stat-val{color:var(--purple)}   .stat-card.c-info   .stat-val{color:var(--info)}
.stat-lbl{font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}

/* ── Tables ──────────────────────────────────────────────────── */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12.5px}
thead th{
  background:var(--surface-2);padding:9px 11px;text-align:left;
  font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;
  border-bottom:2px solid var(--border);white-space:nowrap;
}
tbody td{padding:9px 11px;border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text-2)}
tbody td strong{color:var(--text);font-weight:600}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--surface-2)}

.tr-linea td{
  background:var(--accent);color:white;font-family:'Outfit',sans-serif;
  font-weight:700;font-size:11px;letter-spacing:.06em;padding:7px 11px;text-transform:uppercase;
}
.tr-linea:hover td{background:var(--accent-h)}
.tr-linea .row-inner{display:flex;align-items:center;justify-content:space-between}
.tr-linea td a{
  color:rgba(255,255,255,.7);font-size:10px;font-weight:500;
  border:1px solid rgba(255,255,255,.3);padding:2px 9px;border-radius:20px;
  transition:all .15s;text-decoration:none;
}
.tr-linea td a:hover{background:rgba(255,255,255,.2);color:white}

/* ── Buttons ─────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;gap:5px;padding:7px 13px;
  border:none;border-radius:var(--r);font-size:12px;font-weight:600;
  font-family:'DM Sans',sans-serif;cursor:pointer;white-space:nowrap;
  text-decoration:none;transition:background .15s,transform .1s,box-shadow .15s;
  letter-spacing:.02em;
}
.btn:hover{transform:translateY(-1px);text-decoration:none}
.btn:active{transform:translateY(0)}
.btn-primary{background:var(--accent);color:white}.btn-primary:hover{background:var(--accent-h)}
.btn-success{background:var(--success);color:white}.btn-success:hover{background:#047857}
.btn-danger{background:var(--danger);color:white}.btn-danger:hover{background:#B91C1C}
.btn-warning{background:var(--warning);color:white}.btn-warning:hover{background:#B45309}
.btn-secondary{background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border);color:var(--text)}
.btn-purple{background:var(--purple);color:white}.btn-purple:hover{background:#6D28D9}
.btn-sm{padding:4px 9px;font-size:11px}
.btn-lg{padding:10px 20px;font-size:14px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important}

/* ── Badges ──────────────────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.badge-blue{background:var(--accent-lt);color:var(--accent)}
.badge-green{background:var(--success-lt);color:var(--success)}
.badge-yellow{background:var(--warning-lt);color:var(--warning)}
.badge-red{background:var(--danger-lt);color:var(--danger)}
.badge-purple{background:var(--purple-lt);color:var(--purple)}
.badge-gray{background:var(--surface-2);color:var(--text-3);border:1px solid var(--border)}
.badge-urgent{background:var(--danger);color:white;animation:blink 1.4s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.6}}

.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0}
.dot-green{background:var(--success);box-shadow:0 0 5px rgba(5,150,105,.5)}
.dot-blue{background:var(--accent);box-shadow:0 0 5px rgba(37,99,235,.5)}
.dot-yellow{background:var(--warning)}
.dot-red{background:var(--danger);box-shadow:0 0 5px rgba(220,38,38,.5)}
.dot-gray{background:var(--text-3)}

/* ── Forms ───────────────────────────────────────────────────── */
.form-row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.form-group{display:flex;flex-direction:column;gap:4px}
.form-label{font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}
.form-control{
  padding:8px 11px;border:1px solid var(--border-2);border-radius:var(--r);
  font-size:13px;font-family:'DM Sans',sans-serif;background:var(--surface);color:var(--text);
  transition:border-color .15s,box-shadow .15s;
}
.form-control:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.form-control::placeholder{color:var(--text-3)}
.form-control[readonly]{background:var(--surface-2);color:var(--text-3)}
select.form-control{
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2394A3B8' viewBox='0 0 16 16'%3E%3Cpath d='M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:30px;
}
textarea.form-control{resize:vertical;min-height:56px}
input[type=range]{width:100%;cursor:pointer;accent-color:var(--accent)}

/* ── Progress ────────────────────────────────────────────────── */
.progress{background:var(--border);border-radius:20px;overflow:hidden;height:7px}
.progress-bar{height:100%;border-radius:20px;transition:width .4s ease}
.pb-high{background:var(--success)} .pb-mid{background:var(--accent)} .pb-low{background:var(--warning)}

/* ── Quick-nav chips ─────────────────────────────────────────── */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.chip{
  display:inline-flex;align-items:center;gap:4px;padding:4px 11px;
  background:var(--surface-2);border:1px solid var(--border);border-radius:20px;
  font-size:11px;font-weight:600;color:var(--text-2);text-decoration:none;transition:all .15s;
}
.chip:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-lt);text-decoration:none}

/* ── Modals ──────────────────────────────────────────────────── */
.modal-ov{display:none;position:fixed;inset:0;background:rgba(15,23,42,.6);z-index:1000;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(3px)}
.modal-ov.open{display:flex}
.modal{background:var(--surface);border-radius:var(--r-xl);width:100%;max-width:580px;max-height:90vh;overflow-y:auto;box-shadow:var(--sh-xl);position:relative;animation:min .2s ease}
@keyframes min{from{opacity:0;transform:scale(.95) translateY(-8px)}to{opacity:1;transform:scale(1) translateY(0)}}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}
.modal-title{font-family:'Outfit',sans-serif;font-size:15px;font-weight:700;color:var(--text)}
.modal-close{width:28px;height:28px;border:none;background:none;cursor:pointer;color:var(--text-3);border-radius:var(--r);font-size:17px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.modal-close:hover{background:var(--danger-lt);color:var(--danger)}
.modal-body{padding:20px}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--border);background:var(--surface-2);border-radius:0 0 var(--r-xl) var(--r-xl)}
.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.modal-grid .full{grid-column:1/-1}
.modal-grid .form-control,.modal-grid textarea,.modal-grid select{width:100%}

/* ── Alerts ──────────────────────────────────────────────────── */
.alert{display:none;padding:9px 13px;border-radius:var(--r);font-size:13px;font-weight:600;margin-bottom:12px;border:1px solid transparent;align-items:center;gap:7px}
.alert.show{display:flex}
.alert-error{background:var(--danger-lt);color:#991B1B;border-color:#FCA5A5}
.alert-success{background:var(--success-lt);color:#065F46;border-color:#6EE7B7}

/* ── Toolbar ─────────────────────────────────────────────────── */
.toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.toolbar-right{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}

/* ── Note input in table ─────────────────────────────────────── */
.note-cell{border:none;background:transparent;width:100%;min-height:40px;max-height:90px;resize:vertical;font-size:11.5px;font-family:'DM Sans',sans-serif;color:var(--text-2);padding:3px;outline:none;border-radius:4px}
.note-cell:focus{background:var(--surface-2)}

/* ── Linee checkboxes ────────────────────────────────────────── */
.linee-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:4px;max-height:150px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r);padding:8px;background:var(--surface-2)}
.linee-grid label{display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer;padding:4px 6px;border-radius:4px;transition:background .1s}
.linee-grid label:hover{background:var(--purple-lt)}
.linee-grid input[type=checkbox]{width:auto;cursor:pointer;accent-color:var(--purple)}

/* ── Empty state ─────────────────────────────────────────────── */
.empty{text-align:center;padding:36px 20px;color:var(--text-3)}
.empty-icon{font-size:32px;opacity:.4;display:block;margin-bottom:8px}

/* ── Print ───────────────────────────────────────────────────── */
@media print{
  .sidebar,.sb-toggle,.topbar,.no-print{display:none!important}
  .main{margin-left:0}
  .card{box-shadow:none;border:1px solid #ddd;break-inside:avoid}
  body{background:white;font-size:10px}
  .tr-linea td{background:var(--accent)!important;color:white!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ── Responsive ──────────────────────────────────────────────── */
@media(max-width:768px){
  .sidebar{transform:translateX(-100%)} .sidebar.open{transform:translateX(0)}
  .sb-overlay.open{display:block} .sb-toggle{display:flex}
  .main{margin-left:0} .topbar{padding-left:58px} .page{padding:12px 14px}
  .stats-row{grid-template-columns:repeat(2,1fr)}
  .modal-grid{grid-template-columns:1fr} .modal-grid .full{grid-column:1}
}
@media(max-width:480px){.stats-row{grid-template-columns:1fr 1fr}}
