*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{overflow-x:hidden}h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,pre{margin:0}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}button{margin:0;padding:0;font-family:inherit;cursor:pointer;border:none;outline:none;background:transparent}input,textarea,select{margin:0;font-family:inherit;outline:none}fieldset{margin:0;padding:0;border:none}legend{margin:0;padding:0}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%}img{height:auto}table{border-collapse:collapse;border-spacing:0}th,td{padding:0}hr{margin:0;border:none}address{font-style:normal}.hidden{display:none !important}:root{--primary:#ff751a;--primary-dark:#e6690f;--primary-light:#ff9a5a;--secondary:#6c757d;--success:#28a745;--success-dark:#218838;--danger:#dc3545;--danger-dark:#c82333;--warning:#ffc107;--warning-dark:#e0a800;--info:#17a2b8;--info-dark:#138496;--light:#f8f9fa;--dark:#2a2a2a;--white:#ffffff;--gray-50:#fafafa;--gray-100:#f5f5f5;--gray-200:#eeeeee;--gray-300:#e0e0e0;--gray-400:#bdbdbd;--gray-500:#9e9e9e;--gray-600:#757575;--gray-700:#616161;--gray-800:#424242;--gray-900:#212121;--sidebar-bg:linear-gradient(135deg,#2a2a2a 0%,#3a3a3a 100%);--classe-A4:#1a8f3c;--classe-A3:#2da44e;--classe-A2:#4caf50;--classe-A1:#8bc34a;--classe-B:#cddc39;--classe-C:#ffeb3b;--classe-D:#ffc107;--classe-E:#ff9800;--classe-F:#ff5722;--classe-G:#f44336;--cat-vendita:#e91e63;--cat-catasto:#2196f3;--cat-titoli:#4caf50;--cat-progettazione:#9c27b0;--cat-sicurezza:#f44336;--cat-rilievi:#00bcd4;--cat-documenti:#607d8b;--cat-perizie:#795548;--cat-altro:#9e9e9e}[data-theme="dark"]{--light:#1a1a1a;--dark:#f5f5f5;--white:#121212;--gray-50:#212121;--gray-100:#2a2a2a;--gray-200:#333333;--gray-300:#444444;--gray-400:#666666;--gray-500:#888888;--gray-600:#aaaaaa;--gray-700:#cccccc;--gray-800:#e0e0e0;--gray-900:#f5f5f5}body{background:var(--gray-100)}:root{--font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;--font-size-xs:11px;--font-size-sm:12px;--font-size-base:14px;--font-size-lg:16px;--font-size-xl:18px;--font-size-2xl:24px;--font-size-3xl:28px;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height:1.5;--line-height-tight:1.2}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height);color:var(--gray-800)}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.1rem}h6{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--gray-500);text-transform:uppercase;letter-spacing:0.5px;display:flex;align-items:center;gap:8px}h6 i{font-size:var(--font-size-base)}small{font-size:var(--font-size-sm)}.text-sm{font-size:var(--font-size-sm) !important}.text-uppercase{text-transform:uppercase !important}.text-right{text-align:right !important}.text-muted{color:var(--gray-500) !important}.text-danger{color:var(--danger) !important}a{color:var(--secondary);transition:color 0.2s ease}a:hover{color:#0056b3}:root{--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-2xl:48px;--sidebar-width:96px}.d-grid{display:grid !important}.flex-wrap{flex-wrap:wrap !important}.mt-3{margin-top:var(--spacing-md) !important}.ml-auto{margin-left:auto !important}.border-top{border-top:1px solid var(--gray-200) !important}:root{--border-radius-sm:4px;--border-radius:8px;--border-radius-lg:12px;--border-radius-xl:16px;--border-radius-full:9999px;--box-shadow-sm:0 1px 3px rgba(0,0,0,0.08);--box-shadow:0 2px 8px rgba(0,0,0,0.1);--box-shadow-lg:0 10px 40px rgba(0,0,0,0.15);--box-shadow-xl:0 20px 60px rgba(0,0,0,0.2);--transition-fast:all 0.15s ease;--transition:all 0.3s ease;--transition-slow:all 0.5s ease;--z-index-dropdown:100;--z-index-sticky:500;--z-index-sidebar:999;--z-index-modal-backdrop:1500;--z-index-modal:2000;--z-index-toast:3000;--z-index-loader:9999}.fade-in{animation:fadeIn 0.3s ease}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.g-grid{--col-w:auto;--gap:var(--spacing-lg);display:grid;grid-template-columns:repeat(var(--cols,1),var(--col-w));grid-auto-rows:auto;gap:var(--gap)}.modal-body .g-grid{--col-w:300px}.g-cell{display:flex;flex-direction:column;gap:var(--spacing-md);min-width:0;min-height:0}.g-cell[class*="colspan-"]{grid-column:span var(--span)}.g-cell[class*="rowspan-"]{grid-row:span var(--span)}.g-cell.colspan-3{--span:3}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);color:var(--white);position:fixed;top:0;left:0;height:100vh;overflow-y:auto;overflow-x:hidden;z-index:var(--z-index-sidebar);transition:var(--transition);display:flex;flex-direction:column;box-shadow:2px 0 10px rgba(0,0,0,0.1)}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-track{background:rgba(255,255,255,0.05)}.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.2);border-radius:3px}.sidebar-header{padding:var(--spacing-sm);background:rgba(255,117,26,0.1);border-bottom:1px solid rgba(255,255,255,0.1);flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm)}.sidebar-brand{display:flex;flex-direction:column;align-items:center}.sidebar-logo{width:48px;height:48px;border-radius:50%;object-fit:cover}.user-info{display:flex;flex-direction:column;align-items:center;width:100%}.user-avatar{width:42px;height:42px;background:linear-gradient(135deg,var(--primary),var(--primary-light));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);flex-shrink:0;cursor:pointer;transition:var(--transition-fast)}.user-avatar:hover{transform:scale(1.1);box-shadow:0 0 0 2px rgba(255,255,255,0.3)}.sidebar-menu{flex:1;padding:var(--spacing-xs);overflow-y:auto;display:flex;flex-direction:column;gap:2px}.menu-section{display:flex;flex-direction:row;gap:0;margin-top:var(--spacing-xs);border-top:1px solid rgba(255,255,255,0.1);padding-top:var(--spacing-xs)}.menu-section-title{font-size:8px;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:2px;color:rgba(255,255,255,0.35);padding:var(--spacing-sm) 3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;flex-shrink:0;user-select:none;word-break:break-all;line-height:1;text-align:center;width:16px}.menu-section-items{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.menu-link{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--spacing-sm) var(--spacing-xs);color:rgba(255,255,255,0.7);text-decoration:none;border-radius:var(--border-radius);transition:var(--transition-fast);cursor:pointer}.menu-link:hover{background:rgba(255,255,255,0.1);color:var(--white)}.menu-link.active{background:var(--primary);color:var(--white)}.menu-icon{font-size:18px;width:auto;text-align:center}.menu-text{font-size:9px;font-weight:var(--font-weight-medium);text-align:center;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.menu-item{position:relative}.sidebar-menu > .menu-item .menu-icon{font-size:22px}.sidebar-menu > .menu-item .menu-text{font-size:10px}.mobile-header{display:none;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--white);border-bottom:1px solid var(--gray-200);position:sticky;top:0;z-index:100}.btn-hamburger{background:none;border:none;font-size:20px;padding:var(--spacing-sm);cursor:pointer;color:var(--gray-700);border-radius:var(--border-radius)}.btn-hamburger:hover{background:var(--gray-100)}.mobile-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--gray-800)}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:calc(var(--z-index-sidebar) - 1)}.sidebar-overlay.show{display:block}.user-dropdown-menu{position:fixed;background:var(--white);border-radius:var(--border-radius);box-shadow:var(--box-shadow-lg);min-width:180px;z-index:9999;padding:var(--spacing-xs) 0}.user-dropdown-menu a{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);color:var(--gray-700);text-decoration:none;font-size:var(--font-size-sm);transition:var(--transition-fast)}.user-dropdown-menu a:hover{background:var(--gray-50);color:var(--primary)}.user-dropdown-menu .dropdown-divider{height:1px;background:var(--gray-200);margin:var(--spacing-xs) 0}@media (max-width:768px){.sidebar{transform:translateX(-100%);width:64px}.sidebar.show{transform:translateX(0)}.menu-text,.menu-section-title{display:none}.menu-section{flex-direction:column;border-top:1px solid rgba(255,255,255,0.08);padding-top:var(--spacing-xs)}.menu-link{padding:var(--spacing-sm)}.mobile-header{display:flex}.main-content{margin-left:0}.content-area{padding:var(--spacing-md)}}#app{display:flex;min-height:100vh}.dashboard-wrapper{display:flex;flex:1;height:100vh;overflow:hidden}.main-content{flex:1;margin-left:var(--sidebar-width);height:100vh;display:flex;flex-direction:column;overflow:hidden}.content-area{flex:1;padding:var(--spacing-lg);width:100%;display:flex;flex-direction:column;gap:var(--spacing-lg);overflow:hidden;min-height:0}.page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);flex-shrink:0}.page-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--gray-900);display:flex;align-items:center;gap:var(--spacing-sm)}.page-title i{color:var(--primary)}.page-subtitle{color:var(--gray-500)}.list-panel{background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm);flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.list-header{display:flex;flex-direction:column;border-bottom:1px solid var(--gray-200);flex-shrink:0}.list-header-main{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px}.list-header-status{padding:6px 20px 12px;border-top:1px solid var(--gray-100)}.list-body{padding:0;flex:1;min-height:0;display:flex;flex-direction:column}.servizio-stat-row{display:flex;justify-content:space-between;padding:var(--spacing-sm) 0;border-bottom:1px solid var(--gray-100)}.servizio-stat-row:last-child{border-bottom:none}.calendario-layout{display:grid;grid-template-columns:1fr 320px;gap:var(--spacing-lg)}.calendario-main{display:flex;flex-direction:column;gap:var(--spacing-lg)}.calendario-sidebar{display:flex;flex-direction:column;gap:var(--spacing-lg)}.calendar-container{background:var(--white);border-radius:var(--border-radius-lg);padding:var(--spacing-lg);box-shadow:var(--box-shadow-sm)}.calendar-header{display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.calendar-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);min-width:180px;text-align:center}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:var(--gray-500);padding:var(--spacing-sm) 0;border-bottom:1px solid var(--gray-200)}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-top:var(--spacing-sm)}.calendar-day{min-height:72px;padding:var(--spacing-sm);background:var(--gray-50);border-radius:var(--border-radius);cursor:pointer;transition:var(--transition-fast)}.calendar-day:hover:not(.empty):not(.other-month){background:var(--gray-100)}.calendar-day.empty{background:transparent;cursor:default}.calendar-day.other-month{opacity:0.4}.calendar-day.today{background:rgba(255,117,26,0.1);border:2px solid var(--primary)}.calendar-day.selected{background:var(--primary-light)}.day-number{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.calendar-day.today .day-number{color:var(--primary)}.day-events{display:flex;flex-wrap:wrap;gap:3px;margin-top:var(--spacing-xs)}.day-event{width:8px;height:8px;border-radius:50%}.day-event.overdue{animation:pulse 1.5s infinite}.day-event.progetto{background:var(--primary)}.day-event.ape{background:var(--success)}.day-event.enea{background:var(--warning)}.day-event.pregeo{background:#8b5cf6}.day-event.docfa{background:#ec4899}.upcoming-item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);background:var(--gray-50);border-radius:var(--border-radius);cursor:pointer;transition:var(--transition-fast)}.upcoming-item:hover{background:var(--gray-100)}.upcoming-item.overdue{border-left:3px solid var(--danger)}.upcoming-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--white);flex-shrink:0;font-size:var(--font-size-sm)}.upcoming-icon.progetto{background:var(--primary)}.upcoming-icon.ape{background:var(--success)}.upcoming-icon.enea{background:var(--warning)}.upcoming-icon.pregeo{background:#8b5cf6}.upcoming-icon.docfa{background:#ec4899}.upcoming-content{flex:1;min-width:0}.upcoming-title{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upcoming-desc{font-size:var(--font-size-xs);color:var(--gray-500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upcoming-date{text-align:right;flex-shrink:0}.upcoming-date-value{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm)}.upcoming-date-diff{font-size:var(--font-size-xs);color:var(--gray-500)}.day-detail-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.day-detail-item{display:flex;gap:var(--spacing-md);padding:var(--spacing-sm);background:var(--gray-50);border-radius:var(--border-radius);cursor:pointer}.day-detail-item:hover{background:var(--gray-100)}.day-detail-icon{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--white);flex-shrink:0}.day-detail-icon.progetto{background:var(--primary)}.day-detail-icon.ape{background:var(--success)}.day-detail-icon.enea{background:var(--warning)}.day-detail-icon.pregeo{background:#8b5cf6}.day-detail-icon.docfa{background:#ec4899}.day-detail-content{flex:1;min-width:0}.day-detail-title{font-weight:var(--font-weight-medium)}.day-detail-desc{font-size:var(--font-size-sm);color:var(--gray-500)}.day-detail-stato{margin-top:var(--spacing-xs)}.mail-layout{display:grid;grid-template-columns:200px 320px 1fr;flex:1;min-height:0;background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm);overflow:hidden}.mail-sidebar{background:var(--gray-50);border-right:1px solid var(--gray-200);display:flex;flex-direction:column}.mail-sidebar-header{padding:var(--spacing-md);border-bottom:1px solid var(--gray-200)}.mail-folders{flex:1;overflow-y:auto;padding:var(--spacing-sm)}.mail-folder{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;transition:var(--transition-fast);color:var(--gray-700)}.mail-folder:hover{background:var(--gray-100)}.mail-folder.active{background:var(--primary);color:var(--white)}.mail-folder i{width:18px;text-align:center}.mail-list-panel{display:flex;flex-direction:column;border-right:1px solid var(--gray-200)}.mail-list-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--gray-200);flex-shrink:0}.mail-list-header .search-box{flex:1}.mail-list-header .search-box input{font-size:var(--font-size-sm);padding:var(--spacing-sm) 12px var(--spacing-sm) 36px}.mail-list{flex:1;overflow-y:auto}.mail-item{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--gray-100);cursor:pointer;transition:var(--transition-fast)}.mail-item:hover{background:var(--gray-50)}.mail-item.active{background:rgba(255,117,26,0.1);border-left:3px solid var(--primary)}.mail-item.unread{background:var(--white)}.mail-item.unread .mail-from,.mail-item.unread .mail-subject{font-weight:var(--font-weight-semibold)}.mail-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}.mail-from{font-size:var(--font-size-sm);color:var(--gray-800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.mail-date{font-size:var(--font-size-xs);color:var(--gray-500);flex-shrink:0}.mail-subject{font-size:var(--font-size-sm);color:var(--gray-700);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mail-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xs) var(--spacing-md);border-top:1px solid var(--gray-200);background:var(--gray-50);flex-shrink:0}.mail-pagination-info{font-size:var(--font-size-xs);color:var(--gray-500)}.mail-pagination-buttons{display:flex;gap:var(--spacing-xs)}.mail-content-panel{display:flex;flex-direction:column;overflow:hidden}.mail-empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--gray-400);gap:var(--spacing-sm)}.mail-empty-state i{font-size:48px}.mail-empty-state p{font-size:var(--font-size-sm)}.mail-detail{flex:1;display:flex;flex-direction:column;overflow:hidden}.mail-detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-md);border-bottom:1px solid var(--gray-200);flex-shrink:0}.mail-detail-subject{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);flex:1}.mail-detail-actions{display:flex;gap:var(--spacing-xs);flex-shrink:0}.mail-detail-meta{padding:var(--spacing-sm) var(--spacing-md);background:var(--gray-50);border-bottom:1px solid var(--gray-200);flex-shrink:0}.mail-meta-row{display:flex;gap:var(--spacing-sm);font-size:var(--font-size-sm)}.mail-meta-label{color:var(--gray-500);min-width:40px}.mail-meta-value{color:var(--gray-800)}.mail-attachments{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--gray-200);flex-shrink:0}.mail-attachments h6{font-size:var(--font-size-sm);color:var(--gray-600);display:flex;align-items:center;gap:var(--spacing-xs);margin-bottom:var(--spacing-xs)}.attachment-list{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.attachment-item{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--gray-100);border-radius:var(--border-radius);font-size:var(--font-size-sm);color:var(--gray-700);text-decoration:none;transition:var(--transition-fast)}.attachment-item:hover{background:var(--gray-200)}.attachment-item small{color:var(--gray-500)}.mail-detail-body{flex:1;padding:var(--spacing-md);overflow-y:auto;font-size:var(--font-size-base);line-height:1.6}.mail-detail-body pre{white-space:pre-wrap;word-wrap:break-word;font-family:inherit}.mail-detail-body img{max-width:100%;height:auto}.mail-compose{display:flex;flex-direction:column;gap:var(--spacing-md)}.attachment-preview{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--gray-100);border-radius:var(--border-radius);font-size:var(--font-size-sm)}.attachment-preview button{background:none;border:none;cursor:pointer;color:var(--gray-500)}.attachment-preview button:hover{color:var(--danger)}.export-page{display:flex;flex-direction:column;gap:24px;overflow-y:auto;padding-bottom:32px}.export-section{background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm);overflow:hidden}.export-section-small{max-width:480px}.export-section-header{display:flex;align-items:center;gap:16px;padding:20px 24px;border-bottom:1px solid var(--gray-200)}.export-section-header h3{font-size:15px;font-weight:var(--font-weight-semibold);color:var(--gray-900);margin:0;line-height:1.3}.export-section-header p{font-size:var(--font-size-sm);color:var(--gray-500);margin:2px 0 0}.export-section-icon{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius);background:rgba(255,117,26,0.1);color:var(--primary);font-size:18px;flex-shrink:0}.export-section-icon-clienti{background:rgba(33,150,243,0.1);color:#2196f3}.export-section-icon-backup{background:rgba(255,193,7,0.1);color:#e0a800}.export-filters{padding:20px 24px;background:var(--gray-50);border-bottom:1px solid var(--gray-200)}.export-filters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;align-items:end}.export-filter-item{display:flex;flex-direction:column;gap:6px}.export-filter-item > label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--gray-600)}.export-format-buttons{display:flex;gap:12px;padding:20px 24px;flex-wrap:wrap}.export-btn{display:flex;align-items:center;gap:12px;padding:12px 20px;border:1px solid var(--gray-200);border-radius:var(--border-radius);background:var(--white);cursor:pointer;transition:var(--transition);min-width:160px}.export-btn:hover{border-color:var(--gray-300);transform:translateY(-1px);box-shadow:var(--box-shadow)}.export-btn:active{transform:translateY(0);box-shadow:none}.export-btn-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-sm);font-size:16px;flex-shrink:0}.export-btn-text{display:flex;flex-direction:column;text-align:left;line-height:1.3}.export-btn-text strong{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--gray-800)}.export-btn-text small{font-size:var(--font-size-xs);color:var(--gray-500)}.export-btn-excel .export-btn-icon{background:rgba(40,167,69,0.1);color:var(--success)}.export-btn-excel:hover{border-color:var(--success);background:rgba(40,167,69,0.03)}.export-btn-csv .export-btn-icon{background:rgba(255,117,26,0.1);color:var(--primary)}.export-btn-csv:hover{border-color:var(--primary);background:rgba(255,117,26,0.03)}.export-btn-pdf .export-btn-icon{background:rgba(220,53,69,0.1);color:var(--danger)}.export-btn-pdf:hover{border-color:var(--danger);background:rgba(220,53,69,0.03)}.export-btn-fic .export-btn-icon{background:rgba(23,162,184,0.1);color:var(--info)}.export-btn-fic:hover{border-color:var(--info);background:rgba(23,162,184,0.03)}.export-btn-backup .export-btn-icon{background:rgba(255,193,7,0.1);color:#e0a800}.export-btn-backup:hover{border-color:var(--warning);background:rgba(255,193,7,0.03)}@media (max-width:768px){.export-section-small{max-width:100%}.export-filters-grid{grid-template-columns:1fr}.export-format-buttons{flex-direction:column}.export-btn{min-width:auto;width:100%}}[data-theme="dark"] .export-btn{background:var(--gray-100);border-color:var(--gray-300)}[data-theme="dark"] .export-btn:hover{border-color:var(--gray-400)}[data-theme="dark"] .export-filters{background:var(--gray-100)}.bento-header{display:flex;align-items:center;gap:var(--spacing-md);background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm);padding:var(--spacing-md) 20px;flex-shrink:0}.bento-avatar{width:50px;height:50px;border-radius:var(--border-radius-lg);color:var(--white);font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.bento-header-info{flex:1;min-width:0}.bento-header-title{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.bento-nome{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--gray-900);line-height:1.3}.bento-header-meta{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-xs);flex-wrap:wrap}.bento-header-meta span{font-size:var(--font-size-xs);color:var(--gray-500);display:flex;align-items:center;gap:var(--spacing-xs)}.bento-header-meta i{font-size:9px}.bento-header-actions{margin-left:auto;display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.bento-card{background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm);overflow:hidden;display:flex;flex-direction:column;flex-shrink:0;min-width:0}.bento-card--fill{flex:1;min-height:0}.bento-card-head{display:flex;align-items:center;gap:7px;padding:9px 14px;border-bottom:1px solid var(--gray-200);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:0.4px;color:var(--gray-500);flex-shrink:0}.bento-card-head i{color:var(--primary);font-size:11px}.bento-card-head .badge{margin-left:auto}.bento-card-head .hint{margin-left:auto;font-size:10px;color:var(--gray-400);font-style:italic;text-transform:none;letter-spacing:0;font-weight:var(--font-weight-normal)}.head-actions{margin-left:auto;display:flex;align-items:center;gap:var(--spacing-xs)}.bento-card-body{padding:var(--spacing-sm) 14px;min-width:0;overflow:hidden}.bento-card-body--scroll{overflow-y:auto;flex:1;min-height:0}.bento-card-body--contacts{display:flex;flex-direction:column;gap:6px}.bento-detail-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--gray-100);font-size:var(--font-size-sm);gap:var(--spacing-sm)}.bento-detail-row:last-child{border-bottom:none}.bento-detail-label{color:var(--gray-400);font-size:var(--font-size-xs);flex-shrink:0}.bento-detail-value{font-weight:var(--font-weight-medium);color:var(--gray-900);text-align:right}.bento-fin-total{display:flex;justify-content:space-between;font-size:13px;font-weight:var(--font-weight-bold);padding-top:var(--spacing-sm);margin-top:var(--spacing-xs);border-top:2px solid var(--gray-200)}.saldato .bento-detail-value{color:var(--success) !important}.bento-stats{display:grid;gap:var(--spacing-sm)}.bento-stats--3{grid-template-columns:repeat(3,1fr)}.bento-stat{text-align:center;padding:var(--spacing-sm);background:var(--gray-50);border-radius:var(--border-radius)}.bento-stat--success{background:#e8f5e9}.bento-stat--primary{background:var(--primary-light,#fff3eb)}.bento-stat-num{font-size:22px;font-weight:800;color:var(--gray-900);line-height:1.1}.bento-stat--success .bento-stat-num{color:var(--success)}.bento-stat--primary .bento-stat-num{color:var(--primary)}.bento-stat-label{font-size:var(--font-size-xs);color:var(--gray-400);text-transform:uppercase;letter-spacing:0.4px;margin-top:2px}.bento-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--spacing-sm);flex-shrink:0}.bento-kpi{background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm);padding:var(--spacing-sm) 14px}.bento-kpi--action{cursor:pointer;transition:var(--transition-fast)}.bento-kpi--action:hover{box-shadow:var(--box-shadow);background:var(--gray-50)}.bento-kpi-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:0.4px;color:var(--gray-400);font-weight:var(--font-weight-semibold)}.bento-kpi-value{font-size:20px;font-weight:800;color:var(--gray-900);margin-top:var(--spacing-xs)}.bento-kpi-value--success{color:var(--success)}.bento-kpi-value--primary{color:var(--primary)}.bento-kpi-value--danger{color:var(--danger)}.servizi-utilizzati{display:flex;flex-wrap:wrap;gap:6px}.servizio-row{display:flex;align-items:center;gap:var(--spacing-sm);padding:8px 10px;border-radius:var(--border-radius);background:var(--gray-50);margin-bottom:6px}.servizio-row:last-child{margin-bottom:0}.servizio-row-icon{width:32px;height:32px;border-radius:var(--border-radius);display:flex;align-items:center;justify-content:center;color:var(--white);font-size:12px;flex-shrink:0;background:var(--primary)}.servizio-row-icon.vendita{background:var(--cat-vendita)}.servizio-row-icon.catasto{background:var(--cat-catasto)}.servizio-row-icon.titoli_permessi{background:var(--cat-titoli)}.servizio-row-icon.progettazione{background:var(--cat-progettazione)}.servizio-row-icon.sicurezza{background:var(--cat-sicurezza)}.servizio-row-icon.rilievi{background:var(--cat-rilievi)}.servizio-row-icon.documenti{background:var(--cat-documenti)}.servizio-row-icon.perizie{background:var(--cat-perizie)}.servizio-row-icon.altro{background:var(--cat-altro)}.servizio-row-info{flex:1;min-width:0;display:flex;flex-direction:column}.servizio-row-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--gray-800);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bento-prog{height:4px;background:var(--gray-200);border-radius:2px;overflow:hidden;margin-top:var(--spacing-xs)}.bento-prog-fill{height:100%;border-radius:2px;transition:width 0.4s ease}.bento-prog-fill--success{background:var(--success)}.note-text{font-size:var(--font-size-sm);color:var(--gray-600);line-height:1.6}.bento-grid{display:grid;gap:var(--spacing-sm);flex:1;min-height:0}.bento-col{display:flex;flex-direction:column;gap:var(--spacing-sm);min-height:0}.cliente-bento{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:var(--spacing-md);flex:1;min-height:0;overflow:hidden}.cliente-bento-col{display:flex;flex-direction:column;gap:var(--spacing-md);min-height:0;min-width:0;overflow:hidden}.preventivo-bento{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:var(--spacing-md);flex:1;min-height:0;overflow:hidden}.preventivo-bento-col{display:flex;flex-direction:column;gap:var(--spacing-md);min-height:0;min-width:0;overflow:hidden}.progetto-bento{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:var(--spacing-md);flex:1;min-height:0;overflow:hidden}.progetto-bento-col{display:flex;flex-direction:column;gap:var(--spacing-md);min-height:0;min-width:0;overflow:hidden}.bento-grid-2col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--spacing-sm);flex:1;min-height:0;min-width:0;align-content:start;overflow:hidden}.bento-subcol{display:flex;flex-direction:column;gap:var(--spacing-sm);min-height:0;min-width:0;overflow:hidden}.bento-card--span2{grid-column:span 2}#formProgetto,#formPreventivo,#formCliente{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.form-tabs-mini{display:flex;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.form-tab-mini{flex:1;padding:5px 10px;background:var(--gray-100);border:1px solid var(--gray-200);border-radius:var(--border-radius-sm);color:var(--gray-500);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.form-tab-mini:hover{background:var(--gray-200)}.form-tab-mini.active{background:var(--primary);border-color:var(--primary);color:var(--white)}.bento-search-input{width:100%;border:1px solid var(--gray-200);border-radius:var(--border-radius);padding:6px 10px;font-size:var(--font-size-sm);font-family:inherit;color:var(--gray-800);transition:var(--transition-fast)}.bento-search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,117,26,0.12)}.bento-search-input::placeholder{color:var(--gray-400)}.list{display:flex;flex-direction:column}.list-row{display:flex;align-items:center;gap:var(--spacing-sm);padding:0 var(--spacing-xs);height:34px;font-size:var(--font-size-sm);border-bottom:1px solid var(--gray-200);flex-shrink:0}.list-row:last-child{border-bottom:none}.list-row-icon{font-size:1rem;width:var(--spacing-lg);text-align:center;flex-shrink:0}.list-row-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row-value{font-weight:var(--font-weight-semibold);min-width:80px;text-align:right}.list-row-inputs-inline{display:flex;gap:6px;flex:1;justify-content:flex-end}.list-row-inputs-inline .list-row-input{flex:1;min-width:0}.list-row-input{min-width:100px;text-align:right;padding:4px 8px;font-size:var(--font-size-sm);border:1px solid var(--gray-300);border-radius:var(--border-radius-sm);background:var(--white)}.list-row-input:hover{border-color:var(--gray-400)}.list-row-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(255,117,26,0.15)}.list-row-input[type="text"]{min-width:120px}.list-row-input[type="date"]{min-width:130px}.list-row input[type="checkbox"]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.list-row select{min-width:100px;padding:4px 8px;font-size:var(--font-size-sm);border:1px solid var(--gray-300);border-radius:var(--border-radius-sm);background:var(--white);cursor:pointer}.list-row select:hover{border-color:var(--gray-400)}.list-row select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(255,117,26,0.15)}.list-row input:not([type="checkbox"]):not(.list-row-input),.list-row select:not(.list-row-input){border:none;background:transparent;padding:0;font-size:var(--font-size-sm);text-align:right}.list-row input:not([type="checkbox"]):not(.list-row-input):focus,.list-row select:not(.list-row-input):focus{outline:none;box-shadow:0 0 0 3px rgba(255,117,26,0.15);border-radius:var(--border-radius-sm)}.list-row-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.list > p.text-muted,.g-cell > p.text-muted{display:flex;flex:1;align-items:center;justify-content:center;padding:var(--spacing-md);color:var(--gray-400);font-size:var(--font-size-sm);font-style:italic}.list-totals{border-top:1px solid var(--gray-200);padding-top:var(--spacing-sm);margin-top:var(--spacing-xs);display:flex;flex-direction:column;gap:4px}.list-total-row{display:flex;justify-content:space-between;font-size:var(--font-size-sm)}.list-total-row:first-child{font-weight:var(--font-weight-semibold)}.list-total-row.success span:last-child{color:var(--success)}.list-total-row.danger span:last-child{color:var(--danger);font-weight:var(--font-weight-semibold)}.list-total-row.saldato span:last-child{color:var(--success)}.fixed-list{overflow-y:auto}.list-clickable .list-row{cursor:pointer}.list-clickable .list-row:hover{background:var(--gray-50)}.section-header{display:flex;align-items:center;justify-content:space-between}.modal{position:fixed;inset:0;z-index:var(--z-index-modal);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:var(--transition)}.modal.show{opacity:1;visibility:visible}.modal-overlay{position:absolute;inset:0;background:rgba(0,0,0,0.5);backdrop-filter:blur(2px)}.modal-container{position:relative;max-height:90vh;background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-xl);display:flex;flex-direction:column;transform:scale(0.9) translateY(20px);transition:transform 0.3s ease;overflow:hidden}.modal.show .modal-container{transform:scale(1) translateY(0)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--gray-200);flex-shrink:0}.modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);display:flex;align-items:center;gap:var(--spacing-sm)}.modal-title i{color:var(--primary)}.modal-close{width:var(--spacing-xl);height:var(--spacing-xl);display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--border-radius);color:var(--gray-500);cursor:pointer;transition:var(--transition)}.modal-close:hover{background:var(--gray-100);color:var(--gray-700)}.modal-body{flex:1;padding:var(--spacing-lg);overflow-y:auto}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);border-top:1px solid var(--gray-200);background:var(--gray-50);flex-shrink:0}.modal-auto .modal-container{max-height:none}.modal-auto .modal-body{overflow-y:visible}.modal-fullscreen .modal-container{width:100%;height:100%;max-height:100%;border-radius:0}.form-control{display:block;width:100%;padding:10px 14px;font-size:var(--font-size-base);font-family:inherit;line-height:1.5;color:var(--gray-800);background:var(--white);border:1px solid var(--gray-300);border-radius:var(--border-radius);transition:var(--transition)}.form-control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,117,26,0.15)}.form-control::placeholder{color:var(--gray-400)}.form-control:disabled,.form-control[readonly]{background:var(--gray-100);cursor:not-allowed}textarea.form-control{min-height:80px;resize:vertical}select.form-control{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23757575' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.form-group > label,.form-label{display:block;font-weight:var(--font-weight-medium);color:var(--gray-700);font-size:var(--font-size-sm)}.form-label.required::after{content:' *';color:var(--danger)}.form-text{font-size:var(--font-size-sm);color:var(--gray-500)}.search-box{position:relative}.search-box i{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--gray-400);pointer-events:none}.search-box input{padding-left:40px}.form-section{display:flex;flex-direction:column}.form-section > h6{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--gray-600);display:flex;align-items:center;gap:var(--spacing-xs)}.form-section > h6 i{color:var(--gray-500)}.form-tabs{display:flex;gap:var(--spacing-sm)}.form-tab{flex:1;padding:var(--spacing-sm) var(--spacing-md);background:var(--gray-100);border:1px solid var(--gray-200);border-radius:var(--border-radius);color:var(--gray-600);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.form-tab:hover{background:var(--gray-200)}.form-tab.active{background:var(--primary);border-color:var(--primary);color:var(--white)}.form-tab i{font-size:var(--font-size-base)}.search-field{position:relative}.btn{--btn-bg:var(--gray-200);--btn-color:var(--gray-800);--btn-hover-bg:var(--gray-300);--btn-border:transparent;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:10px 20px;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);line-height:1.4;text-decoration:none;background:var(--btn-bg);color:var(--btn-color);border:1px solid var(--btn-border);border-radius:var(--border-radius);cursor:pointer;transition:var(--transition);white-space:nowrap}.btn:hover{background:var(--btn-hover-bg)}.btn:disabled{opacity:0.6;cursor:not-allowed}.btn i{font-size:14px}.btn-sm{padding:6px 12px;font-size:var(--font-size-sm)}.btn-sm i{font-size:12px}.btn-primary{--btn-bg:var(--primary);--btn-color:var(--white);--btn-hover-bg:var(--primary-dark)}.btn-secondary{--btn-bg:var(--gray-200);--btn-color:var(--gray-800);--btn-hover-bg:var(--gray-300)}.btn-success{--btn-bg:var(--success);--btn-color:var(--white);--btn-hover-bg:var(--success-dark)}.btn-danger{--btn-bg:var(--danger);--btn-color:var(--white);--btn-hover-bg:var(--danger-dark)}.btn-outline-primary{--btn-bg:transparent;--btn-color:var(--primary);--btn-border:var(--primary);--btn-hover-bg:var(--primary)}.btn-outline-primary:hover{--btn-color:var(--white)}.btn-outline-secondary{--btn-bg:transparent;--btn-color:var(--gray-600);--btn-border:var(--gray-300);--btn-hover-bg:var(--gray-100)}.btn-outline-success{--btn-bg:transparent;--btn-color:var(--success);--btn-border:var(--success);--btn-hover-bg:var(--success)}.btn-outline-success:hover{--btn-color:var(--white)}.btn-outline-danger{--btn-bg:transparent;--btn-color:var(--danger);--btn-border:var(--danger);--btn-hover-bg:var(--danger)}.btn-outline-danger:hover{--btn-color:var(--white)}.btn-link{--btn-bg:transparent;--btn-color:var(--gray-500);--btn-hover-bg:transparent;padding:var(--spacing-xs) var(--spacing-sm);border:none}.btn-link:hover{--btn-color:var(--gray-700)}.btn-block{display:flex;width:100%}.btn-icon{padding:6px;gap:0}.btn-icon.btn-sm{padding:var(--spacing-xs)}.btn-action{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;color:var(--gray-400);font-size:12px;cursor:pointer;transition:var(--transition-fast)}.btn-action:hover{color:var(--gray-600)}.btn-action-primary{color:var(--primary)}.btn-action-primary:hover{color:var(--primary-dark)}.btn-action-danger{color:var(--danger)}.btn-action-danger:hover{color:var(--danger-dark)}.badge{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);line-height:1.4;white-space:nowrap;border-radius:var(--border-radius-full);background:var(--gray-200);color:var(--gray-600)}.badge.sm{padding:2px var(--spacing-xs);font-size:10px}.badge.lg{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm)}.badge.primary{background:color-mix(in srgb,var(--primary) 15%,transparent);color:var(--primary)}.badge.secondary{background:var(--gray-200);color:var(--gray-600)}.badge.success,.badge.pagato{background:color-mix(in srgb,var(--success) 15%,transparent);color:var(--success)}.badge.danger,.badge.non-pagato{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger)}.badge.warning{background:color-mix(in srgb,var(--warning) 20%,transparent);color:#856404}.badge.info{background:color-mix(in srgb,var(--info) 15%,transparent);color:var(--info)}.badge.gratuito{background:color-mix(in srgb,var(--dark) 15%,transparent);color:var(--dark)}.badge.vendita{background:color-mix(in srgb,var(--cat-vendita) 15%,transparent);color:var(--cat-vendita)}.badge.catasto{background:color-mix(in srgb,var(--cat-catasto) 15%,transparent);color:var(--cat-catasto)}.badge.titoli_permessi{background:color-mix(in srgb,var(--cat-titoli) 15%,transparent);color:var(--cat-titoli)}.badge.progettazione{background:color-mix(in srgb,var(--cat-progettazione) 15%,transparent);color:var(--cat-progettazione)}.badge.sicurezza{background:color-mix(in srgb,var(--cat-sicurezza) 15%,transparent);color:var(--cat-sicurezza)}.badge.rilievi{background:color-mix(in srgb,var(--cat-rilievi) 15%,transparent);color:var(--cat-rilievi)}.badge.documenti{background:color-mix(in srgb,var(--cat-documenti) 15%,transparent);color:var(--cat-documenti)}.badge.perizie{background:color-mix(in srgb,var(--cat-perizie) 15%,transparent);color:var(--cat-perizie)}.badge.altro{background:color-mix(in srgb,var(--cat-altro) 15%,transparent);color:var(--cat-altro)}.badge[class*="classe-"]{border-radius:var(--border-radius);min-width:28px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,0.2)}.badge.classe-A4{background:var(--classe-A4)}.badge.classe-A3{background:var(--classe-A3)}.badge.classe-A2{background:var(--classe-A2)}.badge.classe-A1{background:var(--classe-A1)}.badge.classe-B{background:var(--classe-B);color:#333;text-shadow:none}.badge.classe-C{background:var(--classe-C);color:#333;text-shadow:none}.badge.classe-D{background:var(--classe-D);color:#333;text-shadow:none}.badge.classe-E{background:var(--classe-E)}.badge.classe-F{background:var(--classe-F)}.badge.classe-G{background:var(--classe-G)}.avatar,.avatar-xs,.avatar-sm,.avatar-md,.avatar-lg,.avatar-xl{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--white);font-weight:var(--font-weight-semibold);flex-shrink:0;overflow:hidden}.avatar{width:var(--spacing-xl);height:var(--spacing-xl);font-size:var(--font-size-sm)}.avatar-xs{width:var(--spacing-lg);height:var(--spacing-lg);font-size:10px}.avatar-sm{width:var(--spacing-xl);height:var(--spacing-xl);font-size:var(--font-size-xs)}.avatar-md{width:var(--spacing-2xl);height:var(--spacing-2xl);font-size:var(--font-size-base)}.avatar-lg{width:64px;height:64px;font-size:var(--font-size-lg)}.avatar-xl{width:96px;height:96px;font-size:var(--font-size-2xl)}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-primary{background:var(--primary)}.avatar-secondary{background:var(--secondary)}.avatar-success{background:var(--success)}.avatar-danger{background:var(--danger)}.avatar-warning{background:var(--warning);color:var(--gray-900)}.avatar-info{background:var(--info)}.avatar-dark{background:var(--gray-800)}.avatar-light{background:var(--gray-200);color:var(--gray-700)}.avatar-gradient{background:linear-gradient(135deg,var(--primary),var(--primary-light))}.avatar-group{display:flex}.avatar-group .avatar,.avatar-group .avatar-xs,.avatar-group .avatar-sm{border:2px solid var(--white)}.avatar-status{position:relative}.avatar-status::after{content:'';position:absolute;bottom:0;right:0;width:var(--spacing-sm);height:var(--spacing-sm);border-radius:50%;border:2px solid var(--white);background:var(--gray-400)}.avatar-status.online::after{background:var(--success)}.avatar-status.offline::after{background:var(--gray-400)}.avatar-status.busy::after{background:var(--danger)}.avatar-status.away::after{background:var(--warning)}.card{background:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);padding:var(--spacing-md) 20px;background:var(--gray-50);border-bottom:1px solid var(--gray-200)}.card-header h3,.card-header h4,.card-header h5{font-size:15px;font-weight:var(--font-weight-semibold);display:flex;align-items:center;gap:var(--spacing-sm)}.card-header h5 i{color:var(--primary)}.card-body{padding:20px}.card-body:empty{padding:0}.stat-card{display:flex;align-items:center;gap:var(--spacing-md);padding:20px;background:linear-gradient(135deg,var(--color-start),var(--color-end));border-radius:var(--border-radius-lg);box-shadow:var(--box-shadow-sm);transition:var(--transition)}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--box-shadow)}.stat-icon{width:56px;height:56px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-lg);color:var(--white);font-size:24px;flex-shrink:0}.stat-content{flex:1;min-width:0}.stat-value{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);line-height:1.1;color:var(--gray-900)}.stat-label{font-size:var(--font-size-sm);color:var(--gray-500)}.stat-detail{font-size:var(--font-size-sm);color:var(--gray-400)}.table-responsive{overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1;min-height:0}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-base)}.table thead{position:sticky;top:0;z-index:1}.table th,.table td{padding:var(--spacing-sm);text-align:left;border-bottom:1px solid var(--gray-200);vertical-align:middle;white-space:nowrap}.table th{font-weight:var(--font-weight-semibold);color:var(--gray-600);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:0.3px;background:var(--gray-50)}.table tbody tr{transition:var(--transition-fast)}.table tbody tr:hover{background:var(--gray-50)}.table tbody tr:last-child td{border-bottom:none}.table tbody tr[data-codice]{cursor:pointer}.table tbody tr[data-codice]:hover td{background:var(--gray-50)}.td-trunc{min-width:10vw;max-width:10vw;overflow:hidden;text-overflow:ellipsis}.td-text{width:100%}.td-text .td-multiline{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;line-height:1.4}.td-actions{text-align:right;white-space:nowrap}td[rowspan]{vertical-align:middle;border-bottom:1px solid var(--gray-200)}.servizi-row{display:flex;align-items:center;gap:var(--spacing-sm)}.tr-main + .tr-detail td{padding-top:0;border-top:none}.tr-main:has(+ .tr-detail) td:not([rowspan]){border-bottom:none;padding-bottom:2px}.tr-detail td{font-size:var(--font-size-xs);color:var(--gray-500);font-style:italic;padding-bottom:var(--spacing-sm);white-space:normal;word-break:break-word}.tr-main:hover,.tr-main:hover + .tr-detail,.tr-detail:hover,.tr-main:has(+ .tr-detail:hover){background:var(--gray-50)}.tabs{display:flex;border-bottom:1px solid var(--gray-200)}.tab{padding:12px 20px;background:transparent;border:none;border-bottom:2px solid transparent;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--gray-600);cursor:pointer;transition:var(--transition)}.tab:hover{color:var(--gray-800)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.filter-tabs{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.filter-tab{padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:1px solid var(--gray-300);border-radius:var(--border-radius);font-size:var(--font-size-sm);color:var(--gray-600);cursor:pointer;transition:var(--transition)}.filter-tab:hover{background:var(--gray-50)}.filter-tab.active{background:var(--primary);color:var(--white);border-color:var(--primary)}.dropdown{position:relative;display:inline-block}.dropdown-menu{position:absolute;top:100%;left:0;z-index:var(--z-index-dropdown);display:none;min-width:180px;padding:8px 0;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--border-radius);box-shadow:var(--box-shadow-lg)}.dropdown-menu.show{display:block}.dropdown-divider{height:1px;margin:4px 0;background:var(--gray-200)}.user-dropdown-menu{position:fixed;z-index:10000;min-width:200px;padding:8px 0;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--border-radius);box-shadow:var(--box-shadow-lg)}.user-dropdown-menu a{display:flex;align-items:center;gap:10px;padding:10px 16px;color:var(--gray-700);text-decoration:none;font-size:var(--font-size-base);transition:var(--transition-fast);cursor:pointer}.user-dropdown-menu a:hover{background:var(--gray-50)}.user-dropdown-menu a i{width:16px;text-align:center;color:var(--gray-500)}.user-dropdown-menu .dropdown-divider{height:1px;margin:4px 0;background:var(--gray-200)}#toast-container{position:fixed;top:20px;right:20px;z-index:var(--z-index-toast);display:flex;flex-direction:column;gap:10px;max-width:400px}.toast{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--white);border-radius:var(--border-radius);box-shadow:var(--box-shadow-lg);transform:translateX(120%);transition:transform 0.3s ease}.toast.show{transform:translateX(0)}.toast i{font-size:18px;flex-shrink:0}.toast span{flex:1;font-size:var(--font-size-base)}.toast-close{background:transparent;border:none;color:var(--gray-400);cursor:pointer;padding:4px;line-height:1}.toast-close:hover{color:var(--gray-600)}.toast-success{border-left:4px solid var(--success)}.toast-success i{color:var(--success)}.toast-error{border-left:4px solid var(--danger)}.toast-error i{color:var(--danger)}.toast-warning{border-left:4px solid var(--warning)}.toast-warning i{color:var(--warning)}.toast-info{border-left:4px solid var(--info)}.toast-info i{color:var(--info)}.spinner{width:40px;height:40px;border:3px solid var(--gray-200);border-top-color:var(--primary);border-radius:50%;animation:spin 0.8s linear infinite}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:40px}#loader{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--white);display:flex;align-items:center;justify-content:center;z-index:var(--z-index-loader)}#loader .spinner{width:50px;height:50px}.empty-state,.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:var(--gray-500)}.empty-state i,.error-state i{font-size:48px;opacity:0.5}.empty-state p,.error-state p{font-size:15px}.empty-state small,.error-state small{display:block;color:var(--gray-400)}.error-state{color:var(--danger)}.error-state i{color:var(--danger);opacity:0.7}.offline-banner{position:fixed;bottom:0;left:0;right:0;padding:12px;background:var(--warning);color:var(--gray-900);text-align:center;display:flex;align-items:center;justify-content:center;gap:8px;font-size:var(--font-size-base);z-index:var(--z-index-sticky)}.cliente-item{display:inline-flex;align-items:center;gap:var(--spacing-sm);min-width:0;max-width:100%}.cliente-item .avatar{width:var(--spacing-xl);height:var(--spacing-xl);font-size:var(--font-size-sm);flex-shrink:0}.cliente-item.compact .avatar{width:28px;height:28px;font-size:10px}.cliente-info{display:flex;flex-direction:column;justify-content:center;min-width:0;flex:1;line-height:1.2}.cliente-nome{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--font-weight-semibold)}.cliente-subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gray-500);font-size:var(--font-size-xs)}.cliente-item[data-codice-cliente]{cursor:pointer}.cliente-item[data-codice-cliente]:hover .cliente-nome{color:var(--primary)}.cliente-item.compact .cliente-nome{flex:1;min-width:0}.list-row .cliente-item{flex:1;min-width:0}.clienti-multi{display:flex;align-items:center;gap:var(--spacing-sm)}.clienti-multi .text-muted{flex-shrink:0;white-space:nowrap}.cliente-row-remove .cliente-row-info{flex:1;min-width:0}.cliente-row-remove .cliente-row-actions{display:flex;align-items:center;gap:var(--spacing-xs);flex-shrink:0}.cliente-row-remove .select-tipo-relazione{width:110px}.cliente-row-view{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;min-width:0}.cliente-row-view .cliente-item{flex:1;min-width:0}.cliente-row-view .badge{flex-shrink:0}.indirizzo-item{display:flex;flex-direction:column}.indirizzo-riga1{line-height:1.4;font-weight:var(--font-weight-medium);white-space:nowrap}.indirizzo-riga2{line-height:1.4;color:var(--gray-500);font-size:var(--font-size-sm);white-space:nowrap}.alert{display:flex;align-items:flex-start;gap:var(--spacing-sm);padding:var(--spacing-md);border-radius:var(--border-radius);font-size:var(--font-size-base)}.alert i{flex-shrink:0}.alert-content{flex:1}.alert-title{font-weight:var(--font-weight-semibold)}.alert-success{background:rgba(40,167,69,0.1);color:var(--success);border:1px solid rgba(40,167,69,0.2)}.alert-danger{background:rgba(220,53,69,0.1);color:var(--danger);border:1px solid rgba(220,53,69,0.2)}.alert-warning{background:rgba(255,193,7,0.15);color:#856404;border:1px solid rgba(255,193,7,0.3)}.alert-info{background:rgba(23,162,184,0.1);color:var(--info);border:1px solid rgba(23,162,184,0.2)}.classe-scale{display:flex;flex-direction:column;gap:var(--spacing-xs)}.classe-bar{display:flex;align-items:center;height:var(--spacing-lg);cursor:pointer;opacity:0.5;transition:opacity 0.15s ease;outline:none;-webkit-tap-highlight-color:transparent}.classe-bar:hover{opacity:0.8}.classe-bar.selected{opacity:1}.bar-arrow{height:var(--spacing-lg);flex-shrink:0;outline:none}.arrow-white{fill:#fff;stroke:#ccc;stroke-width:0.5;transition:fill 0.15s ease,stroke 0.15s ease}.classe-bar.selected .arrow-white{fill:#1a1a1a;stroke:#1a1a1a}.arrow-text{font-size:11px;font-weight:700;fill:#333;text-anchor:start;transition:fill 0.2s ease,transform 0.2s ease}.classe-bar.selected .arrow-text{fill:#fff;text-anchor:end;transform:translateX(32px)}.arrow-color{fill:var(--classe-color)}.classe-scale-view .classe-bar{cursor:default}.classe-scale-view .classe-bar:hover{opacity:0.5}.classe-scale-view .classe-bar.selected:hover{opacity:1}.classe-bar[data-classe="A4"]{--classe-color:#1a8f3c}.classe-bar[data-classe="A3"]{--classe-color:#2da44e}.classe-bar[data-classe="A2"]{--classe-color:#4caf50}.classe-bar[data-classe="A1"]{--classe-color:#8bc34a}.classe-bar[data-classe="B"]{--classe-color:#c6d631}.classe-bar[data-classe="C"]{--classe-color:#ffed00}.classe-bar[data-classe="D"]{--classe-color:#fbb800}.classe-bar[data-classe="E"]{--classe-color:#f27d20}.classe-bar[data-classe="F"]{--classe-color:#ed1c24}.classe-bar[data-classe="G"]{--classe-color:#cc0a10}.search-dropdown{display:none;position:fixed;background:var(--white);border:1px solid var(--gray-300);border-radius:var(--border-radius);box-shadow:var(--box-shadow-lg);z-index:var(--z-index-dropdown);max-height:350px;overflow-y:auto;overflow-x:hidden}.search-dropdown.show{display:block}.search-result-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;border-bottom:1px solid var(--gray-100);transition:var(--transition-fast);min-width:0}.search-result-item .cliente-item{flex:1;min-width:0}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background:var(--gray-50)}.search-result-item.selected{background:var(--gray-100)}.search-result-item.new-item{border-top:2px solid var(--gray-200)}.search-result-item.new-item:hover{background:rgba(40,167,69,0.1)}.prezzo-importo{font-weight:var(--font-weight-semibold);min-width:80px;text-align:right}.prezzo-input{width:100px;font-weight:var(--font-weight-semibold)}.list-total-row.prezzi-pagato span:last-child{color:var(--success)}.list-total-row.prezzi-saldo span:last-child{color:var(--danger);font-weight:var(--font-weight-semibold)}.list-total-row.prezzi-saldo.saldato span:last-child{color:var(--success)}.list-total-row.prezzi-totale-finale{font-weight:var(--font-weight-bold);font-size:var(--font-size-base)}.servizi-checkboxes{max-height:520px;overflow-y:auto;overflow-x:hidden}.categoria-group{margin-bottom:var(--spacing-sm)}.categoria-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border-radius:var(--border-radius);border-left:3px solid var(--cat-color);background:color-mix(in srgb,var(--cat-color) 8%,transparent)}.categoria-header i{font-size:var(--font-size-base);color:var(--cat-color)}.categoria-header span{flex:1;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.categoria-header .toggle-all{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--gray-500);cursor:pointer}.categoria-header .toggle-all input[type="checkbox"]{accent-color:var(--cat-color,var(--primary));width:var(--spacing-md);height:var(--spacing-md)}.categoria-items{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--spacing-sm);padding-left:var(--spacing-sm);margin-top:var(--spacing-xs)}.servizio-check{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--border-radius);font-size:var(--font-size-xs);cursor:pointer;transition:var(--transition-fast);min-width:0}.servizio-check:hover{background:var(--gray-100)}.servizio-check.checked{border-color:var(--cat-color,var(--primary));background:color-mix(in srgb,var(--cat-color,var(--primary)) 10%,transparent)}.servizio-check.checked span{color:var(--cat-color,var(--primary));font-weight:var(--font-weight-medium)}.servizio-check input[type="checkbox"]{accent-color:var(--cat-color,var(--primary));width:var(--spacing-md);height:var(--spacing-md);flex-shrink:0}.servizio-check span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.servizio-check.dettaglio{--cat-color:var(--primary)}.list-row .servizio-check{flex:1}.servizio-link-icon{font-size:9px;color:var(--gray-400);flex-shrink:0}.progetto-item{display:flex;align-items:center;gap:var(--spacing-md);padding:12px 0;border-bottom:1px solid var(--gray-100);cursor:pointer;transition:var(--transition)}.progetto-item:last-child{border-bottom:none}.progetto-item:hover{background:var(--gray-50);margin:0 -16px;padding:12px 16px}.progetto-item .progetto-codice{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--gray-900);white-space:nowrap}.progetto-item:hover:not(:has(.progetto-cliente:hover)) .progetto-codice{color:var(--primary)}.progetto-item .cliente-item{flex-shrink:0}.progetto-item .clienti-multi{flex-shrink:0}.progetto-item .progetto-cliente{cursor:pointer}.progetto-item .progetto-cliente:hover{opacity:0.8}.progetto-item .indirizzo-item{flex:1;min-width:0}.progetto-item .progetto-servizi{flex-shrink:0}.progetto-item .badge{flex-shrink:0}.map-hint{position:absolute;bottom:var(--spacing-sm);right:var(--spacing-sm);z-index:1000;background:rgba(255,255,255,.88);color:var(--gray-600);font-size:10px;padding:3px var(--spacing-sm);border-radius:var(--border-radius-sm);pointer-events:none}.map-footer{padding:6px 14px;font-size:var(--font-size-xs);color:var(--gray-500);flex-shrink:0}#mapCatastale{width:100%;height:220px;z-index:1}.status-filter-tabs{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.status-filter-tab{padding:3px var(--spacing-md);background:transparent;border:1px solid var(--gray-300);border-radius:20px;font-size:var(--font-size-sm);color:var(--gray-500);cursor:pointer;transition:var(--transition)}.status-filter-tab:hover{background:var(--gray-50)}.status-filter-tab.active{background:var(--primary);color:var(--white);border-color:var(--primary)}

.mail-layout {
    display: grid;
    grid-template-columns: 200px 320px 1fr;
    flex: 1;
    min-height: 0;
    background: var(--white);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--box-shadow-sm);
    overflow: hidden;
}

