*{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--blue:#1a5fb4;--ink:#1a3a5c}body{color:#24364b;background:#f0f4f8;min-width:320px;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}main{min-height:100vh;padding:20px 24px 32px}.toolbar{justify-content:space-between;align-items:center;gap:18px;max-width:1080px;margin:0 auto 18px;display:flex}.toolbar h1{color:var(--ink);letter-spacing:1px;font-size:17px}.toolbar p{color:#789;margin-top:5px;font-size:10px}.live-dot{background:#18a66a;border-radius:50%;width:6px;height:6px;margin:0 4px 0 10px;display:inline-block;box-shadow:0 0 0 3px #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:7px;padding:7px 12px;font-size:11px;font-weight:650;transition:all .16s}.button:hover{filter:brightness(.96);transform:translateY(-1px)}.button.secondary{color:var(--blue);background:#fff;border-color:#b8cff0}.button.active{background:#174b87}.button.submit{padding-inline:18px}.notice{z-index:20;color:#315d8d;background:#f4f9ff;border:1px solid #b9d2ef;border-radius:8px;justify-content:space-between;gap:12px;max-width:620px;margin:0 auto 14px;padding:9px 12px;font-size:11px;display:flex;position:sticky;top:12px;box-shadow:0 4px 18px #1a5fb41f}.notice button{color:#6080a0;cursor:pointer;background:0 0;border:0}.months{flex-direction:column;gap:24px;max-width:1080px;margin:0 auto;display:flex}.month{background:#fff;border-radius:12px;width:100%;overflow:hidden;box-shadow:0 2px 12px #00000014}.month-title{background:var(--blue);color:#fff;text-align:center;letter-spacing:1.5px;padding:10px 0;font-size:13px;font-weight:700}.month-title span{font-size:14px}.month-title small{opacity:.7;letter-spacing:.5px;margin-left:5px;font-size:9px;font-weight:500}.weekdays,.days{grid-template-columns:44px repeat(6,minmax(0,1fr));display:grid}.weekdays{background:#e8f0fe}.weekdays div{text-align:center;color:#555;padding:6px 0;font-size:11px;font-weight:600}.weekdays div:first-child,.weekdays div:last-child{color:#c0392b}.days{background:#e0e0e0;gap:1px}.day{background:#fff;min-width:0;min-height:76px;padding:4px 5px;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:#888;text-align:center;min-height:16px;margin-bottom:3px;font-size:11px;font-weight:500;position:relative}.day-num button,.pending-bar-title button{color:var(--blue);cursor:pointer;background:0 0;border:0;font-size:12px;font-weight:700}.day-num button{opacity:.5;border-radius:50%;width:18px;height:18px;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:4px;width:100%;margin-bottom:3px;padding:2px 5px;font-size:9.5px;font-weight:500;line-height:1.5;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:#e00;margin-right:3px;font-size:8px;font-weight:800}.tag .price-badge{color:#ff69b4;margin-right:2px;font-size:8px;font-weight:800}.tag.up{color:#555;background:#fff0f3;border-color:#ffc0cc}.tag.keep{color:#888;background:#fffde7;border-color:#f5e87a;font-size:9px}.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:#9333ea;margin-right:2px;font-size:8px;font-weight:800}.tag.activity small{color:#9333ea;font-size:8px}.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:#999;margin-bottom:2px;padding-left:2px;font-size:8px;display:block}.owner-detail{color:#aaa;margin-bottom:2px;padding-left:2px;font-size:7.5px;display:block}.project-wrap.compact .owner,.project-wrap.compact .owner-detail{margin:0;padding:0;display:inline}.pending-bar,.leave-bar{background:#f0f0f0;border-top:1px solid #ddd;grid-column:1/-1;min-height:47px;padding:6px 8px}.pending-bar-title{color:#999;letter-spacing:.5px;align-items:center;gap:5px;margin-bottom:4px;font-size:9px;display:flex}.pending-bar-tags{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.empty-note{color:#bbb;font-size:9px}.leave-bar{background:#fff8f0;border-top-color:#fcd9b0}.leave-bar .pending-bar-title{color:#b45309}.leave-item{color:#b45309;align-items:center;gap:4px;margin-right:9px;font-size:9px;display:inline-flex}.leave-item b{color:#92400e;background:#fff0dc;border:1.5px solid #fbbf24;border-radius:4px;padding:2px 6px;font-size:9.5px}.legend{flex-wrap:wrap;justify-content:center;gap:16px;max-width:1080px;margin:12px auto 0;font-size:11px;display:flex}.legend-item{align-items:center;gap:5px;display:flex}.legend-item b{color:#ff69b4;font-size:10px}.legend-dot{border-radius:2px;width:10px;height:10px}.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:12px;grid-template-columns:1fr 1fr;gap:14px;width:min(560px,100%);max-height:calc(100vh - 36px);padding:20px;display:grid;overflow:auto;box-shadow:0 20px 70px #0c264140}.modal.auth-modal{grid-template-columns:1fr;width:min(390px,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:16px}.modal-head p{color:#8a98a8;margin-top:3px;font-size:10px}.close{color:#617285;cursor:pointer;background:#eff3f7;border:0;border-radius:50%;align-self:start;width:28px;height:28px;font-size:20px}.modal label{color:#526579;flex-direction:column;gap:5px;font-size:10px;font-weight:650;display:flex}.modal input,.modal select,.modal textarea{color:#263b50;background:#fff;border:1px solid #cdd8e5;border-radius:7px;outline:0;width:100%;padding:8px 9px;font-size:12px}.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:#c0392b;cursor:pointer;background:0 0;border:0;padding:7px;font-size:11px}.auth-switch{background:#edf3f9;border-radius:9px;grid-template-columns:1fr 1fr;gap:3px;padding:3px;display:grid}.auth-switch button{color:#718397;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:8px;font-size:10px;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:3px;font-size:10px}.dialog-form{gap:12px;display:grid}.dialog-form label{color:#526579;flex-direction:column;gap:5px;font-size:10px;font-weight:650;display:flex}.dialog-message{color:#5d7186;background:#f4f7fa;border-radius:8px;padding:9px 10px;font-size:10px;line-height:1.55}.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:#8293a4;font-size:9px}.credential-box code{color:#234f7f;-webkit-user-select:all;user-select:all;font-size:11px;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:12px}.request-main code{color:#607994;font-size:9px}.status-pill{color:#708090;background:#eef2f5;border-radius:99px;margin-left:7px;padding:2px 6px;font-size:8px}.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:#586c80;margin-top:4px;font-size:10px}.request-item small{color:#98a5b2;margin-top:7px;font-size:8px;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:#52708e;background:#fff;border-radius:12px;padding:28px 40px;font-size:12px;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:#fffffff5;border:1px solid #1a5fb41f;border-radius:16px;width:min(390px,100%);padding:34px 32px 28px;box-shadow:0 18px 60px #1a3a5c26}.access-mark{background:var(--blue);color:#ffe566;border-radius:14px;place-items:center;width:48px;height:48px;margin:0 auto 14px;font-size:18px;font-weight:800;display:grid;box-shadow:0 8px 22px #1a5fb438}.access-eyebrow{color:#7897bb;letter-spacing:2px;font-size:8px;font-weight:750}.access-card h1{color:var(--ink);letter-spacing:1px;margin-top:7px;font-size:19px}.access-copy{color:#8493a3;margin:7px 0 22px;font-size:11px}.access-card label{text-align:left;color:#526579;flex-direction:column;gap:6px;font-size:10px;font-weight:650;display:flex}.access-card input{color:#263b50;background:#fff;border:1px solid #cdd8e5;border-radius:8px;outline:0;width:100%;padding:10px 11px;font-size:13px}.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:#c0392b;text-align:left;margin-top:9px;font-size:10px}.access-card small{color:#a0acb8;margin-top:12px;font-size:8px;display:block}@media (width<=720px){main{padding:14px 10px 24px}.toolbar{flex-direction:column;align-items:flex-start}.toolbar-actions{justify-content:flex-start}.months{gap:16px}.weekdays,.days{grid-template-columns:34px repeat(6,minmax(72px,1fr))}.month{overflow-x:auto}.weekdays,.days{min-width:570px}.modal{grid-template-columns:1fr}.modal .full,.modal-head{grid-column:1}}@media (prefers-reduced-motion:reduce){.button{transition:none}}
