:root{--ink:#172026;--muted:#65727c;--line:#d8e0e6;--accent:#1f4e5f;--soft:#eef5f6;--good:#116b43;--bad:#9b1c1c;--warn:#a85f00;--bg:#fff}*{box-sizing:border-box}body{margin:0;font-family:Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}button{border:0;border-radius:6px;padding:10px 13px;background:var(--accent);color:#fff;font-weight:700;cursor:pointer}button.secondary{background:#455a64}button.good{background:var(--good)}button.plain{background:#eef2f4;color:#263238}button:disabled{opacity:.55;cursor:default}input,select{width:100%;padding:10px;border:1px solid var(--line);border-radius:6px;background:#fff}label{display:block;margin:12px 0 6px;color:var(--muted);font-size:12px;font-weight:700}table{width:100%;border-collapse:collapse;margin-top:10px}td,th{border-bottom:1px solid var(--line);padding:9px 8px;text-align:left;font-size:13px;vertical-align:top}th{color:var(--muted);font-size:12px}.loginShell,.shell{min-height:100vh}.loginShell{background:linear-gradient(160deg,#eef8f5,#f8f4ee);display:flex;align-items:center;justify-content:center;padding:24px}.loginMain{width:100%;max-width:420px}.loginCard{background:#fff;border-radius:16px;box-shadow:0 4px 32px rgba(0,0,0,.1);padding:36px 36px 28px}.loginBrand{display:flex;flex-direction:column;align-items:center;margin-bottom:28px;padding-bottom:24px;border-bottom:1px solid var(--line)}.loginLogo{height:80px;width:auto;object-fit:contain;margin-bottom:10px}.loginStudio{margin:0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#687a75}.header{padding:18px 24px;border-bottom:1px solid var(--line);background:var(--soft);display:flex;justify-content:space-between;gap:16px;align-items:center}.header h1{margin:0;color:var(--accent);font-size:21px}.main{padding:18px 24px 32px}.patientShell{background:#f6f9f8}.patientHeader{padding:14px 20px;border-bottom:1px solid #dfe8e5;background:#fff;display:flex;justify-content:space-between;align-items:center;gap:16px}.patientBrand{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.patientLogo{height:72px;width:auto;object-fit:contain}.patientStudioName{margin:0;font-size:12px;font-weight:400;color:#687a75;letter-spacing:.02em}.brandLine{color:#687a75;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.patientLayout{display:grid;grid-template-columns:210px 1fr;min-height:calc(100vh - 100px)}.patientSidebar{background:#fff;border-right:1px solid #e0ece9;display:flex;flex-direction:column;padding:16px 0;gap:2px}.patientContent{background:#f6f9f8;overflow-y:auto}.patientTabBtn{background:none;border:none;border-left:3px solid transparent;padding:12px 20px;font-size:14px;font-weight:600;color:#687a75;cursor:pointer;text-align:left;transition:color .15s,background .15s,border-color .15s}.patientTabBtn:hover{color:#174f46;background:#f0f7f5}.patientTabBtn.active{color:#174f46;background:#e8f5ef;border-left-color:#174f46}.patientTabContent{padding-bottom:40px}@media (max-width:600px){.patientLayout{grid-template-columns:1fr;grid-template-rows:auto 1fr}.patientSidebar{flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid #e0ece9;padding:0}.patientTabBtn{border-left:none;border-bottom:3px solid transparent;white-space:nowrap;padding:12px 14px}.patientTabBtn.active{border-left:none;border-bottom-color:#174f46;background:#f0f7f5}}.patientSectionTitle{font-size:20px;font-weight:700;color:#174f46;padding:20px 16px 10px;margin:0}.patientTrafficLight{padding:20px 16px}.patientTrafficLight h3{margin:0 0 14px;font-size:15px;font-weight:700;color:#174f46}.trafficLightWidget{display:flex;align-items:center;gap:24px}.trafficLightBody{display:flex;flex-direction:column;align-items:center;gap:6px;background:#2a2a2a;border-radius:24px;padding:12px 10px;box-shadow:0 4px 12px rgba(0,0,0,.35),inset 0 1px 0 hsla(0,0%,100%,.08);border:2px solid #1a1a1a;width:52px}.trafficLightBulb{width:30px;height:30px;border-radius:50%;transition:box-shadow .2s,opacity .2s}.trafficLightBulb.red{background:#7a0000;opacity:.3}.trafficLightBulb.yellow{background:#7a5500;opacity:.3}.trafficLightBulb.green{background:#004d1a;opacity:.3}.trafficLightBulb.red.on{background:#ef4444;opacity:1;box-shadow:0 0 14px 4px rgba(239,68,68,.7)}.trafficLightBulb.yellow.on{background:#f59e0b;opacity:1;box-shadow:0 0 14px 4px rgba(245,158,11,.7)}.trafficLightBulb.green.on{background:#22c55e;opacity:1;box-shadow:0 0 14px 4px rgba(34,197,94,.7)}.trafficLightLabel{display:flex;flex-direction:column;gap:4px}.trafficLightLabel strong{font-size:18px}.patientTreatmentList{display:flex;flex-direction:column;gap:10px;padding:0 16px}.patientTreatmentRow{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;background:#fff;border:1px solid #e0ece9;border-radius:8px;padding:14px 16px}.ptLeft{display:flex;flex-direction:column;gap:4px}.ptLeft strong{font-size:15px;color:#172026}.ptCategory{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#687a75;background:#eef5f6;border-radius:4px;padding:2px 7px;display:inline-block}.ptCategory.hygiene{background:#e0f5ec;color:#116b43}.ptCategory.rx{background:#e8eeff;color:#2a4dad}.ptRight{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.ptDate{font-size:12px;color:#445b55}.ptDate.muted{color:#999}.patientEmptyState{text-align:center;color:#999;padding:40px 16px;font-size:14px}.patientMain{padding:0}.smileHero{display:grid;grid-template-columns:1fr 170px;grid-gap:20px;gap:20px;align-items:center;padding:28px;border-radius:8px;color:#112823;background:#e8f5ef;border:1px solid #cfe5db}.smileHero.good{background:#e8f5ef;border-color:#b9decd}.smileHero.warn{background:#fff7e6;border-color:#ead39e}.smileHero.bad{background:#fff0ed;border-color:#efc4bc}.patientGreeting{color:#4f6b63;font-size:13px;font-weight:800;text-transform:uppercase}.smileHero h2{margin:8px 0;font-size:34px;line-height:1.08;color:#174f46}.smileHero p{margin:0;max-width:620px;color:#445b55;font-size:15px;line-height:1.5}.scoreDial{width:150px;height:150px;border-radius:50%;background:#fff;border:10px solid #2e8a68;display:grid;place-items:center;align-content:center;justify-self:end}.smileHero.warn .scoreDial{border-color:#d28c16}.smileHero.bad .scoreDial{border-color:#ba3f32}.scoreDial span{font-size:34px;font-weight:900;color:#174f46}.scoreDial small{color:#65756f;font-size:12px;font-weight:800}.patientCards{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));grid-gap:12px;gap:12px;margin-top:14px}.patientCard{display:flex;gap:12px;align-items:center;padding:16px;border:1px solid #dce7e3;border-radius:8px;background:#fff}.patientCard>span{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:900;background:#eef4f2;color:#174f46}.patientCard.good>span{background:#e7f4ed;color:var(--good)}.patientCard.warn>span{background:#fff3d9;color:var(--warn)}.patientCard.bad>span{background:#fae9e9;color:var(--bad)}.patientCard p{margin:0 0 4px;color:#687a75;font-size:12px;font-weight:800}.patientCard strong{color:#182c27;font-size:18px}.patientPanel,.patientTimeline{margin-top:14px;padding:18px;border:1px solid #dce7e3;border-radius:8px;background:#fff}.patientTimeline{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));grid-gap:12px;gap:12px}.timelineItem{display:flex;gap:12px;align-items:center;min-height:76px}.timelineIcon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;background:#eef4f2;color:#174f46;font-weight:900}.timelineIcon.good{background:#e7f4ed;color:var(--good)}.timelineIcon.warn{background:#fff3d9;color:var(--warn)}.timelineIcon.bad{background:#fae9e9;color:var(--bad)}.timelineIcon.next{background:#e9f1f4;color:#1f4e5f}.timelineIcon.rx{background:#f0edf8;color:#4b3c78}.timelineItem strong{display:block;font-size:14px}.timelineItem p{margin:4px 0 0;color:#687a75;font-size:13px}.sectionTitle{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}.sectionTitle h2{margin:0;color:#174f46;font-size:18px}.sectionTitle span{color:#687a75;font-size:12px;font-weight:800}.therapyList{display:grid;grid-gap:8px;gap:8px}.therapyRow{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid #edf2f0}.therapyRow:last-child{border-bottom:0}.therapyRow strong{display:block;font-size:14px}.therapyRow p{margin:4px 0 0;color:#687a75;font-size:12px}.backendShell{display:flex;flex-direction:column;height:100vh;overflow:hidden}.backendLayout{display:flex;flex:1 1;overflow:hidden}.primaryNav{width:150px;background:#1a3d4d;padding:14px 0;gap:2px;flex-shrink:0;overflow-y:auto}.primaryNav,.primaryNavBtn{display:flex;flex-direction:column}.primaryNavBtn{align-items:center;gap:5px;padding:14px 8px 12px;background:transparent;color:#8fbbc8;border-radius:0;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-left:3px solid transparent;text-align:center;cursor:pointer;line-height:1.3;width:100%}.primaryNavBtn:hover{background:hsla(0,0%,100%,.08);color:#fff}.primaryNavBtn.active{background:hsla(0,0%,100%,.13);color:#fff;border-left-color:#7dd3e8}.primaryNavIcon{font-size:20px;line-height:1}.sectionContent{display:grid;grid-template-columns:280px 1fr;flex:1 1;overflow:hidden}.sectionContentFull{flex:1 1;overflow:hidden;display:flex}.inventarioPanel{display:flex;width:100%;overflow:hidden;background:#f8fafc}.inventarioNav{width:190px;background:#0f172a;display:flex;flex-direction:column;padding:14px 0;gap:1px;flex-shrink:0;overflow-y:auto}.inventarioNavSection{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#475569;padding:14px 16px 4px}.inventarioNavBtn{display:flex;align-items:center;gap:8px;padding:9px 16px;background:transparent;color:#94a3b8;border-radius:0;font-size:13px;font-weight:500;border-left:3px solid transparent;text-align:left;cursor:pointer;width:100%}.inventarioNavBtn:hover{background:hsla(0,0%,100%,.05);color:#e2e8f0}.inventarioNavBtn.active{background:rgba(37,99,235,.2);color:#93c5fd;border-left-color:#3b82f6}.inventarioMain{flex:1 1;overflow-y:auto}.inventarioContent{padding:24px}.invStatsGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));grid-gap:14px;gap:14px;margin-bottom:4px}.invStatCard{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:18px;box-shadow:0 1px 3px rgba(0,0,0,.05)}.invStatLabel{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#64748b}.invStatValue{font-size:30px;font-weight:700;margin-top:4px}.invCard{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.05);overflow:hidden}.invCardHead{padding:13px 16px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.invTableWrap{overflow-x:auto}.invTable{width:100%;border-collapse:collapse;margin:0}.invTable thead th{padding:9px 12px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;border-bottom:1px solid #e2e8f0;white-space:nowrap;background:transparent}.invTable tbody tr{border-bottom:1px solid #f1f5f9;transition:background .1s}.invTable tbody tr:hover{background:#f8fafc}.invTable tbody tr:last-child{border-bottom:0}.invTable td{padding:9px 12px;font-size:13px;white-space:nowrap;border:none}.invPagination{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid #e2e8f0}.invBtnPg{padding:6px 12px;font-size:13px;background:transparent;border:1px solid #e2e8f0;color:#475569;border-radius:6px}.invBtnPg:disabled{opacity:.4;cursor:default}.invBadge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:#f1f5f9;color:#475569}.invBadge.presente{background:#dbeafe;color:#1d4ed8}.invBadge.utilizzato{background:#dcfce7;color:#15803d}.invBadge.restituito{background:#fef9c3;color:#a16207}.invBadge.sostituito{background:#fce7f3;color:#be185d}.invBadge.ordinato{background:#f1f5f9;color:#475569}.invBtnSm{padding:4px 9px;font-size:12px;background:transparent;border:1px solid #e2e8f0;color:#64748b;border-radius:5px;cursor:pointer}.invBtnSm+.invBtnSm{margin-left:4px}.invBtnReso{border-color:#fde68a;color:#ca8a04}.invOverlay{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:200;display:flex;align-items:flex-start;justify-content:flex-end}.invDrawer{width:480px;max-width:100%;height:100vh;background:#fff;box-shadow:-4px 0 24px rgba(0,0,0,.12);display:flex;flex-direction:column}.invDrawerHead{padding:16px 20px;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;gap:12px;flex-shrink:0}.invDrawerBody{padding:20px;flex:1 1;overflow-y:auto}.invDrawerFoot{padding:14px 20px;border-top:1px solid #e2e8f0;display:flex;gap:8px;justify-content:flex-end;flex-shrink:0}.invBtnClose{padding:5px 9px;background:transparent;border:1px solid #e2e8f0;color:#64748b}.invBtnClose,.invBtnPrimary{border-radius:6px;cursor:pointer}.invBtnPrimary{padding:8px 16px;background:#2563eb;color:#fff;font-size:13px;font-weight:600;border:none}.invBtnPrimary:disabled{opacity:.5;cursor:default}.invBtnOutline{background:transparent;border:1px solid #e2e8f0;color:#475569}.invBtnDanger,.invBtnOutline{padding:8px 16px;border-radius:6px;font-size:13px;cursor:pointer}.invBtnDanger{background:#dc2626;color:#fff;font-weight:600;border:none}.invFormGroup{margin-bottom:14px}.invLabel{display:block;font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.04em;margin:0 0 5px}.invInput,.invSelect{display:block;width:100%;padding:8px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:13px;background:#f8fafc;color:#0f172a;margin:0;font-family:inherit;box-sizing:border-box}.invInput:focus,.invSelect:focus{outline:none;border-color:#2563eb;background:#fff}.invFormRow{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.invSep{border:none;border-top:1px solid #e2e8f0;margin:16px 0}.invSepLabel{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px}.invToast{position:fixed;bottom:24px;right:24px;background:#0f172a;color:#fff;padding:12px 18px;border-radius:8px;font-size:13px;z-index:999;box-shadow:0 4px 16px rgba(0,0,0,.2);pointer-events:none}.invToastOk{background:#16a34a}.invToastErr{background:#dc2626}.invLoading{padding:32px;color:#64748b}.invEmpty,.invLoading{text-align:center;font-size:13px}.invEmpty{padding:40px;color:#94a3b8}.sidebar{border-right:1px solid var(--line);background:var(--soft);overflow-y:auto;padding:16px}.sidebar,.sidebarSearch{display:flex;flex-direction:column;gap:0}.sidebarSearch label{margin:0 0 6px}.sidebarResults{margin-top:6px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.sidebarResultRow{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;border-bottom:1px solid var(--line);border-radius:0;background:#fff;color:var(--ink);font-weight:400;text-align:left;cursor:pointer}.sidebarResultRow:last-child{border-bottom:0}.sidebarResultRow:hover{background:var(--soft)}.sidebarResultRow strong{font-size:13px;font-weight:700}.sidebarResultRow span{font-size:12px;color:var(--muted)}.sidebarPatientCard{margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:8px;background:#fff;display:flex;flex-direction:column;gap:4px}.sidebarPatientName{font-size:16px;font-weight:800;color:var(--accent);line-height:1.2}.sidebarPatientMeta{font-size:12px;color:var(--muted)}.sidebarStatusBadge{display:inline-block;margin-top:6px;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#eef2f4;color:#455a64}.sidebarStatusBadge.good{background:#e7f4ed;color:var(--good)}.sidebarStatusBadge.bad{background:#fae9e9;color:var(--bad)}.sidebarChangeBtn{margin-top:8px;width:100%;font-size:12px;padding:7px 10px}.sidebarEmpty{margin-top:20px;color:var(--muted);font-size:13px;text-align:center;line-height:1.5}.backendMain{display:flex;flex-direction:column;overflow:hidden}.backendEmpty{flex:1 1;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px;padding:40px;text-align:center}.tabBar{display:flex;gap:0;border-bottom:2px solid var(--line);background:var(--soft);padding:0 20px;flex-shrink:0}.tabBtn{padding:13px 18px;font-size:13px;font-weight:700;background:transparent;color:var(--muted);border-radius:0;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer}.tabBtn:hover{color:var(--ink)}.tabBtn.active{color:var(--accent);border-bottom-color:var(--accent)}.tabContent{flex:1 1;overflow-y:auto;padding:20px 24px 32px}.tabTitle{font-size:18px;color:var(--accent);margin:0 0 14px}.tabTitleRow{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.tabTitleRow .tabTitle{margin:0}.panelSubtitle{font-size:14px;color:var(--accent);margin:0 0 12px;font-weight:700}.accessRow{display:flex;justify-content:space-between;align-items:center;gap:16px}.patientName{font-size:26px;font-weight:800;color:var(--accent)}.baseData,.hint{color:var(--muted);font-size:12px;line-height:1.4}.panel{border:1px solid var(--line);border-radius:8px;padding:14px;margin-top:14px}.panel.important{border-color:#d69c2f;background:#fff8ea}.panel h2{margin:0 0 10px;color:var(--accent);font-size:16px}.summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));grid-gap:12px;gap:12px;margin:14px 0}.summary.two{grid-template-columns:repeat(2,minmax(180px,1fr))}.metric{border:1px solid var(--line);border-radius:8px;padding:12px;min-height:78px}.metric span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.metric strong{font-size:20px}.split{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}.loginLinks{display:flex;flex-direction:column;gap:6px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.linkBtn{background:none;border:none;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer;font-size:13px;text-align:left}.linkBtn:hover,.switchRow{color:var(--ink)}.switchRow{display:inline-flex;align-items:center;gap:10px;margin:0;font-size:13px;cursor:pointer}.switchRow input{position:absolute;opacity:0;pointer-events:none}.switchTrack{width:46px;height:26px;border-radius:999px;background:#b8c4ca;position:relative;transition:background .2s ease}.switchTrack:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.18);transition:transform .2s ease}.switchRow input:checked+.switchTrack{background:var(--good)}.switchRow input:checked+.switchTrack:after{transform:translateX(20px)}.switchRow input:disabled+.switchTrack{opacity:.55}.status{display:inline-block;padding:5px 8px;border-radius:999px;font-weight:700;font-size:12px}.status.good{background:#e7f4ed;color:var(--good)}.status.bad{background:#fae9e9;color:var(--bad)}.status.neutral{background:#eef2f4;color:#455a64}.planHistoryList{display:flex;flex-direction:column;gap:0}.planHistoryRow{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)}.planHistoryRow:last-child{border-bottom:0}.planHistoryRow.current{background:#f6fbf9;margin:0 -14px;padding:10px 14px;border-radius:6px}.planHistoryDate{flex:0 0 90px;font-size:12px;font-weight:700;color:var(--muted);padding-top:2px}.planHistoryDetail{flex:1 1}.planHistoryDetail strong{font-size:13px;display:block}.planHistoryDetail p{margin:3px 0 0;font-size:12px;color:var(--muted)}.warrantyResultBanner{padding:12px 16px;border-radius:8px;font-size:14px;border:1px solid var(--line);background:#eef2f4;color:var(--ink)}.warrantyResultBanner.good{background:#e7f4ed;border-color:#b9decd;color:var(--good)}.warrantyResultBanner.bad{background:#fae9e9;border-color:#e8b4b4;color:var(--bad)}.notice{color:var(--muted)}.error,.notice{margin-top:12px;font-size:13px}.error{color:var(--bad);font-weight:700}@media (max-width:860px){.patientCards,.patientTimeline,.resultRow,.smileHero,.split,.summary,.summary.two{grid-template-columns:1fr}.scoreDial{justify-self:start}}