.mail-sidebar {
    background: var(--gray-50);
    border-right: 1px solid var(--gray-200);
    display: flex;
    flex-direction: column;
}

.mail-sidebar-header {
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--gray-200);
}

.mail-folders {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-sm);
}

.mail-folder {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: var(--transition-fast);
    color: var(--gray-700);
}

.mail-folder:hover { background: var(--gray-100); }
.mail-folder.active { background: var(--primary); color: var(--white); }
.mail-folder i { width: 18px; text-align: center; }
.mail-folder-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mail-folder-badge {
    background: var(--primary);
    color: var(--white);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    padding: 1px 7px;
    border-radius: 10px;
    min-width: 20px;
    text-align: center;
    flex-shrink: 0;
}
.mail-folder.active .mail-folder-badge { background: var(--white); color: var(--primary); }

.mail-list-panel {
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--gray-200);
}

.mail-list-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--gray-200);
    flex-shrink: 0;
}

.mail-list-header .search-box { flex: 1; }
.mail-list-header .search-box input { font-size: var(--font-size-sm); padding: var(--spacing-sm) 12px var(--spacing-sm) 36px; }

.mail-list {
    flex: 1;
    overflow-y: auto;
}

.mail-item {
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--gray-100);
    cursor: pointer;
    transition: var(--transition-fast);
}

