*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#070b14;--panel:#0d1524;--panel-2:#101b30;--line:#1c2b45;--line-2:#23355a;
  --txt:#e8eefc;--muted:#8fa3c4;--dim:#5d7296;
  --blue:#2f6df6;--blue-2:#1f56c8;--cyan:#22d3ee;--green:#25d17e;--amber:#f5b93b;--red:#f4506b;
  --radius:16px;
}
html,body{background:var(--bg);color:var(--txt);font-family:'Inter','Segoe UI',system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--cyan);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-weight:800;letter-spacing:-0.01em}

/* topbar */
.g-topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px;height:64px;background:rgba(7,11,20,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.g-brand{font-weight:900;font-size:1.05rem;letter-spacing:-.02em;color:var(--txt);display:flex;align-items:center;gap:10px}
.g-brand .logo{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--blue),var(--cyan));display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800;color:#fff}
.g-user{display:flex;align-items:center;gap:12px}
.g-user .badge{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#fff;padding:5px 10px;border-radius:999px}
.badge-partner{background:linear-gradient(135deg,var(--blue),var(--blue-2));box-shadow:0 4px 14px rgba(47,109,246,.35)}
.badge-admin{background:linear-gradient(135deg,var(--amber),#c97f00);box-shadow:0 4px 14px rgba(245,185,59,.25)}
.g-user .mail{color:var(--muted);font-size:12px}
.g-logout{background:transparent;border:1px solid var(--line-2);color:var(--muted);padding:7px 14px;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:7px}
.g-logout:hover{color:#fff;border-color:var(--red);background:rgba(244,80,107,.08)}

/* layout */
.g-wrap{max-width:1280px;margin:0 auto;padding:28px 24px 80px}
.g-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.g-title{font-size:1.5rem;line-height:1.15}
.g-sub{color:var(--muted);font-size:.88rem;margin-top:4px}

/* cards */
.g-card{background:linear-gradient(180deg,var(--panel),#0b1322);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.g-card + .g-card{margin-top:16px}
.g-card h3{font-size:1rem;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.g-card h3 .n{width:24px;height:24px;border-radius:8px;background:rgba(47,109,246,.15);color:var(--cyan);border:1px solid rgba(47,109,246,.25);font-size:12px;display:inline-flex;align-items:center;justify-content:center;font-weight:800}

/* stats */
.g-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:22px}
.g-stat{background:linear-gradient(180deg,var(--panel),#0b1322);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px}
.g-stat .k{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}
.g-stat .v{font-size:1.6rem;font-weight:900;margin-top:6px}
.g-stat .v small{font-size:.75rem;color:var(--dim);font-weight:600}
.g-stat .sub{font-size:.75rem;color:var(--green);margin-top:4px;font-weight:600}

/* table */
.g-table{width:100%;border-collapse:collapse;font-size:.85rem}
.g-table th{text-align:left;padding:10px 12px;color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid var(--line)}
.g-table td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}
.g-table tr:last-child td{border-bottom:none}
.g-table tr:hover td{background:rgba(47,109,246,.04)}
.g-mono{font-family:'JetBrains Mono',Consolas,monospace;font-size:.78rem;color:var(--cyan)}

/* badge stato */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:800;padding:4px 10px;border-radius:999px;border:1px solid transparent;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.st-nuovo{color:var(--amber);background:rgba(245,185,59,.1);border-color:rgba(245,185,59,.3)}
.st-presa{color:var(--blue);background:rgba(47,109,246,.12);border-color:rgba(47,109,246,.35)}
.st-completato{color:var(--green);background:rgba(37,209,126,.1);border-color:rgba(37,209,126,.3)}
.st-archiviata{color:var(--muted);background:rgba(141,163,196,.08);border-color:rgba(141,163,196,.15)}
.st-cancellata{color:var(--red);background:rgba(244,80,107,.1);border-color:rgba(244,80,107,.3)}

/* alerts */
.g-alert{padding:13px 16px;border-radius:12px;font-size:.85rem;font-weight:600;margin-bottom:16px;border:1px solid}
.g-alert.green{background:rgba(37,209,126,.08);border-color:rgba(37,209,126,.3);color:#7deeBB}
.g-alert.red{background:rgba(244,80,107,.08);border-color:rgba(244,80,107,.3);color:#fda4b5}
.g-alert.blue{background:rgba(47,109,246,.08);border-color:rgba(47,109,246,.3);color:#9dbdfa}

/* buttons */
.g-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer;font-weight:800;font-size:.82rem;padding:10px 18px;border-radius:11px;transition:.15s;color:#fff}
.g-btn.primary{background:linear-gradient(135deg,var(--blue),var(--blue-2));box-shadow:0 6px 18px rgba(47,109,246,.3)}
.g-btn.primary:hover{filter:brightness(1.12)}
.g-btn.dark{background:var(--panel-2);border:1px solid var(--line-2);color:var(--txt)}
.g-btn.dark:hover{border-color:var(--blue)}
.g-btn.green{background:linear-gradient(135deg,#1baa67,#0f7a49);box-shadow:0 6px 18px rgba(37,209,126,.2)}
.g-btn.green:hover{filter:brightness(1.1)}
.g-btn.red{background:linear-gradient(135deg,#ef4464,#c22748);box-shadow:0 6px 18px rgba(244,80,107,.2)}
.g-btn.red:hover{filter:brightness(1.1)}
.g-btn.ghost{background:transparent;border:1px solid var(--line-2);color:var(--muted);padding:6px 12px;font-size:.75rem;margin-left:6px}
.g-btn.ghost:hover{color:#fff;border-color:var(--blue)}
.g-btn:disabled{opacity:.5;cursor:not-allowed}

/* forms */
.g-label{display:block;font-size:.76rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
.g-input{width:100%;background:#0a1220;border:1px solid var(--line-2);border-radius:11px;padding:10px 14px;color:var(--txt);font-size:.85rem;outline:none;transition:.15s}
.g-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,109,246,.15)}
textarea.g-input{min-height:88px;resize:vertical}
.g-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:680px){.g-row{grid-template-columns:1fr}}

/* login */
.g-login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(900px 500px at 20% -10%,rgba(47,109,246,.18),transparent),radial-gradient(700px 400px at 110% 110%,rgba(34,211,238,.1),transparent),var(--bg)}
.g-login-card{width:100%;max-width:420px;background:linear-gradient(180deg,var(--panel),#0b1322);border:1px solid var(--line);border-radius:22px;padding:34px 30px;box-shadow:0 30px 70px rgba(0,0,0,.5)}
.g-login-card .logo{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,var(--blue),var(--cyan));display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;margin-bottom:18px}
.g-login-card h1{font-size:1.35rem;margin-bottom:4px}
.g-login-card .desc{color:var(--muted);font-size:.85rem;margin-bottom:22px}
.g-login-card .field{margin-bottom:14px}
.g-login-card .g-btn{width:100%;padding:12px;font-size:.9rem;margin-top:6px}
.g-login-link{text-align:center;margin-top:16px;font-size:.8rem;color:var(--muted)}
.g-login-link a{color:var(--cyan);font-weight:700}

/* search + utilities */
.g-ricerca{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.g-ricerca input{width:280px;max-width:100%}
.g-pill{font-size:.72rem;font-weight:700;color:var(--muted);background:var(--panel-2);border:1px solid var(--line-2);border-radius:999px;padding:3px 10px}
.g-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:840px){.g-grid-2{grid-template-columns:1fr}}
.g-mobile-scroll{overflow-x:auto}
.mt-14{margin-top:14px}.mt-20{margin-top:20px}.mb-14{margin-bottom:14px}
.right{text-align:right}
.text-dim{color:var(--dim)}.text-muted{color:var(--muted)}.text-green{color:var(--green)}.text-red{color:var(--red)}.text-amber{color:var(--amber)}