:root{
  --bg:#F6F3EC;--ink:#1B2230;--ink2:#3E4553;--mute:#5B6270;--line:#E3DDD0;--line2:#F0ECE3;--card:#FFFFFF;
  --pos:#1F7A4D;--posbg:#EAF4EE;--neg:#B3261E;--negbg:#FBECEA;--acc:#2A4B8D;--accbg:#E8EDF7;--warn:#8A5A00;--warnbg:#FBF1DC;
  --nav:#1B2230;--nav2:#2E3747;--navtx:#C9CDD6;
  --serif:Fraunces,Georgia,'Times New Roman',serif;--sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--mono:'IBM Plex Mono',ui-monospace,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px}
a{color:var(--acc)}
button{font:inherit;cursor:pointer}
input,select,textarea{font:inherit;color:var(--ink)}
.app{display:flex;min-height:100vh}
nav.side{width:232px;flex-shrink:0;background:var(--nav);color:#F6F3EC;padding:28px 18px;display:flex;flex-direction:column;gap:26px;position:sticky;top:0;height:100vh}
.brand{font-family:var(--serif);font-size:22px;font-weight:600;line-height:1.1}
.brand small{display:block;font-family:var(--sans);font-size:11px;font-weight:400;color:var(--navtx);margin-top:6px;letter-spacing:.06em;text-transform:uppercase}
.menu{display:flex;flex-direction:column;gap:3px}
.menu button{display:flex;align-items:center;justify-content:space-between;min-height:42px;padding:0 14px;border-radius:8px;border:0;background:transparent;color:var(--navtx);text-align:left}
.menu button:hover{background:#252D3B;color:#fff}
.menu button.on{background:var(--nav2);color:#fff;font-weight:500}
.menu .badge{background:#E4B44C;color:#1B2230;border-radius:10px;font-size:11px;font-weight:600;padding:1px 7px}
.status{margin-top:auto;padding:14px;border-radius:10px;background:var(--nav2);font-size:12px;color:var(--navtx);display:flex;flex-direction:column;gap:6px}
.status b{color:#fff;font-size:13px;display:flex;align-items:center;gap:8px}
.dot{width:8px;height:8px;border-radius:50%;background:#5FC48F;display:inline-block}
.dot.off{background:#9AA1AE}
main{flex:1;min-width:0;padding:28px 36px 60px}
.top{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:18px}
.eyebrow{font-size:12px;color:var(--mute);text-transform:uppercase;letter-spacing:.08em}
h1{margin:4px 0 0;font-family:var(--serif);font-size:32px;font-weight:600}
h2{margin:0;font-family:var(--serif);font-size:21px;font-weight:600}
h3{margin:0;font-size:15px;font-weight:600}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.filters select,.filters input{min-height:38px;border:1px solid #D6CFBF;border-radius:8px;background:#fff;padding:0 10px}
.filters input{width:170px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{min-height:34px;padding:0 14px;border-radius:17px;border:1px solid #D6CFBF;background:#fff;color:var(--ink);font-size:13px}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.card{min-width:0;overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}
.card.flat{padding:0;overflow:hidden}
.card-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.kpi .lab{font-size:13px;color:var(--mute)}
.kpi .val{font-family:var(--mono);font-size:26px;margin-top:8px;letter-spacing:-.01em}
.kpi .sub{font-size:12.5px;color:var(--ink2);margin-top:6px;line-height:1.45}
.pos{color:var(--pos)}.neg{color:var(--neg)}.mut{color:var(--mute)}
.num{font-family:var(--mono);font-size:13.5px;white-space:nowrap;text-align:right}
.note{font-size:12.5px;color:var(--mute);line-height:1.5}
.sp{height:16px}
table{width:100%;border-collapse:collapse}
th{font-size:11.5px;font-weight:600;color:var(--mute);text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);background:#FCFBF8;position:sticky;top:0;white-space:nowrap}
th.r{text-align:right}
td{padding:11px 14px;border-bottom:1px solid var(--line2);font-size:14px;vertical-align:middle}
tr.click{cursor:pointer}
tr.click:hover td{background:#F7F5EF}
tr.sel td{background:#F1F4FA}
.t-name{font-weight:600}
.t-sub{font-size:12px;color:var(--mute);margin-top:2px}
.tag{display:inline-block;padding:3px 8px;border-radius:6px;background:var(--accbg);color:#1C3566;font-size:11.5px;font-weight:500;margin:2px 4px 2px 0;white-space:nowrap}
.tag.y{background:#F3EEE2;color:#5C4A1E}
.tag.g{background:var(--posbg);color:#1F5C3B}
.tag.r{background:var(--negbg);color:#7E1B15}
.tag.w{background:var(--warnbg);color:var(--warn)}
.tbl-wrap{max-height:none;overflow:auto}
.more{display:block;margin:14px auto;min-height:40px;padding:0 18px;border-radius:20px;border:1px solid #D6CFBF;background:#fff}
.btn{min-height:40px;padding:0 16px;border-radius:9px;border:1px solid var(--ink);background:var(--ink);color:#fff;font-size:14px}
.btn.sec{background:#fff;color:var(--ink);border-color:#D6CFBF}
.btn.ok{background:var(--pos);border-color:var(--pos)}
.btn.small{min-height:32px;padding:0 12px;font-size:13px}
.btn:disabled{opacity:.5;cursor:default}
.seg{display:inline-flex;border:1px solid #D6CFBF;border-radius:9px;overflow:hidden;background:#fff}
.seg button{border:0;background:transparent;min-height:36px;padding:0 14px;font-size:13px;color:var(--ink2)}
.seg button.on{background:var(--ink);color:#fff}
.drawer-bg{position:fixed;inset:0;background:rgba(27,34,48,.28);z-index:20}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);background:#fff;z-index:21;overflow:auto;padding:26px 28px 40px;box-shadow:-10px 0 30px rgba(0,0,0,.12);display:flex;flex-direction:column;gap:18px}
.x{position:absolute;top:16px;right:18px;border:0;background:transparent;font-size:26px;color:var(--mute);width:40px;height:40px}
.result{padding:16px;border-radius:10px;display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.result.p{background:var(--posbg)}.result.n{background:var(--negbg)}.result.z{background:#F3F1EB}
.result .big{font-family:var(--mono);font-size:24px}
.rows .row{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px solid var(--line2);font-size:14px}
.rows .row>div:first-child{color:var(--ink2)}
.rows .row>div:last-child{font-family:var(--mono);text-align:right}
.fills td,.fills th{padding:7px 8px;font-size:12.5px}
.fills th{font-size:10.5px}
textarea.notes{width:100%;min-height:96px;resize:vertical;padding:12px;border:1px solid #D6CFBF;border-radius:10px;font-size:14px;line-height:1.5;background:#FDFCF9}
.tagbox{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tagbox .tag button{border:0;background:transparent;color:inherit;padding:0 0 0 6px;font-size:13px}
.tagbox input{border:1px dashed #B9B09C;border-radius:6px;padding:4px 8px;font-size:12.5px;width:150px;background:#fff}
.sugg button{border:1px solid var(--line);background:#FCFBF8;border-radius:6px;font-size:12px;padding:3px 8px;margin:0 4px 4px 0;color:var(--ink2)}
.drop{display:block;cursor:pointer;border:2px dashed #B9B09C;border-radius:14px;padding:34px 20px;text-align:center;background:#FDFCF9;transition:.15s}
.drop.over{background:var(--accbg);border-color:var(--acc)}
.drop b{font-size:16px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.field label{font-size:13px;font-weight:600}
.field input{min-height:40px;border:1px solid #D6CFBF;border-radius:8px;padding:0 12px;background:#fff}
.log{font-family:var(--mono);font-size:12px;background:#F7F5EF;border-radius:8px;padding:10px 12px;white-space:pre-wrap;max-height:180px;overflow:auto}
.check{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line2);font-size:13.5px;align-items:flex-start}
.check .st{flex-shrink:0;width:72px}
.empty{max-width:640px;margin:60px auto;text-align:center}
.empty h1{font-size:36px}
.empty p{color:var(--ink2);line-height:1.6}
.legs{font-size:13px;color:var(--ink2);line-height:1.6}
.strat-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#FFFDF7;display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap}
svg text{font-family:var(--sans)}
.bar-lab{font-size:10.5px;fill:var(--mute)}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 18px;border-radius:10px;font-size:14px;z-index:40;box-shadow:0 6px 20px rgba(0,0,0,.2)}
.toast.err{background:var(--neg)}
.loading{padding:80px;text-align:center;color:var(--mute)}
.split{display:flex;gap:6px;align-items:center}
.hbar{height:8px;border-radius:4px;background:var(--line2);overflow:hidden;min-width:80px}
.hbar i{display:block;height:100%}
details summary{cursor:pointer}
@media (max-width:1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g21,.g3{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){nav.side{display:none}main{padding:20px 16px}.g2{grid-template-columns:minmax(0,1fr)}}
.who{margin-top:6px;padding-top:10px;border-top:1px solid #3A4456;display:flex;justify-content:space-between;gap:8px;align-items:center;word-break:break-all}
.linkbtn{border:0;background:transparent;color:#E4B44C;padding:0;font-size:12px;flex-shrink:0;cursor:pointer}
a.act,button.act{font-size:12px;color:var(--acc);text-decoration:none;border:0;background:transparent;padding:0;cursor:pointer}
a.act:hover,button.act:hover{text-decoration:underline}
.plan{border:1px solid var(--line);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:10px;background:#FFFDF7}
.plan .price{font-family:var(--mono);font-size:28px}
.job{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line2);font-size:13.5px;align-items:center}
.danger{border-color:#E7C3BF}
.btn.del{background:var(--neg);border-color:var(--neg)}
a.btn{display:inline-flex;align-items:center;text-decoration:none}
.menu a{display:flex;align-items:center;justify-content:space-between;min-height:42px;padding:0 14px;border-radius:8px;color:var(--navtx);text-decoration:none}
.menu a:hover{background:#252D3B;color:#fff}
.menu a.on{background:var(--nav2);color:#fff;font-weight:500}
.flashes{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.flash{padding:11px 14px;border-radius:10px;font-size:14px;background:var(--accbg);color:#1C3566;border:1px solid #D3DCEE}
.flash.success{background:var(--posbg);color:#1F5C3B;border-color:#CFE5D8}
.flash.error{background:var(--negbg);color:#7E1B15;border-color:#F0CFCB}
.flash.warning{background:var(--warnbg);color:var(--warn);border-color:#EEDDB5}
.inline{display:inline}
.inline-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.inline-form input{min-height:32px;border:1px solid #D6CFBF;border-radius:6px;padding:0 8px;font-size:13px}
.back{font-size:13px;color:var(--mute);text-decoration:none}
.back:hover{color:var(--ink)}
tr.click td a.rowlink{color:inherit;text-decoration:none}
.chip{display:inline-flex;align-items:center;text-decoration:none}
/* pagine di accesso */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.auth .side{background:var(--ink);color:#F6F3EC;padding:56px 48px;display:flex;flex-direction:column;justify-content:space-between}
.auth .side .brand{font-size:30px}
.auth .side ul{list-style:none;padding:0;margin:40px 0 0;display:flex;flex-direction:column;gap:18px;color:#C9CDD6;line-height:1.5;max-width:420px}
.auth .side li b{color:#fff;display:block;font-weight:500}
.auth .side small{color:#9AA1AE;font-size:12.5px;line-height:1.5}
.auth main{display:flex;align-items:center;justify-content:center;padding:40px 16px}
.auth .box{width:min(400px,100%)}
.auth h1{margin-bottom:6px}
.auth .lead{color:var(--ink2);margin:0 0 24px;line-height:1.5}
.auth .field input{min-height:44px}
.auth .btn{width:100%;min-height:46px;margin-top:6px}
.auth .links{margin-top:18px;font-size:13.5px;color:var(--ink2);display:flex;flex-direction:column;gap:6px}
@media (max-width:860px){.auth{grid-template-columns:minmax(0,1fr)}.auth .side{padding:32px 24px}.auth .side ul{display:none}}
/* beta: banner, link laterali, pagine informative */
.banner{display:block;margin:-6px 0 16px;padding:12px 16px;border-radius:10px;background:var(--warnbg);color:var(--warn);border:1px solid #EEDDB5;text-decoration:none;font-size:14px}
.banner.err{background:var(--negbg);color:#7E1B15;border-color:#F0CFCB}
.sidelinks{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px;padding-top:10px;border-top:1px solid #3A4456}
.sidelinks a{color:var(--navtx);font-size:12px;text-decoration:none}
.sidelinks a:first-child{color:#E4B44C;flex-basis:100%;font-weight:500}
.sidelinks a:hover{color:#fff}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:var(--ink2);line-height:1.5;margin:4px 0 14px}
.consent input{margin-top:3px;width:16px;height:16px;flex-shrink:0}
.pagebar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 24px;background:var(--nav);color:#fff}
.pagebar a{color:var(--navtx);text-decoration:none;font-size:14px}
.pagebar a:hover{color:#fff}
.pagebar nav{display:flex;gap:18px;flex-wrap:wrap}
.pagebar .brand-sm{font-family:var(--serif);font-size:19px;font-weight:600;color:#fff}
.beta{font-family:var(--sans);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;background:#E4B44C;color:var(--ink);border-radius:5px;padding:2px 6px;vertical-align:3px}
.prose{max-width:820px;margin:0 auto;padding:36px 20px 70px;line-height:1.6}
.prose h1{font-size:34px;margin-bottom:10px}
.prose h2{margin:32px 0 10px}
.prose h3{margin:22px 0 8px}
.prose .lead{font-size:16px;color:var(--ink2)}
.prose li{margin:4px 0}
.prose table{margin:10px 0 6px;background:#fff;border:1px solid var(--line);border-radius:10px}
.prose td{vertical-align:top;font-size:13.5px}
.prose code{font-family:var(--mono);font-size:12.5px;background:#EFEBE1;padding:1px 5px;border-radius:4px}
.callout{background:var(--posbg);border:1px solid #CFE5D8;color:#1F5C3B;border-radius:10px;padding:12px 16px;margin:16px 0;font-size:14.5px}
.callout.todo{background:var(--warnbg);border-color:#EEDDB5;color:var(--warn)}