.mail-item:hover { background: var(--gray-50); }
.mail-item.active { background: rgba(255, 117, 26, 0.1); border-left: 3px solid var(--primary); }
.mail-item.unread { background: var(--white); }
.mail-item.unread .mail-from, .mail-item.unread .mail-subject { font-weight: var(--font-weight-semibold); color: var(--gray-900); }
.mail-item.unread::before {
    content: '';
    position: absolute;
    left: 4px;
    top: 50%;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--primary);
    transform: translateY(-50%);
}
.mail-item { position: relative; padding-left: var(--spacing-md); }
.mail-item.unread { padding-left: calc(var(--spacing-md) + 4px); }

.mail-item-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2px; gap: var(--spacing-xs); }
.mail-from { font-size: var(--font-size-sm); color: var(--gray-800); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0; }
.mail-date { font-size: var(--font-size-xs); color: var(--gray-500); flex-shrink: 0; }
.mail-item-body { display: flex; flex-direction: column; gap: 2px; }
.mail-subject { font-size: var(--font-size-sm); color: var(--gray-700); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mail-preview { font-size: var(--font-size-xs); color: var(--gray-500); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mail-indicators { display: flex; gap: var(--spacing-xs); margin-top: 2px; color: var(--gray-500); font-size: var(--font-size-xs); }
.mail-indicators:empty { display: none; }
.mail-indicators .fa-star { color: var(--warning, #f0ad4e); }
.mail-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-xs) var(--spacing-md);
    border-top: 1px solid var(--gray-200);
    background: var(--gray-50);
    flex-shrink: 0;
}

.mail-pagination-info { font-size: var(--font-size-xs); color: var(--gray-500); }
.mail-pagination-buttons { display: flex; gap: var(--spacing-xs); }

.mail-content-panel {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.mail-empty-state {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: var(--gray-400);
    gap: var(--spacing-sm);
}

.mail-empty-state i { font-size: 48px; }
.mail-empty-state p { font-size: var(--font-size-sm); }

.mail-detail {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.mail-detail-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--gray-200);
    flex-shrink: 0;
}

.mail-detail-subject { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); flex: 1; }
.mail-detail-actions { display: flex; gap: var(--spacing-xs); flex-shrink: 0; }

.mail-detail-meta {
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--gray-50);
    border-bottom: 1px solid var(--gray-200);
    flex-shrink: 0;
}

