*{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--blue:#1767c7;--blue-deep:#123f76;--ink:#153552;--muted:#60758a;--surface:#fff;font-size:16px}body{color:#24364b;background:radial-gradient(circle at 10% 0,#e9f3ff 0,#0000 32%),linear-gradient(#f7faff 0,#eef3f8 100%);min-width:320px;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:16px;line-height:1.5}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}main{min-height:100vh;padding:28px 28px 44px}.toolbar{background:linear-gradient(125deg,#fffffffa,#eff7fff5);border:1px solid #1767c71f;border-radius:20px;justify-content:space-between;align-items:center;gap:28px;max-width:1440px;margin:0 auto 18px;padding:26px 28px;display:flex;box-shadow:0 14px 36px #19436e17}.toolbar-copy{min-width:240px}.toolbar-eyebrow{color:#5f87ae;letter-spacing:1.7px;margin-bottom:6px;font-size:12px;font-weight:800;display:block}.toolbar h1{color:var(--ink);letter-spacing:.5px;font-size:30px;line-height:1.25}.toolbar .toolbar-meta{color:var(--muted);margin-top:9px;font-size:14px}.live-dot{background:#18a66a;border-radius:50%;width:7px;height:7px;margin:0 5px 0 12px;display:inline-block;box-shadow:0 0 0 4px #18a66a1f}.toolbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.button{border:1px solid var(--blue);background:var(--blue);color:#fff;cursor:pointer;border-radius:10px;min-height:42px;padding:10px 16px;font-size:14px;font-weight:700;transition:all .16s;box-shadow:0 3px 8px #1767c71f}.button:hover{filter:brightness(.96);transform:translateY(-1px)}.button.secondary{color:var(--blue);background:#fff;border-color:#b8cff0}.button.quiet{color:#65798d;box-shadow:none;background:0 0;border-color:#0000}.button.quiet:hover{color:#315d8d;background:#edf4fb}.button.active{background:#174b87}.button.submit{padding-inline:18px}.notice{z-index:20;color:#315d8d;background:#f4f9ff;border:1px solid #b9d2ef;border-radius:11px;justify-content:space-between;gap:12px;max-width:820px;margin:0 auto 18px;padding:13px 16px;font-size:15px;display:flex;position:sticky;top:12px;box-shadow:0 4px 18px #1a5fb41f}.notice button{color:#6080a0;cursor:pointer;background:0 0;border:0}.month-filter{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffe6;border:1px solid #dbe7f3;border-radius:15px;justify-content:space-between;align-items:center;gap:20px;max-width:1440px;margin:0 auto 22px;padding:17px 19px;display:flex;box-shadow:0 6px 20px #1f4a740d}.filter-copy{flex-direction:column;gap:3px;min-width:150px;display:flex}.filter-copy span{color:#718ca6;letter-spacing:.8px;font-size:12px;font-weight:800}.filter-copy strong{color:var(--ink);font-size:15px}.filter-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;display:flex}.filter-actions button{color:#466681;cursor:pointer;background:#f9fbfd;border:1px solid #c4d6e7;border-radius:10px;min-height:40px;padding:8px 13px;font-size:13px;font-weight:700;transition:all .15s}.filter-actions button:hover{color:var(--blue);background:#f1f7ff;border-color:#94b9df}.filter-actions button.selected{border-color:var(--blue);background:var(--blue);color:#fff;box-shadow:0 4px 10px #1767c72e}.month-chip{align-items:center;gap:4px;display:inline-flex}.month-chip small{opacity:.8;font-size:10px}.month-chip em{background:#fff3;border-radius:99px;padding:2px 5px;font-size:10px;font-style:normal}.months{flex-direction:column;gap:32px;max-width:1440px;margin:0 auto;display:flex}.month{background:var(--surface);border:1px solid #1b4c7e14;border-radius:16px;width:100%;overflow:hidden;box-shadow:0 10px 30px #14375b17}.month.current-month{border-color:#1767c757;box-shadow:0 12px 34px #1767c724}.month-title{background:linear-gradient(115deg,var(--blue-deep),var(--blue) 68%,#398eea);color:#fff;text-align:center;letter-spacing:1.3px;padding:17px 20px;font-size:16px;font-weight:700;position:relative}.month-title div{justify-content:center;align-items:baseline;gap:9px;display:flex}.month-title span{font-size:25px}.month-title b{opacity:.88;letter-spacing:1.8px;font-size:14px}.month-title small{opacity:.78;letter-spacing:.6px;font-size:12px;font-weight:650}.month-title>em{letter-spacing:.4px;background:#ffffff29;border:1px solid #ffffff6b;border-radius:99px;padding:5px 11px;font-size:11px;font-style:normal;position:absolute;top:50%;right:20px;transform:translateY(-50%)}.weekdays,.days{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.weekdays{background:#edf5ff;border-bottom:1px solid #dce8f5}.weekdays div{text-align:center;color:#445f78;padding:11px 0;font-size:14px;font-weight:750}.weekdays div:first-child,.weekdays div:last-child{color:#c0392b}.days{background:#dde6ef;gap:1px}.day{background:#fff;min-width:0;min-height:132px;padding:9px 10px;position:relative}.day.empty{background:#fff}.day.has-event .day-num{color:var(--blue);font-weight:700}.day:nth-child(7n+1) .day-num,.day:nth-child(7n) .day-num{color:#c0392b}.day-num{color:#60758b;text-align:center;min-height:24px;margin-bottom:7px;font-size:15px;font-weight:700;position:relative}.day-num button,.pending-bar-title button{color:var(--blue);cursor:pointer;background:0 0;border:0;font-size:15px;font-weight:750}.day-num button{opacity:.65;border-radius:50%;width:26px;height:26px;position:absolute;top:-2px;right:0}.day-num button:hover{opacity:1;background:#e8f0fe}.tag{text-align:left;white-space:normal;overflow-wrap:anywhere;cursor:default;border:1.5px solid #0000;border-radius:7px;width:100%;margin-bottom:6px;padding:6px 8px;font-size:13.5px;font-weight:600;line-height:1.45;display:block}.tag.s-level{color:#1a1a00;background:#ffe566;border-color:#c8a000;font-weight:700;box-shadow:0 1px 4px #c8a00040}.tag.s-level .s-badge{color:#d60000;margin-right:4px;font-size:11px;font-weight:850}.tag .price-badge{color:#d93683;margin-right:4px;font-size:11px;font-weight:850}.tag.up{color:#555;background:#fff0f3;border-color:#ffc0cc}.tag.keep{color:#6d7680;background:#fffde7;border-color:#f5e87a}.tag.pending{color:#b07800;background:#fff8e1;border-color:#ffe082}.tag.activity{color:#6b21a8;background:#f3e8ff;border-color:#c084fc;font-weight:600;line-height:1.4}.tag.activity .act-label{color:#7f24bd;margin-right:4px;font-size:11px;font-weight:850}.tag.activity small{color:#7f24bd;font-size:11px}.tag.can-edit{cursor:pointer;outline:0}.tag.can-edit:hover,.tag.can-edit:focus-visible{z-index:2;position:relative;box-shadow:0 0 0 2px #fff,0 0 0 4px #1a5fb459}.project-wrap{min-width:0;margin-bottom:2px;display:block}.project-wrap.compact{flex-wrap:wrap;align-items:center;gap:3px;margin:0 8px 3px 0;display:inline-flex}.project-wrap.compact .tag{width:auto;margin:0}.owner{color:#5f7489;margin:0 0 4px;padding-left:4px;font-size:12px;display:block}.owner-detail{color:#74879a;margin-bottom:5px;padding-left:4px;font-size:11.5px;display:block}.project-wrap.compact .owner,.project-wrap.compact .owner-detail{margin:0;padding:0;display:inline}.pending-bar,.leave-bar{background:#f5f7f9;border-top:1px solid #dfe6ed;grid-column:1/-1;min-height:70px;padding:14px 16px}.pending-bar-title{color:#65798d;letter-spacing:.3px;align-items:center;gap:7px;margin-bottom:9px;font-size:13px;font-weight:750;display:flex}.pending-bar-tags{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.empty-note{color:#8395a7;font-size:12px}.leave-bar{background:#fff8f0;border-top-color:#fcd9b0}.leave-bar .pending-bar-title{color:#b45309}.leave-item{color:#91450b;cursor:default;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;margin-right:12px;padding:3px;font-size:13px;display:inline-flex}.leave-item b{color:#80380b;background:#fff0dc;border:1.5px solid #f0ae20;border-radius:7px;padding:5px 9px;font-size:13px}.leave-item.can-edit{cursor:pointer}.leave-item.can-edit:hover,.leave-item.can-edit:focus-visible{background:#fff4e5;outline:0;box-shadow:0 0 0 2px #b4530933}.workload-panel{background:linear-gradient(145deg,#f7fbff 0,#eef6ff 55%,#f8fbff 100%);border-top:1px solid #cfe0f1;grid-column:1/-1;padding:22px}.workload-head{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:15px;display:flex}.workload-eyebrow{color:#5e89b1;letter-spacing:1.4px;font-size:11px;font-weight:850;display:block}.workload-head h3{color:var(--ink);margin-top:3px;font-size:21px}.workload-head p{color:#5f758a;margin-top:5px;font-size:13px}.workload-status{border:1px solid;border-radius:12px;flex-direction:column;align-items:flex-end;gap:3px;min-width:190px;padding:11px 13px;display:flex}.workload-status strong{font-size:14px}.workload-status span{opacity:.86;font-size:11px}.workload-status.pass{color:#13724b;background:#edfaf4;border-color:#a9dec6}.workload-status.warn{color:#9a6000;background:#fff8e8;border-color:#f0ca8a}.workload-grid{grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:11px;display:grid}.workload-person{background:#fffffff0;border:1px solid #d1e0ef;border-radius:12px;padding:14px;box-shadow:0 3px 10px #27517b0d}.person-score{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.person-score strong{color:#294862;font-size:14px}.person-score>b{color:var(--blue);font-size:24px}.person-score small{margin-left:3px;font-size:10px}.score-track{background:#e3ebf4;border-radius:99px;height:7px;margin:9px 0;overflow:hidden}.score-track span{border-radius:inherit;background:linear-gradient(90deg,#66a9ef,var(--blue));height:100%;display:block}.person-breakdown{color:#61768b;justify-content:space-between;gap:8px;font-size:12px;display:flex}.person-breakdown b{color:#3d617f}.workload-empty{color:#71869a;text-align:center;background:#ffffffb3;border:1px dashed #b7ccdf;border-radius:10px;padding:19px;font-size:13px}.rule-checks{flex-wrap:wrap;gap:7px;margin-top:12px;display:flex}.rule-checks>span{border:1px solid;border-radius:99px;align-items:center;gap:6px;padding:7px 10px;font-size:12px;font-weight:700;display:inline-flex}.rule-checks>span>b{color:#fff;border-radius:50%;place-items:center;width:19px;height:19px;font-size:11px;display:grid}.rule-checks>span em{background:#ffffffbf;border-radius:99px;place-items:center;min-width:19px;height:19px;font-size:10px;font-style:normal;display:grid}.rule-checks .pass{color:#277259;background:#edf9f4;border-color:#b9decf}.rule-checks .pass>b{background:#2d9a70}.rule-checks .warn{color:#966000;background:#fff7e6;border-color:#efd09b}.rule-checks .warn>b{background:#d99116}.workload-issues{background:#fff9ec;border-left:4px solid #e6a533;border-radius:8px;grid-template-columns:92px 1fr;gap:12px;margin-top:13px;padding:13px 15px;display:grid}.workload-issues>strong{color:#875600;font-size:13px}.workload-issues>div{gap:6px;display:grid}.workload-issues p{color:#665535;align-items:baseline;gap:9px;font-size:12px;display:flex}.workload-issues p b{color:#845d16;white-space:nowrap}.workload-issues p span{line-height:1.45}.work-windows{color:#647b91;flex-wrap:wrap;align-items:center;gap:9px;margin-top:12px;display:flex}.work-windows>span{background:#ffffffe0;border-radius:9px;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:inline-flex}.work-windows>span b{color:#244f7d;font-size:13px}.work-windows small{color:#6e8296;flex-basis:100%;font-size:11px}.legend{color:#4e6479;background:#fffc;border-radius:13px;flex-wrap:wrap;justify-content:center;gap:20px;max-width:1440px;margin:20px auto 0;padding:14px 17px;font-size:14px;display:flex}.legend-item{align-items:center;gap:5px;display:flex}.legend-item b{color:#d93683;font-size:12px}.legend-dot{border-radius:3px;width:13px;height:13px}.legend-dot.s{background:#ffe566;border:1.5px solid #c8a000}.legend-dot.up{background:#fff0f3;border:1.5px solid #ffc0cc}.legend-dot.keep{background:#fffde7;border:1.5px solid #f5e87a}.legend-dot.pending{background:#fff8e1;border:1.5px solid #ffe082}.legend-dot.activity{background:#f3e8ff;border:1.5px solid #c084fc}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0d233a61;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;grid-template-columns:1fr 1fr;gap:16px;width:min(580px,100%);max-height:calc(100vh - 36px);padding:24px;display:grid;overflow:auto;box-shadow:0 20px 70px #0c264140}.modal.auth-modal{grid-template-columns:1fr;width:min(390px,100%)}.modal.leave-modal{width:min(500px,100%)}.modal.admin-modal{width:min(680px,100%)}.modal-head{border-bottom:1px solid #e8edf3;grid-column:1/-1;justify-content:space-between;gap:18px;padding-bottom:12px;display:flex}.modal-head h2{color:var(--ink);font-size:22px}.modal-head p{color:#667b8f;margin-top:5px;font-size:14px}.close{color:#52677c;cursor:pointer;background:#eff3f7;border:0;border-radius:50%;align-self:start;width:34px;height:34px;font-size:24px}.modal label{color:#405a72;flex-direction:column;gap:7px;font-size:14px;font-weight:700;display:flex}.modal input,.modal select,.modal textarea{color:#20384e;background:#fff;border:1px solid #bdcddd;border-radius:10px;outline:0;width:100%;padding:12px 13px;font-size:16px}.modal textarea{resize:vertical;min-height:80px}.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1a5fb41a}.modal .full{grid-column:1/-1}.modal .check-label{flex-direction:row;align-self:end;align-items:center;min-height:35px}.modal .check-label input{width:auto}.modal-actions{align-items:center;gap:8px;padding-top:6px;display:flex}.modal-actions span{flex:1}.delete-button{color:#b52d21;cursor:pointer;background:0 0;border:0;padding:9px;font-size:15px}.auth-switch{background:#edf3f9;border-radius:9px;grid-template-columns:1fr 1fr;gap:3px;padding:3px;display:grid}.auth-switch button{color:#60768b;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:11px;font-size:14px;font-weight:700}.auth-switch button.selected{color:var(--blue);background:#fff;box-shadow:0 1px 5px #2244661f}.text-button{color:var(--blue);cursor:pointer;background:0 0;border:0;padding:5px;font-size:14px}.dialog-form{gap:12px;display:grid}.dialog-form label{color:#405a72;flex-direction:column;gap:6px;font-size:14px;font-weight:700;display:flex}.dialog-message{color:#4c657d;background:#f4f7fa;border-radius:9px;padding:11px 12px;font-size:13px;line-height:1.6}.dialog-message.success{color:#14724b;background:#ebf9f2}.credential-box{background:#f7fbff;border:1px dashed #9eb9d6;border-radius:8px;gap:6px;padding:10px;display:grid}.credential-box div{justify-content:space-between;align-items:center;gap:10px;display:flex}.credential-box span{color:#6b8195;font-size:12px}.credential-box code{color:#234f7f;-webkit-user-select:all;user-select:all;font-size:14px;font-weight:700}.request-list{gap:10px;display:grid}.request-item{background:#fbfdff;border:1px solid #dce5ee;border-radius:10px;padding:12px;position:relative}.request-main{justify-content:space-between;align-items:center;gap:12px;margin-bottom:7px;display:flex}.request-main strong{color:var(--ink);font-size:15px}.request-main code{color:#526f8b;font-size:12px}.status-pill{color:#607386;background:#eef2f5;border-radius:99px;margin-left:8px;padding:3px 7px;font-size:11px}.status-pill.approved{color:#14724b;background:#e5f7ee}.status-pill.rejected{color:#b33a3a;background:#fff0f0}.status-pill.pending{color:#9a6b00;background:#fff7df}.request-item p{color:#455e76;margin-top:5px;font-size:13px}.request-item small{color:#778a9c;margin-top:8px;font-size:11px;display:block}.request-actions{justify-content:flex-end;gap:7px;margin-top:9px;display:flex}.loading-screen{place-items:center;display:grid}.loading-card{color:#456987;background:#fff;border-radius:12px;padding:30px 44px;font-size:15px;box-shadow:0 2px 12px #00000014}.access-screen{background:radial-gradient(circle at 50% 20%,#eaf3ff 0,#f0f4f8 48%,#e8eef5 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.access-card{text-align:center;background:#fffffff7;border:1px solid #1a5fb41f;border-radius:20px;width:min(430px,100%);padding:40px 38px 34px;box-shadow:0 22px 70px #1a3a5c29}.access-mark{background:linear-gradient(145deg,var(--blue-deep),var(--blue));color:#ffe566;border-radius:17px;place-items:center;width:58px;height:58px;margin:0 auto 16px;font-size:22px;font-weight:850;display:grid;box-shadow:0 10px 26px #1a5fb440}.access-eyebrow{color:#6486a8;letter-spacing:1.8px;font-size:12px;font-weight:800}.access-card h1{color:var(--ink);letter-spacing:.6px;margin-top:10px;font-size:27px}.access-copy{color:#657b90;margin:10px 0 28px;font-size:15px}.access-card label{text-align:left;color:#405a72;flex-direction:column;gap:8px;font-size:14px;font-weight:700;display:flex}.access-card input{color:#20384e;background:#fff;border:1px solid #bdcddd;border-radius:10px;outline:0;width:100%;padding:13px 14px;font-size:17px}.access-card input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1a5fb41a}.access-button{width:100%;margin-top:14px;padding:10px}.access-button:disabled{opacity:.65;cursor:wait}.access-error{color:#b52d21;text-align:left;margin-top:10px;font-size:13px}.access-card small{color:#718497;margin-top:15px;font-size:12px;display:block}@media (width<=720px){main{padding:14px 10px 28px}.toolbar{border-radius:14px;flex-direction:column;align-items:flex-start;padding:18px 16px}.toolbar h1{font-size:25px}.toolbar-actions{justify-content:flex-start}.month-filter{flex-direction:column;align-items:flex-start;padding:13px}.filter-actions{justify-content:flex-start}.months{gap:16px}.weekdays,.days{grid-template-columns:repeat(7,minmax(120px,1fr));min-width:840px}.month{overflow-x:auto}.day{min-height:140px}.month-title{min-width:840px;position:sticky;left:0}.workload-panel{min-width:840px;padding:18px}.workload-head{flex-direction:column;gap:10px}.workload-status{align-items:flex-start}.workload-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workload-issues{grid-template-columns:1fr}.workload-issues p{flex-direction:column;align-items:flex-start;gap:2px}.modal{grid-template-columns:1fr}.modal .full,.modal-head{grid-column:1}}@media (prefers-reduced-motion:reduce){.button{transition:none}}
