:root{--bg:#f6f7f9;--card:#fff;--ink:#1d2433;--mute:#6b7385;--line:#e3e6ec;--accent:#0b6e4f;--today:#fff4c2;--sat:#e8f1ff;--sun:#ffeaea}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 "Hiragino Sans","Yu Gothic UI","Meiryo",system-ui,sans-serif;-webkit-text-size-adjust:100%}
header{position:sticky;top:0;z-index:20;background:var(--card);border-bottom:1px solid var(--line);padding:8px 12px 0}
.top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
h1{font-size:16px;margin:0;flex:1}
.mon{display:flex;align-items:center;gap:4px}
.mon button,.mon select{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;font:inherit}
.mon button:disabled{opacity:.3}
nav{display:flex;gap:2px;margin-top:6px}
nav button{flex:1;border:0;background:none;padding:10px 4px;font:inherit;font-weight:600;color:var(--mute);border-bottom:3px solid transparent}
nav button.on{color:var(--accent);border-color:var(--accent)}
main{max-width:900px;margin:0 auto;padding:12px}
main.wide{max-width:none}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px}
.card h2{font-size:13px;color:var(--mute);margin:0 0 6px;font-weight:600}
select.big{width:100%;font:inherit;font-size:17px;padding:10px;border-radius:10px;border:1px solid var(--line);background:#fff}
.chip{display:inline-block;border-radius:8px;padding:2px 9px;font-weight:700;white-space:nowrap}
.chip.xl{font-size:20px;padding:6px 14px;border-radius:10px}
.tag{display:inline-block;font-size:11px;background:#eef0f4;color:var(--mute);border-radius:6px;padding:0 6px;margin-left:4px;vertical-align:middle}
.leave{color:var(--mute);font-weight:600}
.row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line)}
.row:last-child{border-bottom:0}
.row .d{width:58px;font-weight:700;flex:none}
.row .d small{color:var(--mute);font-weight:400}
.row.sat{background:var(--sat)}.row.sun{background:var(--sun)}.row.today{background:var(--today);outline:2px solid #e6b800;outline-offset:-2px}
.row .w{flex:1;min-width:0}
.row .co{display:block;font-size:12px;color:var(--mute)}
.sum{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.stat{font-size:13px;color:var(--mute)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips button{border:2px solid transparent;border-radius:10px;padding:6px 10px;font:inherit;font-weight:700;cursor:pointer}
.chips button.off{opacity:.35}
.chips button.sel{border-color:var(--ink)}
.names{display:flex;gap:6px;flex-wrap:wrap}
.names span{background:#eef0f4;border-radius:8px;padding:2px 9px}
.tw{overflow:auto;max-height:calc(100vh - 150px);border:1px solid var(--line);border-radius:12px;background:#fff}
table{border-collapse:separate;border-spacing:0;font-size:13px}
th,td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:2px 4px;text-align:center;min-width:38px;height:28px;white-space:nowrap}
thead th{position:sticky;top:0;background:#fff;z-index:3;font-size:12px}
th.dt{position:sticky;left:0;z-index:4;background:#fff;min-width:56px;text-align:left}
tbody th.dt{z-index:2}
th.me{background:#ffe08a}
td.sat,th.sat{background:var(--sat)}td.sun,th.sun{background:var(--sun)}
tr.today th.dt,tr.today td.e{box-shadow:inset 0 0 0 2px #e6b800}
td.dim .chip{opacity:.15}
td .chip{padding:0 6px}
td small{display:block;font-size:10px;color:var(--mute);line-height:1}
.gh{background:#f0f2f6;font-weight:700}
.msg{color:var(--mute);text-align:center;padding:24px}
.foot{color:var(--mute);font-size:12px;margin:8px 2px}
@media print{header,.chips,.mon{display:none}.tw{max-height:none;overflow:visible}body{font-size:10px}}
