:root{color-scheme:light;--bg:#f5f5f7;--surface:#fff;--border:#e5e5ea;--text:#1d1d1f;--text-muted:#86868b;--primary:#0071e3;--primary-dark:#0077ed;--radius:12px;--ease:cubic-bezier(0.4,0,0.2,1);--ease-out:cubic-bezier(0.16,1,0.3,1)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em;background:var(--bg);color:var(--text)}@media (prefers-reduced-motion:no-preference){.fade-in{animation:fadeIn .4s var(--ease-out) both}.slide-up{animation:slideUp .32s var(--ease-out) both}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(1turn)}}}.spinner{display:inline-block;width:15px;height:15px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:8px}.mono{font-family:SF Mono,ui-monospace,monospace;font-size:13px}.dropzone{border:1.5px dashed var(--border);transition:border-color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease)}.dropzone.dragging{border-color:var(--primary);background:#f0f7ff;transform:scale(1.008)}.reading{font-size:14px;color:var(--text-muted);display:flex;align-items:center}.payslip-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;padding:16px 0;border-bottom:1px solid var(--border);animation:slideUp .3s var(--ease-out) both}.payslip-row:last-child{border-bottom:none}.payslip-main{flex:1 1 220px;min-width:0}.payslip-file{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px;font-weight:500}.payslip-hint{font-size:12px;color:var(--text-muted);margin-top:4px;font-style:italic}a{color:var(--primary)}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--surface);border-right:1px solid var(--border);padding:24px 16px;flex-shrink:0}.brand{font-weight:700;font-size:18px;margin-bottom:24px;padding:0 8px}.sidebar nav{gap:18px}.nav-group,.sidebar nav{display:flex;flex-direction:column}.nav-group{gap:2px}.nav-group-label{padding:0 12px;margin-bottom:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#9ca3af}.sidebar nav a{padding:8px 12px;border-radius:8px;color:var(--text-muted);text-decoration:none;font-size:14px;font-weight:500;transition:background .2s var(--ease),color .2s var(--ease),transform .15s var(--ease)}.sidebar nav a:hover{background:rgba(0,0,0,.04);color:var(--text);transform:translateX(2px)}.content{flex:1 1;padding:32px 40px;max-width:1100px}h1{font-size:28px;letter-spacing:-.03em;margin:0 0 4px}h1,h2{font-weight:600}h2{font-size:18px;letter-spacing:-.02em;margin:0 0 12px}.subtitle{color:var(--text-muted);margin:0 0 28px;font-size:14px}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.page-header .btn{flex-shrink:0}.btn-link{background:none;border:none;color:var(--primary);cursor:pointer;font-size:14px;font-weight:600;padding:0}.btn-danger{background:#fff;color:#dc2626;border-color:#fecaca}.btn-danger:hover{background:#fee2e2}.form-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-bottom:16px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field.full{grid-column:1/-1}.form-field label{font-size:13px;font-weight:600;color:var(--text-muted)}.form-field{min-width:0}.form-field input,.form-field select,.form-field textarea{width:100%;min-width:0;max-width:100%;padding:10px 13px;border-radius:10px;border:1px solid var(--border);font-size:14px;font-family:inherit;background:var(--surface);color:var(--text);box-sizing:border-box;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3.5px rgba(0,113,227,.14)}.form-field textarea{resize:vertical;min-height:70px}.section-title{font-size:14px;font-weight:700;margin:24px 0 12px}.line-item{display:flex;flex-wrap:wrap;gap:10px;align-items:end;padding:12px 0;border-bottom:1px solid var(--border)}.line-item .form-field{flex:1 1 160px}.line-item .remove-btn{flex:0 0 auto}.line-item:last-child{border-bottom:none}.remove-btn{background:none;border:1px solid var(--border);border-radius:8px;color:#dc2626;cursor:pointer;padding:9px 12px;font-size:13px}.remove-btn:hover{background:#fee2e2}.totals-bar{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px 24px;padding:16px 0 4px;font-size:14px}.totals-bar strong{font-size:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px 24px;margin-bottom:18px;overflow-x:auto;box-shadow:0 1px 2px rgba(0,0,0,.04);transition:box-shadow .3s var(--ease)}.card:hover{box-shadow:0 3px 12px rgba(0,0,0,.06)}.card table{min-width:max-content}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px;margin-bottom:28px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px 20px;box-shadow:0 1px 2px rgba(0,0,0,.04);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}.stat:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.07)}.stat .value{font-size:30px;font-weight:600;letter-spacing:-.03em}.stat .label{color:var(--text-muted);font-size:13px;margin-top:4px}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;padding:10px 12px}td,th{border-bottom:1px solid var(--border)}td{padding:12px}tr:last-child td{border-bottom:none}tr:hover td{background:rgba(0,0,0,.02)}td,th{transition:background .15s var(--ease)}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;text-transform:capitalize}.badge-gray{background:#e5e7eb;color:#374151}.badge-blue{background:#dbeafe;color:#1e40af}.badge-amber{background:#fef3c7;color:#92400e}.badge-green{background:#dcfce7;color:#166534}.badge-red{background:#fee2e2;color:#991b1b}.btn{display:inline-block;padding:9px 18px;border-radius:980px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:14px;font-weight:500;color:var(--text);transition:background .2s var(--ease),transform .15s var(--ease),box-shadow .2s var(--ease)}.btn:hover{background:var(--bg);box-shadow:0 2px 8px rgba(0,0,0,.06)}.btn:active{transform:scale(.97)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);box-shadow:0 4px 14px rgba(0,113,227,.3)}.btn:disabled{opacity:.5;cursor:not-allowed}.actions{display:flex;gap:10px;margin-top:20px}.empty{color:var(--text-muted);padding:40px;text-align:center}.error-box{background:#fee2e2;color:#991b1b;padding:12px 16px;border-radius:var(--radius)}.back-link,.error-box{margin-bottom:16px;font-size:14px}.back-link{color:var(--text-muted);text-decoration:none;display:inline-block}.back-link:hover{color:var(--text)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;margin-bottom:8px}.detail-item.full{grid-column:1/-1}.detail-item .label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px}.detail-item .value{font-size:14px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{width:100%;max-width:360px;margin:0 16px}.sidebar .logout-btn{margin-top:24px;width:100%;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;padding:8px 12px;font-size:14px;text-align:left}.sidebar .logout-btn:hover{background:var(--bg);color:var(--text)}.payslip-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}.mailbox-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.mailbox-head .btn{flex-shrink:0;display:inline-flex;align-items:center;gap:8px}.mailbox-result{margin-top:12px;padding:10px 14px;border-radius:10px;background:var(--bg);font-size:14px;animation:fade-in .25s ease}.mailbox-result.muted{color:var(--text-muted)}@keyframes fade-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.row-actions{display:flex;gap:14px;align-items:center;white-space:nowrap}.btn-link.danger{color:#d70015}.btn-link:disabled{opacity:.4;cursor:not-allowed}.range-hint{font-size:11px;color:var(--text-muted);margin-top:4px}.range-hint.bad{color:#d70015;font-weight:500}.package-row{padding:14px 0;border-bottom:1px solid var(--border);animation:slideUp .3s var(--ease-out) both}.package-row:last-child{border-bottom:none}.package-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:6px}.package-row table td{padding:6px 12px 6px 0;border:none;font-size:14px;color:var(--text-muted)}.inline-add{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;padding:12px 0 16px}.machine-block{border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:12px;animation:slideUp .3s var(--ease-out) both}.machine-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.machine-sku{font-size:12px;color:var(--text-muted);margin-left:8px}.treatment-list{list-style:none;margin:10px 0 0;padding:0}.treatment-list li{display:flex;align-items:center;gap:12px;padding:9px 0;border-top:1px solid var(--border);font-size:14px}.treatment-name{flex:1 1 auto}.treatment-meta{color:var(--text-muted);font-size:12px}.treatment-range{white-space:nowrap}.agreed-input,.treatment-range{font-family:SF Mono,ui-monospace,monospace;font-size:13px}.agreed-input{width:96px;padding:6px 9px;border-radius:8px;border:1px solid var(--border);text-align:right}.agreed-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,113,227,.14)}.report-block{margin-top:18px;padding-top:18px;border-top:2px solid var(--border)}.report-block h3{font-size:16px;font-weight:600}.tier-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(172px,1fr));grid-gap:12px;gap:12px}.tier-card{border:1px solid var(--border);border-radius:14px;padding:16px;text-align:center;transition:transform .2s var(--ease),border-color .2s var(--ease)}.tier-card:hover{transform:translateY(-2px);border-color:var(--primary)}.tier-sessions{font-size:30px;font-weight:600;letter-spacing:-.03em;line-height:1}.tier-label{font-size:12px;color:var(--text-muted);margin-bottom:10px}.tier-total{font-size:18px;font-weight:600}.tier-unit{font-size:12px;color:var(--text-muted);margin-top:2px}.kit-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:14px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.kit-row:last-child{border-bottom:none}.kit-main{flex:1 1 260px}.kit-contents{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--text-muted)}.kit-prices{display:flex;align-items:baseline;gap:10px;white-space:nowrap}.price-full{text-decoration:line-through;color:var(--text-muted);font-size:14px}.price-discounted{font-size:18px;color:#1d7d34}@media print{.back-link,.btn,.btn-link,.remove-btn,.sidebar,form{display:none!important}.app-shell,.content{display:block;padding:0;max-width:none}.card{border:none;padding:0 0 12px;margin-bottom:12px;page-break-inside:avoid;break-inside:avoid}.card,.card:hover{box-shadow:none}body:has(.print-target) *{visibility:hidden}body:has(.print-target) .print-target,body:has(.print-target) .print-target *{visibility:visible}body:has(.print-target) .print-target{position:absolute;left:0;top:0;width:100%}.kit-row,.machine-block,.tier-card{page-break-inside:avoid;break-inside:avoid}}.tier-breakdown{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--text-muted);padding:1px 0;white-space:nowrap}.tier-card .tier-total{margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}.kit-included{background:#f5fbf6;border-radius:10px;padding-left:12px;padding-right:12px}@media print{.no-print{display:none!important}}.chan{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:500}.chan-contanti{background:#d6f5d6;color:#1d6f2b}.chan-pos{background:#ffe2c2;color:#9a4f06}.chan-finanziaria{background:#ffd0a8;color:#7c3d00}.chan-centro{background:#fdf3b8;color:#7a6100}.ow-head{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:14px;gap:14px}.ow-head span{display:block;font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.ow-legend{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}.ow-table{font-size:13px}.ow-table td{padding:10px 8px}.ow-acconto{font-size:11px}.ow-acconto,.ow-note{color:var(--text-muted)}.ow-note{max-width:200px;font-size:12px}.ow-analisi{text-align:center}.ow-analisi-field{display:flex;gap:10px;align-items:center}.ow-analisi-field select{flex:1 1 auto}.ow-check{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:400;color:var(--text);white-space:nowrap}.ow-quick{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;padding:4px 0 18px;margin-bottom:8px;border-bottom:1px solid var(--border)}.ow-paga{min-width:250px}.ow-pay-line{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:12px}.ow-pay-label{color:var(--text-muted);min-width:62px}.ow-pay-amount{font-family:SF Mono,ui-monospace,monospace;min-width:74px;text-align:right}.ow-pay-buttons{display:flex;gap:3px}.ow-chip{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:999px;padding:2px 8px;font-size:11px;cursor:pointer;transition:all .15s var(--ease)}.ow-chip:hover{border-color:var(--border-strong,#c9c9cf)}.ow-chip.on.chan-contanti{background:#d6f5d6;color:#1d6f2b;border-color:#9fdca4}.ow-chip.on.chan-pos{background:#ffe2c2;color:#9a4f06;border-color:#f0bd85}.ow-chip.on.chan-finanziaria{background:#ffd0a8;color:#7c3d00;border-color:#e8a55e}.ow-chip.on.chan-centro{background:#fdf3b8;color:#7a6100;border-color:#e6d472}.ow-pay-print{display:none}.chan-none{background:var(--bg);color:var(--text-muted)}@media print{.ow-pay-print{display:inline-block}.ow-paga{min-width:0}}.quote-box{background:var(--bg);border-radius:12px;padding:12px 14px;font-size:13px}.quote-line{display:flex;justify-content:space-between;padding:3px 0}.quote-line.muted{color:var(--text-muted)}.quote-total{border-top:1px solid var(--border);margin-top:6px;padding-top:8px;font-size:15px}.tier-breakdown.muted-line{opacity:.65}.ow-rifiutato{text-decoration:line-through;color:var(--text-muted)}.origin-centro{background:#e6eefc;color:#1d4ed8}.origin-stay_alive{background:#ede4fb;color:#6b3fbd}.closing-sheet .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.closing-sheet .muted{color:var(--text-muted)}.closing-sheet .sum-row td{border-top:1px solid var(--border)}.closing-sheet .sep-row td{border-top:2px solid var(--border);padding-top:14px}.closing-sheet .total-row td{border-top:2px solid var(--text);font-size:16px;padding-top:10px}.closing-outcome{margin-top:20px;padding:16px 18px;border-radius:14px}.closing-outcome.da_dare_al_centro{background:#fff4e8}.closing-outcome.da_avere_dal_centro{background:#eaf5ea}.outcome-label{text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.outcome-label,.outcome-steps{font-size:13px;color:var(--text-muted)}.outcome-steps{display:flex;justify-content:space-between;padding:2px 0}.outcome-amount{font-size:26px;font-weight:600;letter-spacing:-.02em;margin-top:6px}.head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.badge-salvato{margin-left:10px;padding:3px 10px;border-radius:999px;background:#d8f3dc;color:#1b6b3a;font-size:12px;font-weight:600;vertical-align:middle}.firma-box{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 16px;padding:12px 16px;border-radius:12px;background:var(--surface,#fff);border:1px solid #d2d2d7;font-size:14px;animation:fade-in .25s ease}.firma-box span{color:#6e6e73}.firma-box .btn-link{margin-left:auto}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.card-head h2{margin:0}.check-label{display:flex;align-items:center;gap:8px;font-weight:400;cursor:pointer}.check-label input{width:auto;margin:0}.btn-file{position:relative;overflow:hidden;cursor:pointer;display:inline-flex;align-items:center}.btn-file input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}.doc-sections{display:grid;grid-gap:14px;gap:14px}.doc-section{border:1px solid #e5e5ea;border-radius:12px;padding:14px 16px;transition:border-color .2s ease}.doc-section:hover{border-color:#d2d2d7}.doc-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.doc-hint{display:block;font-size:12px;color:#6e6e73;margin-top:2px}.doc-empty{margin:8px 0 0;padding:0;text-align:left;font-size:13px}.doc-list{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-gap:6px;gap:6px}.doc-list li{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid #f0f0f2;font-size:14px}.doc-meta{color:#6e6e73;font-size:12px;margin-right:auto}.iban-input{margin-top:10px}.iban-input,.iban-value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}.iban-value{margin:10px 0 0;font-size:15px}.region-search{width:100%;margin-bottom:16px}.region-list{display:grid;grid-gap:8px;gap:8px}.region-folder{border:1px solid #e5e5ea;border-radius:12px;overflow:hidden;transition:border-color .2s ease}.region-folder:hover{border-color:#d2d2d7}.region-head{width:100%;display:flex;align-items:center;gap:10px;padding:14px 16px;background:none;border:none;cursor:pointer;font-size:15px;text-align:left;color:inherit;transition:background .15s ease}.region-head:hover{background:#fafafa}.region-head.aperta{border-bottom:1px solid #f0f0f2}.region-caret{color:#6e6e73;font-size:12px;width:12px}.region-name{font-weight:600;flex:1 1}.region-name.da-assegnare{color:#6e6e73;font-weight:400;font-style:italic}.region-count{min-width:26px;padding:2px 9px;border-radius:999px;background:#f0f0f2;color:#6e6e73;font-size:13px;text-align:center}.region-body{padding:4px 16px 12px;animation:fade-in .2s ease}.region-nota{margin:8px 0 12px;font-size:13px;color:#6e6e73}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.auth-card{width:100%;max-width:380px;padding:32px;border-radius:16px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.06),0 12px 32px rgba(0,0,0,.06);animation:fade-in .3s ease}.auth-card h1{font-size:22px;margin:0 0 6px}.auth-card .subtitle{margin-bottom:20px}.auth-card .form-field{margin-bottom:14px}.auth-card .btn{width:100%}.auth-ok{margin:0 0 6px;font-size:16px;font-weight:600;color:#1b6b3a}.auth-link{display:block;margin-top:16px;text-align:center;font-size:14px;color:var(--accent,#0071e3)}.badge-attesa{padding:3px 10px;border-radius:999px;background:#fff3bf;color:#8a6d00;font-size:12px;font-weight:600}.ok-box{margin:0 0 14px;padding:10px 14px;border-radius:10px;background:#d8f3dc;color:#1b6b3a;font-size:14px;animation:fade-in .25s ease}.nota-integrazione{flex-basis:100%;margin:8px 0 0;font-size:13px;color:#8a6d00}