:root{color-scheme:light;--bg:#FAFBF0;--panel:#FFFFFF;--panel-sub:#F3F4E9;--border:#DCDDCE;--text:#141414;--dim:#75796C;--navy:#0E3854;--amber:#B97A14;--red:#C2402E;--green:#2F7D4E;--blue:var(--navy);--blue-dark:var(--navy);--card:var(--panel);--muted:var(--dim);--ok:var(--green);--warn:var(--amber);--bad:var(--red)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Hiragino Sans,Noto Sans JP,sans-serif;background:var(--bg);color:var(--text);font-size:14px}header.appbar{background:var(--card);border-bottom:1px solid var(--border);padding:12px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;position:-webkit-sticky;position:sticky;top:0;z-index:5}header.appbar h1{font-size:16px;margin:0;color:var(--blue-dark)}.weeknav{display:flex;align-items:center;gap:6px}.weeknav button{border:1px solid var(--border);background:#fff;border-radius:6px;padding:4px 10px;cursor:pointer;font-size:14px}.weeknav button:hover{background:var(--panel-sub)}.weeklabel{font-weight:600;min-width:180px;text-align:center}.filters{display:flex;gap:6px;flex-wrap:wrap}.filters button{border:1px solid var(--border);background:#fff;border-radius:14px;padding:3px 12px;cursor:pointer;font-size:13px;color:var(--muted)}.filters button.active{background:var(--blue);border-color:var(--blue);color:#fff}.draftbar{display:flex;align-items:center;gap:8px;margin-left:auto}.draftbadge{font-size:12px;font-weight:600;padding:3px 10px;border-radius:12px}.draftbadge.dirty{background:#fdf1dc;color:#9a6a10;border:1px solid #ecd3a2}.draftbadge.clean{background:#e9f5ee;color:#1e6e42;border:1px solid #bfe0cc}.btn,.draftbar button{border:none;border-radius:6px;padding:6px 14px;cursor:pointer;font-size:13px;font-weight:600}.btn-approve{background:var(--ok);color:#fff}.btn-approve:disabled{background:#a9c9b6;cursor:default}.btn-plain{background:#fff;border:1px solid var(--border);color:var(--muted)}.btn-plain:disabled{opacity:.4;cursor:default}.btn-primary{background:var(--blue);color:#fff}.statusline{font-size:12px;color:var(--muted);width:100%}.statusline.err{color:var(--bad);font-weight:600}.availbar{width:100%;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-top:7px;margin-top:2px;border-top:1px dashed var(--border)}.availbar .atitle{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.02em;margin-right:2px;white-space:nowrap}.availbar .atoggle{border:1px solid var(--border);background:#fff;border-radius:10px;padding:1px 8px;cursor:pointer;font-size:11px;color:var(--muted);margin-left:auto}.apill{display:inline-flex;align-items:baseline;gap:5px;font-size:12px;border-radius:12px;padding:2px 9px;border:1px solid;white-space:nowrap;cursor:default}.apill b{font-size:12.5px}.apill .used{font-size:10.5px;opacity:.75}.apill.g{background:#e9f5ee;border-color:#bfe0cc;color:#1e6e42}.apill.a{background:#fdf1dc;border-color:#ecd3a2;color:#9a6a10}.apill.r{background:#fdeaea;border-color:#eab8b3;color:#a93226;font-weight:600}.apill.n{background:var(--panel-sub);border-color:#dfe3e7;color:#5a646e}main.planner{padding:14px 16px 40px;overflow-x:auto}table.grid{border-collapse:separate;border-spacing:0;width:100%;min-width:1100px}.grid td,.grid th{border:1px solid var(--border);background:var(--card);padding:6px;vertical-align:top}.grid th{font-size:12px;font-weight:600;color:var(--muted);padding:8px 6px}.grid th.today{color:var(--blue)}.grid td.rowhead{min-width:150px;font-size:12.5px;font-weight:600;background:var(--panel-sub)}.grid td.rowhead .badge{display:inline-block;margin-top:3px;font-size:10.5px;font-weight:500;color:#fff;border-radius:8px;padding:1px 7px}.grid td.empty-slot{background:var(--panel-sub)}.grid td.cell{min-width:150px}.count{font-size:11px;margin-bottom:4px;font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:4px}.count.ok{color:var(--ok)}.count.low{color:var(--warn)}.count.crit{color:var(--bad)}.closebtn2{border:1px solid var(--border);background:#fff;border-radius:5px;padding:0 5px;cursor:pointer;font-size:10px;color:var(--muted);line-height:16px}.closebtn2:hover{color:var(--bad);border-color:var(--bad)}td.closedcell{background:repeating-linear-gradient(45deg,#F0F1E6,#F0F1E6 8px,#E7E8DC 0,#E7E8DC 16px);text-align:center}.closedhead{font-size:12px;font-weight:700;color:var(--muted);margin:6px 0 8px;letter-spacing:.06em}.closedwarn{font-size:11px;color:var(--bad);font-weight:600;margin-bottom:4px;text-align:left}.closebtn{border:1px solid var(--border);background:#fff;border-radius:6px;padding:3px 10px;cursor:pointer;font-size:11px;color:var(--muted);margin:6px 0}.closebtn:hover{background:var(--panel-sub)}.pos{display:flex;align-items:flex-start;gap:4px;margin:2px 0}.pos .plabel{flex:0 0 30px;font-size:10px;font-weight:700;color:var(--dim);padding-top:4px;letter-spacing:.02em;line-height:1.3;white-space:nowrap;cursor:default}.pos .plabel.req{color:var(--bad)}.pos .plabel.pref{color:var(--warn)}.pos .pbody{flex:1 1;min-width:0}.chip{display:flex;align-items:center;justify-content:space-between;gap:4px;margin:1px 0;padding:2px 6px;border-radius:6px;font-size:12px;border:1px solid var(--ok);background:#EAF3ED}.chip.draftnew{border:1px dashed var(--amber);background:#F7EFDD}.chip.absent{border:1px solid var(--border);background:var(--panel-sub);color:var(--muted)}.chip .x{color:var(--muted);cursor:pointer;padding:0 2px;font-weight:700}.chip .x:hover{color:var(--bad)}select.adder{width:100%;border:1px dashed var(--border);border-radius:6px;background:#fff;color:var(--muted);font-size:11.5px;padding:2px}select.adder:disabled{opacity:.5}.legend{margin-top:10px;font-size:12px;color:var(--muted);display:flex;gap:16px;flex-wrap:wrap}.legend span{display:inline-flex;align-items:center;gap:5px}.dot{width:10px;height:10px;border-radius:3px;display:inline-block}.loading{padding:40px;text-align:center;color:var(--muted)}.snappanel{margin-top:26px;border-top:2px solid var(--border);padding-top:14px}.snaphead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.snaphead h2{font-size:14px;margin:0 auto 0 0;color:var(--blue-dark)}.snapempty{font-size:12.5px;color:var(--muted)}.snaplist{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:10px;gap:10px;margin-top:12px}.snapcard{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:5px}.snaptop{display:flex;justify-content:space-between;align-items:center;gap:8px}.snapname{font-weight:700;font-size:13px;overflow-wrap:anywhere}.snapbadge{font-size:11px;font-weight:700;border-radius:10px;padding:1px 8px;white-space:nowrap}.snapbadge.ok{background:#e9f5ee;color:#1e6e42;border:1px solid #bfe0cc}.snapbadge.bad{background:#fdf1dc;color:#9a6a10;border:1px solid #ecd3a2}.snapdays,.snapmeta{font-size:11.5px;color:var(--muted)}.snapacts{display:flex;gap:8px;margin-top:3px;flex-wrap:wrap}.snapcard{cursor:pointer}.snapcard:hover{border-color:#C6C8B8}.snapcard.sel{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}.snappreview{margin-top:16px;overflow-x:auto}.sphead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}.sphead h3{font-size:13.5px;margin:0 auto 0 0;color:var(--blue-dark)}.sphead .spmeta{font-weight:500}.spdiff,.sphead .spmeta{font-size:12px;color:var(--muted)}.spdiff .spadd{color:var(--blue)}.spdiff .sprem{color:var(--bad)}.chip.added{border:2px solid var(--navy);background:#E9EFF4;font-weight:600}.chip.removed{border:1px dashed var(--bad);background:#fdf3f2;color:var(--muted);text-decoration:line-through}.modal-bg{position:fixed;inset:0;background:rgba(18,28,40,.45);z-index:50;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:#fff;border-radius:10px;max-width:560px;width:100%;max-height:80vh;overflow:auto;padding:18px 22px;box-shadow:0 10px 40px rgba(0,0,0,.25)}.modal h2{font-size:15px;color:var(--bad);margin:0 0 4px}.modal .msub{font-size:12px;color:var(--muted);margin:0 0 12px}.modal ul{margin:0 0 14px;padding-left:4px;list-style:none;font-size:13px}.modal li{margin:6px 0;padding:7px 10px;background:#fdf3f2;border:1px solid #eccfcb;border-radius:7px}.modal li b{color:var(--bad)}.centerbox{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:26px 28px;max-width:400px;width:100%}.card h1{font-size:18px;color:var(--blue-dark);margin:0 0 4px}.card p.sub{font-size:13px;color:var(--muted);margin:0 0 18px}.card input[type=email]{width:100%;border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;margin-bottom:12px}.card button[type=submit]{width:100%;padding:10px}.notice{font-size:13px;margin-top:12px}.notice.ok{color:var(--ok)}.notice.err{color:var(--bad)}.mylist{max-width:640px;margin:0 auto;padding:16px}.mycard{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin:10px 0;display:flex;align-items:center;justify-content:space-between;gap:10px}.mycard.absent{opacity:.6}.mycard .d{font-weight:700;font-size:15px}.mycard .d small{font-weight:500;color:var(--muted);margin-left:6px}.mycard .s{font-size:13px;color:var(--muted)}.poschip{display:inline-block;background:var(--blue);color:#fff;font-size:11px;font-weight:700;border-radius:8px;padding:2px 8px;margin-left:8px}.absentbtn{border:1px solid var(--bad);background:#fff;color:var(--bad);border-radius:8px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer}.absentbtn:hover{background:#fdeaea}.tag-absent{font-size:12px}.grid th .holname,.tag-absent{font-weight:700;color:var(--bad)}.grid th .holname{font-size:10px;margin-top:2px}.grid th .holbtn{display:block;margin:3px auto 0;border:1px solid var(--border);background:#fff;border-radius:5px;padding:1px 7px;font-size:10px;color:var(--muted);cursor:pointer;line-height:16px}.grid th .holbtn:hover{color:var(--bad);border-color:var(--bad)}.grid th .holbtn.on{background:var(--bad);border-color:var(--bad);color:#fff;font-weight:700}.grid th .holbtn.on:hover{background:#a53125;color:#fff}.grid th .holswap{color:var(--ok);margin-top:3px}.grid th .holswap,.spbadge{font-size:10px;font-weight:700}.spbadge{display:inline-block;margin:2px 0 4px;padding:1px 7px;border-radius:9px;background:#fdf6ec;border:1px solid #e2c98f;color:#8a6210;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spform{border:1px solid var(--border);border-radius:8px;padding:8px 10px;margin:8px 0}.spform .sprow{gap:8px;margin:4px 0;font-size:13px}.spform .sprow,.spform .sprow label{display:flex;align-items:center;cursor:pointer}.spform .sprow label{gap:4px}.spform .spmain{font-size:14px}.spform .sploc{color:var(--muted);font-size:12px}.spform .spdetail{margin:4px 0 2px 24px}.spform .spdetail .finput{margin:4px 0}.hpcount{margin-left:5px;padding:0 5px;border-radius:8px;background:#E9EFF4;border:1px solid #c3d3de;color:#40586B;font-size:10px;font-weight:700}.chip .tasknote{color:var(--muted);font-size:10.5px}.nextshift{background:var(--navy);color:#fff;border-radius:14px;padding:16px 18px;margin:4px 0 16px;box-shadow:0 2px 8px rgba(14,56,84,.28)}.nextshift .nslabel{font-size:12px;font-weight:700;letter-spacing:.12em;color:#AFC5D4;margin-bottom:4px}.nextshift .nsdate{font-size:24px;font-weight:800}.nextshift .nsdate small{font-size:15px;font-weight:600;margin-left:2px}.nextshift .nstoday{margin-left:8px;padding:2px 9px;border-radius:10px;background:#ffd166;color:#5c4405;font-size:12px;font-weight:800;vertical-align:middle}.nextshift .nswhere{margin:6px 0 12px;font-size:15px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.nextshift .poschip{background:#fff;color:var(--navy)}.nextshift .tasknote{color:#C3D3DE;font-size:13px}.nextshift .absentbtn{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.45);color:#fff}.gridtoggle{margin-left:10px;border:1px solid var(--border);background:#fff;border-radius:6px;padding:2px 10px;font-size:12px;color:var(--muted);cursor:pointer}.gridtoggle:hover{color:var(--navy);border-color:var(--navy)}.weeknav-sm{display:inline-flex;gap:4px;margin-left:10px}.weeknav-sm .gridtoggle{margin-left:0}.daycards{display:none}.daytabs{display:flex;gap:5px;margin:6px 0 10px;overflow-x:auto}.daytab{flex:1 0 auto;min-width:42px;border:1px solid var(--border);background:#fff;border-radius:9px;padding:6px 2px 5px;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;text-align:center}.daytab .dnum{display:block;font-size:11px;font-weight:600;margin-top:1px}.daytab.today{border-color:var(--navy);color:var(--navy)}.daytab.sel{background:var(--navy);border-color:var(--navy);color:#fff}.daytab.sel .dnum{color:#C3D3DE}.dayhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 2px 10px;font-size:14px}.dayhead .holname{font-size:11px;color:var(--bad);font-weight:700}.dayhead .holswap{font-size:11px;color:var(--ok);font-weight:700}.daycard{border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-bottom:10px;background:#fff}.daycard .dchead{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:15px}.daycard .dctime{color:var(--muted);font-size:12.5px}.daycard .count{font-size:13px;margin-bottom:6px}.daycard .pos{display:flex;gap:8px;align-items:flex-start;margin:4px 0}.daycard .plabel{min-width:64px}.daycard.closedcell{background:var(--panel-sub)}@media (max-width:640px){.weektable{display:none}.daycards{display:block}.legend{display:none}.appbar{padding:10px 12px}.appbar h1{font-size:17px}.planner{padding:10px 12px 40px}.weeklabel{font-size:13px}.availbar{display:none}.mycard .d{font-size:15px}.secttitle{font-size:16px}}.annlist{margin-top:4px}.ann{background:#fdf8e5;border:1px solid #ecdfa8;border-radius:6px;padding:3px 7px;margin:2px 0;font-size:11.5px;color:#5c4d13;text-align:left}.ann .annbody{display:block;overflow-wrap:anywhere}.ann .annwho{display:block;font-size:10px;color:#8a7a3d;text-align:right}.ann .x{color:#8a7a3d;cursor:pointer;padding:0 3px;font-weight:700}.ann .x:hover{color:var(--bad)}.annbtn{display:block;width:100%;margin-top:4px;border:1px dashed #ecdfa8;background:#fffdf4;border-radius:6px;padding:2px;cursor:pointer;font-size:10.5px;color:#8a7a3d}.annbtn:hover{background:#fdf8e5}.chip.me{border-width:2px;font-weight:700}.secttitle{font-size:15px;color:var(--blue-dark);margin:18px 0 10px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.secttitle .sectmeta{font-size:12px;font-weight:500;color:var(--muted)}.sectempty{font-size:13px;color:var(--muted);background:var(--card);border:1px dashed var(--border);border-radius:10px;padding:18px}.upcoming{margin-top:26px}.mylist.inpage{max-width:640px;margin:0;padding:0}.snapnote{font-size:11.5px;color:#5c4d13;background:#fdf8e5;border:1px solid #ecdfa8;border-radius:6px;padding:4px 8px;overflow-wrap:anywhere}.snappreview .snapnote{margin:0 0 8px;max-width:720px}.modal h2.oktitle{color:var(--blue-dark)}.modal .flabel{display:block;font-size:12px;font-weight:700;color:var(--muted);margin:10px 0 4px}.modal .finput,.modal .ftext{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:14px;font-family:inherit}.modal .ftext{resize:vertical}.modal .facts{display:flex;gap:8px;margin-top:14px;justify-content:flex-end}.chip.override{outline:2px dotted var(--amber);outline-offset:1px}.ovmark{color:var(--amber);font-weight:700;margin-right:3px}.ovpanel{width:100%;margin-top:6px;padding:8px 10px;background:#FBF3E3;border:1px solid #e2c98f;border-radius:8px}.ovpanelhead{font-size:12px;font-weight:700;color:var(--amber);margin-bottom:6px}.ovrow{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:5px 0;border-top:1px dashed #e2c98f;font-size:12.5px}.ovrow:first-of-type{border-top:none}.ovinfo{display:inline-flex;align-items:baseline;gap:8px;flex-wrap:wrap}.ovreason{font-size:12px}.ovby,.ovreason{color:var(--muted)}.ovby{font-size:11px}.ovacts{display:inline-flex;gap:6px}.ovwait{color:var(--muted);font-size:11.5px;font-style:italic}.ovcount{font-size:12.5px;background:var(--panel-sub);border:1px solid var(--border);border-radius:8px;padding:6px 10px;margin:4px 0 2px}.ovcount.warn{background:#FBF3E3;border-color:#E2C98F;color:var(--amber)}.ovcount .ovhint{display:block;font-weight:700;font-size:12px;margin-top:2px}.chip .timechip{display:block;width:-moz-fit-content;width:fit-content;margin:1px 0 0;padding:0 4px;border-radius:7px;font-size:9.5px;border:1px solid #cfdde9}.chip .timechip,.timechip{font-weight:700;background:#eef3f8;color:#0e3854;white-space:nowrap}.timechip{display:inline-block;margin-left:4px;padding:0 5px;border-radius:8px;font-size:10.5px;border:1px solid #cfdde9;vertical-align:1px}.chip>span:first-child{min-width:0}.chip .timechip.changed,.timechip.changed{background:#fdf1dc;border-color:#ecd3a2;color:#9a6a10}.chipacts{display:inline-flex;gap:3px;align-items:center}.chip .x.t{font-weight:600;font-size:10px;border:1px solid var(--border);border-radius:4px;padding:0 3px;line-height:14px}.chip .x.t:hover{color:var(--blue);border-color:var(--blue)}.timerow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0 4px}.timerow .flabel{margin:0}.ftime{width:120px}.loctabs{margin:6px 0 10px}.icsbox{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px}.icsnote{font-size:12.5px;color:var(--muted);margin:0 0 8px}.icsurlrow{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.icsurl{flex:1 1;min-width:220px}.icssteps,.icsurl{font-size:12px;color:var(--muted)}.icssteps{margin:10px 0 0;padding-left:18px}.icssteps li{margin:3px 0}.modal .ftime{width:130px}input.icsurl{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-family:inherit;background:var(--panel-sub)}