:root{--bg:#f4f5f7;--panel:#fff;--panel2:#eef0f3;--fg:#1d2129;--muted:#5f6673;--line:#d6d9df;--accent:#2563eb;--accent-fg:#fff;--ok:#15803d;--warn:#b45309;--err:#b91c1c;--chip-bg:75% 88%;--chip-fg:60% 20%;--chip-bd:55% 65%;color:var(--fg);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}@media (prefers-color-scheme:dark){:root{--bg:#0f1115;--panel:#171a21;--panel2:#1f232c;--fg:#e6e8ec;--muted:#9aa1ad;--line:#2c313c;--accent:#3b82f6;--ok:#4ade80;--warn:#fbbf24;--err:#f87171;--chip-bg:40% 24%;--chip-fg:70% 90%;--chip-bd:40% 40%;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg)}button,select,input{font:inherit;color:inherit}button{background:var(--panel2);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:5px 10px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:600}button.danger{color:var(--err)}button.small{padding:2px 7px;font-size:12px}button.link{text-align:left;background:0 0;border:none;padding:0}select,input{background:var(--panel);border:1px solid var(--line);border-radius:6px;min-width:0;padding:4px 6px}label{color:var(--muted);font-size:12px}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}a{color:var(--accent)}h2{margin:0 0 6px;font-size:16px}.app{grid-template-rows:auto 1fr auto;min-height:100vh;display:grid}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px 14px;padding:8px 12px;display:flex}.brand{font-size:17px;font-weight:700}.tag{color:var(--muted);flex:1}.tabs{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:8px;display:flex}.toolbar .tabs{margin:0}.tabs button[aria-selected=true]{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.body{grid-template-columns:400px minmax(0,1fr);align-content:start;display:grid}.side{background:var(--panel);border-right:1px solid var(--line);align-self:start;max-height:calc(100vh - 50px);position:sticky;top:0;overflow-y:auto}.panel{padding:10px 12px}.section{margin-bottom:14px}.section h3,.box h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 6px;font-size:12px}.row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.grow{flex:1;min-width:0}.kind{width:110px}.grid3{grid-template-columns:repeat(3,1fr);gap:0 6px;display:grid}.span2{grid-column:span 2}.span3{grid-column:1/-1}.field{flex-direction:column;gap:2px;min-width:0;margin-bottom:6px;display:flex}.field input,.field select{width:100%;font-size:14px}.hint{color:var(--muted);margin:0 0 6px;font-size:12px;line-height:1.4}.err-text{color:var(--err)}.card{border:1px solid var(--line);border-radius:8px;margin-bottom:8px;padding:8px}.card.bad{border-color:var(--err)}summary{cursor:pointer;color:var(--muted);margin-bottom:4px;font-size:12px}.course{grid-template-columns:1fr 1fr 1.3fr 54px 28px;gap:4px;margin-bottom:6px;display:grid}.scroll{overflow-x:auto}.avail{touch-action:manipulation;-webkit-user-select:none;user-select:none;align-items:center;gap:2px;min-width:380px;display:grid}.avail-h{text-align:center;color:var(--muted);font-size:9px}.avail-d{color:var(--muted);font-size:11px}.avail-c{background:var(--panel2);border-radius:3px;height:18px;padding:0}.avail-c.on{background:var(--ok);border-color:var(--ok)}.main{flex-direction:column;gap:8px;min-width:0;padding:8px;display:flex}.box{background:var(--panel);border:1px solid var(--line);border-radius:8px;min-width:0;padding:10px}.box.warn{color:var(--warn);border-color:var(--warn)}.verdict{margin:0 0 8px;font-size:15px;font-weight:600}.box.verdict{margin:0}.verdict.ok{color:var(--ok)}.verdict.err{color:var(--err)}.issue{border-left:3px solid var(--err);margin:6px 0;padding-left:8px}.issue summary{color:var(--fg);font-size:13px}.issue ul,.notes ul{margin:4px 0;padding-left:20px;font-size:13px}.notes{background:var(--panel2);border-radius:6px;margin:8px 0;padding:6px 10px;font-size:13px}.stats{flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:13px;display:flex}.pill{background:var(--panel2);color:var(--muted);border-radius:10px;padding:1px 8px;font-size:12px}.load{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:4px 10px;display:grid}.loadrow{text-align:left;background:0 0;border-color:#0000;grid-template-columns:80px 1fr 90px;align-items:center;gap:8px;display:grid}.loadrow.active{border-color:var(--accent)}.loadrow .bar{background:var(--panel2);border-radius:5px;height:10px;overflow:hidden}.loadrow .bar span{background:hsl(var(--h) 65% 50%);height:100%;display:block}.loadrow .hrs{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.nm{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip,.ttcell.full{background:hsl(var(--h) var(--chip-bg));color:hsl(var(--h) var(--chip-fg));border:1px solid hsl(var(--h) var(--chip-bd))}.chip{text-align:left;cursor:grab;width:100%;margin-top:3px;padding:3px 6px;display:block}.chip.unfilled{border:1px dashed var(--err);color:var(--err);cursor:default;background:0 0}.chip.src,.ttcell.src{outline:2px solid var(--accent)}.chip.ok,.ttcell.ok{outline:2px solid var(--ok)}.chip.bad,.ttcell.bad{outline:2px solid var(--err)}.mover-status{color:var(--muted);min-height:26px;padding:4px 0 8px;font-size:12px}.mover-status.ok{color:var(--ok)}.mover-status.bad{color:var(--err)}.days{grid-template-columns:repeat(7,minmax(122px,1fr));gap:6px;padding-bottom:4px;display:grid;overflow-x:auto}.pg-head{text-align:center;color:var(--muted);padding:2px 0;font-size:12px;font-weight:600}.shiftcard{border:1px solid var(--line);background:var(--bg);border-radius:6px;margin-bottom:6px;padding:5px}.shiftcard .st{flex-direction:column;font-size:12px;display:flex}.shiftcard .st span{color:var(--muted)}.empty{text-align:center}.pgrid{grid-template-columns:34px repeat(7,minmax(80px,1fr));gap:0 2px;min-width:0;display:grid;overflow-x:auto}.pgrid-wrap{overflow-x:auto}.pgrid>.pg-hours{grid-row:2}.pg-hours span{color:var(--muted);text-align:right;padding-right:4px;font-size:10px;display:block}.pg-day{border-left:1px solid var(--line);min-width:80px;position:relative}.pg-hour{border-top:1px solid var(--line)}.pg-hour.off{background:repeating-linear-gradient(135deg, transparent 0 4px, var(--line) 4px 5px)}.pg-block{background:hsl(var(--h) var(--chip-bg));color:hsl(var(--h) var(--chip-fg));border:1px solid hsl(var(--h) var(--chip-bd));border-radius:4px;flex-direction:column;padding:2px 4px;font-size:11px;line-height:1.25;display:flex;position:absolute;left:2px;right:2px;overflow:hidden}.ttgrid{gap:3px;min-width:460px;display:grid}.tt-time{color:var(--muted);flex-direction:column;font-size:11px;display:flex}.ttcell{border:1px dashed var(--line);border-radius:5px;flex-direction:column;min-height:58px;padding:3px 5px;font-size:12px;line-height:1.25;display:flex}.ttcell.full{cursor:grab;border-style:solid}.ttcell span{opacity:.85;font-size:11px}.ttcell.off{background:repeating-linear-gradient(135deg, transparent 0 4px, var(--line) 4px 5px)}.export input[type=number]{width:60px}table.data{border-collapse:collapse;width:100%;font-size:13px}table.data td{border-bottom:1px solid var(--line);padding:4px 6px}.print-only{display:none}.foot{border-top:1px solid var(--line);margin:0;padding:8px 12px}@media (width<=800px){.body{grid-template-columns:minmax(0,1fr)}.side{border-right:none;border-bottom:1px solid var(--line);max-height:none;position:static}.tag{flex-basis:100%}.main{order:-1}.course{grid-template-columns:1fr 1fr}button{min-height:34px}select,input{min-height:34px;font-size:16px}.avail-c{height:22px}}@media print{:root{--bg:#fff;--panel:#fff;--fg:#000;--muted:#444;--line:#bbb;--chip-bg:75% 90%;--chip-fg:60% 15%;--chip-bd:55% 60%;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.no-print,.toolbar,.side,.foot{display:none!important}.body,.print-only{display:block}.box{border:none;padding:0}.print-page{break-before:page}.print-page:first-of-type{break-before:auto}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
