:root{
--ink:#11161C;
--ink-2:#1B232C;
--ink-3:#2A343F;
--safelight:#F0A02B;
--safelight-dim:#B87A1E;
--paper:#FFFFFF;
--paper-edge:#E4E2DC;
--graphite:#4E5A62;
--text-dark:#1A1F24;
--text-mid:#5C666F;
--line:#DDDBD4;
--danger:#C0392B;
--ok:#2E7D57;
--radius:3px;
--display:"Fraunces",Georgia,"Times New Roman",serif;
--body:"Inter Tight",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
font-family:var(--body);
background:var(--ink);
color:#E9EDF1;
font-size:15px;
line-height:1.5;
-webkit-font-smoothing:antialiased;
}

/* ---------- intestazione app ---------- */
.topbar{
display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
padding:18px 22px;
border-bottom:1px solid var(--ink-3);
background:linear-gradient(180deg,#161D25,#11161C);
}
.topbar .mark{
font-family:var(--display);font-weight:600;font-size:20px;letter-spacing:.2px;color:#fff;
}
.topbar .mark .dot{color:var(--safelight)}
.topbar .claim{font-size:13px;color:#8B959E}
.topbar .privacy{
margin-left:auto;font-family:var(--mono);font-size:11px;letter-spacing:.04em;
color:var(--safelight);border:1px solid var(--safelight-dim);
padding:4px 9px;border-radius:99px;white-space:nowrap;
}

/* ---------- griglia ---------- */
.wrap{
display:grid;grid-template-columns:minmax(340px,440px) 1fr;
gap:0;align-items:start;
}
.studio{padding:22px;border-right:1px solid var(--ink-3);min-height:calc(100vh - 63px)}
.stage{padding:26px 22px 60px;background:#0C1015;min-height:calc(100vh - 63px)}

/* ---------- pannello sinistro ---------- */
.block{margin-bottom:26px}
.block > h2{
font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.12em;
text-transform:uppercase;color:var(--safelight);
margin:0 0 12px;display:flex;align-items:center;gap:10px;
}
.block > h2::after{content:"";flex:1;height:1px;background:var(--ink-3)}
label{display:block;font-size:12px;color:#9AA4AD;margin-bottom:4px}
input,select,textarea{
width:100%;font-family:var(--body);font-size:14px;color:#EDF1F5;
background:var(--ink-2);border:1px solid var(--ink-3);border-radius:var(--radius);
padding:9px 10px;
}
textarea{resize:vertical;min-height:66px}
input:focus,select,textarea:focus,button:focus-visible{outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--safelight);box-shadow:0 0 0 3px rgba(240,160,43,.16)}
button:focus-visible{outline:2px solid var(--safelight);outline-offset:2px}
input::placeholder,textarea::placeholder{color:#5D666E}
.field{margin-bottom:12px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hint{font-size:11.5px;color:#79838C;margin-top:5px}
.req{color:var(--safelight)}

button{
font-family:var(--body);font-size:13.5px;cursor:pointer;
border-radius:var(--radius);border:1px solid var(--ink-3);
background:var(--ink-2);color:#E9EDF1;padding:9px 12px;
transition:background .15s,border-color .15s;
}
button:hover{background:var(--ink-3)}
.btn-primary{background:var(--safelight);border-color:var(--safelight);color:#1A1206;font-weight:600}
.btn-primary:hover{background:#FFB444;border-color:#FFB444}
.btn-mini{padding:4px 8px;font-size:12px;background:transparent}
.btn-danger:hover{border-color:var(--danger);color:#FF8A7A}

/* listino */
.listino-item{
display:grid;grid-template-columns:1fr 96px auto auto;gap:8px;align-items:center;
padding:7px 0;border-bottom:1px solid var(--ink-2);
}
.listino-item input[type=text]{padding:6px 8px;font-size:13.5px}
.listino-item input[type=number]{padding:6px 8px;font-size:13.5px;font-family:var(--mono);text-align:right}
.listino-add{display:grid;grid-template-columns:1fr 96px auto;gap:8px;margin-top:12px}

/* voci preventivo */
.voce-row{
display:grid;grid-template-columns:1fr 74px auto;gap:8px;align-items:center;margin-bottom:8px;
}
.voce-row input[type=number]{font-family:var(--mono);text-align:right}
.empty{
border:1px dashed var(--ink-3);border-radius:var(--radius);
padding:14px;font-size:13px;color:#8B959E;text-align:center;
}

/* ---------- foglio preventivo ---------- */
.sheet{
background:var(--paper);color:var(--text-dark);
max-width:760px;margin:0 auto;
padding:44px 46px 40px;
border:1px solid var(--paper-edge);
box-shadow:0 24px 60px rgba(0,0,0,.5);
position:relative;
}
/* firma visiva: bordo di stampa a contatto, come un provino */
.sheet::before{
content:"";position:absolute;inset:12px;border:1px solid #EFEDE7;pointer-events:none;
}
.sheet-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap}
.sheet-head h1{
font-family:var(--display);font-weight:600;font-size:27px;line-height:1.15;margin:0;letter-spacing:-.2px;
}
.sheet-head h1 .sep{color:var(--safelight-dim)}
.sheet-head .sub{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mid);margin-top:8px}
.doc-meta{font-family:var(--mono);font-size:11.5px;color:var(--text-mid);text-align:right;line-height:1.7}
.rule{height:2px;background:var(--text-dark);margin:22px 0 20px}

.cliente{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px 24px;margin-bottom:26px}
.cliente .k{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-mid)}
.cliente .v{font-size:14.5px;margin-top:2px}

table{width:100%;border-collapse:collapse}
thead th{
font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
color:var(--text-mid);text-align:left;font-weight:500;
border-bottom:1px solid var(--text-dark);padding-bottom:7px;
}
thead th.num,tbody td.num{text-align:right}
tbody td{padding:11px 0;border-bottom:1px solid var(--line);font-size:14.5px;vertical-align:top}
tbody td.num{font-family:var(--mono);font-size:13.5px;white-space:nowrap}

.totali{margin-top:20px;margin-left:auto;width:min(330px,100%)}
.totali div{display:flex;justify-content:space-between;gap:20px;padding:6px 0;font-size:14px}
.totali div span:last-child{font-family:var(--mono);font-size:13.5px}
.totali .sconto{color:var(--safelight-dim)}
.totali .imponibile{border-top:1px solid var(--line);margin-top:4px;padding-top:10px}
.totali .totale{
border-top:2px solid var(--text-dark);margin-top:8px;padding-top:12px;
font-weight:600;font-size:17px;
}
.totali .totale span:last-child{font-size:19px;font-family:var(--mono);font-weight:500}

.sheet-foot{
margin-top:30px;padding-top:16px;border-top:1px solid var(--line);
display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
font-size:12.5px;color:var(--text-mid);
}
.sheet-foot .validita{font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--text-dark)}

/* stato incompleto */
.todo{border:1px solid #E9B7B0;background:#FDF5F4;padding:18px 20px;border-radius:var(--radius)}
.todo h3{margin:0 0 8px;font-size:14px;color:var(--danger);font-family:var(--body);font-weight:600}
.todo ul{margin:0;padding-left:18px;font-size:13.5px;color:#7A4038}
.todo li{margin-bottom:3px}
.placeholder-note{font-size:12.5px;color:var(--text-mid);margin-top:12px;font-style:italic}

.stage-actions{max-width:760px;margin:0 auto 16px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.stage-actions .note{font-size:12px;color:#79838C;margin-left:auto}

.err-inline{color:#FF9A8C;font-size:12px;margin-top:5px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

@media (max-width:900px){
.wrap{grid-template-columns:1fr}
.studio{border-right:none;border-bottom:1px solid var(--ink-3);min-height:0}
.stage{padding:20px 14px 50px;min-height:0}
.sheet{padding:26px 20px 24px}
.sheet::before{inset:7px}
.sheet-head h1{font-size:22px}
.doc-meta{text-align:left}
.topbar{padding:14px}
.topbar .privacy{margin-left:0;width:100%}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

@media print{
body{background:#fff}
.topbar,.studio,.stage-actions{display:none!important}
.wrap{display:block}
.stage{padding:0;background:#fff;min-height:0}
.sheet{box-shadow:none;border:none;max-width:none;padding:0}
.sheet::before{display:none}
}
