:root{--bg:#08131f;--panel:#102235;--panel2:#0c1b2b;--line:#1e3a51;--line2:#2a526d;--txt:#f4f8fc;--muted:#93a9bc;--acc:#00ffff;--acc-ink:#04121d;--ok:#3ddc84;--warn:#ffc857;--err:#ff6b6b;color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--txt);font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{width:100%;background:#071522;border:1px solid var(--line2);border-radius:10px;padding:10px 12px;min-height:42px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--acc);outline-offset:1px}
textarea{resize:vertical}
button{background:var(--acc);color:var(--acc-ink);border:0;border-radius:10px;padding:10px 16px;font-weight:700;cursor:pointer;min-height:42px}
button:disabled{opacity:.5;cursor:default}
button.ghost,.filebtn{background:transparent;color:var(--acc);border:1px solid var(--line2);font-weight:600}
button.danger{background:transparent;color:var(--err);border:1px solid #5a2a33}
.filebtn{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:10px;cursor:pointer;min-height:42px}
label{display:block;font-size:13px;color:var(--muted);margin:0 0 12px}
label>input,label>select,label>textarea{margin-top:4px}
.chk{display:flex;gap:8px;align-items:center;margin:0;white-space:nowrap}.chk input{width:auto;min-height:0}
.login{max-width:380px;margin:12vh auto 0;padding:0 16px;text-align:center}
.login h1{margin:14px 0 4px;letter-spacing:.06em}.login p{color:var(--muted);margin:0 0 22px}
.login form{display:grid;gap:10px}.login small{display:block;margin-top:18px;color:var(--muted)}
.logo{width:72px;height:72px;margin:auto;border-radius:18px;background:var(--acc);color:var(--acc-ink);display:grid;place-items:center;font-size:40px}
.logo.small{width:40px;height:40px;font-size:22px;border-radius:11px;margin:0}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:#0a1928;border-bottom:1px solid var(--line)}
.head-t{flex:1;min-width:0}.head-t h1{font-size:16px;margin:0;letter-spacing:.05em}.head-t p{margin:0;color:var(--muted);font-size:12px}
header .ghost{min-height:34px;padding:6px 12px}
main{max-width:860px;margin:0 auto;padding:16px 16px 96px}
.view{display:none}.view.active{display:block}
nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:#091827;border-top:1px solid #22445d;padding-bottom:env(safe-area-inset-bottom);z-index:5}
nav button{flex:1;background:transparent;color:var(--muted);border-radius:0;font-weight:600;min-height:54px}
nav button.active{color:var(--acc)}
.toolbar{display:flex;align-items:center;gap:10px;margin:4px 0 14px;flex-wrap:wrap}.toolbar h2{margin:0;flex:1;font-size:20px}.grow{flex:1}
.filters{display:grid;grid-template-columns:1fr 180px auto;gap:8px;align-items:center;margin-bottom:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}
.card h3{margin:0 0 8px;font-size:16px}
fieldset{border:0;padding:0;margin:0 0 10px}legend{font-weight:700;color:var(--acc);font-size:12px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.two.w31{grid-template-columns:3fr 1fr}.three{display:grid;grid-template-columns:1.4fr .8fr 1fr;gap:10px}
.list{display:grid;gap:10px}
.pr{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px;cursor:pointer;display:grid;gap:6px}
.pr:hover{border-color:var(--line2)}
.pr .top{display:flex;gap:10px;align-items:flex-start}.pr h3{margin:0;font-size:16px;flex:1}
.pr .meta{color:var(--muted);font-size:13px;display:flex;flex-wrap:wrap;gap:4px 14px}
.badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:999px;border:1px solid var(--line2);color:var(--muted);white-space:nowrap}
.b-bozza{color:var(--muted)}.b-richiesta_inviata{color:#7cc4ff;border-color:#2d5d86}.b-contratti_ricevuti{color:var(--warn);border-color:#6b5520}
.b-firmati_inviati{color:#c3a6ff;border-color:#4b3d7a}.b-pagato{color:#7ff0d4;border-color:#23665a}.b-attivo{color:var(--ok);border-color:#1f6b43}.b-chiusa{color:#8292a2}
.empty{color:var(--muted);text-align:center;padding:40px 10px;border:1px dashed var(--line);border-radius:14px}
.steps{display:flex;gap:4px;margin:10px 0 4px;overflow-x:auto}
.steps span{flex:1;min-width:74px;font-size:11px;text-align:center;color:var(--muted);padding-top:8px;border-top:3px solid var(--line)}
.steps span.done{color:var(--txt);border-top-color:var(--acc)}.steps span.cur{color:var(--acc);font-weight:700;border-top-color:var(--acc)}
.kv{display:grid;grid-template-columns:140px 1fr;gap:4px 12px;font-size:14px}.kv dt{color:var(--muted)}.kv dd{margin:0}
.step{border-left:3px solid var(--line2);padding-left:14px}
.step h3{display:flex;align-items:center;gap:8px}.step .n{width:24px;height:24px;border-radius:50%;background:var(--line2);color:var(--txt);display:inline-grid;place-items:center;font-size:12px}
.step.done .n{background:var(--acc);color:var(--acc-ink)}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row.end{justify-content:flex-end}
.files{display:grid;gap:8px;margin:10px 0}
.file{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.file .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file .nm small{display:block;color:var(--muted);white-space:normal}
.file button{min-height:32px;padding:4px 10px;font-size:13px}
.rap{font-size:12px;color:var(--muted);margin:4px 0 0;padding-left:16px}.rap li.w{color:var(--warn)}
.hint{color:var(--muted);font-size:13px;margin:4px 0 10px}
.log{font-size:13px;color:var(--muted);display:grid;gap:4px}.log b{color:var(--txt);font-weight:600}
.warn{background:#2a2310;border:1px solid #6b5520;color:var(--warn);border-radius:10px;padding:8px 12px;font-size:13px;margin-bottom:8px}
.firma-row{display:flex;align-items:center;gap:12px}.firma-row img{height:48px;background:#fff;border-radius:6px;padding:2px 6px}
#punti .punto{display:grid;grid-template-columns:28px 1fr 1fr 2fr 32px;gap:6px;align-items:center;margin-bottom:6px}
#punti .punto button{min-height:36px;padding:0}
details summary{cursor:pointer;color:var(--acc);font-size:13px;margin:0 0 10px}
dialog{background:var(--panel);color:var(--txt);border:1px solid var(--line2);border-radius:16px;padding:18px;width:min(640px,calc(100vw - 24px));max-height:calc(100vh - 40px)}
dialog::backdrop{background:rgba(0,0,0,.6)}dialog h3{margin:0 0 12px}
.allegati{display:grid;gap:6px;margin:0 0 14px;font-size:13px}.allegati label{display:flex;gap:8px;align-items:center;margin:0;color:var(--txt)}.allegati input{width:auto;min-height:0}
#toast{position:fixed;left:50%;bottom:78px;transform:translateX(-50%) translateY(20px);opacity:0;background:var(--acc);color:var(--acc-ink);padding:10px 16px;border-radius:10px;font-weight:600;transition:.25s;pointer-events:none;max-width:calc(100vw - 32px);z-index:50}
#toast.show{opacity:1;transform:translateX(-50%)}#toast.err{background:var(--err);color:#fff}
@media (max-width:600px){.filters{grid-template-columns:1fr 1fr}.filters input[type=search]{grid-column:1/-1}.three{grid-template-columns:1fr 1fr}.three>label:first-child{grid-column:1/-1}.kv{grid-template-columns:110px 1fr}#punti .punto{grid-template-columns:22px 1fr 1fr 32px}#punti .punto .pn{grid-column:2/4}}
