:root{--oc-bg: 228 38% 97%;--oc-card: 0 0% 100%;--oc-ink: 221 39% 11%;--oc-muted: 220 9% 46%;--oc-line: 220 13% 91%;--oc-primary: 221 79% 48%;--oc-primary-ink: 0 0% 100%;--oc-we: 220 79% 96%;--oc-u: 0 72% 51%;--oc-u-bg: 0 86% 94%;--oc-r: 26 90% 37%;--oc-r-bg: 45 93% 89%;--oc-p: 142 72% 29%;--oc-p-bg: 139 56% 91%;--oc-ok: 142 72% 29%;--oc-ok-bg: 135 47% 93%;--oc-warn: 26 90% 37%;--oc-warn-bg: 44 100% 92%;--oc-err: 0 74% 42%;--oc-err-bg: 0 84% 95%;--oc-radius: 12px;--oc-shadow: 0 1px 2px hsl(220 43% 11% / .06), 0 1px 3px hsl(220 43% 11% / .08);color-scheme:light}@media(prefers-color-scheme:dark){:root{--oc-bg: 220 23% 8%;--oc-card: 220 21% 11%;--oc-ink: 225 21% 93%;--oc-muted: 218 13% 65%;--oc-line: 219 17% 20%;--oc-primary: 222 100% 68%;--oc-primary-ink: 226 49% 8%;--oc-we: 218 31% 15%;--oc-u: 0 91% 71%;--oc-u-bg: 356 34% 17%;--oc-r: 43 96% 56%;--oc-r-bg: 43 49% 15%;--oc-p: 142 69% 58%;--oc-p-bg: 146 39% 14%;--oc-ok: 142 69% 58%;--oc-ok-bg: 146 39% 14%;--oc-warn: 43 96% 56%;--oc-warn-bg: 43 49% 15%;--oc-err: 0 91% 71%;--oc-err-bg: 356 34% 17%;--oc-shadow: none;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:hsl(var(--oc-bg));color:hsl(var(--oc-ink))}body{font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}a{color:hsl(var(--oc-primary))}h1{font-size:1.4rem;margin:0;font-weight:700}h3{font-size:1rem;margin:18px 0 8px;text-transform:capitalize;font-weight:700}:where(.app,.login,.center,.sheet) p{margin:.6em 0}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{width:100%;padding:10px 12px;border:1px solid hsl(var(--oc-line));border-radius:10px;background:hsl(var(--oc-card))}input:focus,select:focus,textarea:focus{outline:2px solid hsl(var(--oc-primary));outline-offset:0;border-color:transparent}input[type=checkbox],input[type=radio]{width:auto;accent-color:hsl(var(--oc-primary))}.app{max-width:760px;margin:0 auto;padding-bottom:96px}.app.admin{max-width:1180px}.top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;background:hsl(var(--oc-bg));border-bottom:1px solid hsl(var(--oc-line))}.brand{font-weight:700}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.tabs{display:flex;gap:4px;padding:8px 16px 0;border-bottom:1px solid hsl(var(--oc-line));background:hsl(var(--oc-bg))}.admin .tabs{position:sticky;top:0;z-index:19}.tabs.scroll{overflow-x:auto}.tab{border:0;background:none;padding:10px 12px;border-bottom:3px solid transparent;color:hsl(var(--oc-muted));cursor:pointer;white-space:nowrap;font-weight:600}.tab.on{color:hsl(var(--oc-ink));border-bottom-color:hsl(var(--oc-primary))}.badge{display:inline-block;margin-left:6px;min-width:20px;padding:0 6px;border-radius:10px;background:hsl(var(--oc-u));color:#fff;font-size:12px;line-height:20px;text-align:center}.content,.content.wide{padding:16px}.card{background:hsl(var(--oc-card));border:1px solid hsl(var(--oc-line));border-radius:var(--oc-radius);padding:14px 16px;box-shadow:var(--oc-shadow);margin-bottom:14px}.stack{display:flex;flex-direction:column;gap:12px}.stack.tight{gap:6px}.row{display:flex;align-items:center}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.wrap{flex-wrap:wrap}.gap{gap:8px}.center{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;padding:24px;text-align:center;gap:12px}.muted{color:hsl(var(--oc-muted))}.small{font-size:14px}.tiny{font-size:11px}.nowrap{white-space:nowrap}.title{font-weight:700;font-size:1.05rem}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:hsl(var(--oc-muted));font-weight:600}.warn{color:hsl(var(--oc-warn))}.err{color:hsl(var(--oc-err))}.okc{color:hsl(var(--oc-ok))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:10px;border:1px solid hsl(var(--oc-line));background:hsl(var(--oc-card));color:hsl(var(--oc-ink));cursor:pointer;text-decoration:none;font-weight:600;min-height:42px}.btn:hover{border-color:hsl(var(--oc-primary))}.btn.primary{background:hsl(var(--oc-primary));color:hsl(var(--oc-primary-ink));border-color:hsl(var(--oc-primary))}.btn.ghost{background:transparent}.btn.danger{color:hsl(var(--oc-err));border-color:hsl(var(--oc-err));background:transparent}.btn.link{border:0;background:none;color:hsl(var(--oc-primary));padding:6px;min-height:0}.btn.small{padding:6px 10px;min-height:34px;font-size:14px}.btn:disabled{opacity:.5;cursor:default}.seg{display:inline-flex;border:1px solid hsl(var(--oc-line));border-radius:10px;overflow:hidden}.seg button{border:0;background:hsl(var(--oc-card));padding:6px 10px;cursor:pointer;font-size:13px;font-weight:700;color:hsl(var(--oc-muted))}.seg button.on{background:hsl(var(--oc-primary));color:hsl(var(--oc-primary-ink))}.field{display:flex;flex-direction:column;gap:6px;font-size:14px}.field>span{font-weight:600}.check,.radio,.toggle{display:flex;align-items:center;gap:10px;cursor:pointer}.radio.indent{padding-left:26px}fieldset.radios{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}fieldset.radios legend{font-weight:700;margin-bottom:6px}.alert{padding:10px 12px;border-radius:10px;margin:0 0 12px;font-size:14px}.alert.info{background:hsl(var(--oc-we))}.alert.ok{background:hsl(var(--oc-ok-bg));color:hsl(var(--oc-ok))}.alert.warn{background:hsl(var(--oc-warn-bg));color:hsl(var(--oc-warn))}.alert.error{background:hsl(var(--oc-err-bg));color:hsl(var(--oc-err))}.pill{padding:6px 10px;border-radius:999px;font-size:13px;font-weight:600}.pill.ok{background:hsl(var(--oc-ok-bg));color:hsl(var(--oc-ok))}.pill.closed{background:hsl(var(--oc-err-bg));color:hsl(var(--oc-err))}.tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;background:hsl(var(--oc-we));font-size:11px;font-weight:600;vertical-align:1px}.tag.hol{background:hsl(var(--oc-r-bg));color:hsl(var(--oc-r))}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip{display:inline-block;padding:4px 10px;border-radius:999px;background:hsl(var(--oc-we));font-size:13px;margin:0 4px 4px 0}.chip.good{background:hsl(var(--oc-ok-bg));color:hsl(var(--oc-ok))}.chip.bad{background:hsl(var(--oc-warn-bg));color:hsl(var(--oc-warn))}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login .card{width:100%;max-width:420px;padding:22px}.code-input{font-size:24px;letter-spacing:6px;text-align:center}.brushes{position:sticky;top:0;z-index:10;background:hsl(var(--oc-bg));margin:0 -16px;padding:8px 16px;border-bottom:1px solid hsl(var(--oc-line))}.brushes p{margin:0 0 6px}.brush-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.brush{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border-radius:10px;border:2px solid hsl(var(--oc-line));background:hsl(var(--oc-card));cursor:pointer;font-size:13px;font-weight:600;line-height:1.15;text-align:center}.brush .swatch{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:8px;font-weight:800}.b-U .swatch{background:hsl(var(--oc-u-bg));color:hsl(var(--oc-u))}.b-R .swatch{background:hsl(var(--oc-r-bg));color:hsl(var(--oc-r))}.b-P .swatch{background:hsl(var(--oc-p-bg));color:hsl(var(--oc-p))}.b-clear .swatch{background:hsl(var(--oc-card));border:1px dashed hsl(var(--oc-muted))}.brush.on{border-color:hsl(var(--oc-primary));box-shadow:0 0 0 2px hsl(var(--oc-primary) / .25)}.brush-help{margin:6px 0 0}.month{margin-bottom:6px}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal .wd{text-align:center;font-size:12px;color:hsl(var(--oc-muted));font-weight:600;padding:2px 0}.cal .wd.we{color:hsl(var(--oc-primary))}.day{position:relative;aspect-ratio:1 / 1;min-height:40px;border-radius:10px;border:1px solid hsl(var(--oc-line));background:hsl(var(--oc-card));display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;padding:0;font-weight:600}.day.we{background:hsl(var(--oc-we))}.day .num{font-size:15px}.day .mark{font-size:12px;font-weight:800;line-height:1}.day .dot{position:absolute;top:5px;right:5px;width:6px;height:6px;border-radius:3px;background:hsl(var(--oc-r))}.day.s-U{background:hsl(var(--oc-u-bg));border-color:hsl(var(--oc-u));color:hsl(var(--oc-u))}.day.s-R{background:hsl(var(--oc-r-bg));border-color:hsl(var(--oc-r));color:hsl(var(--oc-r))}.day.s-P{background:hsl(var(--oc-p-bg));border-color:hsl(var(--oc-p));color:hsl(var(--oc-p))}.day:disabled{cursor:default;opacity:.85}.day.preview{box-shadow:inset 0 0 0 2px hsl(var(--oc-primary) / .6)}.cal.with-handles{grid-template-columns:24px repeat(7,minmax(0,1fr)) 24px}.cal .hd{text-align:center;font-size:10px;font-weight:700;color:hsl(var(--oc-muted));padding:4px 0 2px;white-space:nowrap;overflow:visible}.cal .hd.we{color:hsl(var(--oc-primary))}.handle{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;min-height:40px;border-radius:8px;-webkit-tap-highlight-color:transparent;border:1px dashed hsl(var(--oc-muted) / .55);background:transparent;color:hsl(var(--oc-muted));font-size:11px;font-weight:700;line-height:1.05;cursor:pointer}.handle .chev{font-size:13px}.handle.wkend{background:hsl(var(--oc-we));border-color:hsl(var(--oc-primary) / .45);color:hsl(var(--oc-primary));font-size:14px}@media(hover:hover){.handle:hover:not(:disabled){border-style:solid;border-color:hsl(var(--oc-primary))}}.handle:focus-visible{outline:2px solid hsl(var(--oc-primary));outline-offset:1px}.handle.s-U{background:hsl(var(--oc-u-bg));border:1px solid hsl(var(--oc-u));color:hsl(var(--oc-u))}.handle.s-R{background:hsl(var(--oc-r-bg));border:1px solid hsl(var(--oc-r));color:hsl(var(--oc-r))}.handle.s-P{background:hsl(var(--oc-p-bg));border:1px solid hsl(var(--oc-p));color:hsl(var(--oc-p))}.handle:disabled{cursor:default;opacity:.6}.savebar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px max(16px,calc((100vw - 760px)/2 + 16px));background:hsl(var(--oc-card));border-top:1px solid hsl(var(--oc-line));box-shadow:0 -4px 14px #0000000f}.days{list-style:none;margin:0;padding:0;background:hsl(var(--oc-card));border:1px solid hsl(var(--oc-line));border-radius:var(--oc-radius);overflow:hidden}.dayrow{display:grid;grid-template-columns:112px 1fr;gap:10px;padding:10px 14px;border-top:1px solid hsl(var(--oc-line))}.dayrow:first-child{border-top:0}.dayrow.we{background:hsl(var(--oc-we))}.dayrow.past{opacity:.55}.dayrow.today{box-shadow:inset 4px 0 hsl(var(--oc-primary))}.dayrow .d{font-weight:600;font-size:14px}.dayrow .who{font-size:15px;display:flex;flex-direction:column;gap:2px}.dayrow .who .lbl{display:inline-block;min-width:86px;color:hsl(var(--oc-muted));font-size:13px}.dayrow .who .me{font-weight:800;color:hsl(var(--oc-primary))}.dayrow.mine .d{color:hsl(var(--oc-primary))}.l-WD{background:hsl(var(--oc-we))}.l-WE1{background:hsl(var(--oc-p-bg))}.l-WE2{background:hsl(var(--oc-r-bg))}.req{padding:10px 0;border-top:1px solid hsl(var(--oc-line));display:flex;flex-direction:column;gap:6px}.req:first-of-type{border-top:0}.plain{list-style:none;margin:8px 0 0;padding:0}.plain li{padding:8px 0;border-top:1px solid hsl(var(--oc-line))}.plain li:first-child{border-top:0}.st{font-size:12px;font-weight:700;padding:2px 8px;border-radius:6px;background:hsl(var(--oc-we));white-space:nowrap}.st-Accepted{background:hsl(var(--oc-ok-bg));color:hsl(var(--oc-ok))}.st-Declined,.st-Failed{background:hsl(var(--oc-err-bg));color:hsl(var(--oc-err))}.st-Pending{background:hsl(var(--oc-warn-bg));color:hsl(var(--oc-warn))}.overlay{position:fixed;inset:0;z-index:50;background:#10131973;display:flex;align-items:flex-end;justify-content:center;padding:0}.sheet{width:100%;max-width:560px;max-height:92vh;overflow:auto;background:hsl(var(--oc-card));border-radius:16px 16px 0 0;padding:18px}@media(min-width:700px){.overlay{align-items:center;padding:24px}.sheet{border-radius:16px}}.spinner{width:34px;height:34px;border-radius:50%;border:4px solid hsl(var(--oc-line));border-top-color:hsl(var(--oc-primary));animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:60;padding:10px 16px;border-radius:10px;box-shadow:var(--oc-shadow);max-width:92vw;font-weight:600}.toast.ok{background:hsl(var(--oc-ok-bg));color:hsl(var(--oc-ok));border:1px solid hsl(var(--oc-ok))}.toast.error{background:hsl(var(--oc-err-bg));color:hsl(var(--oc-err));border:1px solid hsl(var(--oc-err))}.stat{text-align:right;font-size:1.5rem}.stat span{display:block;font-size:12px;color:hsl(var(--oc-muted))}.grid2,.grid3{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:700px){.grid2{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr 1fr 1fr}}.tablewrap{overflow-x:auto;background:hsl(var(--oc-card));border:1px solid hsl(var(--oc-line));border-radius:var(--oc-radius)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{padding:8px 10px;border-bottom:1px solid hsl(var(--oc-line));text-align:left;vertical-align:middle}.table th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:hsl(var(--oc-muted));background:hsl(var(--oc-bg));position:sticky;top:0}.table tr.we td{background:hsl(var(--oc-we))}.table tr.inactive{opacity:.55}.table td.bad{background:hsl(var(--oc-warn-bg))}.table tr.lvl-3 td:last-child{background:hsl(var(--oc-err-bg));color:hsl(var(--oc-err))}.table tr.lvl-2 td:last-child{background:hsl(var(--oc-warn-bg));color:hsl(var(--oc-warn))}.table tr.lvl-1 td:last-child{color:hsl(var(--oc-ok))}.table .actions{white-space:nowrap;display:flex;gap:6px;flex-wrap:wrap}.roster-table select{padding:6px 8px;min-width:150px}.roster-table select.empty{border-color:hsl(var(--oc-u));background:hsl(var(--oc-u-bg))}.cell{display:inline-flex;gap:4px;align-items:center}.lock{border:0;background:none;cursor:pointer;font-size:15px;opacity:.45;padding:4px}.lock.on{opacity:1}.grid-av{border-collapse:separate;border-spacing:0;font-size:12px}.grid-av th,.grid-av td{min-width:26px;height:28px;text-align:center;border-bottom:1px solid hsl(var(--oc-line));border-right:1px solid hsl(var(--oc-line));padding:2px}.grid-av thead th{font-weight:600;color:hsl(var(--oc-muted));background:hsl(var(--oc-card))}.grid-av .sticky{position:sticky;left:0;background:hsl(var(--oc-card));text-align:left;padding:2px 10px;white-space:nowrap;min-width:150px;z-index:1}.grid-av .we{background:hsl(var(--oc-we))}.grid-av td.s-U{background:hsl(var(--oc-u-bg));color:hsl(var(--oc-u));font-weight:800}.grid-av td.s-R{background:hsl(var(--oc-r-bg));color:hsl(var(--oc-r));font-weight:800}.grid-av td.s-P{background:hsl(var(--oc-p-bg));color:hsl(var(--oc-p));font-weight:800}@media(max-width:420px){.dayrow{grid-template-columns:92px 1fr}.brush{font-size:12px}}.mail-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start}.mail-grid>.card{margin-bottom:0}@media(min-width:1000px){.mail-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.mail-frame{width:100%;border:1px solid hsl(var(--oc-line));border-radius:10px;background:#fff}.savebar{position:sticky;bottom:0;padding:10px 0;background:hsl(var(--oc-bg));border-top:1px solid hsl(var(--oc-line));z-index:5}.danger-zone{border-color:hsl(var(--oc-err) / .45)}.danger-zone p.tight,.danger-zone ul.tight{margin:4px 0}.danger-zone ul.tight{padding-left:20px}
