:root{--bg:#0b1020;--bg2:#111827;--panel:#121a2b;--panel2:#172033;--text:#e5e7eb;--muted:#94a3b8;--line:#243044;--primary:#3b82f6;--primary2:#14b8a6;--secondary:#334155;--danger:#ef4444;--ok:#22c55e}
*{box-sizing:border-box} body{margin:0;background:radial-gradient(circle at top,#18213a 0,#0b1020 55%);font:14px/1.45 Segoe UI,Arial,sans-serif;color:var(--text)}
a{text-decoration:none;color:inherit}.shell{max-width:1500px;margin:0 auto;padding:16px}
.header{display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{display:flex;align-items:center;gap:14px}.brand-badge{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),var(--primary2));font-weight:900;font-size:24px;color:#fff;box-shadow:0 10px 30px rgba(59,130,246,.35)}
.topnav{display:flex;gap:12px;flex-wrap:wrap}.topnav a{padding:12px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel);font-weight:800;box-shadow:0 8px 20px rgba(0,0,0,.18);transition:.15s ease}.topnav a:nth-child(1){background:linear-gradient(135deg,#1d4ed8,#2563eb)}.topnav a:nth-child(2){background:linear-gradient(135deg,#0f766e,#14b8a6)}.topnav a:nth-child(3){background:linear-gradient(135deg,#b45309,#f59e0b)}.topnav a:hover,.btn:hover{transform:translateY(-1px);filter:brightness(1.05)}
.muted{color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(9,1fr);gap:12px}.card{background:var(--panel);border-radius:16px;padding:14px;border:1px solid var(--line);box-shadow:0 10px 24px rgba(0,0,0,.22)}.card span{display:block;color:var(--muted)}.card strong{font-size:28px}.card.danger strong{color:#fca5a5}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:16px;overflow:auto;box-shadow:0 10px 24px rgba(0,0,0,.2)}
.filters,.inline-form,.actions,.actions-row,.pagination,.pagination-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.grid-form{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.grid-form.compact{grid-template-columns:repeat(3,1fr)}
.grid-form label,.stack{display:flex;flex-direction:column;gap:6px}.full{grid-column:1/-1}.inline{display:flex;align-items:center;gap:8px}.checkbox-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:var(--panel2);padding:12px;border-radius:14px;border:1px solid var(--line)}
input,select,textarea,button{font:inherit} input,select,textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:10px;background:#0b1220;color:var(--text)} textarea{min-height:110px}
.btn,button{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:10px;border:none;background:var(--primary);color:#fff;cursor:pointer;font-weight:700}.btn.secondary{background:var(--secondary)}.btn.danger{background:var(--danger)}.btn.small{padding:8px 10px;font-size:12px}
button:hover,select:hover,input:hover,textarea:hover{border-color:#3b82f6} table{width:100%;border-collapse:collapse} th,td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left} th{background:#0b1220;position:sticky;top:0;z-index:1}
.stato-nuovo{background:rgba(59,130,246,.08)}.stato-in-corso{background:rgba(245,158,11,.08)}.stato-produzione{background:rgba(34,197,94,.08)}.offline{background:var(--danger);color:#fff;border-radius:12px}.flash-wrap{display:grid;gap:8px;margin-bottom:12px}.flash{padding:12px;border-radius:12px}.flash.success{background:rgba(34,197,94,.14)}.flash.warning{background:rgba(245,158,11,.16)}.flash.error{background:rgba(239,68,68,.16)}
.stats-list{margin:0;padding-left:18px}.stack{margin-top:8px}.pagination{justify-content:space-between;margin-top:14px;padding-top:10px;border-top:1px dashed var(--line)}
.state-pill,.ticket-pill{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800}.state-nuovo{background:rgba(59,130,246,.18);color:#93c5fd}.state-in-corso{background:rgba(245,158,11,.18);color:#fcd34d}.state-produzione{background:rgba(34,197,94,.18);color:#86efac}.ticket-pill.open{background:rgba(239,68,68,.18);color:#fca5a5}.ticket-pill.closed{background:rgba(34,197,94,.18);color:#86efac}.mono{font-family:Consolas,monospace}
@media (max-width:1200px){.cards{grid-template-columns:repeat(3,1fr)}.grid-form,.grid-form.compact,.checkbox-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:768px){.cards,.grid-form,.grid-form.compact,.checkbox-grid{grid-template-columns:1fr}.header{flex-direction:column;align-items:flex-start}.topnav a{width:100%;justify-content:center}}

.machine-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  background: var(--panel2);
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
}

.machine-card {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #0b1220;
  cursor: pointer;
  transition: .15s ease;
  min-height: 74px;
}

.machine-card:hover {
  transform: translateY(-1px);
  border-color: #3b82f6;
  box-shadow: 0 8px 18px rgba(59,130,246,.15);
}

.machine-card input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: #3b82f6;
  flex: 0 0 auto;
}

.machine-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.machine-name {
  display: block;
  font-weight: 700;
  line-height: 1.25;
}

.machine-cat {
  display: block;
  color: var(--muted);
  font-size: 12px;
}

@media (max-width: 1200px) {
  .machine-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .machine-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .machine-grid {
    grid-template-columns: 1fr;
  }
}

.login-body{display:grid;place-items:center;min-height:100vh}
.login-card{width:min(420px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.login-form{display:grid;gap:14px;margin-top:18px}.center{justify-content:center}.logout{background:#1f2937!important}

.form-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}
.form-tip{padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(59,130,246,.08);color:#bfdbfe;max-width:300px}
.section-label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#93c5fd;margin-top:4px}
.improved-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.improved-form label{background:var(--panel2);padding:12px;border:1px solid var(--line);border-radius:14px}
.improved-form input[type="text"],
.improved-form input[type="number"],
.improved-form select,
.improved-form textarea{margin-top:8px}
.toggle-box{display:flex;align-items:flex-start;gap:12px;cursor:pointer}
.toggle-box input{width:18px;height:18px;margin-top:3px}
.toggle-box strong{display:block}
.toggle-box small{color:var(--muted)}
.machine-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0}
.machine-search{max-width:360px}
.machine-legend{display:flex;gap:8px;flex-wrap:wrap}
.legend{padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800}
.legend.lab{background:rgba(59,130,246,.18);color:#93c5fd}
.legend.rad{background:rgba(245,158,11,.18);color:#fcd34d}
.machine-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;background:var(--panel2);padding:14px;border:1px solid var(--line);border-radius:14px}
.machine-card{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:14px;background:#0b1220;cursor:pointer;transition:.15s ease;min-height:74px}
.machine-card:hover{transform:translateY(-1px);border-color:#3b82f6;box-shadow:0 8px 18px rgba(59,130,246,.15)}
.machine-card input{width:18px;height:18px;margin-top:2px;accent-color:#3b82f6;flex:0 0 auto}
.machine-text{display:flex;flex-direction:column;gap:4px}
.machine-name{display:block;font-weight:700;line-height:1.25}
.machine-cat{display:block;color:var(--muted);font-size:12px}
.machine-cat.lab{color:#93c5fd}
.machine-cat.rad{color:#fcd34d}
@media (max-width:1200px){.machine-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.improved-form{grid-template-columns:1fr}.form-head,.machine-toolbar{flex-direction:column;align-items:stretch}.form-tip{max-width:none}.machine-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.machine-grid{grid-template-columns:1fr}}
.stack-mobile{display:flex;flex-direction:column;gap:12px}
