:root{--ink: #1d2733;--muted: #5f6b78;--line: #d5dbe2;--strong: #7c8a99;--paper: #ffffff;--page: #f3f5f8;--accent: #0f6e78;--day: #fff1c2;--day-ink: #7a5300;--night: #dfe4ff;--night-ink: #2b3a9e;--leave: #fde2e2;--leave-ink: #b42318;--short: #b42318;--extra: #2b5fd9;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--page)}*{box-sizing:border-box}body{margin:0;background:var(--page)}h1{font-size:20px;margin:0}h2{font-size:18px;margin:0 0 12px}h3{font-size:14px;margin:16px 0 6px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.brand{color:var(--accent);font-weight:800;letter-spacing:.04em}button,.button{font:inherit;font-size:14px;padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:6px}button:hover:not(:disabled),.button:hover{border-color:var(--strong)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.link{border:0;background:none;padding:0;color:var(--accent);text-decoration:underline;font-size:inherit}input,select,textarea{font:inherit;font-size:15px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-top:12px}.row.end{justify-content:flex-end}.card{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:20px}.error{color:var(--short)}.small{font-size:13px;color:var(--muted)}.start{max-width:560px;margin:48px auto;padding:0 16px;display:grid;gap:16px}.start h1{font-size:28px}.lede{margin:0;color:var(--muted)}.editor{padding:12px 16px 32px}.bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:12px}.period{color:var(--muted)}.actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px;position:sticky;left:0}.tool{flex-direction:column;gap:0;min-width:72px;padding:6px 12px}.tool b{font-size:16px}.tool small{font-size:11px;color:var(--muted)}.tool.on{outline:3px solid var(--accent);outline-offset:1px}.tool.m-A{background:var(--day)}.tool.m-P{background:var(--night)}.tool.m-RO,.tool.m-PTO,.tool.m-CME{background:var(--leave)}.hint{color:var(--muted);font-size:13px}.scroll{overflow:auto;max-height:calc(100vh - 210px);background:var(--paper);border:1px solid var(--line);border-radius:12px}table.grid{border-collapse:separate;border-spacing:0;font-size:12px;-webkit-user-select:none;user-select:none}.grid th,.grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;padding:0}.grid td{width:30px;min-width:30px;height:30px;cursor:pointer;touch-action:none}.grid td:hover{background:#eef6f7}.grid tbody th,.grid thead th:first-child{position:sticky;left:0;z-index:2;background:var(--paper);text-align:left;padding:0 10px;white-space:nowrap;min-width:130px}.grid tbody th small{color:var(--muted);font-weight:400}.grid thead th{position:sticky;background:#f8fafc;z-index:1;font-weight:600}.grid thead tr.months th{top:0;height:26px;font-size:13px}.grid thead tr.pps th{top:26px;height:22px;font-size:11px;font-weight:500;color:var(--muted)}.grid thead tr.nums th{top:48px;height:24px}.grid thead tr.dow th{top:72px;height:20px;color:var(--muted);font-weight:400;font-size:11px}.grid thead th:first-child{z-index:3;background:#f8fafc}.grid .wk{border-left:2px solid var(--line)}.grid .pp{border-left:3px solid var(--strong)}.grid th.hol{color:var(--leave-ink)}.grid th.hol i{font-style:normal;display:block;font-size:9px;line-height:8px}.grid tr.band th{background:#eef1f5;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em;height:24px}.grid td span{font-weight:700;font-size:12px}.grid td.m-A{background:var(--day);color:var(--day-ink)}.grid td.m-P{background:var(--night);color:var(--night-ink)}.grid td.m-RO,.grid td.m-PTO,.grid td.m-CME{background:var(--leave);color:var(--leave-ink)}.grid td.m-PTO span,.grid td.m-CME span{font-size:9px}.grid td.flag{box-shadow:inset 0 0 0 2px var(--short)}.grid tr.tot th{font-weight:600}.grid tr.tot td{cursor:default;font-weight:700;background:#f8fafc}.grid tr.tot td.short{color:var(--short);background:#fff1f0}.grid tr.tot td.extra{color:var(--extra)}.grid tr.tot td.full{color:var(--muted);font-weight:400}span.short{color:var(--short);font-weight:600}span.extra{color:var(--extra);font-weight:600}.notes{margin-top:16px;max-width:900px;display:grid;gap:8px}.notes textarea{width:100%}.sheet{position:fixed;inset:0;background:#0f192366;display:grid;place-items:start center;overflow:auto;padding:40px 16px;z-index:10}.card.wide{width:min(640px,100%)}.person{display:grid;grid-template-columns:70px 1fr 120px auto auto auto;gap:6px;margin-bottom:6px}.person.add{grid-template-columns:70px 1fr 120px auto;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}@media(max-width:560px){.person,.person.add{grid-template-columns:1fr 1fr}}.print-only{display:none}@media print{@page{size:letter landscape;margin:8mm}body,:root{background:#fff}.editor>*:not(.print-only){display:none!important}.print-only{display:block}.print-page{page-break-after:always;break-after:page}.print-page:last-child{page-break-after:auto;break-after:auto}.print-page h1{font-size:15px;margin:0}.print-page p{margin:2px 0;font-size:10px;color:#444}table.pgrid{border-collapse:collapse;width:100%;font-size:9px;margin-top:6px;table-layout:fixed}.pgrid th,.pgrid td{border:.5px solid #999;text-align:center;height:19px;padding:0}.pgrid col.who{width:110px}.pgrid thead th{font-weight:600}.pgrid thead small{font-weight:400;color:#666}.pgrid tbody th{text-align:left;padding:0 4px;white-space:nowrap;overflow:hidden}.pgrid tr.band th{background:#e9edf2;font-size:8px;text-transform:uppercase;letter-spacing:.05em}.pgrid tr.tot td,.pgrid tr.tot th{font-weight:700;background:#f4f6f8}.pgrid .wk{border-left:1px solid #555}.pgrid .pp{border-left:2px solid #000}.pgrid td.m-A{background:#fff1c2}.pgrid td.m-P{background:#dfe4ff}.pgrid td.m-RO,.pgrid td.m-PTO,.pgrid td.m-CME{background:#fde2e2;color:#b42318;font-size:7px}.pgrid td.m-CLS{background:#efe7fb;font-size:7px}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.steps{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.steps button{border-radius:999px}.steps button b{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#e7ecf1;font-size:12px}.steps button.on{border-color:var(--accent);color:var(--accent);font-weight:600}.steps button.on b{background:var(--accent);color:#fff}.card.soon{max-width:640px}.guide ol{padding-left:20px;line-height:1.55}.guide li{margin-bottom:6px}.locations .tools{position:static}table.cal{border-collapse:collapse;background:var(--paper);margin-bottom:14px;font-size:13px;width:100%;max-width:1200px;table-layout:fixed}.cal th,.cal td{border:1px solid var(--line);padding:4px 6px;height:34px;text-align:center}.cal thead th{background:#f8fafc;font-weight:400;color:var(--muted)}.cal thead th b{color:var(--ink)}.cal tbody th{text-align:left;width:130px;font-weight:600;white-space:nowrap}.cal tr.day th{background:#fffaf0}.cal tr.night th{background:#f4f6ff}.cal .out{background:#f3f5f8;color:#b8c0c9}.cal td.open .empty{color:var(--short);font-weight:700;font-size:12px}.cal .empty{color:var(--muted);font-size:11px;letter-spacing:.03em}.cal td.target{background:#e6f4f5;cursor:pointer;box-shadow:inset 0 0 0 2px var(--accent)}.cal .name{padding:3px 8px;font-size:13px;border-radius:6px}.cal .name.on{background:var(--accent);color:#fff;border-color:var(--accent)}.cal tr.unplaced th{color:var(--short);font-weight:500}.cal tr.unplaced .name{margin:1px;border-color:#f2b8b5}.cal tr.unplaced .name.night{background:var(--night)}.cal tr.unplaced .name.day{background:var(--day)}.share{max-width:520px}.share table{border-collapse:collapse;width:100%}.share th,.share td{padding:4px 8px;border-bottom:1px solid var(--line);text-align:center}.share tbody th{text-align:left}.cycles{display:grid;gap:8px;margin-bottom:4px}.cycle{flex-direction:row;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;color:var(--ink);font-size:15px}.cycle.on{border-color:var(--accent);background:#eef7f8}.cycle span{display:flex;flex-direction:column}.cycle small{color:var(--muted);font-size:12px}.cycle-strip{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.cyc{flex-direction:column;align-items:flex-start;gap:0;padding:6px 10px;border-width:2px}.cyc b{font-size:13px}.cyc small{font-size:11px;color:var(--muted)}.cyc.now{border-color:#3b82f6}.cyc.later{border-style:dashed}.cyc.on{background:var(--accent);border-color:var(--accent);color:#fff}.cyc.on small{color:#d8eef0}.cal tr.orient th{background:#f6f3fb}.cal tr.orient td{font-size:12px;color:var(--muted)}.tool.m-CLS{background:#efe7fb}.grid td.m-CLS{background:#efe7fb;color:#5b3a9e}.grid td.m-CLS span{font-size:9px}.cycle-strip{align-items:center}.cycle-strip .yr{padding:6px 10px;font-size:16px}.cycle-strip .year{font-size:16px;margin:0 2px}.card.excel{max-width:760px}.months{display:grid;gap:10px;margin:12px 0}.month{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:10px}.month>div{display:flex;flex-direction:column;gap:2px}.month small{color:var(--muted)}.month small.warn{color:#9a5b00}.month small.ok{color:#13795b;font-weight:600}