.mail-meta-row { display: flex; gap: var(--spacing-sm); font-size: var(--font-size-sm); }
.mail-meta-label { color: var(--gray-500); min-width: 40px; }
.mail-meta-value { color: var(--gray-800); }

.mail-attachments {
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--gray-200);
    flex-shrink: 0;
}

.mail-attachments h6 { font-size: var(--font-size-sm); color: var(--gray-600); display: flex; align-items: center; gap: var(--spacing-xs); margin-bottom: var(--spacing-xs); }

.attachment-list { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); }

.attachment-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--gray-100);
    border-radius: var(--border-radius);
    font-size: var(--font-size-sm);
    color: var(--gray-700);
    text-decoration: none;
    transition: var(--transition-fast);
}

.attachment-item:hover { background: var(--gray-200); }
.attachment-item small { color: var(--gray-500); }

.mail-detail-body {
    flex: 1;
    padding: var(--spacing-md);
    overflow-y: auto;
    font-size: var(--font-size-base);
    line-height: 1.6;
}

.mail-detail-body pre { white-space: pre-wrap; word-wrap: break-word; font-family: inherit; }
.mail-detail-body img { max-width: 100%; height: auto; }

.mail-body-frame {
    width: 100%;
    border: 0;
    background: var(--white);
    min-height: 200px;
}

