.header{height:var(--header-height);background:var(--color-background);border-bottom:1px solid var(--color-border);position:fixed;top:0;left:var(--sidebar-width);right:0;z-index:100}.header__content{display:flex;align-items:center;justify-content:space-between;height:100%;padding:0 var(--spacing-xl)}.header__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0}.header__status{display:flex;align-items:center;gap:var(--spacing-sm)}.status-indicator{width:8px;height:8px;border-radius:50%;background:var(--color-secondary)}.status-indicator--active{background:var(--color-success)}.status-text{font-size:var(--font-size-sm);color:var(--color-secondary)}.sidebar{width:var(--sidebar-width);height:100vh;background:var(--color-background);border-right:1px solid var(--color-border);position:fixed;left:0;top:0;display:flex;flex-direction:column}.sidebar__logo{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-xl);border-bottom:1px solid var(--color-border)}.logo-icon{font-size:var(--font-size-xl)}.logo-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.sidebar__nav{flex:1;padding:var(--spacing-lg) 0}.sidebar__link{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-xl);color:var(--color-secondary);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);text-decoration:none;transition:all var(--transition)}.sidebar__link:hover{background:var(--color-background-secondary);color:var(--color-primary)}.sidebar__link--active{background:var(--color-background-secondary);color:var(--color-primary);border-right:2px solid var(--color-primary)}.link-icon{font-size:var(--font-size-lg)}.layout{display:flex;min-height:100vh}.layout__content{flex:1;margin-left:var(--sidebar-width)}.layout__main{margin-top:var(--header-height);padding:var(--spacing-xl);min-height:calc(100vh - var(--header-height))}.dashboard{max-width:1200px;margin:0 auto}.dashboard__header{margin-bottom:var(--spacing-xl)}.dashboard__subtitle{color:var(--color-secondary);margin:0}.dashboard__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xxl)}.dashboard-card{display:flex;gap:var(--spacing-lg);align-items:center}.dashboard-card__icon{font-size:48px}.dashboard-card__content{flex:1}.dashboard-card__value{font-size:var(--font-size-xxl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-xs) 0}.dashboard-card__label{font-size:var(--font-size-sm);color:var(--color-secondary);margin:0}.dashboard__section{margin-bottom:var(--spacing-xxl)}.dashboard__section h3{margin-bottom:var(--spacing-lg)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-lg)}.modal{background:var(--color-background);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);max-width:600px;width:100%;max-height:90vh;display:flex;flex-direction:column}.modal__header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-xl);border-bottom:1px solid var(--color-border)}.modal__header h3{margin:0}.modal__close{background:none;border:none;font-size:32px;line-height:1;cursor:pointer;color:var(--color-secondary);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:color var(--transition)}.modal__close:hover{color:var(--color-primary)}.modal__body{flex:1;overflow-y:auto;padding:var(--spacing-xl)}.modal__footer{display:flex;justify-content:flex-end;gap:var(--spacing-md);padding:var(--spacing-xl);border-top:1px solid var(--color-border)}.input--error,.textarea--error{border-color:var(--color-danger)}.error-text{display:block;color:var(--color-danger);font-size:var(--font-size-sm);margin-top:var(--spacing-xs)}.clienti-list__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xl)}.subtitle{color:var(--color-secondary);margin:0}.clienti-list__filters{margin-bottom:var(--spacing-lg)}.error-message{background:var(--color-danger-bg);border-color:var(--color-danger);margin-bottom:var(--spacing-lg)}.preventivi-list__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xl)}.preventivi-list__filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}@media (max-width: 768px){.preventivi-list__filters{grid-template-columns:1fr}}.cliente-selector__controls{display:flex;gap:var(--spacing-md);align-items:flex-end;margin-bottom:var(--spacing-lg)}.cliente-selector__preview{background:var(--color-background-secondary);margin-top:var(--spacing-lg)}.cliente-selector__preview h4{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-md) 0}.cliente-preview{font-size:var(--font-size-sm);color:var(--color-secondary);line-height:1.8}.cliente-preview div{margin-bottom:var(--spacing-xs)}.cliente-preview strong{color:var(--color-primary);font-size:var(--font-size-md)}.righe-editor__actions{display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.righe-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.riga-item{display:flex;gap:var(--spacing-lg);align-items:center;padding:var(--spacing-lg)}.riga-item__image{width:80px;height:80px;flex-shrink:0;border-radius:var(--radius-sm);overflow:hidden;background:var(--color-background-secondary);display:flex;align-items:center;justify-content:center}.riga-item__image img{width:100%;height:100%;object-fit:cover}.riga-item__no-image{font-size:32px}.riga-item__content{flex:1;display:flex;flex-direction:column;gap:var(--spacing-sm)}.riga-item__header{display:flex;align-items:center;gap:var(--spacing-md);font-size:var(--font-size-md)}.riga-item__details{display:flex;gap:var(--spacing-lg);font-size:var(--font-size-sm);color:var(--color-secondary)}.riga-item__quantity{display:flex;align-items:center;gap:var(--spacing-sm)}.riga-item__quantity .label{margin:0}.riga-item__actions{display:flex;flex-direction:column;gap:var(--spacing-xs);flex-shrink:0}@media (max-width: 768px){.riga-item{flex-direction:column;align-items:flex-start}.riga-item__actions{flex-direction:row;width:100%}}.preventivo-wizard{max-width:900px;margin:0 auto}.wizard__header{margin-bottom:var(--spacing-xl)}.wizard__header h2{margin-bottom:var(--spacing-lg)}.wizard__steps{display:flex;justify-content:space-between;gap:var(--spacing-md)}.wizard__step{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);opacity:.5;transition:all var(--transition)}.wizard__step--active{opacity:1}.wizard__step--completed{opacity:.8}.wizard__step-number{width:40px;height:40px;border-radius:50%;background:var(--color-background-secondary);border:2px solid var(--color-border);display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-semibold);transition:all var(--transition)}.wizard__step--active .wizard__step-number{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.wizard__step--completed .wizard__step-number{background:var(--color-success);color:#fff;border-color:var(--color-success)}.wizard__step-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);text-align:center}.wizard__content{min-height:500px;margin-bottom:var(--spacing-xl)}.wizard__step-content h3{margin-bottom:var(--spacing-xl);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.wizard__footer{display:flex;justify-content:space-between;gap:var(--spacing-md)}.wizard__footer>div{display:flex;gap:var(--spacing-md)}.wizard__totals{margin-top:var(--spacing-xl);padding-top:var(--spacing-xl);border-top:2px solid var(--color-border)}.totals-row{display:flex;justify-content:space-between;padding:var(--spacing-sm) 0;font-size:var(--font-size-md)}.totals-row--total{border-top:2px solid var(--color-border);margin-top:var(--spacing-sm);padding-top:var(--spacing-md);font-size:var(--font-size-lg)}.review-section{margin-bottom:var(--spacing-xxl)}.review-section h4{font-size:var(--font-size-lg);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.review-row{display:flex;justify-content:space-between;padding:var(--spacing-sm) 0;color:var(--color-secondary)}.review-row strong{color:var(--color-primary)}.review-row--total{border-top:2px solid var(--color-border);margin-top:var(--spacing-md);padding-top:var(--spacing-md);font-size:var(--font-size-lg);color:var(--color-primary)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg)}.form-group{margin-bottom:var(--spacing-lg)}.preventivo-detail__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xl)}.preventivo-detail__header>div{display:flex;flex-direction:column;gap:var(--spacing-md)}.preventivo-detail__header h2{margin:0}.preventivo-detail__content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-lg);margin-top:var(--spacing-lg)}.detail-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.detail-label{font-size:var(--font-size-sm);color:var(--color-secondary);font-weight:var(--font-weight-medium)}.totals-section{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:2px solid var(--color-border)}.state-actions{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-lg)}:root{--color-primary: #1a1a1a;--color-secondary: #666666;--color-border: #e0e0e0;--color-background: #ffffff;--color-background-secondary: #f5f5f5;--color-background-hover: #fafafa;--color-success: #2d8659;--color-warning: #d97706;--color-danger: #dc2626;--color-info: #2563eb;--color-success-bg: #d1f4e0;--color-warning-bg: #fef3c7;--color-danger-bg: #fee2e2;--color-info-bg: #dbeafe;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 24px;--spacing-xxl: 32px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 24px;--font-size-xxl: 32px;--line-height: 1.5;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 4px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 6px rgba(0, 0, 0, .1);--transition: .15s ease;--transition-slow: .3s ease;--sidebar-width: 240px;--header-height: 60px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);font-size:var(--font-size-md);line-height:var(--line-height);color:var(--color-primary);background-color:var(--color-background-secondary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:1.2;margin-bottom:var(--spacing-lg)}h1{font-size:var(--font-size-xxl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}p{margin-bottom:var(--spacing-md)}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--color-secondary)}.button{font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-background);color:var(--color-primary);cursor:pointer;transition:all var(--transition);display:inline-flex;align-items:center;gap:var(--spacing-sm)}.button:hover:not(:disabled){background:var(--color-background-secondary);border-color:var(--color-primary)}.button:disabled{opacity:.5;cursor:not-allowed}.button--primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.button--primary:hover:not(:disabled){background:#000}.button--danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.button--danger:hover:not(:disabled){background:#b91c1c}.button--small{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-xs)}.card{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-xl);transition:all var(--transition)}.card:hover{box-shadow:var(--shadow-md)}.table{width:100%;border-collapse:collapse;background:var(--color-background);border-radius:var(--radius-md);overflow:hidden}.table th,.table td{padding:var(--spacing-md) var(--spacing-lg);text-align:left;border-bottom:1px solid var(--color-border)}.table th{background:var(--color-background-secondary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:var(--color-secondary);text-transform:uppercase;letter-spacing:.5px}.table tbody tr{transition:background var(--transition)}.table tbody tr:hover{background:var(--color-background-hover)}.table tbody tr:last-child td{border-bottom:none}.input,.select,.textarea{font-family:var(--font-family);font-size:var(--font-size-md);padding:var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-background);color:var(--color-primary);width:100%;transition:all var(--transition)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #1a1a1a1a}.input::placeholder{color:var(--color-secondary)}.textarea{resize:vertical;min-height:100px}.label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-secondary);margin-bottom:var(--spacing-sm)}.badge{display:inline-block;padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.5px}.badge--success{background:var(--color-success-bg);color:var(--color-success)}.badge--warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge--danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge--info{background:var(--color-info-bg);color:var(--color-info)}.spinner{border:2px solid var(--color-border);border-top:2px solid var(--color-primary);border-radius:50%;width:24px;height:24px;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:var(--spacing-xxl);color:var(--color-secondary)}.empty-state p{margin-bottom:var(--spacing-lg)}
