:root{color-scheme:light;--bg: #eef0f3;--surface: #ffffff;--ink: #1b1f24;--muted: #5d6670;--line: #d5dae1;--accent: #1f4e79;--accent-ink: #ffffff;--danger: #8a1f1f;--warn-bg: #f7efe3;--sidebar: #16202b;--sidebar-ink: #d7dee6;font-family:Segoe UI,IBM Plex Sans,sans-serif;line-height:1.4;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}button,input,select,textarea{font:inherit}button{border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:.4rem .7rem;border-radius:4px;cursor:pointer}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button:disabled{opacity:.55;cursor:not-allowed}.link-button,.icon-button{border:0;background:none;padding:0;color:inherit;text-decoration:underline}.icon-button{font-size:1.4rem;line-height:1;text-decoration:none}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:4px;padding:.45rem .55rem;background:var(--surface)}label{display:grid;gap:.3rem;font-size:.85rem}.checkbox{display:flex;align-items:center;gap:.5rem}.checkbox input{width:auto}.muted{color:var(--muted)}.banner{padding:.65rem .8rem;background:var(--warn-bg);border:1px solid var(--line)}.banner.error{color:var(--danger);background:#f8ecec}.loading{padding:2rem}.app-shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh;height:100vh}.sidebar{background:var(--sidebar);color:var(--sidebar-ink);padding:1.1rem 1rem;display:flex;flex-direction:column;gap:1.2rem}.brand{display:grid;gap:.2rem}.brand span,.sidebar-footer span{color:#9aa6b2;font-size:.8rem}.sidebar nav{display:grid;gap:.2rem}.sidebar a{color:inherit;text-decoration:none;padding:.45rem .55rem;border-radius:4px}.sidebar a.active,.sidebar a:hover{background:#243344}.nav-later{margin:1rem 0 0;font-size:.75rem;color:#7f8b96}.sidebar-footer{margin-top:auto;display:grid;gap:.25rem}.sidebar-footer .role{text-transform:capitalize}.workspace,.page{min-width:0}.workspace{display:flex;flex-direction:column;min-height:0}.page{padding:1.1rem 1.2rem 1.5rem;display:grid;gap:.9rem}.page-header,.toolbar,.form-actions,.row-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.page-header{justify-content:space-between}.page-header h1,.auth-card h1,.unassigned h2,.modal h2{margin:0}.panel{background:var(--surface);border:1px solid var(--line);padding:.9rem}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.5rem .4rem;border-bottom:1px solid var(--line);font-size:.92rem}.roster-page{flex:1;height:100%;min-height:0;grid-template-rows:auto auto auto 1fr;padding-bottom:.6rem}.roster-header{align-items:flex-start}.roster-range{margin:.15rem 0 0;font-size:1.05rem;font-weight:600}.roster-industry{margin:.1rem 0 0}.roster-toolbar,.day-picker{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.roster-board{min-height:0;overflow:auto;background:var(--surface);border:1px solid var(--line)}.week-overview{min-height:100%}.week-overview-grid{display:grid;grid-template-columns:168px repeat(7,minmax(140px,1fr));min-height:100%}.week-corner,.week-day-header,.open-work-label,.employee-label,.day-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:.45rem}.sticky-header{position:sticky;top:0;z-index:3;background:#f6f8fa;font-weight:600}.sticky-col{position:sticky;left:0;z-index:2;background:#f3f6f8}.week-corner.sticky-header{z-index:4}.open-work-label,.open-work-cell{background:#eef4f8}.open-work-label{z-index:3;display:grid;gap:.35rem;align-content:start;position:sticky;left:0;top:2.4rem}.open-work-cell{position:sticky;top:2.4rem;z-index:1;min-height:8rem}.open-work-label.collapsed,.open-work-cell.collapsed{min-height:0;padding-block:.35rem}.employee-label{font-weight:600;min-height:6.5rem;display:flex;align-items:center}.employee-label.inactive{color:var(--muted)}.day-cell{min-height:6.5rem;display:grid;gap:.4rem;align-content:start}.day-cell.drop-ok{outline:2px solid var(--accent);background:#e7eef6}.day-cell.drop-forbidden{background:#f4f5f6}.week-empty{grid-column:1 / -1;padding:1rem}.shift-card{border:1px solid var(--line);background:#fff;display:grid;gap:.25rem;padding:.35rem .4rem}.shift-card.staffing-unassigned{border-left:4px solid #c48a2a}.shift-card.staffing-partial{border-left:4px solid var(--accent)}.shift-card.staffing-full{border-left:4px solid #2d6a4f}.shift-card.staffing-overstaffed{border-left:4px solid var(--danger)}.shift-card-main{display:grid;gap:.12rem;width:100%;border:0;background:none;padding:0;text-align:left;cursor:pointer}.shift-card-time{font-variant-numeric:tabular-nums}.shift-card-location,.shift-card-status{color:var(--muted);font-size:.78rem}.shift-card-actions{display:flex;gap:.3rem;flex-wrap:wrap}.shift-card-actions button{padding:.15rem .4rem;font-size:.75rem}.scheduler-wrap{min-width:0;overflow:auto;padding:.4rem;height:100%}.shift-editor .pattern-toggle,.shift-editor .stepper,.weekday-picker{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.shift-editor .stepper-field{display:grid;gap:.3rem}.shift-editor .stepper input{width:auto;min-width:8rem}.checkbox.compact{font-size:.8rem}.preview-dates{margin:.4rem 0 0;padding-left:1.1rem;font-size:.85rem}.modal{width:min(640px,100%);max-height:calc(100vh - 2rem);overflow:auto}.staffing{font-size:.75rem;font-weight:600;letter-spacing:.01em}.staffing-unassigned{color:#8a5a12}.staffing-partial{color:#1f4e79}.staffing-full{color:#2d6a4f}.staffing-overstaffed{color:#8a1f1f}.empty-state{padding:1.5rem}.auth-page{min-height:100vh;display:grid;place-items:center;padding:1rem}.auth-card{width:min(420px,100%);display:grid;gap:.8rem}.stack{display:grid;gap:.75rem}.modal-backdrop{position:fixed;inset:0;background:#0f141a73;display:grid;place-items:center;padding:1rem;z-index:20}.modal{width:min(520px,100%);background:var(--surface);border:1px solid var(--line);padding:1rem;display:grid;gap:.8rem}.modal header{display:flex;justify-content:space-between;align-items:center}@media(max-width:960px){.app-shell{grid-template-columns:1fr}.sidebar{flex-direction:row;flex-wrap:wrap;align-items:center}.sidebar nav{grid-auto-flow:column}.sidebar-footer{margin-top:0;margin-left:auto}.app-shell,.roster-page{height:auto;min-height:100vh}.week-overview-grid{grid-template-columns:120px repeat(7,minmax(120px,1fr))}}