.compose-panel {
    flex: 1;
    display: flex;
    flex-direction: column;
    background: var(--white);
    overflow: hidden;
    position: relative;
    min-height: 0;
}

.compose-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--gray-200);
    background: var(--gray-50);
    flex-shrink: 0;
}

.compose-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-semibold);
    color: var(--gray-800);
}
.compose-title i { color: var(--primary); }

.compose-actions {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.compose-actions .btn-icon {
    background: none;
    border: 0;
    width: 34px;
    height: 34px;
    border-radius: var(--border-radius);
    color: var(--gray-600);
    cursor: pointer;
    transition: var(--transition-fast);
}
.compose-actions .btn-icon:hover { background: var(--gray-200); color: var(--gray-800); }

.compose-fields {
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
    border-bottom: 1px solid var(--gray-200);
}

.compose-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: 0 var(--spacing-md);
    min-height: 44px;
    border-bottom: 1px solid var(--gray-100);
}
.compose-row.hidden { display: none; }
.compose-row:last-child { border-bottom: 0; }

.compose-label {
    font-size: var(--font-size-sm);
    color: var(--gray-500);
    font-weight: var(--font-weight-medium);
    min-width: 56px;
    flex-shrink: 0;
}

.compose-input {
    flex: 1;
    border: 0;
    background: transparent;
    padding: var(--spacing-sm) 0;
    font-size: var(--font-size-sm);
    color: var(--gray-900);
    outline: none;
    font-family: inherit;
}
.compose-input::placeholder { color: var(--gray-400); }
.compose-subject { font-size: var(--font-size-base); font-weight: var(--font-weight-medium); }

