:root{
  --verde:#1B3724; --verde2:#1E7142; --oro:#c79a2e;
  --bg:#f4f6f4; --card:#fff; --bordo:#e6e9e6; --testo:#2b2f2b; --muted:#7a847a;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--testo);}

/* ---------- Login ---------- */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#1B3724 0%,#1E7142 100%);}
.login-card{background:#fff;padding:38px 34px;border-radius:18px;width:340px;max-width:92vw;
  box-shadow:0 24px 60px rgba(0,0,0,.3);display:flex;flex-direction:column;gap:14px;}
.login-brand{font-size:22px;font-weight:800;color:var(--verde);text-align:center}
.login-sub{margin:0 0 6px;text-align:center;color:var(--muted);font-size:13px}
.login-card label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:#444}
.login-card input{padding:11px 12px;border:1px solid #ccc;border-radius:10px;font-size:15px}
.login-card button{margin-top:6px;background:var(--verde2);color:#fff;border:0;padding:13px;border-radius:10px;
  font-size:15px;font-weight:700;cursor:pointer}
.login-card button:hover{background:#19623a}

/* ---------- Layout app ---------- */
body:not(.login-page){display:flex;min-height:100vh}
.sidebar{width:236px;background:var(--verde);color:#dfe8df;display:flex;flex-direction:column;position:fixed;top:0;bottom:0}
.brand{padding:20px 18px;font-weight:800;font-size:16px;color:#fff;border-bottom:1px solid rgba(255,255,255,.12)}
.sidebar nav{display:flex;flex-direction:column;padding:10px 0;gap:2px;flex:1}
.sidebar nav a{color:#cdd9cd;text-decoration:none;padding:11px 18px;font-size:14px;font-weight:600;border-left:3px solid transparent}
.sidebar nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar nav a.on{background:rgba(255,255,255,.10);color:#fff;border-left-color:var(--oro)}
.sidebar nav a.disabled{opacity:.45;cursor:not-allowed}
.side-foot{padding:14px 18px;border-top:1px solid rgba(255,255,255,.12);font-size:13px}
.side-foot .me{font-weight:700;color:#fff;display:flex;flex-direction:column;margin-bottom:8px}
.side-foot .me small{font-weight:500;color:#a9b8a9;font-size:11px}
.side-foot .mini{display:inline-block;color:#cdd9cd;text-decoration:none;font-size:12px;margin-right:12px}
.side-foot .mini:hover{color:#fff;text-decoration:underline}
.side-foot .esci{color:var(--oro)}
.content{margin-left:236px;flex:1;padding:28px 34px;max-width:1100px}

.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px;flex-wrap:wrap;gap:12px}
.page-head h1{margin:0;font-size:26px;color:var(--verde)}
.muted{color:var(--muted);font-size:13px;margin:4px 0 0}
.pill{background:#e8f0e8;color:var(--verde2);padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600}
.pill.warn{background:#fff3df;color:#9a6b00}

/* KPI */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:22px}
.kpi{background:var(--card);border:1px solid var(--bordo);border-radius:14px;padding:20px;box-shadow:0 4px 14px rgba(27,55,36,.05)}
.kpi-ic{font-size:24px}
.kpi-val{font-size:26px;font-weight:800;color:var(--verde);margin:8px 0 2px}
.kpi-lab{font-size:12.5px;color:var(--muted);font-weight:600}

.card{background:var(--card);border:1px solid var(--bordo);border-radius:14px;padding:22px;margin-bottom:22px;box-shadow:0 4px 14px rgba(27,55,36,.04)}
.card h2{margin:0 0 16px;font-size:17px;color:var(--verde)}
.form-stretta{max-width:460px}
.card label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:#444;margin-bottom:14px}
.card input,.card select{padding:10px 12px;border:1px solid #ccc;border-radius:9px;font-size:14px;font-family:inherit}
.card button{background:var(--verde2);color:#fff;border:0;padding:11px 20px;border-radius:9px;font-weight:700;cursor:pointer;font-size:14px}
.card button:hover{background:#19623a}
button.danger{background:#b3261e}button.danger:hover{background:#8f1d17}
button.mini{padding:6px 12px;font-size:12px}
.inline{display:inline}

/* Tabella */
.tabella{width:100%;border-collapse:collapse;font-size:14px}
.tabella th{text-align:left;color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;padding:8px 10px;border-bottom:2px solid var(--bordo)}
.tabella td{padding:11px 10px;border-bottom:1px solid #f0f2f0}
.tabella .r{text-align:right}.tabella .b{font-weight:700;color:var(--verde)}
.stato{font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;text-transform:capitalize}
.stato.completed{background:#e3f5e8;color:#1E7142}
.stato.processing{background:#fff3df;color:#9a6b00}

.alert{padding:12px 16px;border-radius:10px;margin-bottom:18px;font-size:14px}
.alert.err{background:#fdecea;color:#b3261e;border:1px solid #f6c9c4}
.alert.ok{background:#e3f5e8;color:#176a39;border:1px solid #bfe4cb}
.alert.info{background:#eaf2fb;color:#1d4e89;border:1px solid #cfe0f5}
.alert code{background:rgba(0,0,0,.06);padding:1px 6px;border-radius:5px;font-size:13px}

.nota{font-size:12px;color:var(--muted);margin-top:8px}
.btn{display:inline-block;background:var(--verde2);color:#fff;text-decoration:none;padding:11px 20px;border-radius:9px;font-weight:700}

/* KPI varianti */
.kpi.pos .kpi-val{color:#1E7142}.kpi.neg .kpi-val{color:#b3261e}
.kpi-grid.small{margin-top:-8px}
.kpi.mini{padding:14px 18px}
.kpi-val.s{font-size:19px}

/* due colonne */
.due-col{display:grid;grid-template-columns:1.4fr 1fr;gap:22px}
@media(max-width:900px){.due-col{grid-template-columns:1fr}}

/* form a due campi */
.riga2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.riga2{grid-template-columns:1fr}}

/* lista scadenze nel cruscotto */
.lista-scad{list-style:none;margin:0;padding:0}
.lista-scad li{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #f0f2f0;font-size:14px}
.lista-scad li:last-child{border-bottom:0}
.lista-scad .d{color:var(--muted);font-size:12.5px;min-width:88px}
.lista-scad .t{flex:1}.lista-scad .i{font-weight:700;color:var(--verde)}
.lista-scad li.scad .d{color:#b3261e;font-weight:700}

/* tag / etichette */
.tag{font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;background:#eef0ee;color:#555;text-transform:capitalize}
.tag.cliente{background:#e3f0fb;color:#1d4e89}.tag.fornitore{background:#fdf0e3;color:#9a6b00}.tag.entrambi{background:#ece3fb;color:#5b3a91}
.tag.rosso{background:#fdecea;color:#b3261e}
tr.rosso td{background:#fff6f5}
.tabella.spenta{opacity:.6}

/* bottoni piccoli extra */
button.ok-btn{background:#1E7142;color:#fff;border:0;border-radius:8px;cursor:pointer}
button.ok-btn:hover{background:#19623a}

/* ricerca documenti */
.cerca{display:flex;gap:8px}
.cerca input{padding:9px 12px;border:1px solid #ccc;border-radius:9px;font-size:14px}
.cerca button{background:var(--verde2);color:#fff;border:0;padding:9px 16px;border-radius:9px;font-weight:700;cursor:pointer}

@media(max-width:760px){
  .sidebar{position:static;width:100%;flex-direction:row;flex-wrap:wrap;height:auto}
  .sidebar nav{flex-direction:row;flex-wrap:wrap;flex:1 1 100%}
  .content{margin-left:0;padding:18px}
  body:not(.login-page){flex-direction:column}
}
