:root{--bg: #f6f7f9;--card: #fff;--text: #1b1f27;--muted: #6b7280;--line: #e3e6eb;--accent: #3b5bdb;--accent-text: #fff;--shift: #dbe4ff;--shift-text: #1c3aa9;--vac: #ffe8cc;--vac-text: #9c4a00;--hol: #d3f9d8;--hol-text: #1b6b2a;--danger: #c92a2a;--warn: #fff3bf}@media(prefers-color-scheme:dark){:root{--bg: #14161a;--card: #1d2026;--text: #e6e8ec;--muted: #9aa1ad;--line: #2c313a;--accent: #748ffc;--accent-text: #0f1220;--shift: #25306b;--shift-text: #dbe4ff;--vac: #5c3a12;--vac-text: #ffd8a8;--hol: #1d4a28;--hol-text: #b2f2bb;--danger: #ff8787;--warn: #4a4217}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.4 system-ui,sans-serif}h1,h2,h3{margin:0 0 .5rem}h1{font-size:1.15rem}h2{font-size:1.2rem}small,.muted{color:var(--muted)}.error{color:var(--danger)}.warn{background:var(--warn);padding:.5rem .75rem;border-radius:6px;cursor:pointer}button,input,select{font:inherit;color:inherit}button{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.35rem .7rem;cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}button.danger{color:var(--danger)}button.link{border:0;background:none;color:var(--accent);padding:0;margin-top:.25rem;text-align:left}button:disabled{opacity:.5;cursor:not-allowed}input,select{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.35rem .5rem;width:100%}label{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.75rem;font-weight:500}label.inline{flex-direction:row;align-items:center;margin:0;gap:.5rem}label.inline select{width:auto}label.check{flex-direction:row;font-weight:400;align-items:center;margin:0}label.check input{width:auto}fieldset{border:1px solid var(--line);border-radius:6px;margin:0 0 .75rem}.top{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}.top h1{margin:0}.top nav{display:flex;gap:.25rem;flex:1}.top nav button{border-color:transparent;background:none}.top nav button.active{background:var(--shift);color:var(--shift-text)}.badge{margin-left:.4rem;font-size:.75rem;background:var(--shift);color:var(--shift-text);padding:.1rem .4rem;border-radius:99px;font-style:normal}main{padding:1rem;max-width:1400px;margin:0 auto}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1rem}.card.narrow{max-width:480px}.card.inline{margin-top:1rem;max-width:520px}.login{max-width:360px;margin:15vh auto 0}.toolbar{display:flex;gap:1rem 1.5rem;align-items:center;flex-wrap:wrap}.toolbar h2{margin:0}.group{display:flex;align-items:center;gap:.4rem}.scroll{overflow-x:auto;margin-top:.5rem}table{border-collapse:collapse;width:100%;background:var(--card)}.roster th,.roster td{border:1px solid var(--line);padding:.35rem;vertical-align:top;min-width:112px}.roster thead th{position:sticky;top:0;background:var(--card);text-align:center}.roster th small{display:block;font-weight:400}.roster th.person{text-align:left;min-width:150px;position:sticky;left:0;background:var(--card);z-index:1}.roster th.today{color:var(--accent)}.roster tr.me th.person{box-shadow:inset 3px 0 var(--accent)}.roster td{height:48px}td.clickable{cursor:cell}td.clickable:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.chip{display:block;border-radius:6px;padding:.15rem .4rem;margin-bottom:.2rem;font-size:.85rem}.chip small{display:block;color:inherit;opacity:.75}span.chip{display:inline-block;margin-left:.4rem}.chip.shift{background:var(--shift);color:var(--shift-text)}.chip.vacation{background:var(--vac);color:var(--vac-text)}.chip.public_holiday{background:var(--hol);color:var(--hol-text)}.list{list-style:none;padding:0;margin:0;background:var(--card);border:1px solid var(--line);border-radius:10px}.list li{display:flex;gap:1rem;padding:.6rem .9rem;border-bottom:1px solid var(--line)}.list li:last-child{border:0}.list strong{min-width:8rem}.table th,.table td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--line)}.table tr.inactive{opacity:.5}.table select{width:auto}.actions{display:flex;gap:.4rem;align-items:center}.spacer{flex:1}.backdrop{position:fixed;inset:0;background:#0008;display:grid;place-items:center;padding:1rem;z-index:10}.modal{width:min(520px,100%);max-height:90vh;overflow:auto}.row{display:flex;gap:.75rem}.row label{flex:1}.preview{background:var(--bg);border-radius:6px;padding:.5rem .75rem;margin:0 0 .75rem}.quick{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:.5rem}.people{display:grid;grid-template-columns:1fr 1fr;gap:.25rem .75rem;max-height:180px;overflow:auto}a.button{display:inline-block;text-decoration:none;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:.35rem .7rem;color:var(--text)}a.button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}details{margin-bottom:.5rem}summary{cursor:pointer;margin-bottom:.4rem}.quick button.primary{background:var(--accent);color:var(--accent-text)}.chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.5rem 0}.tag{display:inline-flex;align-items:center;gap:.3rem;border:1px solid var(--line);border-radius:99px;padding:.15rem .65rem;background:var(--card);font-size:.85rem}.tag.on{background:var(--shift);color:var(--shift-text);border-color:transparent}.tag small{color:inherit;opacity:.7}.tag button{border:0;background:none;padding:0 .1rem;line-height:1;cursor:pointer}.tags{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;border:1px solid var(--line);border-radius:6px;padding:.2rem .35rem;min-width:12rem;background:var(--card)}.tags input{border:0;width:7rem;flex:1;padding:.15rem;background:transparent}.tags .tag.on button{color:inherit}ul.plain{list-style:none;padding:0;margin:.5rem 0 0}ul.plain li{display:flex;justify-content:space-between;align-items:center;padding:.3rem 0;border-bottom:1px solid var(--line)}:root{--gap: #ffe3e3;--gap-text: #a61e1e;--ok: #d3f9d8;--ok-text: #1b6b2a}@media(prefers-color-scheme:dark){:root{--gap: #5c1d1d;--gap-text: #ffc9c9;--ok: #1d4a28;--ok-text: #b2f2bb}}.chip.cov-gap{background:var(--gap);color:var(--gap-text);font-weight:600}.chip.cov-ok{background:var(--ok);color:var(--ok-text)}.roster tr.coverage th,.roster tr.coverage td{background:color-mix(in srgb,var(--gap) 22%,var(--card));border-bottom:2px solid var(--line)}.covbar{position:relative;height:6px;border-radius:3px;background:var(--gap-text);opacity:.85;margin-bottom:.35rem;overflow:hidden}.covbar i{position:absolute;top:0;bottom:0;background:var(--ok-text)}.cov-summary{margin:.25rem 0 .5rem;padding:.4rem .75rem;border-radius:6px;font-weight:600}.cov-summary.bad{background:var(--gap);color:var(--gap-text)}.cov-summary.ok{background:var(--ok);color:var(--ok-text)}.chip.clickable-chip{cursor:pointer}.chip.clickable-chip:hover{outline:2px solid var(--gap-text)}:root{--logo-accent: #c0392b}.brand{line-height:0;display:flex}.login-logo{display:flex;justify-content:center;margin:0 0 1.25rem;line-height:0}.login{max-width:400px}:root{--short: #fff1d6;--short-text: #8a5200}@media(prefers-color-scheme:dark){:root{--short: #5a4210;--short-text: #ffe0a3}}.chip.cov-short{background:var(--short);color:var(--short-text);font-weight:600}.covbar{background:var(--ok-text)}.covbar i{background:var(--short-text)}.covbar i.none{background:var(--gap-text)}.cov-rules{margin:-.25rem 0 .5rem}.cov-rules .link{display:inline}.chip.draft{background:transparent;color:var(--shift-text);border:1.5px dashed var(--shift-text);cursor:pointer;opacity:.9}.chip.draft small{display:inline;font-weight:700;margin-right:.35rem;text-transform:uppercase;font-size:.65rem;letter-spacing:.04em;opacity:.8}.chip.draft:hover{background:color-mix(in srgb,var(--shift) 45%,transparent)}.draft-bar{display:flex;flex-wrap:wrap;gap:.5rem .75rem;align-items:center;background:color-mix(in srgb,var(--shift) 40%,var(--card));border:1px dashed var(--shift-text);border-radius:6px;padding:.45rem .75rem;margin:.25rem 0 .5rem}.draft-bar label.check{margin:0}.hours-cell{white-space:nowrap}.hours-cell small{margin-right:.4rem}table.hours td{border:0;padding:.15rem .4rem}table.hours input[type=time]{width:8rem}.roster td{position:relative}.cell-add{font-size:.72rem;color:var(--muted);text-align:center;border:1px dashed transparent;border-radius:4px;opacity:0;transition:opacity .12s;padding:.1rem 0}td.clickable:hover .cell-add{opacity:1;border-color:var(--line)}.chip.altered{box-shadow:inset 3px 0 0 var(--short-text);padding-left:calc(.4rem + 2px)}.chip.draft.altered{border-left-width:1.5px}.legend{display:flex;align-items:center;gap:.5rem;margin:.1rem 0 .4rem;font-size:.8rem}.legend-chip{display:inline-block;margin:0;padding-top:0;padding-bottom:0}.dst-banner{background:var(--short);color:var(--short-text);border:1px solid var(--short-text);border-radius:8px;padding:.6rem .9rem;margin:.25rem 0 .6rem}.dst-banner.soon{background:transparent;border-style:dashed}.dst-banner ul{margin:.3rem 0 .4rem;padding-left:1.2rem}.dst-banner li{margin:.15rem 0}.dst-banner small{display:block;opacity:.85}.dst-next{margin-top:.5rem;padding-top:.4rem;border-top:1px dashed currentColor}.dst-banner .fwd,.dst-banner .back{text-transform:uppercase;letter-spacing:.02em}.dst-badge{display:inline-block;margin:.2rem .15rem 0 0;padding:0 .4rem;border-radius:99px;font-size:.72rem;font-weight:700;background:var(--short-text);color:var(--short)}.roster thead th.dst-col{box-shadow:inset 0 3px 0 var(--short-text);background:color-mix(in srgb,var(--short) 70%,var(--card))}.roster td.dst-col{background:color-mix(in srgb,var(--short) 40%,transparent)}.roster tr.coverage td.dst-col{background:color-mix(in srgb,var(--short) 40%,color-mix(in srgb,var(--gap) 22%,var(--card)))}.activity{list-style:none;margin:.5rem 0 1rem;padding:0;background:var(--card);border:1px solid var(--line);border-radius:10px}.activity>li{display:grid;grid-template-columns:9.5rem 1fr auto;gap:.75rem;padding:.6rem .9rem;border-bottom:1px solid var(--line);align-items:start}.activity>li:last-child{border:0}.activity>li.undone .what>div{text-decoration:line-through;opacity:.6}.activity .when small{display:block;color:var(--muted)}.activity details{margin:.2rem 0 0}.activity details ul{margin:.25rem 0;padding-left:1.1rem;color:var(--muted);font-size:.85rem}.undo-bar{position:fixed;left:50%;bottom:1rem;transform:translate(-50%);display:flex;gap:.75rem;align-items:center;background:var(--text);color:var(--bg);padding:.5rem .9rem;border-radius:99px;box-shadow:0 4px 18px #0006;z-index:20;max-width:90vw}.undo-bar button{background:transparent;color:inherit;border-color:currentColor}.undo-bar .link{border:0;color:inherit;font-size:1.1rem;padding:0 .3rem}@media(max-width:700px){.activity>li{grid-template-columns:1fr auto}.activity .when{grid-column:1 / -1}}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;border-radius:0;background:var(--card)}.seg button.on{background:var(--accent);color:var(--accent-text)}.wk{margin-top:.75rem;background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;min-width:640px}.wk-row{display:grid;grid-template-columns:3.4rem repeat(7,minmax(0,1fr))}.wk-head,.wk-allday{border-bottom:1px solid var(--line)}.wk-dayhead{text-align:center;font-weight:600;padding:.4rem 0}.wk-dayhead.today{color:var(--accent)}.wk-gutter{color:var(--muted);text-align:right;padding-right:.4rem}.wk-gutter small{color:var(--muted)}.wk-cell{padding:.2rem;border-left:1px solid var(--line);min-height:1.6rem}.wk-cell .chip{margin:0}.wk-cell .chip small{display:block}.wk-body{max-height:66vh;overflow-y:auto}.wk-hours>div{border-top:1px solid var(--line);text-align:right}.wk-hours>div:first-child{border-top:0}.wk-hours small{position:relative;top:-.55rem;background:var(--card);padding-left:.2rem}.wk-col{position:relative;border-left:1px solid var(--line);background-image:linear-gradient(to bottom,var(--line) 1px,transparent 1px);background-size:100% calc(100% / 24)}.wk-col.today{background-color:color-mix(in srgb,var(--accent) 6%,transparent)}.wk-block{position:absolute;box-sizing:border-box;padding:.15rem .3rem;border-radius:6px;font-size:.78rem;overflow:hidden;border:1px solid var(--card)}.wk-block.shift{background:var(--shift);color:var(--shift-text)}.wk-block.draft{background:transparent;color:var(--shift-text);border:1.5px dashed var(--shift-text)}.wk-block b{display:block}.wk-block span{display:block;opacity:.8}.wk-block small{font-weight:700;text-transform:uppercase;font-size:.62rem}.wk-block.altered{box-shadow:inset 3px 0 0 var(--short-text);padding-left:calc(.3rem + 2px)}.mo{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:.75rem}.mo-head{background:var(--card);text-align:center;padding:.3rem 0;font-weight:600;color:var(--muted);font-size:.8rem}.mo-cell{display:flex;flex-direction:column;gap:.15rem;align-items:stretch;text-align:left;border:0;border-radius:0;background:var(--card);min-height:6.2rem;padding:.3rem;cursor:pointer}.mo-cell:hover{background:color-mix(in srgb,var(--accent) 8%,var(--card))}.mo-cell.other{opacity:.5}.mo-cell.today .mo-num{background:var(--accent);color:var(--accent-text);border-radius:99px;padding:0 .4rem}.mo-num{font-size:.8rem;font-weight:600;align-self:flex-start}.mo-cell .chip{margin:0;font-size:.72rem;padding:.05rem .3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mo-cell .chip.draft small{display:none}@media(max-width:700px){.mo-cell{min-height:4.2rem}.mo-cell .chip{font-size:.62rem}section{overflow-x:auto}}.helplink{font-size:.8rem;margin-left:.35rem;text-decoration:none;opacity:.85}.helplink:hover{text-decoration:underline;opacity:1}.help{display:grid;grid-template-columns:16rem minmax(0,1fr);gap:1.25rem;align-items:start}.help-nav{position:sticky;top:.75rem}.help-nav h4{margin:1rem 0 .3rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.help-nav ul{list-style:none;margin:0;padding:0}.help-nav li button{width:100%;text-align:left;border:0;background:none;padding:.3rem .5rem;border-radius:6px}.help-nav li button.on{background:var(--shift);color:var(--shift-text);font-weight:600}.help-nav li button:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.help-body{padding:1.25rem 1.5rem;max-width:52rem}.help-body footer{margin-top:1.5rem;padding-top:.75rem;border-top:1px solid var(--line);font-size:.8rem}.md h1{font-size:1.5rem;margin:0 0 .75rem}.md h2{font-size:1.15rem;margin:1.5rem 0 .5rem}.md h3{font-size:1rem;margin:1.1rem 0 .4rem}.md p,.md li{line-height:1.55}.md ul,.md ol{padding-left:1.3rem}.md li{margin:.2rem 0}.md table{width:100%;border-collapse:collapse;margin:.75rem 0;font-size:.9rem}.md th,.md td{border:1px solid var(--line);padding:.4rem .6rem;text-align:left;vertical-align:top}.md th{background:var(--bg)}.md code{background:var(--bg);padding:.05rem .3rem;border-radius:4px;font-size:.9em}.md a{color:var(--accent)}@media(max-width:800px){.help{grid-template-columns:1fr}.help-nav{position:static}}.table.team th,.table.team td{padding:.35rem .4rem}.table.team select{max-width:14rem}.table.team .tags{min-width:8rem}.actions.wrap{flex-wrap:wrap;max-width:11rem}.table.team td:nth-child(2){max-width:11rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table.team .hours-cell{white-space:normal;max-width:9rem}.table.team .hours-cell button{margin-top:.2rem;display:block}.table.team select{max-width:11rem}.table.team .tags{min-width:7rem}.table.team .tags input{width:4rem}.actions.wrap{max-width:8.5rem}