.compose-recipient-toggles { display: flex; gap: var(--spacing-xs); flex-shrink: 0; }
.compose-toggle {
    background: none;
    border: 0;
    color: var(--gray-500);
    padding: 4px 10px;
    border-radius: var(--border-radius);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    cursor: pointer;
    transition: var(--transition-fast);
}
.compose-toggle:hover { background: var(--gray-100); color: var(--gray-700); }
.compose-toggle.active { background: var(--primary); color: var(--white); }

.compose-body {
    flex: 1;
    display: flex;
    position: relative;
    overflow: hidden;
    min-height: 0;
}

.compose-textarea {
    flex: 1;
    width: 100%;
    border: 0;
    background: transparent;
    padding: var(--spacing-md);
    font-size: var(--font-size-base);
    line-height: 1.6;
    color: var(--gray-900);
    resize: none;
    outline: none;
    font-family: inherit;
}
.compose-textarea::placeholder { color: var(--gray-400); }

.compose-drop-hint {
    position: absolute;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: var(--spacing-sm);
    background: rgba(255, 117, 26, 0.08);
    border: 2px dashed var(--primary);
    color: var(--primary);
    font-weight: var(--font-weight-semibold);
    pointer-events: none;
    z-index: 2;
}
.compose-drop-hint i { font-size: 32px; }
.compose-body.drag-active .compose-drop-hint { display: flex; }

.compose-footer {
    flex-shrink: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    border-top: 1px solid var(--gray-200);
    background: var(--gray-50);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.compose-attach-area {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}
.compose-attach-total { color: var(--gray-500); font-size: var(--font-size-xs); }
.hidden-file { display: none; }

.compose-attachment-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}
.compose-attachment-list:empty { display: none; }

.compose-hint {
    color: var(--gray-500);
    font-size: var(--font-size-xs);
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.attachment-preview {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: 4px 8px;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: 14px;
    font-size: var(--font-size-xs);
    color: var(--gray-700);
}
.attachment-preview small { color: var(--gray-500); }
.attachment-preview button {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--gray-400);
    padding: 0 0 0 4px;
    line-height: 1;
}
.attachment-preview button:hover { color: var(--danger); }

.compose-sending {
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.85);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 5;
}
.compose-sending.show { display: flex; }
.compose-sending-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow-sm);
    padding: var(--spacing-md) var(--spacing-lg);
    color: var(--gray-700);
    font-weight: var(--font-weight-medium);
}
.compose-sending-card i { color: var(--primary); animation: compose-fly 1s ease-in-out infinite alternate; }
@keyframes compose-fly { from { transform: translateY(0); } to { transform: translateY(-4px); } }

