:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172033;background:#eef3f6;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.clock-shell{min-height:100vh;padding:clamp(1rem,2vw,2rem);background:linear-gradient(135deg,#2d5b821f,#d8a0591f),#eef3f6}.keypad-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand-lockup{display:flex;min-width:0;align-items:center;gap:.85rem}.clock-logo{width:clamp(4.4rem,9vw,6.4rem);flex:0 0 auto;height:auto}h1,h2,p{margin:0}h1{font-size:clamp(1.4rem,3vw,2.35rem);line-height:1;color:#0f2942}h2{color:#0f2942;font-size:1.35rem;line-height:1.1}.now-panel{display:grid;grid-template-columns:auto auto;align-items:center;gap:.2rem .6rem;min-width:12.75rem;border:1px solid rgba(15,41,66,.12);border-radius:.75rem;background:#ffffffdb;padding:.7rem .85rem;box-shadow:0 10px 24px #0f294212}.now-panel svg{grid-row:span 2;color:#2d5b82;font-size:1.35rem}.now-panel span{color:#5a6b7b;font-size:.85rem}.now-panel strong{color:#0f2942;font-size:1.1rem}.clock-grid{display:grid;grid-template-columns:minmax(18rem,.9fr) minmax(20rem,1.1fr);gap:1rem;max-width:1180px;margin:0 auto}.clock-grid.keypad-only{grid-template-columns:minmax(20rem,32rem);justify-content:center}.punch-panel{min-width:0;border:1px solid rgba(15,41,66,.12);border-radius:.85rem;background:#ffffffe6;box-shadow:0 18px 44px #0f294214}.punch-panel{display:grid;align-content:start;gap:1rem;padding:clamp(1rem,2vw,1.4rem)}.loading-state{display:flex;min-height:8rem;align-items:center;justify-content:center;color:#526577;font-weight:800}.lock-state{display:flex;align-items:center;gap:.9rem;border:1px solid #cbd8e3;border-radius:.85rem;background:#f8fafc;padding:1rem}.lock-state>svg{flex:0 0 auto;color:#9f1239;font-size:2rem}.lock-state p{margin-top:.25rem;color:#526577;font-weight:700}.admin-form{display:grid;gap:.85rem}.admin-form.compact{grid-template-columns:minmax(0,1fr);border:1px solid #cbd8e3;border-radius:.85rem;background:#f8fafc;padding:.9rem}.admin-form label{display:grid;gap:.35rem}.admin-form label span{color:#526577;font-size:.82rem;font-weight:800}.admin-form input,.admin-form select{width:100%;min-height:3rem;border:1px solid #cbd8e3;border-radius:.65rem;background:#fff;color:#172033;padding:.65rem .75rem;font-weight:700}.admin-form input:focus,.admin-form select:focus{border-color:#2d5b82;outline:3px solid rgba(45,91,130,.16)}.admin-submit,.lock-toggle{display:inline-flex;min-height:3rem;align-items:center;justify-content:center;gap:.5rem;border:0;border-radius:999px;color:#fff;font-weight:800}.admin-submit{background:#2d5b82}.admin-submit.danger,.lock-toggle{background:#9f1239}.admin-submit:disabled{background:#94a3b8;opacity:.72}.station-bar{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.station-pill{display:inline-flex;min-width:0;align-items:center;gap:.45rem;border:1px solid rgba(45,91,130,.22);border-radius:999px;background:#edf6ff;color:#0f2942;padding:.55rem .75rem;font-weight:800}.station-pill span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.station-pill svg{flex:0 0 auto;color:#2d5b82}.lock-toggle{flex:0 0 auto;min-width:5.7rem;padding:0 1rem}.clock-number-display{display:flex;min-height:4rem;align-items:center;justify-content:center;border:1px solid #cbd8e3;border-radius:.85rem;background:#f8fafc;color:#0f2942;font-size:clamp(1.4rem,4vw,2.2rem);font-weight:800;letter-spacing:.14em}.clock-number-display.with-alert{padding:.35rem;letter-spacing:normal}.entry-alerts{display:grid;width:100%;gap:.35rem}.entry-alert{width:100%;border-radius:.6rem;padding:.65rem .8rem;text-align:center;font-size:.95rem;font-weight:700;line-height:1.25}.entry-alert strong,.entry-alert span{display:block}.entry-alert strong{margin-bottom:.15rem;font-size:1.05rem}.entry-alert.success{background:#dcfce7;color:#166534}.entry-alert.error{background:#fff1f2;color:#9f1239}.keypad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.keypad button{display:inline-flex;min-height:4.2rem;align-items:center;justify-content:center;border:1px solid #cbd8e3;border-radius:.85rem;background:#fff;color:#172033;font-size:1.45rem;font-weight:800;box-shadow:0 8px 18px #0f29420d;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.keypad button:hover{border-color:#2d5b82;box-shadow:0 12px 24px #2d5b821f;transform:translateY(-1px)}.keypad button.utility{color:#526577;font-size:1rem}.punch-actions{display:grid;grid-template-columns:minmax(0,1fr) 3.4rem minmax(0,1fr);gap:.75rem}.punch-actions button{display:inline-flex;min-height:3.4rem;align-items:center;justify-content:center;gap:.55rem;border:0;border-radius:999px;color:#fff;font-weight:800}.clock-in{background:#166534}.clock-out{background:#9f1239}.override-button{background:#2d5b82;font-size:1.35rem}.override-button.active{background:#b7791f;box-shadow:0 0 0 4px #b7791f33}.punch-actions button:disabled{background:#94a3b8;opacity:.68}.notice{border-radius:.75rem;padding:.95rem 1rem;font-weight:700}.notice strong,.notice span{display:block}.notice strong{margin-bottom:.2rem;font-size:1.1rem}.notice.success{border:1px solid #86efac;background:#dcfce7;color:#166534}.notice.error{border:1px solid #fecdd3;background:#fff1f2;color:#9f1239}@media(max-width:820px){.clock-grid{grid-template-columns:1fr}}@media(max-width:520px){.clock-shell{padding:.75rem}.keypad-header{gap:.5rem}.brand-lockup{gap:.45rem}.clock-logo{width:3rem}h1{font-size:1.15rem;line-height:1.05}.now-panel{min-width:8.25rem;gap:.15rem .45rem;padding:.55rem .6rem}.now-panel svg{font-size:1.1rem}.now-panel span{font-size:.72rem}.now-panel strong{font-size:.95rem}.punch-actions{grid-template-columns:minmax(0,1fr) 3.4rem minmax(0,1fr)}.station-bar{align-items:stretch;flex-direction:column}.lock-toggle{width:100%}}
