:root {
  --primary:#1a5276; --primary-light:#2980b9; --success:#16a34a;
  --danger:#dc2626; --warning:#d97706; --info:#0369a1;
  --gray-50:#f8fafc; --gray-100:#f1f5f9; --gray-200:#e2e8f0;
  --gray-400:#94a3b8; --gray-600:#475569; --gray-800:#1e293b;
  --radius:12px;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; background:var(--gray-100); color:var(--gray-800); min-height:100vh; }

/* ── HEADER ── */
.portale-header { background:linear-gradient(135deg,var(--primary),var(--primary-light)); padding:0 24px; height:60px; display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:100; box-shadow:0 2px 8px rgba(0,0,0,.2); }
.portale-header .logo { display:flex; align-items:center; gap:12px; }
.portale-header .logo img { height:32px; }
.portale-header .logo span { color:#fff; font-weight:700; font-size:15px; }
.portale-header .user-info { display:flex; align-items:center; gap:12px; color:rgba(255,255,255,.9); font-size:13px; }
.portale-header .btn-logout { background:rgba(255,255,255,.15); color:#fff; border:1px solid rgba(255,255,255,.3); padding:6px 14px; border-radius:6px; font-size:12px; cursor:pointer; }
.portale-header .btn-logout:hover { background:rgba(255,255,255,.25); }

/* ── ACCESSO ── */
.accesso-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px; background:linear-gradient(135deg,#1a5276 0%,#2980b9 50%,#1a5276 100%); }
.accesso-card { background:#fff; border-radius:var(--radius); padding:36px 40px; width:100%; max-width:420px; box-shadow:0 20px 60px rgba(0,0,0,.25); }
.accesso-logo { text-align:center; margin-bottom:24px; }
.accesso-logo img { height:44px; }
.accesso-logo h1 { font-size:18px; color:var(--primary); margin-top:8px; font-weight:700; }
.accesso-logo p { font-size:12px; color:var(--gray-400); margin-top:2px; }
.tab-bar { display:flex; gap:0; margin-bottom:24px; border:1px solid var(--gray-200); border-radius:8px; overflow:hidden; }
.tab-btn { flex:1; padding:9px; text-align:center; font-size:13px; font-weight:600; cursor:pointer; background:var(--gray-50); color:var(--gray-600); border:none; transition:all .2s; }
.tab-btn.active { background:var(--primary); color:#fff; }
.tab-content { display:none; }
.tab-content.active { display:block; }
.form-group { margin-bottom:16px; }
.form-group label { display:block; font-size:12px; font-weight:600; color:var(--gray-600); margin-bottom:5px; text-transform:uppercase; letter-spacing:.04em; }
.form-group input { width:100%; padding:10px 12px; border:1px solid var(--gray-200); border-radius:8px; font-size:14px; transition:border .2s; }
.form-group input:focus { outline:none; border-color:var(--primary-light); box-shadow:0 0 0 3px rgba(41,128,185,.12); }
.btn-primary { width:100%; padding:13px; background:linear-gradient(135deg,var(--primary),var(--primary-light)); color:#fff; border:none; border-radius:8px; font-size:15px; font-weight:700; cursor:pointer; transition:opacity .2s; }
.btn-primary:disabled { opacity:.6; cursor:not-allowed; }
.msg-ok  { background:#dcfce7; color:#166534; border:1px solid #bbf7d0; border-radius:8px; padding:12px; font-size:13px; margin-bottom:16px; display:none; }
.msg-err { background:#fee2e2; color:#991b1b; border:1px solid #fecaca; border-radius:8px; padding:12px; font-size:13px; margin-bottom:16px; display:none; }
.accesso-footer { text-align:center; margin-top:20px; font-size:11px; color:var(--gray-400); }

/* ── DASHBOARD ── */
.portale-body { max-width:1100px; margin:0 auto; padding:24px 20px; }
.summary-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:16px; margin-bottom:28px; }
.summary-card { background:#fff; border-radius:var(--radius); padding:20px; box-shadow:0 1px 4px rgba(0,0,0,.08); }
.summary-card .label { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--gray-400); margin-bottom:8px; }
.summary-card .value { font-size:26px; font-weight:800; }
.summary-card .sub   { font-size:11px; color:var(--gray-400); margin-top:4px; }
.summary-card.residuo .value { color:var(--primary); }
.summary-card.scaduto .value { color:var(--danger); }
.summary-card.count   .value { color:var(--gray-600); }

.section-title { font-size:16px; font-weight:700; color:var(--gray-800); margin-bottom:14px; }

/* ── TABELLA FATTURE ── */
.fatture-table { width:100%; border-collapse:collapse; background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:0 1px 4px rgba(0,0,0,.08); }
.fatture-table th { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--gray-400); padding:10px 14px; border-bottom:2px solid var(--gray-200); text-align:left; white-space:nowrap; }
.fatture-table td { padding:12px 14px; border-bottom:1px solid var(--gray-100); font-size:13.5px; vertical-align:middle; }
.fatture-table tr:last-child td { border-bottom:none; }
.fatture-table tr:hover td { background:var(--gray-50); }
.fatture-table .num { font-weight:700; color:var(--primary); font-family:monospace; }
.fatture-table .importo { font-weight:700; text-align:right; }
.fatture-table .residuo-cell { text-align:right; font-weight:600; }

/* ── BADGE STATO PAGAMENTO ── */
.badge-pag { display:inline-block; padding:3px 10px; border-radius:20px; font-size:11px; font-weight:700; white-space:nowrap; }
.pag-pagata    { background:#dcfce7; color:#166534; }
.pag-parziale  { background:#fef3c7; color:#92400e; }
.pag-da_pagare { background:#dbeafe; color:#1e40af; }
.pag-scaduta   { background:#fee2e2; color:#991b1b; }

/* ── SCADENZE ── */
.scadenze-list { font-size:11px; color:var(--gray-600); margin-top:3px; }
.scad-item { display:flex; align-items:center; gap:4px; }
.scad-ok   { color:var(--success); }
.scad-no   { color:var(--danger); }

/* ── BOTTONE PDF ── */
.btn-pdf { display:inline-flex; align-items:center; gap:4px; padding:5px 12px; background:var(--primary); color:#fff; border:none; border-radius:6px; font-size:11px; font-weight:600; cursor:pointer; white-space:nowrap; }
.btn-pdf:hover { background:var(--primary-light); }
.btn-pdf:disabled { opacity:.5; cursor:not-allowed; }

/* ── LOADING ── */
.loading-wrap { text-align:center; padding:80px 20px; color:var(--gray-400); }
.spinner { width:40px; height:40px; border:4px solid var(--gray-200); border-top-color:var(--primary); border-radius:50%; animation:spin .8s linear infinite; margin:0 auto 16px; }
@keyframes spin { to { transform:rotate(360deg); } }

/* ── RESPONSIVE ── */
@media(max-width:640px) {
  .accesso-card { padding:24px 20px; }
  .portale-body { padding:16px 12px; }
  .fatture-table th:nth-child(4),.fatture-table td:nth-child(4),
  .fatture-table th:nth-child(5),.fatture-table td:nth-child(5) { display:none; }
}
