*{margin:0;padding:0;box-sizing:border-box}:root{--primary-color: #2563eb;--primary-dark: #1e40af;--secondary-color: #64748b;--success-color: #10b981;--warning-color: #f59e0b;--danger-color: #ef4444;--bg-color: #f8fafc;--card-bg: #ffffff;--text-primary: #0f172a;--text-secondary: #64748b;--border-color: #e2e8f0;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-color);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100vh}.header{background:var(--card-bg);border-bottom:1px solid var(--border-color);padding:1rem 1.5rem;position:sticky;top:0;z-index:100;box-shadow:var(--shadow-sm)}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;gap:.75rem}.nav-button{background:var(--bg-color);border:1px solid var(--border-color);border-radius:8px;padding:.5rem .75rem;font-size:1.25rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;color:var(--text-primary);font-weight:600}.nav-button:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color);transform:translateY(-2px);box-shadow:var(--shadow-md)}.nav-button.reports-button{margin-left:1rem;padding:.5rem;width:44px;height:44px}.report-icon{width:24px;height:24px;color:#374151}.nav-button.reports-button:hover .report-icon{color:#ff2a2a}.logo-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center}.logo-icon img{width:100%;height:100%;object-fit:contain}.logo-text h1{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.logo-text p{font-size:.75rem;color:var(--text-secondary);font-weight:400}.breadcrumb-container{font-size:.8rem;color:var(--primary-color);font-weight:500;display:flex;gap:0}.breadcrumb-segment{font-size:.8rem;color:var(--primary-color);font-weight:500}.breadcrumb-segment.clickable{cursor:pointer;transition:text-decoration .2s}.breadcrumb-segment.clickable:hover{text-decoration:underline}.header-center{flex:1;display:flex;justify-content:center;padding:0 2rem}.header-center .forecast-controls{width:100%;max-width:800px}.user-info{display:flex;align-items:center;gap:1rem}.user-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#8b5cf6);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:.875rem;position:relative}.supervisor-dropdown{position:absolute;top:50px;right:0;background:#fff;border-radius:12px;box-shadow:0 10px 30px #0003;min-width:200px;z-index:1000;overflow:hidden;border:1px solid var(--border-color)}.supervisor-option{padding:.875rem 1.25rem;cursor:pointer;transition:background .2s ease;color:var(--text-primary);font-size:.875rem;border-bottom:1px solid var(--border-color)}.supervisor-option:last-child{border-bottom:none}.supervisor-option:hover{background:var(--bg-color)}.supervisor-option.active{background:var(--primary-color);color:#fff;font-weight:600}.supervisor-option.logout{color:var(--danger-color);font-weight:600;border-top:2px solid var(--border-color)}.supervisor-option.logout:hover{background:#fee2e2}.user-details h3{font-size:.875rem;font-weight:600;color:var(--text-primary)}.user-details p{font-size:.75rem;color:var(--text-secondary)}.user-details .viewing-as{color:var(--primary-color);font-weight:500;font-style:italic}.supervisor-select{padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:6px;font-size:.875rem;background:#fff;color:var(--text-primary);cursor:pointer;min-width:160px}.supervisor-select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #2563eb1a}.viewing-as-badge{background:var(--primary-color);color:#fff;padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:500}.user-avatar-wrapper{position:relative}.user-tooltip{position:absolute;bottom:-60px;right:0;background:var(--text-primary);color:#fff;padding:.5rem .75rem;border-radius:8px;font-size:.75rem;white-space:nowrap;opacity:0;visibility:hidden;transition:all .2s ease;z-index:1000;display:flex;flex-direction:column;gap:.125rem}.user-tooltip:before{content:"";position:absolute;top:-6px;right:12px;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--text-primary)}.user-tooltip strong{font-weight:600}.user-tooltip span{opacity:.8}.user-avatar-wrapper:hover .user-tooltip{opacity:1;visibility:visible;bottom:-65px}.admin-menu-wrapper{position:relative}.hamburger-btn{background:transparent;border:1px solid var(--border-color);border-radius:8px;padding:.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.hamburger-btn:hover{background:var(--bg-color);border-color:var(--text-secondary)}.hamburger-btn svg{width:20px;height:20px;stroke:var(--text-primary)}.admin-dropdown{position:absolute;top:45px;right:0;background:#fff;border-radius:12px;box-shadow:0 10px 40px #00000026;min-width:180px;z-index:1000;overflow:hidden;border:1px solid var(--border-color)}.admin-dropdown button{display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem 1rem;border:none;background:transparent;cursor:pointer;font-size:.875rem;color:var(--text-primary);transition:background .2s ease;text-align:left}.admin-dropdown button:hover{background:var(--bg-color)}.admin-dropdown button svg{width:18px;height:18px;stroke:var(--text-secondary)}.admin-dropdown .menu-divider{height:1px;background:var(--border-color);margin:.25rem 0}.admin-dropdown .logout-option{color:var(--danger-color)}.admin-dropdown .logout-option svg{stroke:var(--danger-color)}.admin-dropdown .logout-option:hover{background:#fef2f2}.logout-button{background:transparent;border:1px solid var(--border-color);color:var(--text-primary);padding:.5rem 1rem;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap}.logout-button:hover{background:#f8fafc;border-color:var(--primary-color);color:var(--primary-color)}.logout-button:active{transform:scale(.98)}.container{max-width:1400px;margin:0 auto;padding:2rem 1.5rem}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:2rem}.stat-card{background:var(--card-bg);border-radius:12px;padding:1.25rem;box-shadow:var(--shadow-sm);border:1px solid var(--border-color);transition:all .3s ease}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-value{font-size:2rem;font-weight:700;color:var(--text-primary)}.projects-section{background:var(--card-bg);border-radius:16px;box-shadow:var(--shadow-md);border:1px solid var(--border-color);overflow:hidden}.section-header{padding:1.5rem;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.section-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:1rem}.month-navigator{display:inline-flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:500}.month-nav-btn{background:var(--bg-color);border:1px solid var(--border-color);border-radius:6px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;cursor:pointer;color:var(--text-secondary);transition:all .2s}.month-nav-btn:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.month-display{min-width:90px;text-align:center;color:var(--primary-color);font-weight:600}.search-box{display:flex;align-items:center;gap:.5rem;background:var(--bg-color);border:1px solid var(--border-color);border-radius:8px;padding:.5rem 1rem;min-width:250px;transition:all .2s ease}.search-box:focus-within{border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.search-icon{color:#4b5563;font-size:1.5rem;display:flex;align-items:center;filter:grayscale(100%)}.search-box input{border:none;background:transparent;outline:none;flex:1;font-size:.875rem;color:var(--text-primary)}.search-box input::placeholder{color:var(--text-secondary)}.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch}.projects-table{width:100%;border-collapse:collapse}.projects-table thead{background:var(--bg-color);border-bottom:2px solid var(--border-color)}.projects-table th{padding:1rem;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background .2s ease}.projects-table th:hover{background:var(--border-color)}.sort-indicator{display:inline-block;margin-left:.5rem;font-size:.75rem;opacity:.5}.sort-indicator.active{opacity:1;color:var(--primary-color)}.projects-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s ease}.projects-table tbody tr:hover{background:var(--bg-color)}.projects-table td{padding:1.25rem 1rem;font-size:.875rem}.job-id{font-weight:600;color:var(--primary-color);max-width:90px;width:90px}.address{color:var(--text-primary);max-width:300px}.stage-badge{display:inline-block;padding:.375rem .75rem;border-radius:6px;font-size:.75rem;font-weight:600;white-space:nowrap}.projects-table td:has(.stage-badge){max-width:120px;width:120px}.stage-badge.slab{background:#dbeafe;color:#1e40af}.stage-badge.plate{background:#fef3c7;color:#92400e}.stage-badge.roof_cover{background:#fce7f3;color:#9d174d}.stage-badge.lockup{background:#e0e7ff;color:#3730a3}.stage-badge.pho{background:#d1fae5;color:#065f46}.supervisor-cell{font-size:.85rem;color:var(--text-secondary);white-space:nowrap}.stage-cell,.job-stage{text-align:center}.job-stage .stage-badge{font-size:.8rem;padding:.25rem .5rem}.claim-date{font-weight:500;color:var(--text-primary);max-width:100px;width:100px;white-space:nowrap}.slider-cell{min-width:420px;max-width:420px;width:420px}.slider-container{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:100%;position:relative}.slider-wrapper{display:flex;align-items:center;gap:1rem;width:100%;max-width:100%}.slider-track{flex:1 1 auto;min-width:0;position:relative;height:10px;background:linear-gradient(to right,#10b981,#fbbf24,#ef4444);border-radius:5px;cursor:pointer;box-shadow:inset 0 2px 4px #0000001a}.slider-thumb{position:absolute;top:50%;transform:translate(-50%,-50%);width:32px;height:32px;background:#fff;border:3px solid var(--primary-color);border-radius:50%;cursor:grab;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:var(--primary-color);box-shadow:0 2px 8px #00000026;transition:all .2s ease;-webkit-user-select:none;user-select:none;z-index:2}.slider-thumb:hover{transform:translate(-50%,-50%) scale(1.1);box-shadow:0 4px 12px #0003}.slider-thumb:active{cursor:grabbing;transform:translate(-50%,-50%) scale(.95)}.slider-thumb.unconfirmed{background:#fff;border-color:#9ca3af;color:#9ca3af;cursor:pointer}.slider-thumb.unconfirmed:hover{border-color:#6b7280;transform:translate(-50%,-50%) scale(1.1);box-shadow:0 4px 12px #00000026}.slider-thumb.confirmed{background:var(--success-color);border-color:var(--success-color);color:#fff;box-shadow:0 2px 8px #10b98166;animation:confirmPulse .3s ease;cursor:pointer}.slider-thumb.confirmed:hover{transform:translate(-50%,-50%) scale(1.1);box-shadow:0 4px 12px #10b98180}@keyframes confirmPulse{0%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.2)}to{transform:translate(-50%,-50%) scale(1)}}.slider-label{font-size:.75rem;font-weight:600;min-width:100px;width:100px;flex-shrink:0;text-align:center;padding:.375rem .75rem;border-radius:6px;white-space:nowrap}.slider-label.on-time{background:#d1fae5;color:#065f46}.slider-label.delayed{background:#fee2e2;color:#991b1b}.slider-label.clickable{cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.25rem}.slider-label.clickable:hover{transform:scale(1.02);box-shadow:0 2px 8px #00000026}.slider-label.clickable:active{transform:scale(.98)}.calendar-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;padding:1rem;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.calendar-modal{background:var(--card-bg, #fff);border-radius:16px;box-shadow:0 20px 60px #0000004d;width:calc(100% - 2rem);max-width:380px;padding:1.25rem;animation:calendarSlideIn .2s ease-out;overflow:hidden;box-sizing:border-box}.calendar-job-info{margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border-color, #e5e7eb)}.calendar-job-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.calendar-job-id{font-size:1.1rem;font-weight:700;color:var(--primary-color, #3b82f6)}.calendar-stage{font-size:.75rem;padding:.25rem .5rem}.calendar-address{font-size:.8rem;color:var(--text-secondary, #6b7280);margin-top:.375rem;line-height:1.4}@keyframes calendarSlideIn{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color, #e5e7eb)}.calendar-title{font-size:1.25rem;font-weight:600;color:var(--text-primary, #1f2937)}.calendar-nav-btn{width:44px;height:44px;border:none;background:var(--bg-color, #f3f4f6);border-radius:12px;font-size:1.5rem;color:var(--text-primary, #1f2937);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.calendar-nav-btn:hover:not(:disabled){background:var(--primary-color, #3b82f6);color:#fff}.calendar-nav-btn:disabled{opacity:.3;cursor:not-allowed}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:.5rem;width:100%;box-sizing:border-box}.calendar-weekday{text-align:center;font-size:.7rem;font-weight:600;color:var(--text-secondary, #6b7280);padding:.25rem 0;text-transform:uppercase;min-width:0}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;width:100%;box-sizing:border-box}.calendar-day{aspect-ratio:1;border:none;background:transparent;border-radius:10px;font-size:.95rem;font-weight:500;color:var(--text-primary, #1f2937);cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;min-height:44px;min-width:0;padding:0}.calendar-day:hover:not(:disabled):not(.empty){background:var(--primary-color, #3b82f6);color:#fff;transform:scale(1.05)}.calendar-day:active:not(:disabled):not(.empty){transform:scale(.95)}.calendar-day.empty{cursor:default}.calendar-day.disabled{color:var(--text-secondary, #9ca3af);opacity:.4;cursor:not-allowed;text-decoration:line-through}.calendar-day.today{background:var(--primary-color, #3b82f6);color:#fff;font-weight:700}.calendar-day.today:hover:not(:disabled){background:var(--primary-dark, #2563eb)}.calendar-day.selected{background:#10b981;color:#fff;font-weight:700;box-shadow:0 0 0 2px #10b981,0 0 0 4px #10b9814d}.calendar-day.selected:hover:not(:disabled){background:#059669}.calendar-day.selected.today{background:#10b981;box-shadow:0 0 0 2px #10b981,0 0 0 4px #10b9814d}.calendar-cancel-btn{width:100%;margin-top:1.25rem;padding:1rem;border:none;background:var(--bg-color, #f3f4f6);border-radius:12px;font-size:1rem;font-weight:600;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .2s ease}.calendar-cancel-btn:hover{background:#e5e7eb}@media(hover:none)and (pointer:coarse){.calendar-modal{max-width:92vw;padding:1rem}.calendar-day{min-height:48px;font-size:1rem}.calendar-nav-btn{width:48px;height:48px}.slider-label.clickable{padding:.5rem .75rem}}@media(min-width:601px)and (max-width:1024px){.calendar-modal{max-width:420px;padding:1.75rem}.calendar-day{min-height:56px;font-size:1.15rem}.calendar-title{font-size:1.35rem}}.reason-input-wrapper{width:100%;display:flex;flex-direction:column;min-width:0}.reason-input{width:100%;max-width:100%;padding:.625rem;border:1px solid var(--border-color);border-radius:6px;font-size:.875rem;font-family:inherit;color:var(--text-primary);transition:border-color .2s ease,box-shadow .2s ease;background:var(--bg-color);resize:none;overflow:hidden;min-height:38px;line-height:1.5;box-sizing:border-box}.reason-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a;background:#fff}.reason-input::placeholder{color:var(--text-secondary)}.reason-input.required{border-color:var(--danger-color)}.reason-input.required:focus{border-color:var(--danger-color);box-shadow:0 0 0 3px #ef44441a}.reason-input.required::placeholder{color:var(--danger-color);font-weight:500}.validation-text{font-size:.813rem;color:#991b1b;font-weight:500;margin-top:.25rem;display:block;width:100%;word-wrap:break-word}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:linear-gradient(135deg,#64748b,#475569)}.header{background:#fff;color:var(--text-primary);box-shadow:var(--shadow-lg);position:sticky;top:0;z-index:1000;border-bottom:1px solid var(--border-color)}.login-card{background:#fff;border-radius:20px;padding:3rem 2rem;box-shadow:0 20px 60px #0000004d;max-width:400px;width:100%}.login-header{text-align:center;margin-bottom:2rem}.login-logo{width:120px;height:80px;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem}.login-logo img{width:100%;height:100%;object-fit:contain}.login-header h2{font-size:1.75rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.login-header p{color:var(--text-secondary);font-size:.875rem}.login-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.875rem;font-weight:600;color:var(--text-primary)}.form-group input,.form-group select{padding:1rem 1.125rem;border:2px solid var(--border-color);border-radius:12px;font-size:1rem;font-family:inherit;background:#fff;transition:all .2s ease;height:56px}.form-group input::placeholder{color:var(--text-secondary);opacity:.7}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 4px #2563eb1a;background:#fafbff}.form-group input:hover,.form-group select:hover{border-color:var(--text-secondary)}.form-group select{cursor:pointer}.password-wrapper{position:relative;display:flex;align-items:center}.password-wrapper input{width:100%;padding-right:3rem}.password-toggle{position:absolute;right:1rem;background:none;border:none;cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:color .2s ease}.password-toggle:hover{color:var(--text-primary)}.password-toggle svg{width:22px;height:22px}.remember-me-group{margin:-.5rem 0 0}.remember-me-label{display:flex;align-items:center;gap:.625rem;cursor:pointer;font-weight:400;font-size:.9375rem;color:var(--text-primary);-webkit-user-select:none;user-select:none}.remember-me-label input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--primary-color);margin:0}.remember-me-label:hover{color:var(--primary-color)}@media(max-width:768px){.form-group input,.form-group select{height:52px;font-size:16px;padding:.875rem 1rem}.password-toggle svg{width:20px;height:20px}}@media(max-width:480px){.form-group input,.form-group select{height:50px}}.login-button{padding:1rem;background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #2563eb4d}.login-button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #2563eb66}.login-button:active{transform:translateY(0)}.microsoft-login-button{width:100%;padding:.875rem 1rem;background:#fff;color:#5e5e5e;border:1px solid #8c8c8c;border-radius:8px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1rem}.microsoft-login-button:hover{background:#f8f8f8;border-color:#5e5e5e;transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.microsoft-login-button:active{transform:translateY(0)}.microsoft-login-button svg{flex-shrink:0}.login-divider{display:flex;align-items:center;margin:1.5rem 0;color:var(--text-secondary);font-size:.875rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border-color)}.login-divider span{padding:0 1rem}.manual-login-toggle{width:100%;padding:.75rem;background:transparent;color:var(--primary-color);border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.manual-login-toggle:hover{background:var(--hover-bg);border-color:var(--primary-color)}.back-to-sso-button{width:100%;padding:.75rem;background:transparent;color:var(--text-secondary);border:none;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;margin-top:.5rem}.back-to-sso-button:hover{background:var(--hover-bg);color:var(--text-primary)}.login-error{padding:1rem;background:#fee;border:1px solid #fcc;border-radius:8px;color:#c33;font-size:.875rem;margin-bottom:1rem;line-height:1.5}.empty-state{text-align:center;padding:4rem 2rem;color:var(--text-secondary)}.empty-state-icon{font-size:4rem;margin-bottom:1rem;opacity:.5}.empty-state h3{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin-bottom:.5rem}.report-placeholder{background:var(--card-bg);border-radius:16px;padding:4rem 2rem;text-align:center;box-shadow:var(--shadow-md);border:1px solid var(--border-color);min-height:400px;display:flex;flex-direction:column;align-items:center;justify-content:center}.report-placeholder h2{font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:1rem}.report-placeholder p{font-size:1.125rem;color:var(--text-secondary)}.data-stats{margin:2rem 0;display:flex;gap:2rem;justify-content:center;flex-wrap:wrap}.data-stats p{font-size:1rem;color:var(--text-primary)}.data-stats strong{font-size:1.5rem;color:var(--primary-color);display:block;margin-bottom:.25rem}.data-actions{display:flex;gap:1rem;justify-content:center;margin:2rem 0;flex-wrap:wrap}.action-button{padding:.875rem 1.5rem;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s ease;font-family:inherit;display:flex;align-items:center;gap:.5rem}.action-button.primary{background:var(--primary-color);color:#fff;box-shadow:0 4px 12px #2563eb4d}.action-button.primary:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 16px #2563eb66}.action-button.danger{background:#fff;color:var(--danger-color);border:2px solid var(--danger-color)}.action-button.danger:hover{background:var(--danger-color);color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #ef44444d}.data-note{margin-top:2rem;font-size:.875rem!important;color:var(--text-secondary)!important;font-style:italic}.projection-chart-card{background:var(--card-bg);border-radius:16px;padding:2rem;box-shadow:var(--shadow-md);border:1px solid var(--border-color);margin-bottom:2rem}.projection-chart-card h2{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:1.5rem}.chart-container{width:100%;overflow-x:auto}.line-chart{width:100%;height:auto;max-width:800px;margin:0 auto;display:block}.chart-legend{display:flex;justify-content:center;gap:2rem;margin-top:1.5rem;flex-wrap:wrap}.legend-item-chart{display:flex;align-items:center;gap:.5rem}.legend-color{width:20px;height:4px;border-radius:2px}.legend-item-chart span{font-size:.875rem;color:var(--text-primary);font-weight:500}.report-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:2px solid var(--border-color);padding-bottom:0}.report-tab{padding:.75rem 1.5rem;background:transparent;border:none;border-bottom:3px solid transparent;font-size:.95rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s;margin-bottom:-2px}.report-tab:hover{color:var(--primary-color)}.report-tab.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.chart-card{background:var(--card-bg);border-radius:16px;padding:2rem;box-shadow:var(--shadow-md);border:1px solid var(--border-color);margin-bottom:2rem}.chart-card h2{margin:0;font-size:1.25rem;color:var(--text-primary)}.chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.chart-date-selector{display:flex;align-items:center;gap:.75rem}.chart-date-selector label{font-size:.9rem;color:var(--text-secondary)}.month-input{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:8px;font-size:.9rem;background:var(--bg-color);color:var(--text-primary);cursor:pointer}.month-input:focus{outline:none;border-color:var(--primary-color)}.chart-with-legend{display:flex;gap:1.5rem}.chart-legend-vertical{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:var(--bg-color);border-radius:8px;min-width:140px}.legend-item-vertical{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-secondary)}.legend-item-vertical .legend-color{width:14px;height:14px;border-radius:3px;flex-shrink:0}.recharts-wrapper{width:100%;min-height:400px;flex:1}.supervisor-chart-section{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border-color)}.supervisor-chart-section h3{margin:0;font-size:1.1rem;color:var(--text-primary)}.supervisor-chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.supervisor-chart-toggle{display:flex;gap:.25rem}.supervisor-chart-legend{display:flex;justify-content:center;gap:1.5rem;margin-bottom:1rem;flex-wrap:wrap}.legend-item-horizontal{display:flex;align-items:center;gap:.5rem}.legend-item-horizontal .legend-color{width:16px;height:16px;border-radius:3px}.legend-item-horizontal span{font-size:.85rem;color:var(--text-primary);font-weight:500}.treemap-section{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border-color)}.treemap-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.treemap-header h3{margin:0;font-size:1.1rem;color:var(--text-primary)}.treemap-toggle{display:flex;gap:.5rem}.treemap-toggle .toggle-btn{padding:.5rem 1rem;border:1px solid var(--border-color);background:var(--bg-color);color:var(--text-secondary);border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s}.treemap-toggle .toggle-btn:hover{border-color:var(--primary-color);color:var(--primary-color)}.treemap-toggle .toggle-btn.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.treemap-wrapper{background:var(--bg-color);border-radius:8px;padding:1rem}.treemap-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.treemap-legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-secondary)}.treemap-legend-item .legend-color{width:14px;height:14px;border-radius:3px}.treemap-empty{padding:2rem;text-align:center;color:var(--text-secondary);background:var(--bg-color);border-radius:8px}.svg-chart-container{width:100%;max-width:100%;overflow-x:auto}.monthly-chart-svg{width:100%;height:auto;min-height:350px;max-height:450px}.chart-custom-tooltip{background:#fff;border:1px solid var(--border-color);border-radius:8px;padding:.75rem 1rem;box-shadow:var(--shadow-md)}.chart-custom-tooltip .tooltip-label{margin:0 0 .5rem;font-size:.9rem}.chart-custom-tooltip p{margin:.25rem 0;font-size:.85rem}.chart-legend-info{display:flex;flex-wrap:wrap;gap:1.5rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--border-color)}.chart-legend-info .legend-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-secondary)}.chart-legend-info .legend-color{width:16px;height:16px;border-radius:4px;flex-shrink:0}.forecast-section{background:var(--card-bg);border-radius:16px;padding:2rem;box-shadow:var(--shadow-md);border:1px solid var(--border-color);margin-bottom:2rem}.header .forecast-controls{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem 2rem;background:#fff;max-width:1400px;margin:0 auto}.filter-section{display:flex;align-items:center;gap:1rem;flex:1}.date-picker-wrapper{display:flex;align-items:center;gap:.75rem}.date-controls{display:flex;align-items:center;gap:.5rem}.month-nav-button{background:var(--primary-color);color:#fff;border:none;border-radius:6px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.25rem;font-weight:700;transition:all .2s ease}.month-nav-button:hover{background:var(--primary-dark);transform:scale(1.05)}.month-nav-button:active{transform:scale(.95)}.filter-switch{display:flex;align-items:center;gap:.75rem}.switch-label{position:relative;display:inline-block;width:52px;height:28px;cursor:pointer}.switch-input{opacity:0;width:0;height:0}.switch-slider{position:absolute;inset:0;background-color:#cbd5e1;border-radius:28px;transition:.3s}.switch-slider:before{position:absolute;content:"";height:20px;width:20px;left:4px;bottom:4px;background-color:#fff;border-radius:50%;transition:.3s;box-shadow:0 2px 4px #0003}.switch-input:checked+.switch-slider{background-color:var(--danger-color)}.switch-input:checked+.switch-slider:before{transform:translate(24px)}.toggle-switch.active .switch-slider{background-color:#10b981!important}.toggle-switch-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.25rem .5rem;border-radius:6px;transition:background .2s ease}.toggle-switch-label:hover{background:#0000000d}.toggle-switch-text{font-size:.8rem;font-weight:500;color:var(--text-secondary);white-space:nowrap}.toggle-switch-label .toggle-switch{position:relative;width:44px;height:24px;background-color:#cbd5e1!important;border-radius:24px;transition:background-color .3s ease;cursor:pointer}.toggle-switch-label .toggle-switch.active{background-color:#10b981!important}.toggle-switch .switch-slider:before{position:absolute;content:"";top:2px;left:2px;width:20px;height:20px;background-color:#fff;border-radius:50%;transition:transform .3s ease,background-color .3s ease;box-shadow:0 2px 4px #0003}.toggle-switch.active .switch-slider:before{transform:translate(20px)}.switch-text{font-size:.875rem;font-weight:600;color:var(--text-primary);white-space:nowrap}.search-input{flex:1;max-width:400px;padding:.625rem 1rem;border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;font-family:inherit;color:var(--text-primary);background:#fff;transition:all .2s ease}.search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.search-input::placeholder{color:var(--text-secondary)}.date-picker-wrapper label{font-size:.875rem;font-weight:600;color:var(--text-primary)}.date-picker{padding:.625rem 1rem;border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;font-family:inherit;background:#fff;cursor:pointer;transition:all .2s ease}.date-picker:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.date-range-wrapper{display:flex;align-items:center;gap:1rem}.date-range-group{display:flex;align-items:center;gap:.5rem}.date-range-group label{font-size:.875rem;font-weight:600;color:var(--text-primary);white-space:nowrap}.date-range-picker{display:flex;flex-direction:column;gap:.75rem}.date-range-inputs{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.date-range-field{display:flex;align-items:center;gap:.5rem}.date-range-field label{font-size:.875rem;font-weight:600;color:var(--text-primary);white-space:nowrap;min-width:40px}.date-input-group{display:flex;align-items:center;gap:.25rem}.date-range-separator{font-size:1.25rem;color:var(--text-secondary);padding:0 .25rem}.forever-btn{background:transparent;border:1px solid var(--border-color);border-radius:6px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.875rem;color:var(--text-secondary);transition:all .2s ease}.forever-btn:hover{background:var(--danger-light);border-color:var(--danger-color);color:var(--danger-color)}.forever-btn.active{background:#ef44441a;border-color:var(--danger-color);color:var(--danger-color)}.forever-display{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border:1px dashed var(--primary-color);border-radius:8px;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--primary-color);transition:all .2s ease;min-width:120px;justify-content:center}.forever-display:hover{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-style:solid}.forever-icon{font-size:1.25rem;font-weight:700}.date-range-shortcuts{display:flex;gap:.5rem;flex-wrap:wrap}.shortcut-btn{padding:.375rem .75rem;background:#fff;border:1px solid var(--border-color);border-radius:20px;font-size:.75rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;white-space:nowrap}.shortcut-btn:hover{background:var(--primary-color);border-color:var(--primary-color);color:#fff;transform:translateY(-1px)}.shortcut-btn:active{transform:translateY(0)}.activity-log-section{background:#fff;border-radius:12px;box-shadow:var(--shadow-sm);padding:1.5rem}.activity-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.activity-header h2{margin:0;font-size:1.25rem;color:var(--text-primary)}.activity-subtitle{margin:0;font-size:.875rem;color:var(--text-secondary);flex:1}.refresh-button{background:var(--primary-color);color:#fff;border:none;border-radius:8px;padding:.5rem 1rem;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.refresh-button:hover:not(:disabled){background:var(--primary-dark)}.refresh-button:disabled{opacity:.6;cursor:not-allowed}.activity-error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;padding:1rem;border-radius:8px;margin-bottom:1rem}.activity-loading,.activity-empty{text-align:center;padding:3rem;color:var(--text-secondary);font-size:.95rem}.activity-table-container{overflow-x:auto}.activity-pagination{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:1rem;margin-top:1rem;border-top:1px solid var(--border-color)}.activity-pagination .pagination-btn{padding:.5rem 1rem;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .2s}.activity-pagination .pagination-btn:hover:not(:disabled){background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.activity-pagination .pagination-btn:disabled{opacity:.5;cursor:not-allowed}.activity-pagination .pagination-info{padding:0 1rem;color:var(--text-secondary);font-size:.875rem}.activity-table{width:100%;border-collapse:collapse;font-size:.875rem}.activity-table th{background:var(--bg-secondary);padding:.75rem 1rem;text-align:left;font-weight:600;color:var(--text-primary);border-bottom:2px solid var(--border-color);white-space:nowrap}.activity-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border-color);color:var(--text-primary);vertical-align:top}.activity-table tbody tr:hover{background:var(--bg-secondary)}.activity-table tbody tr.pending{background:#fffbeb}.activity-table tbody tr.processed{background:#fff}.activity-time{white-space:nowrap;color:var(--text-secondary);font-size:.8rem}.activity-job{font-weight:600;color:var(--primary-color)}.activity-address{max-width:200px;overflow:hidden;text-overflow:ellipsis}.activity-supervisor{white-space:nowrap}.activity-task{max-width:180px;overflow:hidden;text-overflow:ellipsis}.activity-changes{font-size:.8rem;color:var(--text-secondary);max-width:350px}.change-items{display:flex;flex-direction:column;gap:.375rem}.change-badge{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500;white-space:nowrap}.change-badge.planned{background:#dbeafe;color:#1e40af}.change-badge.started{background:#fef3c7;color:#92400e}.change-badge.completed{background:#d1fae5;color:#065f46}.change-badge.estimated{background:#c7d2fe;color:#4338ca}.change-badge.default{background:#f3f4f6;color:#374151}.forecast-table-container{overflow-x:auto;margin-bottom:2rem}.forecast-table{width:100%;border-collapse:collapse}.forecast-table thead{background:var(--bg-color);border-bottom:2px solid var(--border-color)}.forecast-table th{padding:1rem;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);white-space:nowrap}.forecast-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s ease}.forecast-table tbody tr:hover{background:var(--bg-color)}.forecast-table td{padding:1rem;font-size:.875rem}.supervisor-name{font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:.75rem}.expand-button{background:var(--primary-color);color:#fff;border:none;border-radius:4px;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;font-weight:700;margin-right:.75rem;transition:all .2s ease;flex-shrink:0}.expand-button:hover{background:var(--primary-dark);transform:scale(1.1)}.expand-button:active{transform:scale(.95)}.expand-button-placeholder{display:inline-block;width:24px;height:24px;margin-right:.75rem;flex-shrink:0}.expand-all-button{background:var(--primary-color);color:#fff;border:none;border-radius:4px;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;font-weight:700;margin-right:.5rem;transition:all .2s ease}.expand-all-button:hover{background:var(--primary-dark);transform:scale(1.1)}.expand-all-button:active{transform:scale(.95)}.job-detail-row{background:#f8fafc}.job-detail-row:hover{background:#f1f5f9!important}.job-detail-cell{padding:0!important}.job-detail-table-wrapper{width:100%;overflow-x:auto;padding:1rem 2rem;background:#f8fafc}.job-detail-table{width:100%;border-collapse:collapse;font-size:.813rem}.job-detail-table thead{background:var(--bg-color);border-bottom:2px solid var(--primary-color)}.job-detail-table th{padding:.75rem 1rem;text-align:left;font-weight:600;color:var(--text-primary);white-space:nowrap}.job-detail-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s ease}.job-detail-table th.sortable:hover{background:#e2e8f0}.job-detail-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .2s ease}.job-detail-table tbody tr:hover{background:#f1f5f9}.job-detail-table td{padding:.75rem 1rem;color:var(--text-primary)}.job-status-cell{text-align:center}.status-indicator{font-size:1.5rem;flex-shrink:0;font-weight:700;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;line-height:1;border-radius:50%;background:var(--bg-color)}.status-indicator.doable{color:var(--success-color)}.status-indicator.overdue{color:var(--danger-color)}.kpi-cell{font-weight:600;text-align:left;font-family:Courier New,monospace;white-space:nowrap}.kpi-good{color:var(--success-color)}.kpi-warning{color:var(--warning-color)}.job-detail-table .job-number{font-weight:600;color:var(--primary-color)}.job-detail-table .job-address{color:var(--text-secondary);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-detail-table .job-stage{color:var(--text-primary);font-weight:500}.job-detail-table .job-amount{font-family:Courier New,monospace;color:var(--text-primary);font-weight:600;text-align:left}.completed-indicator{display:inline-block;margin-left:8px;color:#22c55e;font-weight:700;font-size:.9rem}.status-indicator.unconfirmed{background:#f59e0b;color:#fff}.status-indicator.completed{background:#22c55e;color:#fff}.job-detail-table .job-date{color:var(--text-secondary);white-space:nowrap}.job-detail-table .job-delay{color:var(--warning-color);font-weight:600;text-align:center}.job-detail-table .job-reason{color:var(--text-secondary);font-size:.85rem;max-width:200px;white-space:normal;word-wrap:break-word}.amount-cell{font-family:Courier New,monospace;color:var(--text-primary);text-align:left}.percentage-cell{min-width:200px}.percentage-bar-wrapper{position:relative;width:100%;height:32px;background:var(--bg-color);border-radius:6px;overflow:hidden}.percentage-bar{position:absolute;left:0;top:0;height:100%;background:linear-gradient(to right,var(--success-color),#34d399);transition:width .3s ease}.percentage-bar.total{background:linear-gradient(to right,var(--primary-color),#60a5fa)}.percentage-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:.875rem;font-weight:600;color:var(--text-primary);z-index:1}.forecast-table tfoot{border-top:3px solid var(--border-color)}.totals-row{background:var(--bg-color)}.totals-row td{padding:1.25rem 1rem;font-size:1rem}.forecast-legend{background:var(--bg-color);border-radius:12px;padding:1.5rem;border:1px solid var(--border-color)}.forecast-legend h3{font-size:1rem;font-weight:700;color:var(--text-primary);margin-bottom:1rem}.legend-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.legend-list li{font-size:.875rem;color:var(--text-primary);padding:.5rem 0;border-bottom:1px solid var(--border-color)}.legend-list li:last-child{border-bottom:none}.data-management-section{background:var(--card-bg);border-radius:16px;padding:1.5rem;box-shadow:var(--shadow-md);border:1px solid var(--border-color);display:flex;justify-content:center}.data-management-section .data-actions{margin:0}@media(max-width:1024px){.stat-card{padding:.75rem .5rem}.stat-label{font-size:.65rem;margin-bottom:.25rem}.stat-value{font-size:1.5rem}}@media(max-width:768px){.container{padding:1rem}.header-content{flex-direction:column;align-items:flex-start;gap:1rem}.stats-grid{grid-template-columns:repeat(4,1fr);gap:.5rem}.stat-card{padding:.5rem .35rem}.stat-label{font-size:.6rem;margin-bottom:.2rem}.stat-value{font-size:1.25rem}.section-header{flex-direction:column;align-items:stretch}.search-box{min-width:100%}.projects-table th,.projects-table td{padding:.75rem .5rem;font-size:.8125rem}.slider-cell{min-width:300px}.slider-track{height:36px}.slider-thumb{width:28px;height:28px}.login-card{padding:2rem 1.5rem}.date-range-wrapper{flex-direction:column;align-items:stretch;gap:.5rem}.date-range-group{flex-wrap:wrap}.date-range-picker{gap:.5rem}.date-range-inputs{flex-direction:column;align-items:stretch;gap:.5rem}.date-range-field{flex-wrap:wrap}.date-range-separator{display:none}.date-range-shortcuts{justify-content:center}.forever-display{min-width:auto;flex:1}.activity-table th,.activity-table td{padding:.5rem;font-size:.8rem}.activity-address,.activity-task,.activity-changes{max-width:120px}}@media(max-width:480px){.stats-grid{grid-template-columns:repeat(2,1fr)}.logo-text h1{font-size:1rem}.user-details{display:none}.slider-wrapper{flex-direction:column;align-items:stretch}.slider-label{text-align:left}.forecast-header,.date-picker-wrapper{flex-direction:column;align-items:stretch}.percentage-cell{min-width:150px}.projection-chart-card{padding:1rem}.projection-chart-card h2{font-size:1.25rem}.line-chart{min-width:600px}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.projects-table tbody tr{animation:fadeIn .3s ease}@media(hover:none)and (pointer:coarse){.projects-table th,.projects-table td{padding:1rem}.slider-track{height:44px}.slider-thumb{width:36px;height:36px}.login-button,.form-group select{padding:1rem;font-size:1rem}}@media(max-width:1024px){.table-container{overflow-x:visible;overflow:visible}.slider-track{touch-action:pan-y pinch-zoom}.slider-thumb{touch-action:pan-x}.slider-cell{touch-action:pan-y pinch-zoom}.projects-table,.projects-table thead,.projects-table tbody,.projects-table tr,.projects-table th,.projects-table td{display:block}.projects-table thead{position:absolute;left:-9999px;visibility:hidden}.projects-table tbody tr{display:grid;grid-template-columns:auto 1fr auto auto;gap:.375rem 1rem;padding:1rem;margin-bottom:.75rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-sm);align-items:start}.projects-table tbody tr:hover{box-shadow:var(--shadow-md)}.projects-table td{padding:0;border:none;background:transparent}.projects-table td.job-id{grid-column:1;grid-row:1;font-size:.9rem;font-weight:700;color:var(--primary-color);max-width:none;width:auto;white-space:nowrap}.projects-table td.supervisor-cell{grid-column:2;grid-row:1;text-align:left;font-size:.8rem;color:var(--text-secondary);padding:0;border:none;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.projects-table td.stage-cell{grid-column:3;grid-row:1;text-align:center;max-width:none;width:auto}.projects-table td.claim-date{grid-column:4;grid-row:1;text-align:right;max-width:none;width:auto;white-space:nowrap}.projects-table td.claim-date .claim-date-wrapper{display:block;text-align:right}.projects-table td.claim-date .days-until{display:block;text-align:right;margin-top:.125rem}.projects-table td.address{grid-column:1 / -1;grid-row:2;font-size:.8rem;color:var(--text-secondary);max-width:none;line-height:1.4;white-space:normal;padding-top:.25rem}.projects-table td.slider-cell{grid-column:1 / -1;grid-row:3;min-width:0;max-width:none;width:100%;padding-top:.75rem;margin-top:.5rem;border-top:1px solid var(--border-color)}.slider-cell .slider-container{max-width:100%}.slider-cell .slider-wrapper{flex-direction:row;align-items:center}.slider-cell .slider-track{flex:1;min-width:0}.slider-cell .slider-label{min-width:90px;width:auto}.slider-completed,.slider-disabled{text-align:center;padding:.5rem}}@media(max-width:600px){.projects-table tbody tr{grid-template-columns:1fr 1fr;gap:.375rem .75rem}.projects-table td.job-id{grid-column:1;grid-row:1;font-size:.95rem}.projects-table td.supervisor-cell{grid-column:2;grid-row:1;text-align:right}.projects-table td.address{grid-column:1 / -1;grid-row:2;font-size:.75rem}.projects-table td.stage-cell{grid-column:1;grid-row:3;text-align:left;padding-top:.5rem}.projects-table td.claim-date{grid-column:2;grid-row:3;text-align:right;padding-top:.5rem}.projects-table td.claim-date .claim-date-wrapper{justify-content:flex-end}.projects-table td.claim-date .days-until{text-align:right;font-size:.7rem}.projects-table td.slider-cell{grid-column:1 / -1;grid-row:4}.slider-cell .slider-container{display:flex;flex-direction:column;gap:.5rem;width:100%}.slider-cell .slider-wrapper{display:flex;flex-direction:row;align-items:center;gap:.75rem;width:100%}.slider-cell .slider-track{flex:1;min-width:0;height:44px;display:block}.slider-cell .slider-thumb{width:38px;height:38px}.slider-cell .slider-label{flex-shrink:0;min-width:85px;width:auto;text-align:center;font-size:.7rem}.slider-track{background:linear-gradient(to right,#10b981,#fbbf24,#ef4444)!important;min-height:10px}.slider-completed,.slider-disabled{text-align:center;padding:.75rem;font-size:.85rem}}@media print{@page{size:portrait;margin:10mm}body{background:#fff}.header,.data-management-section,.nav-button,.user-info{display:none!important}.container{max-width:100%;padding:0}.forecast-section{box-shadow:none;border:1px solid #ddd;page-break-inside:auto;margin-bottom:0;padding:10mm}.forecast-table{page-break-inside:auto;width:100%}.forecast-table tbody tr{page-break-inside:avoid;page-break-after:auto}.forecast-header{margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid #333;page-break-after:avoid}.forecast-header h2{font-size:1.25rem;margin-bottom:.5rem;color:#000}.date-picker-wrapper{font-size:.75rem;color:#333}.date-picker-wrapper label{color:#000}.forecast-table th{background:#f0f0f0!important;color:#000!important;border:1px solid #999!important;font-size:.7rem;padding:.5rem}.forecast-table td{border:1px solid #ddd!important;color:#000!important;font-size:.7rem;padding:.5rem}.percentage-bar{print-color-adjust:exact;-webkit-print-color-adjust:exact;background:#4ade80!important}.percentage-bar.total{background:#3b82f6!important}.percentage-text{color:#000!important;font-size:.7rem}.forecast-legend{page-break-inside:avoid;background:#f9f9f9!important;border:1px solid #ddd!important;margin-top:1rem}.forecast-legend h3{color:#000!important;font-size:.9rem}.legend-list li{color:#000!important;border-bottom:1px solid #ddd!important;font-size:.75rem;padding:.3rem 0}.totals-row{background:#e5e5e5!important;font-weight:700;page-break-inside:avoid}.forecast-table tfoot{page-break-inside:avoid}}.settings-view{min-height:100vh;background:var(--bg-color)}.settings-section{max-width:600px;margin:0 auto;padding:1.5rem}.settings-header{margin-bottom:1.5rem;text-align:center}.settings-header h2{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.settings-description{color:var(--text-secondary);font-size:.9rem;line-height:1.4;margin-bottom:1rem}.total-duration{background:#f1f5f9;color:#ff2a2a;padding:.5rem 1.25rem;border-radius:20px;font-size:.95rem;border:1px solid #e2e8f0;display:inline-block}.timeframes-list{background:var(--card-bg);border-radius:16px;padding:1.5rem;box-shadow:var(--shadow-md);border:1px solid var(--border-color);margin-bottom:1.5rem}.phase-item{text-align:center;padding:.75rem 0}.phase-item.first{padding-top:0}.phase-label{display:inline-block;font-weight:600;font-size:.9rem;color:var(--text-primary);text-transform:uppercase;letter-spacing:.5px;background:#f1f5f9;padding:.5rem 1.25rem;border-radius:20px;border:1px solid #e2e8f0}.timeframe-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 0;border-top:1px dashed #e2e8f0;border-bottom:1px dashed #e2e8f0;margin:.5rem 0;background:#fafafa;border-radius:8px;padding:.75rem}.timeframe-row .slider-track-wrapper{flex:1;position:relative;height:6px;background:#e2e8f0;border-radius:3px;margin:12px 0}.timeframe-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;background:transparent;cursor:pointer;position:absolute;top:50%;left:0;transform:translateY(-50%);z-index:2;margin:0}.timeframe-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:28px;height:28px;border-radius:50%;background:#ff2a2a;cursor:pointer;border:3px solid white;box-shadow:0 2px 8px #ff2a2a66;transition:transform .15s,box-shadow .15s}.timeframe-slider::-webkit-slider-thumb:hover{transform:scale(1.1);box-shadow:0 4px 12px #ff2a2a80}.timeframe-slider::-moz-range-thumb{width:28px;height:28px;border-radius:50%;background:#ff2a2a;cursor:pointer;border:3px solid white;box-shadow:0 2px 8px #ff2a2a66}.slider-fill{position:absolute;top:0;left:0;height:100%;background:linear-gradient(90deg,#ff2a2a,#c81e1e);border-radius:3px;pointer-events:none}.timeframe-row .timeframe-value{display:flex;align-items:baseline;gap:.25rem;min-width:80px;justify-content:flex-end}.timeframe-row .days-value{font-size:1.1rem;font-weight:700;color:#374151}.timeframe-row .weeks-value{font-size:.75rem;color:var(--text-secondary)}.timeframe-row .save-button{padding:.5rem 1rem;background:#6b7280;color:#fff;border:none;border-radius:6px;font-weight:600;font-size:.85rem;cursor:pointer;transition:background .2s,transform .15s;min-width:60px}.timeframe-row .save-button:hover:not(:disabled){background:#4b5563;transform:translateY(-1px)}.timeframe-row .save-button:disabled{opacity:.7;cursor:not-allowed}.timeframe-row .save-button.success{background:var(--success-color)}.timeframe-row .save-button.error{background:var(--danger-color)}.settings-info{background:var(--card-bg);border-radius:16px;padding:1.5rem;box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.settings-info h3{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin-bottom:1rem}.settings-info ul{list-style:none}.settings-info li{padding:.75rem 0;border-bottom:1px solid var(--border-color);color:var(--text-secondary);font-size:.9rem;line-height:1.5}.settings-info li:last-child{border-bottom:none}.settings-info li strong{color:var(--text-primary)}.percentage-config-row{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 0;border-bottom:1px solid #e2e8f0}.percentage-config-row:last-child{border-bottom:none}.percentage-label{font-weight:600;font-size:.95rem;color:var(--text-primary)}.percentage-input-group{display:flex;align-items:center;gap:.75rem}.percentage-input-group .slider-track-wrapper{flex:1;position:relative;height:6px;background:#e5e7eb;border-radius:3px}.percentage-input-group .timeframe-value{min-width:60px}.percentage-input-group .save-button{padding:.5rem 1rem;background:#6b7280;color:#fff;border:none;border-radius:6px;font-weight:600;font-size:.85rem;cursor:pointer;transition:background .2s,transform .15s;min-width:60px}.percentage-input-group .save-button:hover:not(:disabled){background:#4b5563;transform:translateY(-1px)}.percentage-input-group .save-button:disabled{opacity:.7;cursor:not-allowed}.percentage-input-group .save-button.success{background:var(--success-color)}.percentage-input-group .save-button.error{background:var(--danger-color)}.percentage-config-row.preliminary{background:#f0fdf4;border:1px solid #86efac}.fixed-percentage{display:flex;align-items:center;gap:.5rem}.fixed-label{font-size:.75rem;color:var(--text-secondary);font-style:italic}.percentage-save-footer{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background:#f8fafc;border-radius:12px;margin-top:1.5rem;border:1px solid var(--border-color)}.total-indicator{font-size:1.1rem;display:flex;align-items:center;gap:.5rem}.total-indicator.valid{color:var(--success-color)}.total-indicator.invalid{color:var(--danger-color)}.total-warning{font-size:.85rem;font-weight:500}.total-valid{font-size:1.1rem;font-weight:700}.save-all-button{padding:.75rem 1.5rem;background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;border:none;border-radius:8px;font-weight:600;font-size:.95rem;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #2563eb4d}.save-all-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #2563eb66}.save-all-button:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none;background:#9ca3af}.save-all-button.success{background:var(--success-color)}.save-all-button.error{background:var(--danger-color)}.nav-button.settings-button{background:transparent;border:none;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background .2s}.nav-button.settings-button:hover{background:#f1f5f9}.nav-button.back-button{background:var(--card-bg);border:1px solid var(--border-color);padding:.5rem 1rem;border-radius:8px;font-weight:500;color:var(--text-primary);cursor:pointer;transition:background .2s,border-color .2s}.nav-button.back-button:hover{background:#f1f5f9;border-color:var(--primary-color)}.date-source-badge{font-size:.65rem;padding:.15rem .4rem;border-radius:4px;margin-left:.5rem;font-weight:500;text-transform:uppercase}.date-source-badge.calculated{background:#dbeafe;color:#1d4ed8}.date-source-badge.clickhome{background:#fef3c7;color:#d97706}.date-source-badge.completed{background:#d1fae5;color:#059669}.claim-date-wrapper{cursor:help;position:relative;display:inline-flex;align-items:center;gap:.5rem}.claim-date-wrapper[data-tooltip]:not([data-tooltip=""]):hover:after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#1f2937;color:#fff;padding:.5rem .75rem;border-radius:6px;font-size:.75rem;white-space:nowrap;z-index:100;box-shadow:0 4px 12px #00000026;margin-bottom:4px}.claim-date-wrapper[data-tooltip]:not([data-tooltip=""]):hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#1f2937;margin-bottom:-8px;z-index:100}.claim-date-wrapper.completed{color:#2563eb;font-weight:600}.completed-tick{color:#10b981;font-weight:700;font-size:1rem}.completed-row{background:#f8fafc}.completed-row td{opacity:.8}.slider-completed{display:flex;align-items:center;justify-content:center;padding:.5rem 1rem;background:#e2e8f0;border-radius:8px;color:#64748b}.completed-label{font-size:.85rem;font-weight:500}.days-until{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}.days-until.overdue{color:#ff2a2a;font-weight:600}.days-until.soon{color:var(--warning-color);font-weight:600}@media(min-width:768px)and (max-width:1024px){.settings-section{max-width:500px;padding:1.5rem}.timeframe-row{gap:1rem}.timeframe-row .timeframe-value{min-width:90px}}@media(max-width:767px){.settings-section{padding:1rem;max-width:100%}.timeframe-row{flex-wrap:wrap;gap:.5rem}.timeframe-row .slider-track-wrapper{flex:1 1 100%;order:1}.timeframe-row .timeframe-value{order:2;min-width:auto}.timeframe-row .save-button{order:3;margin-left:auto}.phase-label{font-size:1rem}}.admin-view{min-height:100vh;background:var(--bg-color)}.admin-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:2px solid var(--border-color);padding-bottom:.5rem}.admin-tab{padding:.75rem 1.5rem;background:transparent;border:none;border-radius:8px 8px 0 0;font-size:1rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s}.admin-tab:hover{background:#2563eb0d;color:var(--text-primary)}.admin-tab.active{background:var(--primary-color);color:#fff}.admin-section{background:var(--card-bg);border-radius:12px;padding:1.5rem;box-shadow:var(--card-shadow)}.admin-section h2{margin:0 0 .5rem;color:var(--text-primary)}.users-table{margin-top:1rem;overflow-x:auto}.users-table table{width:100%;border-collapse:collapse}.users-table th,.users-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border-color)}.users-table th{background:#f8fafc;font-weight:600;color:var(--text-secondary);font-size:.85rem;text-transform:uppercase}.users-table tr:hover{background:#f8fafc}.role-badges{display:flex;gap:.5rem;flex-wrap:wrap}.role-badge{padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600;background:#e5e7eb;color:#1f2937}.edit-btn{padding:.5rem 1rem;background:var(--primary-color);color:#fff;border:none;border-radius:6px;font-size:.85rem;cursor:pointer;transition:background .2s}.edit-btn:hover{background:var(--primary-dark)}.edit-panel{margin-top:1.5rem;padding:1.5rem;background:#f8fafc;border-radius:12px;border:1px solid var(--border-color)}.edit-panel h3{margin:0 0 1rem;color:var(--text-primary)}.role-checkboxes{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.role-checkbox,.permission-checkbox{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#fff;border-radius:8px;border:1px solid var(--border-color);cursor:pointer;transition:all .2s}.role-checkbox:hover,.permission-checkbox:hover{border-color:var(--primary-color);background:#2563eb05}.role-checkbox input,.permission-checkbox input{width:18px;height:18px;accent-color:var(--primary-color)}.role-name,.perm-name{font-weight:500;color:var(--text-primary)}.role-desc{font-size:.85rem;color:var(--text-secondary);margin-left:auto}.save-btn{padding:.75rem 2rem;background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;border:none;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px #2563eb4d}.save-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #2563eb66}.save-btn:disabled{opacity:.6;cursor:not-allowed}.roles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem;margin-top:1rem}.role-card{background:#fff;border:2px solid var(--border-color);border-radius:12px;padding:1.25rem;cursor:pointer;transition:all .2s;position:relative}.role-card:hover{border-color:var(--primary-color);box-shadow:0 4px 12px #2563eb1a}.role-card.selected{border-color:var(--primary-color);background:#2563eb0d}.role-card h3{margin:0 0 .5rem;color:var(--text-primary)}.role-card p{margin:0;font-size:.85rem;color:var(--text-secondary)}.permission-count{margin-top:.75rem;font-size:.8rem;color:var(--primary-color);font-weight:500}.system-badge{position:absolute;top:.75rem;right:.75rem;background:#f3f4f6;color:#6b7280;font-size:.7rem;padding:.2rem .5rem;border-radius:4px;font-weight:500}.permissions-table{width:100%;border-collapse:collapse;margin-bottom:1rem;background:#fff;border-radius:8px;overflow:hidden;border:1px solid var(--border-color)}.permissions-table thead{background:#f8fafc;border-bottom:1px solid var(--border-color)}.permissions-table th{padding:.75rem 1rem;text-align:left;font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em}.permissions-table th:nth-child(3),.permissions-table th:nth-child(4){text-align:center;width:80px}.permissions-table tbody tr{border-bottom:1px solid #f1f5f9;transition:background .15s}.permissions-table tbody tr:last-child{border-bottom:none}.permissions-table tbody tr:hover{background:#f8fafc}.permissions-table tbody tr.category-header{background:#f1f5f9}.permissions-table tbody tr.category-header td{font-weight:600;color:var(--text-primary);font-size:.85rem;padding:.6rem 1rem}.permissions-table td{padding:.6rem 1rem;font-size:.9rem;color:var(--text-primary)}.permissions-table td:nth-child(3),.permissions-table td:nth-child(4){text-align:center}.permissions-table .perm-name{font-weight:400}.permissions-table .perm-name.indented{padding-left:1.5rem;color:var(--text-secondary)}.permissions-table .perm-type{color:var(--text-secondary);font-size:.85rem}.permissions-table input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary-color);cursor:pointer}.permissions-table input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.permissions-table .checkbox-cell{display:flex;justify-content:center;align-items:center}.save-message{padding:1rem;border-radius:8px;margin-bottom:1rem;font-weight:500}.save-message.success{background:#d1fae5;color:#065f46}.save-message.error{background:#fee2e2;color:#991b1b}.access-denied{min-height:100vh;background:var(--bg-color)}.access-denied-card{max-width:400px;margin:4rem auto;background:var(--card-bg);border-radius:12px;padding:2rem;text-align:center;box-shadow:var(--card-shadow)}.access-denied-card h2{margin:0 0 1rem}.access-denied-card p{color:var(--text-secondary);margin-bottom:1.5rem}.access-denied-card button{padding:.75rem 1.5rem;background:var(--primary-color);color:#fff;border:none;border-radius:8px;font-weight:500;cursor:pointer}.user-cell{display:flex;flex-direction:column;gap:.25rem}.user-name{font-weight:500;color:var(--text-primary)}.user-email{font-size:.8rem;color:var(--text-secondary)}.users-table tr.inactive-user{opacity:.6;background:#f9fafb}.role-badges.clickable{cursor:pointer;padding:.25rem;border-radius:6px;transition:background .2s}.role-badges.clickable:hover{background:#2563eb14}.toggle-btn{padding:.4rem .75rem;border:none;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s}.toggle-btn.active{background:#d1fae5;color:#065f46}.toggle-btn.active:hover:not(:disabled){background:#a7f3d0}.toggle-btn.inactive{background:#fee2e2;color:#991b1b}.toggle-btn.inactive:hover:not(:disabled){background:#fecaca}.toggle-btn:disabled{opacity:.5;cursor:not-allowed}.action-buttons{display:flex;gap:.5rem;align-items:center}.section-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.create-btn{padding:.6rem 1.25rem;background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:none;border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s;white-space:nowrap}.create-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #10b9814d}.new-role-form{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px;padding:1.5rem;margin-bottom:1.5rem}.new-role-form h3{margin:0 0 1rem;color:#065f46}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.new-role-form .form-group{margin-bottom:.75rem}.new-role-form label{display:block;font-size:.85rem;font-weight:500;color:var(--text-secondary);margin-bottom:.35rem}.new-role-form input{width:100%;padding:.6rem .75rem;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem}.new-role-form input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:12px;width:100%;max-width:420px;box-shadow:0 20px 50px #0000004d;animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color)}.modal-header h3{margin:0;font-size:1.1rem;color:var(--text-primary)}.modal-close{background:none;border:none;font-size:1.25rem;color:var(--text-secondary);cursor:pointer;padding:.25rem;line-height:1}.modal-close:hover{color:var(--text-primary)}.modal-body{padding:1.5rem}.user-info-modal{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.user-info-modal strong{font-size:1.1rem;color:var(--text-primary)}.user-info-modal span{font-size:.9rem;color:var(--text-secondary)}.modal-body .form-group label{display:block;font-weight:500;margin-bottom:.5rem;color:var(--text-secondary)}.role-select{width:100%;padding:.75rem 1rem;border:1px solid var(--border-color);border-radius:8px;font-size:1rem;background:#fff;cursor:pointer}.role-select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--border-color);background:#f8fafc;border-radius:0 0 12px 12px}.btn-secondary{padding:.6rem 1.25rem;background:#fff;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:8px;font-weight:500;cursor:pointer;transition:all .2s}.btn-secondary:hover{background:#f8fafc;color:var(--text-primary)}.users-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s}.users-table th.sortable:hover{background:#eef2f7}.users-table th .sort-indicator{margin-left:.5rem;opacity:.3;font-size:.8rem}.users-table th .sort-indicator.asc,.users-table th .sort-indicator.desc{opacity:1;color:var(--primary-color)}.slider-container.disabled{opacity:.6;pointer-events:none}.slider-track.disabled{background:#e5e7eb;cursor:not-allowed}.slider-container.disabled .slider-thumb{background:#9ca3af;cursor:not-allowed}.slider-container.disabled .slider-label{color:var(--text-primary)}.slider-container.time-locked{opacity:.5;pointer-events:none}.slider-container.time-locked .slider-track{background:#e5e7eb;cursor:not-allowed}.slider-container.time-locked .slider-thumb{background:#9ca3af;cursor:not-allowed}.slider-container.time-locked .slider-label{color:#9ca3af;font-style:italic}.slider-container.time-locked:before{content:"🔒";position:absolute;left:-20px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.6}.settings-slider.disabled{opacity:.5;pointer-events:none}.settings-slider.disabled input[type=range]{cursor:not-allowed}.edit-panel.readonly{opacity:.7;pointer-events:none}.edit-panel.readonly .permission-checkbox input{cursor:not-allowed}.role-badges.readonly{cursor:default}.role-badges.readonly:hover{background:transparent}.toggle-btn.readonly{cursor:default;opacity:.7;pointer-events:none}.sync-form{background:var(--card-bg);padding:1.5rem;border-radius:8px;border:1px solid var(--border-color);margin-bottom:1.5rem}.sync-form .form-group{margin-bottom:1rem}.sync-form label{display:block;font-weight:500;margin-bottom:.5rem;color:var(--text-primary)}.sync-input{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:6px;font-family:Consolas,Monaco,monospace;font-size:.9rem;resize:vertical}.sync-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.sync-input:disabled{background:var(--bg-color);cursor:not-allowed}.sync-btn{background:var(--primary-color);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;font-weight:500;cursor:pointer;transition:background .2s}.sync-btn:hover:not(:disabled){background:var(--primary-dark)}.sync-btn:disabled{opacity:.6;cursor:not-allowed}.sync-results{background:var(--card-bg);padding:1.5rem;border-radius:8px;border:1px solid var(--border-color)}.sync-results h3{margin-bottom:1rem;color:var(--text-primary)}.sync-summary{display:flex;gap:1.5rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.sync-stat{font-weight:500;padding:.5rem 1rem;border-radius:6px}.sync-stat.success{background:#10b9811a;color:var(--success-color)}.sync-stat.failed{background:#ef44441a;color:var(--danger-color)}.sync-stat.total{background:#2563eb1a;color:var(--primary-color)}.sync-results-table{width:100%;border-collapse:collapse}.sync-results-table th,.sync-results-table td{padding:.75rem;text-align:left;border-bottom:1px solid var(--border-color)}.sync-results-table th{font-weight:600;color:var(--text-secondary);font-size:.85rem;text-transform:uppercase}.sync-results-table tr.success td{color:var(--text-primary)}.sync-results-table tr.error td{color:var(--danger-color)}.skeleton-container{padding:1rem}.skeleton-row{height:60px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-secondary) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:8px;margin-bottom:.75rem}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.search-refresh-container{display:flex;align-items:center;gap:8px}.refresh-btn{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;padding:8px 12px;cursor:pointer;font-size:16px;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.refresh-btn:hover:not(:disabled){background:#e9ecef;border-color:#adb5bd}.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.refresh-btn:active:not(:disabled){transform:scale(.95)}.table-container{position:relative}.loading-overlay{position:absolute;inset:0;background:#ffffffe6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;z-index:10;min-height:200px;border-radius:8px}.loading-spinner{width:40px;height:40px;border:4px solid #e9ecef;border-top-color:#0d6efd;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay span{color:#6c757d;font-size:14px}.toolbar-btn{background:transparent;border:1px solid #dee2e6;border-radius:4px;padding:4px 8px;cursor:pointer;font-size:14px;color:#6c757d;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;margin-right:4px}.toolbar-btn:hover:not(:disabled){background:#e9ecef;color:#495057}.toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.toolbar-btn.refresh-btn{font-weight:700}.toolbar-toggles{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-left:16px;font-size:13px}@media(max-width:1024px){.toolbar-toggles{gap:8px;margin-left:0;margin-top:8px}.toggle-switch-label{padding:.15rem .35rem}.toggle-switch-text{font-size:.75rem}.section-header{padding:.75rem 1rem}.section-title{padding:.5rem 0}}@media(max-width:600px){.toolbar-toggles{gap:6px;margin-top:6px}.toggle-switch-label{padding:.1rem .25rem}.toggle-switch-text{font-size:.7rem}.section-header{padding:.5rem .75rem}.section-title{padding:.25rem 0}}.toggle-label{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:#6c757d;-webkit-user-select:none;user-select:none}.toggle-label:hover{color:#495057}.toggle-label input[type=checkbox]{width:14px;height:14px;cursor:pointer;accent-color:#0d6efd}.toggle-label span{white-space:nowrap}.month-nav-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-controls{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px;border-top:1px solid #e9ecef;background:#f8f9fa}.pagination-btn{padding:8px 16px;border:1px solid #dee2e6;border-radius:6px;background:#fff;cursor:pointer;font-size:14px;transition:all .2s ease}.pagination-btn:hover:not(:disabled){background:#e9ecef;border-color:#adb5bd}.pagination-btn:disabled{opacity:.5;cursor:not-allowed}.pagination-info{color:#6c757d;font-size:14px}.slider-disabled{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:#f8f9fa;border-radius:6px;border:1px dashed #dee2e6}.disabled-label{color:#adb5bd;font-size:13px;font-style:italic}.header-controls{display:flex;align-items:center;gap:1rem}.role-filter{padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;color:var(--text-primary);background:#fff;cursor:pointer;min-width:150px}.role-filter:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}.bulk-actions-bar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe;border-radius:10px;padding:.75rem 1rem;margin-bottom:1rem}.selected-count{font-weight:600;color:var(--primary-color);font-size:.9rem}.bulk-buttons{display:flex;gap:.5rem}.bulk-btn{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid #e5e7eb;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;background:#fff;color:#374151;transition:all .15s ease}.bulk-btn svg{flex-shrink:0}.bulk-btn.reset{color:#374151}.bulk-btn.reset:hover:not(:disabled){background:#f3f4f6;border-color:#d1d5db}.bulk-btn.reminder{color:#374151}.bulk-btn.reminder:hover:not(:disabled){background:#f3f4f6;border-color:#d1d5db}.bulk-btn.cancel{color:#6b7280}.bulk-btn.cancel:hover:not(:disabled){background:#f3f4f6;border-color:#d1d5db}.bulk-btn:disabled{opacity:.35;cursor:not-allowed}.users-table th.checkbox-col,.users-table td.checkbox-col{width:40px;text-align:center;padding:.75rem .5rem}.users-table input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--primary-color)}.users-table tr.selected{background:#eff6ff!important}.users-table tr.selected:hover{background:#dbeafe!important}.action-buttons{display:flex;gap:.5rem}.action-btn{width:32px;height:32px;border:1px solid #e5e7eb;border-radius:6px;cursor:pointer;background:#fff;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.action-btn svg{flex-shrink:0}.action-btn.reset{color:#6b7280}.action-btn.reset:hover:not(:disabled){background:#f3f4f6;border-color:#d1d5db;color:#374151}.action-btn.reminder{color:#6b7280}.action-btn.reminder:hover:not(:disabled){background:#f3f4f6;border-color:#d1d5db;color:#374151}.action-btn:disabled{opacity:.35;cursor:not-allowed}.login-step-indicator{display:flex;justify-content:center;gap:.5rem;margin-bottom:1.5rem}.step-dot{width:8px;height:8px;border-radius:50%;background:#e2e8f0;transition:all .3s}.step-dot.active{background:var(--primary-color);width:24px;border-radius:4px}.login-header-row{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem}.back-button-icon{width:36px;height:36px;border-radius:8px;background:#f1f5f9;border:none;color:#64748b;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:500;transition:background .2s,color .2s;flex-shrink:0}.back-button-icon:hover{background:#e2e8f0;color:#334155}.login-welcome{text-align:left;flex:1}.login-welcome h3{color:var(--text-primary);font-size:1.1rem;margin:0}.login-welcome p{color:var(--text-secondary);font-size:.85rem;margin-top:.15rem}.back-button{background:none;border:none;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;gap:.5rem;font-size:.875rem;margin-bottom:1rem;padding:0}.back-button:hover{color:var(--primary-color)}.password-requirements{background:#f8fafc;border-radius:8px;padding:.75rem 1rem;margin-top:.5rem;font-size:.8rem;color:var(--text-secondary)}.password-match{display:flex;align-items:center;gap:.5rem;font-size:.85rem;margin-top:.5rem}.password-match.valid{color:var(--success-color)}.password-match.invalid{color:var(--danger-color)}
