:root{--bg: #f7f5f2;--panel: #fff;--ink: #1f1b1d;--muted: #6d6569;--line: #e6e0dc;--brand: #7a3e6e;--brand-soft: #f3e8f0;--ok: #2f7d4f;--warn: #b7791f;--bad: #b83a3a;--radius: 10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;font-size:14px}a{color:var(--brand)}.app{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.side{background:#231a21;color:#eee;padding:20px 12px;position:sticky;top:0;height:100vh}.side .logo{font-family:Georgia,serif;font-size:26px;padding:0 10px 18px;color:#fff}.side .logo small{display:block;font:12px system-ui;color:#b9a9b4}.side a{display:block;color:#d9cfd6;text-decoration:none;padding:8px 10px;border-radius:8px;margin:2px 0}.side a.active,.side a:hover{background:#3a2c37;color:#fff}.side .esci{margin-top:20px;font-size:12px;color:#b9a9b4;padding:0 10px}main{padding:24px clamp(16px,3vw,36px);max-width:1200px;width:100%}h1{font-family:Georgia,serif;font-weight:500;margin:0 0 18px;font-size:26px}h2{font-size:16px;margin:22px 0 10px}.bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.bar .spacer{flex:1}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.kpi .lab{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.kpi .val{font-size:24px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}.kpi .sub{color:var(--muted);font-size:12px;margin-top:2px}.tablewrap{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;color:var(--muted);font-weight:600;background:#faf8f6}tr:last-child td{border-bottom:0}tr.click{cursor:pointer}tr.click:hover{background:#fbf7fa}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}button,.btn{font:inherit;border:1px solid var(--line);background:#fff;color:var(--ink);padding:7px 12px;border-radius:8px;cursor:pointer;text-decoration:none;display:inline-block}button.primary,.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.danger{color:var(--bad)}button:disabled{opacity:.5;cursor:default}.f{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}label.wide{grid-column:1 / -1}label.check{flex-direction:row;align-items:center;gap:8px;color:var(--ink);font-size:14px}input,select,textarea{font:inherit;color:var(--ink);padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;width:100%}input[type=checkbox]{width:auto}textarea{min-height:70px}.pill{display:inline-block;font-size:11px;padding:2px 8px;border-radius:99px;background:#eee;white-space:nowrap}.pill.ok{background:#e3f3ea;color:var(--ok)}.pill.warn{background:#fbf0dc;color:var(--warn)}.pill.bad{background:#f8e3e3;color:var(--bad)}.pill.brand{background:var(--brand-soft);color:var(--brand)}.meter{height:10px;background:#eee;border-radius:99px;overflow:hidden;margin-top:8px}.meter>div{height:100%;background:var(--brand)}.muted{color:var(--muted)}.err{color:var(--bad)}.small{font-size:12px}.note{background:var(--brand-soft);border-radius:var(--radius);padding:10px 14px;font-size:13px;margin:12px 0}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#140a1466;display:grid;place-items:center;padding:16px;z-index:10}.modal>.card{width:min(900px,100%);max-height:92vh;overflow:auto}.login{min-height:100vh;display:grid;place-items:center;padding:16px}.login .card{width:min(380px,100%);display:grid;gap:12px}.righe input{min-width:70px}.doc{font-size:13px}.doc .testa{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:18px}.doc .testa h3{margin:0 0 4px;font-family:Georgia,serif;font-size:20px}@media(max-width:760px){.app{grid-template-columns:1fr}.side{position:static;height:auto;display:flex;flex-wrap:wrap;gap:2px;padding:10px}.side .logo{width:100%;padding-bottom:6px}}@media print{.side,.bar,.noprint{display:none!important}.app{display:block}main{padding:0}main:has(.modal)>:not(.modal){display:none!important}.modal{position:static;background:none;padding:0}.modal>.card{border:0;max-height:none}}
