.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1f2937,#374151);padding:20px}.login-card{background:#fff;padding:40px;border-radius:12px;box-shadow:0 10px 40px #0003;text-align:center;max-width:360px;width:100%}.login-card h1{font-size:1.75rem;color:#1f2937;margin-bottom:8px}.login-card h2{font-size:1.1rem;color:#6b7280;font-weight:500;margin-bottom:8px}.login-hint{font-size:.85rem;color:#9ca3af;margin-bottom:24px}.login-input-group{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.login-input{width:100%;padding:14px 16px;font-size:1rem;border:2px solid #e5e7eb;border-radius:8px;outline:none;transition:border-color .2s;box-sizing:border-box}.login-input:focus{border-color:#3b82f6}.login-input::placeholder{color:#9ca3af}.login-error{color:#dc2626;font-size:.9rem;margin-bottom:16px;padding:10px;background:#fef2f2;border-radius:6px}.login-message{color:#059669;font-size:.9rem;margin-bottom:16px;padding:10px;background:#ecfdf5;border-radius:6px}.login-button{width:100%;padding:14px;font-size:1rem;font-weight:600;color:#fff;background:#3b82f6;border:none;border-radius:8px;cursor:pointer;transition:background-color .2s}.login-button:hover:not(:disabled){background:#2563eb}.login-button:disabled{background:#9ca3af;cursor:not-allowed}.login-toggle{display:block;width:100%;margin-top:16px;padding:8px;background:none;border:none;color:#3b82f6;font-size:.85rem;cursor:pointer}.login-toggle:hover{text-decoration:underline}.shift-block{position:absolute;left:0;right:0;height:40px;border-radius:6px;padding:4px 8px;cursor:pointer;overflow:hidden;transition:transform .1s,box-shadow .1s,opacity .2s;z-index:1;box-sizing:border-box}.shift-block:hover{transform:scale(1.02);box-shadow:0 4px 12px #00000026;z-index:2}.shift-block.highlighted{box-shadow:0 0 0 3px #3b82f680,0 4px 12px #00000026;z-index:3}.shift-block.dimmed{opacity:.4}.shift-block-content{display:flex;flex-direction:column;gap:2px;height:100%;justify-content:center}.shift-block-name{font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shift-block-time{font-size:10px;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.2)}.shift-block--template{border:2px dashed #9ca3af}.shift-block--template .shift-block-name{color:#6b7280;text-shadow:none}.shift-block--template .shift-block-time{color:#9ca3af;text-shadow:none}.shift-block--template:hover{border-color:#6b7280}.shift-block--unavailable{background-color:#ef4444!important;cursor:default;opacity:.7}.shift-block--unavailable:hover{transform:none;box-shadow:none}.shift-block--unavailable .shift-block-name{font-style:italic}.schedule-grid{background-color:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.schedule-grid.read-only .day-column{cursor:default}.grid-header{display:flex;border-bottom:2px solid #e5e7eb;background-color:#f9fafb}.day-header{flex:1;min-width:100px;padding:10px 8px;text-align:center;display:flex;flex-direction:column;gap:2px}.day-name{font-weight:600;color:#374151;font-size:.9rem}.day-date{font-size:.75rem;color:#6b7280}.grid-body{display:flex}.days-container{display:flex;flex:1}.day-column{flex:1;min-width:100px;position:relative;border-right:1px solid #e5e7eb;background-color:#fefefe;padding:4px}.day-column.clickable{cursor:pointer}.day-column.clickable:hover{background-color:#fafafa}.day-column:last-child{border-right:none}.day-column.day-unavailable{background:repeating-linear-gradient(45deg,rgba(239,68,68,.08),rgba(239,68,68,.08) 4px,transparent 4px,transparent 8px)}.day-column.day-unavailable.clickable:hover{background:repeating-linear-gradient(45deg,#ef44441f,#ef44441f 4px,#fafafa80 4px,#fafafa80 8px)}.shift-editor{background-color:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:20px}.shift-editor-title{font-size:1.25rem;font-weight:600;color:#1f2937;margin-bottom:20px}.shift-editor-error{background-color:#fef2f2;border:1px solid #fecaca;color:#dc2626;padding:12px;border-radius:6px;font-size:14px;margin-bottom:16px}.shift-editor-warning{background-color:#fef3c7;border:1px solid #fcd34d;color:#92400e;padding:12px;border-radius:6px;font-size:14px;margin-bottom:16px}.shift-editor-field{margin-bottom:16px}.shift-editor-field label{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:6px}.shift-editor-field select,.shift-editor-field textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;color:#1f2937;background-color:#fff}.shift-editor-field select:focus,.shift-editor-field textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.shift-editor-field textarea{resize:vertical;font-family:inherit}.shift-editor-summary{background-color:#f3f4f6;padding:12px;border-radius:6px;font-size:14px;font-weight:500;color:#374151;text-align:center;margin-bottom:20px}.shift-editor-actions{display:flex;gap:8px}.shift-editor-actions .btn{flex:1}.shift-editor-actions .btn-danger{flex:0 0 auto}.time-text-input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;color:#1f2937;background-color:#fff;font-family:monospace}.time-text-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.week-navigator{display:flex;align-items:center;gap:12px}.week-nav-btn{width:36px;height:36px;border:1px solid #d1d5db;background:#fff;border-radius:6px;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.week-nav-btn:hover{background:#f3f4f6;border-color:#9ca3af}.week-label{font-size:1rem;font-weight:600;color:#1f2937;min-width:180px;text-align:center}.week-today-btn{padding:8px 12px;border:1px solid #3b82f6;background:#fff;color:#3b82f6;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s}.week-today-btn:hover{background:#3b82f6;color:#fff}.employee-manager{background-color:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.employee-manager-toggle{width:100%;padding:12px 16px;background:none;border:none;text-align:left;font-size:14px;font-weight:600;color:#374151;cursor:pointer;display:flex;align-items:center;gap:8px}.employee-manager-toggle:hover{background-color:#f9fafb}.employee-manager-content{padding:0 16px 16px}.employee-manager-list{margin-bottom:16px}.employee-manager-empty{color:#9ca3af;font-size:14px;text-align:center;padding:12px}.employee-manager-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #f3f4f6}.employee-manager-item:last-child{border-bottom:none}.employee-manager-item--pending{opacity:.6}.employee-manager-color{width:20px;height:20px;border-radius:50%;flex-shrink:0}.employee-manager-info{flex:1;min-width:0}.employee-manager-name{display:block;font-size:14px;color:#1f2937;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.employee-manager-email{display:block;font-size:11px;color:#9ca3af;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.employee-manager-pending{margin-top:8px;padding-top:8px;border-top:1px dashed #e5e7eb}.employee-manager-pending-label{font-size:11px;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.employee-manager-delete{width:24px;height:24px;border:none;background:none;color:#9ca3af;font-size:18px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.employee-manager-delete:hover{background-color:#fee2e2;color:#ef4444}.employee-manager-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.employee-manager-add .btn{width:100%}.employee-manager-input{flex:1;min-width:0;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.employee-manager-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.employee-manager-color-picker{width:36px;height:36px;padding:2px;border:1px solid #d1d5db;border-radius:6px;cursor:pointer}.employee-manager-color-picker::-webkit-color-swatch-wrapper{padding:0}.employee-manager-color-picker::-webkit-color-swatch{border:none;border-radius:4px}.employee-manager-error{margin-top:8px;padding:8px;font-size:12px;color:#dc2626;background:#fef2f2;border-radius:4px}.hours-display{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 3px #0000001a}.hours-display h3{font-size:.9rem;font-weight:600;color:#374151;margin-bottom:12px}.hours-list{display:flex;flex-direction:column;gap:12px}.hours-item{display:flex;flex-direction:column;gap:8px;padding-bottom:12px;border-bottom:1px solid #f3f4f6}.hours-item:last-child{padding-bottom:0;border-bottom:none}.hours-employee{display:flex;align-items:center;gap:8px}.hours-color{width:12px;height:12px;border-radius:50%}.hours-name{font-size:.9rem;font-weight:500;color:#1f2937}.hours-values{display:flex;gap:16px;padding-left:20px}.hours-value{display:flex;flex-direction:column;gap:2px}.hours-label{font-size:.75rem;color:#6b7280}.hours-number{font-size:.9rem;font-weight:600;color:#1f2937}.export-panel{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 3px #0000001a}.export-panel h3{font-size:.9rem;font-weight:600;color:#374151;margin-bottom:12px}.export-buttons{display:flex;flex-direction:column;gap:8px}.export-btn{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #e5e7eb;background:#fff;border-radius:6px;font-size:.9rem;color:#374151;cursor:pointer;transition:all .15s}.export-btn:hover{background:#f9fafb;border-color:#d1d5db}.export-icon{font-size:1.1rem}@media print{.export-panel,.week-navigator,.employee-manager,.hours-display,.shift-editor,.dashboard-sidebar,.dashboard-header button,.availability-editor{display:none!important}.dashboard{display:block!important}.dashboard-main{margin:0!important;padding:0!important}.schedule-grid{box-shadow:none!important;border:1px solid #000!important}body{background:#fff!important}}.availability-editor{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 3px #0000001a}.availability-editor h3{font-size:1rem;font-weight:600;color:#1f2937;margin-bottom:4px}.availability-hint{font-size:.85rem;color:#6b7280;margin-bottom:16px}.availability-days{display:flex;gap:4px;margin-bottom:16px}.availability-day{flex:1;padding:8px 4px;border:1px solid #e5e7eb;background:#fff;border-radius:4px;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .15s;position:relative}.availability-day:hover{background:#f9fafb}.availability-day.selected{background:#3b82f6;color:#fff;border-color:#3b82f6}.availability-day.has-avail:after{content:"";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:6px;height:6px;border-radius:50%;background:#10b981}.availability-day.selected.has-avail:after{background:#fff}.availability-form{display:flex;flex-direction:column;gap:12px}.availability-field label{display:flex;align-items:center;gap:8px;font-size:.85rem;color:#374151;font-weight:500;margin-bottom:4px}.availability-field select{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem}.availability-field select:focus{outline:none;border-color:#3b82f6}.availability-status-options{display:flex;gap:8px}.status-btn{flex:1;padding:8px;border:1px solid #d1d5db;background:#fff;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .15s}.status-btn:hover{background:#f9fafb}.status-btn.active.available{background:#dcfce7;border-color:#10b981;color:#166534}.status-btn.active.unavailable{background:#fee2e2;border-color:#ef4444;color:#991b1b}.availability-time-range{display:flex;gap:12px}.availability-time-range .availability-field{flex:1}.availability-actions{display:flex;gap:8px;margin-top:8px}.availability-actions .btn{flex:1}.availability-editor .time-input-group{display:flex;gap:8px}.availability-editor .time-text-input{width:70px;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;color:#1f2937;background-color:#fff;font-family:monospace}.availability-editor .time-text-input:focus{outline:none;border-color:#3b82f6}.availability-editor .time-input-group select{flex:1}.dashboard{min-height:100vh;display:flex;flex-direction:column;background:#f3f4f6}.dashboard-header{background:#1f2937;color:#fff;padding:16px 24px;display:flex;justify-content:space-between;align-items:center}.dashboard-header h1{font-size:1.25rem;font-weight:600}.dashboard-header-actions{display:flex;gap:12px}.dashboard-header .btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff}.dashboard-header .btn:hover{background:#fff3}.copy-message{padding:12px 24px;text-align:center;font-weight:500}.copy-message.success{background:#dcfce7;color:#166534}.copy-message.error{background:#fef2f2;color:#991b1b}.dashboard-layout{display:flex;flex:1;padding:24px;gap:24px}.dashboard-sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:16px}.dashboard-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}.dashboard-toolbar{display:flex;justify-content:space-between;align-items:center}.dashboard-content{display:flex;gap:24px;flex:1}.grid-wrapper{flex:1;overflow-x:auto}.grid-wrapper.with-editor{flex:1}.editor-wrapper{width:320px;flex-shrink:0}.employee-selector-panel{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.employee-selector-label{font-size:.85rem;font-weight:600;color:#374151}.employee-selector{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;color:#374151;background:#fff}.employee-dashboard .dashboard-header{background:#1f2937;color:#fff;padding:16px 24px;display:flex;justify-content:space-between;align-items:center}.dashboard-header-info{display:flex;align-items:center;gap:16px}.dashboard-header-info h1{font-size:1.25rem;font-weight:600}.employee-name-badge{padding:6px 12px;border-radius:20px;font-size:.85rem;font-weight:500;color:#fff}.employee-dashboard .dashboard-header .btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff}.employee-dashboard .dashboard-header .btn:hover{background:#fff3}.employee-dashboard .dashboard-layout{display:flex;flex:1;padding:24px;gap:24px}.employee-dashboard .dashboard-sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:16px}.employee-dashboard .dashboard-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}.employee-dashboard .dashboard-toolbar{display:flex;justify-content:flex-start;align-items:center}.employee-dashboard .dashboard-content{display:flex;gap:24px;flex:1}.employee-dashboard .grid-wrapper{flex:1;overflow-x:auto}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background-color:#f3f4f6;color:#1f2937}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f3f4f6}.loading-spinner{font-size:1.25rem;color:#6b7280}.btn{padding:8px 16px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:#3b82f6;color:#fff}.btn-primary:hover:not(:disabled){background-color:#2563eb}.btn-secondary{background-color:#e5e7eb;color:#374151}.btn-secondary:hover:not(:disabled){background-color:#d1d5db}.btn-danger{background-color:#ef4444;color:#fff}.btn-danger:hover:not(:disabled){background-color:#dc2626}
