:root{--green:#28614e;--light:#e8efe9;--ink:#233e34;--muted:#7a857d;--border:#e2e7df;--paper:#fff;--bg:#f5f6f0}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'Microsoft YaHei',system-ui,sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:9px;padding:12px 19px;background:var(--green);color:white;font-weight:600}button:hover{filter:brightness(.94)}button:disabled{opacity:.45;cursor:not-allowed}.secondary{background:#fff;border:1px solid var(--border);color:var(--green)}.quiet{background:transparent;color:var(--muted);padding:9px}.badge{padding:5px 10px;background:var(--light);color:var(--green);border-radius:6px;font-size:11px;display:inline-block}.pending{background:#fff1d8;color:#9c6b23}.question{background:#fbe9e5;color:#a05941}header{height:78px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 6%;background:#fff}.logo{display:flex;gap:10px;align-items:center;font-size:23px;font-weight:700;letter-spacing:2px}.logo span{background:var(--green);color:white;width:34px;height:37px;display:grid;place-items:center;border-radius:9px;font-size:21px}.logo small{font-size:11px;font-weight:400;letter-spacing:1px;color:var(--muted);margin-left:12px}.topright{display:flex;gap:13px;align-items:center}main{max-width:1120px;margin:38px auto;padding:0 24px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--muted);text-transform:uppercase}h1{font-size:30px;letter-spacing:1px;margin:9px 0 10px}h2{font-size:18px;margin:0 0 18px}h3{font-size:15px;margin:0 0 14px}p{line-height:1.8;color:var(--muted)}.hero{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.hero p{margin:0}.layout{display:grid;grid-template-columns:1fr 310px;gap:24px}.card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:26px;margin-bottom:22px}.salaryhead{display:flex;align-items:center;justify-content:space-between}.amount{font-size:48px;font-weight:600;letter-spacing:-1.5px;margin:12px 0}.amount small{font-size:15px;color:#bfdbce;margin-right:10px}.salary{background:var(--green);color:white;border:none;position:relative;overflow:hidden}.salary:after{content:'¥';position:absolute;right:15px;top:-35px;font-size:210px;color:#ffffff06;transform:rotate(-12deg);pointer-events:none}.salary p{color:#cbdbd2;margin:0;font-size:12px}.salary .badge{background:#ffffff20;color:#fff}.salarymeta{display:flex;gap:32px;border-top:1px solid #ffffff24;padding-top:18px;margin-top:18px;font-size:12px;color:#dce6de}.sectiontitle{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.sectiontitle h2{margin:0}.line{display:flex;justify-content:space-between;padding:12px 0;gap:15px}.line span{color:#6d7b72}.line strong{font-weight:500}.divider{border-top:1px dashed var(--border);margin:13px 0}.total{border-top:1px solid var(--border);margin-top:9px;padding-top:18px;font-size:16px}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:30px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#86a894;margin-right:7px}.red{color:#a46e52}.actions{display:flex;gap:12px;margin-top:22px}.actions button:first-child{flex:1}.note{font-size:12px;line-height:1.9;color:var(--muted)}.avatar{width:43px;height:43px;background:#e8efe9;border-radius:50%;display:grid;place-items:center;font-weight:600;font-size:17px}.profile{display:flex;align-items:center;gap:13px;margin-bottom:23px}.profile p{margin:3px 0;font-size:12px}.profile strong{font-size:16px}.historyrow{display:flex;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid #edf0e9;gap:12px}.historyrow:last-child{border-bottom:0}.historyrow button{background:transparent;color:var(--ink);padding:0;text-align:left;font-weight:500}.historyrow small{display:block;color:var(--muted);margin-top:5px}.footer{text-align:center;padding:20px;font-size:11px;color:#939c91;line-height:1.9}.banner{border:1px solid #e4e6cd;background:#f4f3e5;color:#838164;padding:11px 18px;font-size:12px;border-radius:9px;margin-bottom:24px}.login{max-width:450px;margin:55px auto}.login .card{padding:34px}.login h1{font-size:26px}.login .intro{margin-bottom:28px}.tabs{display:flex;border-bottom:1px solid var(--border);gap:25px;margin-bottom:24px}.tabs button{background:none;color:var(--muted);border-radius:0;padding:12px 0}.tabs button.active{color:var(--green);border-bottom:2px solid var(--green)}label{display:block;font-size:12px;margin:17px 0 7px;color:#627466}input,select,textarea{width:100%;border:1px solid #dbe1d6;border-radius:8px;padding:12px;background:#fcfdf9;color:var(--ink);outline:none}input:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #28614e13}input[type=checkbox]{width:auto;accent-color:var(--green);margin-right:7px}.full{width:100%;margin-top:23px}.hint{background:var(--bg);border-radius:8px;padding:13px;font-size:12px;color:var(--muted);line-height:1.9;margin-top:20px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:24px}.stat{background:white;border:1px solid var(--border);border-radius:12px;padding:20px}.stat span{color:var(--muted);font-size:12px}.stat strong{display:block;font-size:28px;margin-top:8px}.adminnav{display:flex;gap:10px;margin-bottom:24px;flex-wrap:wrap}.adminnav button{background:transparent;color:var(--muted)}.adminnav button.active{background:var(--green);color:white}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:12px;text-align:left}th{background:#f5f7f2;color:#758171;font-weight:500}th,td{padding:15px 12px;border-bottom:1px solid var(--border)}td button{font-size:11px;padding:7px 10px}td small{color:var(--muted)}.upload{border:1.5px dashed #bccbbd;border-radius:12px;text-align:center;background:#fafcf8;padding:34px 20px;margin:20px 0}.upload b{display:block;margin:8px}.upload input{max-width:330px;background:white}.error{color:#a54937;font-size:12px;line-height:1.8}.empty{text-align:center;padding:35px;color:var(--muted)}#toast{position:fixed;bottom:27px;left:50%;transform:translateX(-50%);background:#233e34;color:white;padding:13px 22px;border-radius:10px;box-shadow:0 8px 28px #0002;display:none;z-index:20;max-width:90%;white-space:pre-line}dialog{border:1px solid var(--border);border-radius:16px;padding:28px;max-width:450px;width:calc(100% - 32px);color:var(--ink)}dialog::backdrop{background:#142c2455;backdrop-filter:blur(3px)}.code{font:700 28px monospace;letter-spacing:3px;background:var(--light);padding:20px;text-align:center;border-radius:9px}.hide{display:none}.mobilebar{display:none}a{color:var(--green)}.checklabel{display:flex;align-items:center;gap:4px;font-size:12px}.subtle{color:var(--muted);font-size:12px}button:focus-visible{outline:3px solid #a8c8b5;outline-offset:3px}@media(max-width:760px){header{height:65px;padding:0 20px}.logo small{display:none}.logo{font-size:20px}.topright{gap:4px}.topright .badge{display:none}main{margin:25px auto;padding:0 16px}.hero{align-items:flex-start;gap:10px}h1{font-size:25px}.hero p{font-size:12px}.hero select{width:125px;padding:9px;font-size:12px}.layout{grid-template-columns:1fr;gap:0}.card{padding:22px;border-radius:13px;margin-bottom:16px}.amount{font-size:43px}.twocol{grid-template-columns:1fr;gap:15px}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.stat{padding:16px}.login{margin:30px auto}.login .card{padding:25px}.banner{font-size:11px}.salarymeta{gap:22px}.actions{flex-wrap:wrap}.hero.adminhero{display:block}.adminhero button{margin-top:16px}.sectiontitle{gap:10px}.sectiontitle .secondary{font-size:11px;padding:8px}.footer{padding-bottom:25px}}@media print{header,.banner,.actions,.footer,aside,.hero{display:none}main{margin:0}.layout{display:block}.card{break-inside:avoid}.salary{color:black;background:white}.salary p,.salarymeta{color:black}}
.hero>select{width:170px;flex-shrink:0}.hero>div{min-width:0}@media(max-width:760px){.hero>select{width:125px}}

.employee-add{background:#215943;color:#fff;border:1px solid #16422f;min-height:46px;box-shadow:0 2px 5px #163e2620}.sectiontitle{flex-wrap:wrap}.empty .employee-add{margin-top:12px}@media(max-width:760px){.sectiontitle .employee-add{width:100%}}

.staff-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:18px 0;margin-bottom:20px;border-bottom:1px solid var(--border)}.staff-summary span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.staff-summary strong{font-weight:500}.danger{background:#fff0ec;color:#9c3525;border:1px solid #efc4ba;padding:8px 12px}.month-filter{display:flex;align-items:center;gap:20px}.month-filter label{margin:0;white-space:nowrap}.month-filter select{max-width:230px}.slip-preview{width:100%}dialog:has(.slip-preview){max-width:800px}dialog{max-height:90vh;overflow:auto}.sectiontitle .actions{margin:0}td button{margin:3px 0}@media(max-width:760px){.staff-summary{grid-template-columns:1fr}.sectiontitle .actions{width:100%}.sectiontitle .actions button{flex:1}.wage-details .line{font-size:13px}.wage-details .line span{max-width:65%}}@media print{html body>*{display:none!important}html body::after{content:"工资信息不支持打印或导出 PDF";display:block!important;color:#000;background:#fff;padding:30px}}
.wage-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.wage-pair .line{align-items:baseline;flex-wrap:wrap;gap:6px 10px}.wage-pair .line strong{white-space:nowrap}.wage-details .wage-pair .line span{max-width:none}@media(max-width:400px){.wage-pair{gap:12px}.wage-pair .line{font-size:12px}}
.wage-pair{gap:0;background:#f5f8f5;border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin:4px 0 12px}.wage-pair .line{display:flex;justify-content:flex-start;align-items:center;align-content:center;gap:8px;padding:3px 0;min-width:0}.wage-pair .line:first-child{padding-right:16px}.wage-pair .line+ .line{border-left:1px solid #d5dfd7;padding-left:16px}.wage-pair .line span{font-size:12px}.wage-pair .line strong{font-size:15px;font-weight:600;color:var(--ink)}@media(max-width:480px){.wage-pair{padding:12px 10px;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.wage-pair .line{flex-direction:column;align-items:flex-start;gap:7px}.wage-pair .line:first-child{padding-right:10px}.wage-pair .line+ .line{padding-left:12px}.wage-pair .line strong{font-size:15px}}
.wage-details .line strong.wage-money{color:#1d5ca8;font-weight:600}.wage-details .line strong.wage-hours{color:var(--ink)}
.wage-details h2{font-size:22px}.wage-details h3{font-size:18px}.wage-details .line{font-size:16px;padding:14px 0;line-height:1.55}.wage-details .line strong{font-size:18px}.wage-details .staff-summary span{font-size:15px}.wage-details .staff-summary strong{font-size:18px}@media(max-width:760px){.wage-details .line{font-size:15px;gap:12px}.wage-details .line strong{font-size:17px}.wage-details .line span{max-width:62%}}
.confirmation-notice{padding:14px 16px;margin:0 0 16px;background:#fff3da;border:1px solid #e4b96b;border-radius:10px;color:#8a4b0b;font-size:16px;font-weight:600;line-height:1.7}
