:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1e293b;background:#f1f5f9;--accent: #2f6f4f;--border: #e2e8f0}*{box-sizing:border-box}body{margin:0}h1,h2{margin:0 0 8px}h2{font-size:1.1rem}.center{min-height:100vh;display:grid;place-items:center;padding:16px}.muted{color:#64748b}.small{font-size:.85rem}.error{color:#b91c1c}.card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:20px}.login{width:min(380px,100%);display:grid;gap:12px}.topbar{display:flex;gap:16px;align-items:center;padding:12px 20px;background:#fff;border-bottom:1px solid var(--border)}.topbar strong{flex:1}.page{max-width:900px;margin:0 auto;padding:20px;display:grid;gap:16px}.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}label{display:grid;gap:4px;font-size:.9rem}input,select{font:inherit;padding:8px 10px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}input:disabled,select:disabled{background:#f8fafc;color:#64748b}button{font:inherit;padding:8px 14px;border:0;border-radius:6px;background:var(--accent);color:#fff;cursor:pointer}button:disabled{opacity:.6;cursor:default}button.link{background:none;color:var(--accent);padding:0}table{width:100%;border-collapse:collapse;margin-top:8px}th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--border);font-size:.9rem}h1{font-size:1.4rem}.nav{display:flex;gap:4px;flex:1}.nav a{padding:6px 10px;border-radius:6px;color:#334155;text-decoration:none}.nav a.active{background:#e2e8f0;color:#0f172a;font-weight:600}.topbar strong{flex:0 0 auto}.check{display:flex;gap:8px;align-items:center}.stack{display:grid;gap:12px;margin:12px 0}.dept{border:1px solid var(--border);border-left:6px solid var(--accent);border-radius:8px;padding:10px 12px}.positions{list-style:none;margin:8px 0;padding:0 0 0 8px;display:grid;gap:4px}.row.tight{margin-top:0;gap:6px}.grow{flex:1}.inactive{opacity:.6}.badge{display:inline-block;margin-left:6px;padding:0 6px;border-radius:10px;background:#fef3c7;color:#92400e;font-size:.75rem}button.icon{background:#e2e8f0;color:#0f172a;padding:2px 8px}button.danger{color:#b91c1c}.table-scroll{overflow-x:auto}.nowrap{white-space:nowrap}td input[type=time]{padding:4px 6px}.page.wide{max-width:1280px}.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,460px);gap:16px;align-items:start}.editor{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto}.dept-group{border-top:4px solid var(--accent)}.position-group{margin-top:10px}.position-group h3,.editor h3{font-size:.95rem;margin:0 0 6px}.people{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px}.person{width:100%;display:flex;gap:6px;align-items:center;background:#f8fafc;color:#0f172a;border:1px solid var(--border);text-align:left}.person:hover{border-color:var(--accent)}.strength{color:#ca8a04;font-size:.8rem;letter-spacing:-1px}.badge.ok{background:#dcfce7;color:#166534}.badge.bad{background:#fee2e2;color:#991b1b}.badge.status-approved{background:#dcfce7;color:#166534}.badge.status-denied{background:#e2e8f0;color:#475569}fieldset{border:1px solid var(--border);border-radius:8px;padding:8px 12px}legend{font-weight:600;font-size:.9rem}.qual{margin:4px 0}.qual-name{min-width:120px}ul.plain{list-style:none;padding:0;margin:0;display:grid;gap:4px}@media(max-width:900px){.split{grid-template-columns:1fr}.editor{position:static;max-height:none}}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}table.compact td,table.compact th{padding:4px 6px}.preview{display:flex;gap:8px;flex-wrap:wrap}.inline-form{margin:8px 0 12px;padding:10px 12px;border:1px dashed #cbd5e1;border-radius:8px;background:#f8fafc;display:grid;gap:8px}input.narrow{width:64px}.weekday-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}a.button-link{display:inline-block;padding:8px 14px;border-radius:6px;background:#e2e8f0;color:#0f172a;text-decoration:none}ul.history li{padding:3px 0;border-bottom:1px solid var(--border);font-size:.85rem}@media(max-width:640px){.topbar{flex-wrap:wrap;gap:8px 12px;padding:8px 12px}.topbar .nav{order:3;flex:1 0 100%;overflow-x:auto;white-space:nowrap}.topbar .nav a{flex:0 0 auto}.topbar>.muted{margin-left:auto}.page{padding:12px}}.print-root{padding:16px;background:#fff;color:#000}.print-toolbar{margin-bottom:12px}.print-header{font-size:1rem;margin:8px 0 4px}.print-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.8rem}.print-table th,.print-table td{border:1px solid #94a3b8;padding:3px 4px;vertical-align:top;text-align:left}.print-table th{background:#f1f5f9}.print-table .who{width:110px;font-weight:600}.print-table .hrs{width:40px;text-align:right}.print-table tr.managers td{background:#f8fafc;font-size:.72rem}.print-table tr.open-row td{color:#64748b;font-style:italic;font-size:.72rem}.print-table .trainee{color:#475569}.print-dept{margin-bottom:16px;break-inside:avoid}.print-footer{margin-top:12px}@media print{@page{size:landscape;margin:10mm}.topbar,.no-print{display:none!important}body,:root{background:#fff}.print-root{padding:0}.page-break{break-before:page}.print-table tr{break-inside:avoid}}.page.schedule-page{max-width:none;padding:12px 16px}.week-header{margin-bottom:4px}.week-title{margin:0;font-size:1.2rem}.week-strip{display:flex;gap:6px;margin:6px 0 10px;flex-wrap:wrap}.week-pill{background:#fff;color:#334155;border:1px solid var(--border);padding:4px 10px;display:grid;text-align:center;line-height:1.2}.week-pill.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.week-pill.published{background:#ecfdf5}.week-pill.none{color:#94a3b8}.builder{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:12px;align-items:start}.builder-main{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}.grid-card,.manager-strip{overflow-x:auto}.builder-side{position:sticky;top:8px;max-height:calc(100vh - 16px);overflow-y:auto;display:grid;gap:12px}@media(max-width:1100px){.builder{grid-template-columns:1fr}.builder-side{position:static;max-height:none}}.manager-strip{padding:8px 12px}.manager-strip th{font-weight:600;font-size:.8rem}.manager-strip table{min-width:1000px}.manager-strip .add-name{color:#94a3b8}button.coverage{padding:2px 8px;font-size:.8rem;border-radius:4px}button.coverage.on{background:#dcfce7;color:#166534}button.coverage.gap{background:#fee2e2;color:#991b1b}button.coverage.keyed{background:#fef3c7;color:#92400e}.grid-card{padding:0}.week-grid{border-collapse:separate;border-spacing:0;min-width:1000px}.week-grid th,.week-grid td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:top;padding:4px}.week-grid thead th{position:sticky;top:0;background:#f8fafc;z-index:1;font-size:.85rem;min-width:120px}.week-grid th.closed,.week-grid td.closed{background:repeating-linear-gradient(45deg,#f8fafc,#f8fafc 6px,#f1f5f9 6px,#f1f5f9 12px)}.week-grid .pos-col{width:110px;min-width:110px;font-weight:600;font-size:.85rem;background:#fff;position:sticky;left:0;z-index:1}.week-grid .dept-row td{background:#f1f5f9;font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;border-left:4px solid}select.day-template{margin-top:4px;font-size:.75rem;padding:2px 4px;width:100%}td.cell{min-width:120px}td.cell.drop{background:#ecfdf5;box-shadow:inset 0 0 0 2px var(--accent)}.chip{display:grid;grid-template-columns:auto 1fr auto;gap:4px;align-items:center;width:100%;margin-bottom:3px;padding:3px 6px;background:#fff;color:#0f172a;border:1px solid #cbd5e1;border-left:4px solid;border-radius:5px;font-size:.78rem;text-align:left}.chip.open{background:#f8fafc;color:#64748b;border-style:dashed solid dashed solid}.chip.open .chip-name{font-style:italic}.chip.lvl-error{border-color:#ef4444;background:#fef2f2}.chip.lvl-warning{border-color:#f59e0b}.chip.selected{outline:2px solid var(--accent)}.chip.involved{outline:2px solid #7c3aed}.chip.dim{opacity:.45}.chip.drop{outline:2px dashed var(--accent);background:#ecfdf5}.chip-time{color:#475569;white-space:nowrap}.chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.chip-badges{white-space:nowrap;font-size:.72rem}.chip .peak{color:#ca8a04}button.add-slot{width:100%;padding:0;background:none;color:#94a3b8;border:1px dashed #cbd5e1;font-size:.9rem}button.add-slot:hover{color:var(--accent);border-color:var(--accent)}select.add-select{width:100%;font-size:.78rem;padding:2px}.slot-panel h3{margin:12px 0 4px;font-size:.9rem}.issue{margin:4px 0;padding:4px 8px;border-radius:4px;font-size:.85rem}.sev-error{color:#991b1b}.sev-warning{color:#92400e}.sev-info{color:#475569}p.issue.sev-error{background:#fee2e2}p.issue.sev-warning{background:#fef3c7}.candidates{gap:2px}button.candidate{width:100%;display:flex;gap:6px;align-items:center;background:#f0fdf4;color:#0f172a;border:1px solid #bbf7d0;padding:6px 8px;text-align:left}button.candidate.ineligible{background:#f8fafc;border-color:var(--border);color:#64748b}ul.reasons{margin:2px 0 6px 12px;padding:0;font-size:.75rem;list-style:"– "}.hours-sidebar h2{margin-bottom:0}.hours-dept{margin-top:10px}.hours-dept-name{font-weight:700;font-size:.8rem;text-transform:uppercase;border-left:4px solid;padding-left:6px}.hours-pos{margin:6px 0 0 4px}.hours-row{display:grid;grid-template-columns:96px 1fr 52px 30px;gap:6px;align-items:center;padding:2px 4px;border-radius:4px;cursor:grab;font-size:.8rem}.hours-row:hover{background:#f1f5f9}.hours-row.highlighted{background:#ede9fe}.hours-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hours-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.overflow{color:#b91c1c;font-weight:600}.bar{position:relative;display:flex;height:10px;background:#e2e8f0;border-radius:5px;overflow:visible}.bar-this,.bar-other{height:100%}.bar-this{border-radius:5px 0 0 5px}.bar-other{opacity:.4}.bar-max{position:absolute;top:-3px;width:2px;height:16px;background:#0f172a}.bar-warn{position:absolute;top:0;width:1px;height:10px;background:#f59e0b;opacity:.8}.status-none .bar-this,.status-none .bar-other,.status-under .bar-this,.status-under .bar-other{background:#94a3b8}.status-ok .bar-this,.status-ok .bar-other{background:#16a34a}.status-near .bar-this,.status-near .bar-other{background:#f59e0b}.status-over .bar-this,.status-over .bar-other{background:#dc2626}button.ot{padding:0 4px;font-size:.65rem;background:#e2e8f0;color:#64748b}button.ot.on{background:#fde68a;color:#92400e}.issues-panel .tab{background:#f1f5f9;padding:4px 8px;font-size:.8rem}.issues-panel .tab.active{background:#e2e8f0;font-weight:600}.issue-list{max-height:240px;overflow-y:auto;margin-top:8px}button.issue-link{text-align:left;color:inherit;font-size:.85rem}.fill-report{border-color:#a7f3d0;background:#f0fdf4}.chip.filled{cursor:grab}.chip.filled:active{cursor:grabbing}.hours-sidebar.drop-remove{outline:2px dashed #dc2626;background:#fef2f2}
