:root{--ink:#102a3a;--muted:#6b7f8b;--blue:#075985;--cyan:#0ea5a4;--bg:#f3f8fa;--white:#fff;--red:#c33;--shadow:0 18px 55px rgba(18,61,82,.12)}*{box-sizing:border-box}body{margin:0;background:linear-gradient(145deg,#e9f5f7,#f7fafb 48%,#eaf1f5);color:var(--ink);font:15px/1.45 Inter,system-ui,-apple-system,"Segoe UI",sans-serif;min-height:100vh}.hidden{display:none!important}button,input{font:inherit}button{cursor:pointer}#app{min-height:100vh}.login{min-height:100vh;max-width:460px;margin:auto;padding:clamp(42px,9vh,90px) 28px 32px;display:flex;flex-direction:column}.brand-mark{width:68px;height:68px;border-radius:22px;background:linear-gradient(135deg,var(--blue),var(--cyan));display:grid;place-items:center;color:#fff;font-weight:850;letter-spacing:.06em;box-shadow:var(--shadow);margin-bottom:24px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:800;color:var(--cyan);margin:0 0 8px}.login h1{font-size:clamp(38px,10vw,54px);line-height:1.03;letter-spacing:-.055em;margin:0}.login h1 span{color:var(--blue)}.lead{color:var(--muted);font-size:17px;margin:20px 0 32px}.login form{display:grid;gap:16px}.login label{font-weight:700;font-size:13px}.login input{display:block;width:100%;margin-top:7px;padding:16px;border:1px solid #cad9df;border-radius:14px;background:#fff;outline:none}.login input:focus{border-color:var(--cyan);box-shadow:0 0 0 4px #0ea5a41a}.primary{border:0;border-radius:15px;padding:16px;color:#fff;background:linear-gradient(135deg,var(--blue),#087a91);font-weight:800;box-shadow:0 10px 25px #07598535}.error{color:var(--red);text-align:center;min-height:20px}.fine{margin-top:auto;text-align:center;color:#91a0a8;font-size:12px}.shell{max-width:520px;min-height:100vh;margin:auto;background:rgba(255,255,255,.88);padding:24px 22px 100px;box-shadow:var(--shadow);position:relative}.shell header{display:flex;justify-content:space-between;align-items:flex-start;margin:4px 0 18px}.shell h2{font-size:28px;letter-spacing:-.035em;margin:0}.muted{margin:3px 0;color:var(--muted)}.icon{border:0;width:42px;height:42px;border-radius:13px;background:#e9f2f5;color:var(--blue);font-weight:bold}.connection{display:inline-flex;gap:8px;align-items:center;padding:8px 12px;border-radius:99px;background:#eaf8f1;color:#177549;font-size:12px;font-weight:800}.connection i{width:8px;height:8px;border-radius:50%;background:#22b36c}.connection.offline{background:#fff2dc;color:#9b6210}.connection.offline i{background:#e89a21}.location,.last,.staff{display:flex;gap:14px;align-items:center;background:#fff;border:1px solid #e5edf0;border-radius:20px;padding:17px;margin:16px 0;box-shadow:0 8px 30px rgba(31,78,99,.06)}.pin{width:42px;height:42px;border-radius:13px;background:#e5f6f5;color:var(--cyan);display:grid;place-items:center;font-size:25px}.location p,.last span{margin:3px 0 0;color:var(--muted);font-size:12px}.clock{text-align:center;margin:26px 0 18px}.clock strong{display:block;font-size:64px;line-height:1;letter-spacing:-.06em;color:var(--blue)}.clock span{display:block;font-weight:750;margin-top:8px}.clock small{color:var(--muted)}.punch{width:min(270px,80vw);height:min(270px,80vw);border-radius:50%;border:10px solid #d7eef0;margin:0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;background:linear-gradient(145deg,#087693,var(--cyan));box-shadow:0 18px 45px #08769344;font-weight:900;letter-spacing:.04em;font-size:18px}.punch.exit{background:linear-gradient(145deg,#d65a4a,#ad3434);border-color:#f5ded9}.punch small{font-weight:500;letter-spacing:0;opacity:.85;margin-top:6px}.punch:disabled{filter:grayscale(.7);opacity:.65}.feedback{text-align:center;min-height:20px;color:var(--muted)}.last{display:block}.last strong{display:block;margin-top:5px}nav{position:absolute;bottom:0;left:0;right:0;height:78px;background:#fff;border-top:1px solid #e5edf0;display:flex;justify-content:space-around;padding-bottom:env(safe-area-inset-bottom)}nav button{border:0;background:none;color:#82939c;display:grid;gap:2px;place-items:center;font-size:20px}nav button span{font-size:11px}nav button.active{color:var(--blue)}.modal{position:fixed;inset:0;background:#0a2631cc;display:grid;place-items:center;padding:20px;z-index:10}.modal>div{width:min(390px,100%);background:#fff;border-radius:28px;padding:30px;text-align:center}.success{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;background:#e6f7ef;color:#14a45f;font-size:42px;margin:auto}.modal h2{margin:20px 0 8px}.modal strong{font-size:42px;color:var(--blue)}.modal .primary{width:100%;margin-top:15px}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.metric{padding:16px;border-radius:18px;background:#fff;border:1px solid #e5edf0}.metric strong{display:block;font-size:28px}.metric span{color:var(--muted);font-size:12px}.staff{display:block}.staff h3{margin:0 0 10px}.person{display:flex;justify-content:space-between;gap:10px;padding:13px 0;border-top:1px solid #edf1f3}.person small{display:block;color:var(--muted)}.badge{white-space:nowrap;font-size:11px;font-weight:800;padding:6px 9px;border-radius:20px;background:#edf1f3;height:max-content}.badge.in{background:#e6f7ef;color:#178151}.badge.out{background:#eef2fa;color:#46638a}.badge.missing{background:#fff0e3;color:#a45b19}.admin-clock{color:var(--muted)}@media(min-width:700px){body{padding:28px}.shell,.login{min-height:calc(100vh - 56px);border-radius:30px}.login{background:#ffffffcc;box-shadow:var(--shadow)}}

