:root{--bg: #f7f8f7;--card: #ffffff;--ink: #1f2937;--sub: #6b7280;--line: #e5e7eb;--teal: #0f766e;--teal-deep: #0b5a54;--teal-soft: #e6f2f0;--amber: #b45309;--amber-soft: #fdf3e3;--err: #b91c1c;--err-soft: #fdeeed;--ok: #15803d;--font: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif}*{box-sizing:border-box}body{margin:0;font-family:var(--font);font-size:14.5px;line-height:1.7;background:var(--bg);color:var(--ink)}h1,h2,h3{line-height:1.45}.num{font-variant-numeric:tabular-nums}.app{max-width:1180px;margin:0 auto;padding:16px 18px 70px}.topbar{display:flex;align-items:center;gap:16px;padding:8px 0 14px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px}.mark{width:44px;height:44px;background:var(--teal);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:21px;font-weight:800;font-family:serif}.brand h1{font-size:21px;margin:0;color:var(--teal-deep)}.brand p{margin:0;font-size:12.5px;color:var(--sub)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.month-nav{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:4px 8px;background:#fff}.month-nav button{border:none;background:none;font-size:18px;cursor:pointer;color:var(--sub);padding:2px 8px}.month-nav button:hover{color:var(--teal)}.month-nav b{min-width:88px;text-align:center}.btn{border:none;cursor:pointer;font-family:inherit;font-weight:700;font-size:14px;background:var(--teal);color:#fff;padding:10px 20px;border-radius:8px}.btn:hover{background:var(--teal-deep)}.btn.ghost{background:#fff;color:var(--teal-deep);border:1px solid var(--line)}.btn.small{padding:6px 13px;font-size:12.5px}.btn:disabled{opacity:.5;cursor:wait}.pro-badge{font-size:10.5px;font-weight:800;letter-spacing:.06em;background:var(--amber);color:#fff;padding:2px 9px;border-radius:4px}.tabs{display:flex;gap:4px;margin-bottom:14px;align-items:center;flex-wrap:wrap}.tabs button{border:1px solid var(--line);background:#fff;padding:8px 18px;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--sub);cursor:pointer;border-radius:8px 8px 0 0;border-bottom:none}.tabs button.on{color:var(--teal-deep);border-color:var(--teal);background:var(--teal-soft)}.cap-note{margin-left:auto;font-size:11.5px;color:var(--sub)}.card{background:var(--card);border:1px solid var(--line);border-radius:0 10px 10px;padding:18px;margin-bottom:16px}.tabs+.card{border-top-left-radius:0}.card h2{font-size:15.5px;margin:0 0 12px;color:var(--teal-deep)}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.card-head h2{margin:0}.hint{font-size:12px;color:var(--sub);margin:10px 0 0}input,select{font-family:inherit;font-size:13.5px;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}input[type=number]{width:64px;text-align:right}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--teal);outline-offset:1px}.req-table,.staff-table{border-collapse:collapse;width:100%}.req-table th,.req-table td,.staff-table th,.staff-table td{border:1px solid var(--line);padding:6px 8px;text-align:center}.req-table th{background:var(--teal-soft);color:var(--teal-deep);font-size:13px}.req-table tr.weekend th,.staff-table tr.weekend th{background:var(--amber-soft);color:var(--amber)}.shift-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.staff-table-wrap{overflow-x:auto}.staff-table th{background:#f3f4f6;font-size:12px;color:var(--sub);white-space:nowrap}.staff-table input{width:100%;min-width:60px}.staff-table td input[type=number]{width:54px}.del{border:none;background:none;color:#c9ced4;cursor:pointer;font-size:14px}.del:hover{color:var(--err)}.row{display:flex;align-items:center}.gap8{gap:8px}.mt8{margin-top:8px}.result-card{border:2px solid var(--teal)}.result-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.ok-line{font-size:13.5px;color:var(--ok);font-weight:600;margin:0 0 10px}.violations{list-style:none;margin:0 0 10px;padding:0}.violations li{font-size:13px;color:var(--err);background:var(--err-soft);border-radius:6px;padding:4px 10px;margin-bottom:4px}.warn-details summary{cursor:pointer;font-size:13px;color:var(--amber);font-weight:700}.warn-details ul{font-size:12.5px;color:var(--sub);max-height:140px;overflow:auto}.cal-wrap{overflow-x:auto}.calendar{border-collapse:collapse;width:100%;min-width:520px}.calendar th,.calendar td{border:1px solid var(--line);padding:5px 7px;vertical-align:top}.calendar thead th{background:var(--teal-soft);color:var(--teal-deep);position:sticky;top:0}.calendar tbody th{background:#fafafa;width:64px;text-align:left}.calendar tbody th .num{font-size:15px;font-weight:700;display:inline-block;min-width:22px}.calendar tbody th .wd{font-size:11px;color:var(--sub);margin-left:4px}.calendar tr.weekend tbody th{background:var(--amber-soft)}.calendar td{min-width:120px}.who{display:inline-block;font-size:12px;padding:1px 8px;margin:1px 2px;border-left:3px solid var(--teal);background:#f8faf9;border-radius:3px;white-space:nowrap}.none{color:#d1d5db}.fair-bars{display:flex;flex-direction:column;gap:4px;max-width:560px}.fair-row{display:grid;grid-template-columns:110px 1fr 34px;gap:8px;align-items:center;font-size:13px}.f-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.f-bar{background:#eef1f0;border-radius:4px;height:14px;overflow:hidden}.f-bar>div{height:100%;background:var(--teal);border-radius:4px}.howto ol{padding-left:20px;font-size:13.5px;color:var(--sub)}.howto details{border-top:1px dashed var(--line);padding:8px 0}.howto summary{cursor:pointer;font-weight:700;font-size:13.5px}.howto details p{font-size:12.5px;color:var(--sub);margin:4px 0 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f293773;z-index:100;display:flex;align-items:center;justify-content:center;padding:18px}.modal{background:#fff;border-radius:12px;max-width:430px;width:100%;padding:22px}.modal h3{margin:0 0 6px}.modal .note{font-size:13px;color:var(--sub);margin:0 0 10px}.modal input{width:100%}.err-msg{color:var(--err);font-size:13px;margin:8px 0 0}.site-footer{margin-top:30px;text-align:center;font-size:12px;color:var(--sub)}@media (max-width: 760px){.top-actions{width:100%;margin-left:0}.calendar td{min-width:90px}}@media print{.topbar .top-actions,.tabs,.howto,.site-footer,.result-head .row{display:none!important}.card{border:none;padding:0}.calendar{font-size:11px}.calendar td{min-width:80px}}
