.attendance-head{background:#fbfdfc}.month-picker{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;font-weight:700}.month-picker span{margin:0}.month-picker input{border:1px solid var(--line);border-radius:7px;padding:9px 11px;background:#fff}.legend{background:#f7faf8;border-bottom:1px solid var(--line)}.legend b{color:var(--ink);margin-right:6px}.legend em{font-style:normal;margin-left:22px;color:#7a8580}.calendar-wrap{max-height:calc(100vh - 270px)}.calendar{border-collapse:separate;border-spacing:0}.calendar th,.calendar td{min-width:44px}.calendar th:nth-child(-n+2),.calendar td:nth-child(-n+2){z-index:4}.calendar th:nth-child(2),.calendar td:nth-child(2){border-right:0}.week-start,.week-end{border-left:0!important;border-right:0!important}.calendar .weekend{background:#e5e9e7!important;color:#68736e}.status{border:1px solid transparent}.status:hover{border-color:#8ba99c;box-shadow:0 0 0 2px rgba(22,113,95,.08)}
.attendance-head{background:#fbfdfc}.month-picker{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;font-weight:700}.month-picker span{margin:0}.month-picker input{border:1px solid var(--line);border-radius:7px;padding:9px 11px;background:#fff}.legend{background:#f7faf8;border-bottom:1px solid var(--line)}.legend b{color:var(--ink);margin-right:6px}.legend em{font-style:normal;margin-left:22px;color:#7a8580}.calendar-wrap{max-height:calc(100vh - 270px)}.calendar{border-collapse:separate;border-spacing:0}.calendar th,.calendar td{min-width:44px}.calendar th:first-child,.calendar td:first-child{z-index:4}.calendar th:nth-child(2){left:auto;min-width:44px;text-align:center;border-right:0}.calendar td:nth-child(2){position:static;left:auto;min-width:44px;text-align:center;border-right:0}.week-start,.week-end{border-left:0!important;border-right:0!important}.calendar .weekend{background:#e5e9e7!important;color:#68736e}.status{border:1px solid transparent}.status:hover{border-color:#8ba99c;box-shadow:0 0 0 2px rgba(22,113,95,.08)}
.salary-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.salary-month-picker{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;font-weight:700}.salary-month-picker input,.search-input{border:1px solid var(--line);border-radius:7px;padding:9px 11px;background:#fff}.search-input{width:220px}.rule-description{margin:18px 22px 0;padding:16px 18px;background:#f7faf8;border:1px solid var(--line);border-radius:8px}.rule-description h3{margin:0 0 10px;font-size:15px;color:var(--accent-dark)}.rule-description ol{margin:0;padding-left:22px;color:#46564f;font-size:13px;line-height:1.8}.rule-description li+li{margin-top:4px}
.salary-table{table-layout:fixed;min-width:1520px;border-collapse:separate;border-spacing:5px 0}.salary-month-col{width:104px}.salary-name-col{width:104px}.salary-number-col{width:82px}.salary-total-col{width:104px}.salary-remark-col{width:300px}.salary-table th,.salary-table td{text-align:center;vertical-align:middle;padding-left:6px;padding-right:6px}.salary-table td:first-child,.salary-table td:nth-child(2){text-align:left}.salary-table td:last-child{text-align:left}.salary-table input{display:block;width:100%;min-width:0;margin:0;text-align:center;padding-left:0;padding-right:0}.salary-table input.remark{width:100%;text-align:left}.salary-month{color:var(--muted);font-weight:700}
.salary-table thead th{color:#263730;font-size:14px;font-weight:700;border:0;border-radius:8px;box-shadow:inset 0 0 0 1px rgba(56,74,66,.08);background-clip:padding-box}.salary-table thead th:nth-child(1){background:#e4ece8}.salary-table thead th:nth-child(2){background:#e6efe9}.salary-table thead th:nth-child(3){background:#dcebf7}.salary-table thead th:nth-child(4){background:#e8e1f5}.salary-table thead th:nth-child(5){background:#fff0c9}.salary-table thead th:nth-child(6){background:#f8dddd}.salary-table thead th:nth-child(7){background:#fbe6d3}.salary-table thead th:nth-child(8){background:#f4dce4}.salary-table thead th:nth-child(9){background:#dff1e7}.salary-table thead th:nth-child(10){background:#dcefeb}.salary-table thead th:nth-child(11){background:#eadfda}.salary-table thead th:nth-child(12){background:#fff0b8}.salary-table thead th:nth-child(13){background:#dceef5}.salary-table thead th:nth-child(14){background:#cfe8dc;color:#15543f}.salary-table thead th:nth-child(15){background:#e7e9ec}
.salary-value{display:block;color:#293832}.salary-table input.salary-editable{border:1px solid #d0b7ac;background:#fffaf7;border-radius:6px;padding:6px 4px}.salary-table input.salary-editable:focus{border-color:#a66a50;box-shadow:0 0 0 2px rgba(166,106,80,.12)}
dialog select{border:1px solid var(--line);border-radius:7px;padding:9px 11px;background:#fff;color:var(--ink)}.setting-badge{display:inline-block;min-width:42px;padding:4px 9px;border-radius:999px;text-align:center;font-size:12px;font-weight:700}.setting-badge.on{background:#e1f2e9;color:#247051}.setting-badge.off{background:#eceeed;color:#69736f}
.settings>.form-grid{grid-template-columns:repeat(6,minmax(130px,1fr));gap:12px;padding:18px 22px}.account-section{margin-top:6px;border-top:1px solid var(--line)}.account-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--line)}.account-head>div:last-child{display:flex;align-items:center;gap:10px}.account-head span{display:block;color:var(--muted);font-size:12px;margin-top:5px}.test-mode{display:inline-block!important;margin:0!important;padding:7px 10px;border-radius:999px;background:#fff0c9;color:#805e08!important;font-weight:700}.account-table-wrap{max-height:320px}.permission-tags{display:flex;gap:5px;flex-wrap:wrap}.permission-tags span{padding:3px 7px;border-radius:999px;background:#e6efe9;color:#315f4f;font-size:11px}.permission-field{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.permission-field legend{padding:0 5px;color:var(--muted);font-size:13px}.permission-field label{display:flex;grid-template-columns:none;align-items:center;gap:7px;margin:7px 0;color:var(--ink)}.permission-field input{width:auto}.settings{overflow:auto}@media(max-width:1100px){.settings>.form-grid{grid-template-columns:repeat(3,minmax(150px,1fr))}}@media(max-width:700px){.settings>.form-grid{grid-template-columns:1fr}.account-head{align-items:flex-start;flex-direction:column}.account-head>div:last-child{align-items:flex-start;flex-direction:column}}
.password-account{padding:10px 12px;border-radius:7px;background:#f3f7f5;color:var(--accent-dark);font-weight:700}
.test-mode.enabled{background:#dff3e9;color:#0c6a4f!important}.current-user{display:flex;align-items:center;gap:8px;margin-right:8px}.current-user>span{padding:8px 12px;border-radius:999px;background:#eef7f3;color:#0d5f50;font-weight:800}.current-user .small{padding:7px 12px}.login-mask{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,rgba(232,246,241,.96),rgba(255,255,255,.94));backdrop-filter:blur(6px)}.login-mask[hidden]{display:none}.login-card{width:min(380px,calc(100vw - 40px));padding:30px;border-radius:22px;background:#fff;box-shadow:0 24px 70px rgba(8,55,44,.18);border:1px solid #d9e8e2;text-align:left}.login-card img{display:block;width:78px;height:78px;object-fit:contain;margin:0 auto 10px}.login-card h2{text-align:center;margin:0;color:#06483c;font-size:26px}.login-card p{text-align:center;margin:8px 0 22px;color:#5d716b}.login-card label{display:block;margin:12px 0;color:#254941;font-weight:800}.login-card input{width:100%;box-sizing:border-box;margin-top:7px;padding:12px 13px;border:1px solid #cfe0d9;border-radius:10px;font-size:16px}.login-card button{width:100%;margin-top:14px;padding:13px 16px;font-size:17px}#login-error{min-height:20px;color:#c33737;font-weight:800;text-align:center;margin-top:8px}
.project-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.project-backup{border:1px solid #b66b15;border-radius:7px;padding:9px 12px;background:#d9821f;color:#fff;font-weight:700;cursor:pointer}.project-backup:hover{background:#b96b12}.settings-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px 0}.delete-backup-action{display:inline-block;border:0;border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer;background:#eceeed;color:#59645f;margin-left:6px}
.legal-attendance-input{width:70px;border:1px solid #b8cdc4;border-radius:6px;padding:6px 5px;text-align:center;background:#fff;color:var(--ink);font-weight:700}.legal-attendance-input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 2px rgba(22,113,95,.12)}
.backup-button{border:1px solid #b66b15;border-radius:7px;padding:9px 13px;background:#d9821f;color:#fff;font-weight:700;cursor:pointer}.backup-button:hover{background:#b96b12}dialog#backup-dialog{width:calc(100vw - 60px)!important;max-width:1280px!important;min-width:min(900px,calc(100vw - 60px))!important;padding:0!important;overflow:hidden;border-radius:10px}#backup-dialog::backdrop{background:rgba(12,25,20,.42)}.backup-dialog-content{width:100%!important;height:calc(100vh - 100px)!important;max-height:780px;display:flex;flex-direction:column;background:#fff}.backup-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line);background:#f7faf8}.backup-dialog-head span{display:block;margin-top:5px;color:var(--muted);font-size:12px}.backup-list-wrap{flex:1;max-height:none;overflow:auto}.backup-list-wrap table{min-width:900px}.backup-list-wrap th:nth-child(1){width:190px}.backup-list-wrap th:nth-child(2){width:auto}.backup-list-wrap th:nth-child(3){width:110px}.backup-list-wrap th:nth-child(4){width:170px}.backup-list-wrap td:last-child{white-space:nowrap}.download-action,.restore-action{display:inline-block;border:0;border-radius:6px;padding:6px 10px;font-size:12px;text-decoration:none;cursor:pointer}.download-action{background:#e5eefb;color:#285f9f;margin-right:6px}.restore-action{background:#f9e1e1;color:#a62d2d}.empty-row{text-align:center!important;color:var(--muted);padding:28px!important}
html body dialog#backup-dialog[open]{width:calc(100vw - 60px)!important;max-width:1280px!important;min-width:0!important;margin:auto!important}.backup-dialog-content{box-sizing:border-box}
@media(max-width:900px){.attendance-head{align-items:flex-start}.month-picker{width:100%;justify-content:flex-end}}
.calendar thead th,.calendar thead th.weekend,.calendar thead th.day.weekend{background:#f0f5f2!important;color:#456056!important}
.status.sickHalf{background:#fff0d8;color:#9b6112}.status.leaveHalf{background:#e5eefb;color:#285f9f}
