:root{--primary:#2563eb;--accent:#0f172a;--bg:#f4f7fb;--panel:#fff;--text:#162033;--muted:#6b778c;--line:#e2e8f0;--soft:#eef4ff;--danger:#dc2626;--success:#059669;--warning:#d97706;--radius:16px;--shadow:0 12px 30px rgba(15,23,42,.07)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}body{font-size:15px;line-height:1.45}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button,.button{border:1px solid var(--line);background:#fff;color:var(--text);border-radius:10px;padding:10px 14px;font-weight:650;cursor:pointer;transition:.18s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:hover,.button:hover{border-color:#b8c5d8;transform:translateY(-1px)}button.primary,.primary,.button.primary{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 8px 18px rgba(37,99,235,.18)}button.danger,.danger,.button.danger{background:#fff5f5;color:var(--danger);border-color:#fecaca}.ghost{background:transparent}.hidden{display:none!important}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.muted{color:var(--muted)}.tiny{font-size:12px;color:var(--muted)}.eyebrow,.top-label{display:block;font-size:11px;font-weight:800;letter-spacing:.14em;color:var(--primary);text-transform:uppercase}.lead{font-size:17px;color:#526176}.alert{border-radius:12px;padding:13px 15px;background:#fff7ed;border:1px solid #fed7aa;color:#9a4a08;margin:12px 0}.danger-alert{background:#fff1f2;border-color:#fecdd3;color:#9f1239}.success-alert{background:#ecfdf5;border-color:#a7f3d0;color:#047857}
/* shell */.sidebar{position:fixed;left:0;top:0;bottom:0;width:248px;background:linear-gradient(180deg,#0d1729,#101b2d);color:#dbe7f8;z-index:40;display:flex;flex-direction:column;padding:18px 14px;border-right:1px solid rgba(255,255,255,.04)}.side-brand{display:flex;gap:12px;align-items:center;padding:8px 10px 18px}.side-brand img{width:44px;height:44px;border-radius:12px;background:#fff;object-fit:contain;padding:4px}.side-brand b{display:block;color:#fff;font-size:15px}.side-brand small{display:block;color:#8ca1be;font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin-top:2px}.side-user{display:flex;align-items:center;gap:11px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);border-radius:14px;padding:12px;margin-bottom:14px}.avatar{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#2f6fed,#22b8cf);display:grid;place-items:center;color:#fff;font-weight:850}.side-user b{display:block;font-size:13px;color:#fff}.side-user span{font-size:10px;color:#8ca1be;text-transform:uppercase}.side-nav{overflow-y:auto;padding:4px 4px 12px;scrollbar-width:thin;flex:1}.nav-section{display:block;font-size:9px;letter-spacing:.18em;color:#6f86a6;font-weight:850;margin:17px 8px 7px}.side-nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:#c9d7ea;font-weight:650;font-size:13px;margin:2px 0}.side-nav a i{width:18px;text-align:center;font-style:normal;color:#86a5d8}.side-nav a:hover,.side-nav a.active{background:rgba(70,123,255,.14);color:#fff}.side-nav a.active{box-shadow:inset 2px 0 #60a5fa}.sidebar-version{font-size:10px;color:#607695;padding:10px}.side-logout{padding-top:8px;border-top:1px solid rgba(255,255,255,.08)}.side-logout button{width:100%;border:0;background:transparent;color:#d4e0f1}.main-content{margin-left:248px;min-height:100vh;display:flex;flex-direction:column}.content-top{height:64px;display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);padding:0 30px;position:sticky;top:0;z-index:20;backdrop-filter:blur(10px)}.content-top strong{font-size:13px}.top-actions{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.online-dot{width:9px;height:9px;border-radius:50%;background:#34d399;box-shadow:0 0 0 4px #d1fae5}.mobile-menu{display:none;position:fixed;left:14px;top:14px;z-index:60}.sidebar-backdrop{display:none}.page-shell{padding:28px 30px 34px;max-width:1540px;width:100%;margin:0 auto;flex:1}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.page-heading h1{font-size:30px;letter-spacing:-.035em;margin:4px 0}.compact-heading{align-items:center}.page-heading p{margin:4px 0}.actions,.form-actions{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.global-footer{margin-top:auto;padding:18px 30px;color:#8491a5;font-size:11px;text-align:right;border-top:1px solid rgba(226,232,240,.8)}
/* cards */.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:18px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.panel h2,.panel h3{margin:0}.panel h2{font-size:18px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.stats,.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.stat,.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px}.stat b,.kpi b{font-size:24px;display:block;letter-spacing:-.03em}.stat span,.kpi span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.case-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.media-card{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:14px;transition:.2s ease}.media-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(15,23,42,.09)}.media-card img{display:block;width:100%;height:180px;object-fit:cover;background:#eef2f7;cursor:zoom-in}.media-card .body{padding:13px}.media-card h3{font-size:15px;margin:0 0 5px}.empty{padding:22px;text-align:center;color:var(--muted);border:1px dashed #cbd5e1;border-radius:12px;background:#fafcff}
/* forms */label{display:block;font-size:12px;font-weight:750;color:#344258}input,select,textarea{width:100%;border:1px solid #d9e1ec;background:#fff;border-radius:10px;padding:10px 12px;color:var(--text);outline:none;transition:.15s ease;margin-top:6px}input:focus,select:focus,textarea:focus{border-color:#82a8fb;box-shadow:0 0 0 3px rgba(37,99,235,.10)}textarea{min-height:94px;resize:vertical}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.formgrid .wide{grid-column:1/-1}.check-row{display:flex;gap:9px;align-items:center;font-size:13px}.check-row input{width:auto;margin:0}.password-field{display:flex;align-items:center;position:relative}.password-field input{padding-right:46px}.password-field .icon-button{position:absolute;right:5px;bottom:5px;width:34px;height:34px;padding:0;border:0;background:transparent}.upload-hero{display:grid;grid-template-columns:130px 1fr;gap:18px;align-items:center;padding:14px;border:1px dashed #c8d5e6;background:#f8fbff;border-radius:14px;margin-bottom:18px}.upload-preview{width:130px;height:130px;border-radius:14px;overflow:hidden;background:#eaf0f8;display:grid;place-items:center;font-size:32px}.upload-preview img{width:100%;height:100%;object-fit:cover}.upload-cta{display:flex;flex-direction:column;gap:7px;cursor:pointer}.upload-cta::before{content:'Scegli una foto';display:inline-flex;width:max-content;background:var(--primary);color:#fff;border-radius:9px;padding:9px 12px}.upload-inline{padding:12px;background:#f8fafc;border:1px dashed #d4dde8;border-radius:12px;margin-bottom:14px}.strength{height:6px;background:#e9eef5;border-radius:100px;overflow:hidden;margin:8px 0 4px}.strength span{display:block;height:100%;width:0;background:linear-gradient(90deg,#ef4444,#f59e0b,#10b981);transition:.2s}.field-status{min-height:18px;font-size:12px}.ok-text{color:var(--success)}.danger-text{color:var(--danger)}
/* tables / badges / tabs */.table-wrap{overflow:auto;border-radius:12px;border:1px solid var(--line)}.table{width:100%;border-collapse:collapse;min-width:740px;background:#fff}.table th{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#6c7a8e;background:#f8fafc;text-align:left;padding:11px 12px}.table td{padding:12px;border-top:1px solid #edf1f5;vertical-align:middle}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:#eef2f7;color:#475569}.badge.ok{background:#ecfdf5;color:#047857}.badge.warn{background:#fff7ed;color:#b45309}.badge.danger{background:#fff1f2;color:#be123c}.badge.dark{background:#eef2ff;color:#4338ca}.tabs{display:flex;gap:5px;overflow:auto;border-bottom:1px solid var(--line);margin-bottom:18px}.tab{border:0;border-radius:9px 9px 0 0;background:transparent;color:#64748b;padding:11px 13px;white-space:nowrap}.tab.active{color:var(--primary);background:#edf4ff;box-shadow:inset 0 -2px var(--primary)}[data-tab-panel]{display:none}[data-tab-panel].active{display:block}.timeline{position:relative;padding-left:18px}.timeline::before{content:'';position:absolute;left:4px;top:4px;bottom:4px;width:2px;background:#e2e8f0}.timeline-item{position:relative;padding:0 0 18px 18px}.timeline-dot{position:absolute;left:-18px;top:4px;width:10px;height:10px;border:2px solid #fff;background:var(--primary);border-radius:50%;box-shadow:0 0 0 2px #bfdbfe}.timeline-item time{font-size:11px;color:var(--muted)}
/* modals */html.modal-open{overflow:hidden}.modal{position:fixed;inset:0;background:rgba(15,23,42,.52);backdrop-filter:blur(5px);z-index:100;display:none;align-items:center;justify-content:center;padding:20px}.modal.open{display:flex}.modal-card{width:min(680px,100%);max-height:min(88vh,850px);display:flex;flex-direction:column;background:#fff;border-radius:18px;box-shadow:0 28px 70px rgba(15,23,42,.25);overflow:hidden}.modal-lg{width:min(860px,100%)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:20px}.modal-x{width:38px;height:38px;padding:0;border-radius:10px;font-size:24px;background:#f8fafc}.modal-body{overflow:auto;padding:20px 22px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px;background:#fbfcfe;border-top:1px solid var(--line)}
/* password */.password-page{max-width:960px}.security-badge{padding:8px 12px;border-radius:999px;background:#ecfdf5;color:#047857;font-size:12px;font-weight:750}.password-card{max-width:720px;padding:0;overflow:hidden}.password-card-intro{display:flex;gap:14px;padding:22px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#f8fbff,#fff)}.security-icon{width:46px;height:46px;border-radius:13px;background:#e9f1ff;color:var(--primary);display:grid;place-items:center;font-size:20px;flex:none}.password-card-intro h2{margin:0 0 4px}.password-form{padding:22px;display:grid;gap:15px}.password-actions{justify-content:flex-end;border-top:1px solid #edf1f5;padding-top:17px;margin-top:2px}
/* auth */.auth-main{min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(circle at 80% 10%,#dbeafe 0,transparent 33%),linear-gradient(135deg,#f7faff,#eef3f9)}.auth-wrap{width:min(1080px,calc(100% - 32px));margin:auto;display:grid;grid-template-columns:1fr 440px;background:#fff;border:1px solid #e3e9f1;border-radius:24px;box-shadow:0 28px 70px rgba(15,23,42,.13);overflow:hidden}.auth-visual{background:linear-gradient(145deg,#0e1a2f,#16294a);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between}.auth-panel{padding:44px}.auth-panel h1{font-size:30px;letter-spacing:-.035em}.auth-panel form{display:grid;gap:15px}.auth-main .global-footer{border:0}
/* image viewer */.image-viewer{position:fixed;inset:0;background:rgba(5,10,20,.95);z-index:500;display:none;flex-direction:column}.image-viewer.open{display:flex}.image-viewer-toolbar{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;color:#fff;border-bottom:1px solid rgba(255,255,255,.12)}.image-viewer-toolbar button{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.18);color:#fff}.image-viewer-stage{flex:1;display:grid;place-items:center;padding:22px;overflow:auto}.image-viewer-stage img{max-width:100%;max-height:calc(100vh - 110px);object-fit:contain;border-radius:8px;box-shadow:0 20px 50px #000}.zoomable{cursor:zoom-in!important}
/* tutorial */.tutorial-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tutorial-os{padding:15px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}.tutorial-os ol{padding-left:20px;margin-bottom:0}
@media(max-width:980px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar-open .sidebar{transform:none}.sidebar-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:35}.sidebar-open .sidebar-backdrop{display:block}.main-content{margin-left:0}.mobile-menu{display:flex}.content-top{padding-left:70px}.grid2,.grid3{grid-template-columns:1fr}.page-shell{padding:22px 18px}.auth-wrap{grid-template-columns:1fr}.auth-visual{display:none}}@media(max-width:640px){.content-top{padding-right:14px}.page-heading{align-items:flex-start;flex-direction:column}.page-heading h1{font-size:25px}.formgrid{grid-template-columns:1fr}.formgrid .wide{grid-column:auto}.panel{padding:15px;border-radius:14px}.modal{padding:0}.modal-card,.modal-lg{width:100%;height:100%;max-height:100vh;border-radius:0}.modal-foot{position:sticky;bottom:0}.media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.media-card img{height:135px}.upload-hero{grid-template-columns:1fr}.upload-preview{width:100%;height:190px}.tutorial-grid{grid-template-columns:1fr}.auth-panel{padding:28px 22px}.global-footer{text-align:center}.password-page{padding-top:18px}}@media(max-width:420px){.media-grid{grid-template-columns:1fr}}
.login-v10{width:min(520px,calc(100% - 32px));margin:auto;padding:36px 0}.login-v10-card{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:0 28px 70px rgba(15,23,42,.12);padding:32px}.login-v10-brand{display:flex;align-items:center;gap:12px;padding-bottom:20px;border-bottom:1px solid var(--line)}.login-v10-brand img{width:52px;height:52px;object-fit:contain;border-radius:14px;border:1px solid var(--line);padding:5px}.login-v10-brand b{display:block;font-size:17px}.login-v10-brand span{display:block;color:var(--muted);font-size:12px;margin-top:2px}.login-v10-copy{padding:24px 0 12px}.login-v10-copy h1{font-size:32px;margin:4px 0 8px;letter-spacing:-.04em}.login-v10-copy p{color:var(--muted);margin:0}.stack{display:grid;gap:14px}.login-button{width:100%;margin-top:3px;padding:12px}.login-v10-roles{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:18px}.login-v10-roles span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;background:#f1f5f9;color:#64748b;padding:5px 8px;border-radius:999px}.login-v10-foot{text-align:center;margin:16px 0 0}
.page{padding:28px 30px 34px;max-width:1540px;width:100%;margin:0 auto;flex:1}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.page-head h1{font-size:30px;letter-spacing:-.035em;margin:4px 0}.page-head p{margin:4px 0;color:var(--muted)}.head-actions{display:flex;gap:9px;flex-wrap:wrap}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:13px;margin-bottom:18px}.kpi{position:relative;padding-left:58px;min-height:86px;display:flex;flex-direction:column;justify-content:center}.kpi-icon{position:absolute;left:14px;top:18px;width:34px;height:34px;border-radius:10px;background:#edf4ff;color:var(--primary);display:grid;place-items:center;font-weight:850}.cards{display:grid;gap:10px}.case-card{display:flex;align-items:center;justify-content:space-between;gap:14px}.case-card h3{margin:5px 0 2px;font-size:14px}.case-card p{margin:0}.status{font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:800;color:#64748b;background:#f1f5f9;border-radius:999px;padding:5px 8px}
@media(max-width:980px){.page{padding:22px 18px}.page-head{align-items:flex-start;flex-direction:column}}

/* V14 - modal scrolling robusto: header/footer sempre visibili, corpo realmente scrollabile */
.modal{
  overflow:hidden;
  padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));
}
.modal-card,
.modal-card.modal-lg{
  max-height:calc(100dvh - 28px);
  min-height:0;
  overflow:hidden;
}
.modal-card > form{
  display:flex;
  flex:1 1 auto;
  min-height:0;
  flex-direction:column;
  overflow:hidden;
}
.modal-head{
  flex:0 0 auto;
  position:relative;
  z-index:3;
  background:#fff;
}
.modal-body{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable;
}
.modal-body::-webkit-scrollbar{width:10px}
.modal-body::-webkit-scrollbar-track{background:#f1f5f9;border-radius:999px}
.modal-body::-webkit-scrollbar-thumb{background:#b8c4d4;border-radius:999px;border:2px solid #f1f5f9}
.modal-body::-webkit-scrollbar-thumb:hover{background:#94a3b8}
.modal-foot{
  flex:0 0 auto;
  position:relative;
  z-index:3;
  background:#fff;
  box-shadow:0 -8px 22px rgba(15,23,42,.04);
}
.modal-card > .modal-body + .modal-foot,
.modal-card > form > .modal-body + .modal-foot{margin-top:0}
@supports not (height:100dvh){
  .modal-card,.modal-card.modal-lg{max-height:calc(100vh - 28px)}
}
@media(max-height:760px) and (min-width:641px){
  .modal{align-items:stretch;padding:10px 18px}
  .modal-card,.modal-card.modal-lg{max-height:calc(100dvh - 20px);margin:auto}
  .modal-head{padding:14px 20px}
  .modal-body{padding:16px 20px}
  .modal-foot{padding:12px 20px}
}
@media(max-width:640px){
  .modal{padding:0;align-items:stretch}
  .modal-card,.modal-card.modal-lg{
    width:100%;
    height:100dvh;
    max-height:100dvh;
    border-radius:0;
  }
  .modal-card > form{height:100%;min-height:0}
  .modal-head{padding-top:max(16px,env(safe-area-inset-top));padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}
  .modal-body{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}
  .modal-foot{position:relative;padding-bottom:max(14px,env(safe-area-inset-bottom));padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right));flex-wrap:wrap}
  .modal-foot > button,.modal-foot > .button,.modal-foot > form{min-width:0}
}

/* V14 - operator/client refinement */
.operator-live{border-left:4px solid var(--primary);background:linear-gradient(135deg,#fff,#f7fbff)}
.mini-stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:12px}.mini-stats b{color:var(--text);font-size:14px}.client-case-card{padding:18px 20px}.client-info,.client-privacy-note{background:linear-gradient(135deg,#f8fbff,#fff)}.compact-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-kpis .kpi{padding-left:16px;min-height:72px}.compact-kpis .kpi b{font-size:22px}
@media(max-width:640px){.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);width:100%;gap:8px}.compact-kpis{grid-template-columns:1fr 1fr}.operator-live .actions{display:grid;grid-template-columns:1fr}.operator-live .actions .button{text-align:center}}
/* V14 - console operatore sempre leggibile e azioni operative evidenti */
.operator-actions{margin-bottom:18px}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.quick-action{min-height:54px;display:flex;align-items:center;justify-content:center;text-align:center;border:1px solid #dbe3ee;border-radius:14px;background:#fff;padding:12px;font-weight:800;color:#172033;cursor:pointer;text-decoration:none}.quick-action.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.quick-action.danger{background:#fff1f2;color:#b42318;border-color:#fecdd3}.quick-action.disabled{opacity:.55;cursor:not-allowed;background:#f8fafc}.notice{margin-top:14px;padding:12px 14px;border-radius:12px;background:#eff6ff;border:1px solid #bfdbfe}.notice p{margin:5px 0 0;color:#475569}.operator-live{border:2px solid color-mix(in srgb,var(--primary) 28%,#dbe3ee)}
@media(max-width:720px){.quick-grid{grid-template-columns:1fr 1fr}.quick-action{min-height:62px}.operator-actions .panel-head{align-items:flex-start}}