@media (max-width: 720px) {
    .compose-toolbar { padding: var(--spacing-xs) var(--spacing-sm); }
    .compose-actions .btn-link span { display: none; }
    .compose-row { padding: 0 var(--spacing-sm); }
    .compose-label { min-width: 44px; }
}
.dashboard-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}
.dashboard-header .page-subtitle {
    color: var(--gray-500);
    font-size: var(--font-size-sm);
    margin-top: 4px;
}

.dashboard-quick-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.quick-action {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: 8px 14px;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--border-radius);
    color: var(--gray-700);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    transition: var(--transition-fast);
    box-shadow: var(--box-shadow-sm);
}
.quick-action i { color: var(--primary); }
.quick-action:hover {
    border-color: var(--primary);
    color: var(--primary);
    transform: translateY(-1px);
}

.dashboard-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.stat-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--border-radius-lg);
    box-shadow: var(--box-shadow-sm);
    text-decoration: none;
    color: inherit;
    transition: var(--transition);
    position: relative;
    overflow: hidden;
}

.stat-card::before {
    content: '';
    position: absolute;
    inset: 0;
    width: 4px;
    background: var(--stat-accent, var(--primary));
}

.stat-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--box-shadow);
    border-color: var(--stat-accent, var(--primary));
}

.stat-card .stat-icon {
    width: 48px;
    height: 48px;
    border-radius: var(--border-radius);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    flex-shrink: 0;
    background: var(--stat-accent-soft, rgba(255, 117, 26, 0.1));
    color: var(--stat-accent, var(--primary));
}

.stat-card .stat-content { flex: 1; min-width: 0; }
.stat-card .stat-value { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); line-height: 1.1; color: var(--gray-900); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stat-card .stat-label { font-size: var(--font-size-sm); color: var(--gray-600); margin-top: 2px; }
.stat-card .stat-detail { font-size: var(--font-size-xs); color: var(--gray-500); margin-top: 2px; }

.stat-card-info { --stat-accent: var(--info); --stat-accent-soft: rgba(23, 162, 184, 0.12); }
.stat-card-success { --stat-accent: var(--success); --stat-accent-soft: rgba(40, 167, 69, 0.12); }
.stat-card-primary { --stat-accent: var(--primary); --stat-accent-soft: rgba(255, 117, 26, 0.12); }
.stat-card-danger { --stat-accent: var(--danger); --stat-accent-soft: rgba(220, 53, 69, 0.12); }
.stat-card-warning { --stat-accent: var(--warning); --stat-accent-soft: rgba(255, 193, 7, 0.15); }

.stat-card-skeleton { pointer-events: none; }
.stat-card-skeleton .stat-icon { background: var(--gray-200); }
.stat-card-skeleton .skeleton-line {
    height: 14px;
    background: linear-gradient(90deg, var(--gray-200) 0%, var(--gray-100) 50%, var(--gray-200) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: skeleton-shine 1.4s ease-in-out infinite;
}
.stat-card-skeleton .skeleton-line-lg { width: 60%; height: 22px; margin-bottom: 8px; }
.stat-card-skeleton .skeleton-line-sm { width: 40%; }
@keyframes skeleton-shine {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

.dashboard-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: var(--spacing-md);
}
@media (max-width: 900px) {
    .dashboard-grid { grid-template-columns: 1fr; }
}
.dashboard-card { height: 100%; }
.dashboard-card .card-body { padding: var(--spacing-md); }

.card-header-with-action {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}
.card-header-link {
    color: var(--primary);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    transition: var(--transition-fast);
}
.card-header-link:hover { color: var(--primary-dark); transform: translateX(2px); }

.servizio-stat-row {
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid var(--gray-100);
}
.servizio-stat-row:last-child { border-bottom: none; }
.servizio-stat-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--spacing-sm);
    margin-bottom: 6px;
    font-size: var(--font-size-sm);
}
.servizio-stat-name { color: var(--gray-800); font-weight: var(--font-weight-medium); }
.servizio-stat-counts { color: var(--gray-500); font-size: var(--font-size-xs); }
.servizio-stat-counts strong { color: var(--gray-900); font-weight: var(--font-weight-semibold); font-size: var(--font-size-sm); }
.servizio-stat-active { color: var(--info); }

.servizio-stat-bar {
    height: 6px;
    background: var(--gray-100);
    border-radius: 3px;
    overflow: hidden;
}
.servizio-stat-bar-fill {
    display: block;
    height: 100%;
    background: var(--cat-altro, var(--primary));
    border-radius: 3px;
    transition: width 0.4s ease-out;
}
.servizio-stat-row[data-categoria="vendita"] .servizio-stat-bar-fill { background: var(--cat-vendita); }
.servizio-stat-row[data-categoria="catasto"] .servizio-stat-bar-fill { background: var(--cat-catasto); }
.servizio-stat-row[data-categoria="titoli"] .servizio-stat-bar-fill { background: var(--cat-titoli); }
.servizio-stat-row[data-categoria="progettazione"] .servizio-stat-bar-fill { background: var(--cat-progettazione); }
.servizio-stat-row[data-categoria="sicurezza"] .servizio-stat-bar-fill { background: var(--cat-sicurezza); }
.servizio-stat-row[data-categoria="rilievi"] .servizio-stat-bar-fill { background: var(--cat-rilievi); }
.servizio-stat-row[data-categoria="documenti"] .servizio-stat-bar-fill { background: var(--cat-documenti); }
.servizio-stat-row[data-categoria="perizie"] .servizio-stat-bar-fill { background: var(--cat-perizie); }

.calendario-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: var(--spacing-lg);
}

.calendario-main {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.calendario-sidebar {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.calendar-container {
    background: var(--white);
    border-radius: var(--border-radius-lg);
    padding: var(--spacing-lg);
    box-shadow: var(--box-shadow-sm);
}

.calendar-header {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.calendar-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
}

.calendar-title {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-semibold);
    min-width: 160px;
    text-align: center;
}

.calendar-summary {
    display: flex;
    gap: var(--spacing-xs);
    align-items: center;
    justify-content: flex-end;
    min-width: 0;
}

.calendar-summary-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    background: var(--gray-100);
    color: var(--gray-700);
    border-radius: 12px;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
}
.calendar-summary-pill strong { color: var(--gray-900); font-weight: var(--font-weight-semibold); }
.calendar-summary-overdue {
    background: rgba(220, 53, 69, 0.1);
    color: var(--danger);
}
.calendar-summary-overdue strong { color: var(--danger); }
.calendar-summary-empty { color: var(--gray-500); font-size: var(--font-size-xs); font-style: italic; }

.btn-icon-only { padding: 6px 10px; }
.calendar-keyboard-hint {
    text-align: right;
    color: var(--gray-400);
    font-size: var(--font-size-xs);
    margin-top: var(--spacing-sm);
}
.calendar-keyboard-hint i { margin-right: 4px; }

.calendar-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    text-align: center;
    font-weight: var(--font-weight-semibold);
    font-size: var(--font-size-sm);
    color: var(--gray-500);
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid var(--gray-200);
}

.calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    margin-top: var(--spacing-sm);
}

.calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 6px;
    margin-top: var(--spacing-sm);
}

.calendar-day {
    min-height: 92px;
    padding: 8px 10px;
    background: var(--white);
    border: 1px solid var(--gray-200);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: var(--transition-fast);
    display: flex;
    flex-direction: column;
}

.calendar-day:hover:not(.empty):not(.other-month) {
    background: var(--gray-50);
    border-color: var(--gray-300);
}
.calendar-day.empty { background: transparent; cursor: default; border-color: transparent; }
.calendar-day.other-month { opacity: 0.5; background: var(--gray-50); border-color: var(--gray-100); }
.calendar-day.weekend { background: var(--gray-50); }
.calendar-day.today {
    background: rgba(255, 117, 26, 0.06);
    border-color: rgba(255, 117, 26, 0.4);
    box-shadow: 0 0 0 1px rgba(255, 117, 26, 0.4);
}
.calendar-day.selected {
    border-color: var(--primary);
    box-shadow: 0 0 0 1px var(--primary);
}
.calendar-day.today.selected {
    box-shadow: 0 0 0 2px var(--primary);
}

.calendar-header-day {
    text-align: center;
    font-weight: var(--font-weight-semibold);
    font-size: var(--font-size-sm);
    color: var(--gray-500);
    padding: var(--spacing-sm) 0;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.calendar-header-day.weekend { color: var(--gray-400); }

.day-number {
    font-weight: var(--font-weight-semibold);
    font-size: var(--font-size-sm);
    color: var(--gray-700);
}

.calendar-day.today .day-number {
    color: var(--white);
    background: var(--primary);
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-start;
}

.calendar-day.has-events { box-shadow: inset 0 -3px 0 transparent; }

.day-events {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 4px;
    overflow: hidden;
}

.day-event-chip {
    display: block;
    font-size: 10px;
    font-weight: var(--font-weight-semibold);
    padding: 1px 5px;
    border-radius: 3px;
    color: var(--white);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.5;
}
.day-event-chip.progetto { background: var(--primary); }
.day-event-chip.ape { background: var(--success); }
.day-event-chip.enea { background: var(--warning); color: var(--dark); }
.day-event-chip.pregeo { background: #8b5cf6; }
.day-event-chip.docfa { background: #ec4899; }
.day-event-chip.overdue { outline: 2px solid var(--danger); outline-offset: -1px; }

.day-event-more {
    font-size: var(--font-size-xs);
    color: var(--gray-500);
    font-weight: var(--font-weight-medium);
    padding-left: 3px;
}

.upcoming-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    background: var(--gray-50);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: var(--transition-fast);
    margin-bottom: var(--spacing-xs);
}

.upcoming-item:hover { background: var(--gray-100); }
.upcoming-item.overdue { border-left: 3px solid var(--danger); }

.upcoming-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--white);
    flex-shrink: 0;
    font-size: var(--font-size-sm);
}

