:root{
  --bg:#F2F3F7; --surface:#fff; --ink:#15171C; --ink-2:#3A3F4B; --muted:#6B7280; --faint:#A0A6B2;
  --line:#E3E6EC; --line-2:#EEF0F4; --head:#F8F9FB;
  --accent:#5A43C7; --accent-600:#4A35AC; --accent-50:#F2EFFD; --accent-100:#E5E0FA; --ring:rgba(90,67,199,.22);
  --band:#1D1740; --band-line:rgba(255,255,255,.12);
  --rec:#5A43C7; --one:#0B7F76; --one-50:#E5F4F2;
  --ok:#137A4D; --ok-50:#E6F5ED; --warn:#B25E0C; --warn-50:#FDF1E2; --danger:#C0344C; --danger-50:#FDECEF; --info:#2F6FB5;
  --radius:12px;
  --shadow-sm:0 1px 2px rgba(21,23,28,.06);
  --font:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
.num{font-variant-numeric:tabular-nums}
svg{display:block}

/* ---------- Band ---------- */
.band{background:var(--band);color:#fff;padding:18px 32px 28px}
.brand-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:30px}
.brand{display:flex;align-items:center;gap:10px;font-weight:500;font-size:14px;color:rgba(255,255,255,.86)}
.brand b{color:#fff;font-weight:600}
.save-state{display:flex;align-items:center;gap:8px;font-size:12.5px;color:rgba(255,255,255,.62)}
.save-dot{width:7px;height:7px;border-radius:50%;background:#5CD6A0;box-shadow:0 0 0 3px rgba(92,214,160,.18)}
.hero{display:grid;grid-template-columns:minmax(260px,.9fr) 2fr;gap:40px;align-items:end}
.hero h1{margin:0;font-size:32px;line-height:1.1;font-weight:600;letter-spacing:-.025em}
.hero p{margin:10px 0 0;color:rgba(255,255,255,.66);max-width:44ch;font-size:14px}
.figures{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.figure{padding:0 24px;border-left:1px solid var(--band-line)}
.figure-label{display:flex;align-items:center;gap:8px;font-size:13px;color:rgba(255,255,255,.7)}
.figure-label i{width:8px;height:8px;border-radius:2px;display:inline-block}
.figure-value{font-size:36px;line-height:1.15;font-weight:600;letter-spacing:-.03em;margin-top:6px;font-variant-numeric:tabular-nums}
.figure-hint{font-size:12.5px;color:rgba(255,255,255,.5);margin-top:2px}
.composition{margin-top:28px;padding-top:18px;border-top:1px solid var(--band-line);display:grid;grid-template-columns:minmax(260px,.9fr) 2fr;gap:40px;align-items:center}
.composition-title{font-size:13px;color:rgba(255,255,255,.7)}
.bar{display:flex;height:10px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.08);gap:2px}
.bar span{height:100%;transition:width .35s cubic-bezier(.2,.8,.2,1)}
.legend{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:10px;font-size:12.5px;color:rgba(255,255,255,.72)}
.legend div{display:flex;align-items:center;gap:7px}
.legend i{width:8px;height:8px;border-radius:2px}
.legend b{color:#fff;font-weight:600;font-variant-numeric:tabular-nums}
.bar-empty{font-size:12.5px;color:rgba(255,255,255,.5);margin-top:10px}

/* ---------- Layout ---------- */
main{padding:24px 32px 64px}
.grid-panels{display:grid;gap:20px;align-items:stretch;margin:20px 0}
.grid-panels.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-panels.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.panel-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}
.panel-head h2{margin:0;font-size:15px;font-weight:600;letter-spacing:-.01em}
.panel-head p{margin:2px 0 0;font-size:13px;color:var(--muted)}
.count-badge{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;background:var(--accent-50);color:var(--accent);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- Pricing form ---------- */
.price-body{padding:6px 20px 20px}
.group-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink-2);margin:14px 0 10px}
.group-title i{width:8px;height:8px;border-radius:2px}
.price-grid{display:grid;gap:10px}
.field{display:grid;grid-template-columns:minmax(0,1fr) 188px;align-items:center;gap:12px}
.field label{display:block;font-size:13px;font-weight:500;color:var(--ink-2);line-height:1.35}
.input-group{display:flex;align-items:center;height:38px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}
.input-group:hover{border-color:#CDD1DA}
.input-group:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.input-group .pre,.input-group .suf{font-size:13px;color:var(--muted);white-space:nowrap}
.input-group .pre{padding-left:11px;font-weight:500}
.input-group .suf{padding-right:11px}
.input-group input{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;padding:0 8px;font-weight:600;font-variant-numeric:tabular-nums}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* ---------- Summary ---------- */
.sum-body{padding:4px 20px 16px}
.sum-section{padding:12px 0 6px}
.sum-section+.sum-section{border-top:1px solid var(--line-2)}
.sum-section h3{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:13px;font-weight:600;color:var(--ink-2)}
.sum-section h3 i{width:8px;height:8px;border-radius:2px}
.sum-row{display:flex;justify-content:space-between;gap:12px;padding:5px 0;font-size:13.5px;color:var(--ink-2)}
.sum-row b{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.sum-row.sub{font-size:12.5px;color:var(--muted);padding-top:0}
.sum-row.sub b{color:var(--ok);font-weight:500}
.sum-row.total{border-top:1px dashed var(--line);margin-top:4px;padding-top:9px;color:var(--ink);font-weight:600}
.sum-row.total b{font-size:15px}

/* ---------- Rules ---------- */
.rules{list-style:none;margin:0;padding:6px 20px 14px}
.rules li{display:grid;gap:7px;padding:12px 0}
.rules li+li{border-top:1px solid var(--line-2)}
.chain{display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.chip{display:inline-flex;align-items:center;height:24px;padding:0 8px;border-radius:6px;background:var(--accent-50);color:var(--accent-600);font-size:12px;font-weight:600;white-space:nowrap}
.chip.muted{background:#F1F2F5;color:var(--ink-2)}
.chip.ok{background:var(--ok-50);color:var(--ok)}
.chain svg{width:14px;height:14px;color:var(--faint)}
.chain .plus{font-size:12px;color:var(--faint);padding:0 2px}
.rules p{margin:0;font-size:13px;color:var(--muted)}

/* ---------- Filters ---------- */
.filters{display:flex;flex-wrap:wrap;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line);align-items:flex-end;background:#fff}
.ctl{display:flex;flex-direction:column;gap:6px;min-width:150px;flex:1}
.ctl.search{flex:2.2;min-width:240px}
.ctl label{font-size:13px;font-weight:500;color:var(--ink-2)}
.ctl-input,.ctl-select{height:38px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:var(--shadow-sm);padding:0 11px;outline:0;transition:border-color .15s,box-shadow .15s;width:100%}
.ctl-input:hover,.ctl-select:hover{border-color:#CDD1DA}
.ctl-input:focus,.ctl-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.search-wrap{position:relative}
.search-wrap svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--faint);pointer-events:none}
.search-wrap .ctl-input{padding-left:35px}
.ctl-select,.cell-select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%239AA1AE' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;background-size:16px;padding-right:30px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 14px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:13.5px;font-weight:600;box-shadow:var(--shadow-sm);cursor:pointer;white-space:nowrap;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .08s}
.btn svg{width:17px;height:17px}
.btn:hover{background:#F7F8FA;border-color:#CDD1DA}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:0;box-shadow:0 0 0 3px var(--ring)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-600);border-color:var(--accent-600)}
.btn-quiet{border-color:transparent;background:transparent;box-shadow:none;color:var(--muted)}
.btn-quiet:hover{background:#F1F2F5;border-color:transparent;color:var(--ink)}
.btn-quiet.danger:hover{background:var(--danger-50);color:var(--danger)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn:disabled:hover{background:transparent}

/* ---------- Table ---------- */
.table-panel{position:relative}
.sentinel{height:0}
.thead-wrap{position:sticky;top:0;z-index:40;overflow:hidden;background:var(--head);border-bottom:1px solid var(--line);transition:box-shadow .2s}
.thead-wrap.stuck{box-shadow:0 8px 18px -12px rgba(21,23,28,.35)}
.tbody-wrap{overflow-x:auto;overflow-y:visible;scrollbar-width:none}
.tbody-wrap::-webkit-scrollbar{display:none}
.hproxy{position:sticky;bottom:0;z-index:35;overflow-x:auto;overflow-y:hidden;background:rgba(248,249,251,.96);border-top:1px solid var(--line)}
.hproxy div{height:1px}
.tbl{border-collapse:separate;border-spacing:0;table-layout:fixed}
.tbl th{height:46px;padding:0 10px;background:var(--head);text-align:left;font-size:12.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.tbl td{height:52px;padding:0 8px;background:#fff;border-bottom:1px solid var(--line-2);font-size:13.5px;vertical-align:middle}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl tbody tr:hover td{background:#FAFAFD}
.tbl .c{text-align:center}
.tbl .r{text-align:right}
.tbl th.r{padding-right:14px}
.sticky-col{position:sticky;left:0;z-index:2}
.tbl th.sticky-col{z-index:3}
.shell.scrolled .sticky-col{box-shadow:1px 0 0 var(--line),10px 0 14px -12px rgba(21,23,28,.4)}
.th-tip{display:inline-flex;align-items:center;gap:5px;cursor:help;border-radius:6px;padding:3px 4px;margin:0 -4px;outline:0;transition:background-color .15s,color .15s}
.th-tip:hover,.th-tip:focus-visible{background:#EDEEF3;color:var(--ink)}
.th-tip:focus-visible{box-shadow:0 0 0 2px var(--ring)}
.th-tip svg{width:15px;height:15px;color:var(--faint)}
.th-tip:hover svg,.th-tip:focus-visible svg{color:var(--accent)}

.cell-input,.cell-select{width:100%;height:36px;border:1px solid transparent;border-radius:7px;background-color:transparent;padding:0 8px;outline:0;font-size:13.5px;transition:border-color .15s,background-color .15s,box-shadow .15s}
.cell-select{padding-right:28px;background-position:right 7px center;cursor:pointer;text-overflow:ellipsis}
.tbl tbody tr:hover .cell-input,.tbl tbody tr:hover .cell-select{border-color:var(--line);background-color:#fff}
.cell-input:focus,.cell-select:focus{border-color:var(--accent)!important;background-color:#fff!important;box-shadow:0 0 0 3px var(--ring)}
.cell-input.domain{font-weight:600}
.cell-input::placeholder{color:var(--faint);font-weight:400}
.status-select{padding-left:24px;background-image:radial-gradient(circle at 12px 50%,var(--dot) 0 3.5px,transparent 4px),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%239AA1AE' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:0 0,right 7px center;background-size:auto,16px}
.tone-done{--dot:#0E9F92}.tone-ok{--dot:#1FA36A}.tone-accent{--dot:#6A50E0}.tone-warn{--dot:#E08A1E}.tone-info{--dot:#3B82C4}.tone-idle{--dot:#B3B8C2}.tone-danger{--dot:#D9435C}

.num-input{text-align:center;font-weight:600;font-variant-numeric:tabular-nums;padding:0 4px}
.num-input:disabled{pointer-events:none;color:var(--faint);font-weight:400;cursor:not-allowed;background:transparent!important;border-color:transparent!important}
.num-input.need{border-color:#F1C48A!important;background:var(--warn-50)!important;color:var(--warn)}

.cbx-wrap{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:8px;vertical-align:middle}
.cbx-wrap.locked{cursor:not-allowed}
.cbx{appearance:none;-webkit-appearance:none;margin:0;width:21px;height:21px;border:1.5px solid #C4C9D3;border-radius:6px;background:#fff;display:grid;place-content:center;cursor:pointer;transition:background-color .15s,border-color .15s,box-shadow .15s,transform .1s}
.cbx::before{content:"";width:13px;height:13px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M16.7 5.3a1 1 0 0 1 0 1.4l-8 8a1 1 0 0 1-1.4 0l-4-4a1 1 0 0 1 1.4-1.4L8 12.6l7.3-7.3a1 1 0 0 1 1.4 0z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M16.7 5.3a1 1 0 0 1 0 1.4l-8 8a1 1 0 0 1-1.4 0l-4-4a1 1 0 0 1 1.4-1.4L8 12.6l7.3-7.3a1 1 0 0 1 1.4 0z'/%3E%3C/svg%3E") center/contain no-repeat;transform:scale(0);transition:transform .16s cubic-bezier(.2,.9,.3,1.3)}
.cbx:checked{background:var(--accent);border-color:var(--accent)}
.cbx:checked::before{transform:scale(1)}
.cbx:hover:not(:disabled){border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-50)}
.cbx:focus-visible{outline:0;box-shadow:0 0 0 3px var(--ring)}
.cbx:active:not(:disabled){transform:scale(.9)}
.cbx:disabled{background:#F1F2F5;border-color:#E2E5EA;pointer-events:none}

.badge{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px 0 6px;border-radius:999px;font-size:12.5px;font-weight:600;cursor:default}
.badge svg{width:15px;height:15px}
.badge.yes{background:var(--ok-50);color:var(--ok)}
.badge.no{background:transparent;color:#B0B5C0;font-weight:500}

.money{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap;padding-right:14px!important}
.money span{border-bottom:1px dotted transparent;cursor:default}
.money span.has{cursor:help;border-bottom-color:#C4C9D3}
.money.zero{color:var(--faint);font-weight:500}
.money.rec span.has{color:var(--rec)}
.money.one span.has{color:var(--one)}

.icon-btn{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:8px;border:0;background:transparent;color:var(--faint);cursor:pointer;transition:background-color .15s,color .15s}
.icon-btn svg{width:18px;height:18px}
.icon-btn:hover{background:var(--danger-50);color:var(--danger)}
.icon-btn:focus-visible{outline:0;box-shadow:0 0 0 3px var(--ring)}

.empty td{height:auto;padding:44px 20px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}
.empty .btn{margin-top:14px}

.table-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:14px 20px;border-top:1px solid var(--line);background:#FBFBFD;border-radius:0 0 var(--radius) var(--radius)}
.foot-actions{display:flex;flex-wrap:wrap;gap:8px}
.foot-note{font-size:12.5px;color:var(--muted)}

/* ---------- Tooltip ---------- */
.tip{position:fixed;left:0;top:0;z-index:1000;max-width:290px;padding:10px 12px 11px;border-radius:10px;background:#1B1D25;color:#fff;box-shadow:0 14px 34px -10px rgba(10,12,22,.45),inset 0 0 0 1px rgba(255,255,255,.07);opacity:0;visibility:hidden;pointer-events:none;transform:translateY(5px) scale(.97);transform-origin:var(--ox,50%) top;transition:opacity .14s ease,transform .18s cubic-bezier(.2,.8,.2,1),visibility 0s linear .18s}
.tip[data-side="top"]{transform:translateY(-5px) scale(.97);transform-origin:var(--ox,50%) bottom}
.tip.show{opacity:1;visibility:visible;transform:none;transition:opacity .14s ease,transform .18s cubic-bezier(.2,.8,.2,1),visibility 0s}
.tip-arrow{position:absolute;width:10px;height:10px;background:#1B1D25;transform:rotate(45deg);top:-4px;border-radius:2px}
.tip[data-side="top"] .tip-arrow{top:auto;bottom:-4px}
.tip-title{position:relative;font-size:13.5px;font-weight:600;line-height:1.3;letter-spacing:-.005em}
.tip-desc{position:relative;margin-top:4px;font-size:12.5px;line-height:1.45;color:rgba(255,255,255,.72)}
.tip-rows{position:relative;margin-top:8px;padding-top:7px;border-top:1px solid rgba(255,255,255,.1)}
.tip-rows div{display:flex;justify-content:space-between;gap:18px;font-size:12.5px;line-height:1.7;color:rgba(255,255,255,.75)}
.tip-rows b{color:#fff;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.tip-rows .save b{color:#7EE2B3}

/* ---------- Toast ---------- */
.toast{position:fixed;right:24px;bottom:28px;z-index:1100;display:flex;gap:10px;align-items:flex-start;max-width:380px;padding:12px 14px;border-radius:12px;background:#fff;border:1px solid var(--line);box-shadow:0 18px 40px -16px rgba(21,23,28,.35);font-size:13.5px;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .2s,transform .25s cubic-bezier(.2,.8,.2,1)}
.toast.show{opacity:1;transform:none;pointer-events:auto}
.toast svg{width:20px;height:20px;flex:0 0 auto;color:var(--accent);margin-top:1px}
.toast b{display:block;font-weight:600}
.toast span{color:var(--muted);font-size:13px}

@media (max-width:1400px){
  .grid-panels.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-panels.cols-3 > .panel:first-child{grid-row:span 2}
}
@media (max-width:1180px){
  .hero,.composition{grid-template-columns:1fr;gap:20px}
  .figure:first-child{border-left:0;padding-left:0}
  .grid-panels.cols-3,.grid-panels.cols-2{grid-template-columns:minmax(0,1fr)}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .band,main{padding-left:16px;padding-right:16px}
  .figures{grid-template-columns:1fr;gap:14px}
  .figure{border-left:0;padding:0}
  .figure-value{font-size:30px}
  .field{grid-template-columns:minmax(0,1fr)}
  .kpis{grid-template-columns:minmax(0,1fr)}
  .user-meta{display:none}
  .login{grid-template-columns:1fr}
  .login-side{padding:28px 20px;min-height:auto}
  .login-claim h1{font-size:28px}
  .rules li{grid-template-columns:1fr;gap:6px}
  .save-state span{display:none}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* ---------- Band: utente e sincronizzazione ---------- */
.band-right{display:flex;align-items:center;gap:18px}
.save-state[data-state="saving"] .save-dot{background:#F5B84B;box-shadow:0 0 0 3px rgba(245,184,75,.2);animation:pulse 1s ease-in-out infinite}
.save-state[data-state="error"] .save-dot{background:#F2667D;box-shadow:0 0 0 3px rgba(242,102,125,.22)}
.save-state[data-state="error"]{color:#FFC2CC}
@keyframes pulse{50%{opacity:.45}}
.user-menu{display:flex;align-items:center;gap:10px;padding-left:18px;border-left:1px solid var(--band-line)}
.user-avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#3A2F7A;color:#E4DEFA;font-size:13px;font-weight:600}
.user-meta{display:flex;align-items:center;gap:8px}
.user-email{font-size:13px;color:rgba(255,255,255,.86)}
.role-pill{height:20px;padding:0 7px;border-radius:6px;font-size:11.5px;font-weight:600;display:inline-flex;align-items:center}
.role-admin{background:rgba(201,190,255,.18);color:#D9D1FF}
.role-editor{background:rgba(79,209,197,.16);color:#8BE5DB}
.user-menu form{margin:0}
.btn-logout{height:30px;padding:0 11px;border-radius:7px;border:1px solid var(--band-line);background:transparent;color:rgba(255,255,255,.85);font-size:13px;font-weight:500;cursor:pointer;transition:background-color .15s,border-color .15s}
.btn-logout:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.24)}
.btn-logout:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(201,190,255,.35)}

/* ---------- Dashboard ---------- */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line-2);border-radius:0 0 var(--radius) var(--radius);overflow:hidden}
.kpi{background:#fff;padding:18px 20px 20px;min-width:0}
.kpi-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--muted)}
.kpi-label svg{width:16px;height:16px;color:var(--faint)}
.kpi-value{margin-top:8px;font-size:32px;line-height:1.1;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi-value small{font-size:15px;font-weight:500;color:var(--muted);letter-spacing:0;margin-left:4px}
.kpi-value.rec{color:var(--rec)}
.kpi-value.one{color:var(--one)}
.kpi-value.ok{color:var(--ok)}
.kpi-value.warn{color:var(--warn)}
.kpi-sub{margin-top:4px;font-size:12.5px;color:var(--muted);line-height:1.4}
.kpi-meter{margin-top:10px;height:6px;border-radius:999px;background:var(--line-2);overflow:hidden}
.kpi-meter span{display:block;height:100%;border-radius:999px;background:var(--accent);transition:width .35s cubic-bezier(.2,.8,.2,1)}
.kpi-split{display:flex;gap:2px;margin-top:10px;height:6px;border-radius:999px;overflow:hidden;background:var(--line-2)}
.kpi-split span{height:100%;transition:width .35s cubic-bezier(.2,.8,.2,1)}

.btn[aria-busy="true"]{opacity:.7;pointer-events:none}

/* ---------- Login ---------- */
.login-body{background:#fff}
.login{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}
.login-side{background:var(--band);color:#fff;padding:32px 48px;display:flex;flex-direction:column;justify-content:space-between;gap:40px;min-height:100vh}
.login-claim{max-width:30rem}
.login-claim h1{margin:0;font-size:40px;line-height:1.05;font-weight:600;letter-spacing:-.03em}
.login-claim p{margin:14px 0 0;font-size:16px;color:rgba(255,255,255,.68)}
.login-foot{margin:0;font-size:12.5px;color:rgba(255,255,255,.45)}
.login-main{display:grid;place-items:center;padding:40px 24px}
.login-card{width:100%;max-width:380px}
.login-card h2{margin:0;font-size:24px;font-weight:600;letter-spacing:-.02em}
.login-sub{margin:6px 0 24px;color:var(--muted)}
.login-field{display:grid;gap:6px;margin-bottom:16px}
.login-field label{font-size:13px;font-weight:500;color:var(--ink-2)}
.login-field .ctl-input{height:42px;font-size:14.5px}
.btn-block{width:100%;height:42px;margin-top:6px;font-size:14.5px}
.alert{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;margin-bottom:18px;border-radius:9px;background:var(--danger-50);color:var(--danger);font-size:13.5px;border:1px solid #F7CBD3}
.alert svg{width:18px;height:18px;flex:0 0 auto;margin-top:1px}

/* ---------- Priorità ---------- */
.prio-select{padding-left:26px;font-weight:600;background-image:radial-gradient(circle at 13px 50%,var(--pdot) 0 4px,transparent 4.5px),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%239AA1AE' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:0 0,right 7px center;background-size:auto,16px}
.prio-urgent{--pdot:#DC3A55;color:#B42840;background-color:#FDECEF!important;border-color:#F8CDD5!important}
.prio-medium{--pdot:#E6901F;color:#9A560C;background-color:#FEF4E4!important;border-color:#F7DDB3!important}
.prio-low{--pdot:#AEB4BF;color:#5B6270;font-weight:500}
.prio-select option{color:var(--ink);background:#fff;font-weight:400}

/* ---------- Popup ---------- */
.modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:20px}
.modal[hidden]{display:none}
.modal-backdrop{position:absolute;inset:0;background:rgba(21,18,43,.46);backdrop-filter:blur(2px);opacity:0;transition:opacity .2s ease}
.modal-panel{position:relative;width:100%;max-width:440px;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 28px 64px -18px rgba(15,12,40,.45),0 0 0 1px rgba(21,23,28,.05);opacity:0;transform:translateY(12px) scale(.96);transition:opacity .2s ease,transform .24s cubic-bezier(.2,.8,.2,1)}
.modal.open .modal-backdrop{opacity:1}
.modal.open .modal-panel{opacity:1;transform:none}
.modal-head{display:flex;align-items:center;gap:12px;padding:16px 24px;background:var(--band);color:#fff}
.modal-icon{width:36px;height:36px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;background:rgba(201,190,255,.16);color:#D9D1FF}
.modal-icon svg{width:19px;height:19px}
.modal-head h3{margin:0;font-size:16.5px;font-weight:600;letter-spacing:-.01em;line-height:1.3}
.modal-body{padding:18px 24px 24px}
.modal-body > p{margin:0;color:var(--muted);font-size:13.5px}
.modal-body > p b{color:var(--ink);font-weight:600;white-space:nowrap}
.modal-fields{margin-top:18px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.check-row{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;cursor:pointer;transition:background-color .15s}
.check-row:hover{background:#FAFAFD}
.check-row .cbx{margin-top:1px;flex:0 0 auto}
.check-row b{display:block;font-size:14px;font-weight:600}
.check-row small{display:block;font-size:12.5px;color:var(--muted)}
.modal-count{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-top:1px solid var(--line-2);transition:opacity .15s}
.modal-count label{font-size:13.5px;font-weight:500;color:var(--ink-2)}
.modal-count .ctl-input{width:96px;text-align:center;font-weight:600;font-variant-numeric:tabular-nums}
.modal-count.is-disabled{opacity:.5}
.modal-count .ctl-input:disabled{background:#F4F5F8;cursor:not-allowed;box-shadow:none}
.ctl-input.invalid{border-color:var(--danger);box-shadow:0 0 0 3px rgba(192,52,76,.15)}
.field-error{margin:0;padding:0 14px 11px;font-size:12.5px;color:var(--danger)}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
.modal-actions .btn{min-width:88px}
.modal-total{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-top:1px solid var(--line-2);background:#FAFAFD;font-size:13.5px;font-weight:500;color:var(--ink-2)}
.modal-total-values{display:grid;justify-items:end;gap:1px;font-variant-numeric:tabular-nums}
.modal-total-values b{font-weight:600;font-size:14px;transition:color .15s}
.modal-total-values .one{color:var(--one)}
.modal-total-values .rec{color:var(--rec)}
.modal-total.is-empty .modal-total-values b{color:var(--faint)}

/* ---------- Listino in sola lettura ---------- */
.readonly-badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:999px;background:#F1F2F5;color:var(--ink-2);font-size:12px;font-weight:600;white-space:nowrap}
.readonly-badge svg{width:14px;height:14px;color:var(--muted)}
.price-body.is-readonly .price-grid{gap:0}
.field.static{grid-template-columns:minmax(0,1fr) auto;padding:9px 0;border-bottom:1px dashed var(--line-2)}
.price-grid .field.static:last-child{border-bottom:0}
.field-label{font-size:13.5px;color:var(--ink-2)}
.price-static{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.price-static b{font-size:14px;font-weight:600;color:var(--ink)}
.price-static span{font-size:12.5px;color:var(--muted)}
