:root{--ink:#12251f;--paper:#f3f6f2;--card:#fff;--muted:#65716b;--line:#dbe2dd;--accent:#e86d3c;--green:#1b7554;--red:#9a3d1c;--shadow:0 18px 50px rgba(18,37,31,.09)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 Inter,ui-sans-serif,system-ui,sans-serif}button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.topbar{height:72px;padding:0 max(20px,calc((100vw - 1120px)/2));display:flex;align-items:center;justify-content:space-between;background:var(--ink);color:#fff}.brand{display:flex;align-items:center;gap:12px;font-weight:800}.mark{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:var(--accent);font:22px Georgia,serif}.ghost{border:1px solid #ffffff38;background:transparent;color:#fff;border-radius:10px;padding:9px 14px}main{max-width:1120px;margin:auto;padding:42px 20px 80px}.login-shell{min-height:calc(100vh - 155px);display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}.intro h1,.page-head h1{font:500 clamp(3rem,7vw,5.5rem)/.98 Georgia,serif;letter-spacing:-.045em;margin:10px 0 22px}.intro>p:last-child{max-width:520px;color:var(--muted);font-size:1.1rem}.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:800;margin:0 0 8px}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}.auth-card{padding:30px}.auth-card h2,.section-head h2,.modal h2,.notice h2{font:500 2rem Georgia,serif;margin:0 0 22px}label{display:flex;flex-direction:column;gap:7px;font-weight:700;color:var(--muted);font-size:.9rem;margin-bottom:16px}input,select{width:100%;border:1px solid var(--line);border-radius:11px;padding:12px;background:#fff;color:var(--ink)}input:focus,select:focus{outline:3px solid #e86d3c2f;border-color:var(--accent)}button{border:0;border-radius:11px;padding:12px 16px;font-weight:750}.primary{background:var(--ink);color:#fff}.auth-card .primary{width:100%}.secondary{background:#fff;border:1px solid var(--line);color:var(--ink)}.danger{background:#fff1eb;color:var(--red);border:1px solid #efbca8}.link{background:transparent;color:var(--green);width:100%;margin-top:8px}.hint,.muted{color:var(--muted)}.hint{font-size:.88rem}.page-head,.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.page-head{align-items:center;margin-bottom:34px}.page-head h1{font-size:clamp(2.5rem,5vw,4.2rem);margin-bottom:8px}.badge{padding:7px 11px;border-radius:99px;background:#e4f3eb;color:#125c40;font-weight:750;font-size:.85rem}.notice{padding:26px}.notice p{margin-bottom:0}.section-head{margin:46px 0 16px}.section-head h2{margin:0}.tools{display:flex;gap:10px}.tools input{min-width:290px}.table-wrap{overflow:auto;padding:6px 18px}table{width:100%;min-width:850px;border-collapse:collapse}th,td{text-align:left;padding:15px 10px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}tr:last-child td{border-bottom:0}.person{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#ffd9c8;font-weight:800}.status{display:inline-flex;padding:5px 9px;border-radius:99px;background:#edf0ee;font-size:.8rem}.status.active{background:#e4f3eb;color:#125c40}.actions{display:flex;gap:6px}.small{padding:8px 10px;background:transparent;color:var(--green)}.inactive{opacity:.56}.empty{padding:32px;text-align:center;color:var(--muted)}dialog{border:0;padding:0;border-radius:22px;width:min(620px,calc(100% - 30px));box-shadow:0 30px 90px #0005}dialog::backdrop{background:#0c1915b8;backdrop-filter:blur(3px)}.modal{padding:28px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:13px 18px;border-radius:12px;opacity:0;pointer-events:none;transition:.2s;box-shadow:var(--shadow)}.toast.show{opacity:1;transform:translate(-50%,0)}
.admin-tabs{display:flex;gap:6px;margin-top:18px;border-bottom:1px solid var(--line)}.admin-tab{border-radius:10px 10px 0 0;background:transparent;color:var(--muted)}.admin-tab.active{background:var(--card);color:var(--ink);box-shadow:0 -1px 0 var(--line),1px 0 0 var(--line),-1px 0 0 var(--line)}.report-actions{display:flex;align-items:flex-end;gap:10px}.report-actions label{margin:0}.report-actions input{min-width:170px}.report-summary{padding:22px;margin-bottom:16px}.report-summary strong{display:block;font:500 1.45rem Georgia,serif;margin-top:4px}.report-summary p{margin:5px 0 0}.summary-label{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}
.employee-clock{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:18px}.clock-card,.week-card{padding:28px}.clock-card h2,.week-card h2{font:500 2rem Georgia,serif;margin:0}.clock-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.clock-head p{margin:7px 0 0}.clock-dot{width:16px;height:16px;border-radius:50%;background:#a8b1ac;box-shadow:0 0 0 7px #edf0ee}.clock-dot.active{background:#1b8b62;box-shadow:0 0 0 7px #e4f3eb}.clock-action{width:100%;font-size:1.05rem;margin-top:30px;padding:15px}.week-card .section-head{margin:0 0 12px;align-items:center}.week-card .section-head>strong{font:500 1.65rem Georgia,serif}.time-row{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-top:1px solid var(--line)}.time-row span{display:flex;flex-direction:column}.time-row small{color:var(--muted);margin-top:2px}.scanner-modal video{display:block;width:100%;max-height:52vh;border-radius:14px;background:#0b1512;object-fit:cover}.qr-result{padding:26px;display:flex;align-items:center;justify-content:space-between;gap:30px}.qr-result img{width:min(320px,45%);aspect-ratio:1;background:#fff}.qr-result h3{font:500 1.8rem Georgia,serif;margin:0 0 8px}.download-link{display:inline-flex;text-decoration:none;padding:11px 15px;border-radius:11px;font-weight:750;margin-top:14px}
.month-picker{margin:0;min-width:155px}.time-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0 12px}.time-summary>div{background:var(--paper);border-radius:12px;padding:12px}.time-summary span{display:block;color:var(--muted);font-size:.75rem}.time-summary strong{display:block;font:500 1.3rem Georgia,serif;margin-top:3px}.month-state{display:inline-flex;margin-bottom:12px;padding:5px 9px;border-radius:99px;background:#edf0ee;color:var(--muted);font-size:.78rem;font-weight:750}.month-state.approved,.month-state.locked{background:#e4f3eb;color:#125c40}
@media(max-width:760px){main{padding:28px 16px 70px}.login-shell,.employee-clock{grid-template-columns:1fr;gap:24px;align-content:center}.intro h1{font-size:3.2rem}.page-head,.section-head{align-items:flex-start;flex-direction:column}.tools,.report-actions{width:100%;flex-direction:column;align-items:stretch}.tools input,.report-actions input{min-width:0}.grid{grid-template-columns:1fr}.modal-actions button{flex:1}.admin-tabs{overflow-x:auto}.admin-tab{white-space:nowrap}.qr-result{flex-direction:column;align-items:flex-start}.qr-result img{width:100%}.time-summary{grid-template-columns:1fr 1fr}.time-summary>div:first-child{grid-column:1/-1}.month-picker{width:100%}}
textarea{width:100%;border:1px solid var(--line);border-radius:11px;padding:12px;background:#fff;color:var(--ink);font:inherit;resize:vertical}textarea:focus{outline:3px solid #e86d3c2f;border-color:var(--accent)}.work-status{display:flex;flex-direction:column;gap:2px;white-space:nowrap}.work-status strong{font-size:.87rem}.work-status small{color:var(--muted)}.work-status.clocked-in strong{color:var(--green)}
.report-filter{padding:20px;display:grid;grid-template-columns:150px 190px minmax(230px,1fr) auto;gap:12px;align-items:end}.report-filter label{margin:0}.report-toolbar{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px}.report-details{padding:22px;margin-top:14px}.report-details h3{font:500 1.5rem Georgia,serif;margin:0 0 12px}tfoot th{font-size:.85rem;color:var(--ink);border-top:2px solid var(--line)}
.approval-filter{padding:20px;display:grid;grid-template-columns:190px minmax(250px,1fr) auto;gap:12px;align-items:end}.approval-filter label{margin:0}.approval-summary{padding:22px;margin:18px 0 14px;display:grid;grid-template-columns:1fr 180px auto;gap:24px;align-items:center}.approval-summary strong{display:block;font:500 1.45rem Georgia,serif;margin-top:4px}.approval-summary p{margin:4px 0 0}
.month-lock-card{padding:22px;margin:14px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}.month-lock-card strong{display:block;font:500 1.45rem Georgia,serif;margin-top:4px}.month-lock-card p{margin:4px 0 0}
.payroll-head{margin-top:58px}.payroll-controls{padding:20px;display:grid;grid-template-columns:180px auto minmax(240px,1fr) auto auto;gap:10px;align-items:end}.payroll-controls label{margin:0}
.payroll-print-heading{display:none}.payroll-detail table,.payroll-summary-table table{min-width:0}.numeric{text-align:right}.payroll-detail tr.employee-start td{border-top:3px solid var(--ink)}.payroll-detail tr.employee-start:first-child td{border-top:0}.payroll-detail tbody tr:nth-child(even){background:#f8faf8}.payroll-summary-title{margin:28px 0 10px}.payroll-summary-title h3{font:500 1.5rem Georgia,serif;margin:0}.payroll-summary-table{margin-bottom:26px}.payroll-summary-table table{min-width:0}
@media(max-width:760px){.report-filter,.approval-filter,.approval-summary,.payroll-controls{grid-template-columns:1fr}.report-toolbar,.month-lock-card{align-items:flex-start;gap:10px;flex-direction:column}.month-lock-card button,.payroll-controls button{width:100%}}
.hms-button{margin-top:10px}.hms-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:16px}.hms-card{padding:22px}.hms-card h3,.hms-modal h3{font:500 1.45rem Georgia,serif;margin:0 0 14px}.hms-modal h3{margin-top:28px}.hms-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.hms-row>div:first-child{display:flex;flex-direction:column}.hms-row small,.hms-deviation small{color:var(--muted)}.hms-link{text-decoration:none}.hms-deviation{border-top:1px solid var(--line);padding:16px 0}.hms-deviation>div{display:flex;flex-direction:column;gap:5px}.hms-deviation p{margin:4px 0 10px}.hms-deviation label{margin-bottom:8px}@media(max-width:760px){.hms-grid{grid-template-columns:1fr}}
.routine{background:#f4f6f4;border:1px solid var(--line);border-radius:14px;padding:16px;margin:18px 0}.routine h3{margin:0 0 8px!important}.routine ul{padding-left:20px;margin:0}.routine li{margin:7px 0}.check-row{display:flex;flex-direction:row;align-items:center;gap:10px}.check-row input{width:auto}.sick-admin-card{padding:22px}.sick-admin-card h3,.sick-modal>h3{font:500 1.45rem Georgia,serif}.sick-request{border-top:1px solid var(--line);padding:16px 0}.sick-request:first-child{border-top:0}.sick-request-head{display:flex;justify-content:space-between;gap:16px}.sick-request p{margin:6px 0}.sick-actions{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:end;margin-top:12px}.sick-actions label{margin:0}.status.pending{background:#fff2cc;color:#745600}.status.rejected{background:#fde8e3;color:#8f2d1f}@media(max-width:760px){.sick-actions{grid-template-columns:1fr}.sick-request-head{flex-direction:column}}
.vacation-modal h3{font:500 1.45rem Georgia,serif}.carryover-box{border-top:2px solid var(--line);margin-top:26px;padding-top:6px}.vacation-admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}@media(max-width:760px){.vacation-admin-grid{grid-template-columns:1fr}}
.hr-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.contract-preview{font:inherit;line-height:1.6;background:#f7f8f6;border:1px solid var(--line);border-radius:10px;padding:16px;max-height:520px;overflow:auto}.contract-preview section+section{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.contract-preview p{margin:5px 0}.sick-request details{margin:12px 0}.sick-request summary{cursor:pointer;font-weight:700}.status.locked{background:#fff3d8;color:#765300}.status.signed{background:#e6f4ea;color:#176b34}.module-toolbar,.module-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.module-toolbar{margin:18px 0 10px}.contract-module{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px;background:#fff}.contract-module.inactive{opacity:.58;background:#f1f2f0}.contract-module label{margin-top:10px}.module-head .check-row{margin:0}.module-head .actions{flex-wrap:wrap}@media(max-width:900px){.hr-grid{grid-template-columns:1fr}}@media(max-width:600px){.module-head{align-items:flex-start;flex-direction:column}}
@media print{body.print-report .topbar,body.print-report main>*:not(#app),body.print-report .page-head,body.print-report .admin-tabs,body.print-report .admin-view:not(#summaryReportsPanel),body.print-report #summaryReportsPanel>.section-head,body.print-report .report-filter,body.print-report #printSummaryReport{display:none!important}body.print-report{background:#fff}body.print-report main{max-width:none;padding:0}body.print-report #app,body.print-report #adminPanel,body.print-report #summaryReportsPanel,body.print-report #summaryReportResult{display:block!important}body.print-report .card{box-shadow:none}body.print-report table{min-width:0;font-size:12px}}
@media print{body.print-payroll{background:#fff}body.print-payroll .topbar,body.print-payroll main>*:not(#app),body.print-payroll .page-head,body.print-payroll .admin-tabs,body.print-payroll .admin-view:not(#summaryReportsPanel),body.print-payroll #summaryReportsPanel>*:not(#payrollReportResult),body.print-payroll #payrollReportResult>.report-toolbar{display:none!important}body.print-payroll main{max-width:none;padding:0}body.print-payroll #app,body.print-payroll #adminPanel,body.print-payroll #summaryReportsPanel,body.print-payroll #payrollReportResult,body.print-payroll #payrollPrintable{display:block!important}body.print-payroll .payroll-print-heading{display:block;margin-bottom:22px}body.print-payroll .payroll-print-heading h2{font:500 2rem Georgia,serif;margin:5px 0}body.print-payroll .card{box-shadow:none;border-radius:0}body.print-payroll table{font-size:11px}body.print-payroll th,body.print-payroll td{padding:8px 9px}body.print-payroll .payroll-summary-title{break-before:auto}body.print-payroll tr{break-inside:avoid}@page{size:A4;margin:15mm}}
