*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;background:#f0f4f8;color:#1a2a3a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;line-height:1.6}.page{max-width:900px;padding:20px 16px}.page,.page-centered{margin:0 auto;min-height:100vh}.page-centered{display:flex;flex-direction:column;justify-content:center;max-width:440px;padding:60px 16px}.header{align-items:center;border-bottom:2px solid #e2e8f0;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:24px;padding:16px 0}.header h1{color:#0c4a6e;font-size:1.4rem;font-weight:700}.card{background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;margin-bottom:20px;padding:20px}.card h2{border-bottom:1px solid #e2e8f0;color:#0c4a6e;font-size:1.1rem;margin-bottom:16px;padding-bottom:8px}.btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;justify-content:center;padding:10px 20px;text-decoration:none;transition:all .2s}.btn-primary{background:#0284c7;color:#fff}.btn-primary:hover{background:#0369a1}.btn-secondary{background:#e2e8f0;color:#334155}.btn-secondary:hover{background:#cbd5e1}.btn-success{background:#16a34a;color:#fff}.btn-success:hover{background:#15803d}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}.btn-outline{background:#0000;border:2px solid #0284c7;color:#0284c7}.btn-outline:hover{background:#0284c7;color:#fff}.btn-sm{font-size:.8rem;padding:6px 14px}.btn-block{width:100%}.form-group{margin-bottom:16px}.form-group label{color:#475569;display:block;font-size:.85rem;font-weight:600;margin-bottom:6px}.form-control{background:#fff;border:1.5px solid #cbd5e1;border-radius:8px;font-size:.95rem;padding:10px 12px;transition:border-color .2s;width:100%}.form-control:focus{border-color:#0284c7;box-shadow:0 0 0 3px #0284c726;outline:none}select.form-control{appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%23475569' d='M6 8 1 3h10z'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}.form-row{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}@media (max-width:500px){.form-row{grid-template-columns:1fr}}.tab-group{background:#e2e8f0;border-radius:8px;display:flex;margin-bottom:20px;padding:3px}.tab-btn{border-radius:6px;flex:1 1;font-size:.9rem;padding:10px;transition:all .2s}.tab-btn.active{background:#fff;box-shadow:0 1px 3px #0000001a;color:#0284c7}.table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}.table{border-collapse:collapse;font-size:.9rem;width:100%}.table th{background:#f1f5f9;color:#475569;font-size:.8rem;font-weight:600;letter-spacing:.5px;padding:10px 12px;text-align:left;text-transform:uppercase}.table td{border-bottom:1px solid #f1f5f9;padding:10px 12px}.table tr:last-child td{border-bottom:none}.badge{border-radius:20px;display:inline-block;font-size:.75rem;font-weight:600;padding:3px 10px;text-transform:capitalize}.badge-active{background:#dcfce7;color:#166534}.badge-draft{background:#fef3c7;color:#92400e}.badge-confirmed{background:#dbeafe;color:#1e40af}.badge-expired{background:#fee2e2;color:#991b1b}.badge-pending{background:#fef3c7;color:#92400e}.alert{border-radius:8px;font-size:.9rem;margin-bottom:16px;padding:12px 16px}.alert-error{background:#fee2e2;color:#991b1b}.alert-success{background:#dcfce7;color:#166534}.empty-state{color:#94a3b8;font-size:.95rem;padding:32px 16px;text-align:center}.modal-overlay{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:100}.modal{background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000026;max-height:90vh;max-width:500px;overflow-y:auto;padding:24px;width:100%}.modal h2{color:#0c4a6e;font-size:1.2rem;margin-bottom:20px}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}.staff-card{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;padding:14px 0}.staff-card:last-child{border-bottom:none}.staff-info{display:flex;flex-direction:column}.staff-name{color:#1e293b;font-weight:600}.staff-email{color:#64748b;font-size:.85rem}.brand{margin-bottom:32px;text-align:center}.brand h1{color:#0c4a6e;font-size:1.8rem;font-weight:800}.brand p{color:#64748b;font-size:.95rem;margin-top:4px}.link{color:#0284c7;font-weight:600;text-decoration:none}.link:hover{text-decoration:underline}.mt-md{margin-top:16px}.mt-lg{margin-top:24px}.text-center{text-align:center}.text-muted{color:#94a3b8;font-size:.9rem}.modal-lg{max-width:860px}.schedule-preview{-webkit-overflow-scrolling:touch;max-height:60vh;overflow-y:auto}.schedule-day{margin-bottom:16px}.schedule-day-header{background:#f0f9ff;border-radius:8px;color:#0c4a6e;font-size:.95rem;font-weight:700;margin-bottom:8px;padding:8px 12px;position:sticky;top:0;z-index:1}.schedule-shifts{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));padding:0 4px}.schedule-shift-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;display:flex;flex-direction:column;gap:4px;padding:10px 12px}.shift-time{color:#334155;font-size:.85rem;font-weight:700}.shift-person{color:#1e293b;font-size:.9rem}@media (max-width:500px){.schedule-shifts{grid-template-columns:1fr}}.cal{width:100%}.cal-nav{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.cal-month-label{color:#0c4a6e;font-size:1.05rem;font-weight:700}.cal-header{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px;text-align:center}.cal-header-cell{color:#64748b;font-size:.75rem;font-weight:700;letter-spacing:.5px;padding:6px 0;text-transform:uppercase}.cal-grid{grid-gap:3px;display:grid;gap:3px;grid-template-columns:repeat(7,1fr)}.cal-cell{background:#f8fafc;border-radius:6px;display:flex;flex-direction:column;min-height:80px;overflow:hidden;padding:4px}.cal-cell-empty{background:#0000}.cal-cell-has-shifts{background:#f0f9ff;border:1px solid #bae6fd}.cal-day-num{color:#475569;font-size:.8rem;font-weight:600;margin-bottom:2px;padding-left:2px}.cal-shifts{display:flex;flex:1 1;flex-direction:column;gap:2px;overflow-y:auto}.cal-shift-pill{background:#0284c7;border-radius:4px;color:#fff;display:flex;flex-direction:column;font-size:.65rem;line-height:1.3;padding:2px 5px}.cal-shift-time{font-weight:700}.cal-shift-name{opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-shift-pos{opacity:.85;text-transform:capitalize}.cal-shift-past{background:#94a3b8}.cal-shift-today{background:#16a34a;box-shadow:0 0 0 2px #16a34a4d}.cal-shift-future{background:#2563eb}.cal-shift-open{color:#fff}.cal-shift-pending{background:#a855f7}.cal-shift-accepted{background:#8b5cf6}.cal-shift-incoming{background:#ec4899}.cal-shift-timeoff-approved{background:#e2e8f0;color:#64748b}.cal-shift-timeoff-pending{background:#fef3c7;color:#92400e}.cal-shift-swap-badge{font-size:.6rem;opacity:.95}.cal-shift-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:380px){.cal-grid{gap:1px}.cal-cell{min-height:44px}.cal-shift-pill{font-size:.5rem;padding:1px 2px}.tab-btn{font-size:.7rem;padding:6px 8px}.header h1{font-size:1rem}}.cal-shift-clickable{cursor:pointer;transition:transform .1s,box-shadow .1s}.cal-shift-clickable:hover{box-shadow:0 2px 8px #0003;transform:scale(1.05)}.cal-shift-clickable:focus-visible{outline:2px solid #0284c7;outline-offset:1px}.swap-shift-detail{background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;display:flex;flex-direction:column;gap:4px;margin-bottom:16px;padding:14px 16px}.swap-shift-detail .swap-date{color:#0c4a6e;font-size:1rem;font-weight:700}.swap-shift-detail .swap-time{color:#334155;font-size:.9rem}.swap-type-options{display:flex;gap:10px;margin-bottom:16px}.swap-type-option{background:#fff;border:2px solid #e2e8f0;border-radius:10px;cursor:pointer;flex:1 1;padding:12px;text-align:center;transition:all .15s}.swap-type-option:hover{border-color:#93c5fd}.swap-type-option.selected{background:#f0f9ff;border-color:#0284c7}.swap-type-option .swap-type-icon{display:block;font-size:1.4rem;margin-bottom:4px}.swap-type-option .swap-type-label{color:#1e293b;font-size:.85rem;font-weight:600}.swap-type-option .swap-type-desc{color:#64748b;font-size:.75rem;margin-top:2px}.cal-shift-pending{background:#d97706}.cal-shift-pending:hover{box-shadow:0 2px 8px #d9770666}.cal-shift-accepted{background:#ca8a04}.cal-shift-accepted:hover{box-shadow:0 2px 8px #ca8a0466}.cal-shift-swap-badge{font-size:.55rem;font-weight:600;letter-spacing:.3px;opacity:.9;text-transform:capitalize}.swap-status-grid{display:flex;flex-direction:column;gap:10px;margin-bottom:8px}.swap-status-row{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;padding:8px 0}.swap-status-row:last-child{border-bottom:none}.swap-status-label{color:#64748b;font-size:.85rem;font-weight:600}.swap-status-value{color:#1e293b;font-size:.9rem;font-weight:500}.swap-approval-tracker{background:#f8fafc;border-radius:12px;display:flex;flex-direction:column;gap:0;padding:16px}.swap-approval-step{align-items:center;display:flex;gap:12px;padding:10px 0}.swap-approval-icon{align-items:center;border-radius:50%;display:flex;flex-shrink:0;font-size:1rem;font-weight:700;height:36px;justify-content:center;width:36px}.swap-approval-step.approved .swap-approval-icon{background:#dcfce7;color:#16a34a}.swap-approval-step.waiting .swap-approval-icon{background:#fef3c7;color:#d97706}.swap-approval-info{display:flex;flex-direction:column}.swap-approval-title{color:#1e293b;font-size:.9rem;font-weight:700}.swap-approval-desc{color:#64748b;font-size:.8rem}.swap-approval-connector{background:#cbd5e1;height:16px;margin-left:17px;width:2px}.swap-request-card{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;padding:14px 0}.swap-request-card:last-child{border-bottom:none}.swap-request-info{display:flex;flex:1 1;flex-direction:column;gap:4px;min-width:0}.swap-request-header{margin-bottom:2px}.swap-request-detail{align-items:center;display:flex;font-size:.95rem;gap:8px}.swap-request-from{color:#1e293b;font-weight:700}.swap-request-arrow{color:#94a3b8;font-weight:600}.swap-request-to{color:#1e293b;font-weight:700}.swap-request-shift{color:#475569;font-size:.85rem}.swap-request-reason{color:#64748b;font-size:.8rem;font-style:italic}.swap-request-actions{display:flex;flex-shrink:0;gap:8px}@media (max-width:500px){.swap-request-actions{width:100%}.swap-request-actions .btn{flex:1 1}}.cal-shift-incoming{background:#7c3aed}.cal-shift-incoming:hover{box-shadow:0 2px 8px #7c3aed66}.cal-shift-open{background:#f59e0b;border:2px dashed #d97706}.cal-shift-open:hover{box-shadow:0 2px 8px #f59e0b66}.cal-shift-title{display:block;font-size:.7rem;font-weight:700}.settings-section{margin-bottom:20px}.settings-section-title{color:#334155;font-size:.95rem;font-weight:700;margin-bottom:10px}.shift-def-row{align-items:center;display:flex;gap:8px;margin-bottom:8px}.shift-def-row .form-control{flex:1 1;min-width:0}.shift-def-sep{color:#64748b;flex-shrink:0;font-size:.85rem}.shift-def-remove{flex-shrink:0;line-height:1;padding:4px 8px}.mt-sm{margin-top:8px}@media (max-width:500px){.shift-def-row{flex-wrap:wrap}.shift-def-row .form-control{flex:1 1 40%}}.staff-meta{color:#64748b;font-size:.8rem}.cal-day-clickable{align-items:center;border-radius:50%;cursor:pointer;display:flex;height:26px;justify-content:center;transition:background .15s;width:26px}.cal-day-clickable:hover{background:#e0f2fe}.cal-day-clickable:focus-visible{outline:2px solid #2563eb;outline-offset:1px}.timeoff-options{display:flex;flex-direction:column;gap:8px}.timeoff-option{align-items:center;border:2px solid #e2e8f0;border-radius:10px;cursor:pointer;display:flex;gap:10px;padding:10px 14px;transition:border-color .15s,background .15s}.timeoff-option:hover{background:#f0f9ff;border-color:#93c5fd}.timeoff-option.selected{background:#eff6ff;border-color:#2563eb}.timeoff-option.disabled{opacity:.45;pointer-events:none}.timeoff-option-icon{font-size:1.2rem}.timeoff-option-label{color:#1e293b;font-size:.9rem;font-weight:600}.cal-shift-timeoff-pending{background:#f59e0b;color:#fff}.cal-shift-timeoff-pending:hover{box-shadow:0 2px 8px #f59e0b66}.cal-shift-timeoff-approved{background:#10b981;color:#fff}.cal-shift-timeoff-approved:hover{box-shadow:0 2px 8px #10b98166}.role-checkboxes{display:flex;flex-wrap:wrap;gap:12px;padding:6px 0}.role-checkbox-label{align-items:center;color:#334155;cursor:pointer;display:flex;font-size:.9rem;gap:5px;text-transform:capitalize}.cal-time-toggle{font-size:.75rem;margin-left:auto;padding:2px 8px}.tab-nav{-webkit-overflow-scrolling:touch;background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000000f;display:flex;gap:0;margin-bottom:16px;overflow-x:auto;padding:4px;scrollbar-width:none}.tab-nav::-webkit-scrollbar{display:none}.tab-btn{background:#0000;border:none;border-radius:8px;color:#64748b;cursor:pointer;flex:0 0 auto;font-size:.85rem;font-weight:600;min-width:0;padding:10px 14px;text-align:center;transition:all .15s;white-space:nowrap}.tab-btn:hover{background:#f1f5f9;color:#1e293b}.tab-btn.active{background:#2563eb;box-shadow:0 1px 3px #2563eb4d;color:#fff}@media (max-width:600px){.tab-btn{font-size:.75rem;padding:8px 10px}.page{padding:12px 8px}.page-centered{padding:24px 12px}.header{margin-bottom:16px;padding:12px 0}.header h1{font-size:1.15rem}.card{border-radius:10px;margin-bottom:14px;padding:14px}.card h2{font-size:1rem;margin-bottom:12px}.btn{font-size:.82rem;padding:8px 14px}.btn-sm{font-size:.75rem;padding:5px 10px}.modal-overlay{align-items:flex-end;padding:8px}.modal{border-radius:16px 16px 0 0;max-height:92vh;padding:18px}.modal,.modal-lg{max-width:100%}.modal h2{font-size:1.05rem;margin-bottom:14px}.modal-actions{flex-wrap:wrap}.modal-actions .btn{flex:1 1;min-width:0}.table{font-size:.78rem}.table td,.table th{padding:8px 6px}.form-control{font-size:.9rem;padding:9px 10px}.staff-card{align-items:flex-start;gap:6px}.staff-card,.swap-request-card,.swap-type-options{flex-direction:column}.swap-request-card{align-items:flex-start}.swap-request-actions{width:100%}.swap-request-actions .btn{flex:1 1}.empty-state{font-size:.85rem;padding:20px 12px}.brand h1{font-size:1.5rem}.brand p{font-size:.85rem}.cal-cell{min-height:54px;padding:2px}.cal-day-num{font-size:.7rem}.cal-shift-pill{border-radius:3px;font-size:.55rem;padding:1px 3px}.cal-header-cell{font-size:.6rem;padding:4px 0}.cal-grid{gap:2px}.cal-nav{flex-wrap:wrap;gap:6px}.cal-month-label{font-size:.9rem}}