.upcoming-icon.progetto { background: var(--primary); }
.upcoming-icon.ape { background: var(--success); }
.upcoming-icon.enea { background: var(--warning); }
.upcoming-icon.pregeo { background: #8b5cf6; }
.upcoming-icon.docfa { background: #ec4899; }

.upcoming-content { flex: 1; min-width: 0; }
.upcoming-title { font-weight: var(--font-weight-medium); font-size: var(--font-size-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.upcoming-desc { font-size: var(--font-size-xs); color: var(--gray-500); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.upcoming-date { text-align: right; flex-shrink: 0; }
.upcoming-date-value { font-weight: var(--font-weight-medium); font-size: var(--font-size-sm); }
.upcoming-date-diff { font-size: var(--font-size-xs); color: var(--gray-500); }

.day-detail-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.day-detail-item {
    display: flex;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    background: var(--gray-50);
    border-radius: var(--border-radius);
    cursor: pointer;
}

.day-detail-item:hover { background: var(--gray-100); }

.day-detail-icon {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--white);
    flex-shrink: 0;
}

.day-detail-icon.progetto { background: var(--primary); }
.day-detail-icon.ape { background: var(--success); }
.day-detail-icon.enea { background: var(--warning); }
.day-detail-icon.pregeo { background: #8b5cf6; }
.day-detail-icon.docfa { background: #ec4899; }

.day-detail-content { flex: 1; min-width: 0; }
.day-detail-title { font-weight: var(--font-weight-medium); }
.day-detail-desc { font-size: var(--font-size-sm); color: var(--gray-500); }
.day-detail-stato { margin-top: var(--spacing-xs); }
.day-detail-chevron { color: var(--gray-400); align-self: center; transition: var(--transition-fast); }
.day-detail-item:hover .day-detail-chevron { color: var(--primary); transform: translateX(2px); }

.upcoming-section-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-xs);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--gray-500);
    border-bottom: 1px solid var(--gray-100);
    margin-bottom: var(--spacing-xs);
}
.upcoming-section-header:not(:first-child) { margin-top: var(--spacing-md); }
.upcoming-section-header.section-overdue, .upcoming-section-header.overdue { color: var(--danger); }
.upcoming-section-header.section-today { color: var(--primary); }
.upcoming-section-header i { width: 14px; }.cad-layout{display:grid;grid-template-columns:1fr 44px;grid-template-rows:42px 1fr 28px;height:100%;overflow:hidden;background:#1e1e1e;position:relative;}.cad-topbar{grid-column:1/-1;grid-row:1;display:flex;align-items:center;padding:0 10px;gap:6px;background:linear-gradient(rgba(255,117,26,.10),rgba(255,117,26,.10)),#2a2a2a;border-bottom:1px solid rgba(255,117,26,.20);overflow:hidden;user-select:none;}.cad-tb-layer-wrap{display:flex;align-items:center;gap:5px;flex-shrink:0;}.cad-tb-layer-icon{color:#e8a84c;font-size:12px;}.cad-tb-layer-sel{height:26px;min-width:110px;background:#2d2d30;border:1px solid #3f3f46;border-radius:3px;color:rgba(255,255,255,.75);font-size:11px;font-family:"Consolas","Monaco",monospace;padding:0 6px;cursor:pointer;outline:none;}.cad-tb-layer-sel:hover,.cad-tb-layer-sel:focus{border-color:#e8a84c;}.cad-tb-add{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#2d2d30;border:1px solid #3f3f46;border-radius:3px;color:#e8a84c;cursor:pointer;font-size:11px;flex-shrink:0;}.cad-tb-add:hover{background:rgba(232,168,76,.12);border-color:#e8a84c;}.cad-tb-vsep{width:1px;height:22px;background:#3a3a3a;flex-shrink:0;margin:0 2px;}.cad-tb-spacer{flex:1;}.cad-tb-chips{display:flex;align-items:center;gap:4px;overflow:hidden;flex-shrink:1;}.cad-layer-chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px 0 5px;border-radius:3px;border:1px solid #3f3f46;background:#2d2d30;cursor:pointer;font-size:10px;font-family:"Consolas","Monaco",monospace;color:rgba(255,255,255,.5);white-space:nowrap;flex-shrink:0;transition:border-color .12s,background .12s,color .12s;}.cad-layer-chip:hover{border-color:#e8a84c;color:rgba(255,255,255,.9);}.cad-layer-chip.active{border-color:#e8a84c;background:rgba(232,168,76,.12);color:#f0c070;}.cad-layer-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}.cad-layer-vis-btn{background:none;border:none;padding:0;margin-right:1px;cursor:pointer;color:rgba(255,255,255,.3);font-size:9px;line-height:1;display:flex;align-items:center;}.cad-layer-vis-btn:hover{color:rgba(255,255,255,.85);}.cad-layer-vis-btn.hidden-layer{color:rgba(255,255,255,.12);}.cad-tb-props{display:flex;align-items:center;gap:4px;flex-shrink:0;}.cad-prop-color,.cad-prop-btn{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 8px;background:#2d2d30;border:1px solid #3f3f46;border-radius:3px;color:rgba(255,255,255,.7);font-size:11px;font-family:"Consolas","Monaco",monospace;cursor:pointer;white-space:nowrap;flex-shrink:0;}.cad-prop-color:hover,.cad-prop-btn:hover{border-color:#e8a84c;color:#f0c070;}.cad-prop-color input[type=color]{position:absolute;opacity:0;width:0;height:0;pointer-events:none;}.cad-prop-swatch{width:14px;height:14px;border-radius:2px;border:1px solid rgba(255,255,255,.15);background:#5b9bd5;flex-shrink:0;display:inline-block;}.cad-prop-lw-bar{display:inline-block;width:18px;height:2px;background:#c8d8e8;border-radius:1px;flex-shrink:0;}.cad-prop-arrow{font-size:8px;color:rgba(255,255,255,.2);margin-left:1px;}.cad-workspace-wrap{grid-column:1;grid-row:2;position:relative;overflow:hidden;cursor:none;}#cadCanvas{display:block;cursor:none;}.cad-toolbar{grid-column:2;grid-row:2;display:flex;flex-direction:column;background:linear-gradient(135deg,#2a2a2a 0%,#3a3a3a 100%);border-left:1px solid rgba(0,0,0,.2);overflow-y:auto;overflow-x:hidden;scrollbar-width:none;}.cad-toolbar::-webkit-scrollbar{display:none;}.cad-toolbar-btns{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;background:rgba(255,117,26,.10);border-bottom:1px solid rgba(255,255,255,.10);flex-shrink:0;}.cad-toolbar-group{display:flex;flex-direction:column;gap:1px;}.cad-toolbar-sep{width:28px;height:1px;background:rgba(255,255,255,.10);margin:3px 0;}.cad-tool-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:8px;color:rgba(255,255,255,.70);background:transparent;transition:background .15s,color .15s;font-size:14px;cursor:pointer;border:none;}.cad-tool-btn:hover{background:rgba(255,255,255,.10);color:#fff;}.cad-tool-btn.active{background:#ff751a;color:#fff;}.cad-tool-btn--danger:hover{background:rgba(255,255,255,.10);color:#ff6b6b;}.cad-tool-btn--danger.active{background:rgba(220,53,69,.80);color:#fff;}.cad-tool-label{display:none;}.cad-statusbar{grid-column:1/-1;grid-row:3;display:flex;align-items:center;gap:8px;padding:0 10px;background:#1a1a1a;border-top:1px solid #2a2a2a;font-size:11px;font-family:"Consolas","Monaco",monospace;color:rgba(255,255,255,.45);user-select:none;}.cad-status-sep{color:#3a3a3a;}.cad-status-tool{color:#ff751a;font-weight:600;min-width:72px;}.cad-status-right{margin-left:auto;color:rgba(255,255,255,.18);font-size:10px;}.cad-offset-ctrl{display:inline-flex;align-items:center;gap:6px;}.cad-offset-ctrl.hidden{display:none;}#cadOffsetDist{width:56px;background:#2d2d30;border:1px solid #3f3f46;border-radius:3px;color:rgba(255,255,255,.8);font-size:11px;font-family:inherit;padding:1px 4px;text-align:right;}#cadOffsetDist:focus{outline:none;border-color:#ff751a;}.cad-layer-mgr{position:absolute;top:42px;left:0;width:340px;background:#252526;border:1px solid #3a3a3a;border-top:none;z-index:50;display:flex;flex-direction:column;box-shadow:4px 4px 16px rgba(0,0,0,.6);font-size:11px;font-family:"Consolas","Monaco",monospace;}.cad-layer-mgr.hidden{display:none;}.cad-lm-header{display:flex;align-items:center;justify-content:space-between;padding:5px 8px;background:#2d2d30;border-bottom:1px solid #3a3a3a;color:rgba(255,255,255,.8);}.cad-lm-close{background:none;border:none;cursor:pointer;color:rgba(255,255,255,.4);font-size:10px;padding:2px 5px;}.cad-lm-close:hover{color:rgba(255,255,255,.9);}.cad-lm-actions{display:flex;gap:4px;padding:4px 6px;border-bottom:1px solid #3a3a3a;}.cad-lm-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:#2d2d30;border:1px solid #3f3f46;border-radius:3px;color:rgba(255,255,255,.7);font-size:10px;font-family:"Consolas","Monaco",monospace;cursor:pointer;}.cad-lm-btn:hover{border-color:#e8a84c;color:#f0c070;}.cad-lm-btn--danger:hover{border-color:#dc3545;color:#dc3545;}.cad-lm-body{overflow-y:auto;max-height:220px;}.cad-lm-head-row,.cad-lm-row{display:grid;grid-template-columns:26px 26px 30px 1fr 64px 64px;align-items:center;padding:2px 4px;gap:2px;}.cad-lm-head-row{position:sticky;top:0;background:#1e1e1e;color:rgba(255,255,255,.35);font-size:9px;border-bottom:1px solid #3a3a3a;padding:3px 4px;}.cad-lm-row{cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04);color:rgba(255,255,255,.7);}.cad-lm-row:hover{background:rgba(255,255,255,.05);}.cad-lm-row.active{background:rgba(232,168,76,.10);color:#f0c070;}.cad-lm-icon-btn{background:none;border:none;cursor:pointer;color:rgba(255,255,255,.45);font-size:10px;padding:3px;display:flex;align-items:center;justify-content:center;border-radius:2px;}.cad-lm-icon-btn:hover{color:rgba(255,255,255,.9);background:rgba(255,255,255,.08);}.cad-lm-icon-btn.locked{color:#e8a84c;}.cad-lm-icon-btn.hidden-layer{color:rgba(255,255,255,.15);}.cad-lm-color-wrap{position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;}.cad-lm-color-swatch{width:16px;height:16px;border-radius:2px;border:1px solid rgba(255,255,255,.2);}.cad-lm-name{padding:1px 4px;background:transparent;border:1px solid transparent;border-radius:2px;color:inherit;font-family:inherit;font-size:11px;cursor:pointer;width:100%;min-width:0;}.cad-lm-name:focus{background:#1e1e1e;border-color:#e8a84c;outline:none;cursor:text;}.cad-lm-select{width:100%;background:#2d2d30;border:1px solid transparent;border-radius:2px;color:rgba(255,255,255,.65);font-family:"Consolas","Monaco",monospace;font-size:10px;cursor:pointer;padding:1px 2px;}.cad-lm-select:hover,.cad-lm-select:focus{border-color:#3f3f46;outline:none;}.cad-prop-bylayer{font-size:9px;color:rgba(255,255,255,.5);font-family:"Consolas","Monaco",monospace;}