:root{--primary:#145da0;--primary-dark:#0c3d6d;--primary-soft:#eaf4fb;--bg:#f3f6f9;--panel:#fff;--text:#1f2a37;--muted:#667085;--line:#e3e8ee;--ok:#137044;--warn:#a56b00;--danger:#b42318;--shadow:0 12px 34px rgba(22,39,55,.09);font-family:Arial,Helvetica,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:var(--primary)}.app-topbar{position:sticky;top:0;z-index:20;background:linear-gradient(135deg,var(--primary-dark),var(--primary));color:#fff;box-shadow:0 5px 18px rgba(22,61,92,.2)}.app-topbar-inner{max-width:1450px;margin:auto;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;gap:11px;align-items:center;color:#fff}.brand-badge{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:#fff;color:var(--primary-dark);font-size:19px;font-weight:800;box-shadow:0 3px 8px rgba(0,0,0,.12)}.brand span{display:flex;flex-direction:column}.brand strong{font-size:16px}.brand small{opacity:.84;font-size:12px}.logo{max-height:44px;max-width:145px;background:#fff;border-radius:9px;padding:3px}.user-chip{display:flex;align-items:center;gap:9px;color:#fff;font-size:12px}.user-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.18);font-weight:800}.app-shell{max-width:1450px;margin:0 auto;display:grid;grid-template-columns:230px minmax(0,1fr);gap:0}.sidebar{background:#fff;border-right:1px solid var(--line);min-height:calc(100vh - 72px);padding:18px 12px}.sidebar-label{padding:4px 9px 9px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:bold}.sidebar a{display:flex;align-items:center;gap:9px;padding:10px 11px;margin:2px 0;text-decoration:none;color:#344054;border-radius:10px;font-size:14px}.sidebar a:hover{background:var(--primary-soft);color:var(--primary-dark)}.sidebar a.logout{margin-top:16px;color:var(--danger)}.app-main{min-width:0;padding:24px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.page-head h1{font-size:27px;margin:0}.page-head p{color:var(--muted);margin:6px 0 0;font-size:14px}.page-actions{display:flex;gap:8px;flex-wrap:wrap}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}.grid-stats{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr));gap:14px;margin-bottom:18px}.stat-card,.card,.panel,form,table{background:#fff;border:1px solid #edf0f3;border-radius:16px;box-shadow:var(--shadow)}.stat-card{padding:17px 18px}.stat-card span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.07em;font-weight:bold}.stat-card b{display:block;font-size:30px;margin-top:8px;color:var(--primary-dark)}.stat-card small{display:block;margin-top:5px;color:var(--muted)}.card{padding:17px}.panel{overflow:hidden;margin-bottom:18px}.panel-head{padding:15px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head h2{font-size:17px;margin:0}.panel-body{padding:17px 18px}form{padding:17px;margin-bottom:18px}table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden;margin-bottom:18px}th,td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:13px}th{background:#f8fafc;color:#596576;text-transform:uppercase;font-size:11px;letter-spacing:.04em}tr:last-child td{border-bottom:0}tr:hover td{background:#fbfdff}label{display:block;margin:8px 0;color:#475467;font-size:13px;font-weight:bold}input,textarea,select{box-sizing:border-box;width:100%;padding:10px 11px;border:1px solid #d0d8e0;border-radius:9px;background:#fff;color:var(--text);font:inherit;margin-top:5px}textarea{min-height:88px;resize:vertical}input:focus,textarea:focus,select:focus{outline:2px solid color-mix(in srgb,var(--primary) 25%,transparent);border-color:var(--primary)}input[type=checkbox]{width:auto}.button,button{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--primary);color:#fff;border:0;padding:10px 13px;border-radius:9px;text-decoration:none;cursor:pointer;margin:3px 3px 3px 0;font-weight:bold;font-size:13px}.button:hover,button:hover{filter:brightness(.94)}.secondary{background:#59697a}.danger{background:var(--danger)}.soft{background:#edf2f6;color:#344054}.ok{background:#e8f5ed;color:var(--ok)}.actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.flash{background:#e8f7ef;color:var(--ok);padding:12px 14px;border-radius:11px;margin-bottom:14px;font-weight:bold;border:1px solid #cbead7}.warn{background:#fff4da;color:#8a5a00;padding:12px 14px;border-radius:11px;border:1px solid #f2d999;margin-bottom:14px}.small{font-size:12px;color:var(--muted)}.muted{color:var(--muted)}.status{display:inline-flex;padding:4px 8px;border-radius:999px;background:#eef2f6;font-size:12px;white-space:nowrap}.calendar{display:grid;grid-template-columns:repeat(7,minmax(112px,1fr));gap:7px;overflow:auto}.day{background:#fff;border:1px solid var(--line);border-radius:10px;min-height:110px;padding:8px}.day .num{font-weight:bold;color:var(--primary-dark)}.event{display:block;margin-top:6px;padding:6px;border-left:4px solid var(--primary);background:var(--primary-soft);font-size:12px;text-decoration:none;border-radius:4px;color:#344054}.public{max-width:820px;margin:auto}.public .app-main{padding:20px}.public-card{background:#fff;padding:20px;border-radius:16px;border:1px solid var(--line);box-shadow:var(--shadow)}.qrbox{text-align:center}.qrbox svg{max-width:270px;height:auto}.app-footer{text-align:center;padding:18px;color:var(--muted);font-size:12px}.login-page{min-height:100vh;display:grid;place-items:center;padding:22px;background:linear-gradient(135deg,#eef5fa,#f8fbfd)}.login-card{width:min(430px,100%);background:#fff;border-radius:22px;padding:28px;box-shadow:0 20px 50px rgba(24,53,76,.14);border:1px solid #e8edf2}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.login-brand .brand-badge{background:linear-gradient(135deg,var(--primary-dark),var(--primary));color:#fff}.login-card h1{margin:0;font-size:24px}.login-card p{margin:5px 0 18px;color:var(--muted);font-size:14px}.login-card button{width:100%;padding:12px}.table-wrap{overflow:auto}.quick-links{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}.empty{padding:22px;color:var(--muted);text-align:center}@media(max-width:1020px){.app-shell{grid-template-columns:1fr}.sidebar{min-height:auto;border-right:0;border-bottom:1px solid var(--line);display:flex;gap:5px;overflow:auto;padding:9px 12px}.sidebar-label{display:none}.sidebar a{white-space:nowrap}.sidebar a.logout{margin-top:2px}.grid-stats{grid-template-columns:repeat(2,1fr)}.app-main{padding:18px}}@media(max-width:620px){.app-topbar-inner{padding:12px 14px}.user-chip span{display:none}.grid-stats{grid-template-columns:1fr}.page-head{display:block}.page-actions{margin-top:10px}.app-main{padding:14px}table{display:block;overflow-x:auto}.calendar{grid-template-columns:repeat(7,106px)}}@media print{.app-topbar,.sidebar,.noprint,.app-footer{display:none}.app-shell{display:block}.app-main{padding:0}.card,form,table,.panel{box-shadow:none}.report{border:1px solid #bbb;padding:20px}}
.inline-form{display:inline-block;padding:0;margin:0;background:transparent;border:0;box-shadow:none}.attachment-box{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px;margin:12px 0}.attachment-box h3{margin:0 0 8px}.attachment-list{display:flex;gap:8px;flex-wrap:wrap}.attachment-card{display:inline-flex;padding:10px 12px;background:var(--primary-soft);border-radius:9px;text-decoration:none;color:var(--primary-dark);font-size:13px;border:1px solid var(--line)}code{background:#f1f5f9;padding:2px 5px;border-radius:5px}
.day-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.calendar-add{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--primary);color:#fff;text-decoration:none;font-size:17px;line-height:1;font-weight:bold}.calendar-add:hover{filter:brightness(.92)}label small.small{display:block;margin-top:5px;font-weight:normal}

.capture-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0}.capture-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px}.capture-card strong{display:block;color:var(--primary-dark);font-size:14px}.capture-card span{display:block;color:var(--muted);font-size:12px;margin:4px 0 8px}.capture-button{position:relative;overflow:hidden;width:100%;margin-top:8px}.capture-button input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0}.capture-list{display:flex;flex-direction:column;gap:3px;min-height:4px}.capture-list .capture-item{font-size:11px;color:var(--ok);overflow-wrap:anywhere}.capture-completed{display:none}.upload-more{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.upload-more summary{cursor:pointer;font-weight:bold;color:var(--primary-dark);font-size:13px}@media(max-width:700px){.capture-grid{grid-template-columns:1fr}.capture-card{padding:13px}.capture-button{padding:12px 13px}}

.sending-overlay[hidden]{display:none}.sending-overlay{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:22px;background:rgba(14,30,45,.58);backdrop-filter:blur(2px)}.sending-box{width:min(360px,100%);background:#fff;border-radius:18px;padding:24px 20px;text-align:center;box-shadow:0 22px 60px rgba(0,0,0,.25);border:1px solid var(--line)}.sending-box strong{display:block;margin-top:14px;color:var(--primary-dark);font-size:17px}.sending-box span{display:block;margin-top:8px;color:var(--muted);font-size:13px;line-height:1.45}.sending-spinner{width:54px;height:54px;margin:auto;border:6px solid #dbe8f1;border-top-color:var(--primary);border-radius:50%;animation:sending-spin .85s linear infinite}@keyframes sending-spin{to{transform:rotate(360deg)}}button:disabled{opacity:.7;cursor:wait}

.import-map{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:7px;margin:12px 0 16px}.import-map span{padding:8px 10px;background:var(--primary-soft);border-radius:8px;font-size:12px;color:var(--primary-dark)}.status-pending{background:#fff4da;color:#8a5a00}.status-sent{background:#e8f7ef;color:#137044}.status-failed{background:#fef3f2;color:#b42318}.inline-label{display:inline-flex;align-items:center;gap:6px;margin-right:8px}.inline-label select{width:auto;margin:0}


/* Agenda settimanale multi-tecnico */
.week-nav{margin-bottom:14px}.inline-filter{display:inline-block;padding:0;margin:0 0 12px;background:transparent;border:0;box-shadow:none}.inline-filter label{display:flex;align-items:center;gap:9px;margin:0}.inline-filter select{width:auto;min-width:220px;margin:0}.tech-legend{display:flex;gap:10px 16px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.tech-legend span{display:inline-flex;align-items:center;gap:6px}.tech-legend i,.user-color{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #d5dde5}.unassigned-dot{background:#7b8794}.week-calendar{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:8px;overflow:auto;margin:0 0 20px}.week-day{background:#fff;border:1px solid var(--line);border-radius:13px;min-height:260px;overflow:hidden}.week-day.today{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 14%,transparent)}.week-day header{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid var(--line);background:#f8fafc}.week-day header div{display:flex;flex-direction:column}.week-day header b{color:var(--primary-dark)}.week-day header span{font-size:12px;color:var(--muted)}.week-day-body{padding:8px}.week-event,.busy-event{position:relative;display:flex;flex-direction:column;gap:3px;margin:0 0 7px;padding:8px 8px 8px 10px;border-left:5px solid var(--event-color,#145da0);border-radius:7px;background:#f8fafc;text-decoration:none;color:#344054;font-size:12px}.week-event:hover{background:#eef6fb}.week-event strong,.busy-event strong{font-size:12px;color:#1f2a37}.week-event span,.busy-event span{font-weight:bold}.week-event small,.busy-event small{color:var(--muted)}.week-event em{font-style:normal;font-size:10px;color:var(--muted)}.busy-event{background:#fff4da;border-left-style:dashed}.busy-delete{position:absolute;right:4px;top:4px;display:grid;width:20px;height:20px;padding:0;margin:0;border-radius:50%;background:#b42318;font-size:15px}.empty-slot{margin:13px 2px;color:#98a2b3;font-size:12px;text-align:center}@media(max-width:900px){.week-calendar{grid-template-columns:repeat(7,180px)}}

/* Agenda operativa v0.5.2 */
.event-actions{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.mini-link,.mini-button{display:inline-flex;align-items:center;padding:4px 6px;border-radius:6px;font-size:10px;font-weight:bold;text-decoration:none;border:0;background:var(--primary);color:#fff;line-height:1.2;margin:0}.mini-link:hover,.mini-button:hover{filter:brightness(.92)}.week-event.status-done{opacity:.72;background:#e8f7ef}.week-event.status-cancelled{opacity:.65;background:#f3f4f6;text-decoration:line-through}.week-event.status-cancelled .event-actions{text-decoration:none}.week-event .inline-form{display:inline-flex}.week-event .inline-form button{margin:0}.actions .danger{background:var(--danger)}

/* Manutenzioni v0.5.4 */
.maintenance-inline-form{padding:0;margin:0 0 10px;background:transparent;border:0;box-shadow:none}.maintenance-filter{margin-bottom:16px}.maintenance-filter .grid{margin-bottom:8px}


/* Ricerca e editor manutenzioni v0.5.5 */
.list-search{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin:16px 0}.list-search label{flex:1 1 320px}.list-search input{min-width:240px}.wysiwyg-wrap{margin:12px 0}.wysiwyg-toolbar{display:flex;gap:5px;flex-wrap:wrap;padding:8px;background:#eef3f7;border:1px solid var(--line);border-bottom:0;border-radius:10px 10px 0 0}.wysiwyg-toolbar button{padding:6px 9px;font-size:12px;margin:0;background:#fff;color:var(--primary-dark);border:1px solid var(--line)}.wysiwyg-editor{min-height:210px;padding:14px;background:#fff;border:1px solid var(--line);border-radius:0 0 10px 10px;line-height:1.5}.marker-box{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 14px;padding:10px;background:#f8fafc;border:1px solid var(--line);border-radius:10px}.marker-box b{width:100%}.marker-box code{font-size:11px}


/* Password e dettagli agenda v0.5.6 */
.login-help{text-align:center;margin-top:16px!important}.login-help a{color:var(--primary);font-weight:bold;text-decoration:none}.compact-form{max-width:620px}.mini-button.info{background:#475467}.appointment-dialog{width:min(560px,calc(100% - 28px));border:0;border-radius:16px;padding:0;box-shadow:0 24px 70px rgba(0,0,0,.28)}.appointment-dialog::backdrop{background:rgba(14,30,45,.55)}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:15px 17px;background:var(--primary);color:#fff}.dialog-close{display:grid;place-items:center;width:28px;height:28px;margin:0;padding:0;border-radius:50%;background:#fff;color:var(--primary);font-size:19px}.dialog-content{white-space:pre-wrap;padding:18px;line-height:1.55;min-height:80px}.appointment-dialog .actions{padding:0 18px 18px}

/* Pagamenti, incassi e rapportini v0.5.9 */
.mini-link.whatsapp,.button.whatsapp{background:#128c7e}.mini-link.maps{background:#59697a}.mini-link.report{background:#7a4cc2}.report-form h2{margin-top:0}.payment-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 7px;border-radius:999px;background:#eef6fb;color:var(--primary-dark);font-size:11px;font-weight:bold}.money-ok{color:var(--ok);font-weight:bold}.money-warn{color:var(--warn);font-weight:bold}.cash-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.report-form input[type=file]{padding:9px;background:#f8fafc}.event-actions .mini-link,.event-actions .mini-button{white-space:nowrap}.week-event small.payment-line{color:var(--primary-dark);font-weight:bold}.service-help{padding:10px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.dictation-note{font-size:12px;color:var(--muted)}
@media(max-width:700px){.event-actions{gap:5px}.mini-link,.mini-button{font-size:11px;padding:5px 7px}.report-form .grid{grid-template-columns:1fr}}
.pay-method-box{border:1px solid #d8e2ef;border-radius:14px;padding:12px 14px;background:#f8fbff;margin:10px 0 14px}.pay-method-box legend{font-weight:700;color:#19324d;padding:0 6px}.pay-method-box label{display:inline-flex;align-items:center;gap:7px;margin-right:18px}.mini-link.pay{background:#fff6e2;border-color:#f1c46b;color:#7a4b00}.ok-box{background:#e9f9ef;border:1px solid #9edbb1;color:#145c2d;border-radius:12px;padding:12px;margin:10px 0}.payment-badge{display:inline-block;border-radius:999px;padding:3px 8px;background:#eef3f8;font-size:.85rem}.payment-badge.paid{background:#e8f8ed;color:#176b34}.payment-badge.unpaid{background:#fff2e2;color:#8a5200}

/* Rapporto tecnico firmabile v0.7.7 */
.technical-report-form h2{margin-top:18px}.technical-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;margin:12px 0 18px}.technical-check{border:1px solid var(--line);border-radius:12px;background:#f8fafc;padding:12px}.technical-check strong{display:block;color:var(--primary-dark);margin-bottom:8px}.technical-radios{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:6px}.technical-radios label{display:inline-flex;align-items:center;gap:5px;margin:0;font-weight:normal}.technical-radios input{margin:0;width:auto}.signature-pad-wrap{background:#fff;border:2px dashed #b7c3cf;border-radius:14px;padding:8px;margin:10px 0 8px;touch-action:none}.signature-pad-wrap canvas{display:block;width:100%;height:220px;border-radius:10px;background:linear-gradient(#fff,#fff),repeating-linear-gradient(0deg,transparent,transparent 38px,#eef2f6 39px);touch-action:none}.technical-report-form .whatsapp{background:#128c7e}@media(max-width:700px){.technical-checks{grid-template-columns:1fr}.signature-pad-wrap canvas{height:200px}.technical-report-form .actions button,.technical-report-form .actions .button{width:100%;margin-right:0}}
