.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}.shift-block.drop-target{box-shadow:0 0 0 3px #3b82f6,0 4px 16px #3b82f666;transform:scale(1.03);z-index:4}.shift-block.state-new-draft{outline:2px solid #3b82f6;outline-offset:-2px}.shift-block.state-changed{outline:2px solid #f97316;outline-offset:-2px}.shift-block.state-pending-delete{opacity:.6;outline:2px solid #ef4444;outline-offset:-2px;text-decoration:line-through;cursor:default}.shift-block.state-pending-delete:hover{transform:none;box-shadow:none}.shift-block{overflow:visible}.shift-block-content{overflow:hidden}.shift-diff-tooltip{display:none;position:absolute;bottom:calc(100% + 6px);left:0;right:0;background:#1f2937;color:#fff;border-radius:6px;padding:8px 10px;font-size:11px;z-index:20;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #0000004d}.shift-block:hover .shift-diff-tooltip{display:flex;flex-direction:column;gap:4px}.diff-row{display:flex;gap:6px;align-items:baseline}.diff-label{font-weight:600;flex-shrink:0;color:#9ca3af}.diff-published .diff-label{color:#9ca3af}.diff-draft .diff-label{color:#60a5fa}.diff-delete .diff-label{color:#f87171;font-weight:500}.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)}.day-column.column-drop-target{background:#3b82f612;outline:2px dashed #93c5fd;outline-offset:-2px}.time-input-wrapper{display:inline-flex;flex-direction:column;gap:2px}.time-input{padding:5px 8px;border:1px solid #d1d5db;border-radius:5px;font-size:.85rem;color:#374151;text-align:center;font-variant-numeric:tabular-nums;font-family:monospace;background-color:#fff}.time-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.time-input.invalid{border-color:#dc2626}.time-input.invalid:focus{border-color:#dc2626;box-shadow:0 0 0 2px #dc262626}.time-input-error{font-size:.7rem;color:#dc2626;line-height:1.2;white-space:nowrap}.time-input-wrapper.full-width{width:100%}.time-input-wrapper.full-width .time-input{width:100%;padding:10px 12px;font-size:14px;text-align:left}.time-input-wrapper.full-width .time-input:focus{box-shadow:0 0 0 3px #3b82f61a}.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}.employee-manager-drag-handle{cursor:grab;color:#9ca3af;font-size:16px;padding:0 2px;flex-shrink:0;-webkit-user-select:none;user-select:none;line-height:1}.employee-manager-drag-handle:hover{color:#4b5563}.employee-manager-item.is-dragging{opacity:.4}.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}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:10px;padding:28px 32px;width:440px;max-width:calc(100vw - 32px);box-shadow:0 20px 60px #00000040}.modal-title{font-size:1.15rem;font-weight:700;color:#111827;margin:0 0 12px}.modal-body{font-size:.9rem;color:#374151;line-height:1.5;margin:0 0 16px}.modal-empty{font-size:.875rem;color:#6b7280;font-style:italic;margin:0 0 16px}.modal-slot-list{list-style:none;margin:0 0 20px;padding:0;display:flex;flex-direction:column;gap:6px;max-height:240px;overflow-y:auto}.modal-slot-item{display:flex;align-items:center;gap:10px;font-size:.875rem;padding:6px 10px;background:#f9fafb;border-radius:6px;color:#374151}.modal-slot-day{font-weight:600;width:32px;flex-shrink:0}.modal-slot-time{flex:1;color:#6b7280}.modal-slot-qty{font-weight:500;color:#374151}.modal-error{color:#dc2626;font-size:.875rem;margin:8px 0 0}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.spe-panel{padding:24px;background:#f9fafb;min-height:100%;display:flex;flex-direction:column;gap:24px}.spe-header{display:flex;flex-direction:column;gap:6px}.spe-title{font-size:1.25rem;font-weight:700;color:#111827;margin:0}.spe-subtitle{font-size:.875rem;color:#6b7280;margin:0;line-height:1.5;max-width:560px}.spe-close-btn{align-self:flex-start;margin-top:4px}.spe-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.spe-day-section{background:#fff;border-radius:8px;padding:16px;box-shadow:0 1px 3px #00000014;display:flex;flex-direction:column;gap:10px}.spe-day-name{font-size:.95rem;font-weight:600;color:#374151;margin:0}.spe-empty-day{font-size:.8rem;color:#9ca3af;font-style:italic;margin:0}.spe-slot-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.spe-slot-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#f3f4f6;border-radius:6px;font-size:.875rem}.spe-slot-time{flex:1;color:#374151;font-variant-numeric:tabular-nums}.spe-slot-qty{color:#6b7280;font-weight:500;font-size:.8rem}.spe-slot-delete{background:none;border:none;color:#9ca3af;font-size:16px;line-height:1;padding:0 2px;cursor:pointer;border-radius:3px;transition:color .1s,background .1s}.spe-slot-delete:hover:not(:disabled){color:#ef4444;background:#fee2e2}.spe-slot-delete:disabled{opacity:.4;cursor:not-allowed}.spe-add-form{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-top:4px;border-top:1px solid #f3f4f6}.spe-time-input{width:64px;padding:5px 8px;border:1px solid #d1d5db;border-radius:5px;font-size:.85rem;color:#374151;text-align:center;font-variant-numeric:tabular-nums}.spe-time-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.spe-dash{color:#9ca3af;font-size:.875rem}.spe-qty-control{display:flex;align-items:center;gap:4px;margin-left:4px}.spe-qty-btn{width:24px;height:24px;border:1px solid #d1d5db;border-radius:4px;background:#fff;color:#374151;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0}.spe-qty-btn:hover:not(:disabled){background:#f3f4f6}.spe-qty-btn:disabled{opacity:.4;cursor:not-allowed}.spe-qty-value{font-size:.875rem;font-weight:500;color:#374151;min-width:20px;text-align:center}.spe-add-btn{font-size:.8rem;padding:5px 12px;margin-left:4px}.spe-cancel-btn{font-size:.8rem;padding:5px 10px}.spe-add-day-btn{width:100%;font-size:.8rem;padding:6px 0;color:#6b7280;border-color:#e5e7eb;background:#f9fafb}.spe-add-day-btn:hover{background:#f3f4f6;color:#374151}.spe-error{font-size:.75rem;color:#ef4444;width:100%}.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}.drag-error-banner{padding:10px 24px;background:#fef2f2;color:#991b1b;font-size:14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.drag-error-banner button{background:none;border:none;color:#991b1b;font-size:18px;cursor:pointer;line-height:1;padding:0 4px}.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}.template-toggle{display:flex;align-items:center;gap:6px;font-size:.85rem;color:#374151;cursor:pointer;-webkit-user-select:none;user-select:none}.template-toggle input[type=checkbox]{cursor:pointer}.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}.btn-publish{background:#16a34a!important;border-color:#15803d!important;color:#fff!important;font-weight:600}.btn-publish:hover:not(:disabled){background:#15803d!important}.btn-publish:disabled{opacity:.45;cursor:not-allowed}.pattern-editor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-start;justify-content:center;padding:40px 24px;z-index:200;overflow-y:auto}.pattern-editor-overlay>*{width:100%;max-width:960px;border-radius:10px;box-shadow:0 8px 32px #00000040}.unpublished-indicator{font-size:.8rem;color:#fbbf24;font-weight:500;align-self:center;white-space:nowrap}.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}
