*{box-sizing:border-box}:root{color:#203044;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f4f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font-family:inherit}.app-shell{background:#f4f7fb;min-height:100vh}.topbar{z-index:5;background:#fff;border-bottom:1px solid #dbe3ef;justify-content:space-between;align-items:center;gap:16px;padding:14px 22px;display:flex;position:sticky;top:0}.brand{color:#102033;font-weight:800}.muted,.section-head p,.login-card p,.demo-logins,.mini-card span,.record-card span,.status-card small{color:#627083;font-size:13px}.user-strip{align-items:center;gap:10px;font-size:14px;font-weight:700;display:flex}.login-page{background:linear-gradient(135deg,#eef6ff 0%,#f8fafc 52%,#eafaf2 100%);place-items:center;min-height:100vh;padding:20px;display:grid}.login-card{background:#fff;border:1px solid #dbe3ef;border-radius:8px;width:min(420px,100%);padding:28px;box-shadow:0 24px 60px #14253f1f}.mark{color:#fff;background:#0f766e;border-radius:8px;place-items:center;width:48px;height:48px;margin-bottom:16px;font-weight:900;display:grid}h1,h2,p{margin-top:0}h1{color:#102033;margin-bottom:8px;font-size:30px;line-height:1.1}h2{color:#102033;margin-bottom:4px;font-size:20px}.stack{gap:14px;margin-top:22px;display:grid}label{text-align:left;color:#314158;gap:7px;font-size:13px;font-weight:700;display:grid}input,select{color:#152238;min-height:42px;font:inherit;background:#fff;border:1px solid #c8d3e1;border-radius:7px;outline:none;padding:0 12px}input:focus,select:focus{border-color:#0f766e;box-shadow:0 0 0 3px #0f766e1f}.btn{min-height:40px;font:inherit;cursor:pointer;border:0;border-radius:7px;padding:0 15px;font-size:14px;font-weight:800}.btn:disabled{cursor:not-allowed;opacity:.5}.btn.primary{color:#fff;background:#0f766e}.btn.dark{color:#fff;background:#102033}.btn.secondary{color:#203044;background:#edf2f7;border:1px solid #dbe3ef}.btn.danger{color:#b42318}.demo-logins{border-top:1px solid #e5ecf4;margin-top:18px;padding-top:16px}.notice{color:#066047;background:#ecfdf5;border:1px solid #b7ead4;border-radius:7px;padding:10px 12px;font-size:13px;font-weight:700}.notice.error{color:#b42318;background:#fef2f2;border-color:#fecaca}.app-alert{width:min(1180px,100% - 44px);margin:16px auto 0}.code-block{color:#dff6ef;text-align:left;background:#102033;border-radius:7px;margin:18px 0 0;padding:14px;font-size:12px;line-height:1.6;overflow-x:auto}.page-grid{gap:16px;width:min(1040px,100%);margin:0 auto;padding:22px;display:grid}.panel{background:#fff;border:1px solid #dbe3ef;border-radius:8px;padding:20px;box-shadow:0 10px 24px #14253f0d}.employee-hero{background:#fff;grid-template-columns:1fr minmax(190px,260px);align-items:center;gap:18px;display:grid}.eyebrow{color:#0f766e;text-transform:uppercase;margin-bottom:8px;font-size:12px;font-weight:900;display:inline-flex}.status-card{background:#f8fafc;border:1px solid #dbe3ef;border-radius:8px;gap:6px;padding:16px;display:grid}.status-card span{color:#627083;text-transform:uppercase;font-size:12px;font-weight:800}.status-card strong{color:#102033;font-size:20px}.section-head{justify-content:space-between;gap:12px;margin-bottom:16px;display:flex}.photo-drop{color:#627083;cursor:pointer;background:#f8fafc;border:2px dashed #aab8ca;border-radius:8px;place-items:center;min-height:250px;display:grid;overflow:hidden}.photo-drop input{display:none}.photo-drop img{object-fit:cover;width:100%;height:260px}.button-row{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.button-row.compact{margin-top:10px}.table{gap:8px;display:grid}.table-row{color:#203044;text-align:left;background:#f8fafc;border:1px solid #e2e8f0;border-radius:7px;grid-template-columns:1.1fr 1.2fr .8fr .8fr .9fr;align-items:center;gap:10px;padding:11px 12px;font-size:13px;display:grid}.table-head{color:#627083;text-transform:uppercase;background:#edf2f7;font-size:12px;font-weight:900}.payroll-filters{grid-template-columns:minmax(180px,1.4fr) minmax(150px,1fr) minmax(130px,.8fr) minmax(130px,.8fr) auto;gap:10px;margin-bottom:14px;display:grid}.payroll-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.payroll-summary div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;gap:5px;padding:14px;display:grid}.payroll-summary span{color:#627083;text-transform:uppercase;font-size:12px;font-weight:800}.payroll-summary strong{color:#102033;font-size:20px}.segmented{background:#edf2f7;border:1px solid #dbe3ef;border-radius:8px;gap:4px;margin-bottom:14px;padding:4px;display:inline-flex}.segmented button{color:#314158;min-height:34px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 14px;font-size:13px;font-weight:800}.segmented button.active{color:#0f766e;background:#fff;box-shadow:0 1px 2px #14253f14}.worker-payroll .table-row{grid-template-columns:1.2fr 1fr .8fr .5fr .6fr .9fr}.site-payroll .table-row{grid-template-columns:1.5fr .7fr .7fr .7fr 1fr}.status{color:#3730a3;text-transform:capitalize;background:#eef2ff;border-radius:999px;width:fit-content;padding:3px 9px;font-size:11px;font-weight:900;display:inline-flex}.status.present,.status.approved{color:#166534;background:#dcfce7}.status.needs_review{color:#9a3412;background:#fff7ed}.status.rejected{color:#991b1b;background:#fee2e2}.admin-layout{grid-template-columns:190px 1fr;gap:16px;width:min(1180px,100%);margin:0 auto;padding:22px;display:grid}.sidebar{align-content:start;gap:8px;display:grid}.sidebar button{color:#314158;text-align:left;text-transform:capitalize;cursor:pointer;background:#fff;border:1px solid #dbe3ef;border-radius:7px;min-height:42px;padding:0 13px;font-weight:800}.sidebar button.active{color:#fff;background:#0f766e;border-color:#0f766e}.admin-content{min-width:0}.record-grid,.cards-list{gap:12px;display:grid}.record-card{text-align:left;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:112px 1fr;gap:14px;padding:12px;display:grid}.record-card img{object-fit:cover;background:#e2e8f0;border-radius:7px;width:112px;height:112px}.photo-placeholder{color:#627083;background:#e2e8f0;border-radius:7px;place-items:center;width:112px;height:112px;font-size:12px;font-weight:800;display:grid}.record-card div,.mini-card{gap:5px;display:grid}.mini-card{text-align:left;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:18px;display:grid}.place-search{grid-template-columns:1fr auto;gap:10px;margin-bottom:14px;display:grid}.toolbar-row{color:#203044;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.form-grid button{justify-self:start}.empty{color:#627083;text-align:center;background:#f8fafc;border:1px dashed #aab8ca;border-radius:8px;padding:22px}@media (width<=760px){.topbar,.user-strip,.employee-hero,.admin-layout,.record-card,.form-grid,.place-search{grid-template-columns:1fr}.toolbar-row{flex-direction:column;align-items:flex-start}.topbar,.user-strip{align-items:flex-start}.topbar{display:grid}.admin-layout,.page-grid{padding:14px}.sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.payroll-filters,.payroll-summary,.table-row,.worker-payroll .table-row,.site-payroll .table-row{grid-template-columns:1fr}.table-head{display:none}}
