:root{--green: #00e4b4;--green-soft: #e9fff9;--navy: #171a33;--text: #2f3037;--muted: #757b8c;--border: #dfe3ea;--bg: #f4f6f8;--danger: #d63d32;--warning: #c98212;--success: #2f8a55;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--green)}.login-card{width:min(420px,100%);display:grid;gap:16px;padding:26px;border-radius:10px;background:#fff;box-shadow:10px 12px #171a332e}.login-card img{width:220px;max-width:100%}.login-card h1,.login-card p{margin:0}.login-card h1{color:var(--navy);font-size:28px}.login-card p{color:var(--muted)}.login-card form,.drawer-form,.stack{display:grid;gap:14px}label{display:grid;gap:7px;color:var(--navy);font-size:13px;font-weight:800}input,select,textarea{width:100%;min-height:46px;border:1px solid var(--border);border-radius:6px;padding:0 12px;background:#fff;color:var(--text);font-weight:650}textarea{min-height:120px;padding:12px;resize:vertical}.login-card button,.primary{min-height:50px;border:0;border-radius:6px;padding:0 16px;background:var(--green);color:#17222e;font-weight:900}.login-card button.secondary-action{background:#fff;border:1px solid var(--border);color:var(--text)}.app{min-height:100vh;display:grid;grid-template-rows:64px 1fr 70px}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:var(--green);box-shadow:0 1px #171a3314}.app-header img{width:154px;display:block}.app-header button,.month-header button,.drawer header button{width:38px;height:38px;display:inline-grid;place-items:center;border:0;border-radius:50%;background:#ffffffb8;color:var(--navy)}.app-header .logo-button{width:auto;height:auto;padding:0;border-radius:0;background:transparent}.screen{width:min(780px,100%);min-width:0;margin:0 auto;padding:16px 14px 88px}.hello-card,.clock-card,.panel,.month-header,.metric,.calendar-card{border:1px solid var(--border);border-radius:8px;background:#fff;box-shadow:0 8px 22px #171a330f}.hello-card{display:grid;gap:3px;padding:18px}.hello-card span,.clock-card span,.clock-card small,.metric span,.muted{color:var(--muted)}.hello-card strong{color:var(--navy);font-size:24px}.hello-card small{color:var(--muted);font-weight:700}.clock-card{display:grid;justify-items:center;gap:10px;padding:24px 18px;text-align:center}.clock-card strong{color:var(--navy);font-size:54px;line-height:1;letter-spacing:0}.clock-card em{color:var(--navy);font-size:22px;font-style:normal;font-weight:900}.clock-card button{width:100%;max-width:420px;min-height:64px;margin-top:6px;border:0;border-radius:6px;background:var(--navy);color:#fff;font-size:18px;font-weight:900}.clock-card button:disabled{background:#b8bdc8}.device-card{display:grid;gap:8px;padding:14px;border-radius:8px;background:var(--green-soft);color:var(--navy);font-size:13px;font-weight:750}.device-card span,.panel-title,.legend span,.bottom-nav button{display:flex;align-items:center;gap:8px}.panel{padding:16px}.panel.flat{box-shadow:none}.panel-title{margin-bottom:10px;color:var(--navy);font-weight:900}.mark-row,.request-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid var(--border)}.mark-row span,.request-row span{color:var(--muted)}.mark-row strong,.request-row strong{color:var(--navy)}.request-status{display:grid;justify-items:end;gap:6px;flex:0 0 auto}.request-actions,.inline-actions{display:inline-flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.request-actions button,.inline-actions button{min-height:30px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--navy);font-size:12px;font-weight:800}.inline-actions{width:100%;margin-top:10px}.month-header{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;gap:10px;padding:14px}.month-header div{display:grid;justify-items:center;gap:2px}.month-header strong{color:var(--navy);font-size:20px;text-transform:capitalize}.month-header span{color:var(--muted);font-size:13px;font-weight:700}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.metric{display:grid;gap:7px;padding:14px}.metric strong{color:var(--navy);font-size:20px}.metric.success strong{color:var(--success)}.metric.danger strong{color:var(--danger)}.calendar-card{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:12px}.calendar-card>strong{padding:8px 0;color:var(--muted);text-align:center;font-size:12px}.day{aspect-ratio:1;min-width:0;display:grid;place-items:center;gap:2px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--navy);font-weight:900}.day span{font-size:14px}.day em{font-size:10px;font-style:normal}.day.blank{visibility:hidden}.day.completo,.day.prestacao_servico,.day.dispensado,.day.feriado,.day.folga,.day.ferias,.day.pausa_remunerada_pj,.day.pausa_nao_remunerada_pj,.day.indisponibilidade_pj{border-color:#2f8a5533;background:#ecfdf3;color:var(--success)}.day.falta,.day.inconsistente{border-color:#d63d322e;background:#fff3f1;color:var(--danger)}.day.atraso,.day.pendente{border-color:#c9821233;background:#fff8e7;color:var(--warning)}.legend{display:flex;flex-wrap:wrap;gap:10px;color:var(--muted);font-size:12px;font-weight:800}.legend i{width:10px;height:10px;border-radius:50%}.legend .ok{background:var(--success)}.legend .warn{background:var(--warning)}.legend .danger{background:var(--danger)}.legend .off{background:#aab1bf}.bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:20;min-height:70px;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--border);background:#fff}.bottom-nav button{justify-content:center;border:0;background:transparent;color:var(--muted);font-size:13px;font-weight:900}.bottom-nav button.active{color:var(--navy);background:var(--green-soft)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;justify-content:center;align-items:flex-end;background:#171a337a}.drawer{width:min(760px,100%);max-height:min(86vh,720px);display:grid;grid-template-rows:auto 1fr;border-radius:16px 16px 0 0;background:#fff;overflow:hidden}.drawer header{min-height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--border)}.drawer header strong{color:var(--navy);font-size:18px}.drawer header button{font-size:28px;line-height:1}.drawer-body{min-height:0;display:grid;gap:14px;padding:18px;overflow:auto}.day-summary{display:grid;grid-template-columns:1fr auto;gap:12px}.day-summary span{color:var(--muted);font-weight:750}.day-summary strong{color:var(--navy)}.day-summary .falta,.rejeitado{color:var(--danger)}.day-summary .completo,.day-summary .prestacao_servico,.aprovado,.day-summary .ferias,.day-summary .pausa_remunerada_pj,.day-summary .pausa_nao_remunerada_pj,.day-summary .indisponibilidade_pj{color:var(--success)}.pendente,.day-summary .atraso,.day-summary .inconsistente{color:var(--warning)}.drawer-actions{position:sticky;bottom:-18px;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:4px -18px -18px;padding:14px 18px;border-top:1px solid var(--border);background:#fff}.ghost{min-height:50px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--navy);font-weight:900}.alert{border-radius:6px;padding:12px;font-size:13px;font-weight:800}.alert.success{background:#ecfdf3;color:var(--success)}.alert.error{background:#fff3f1;color:var(--danger)}.alert.pending{background:#fff8e7;color:var(--warning)}@media(min-width:800px){.app{grid-template-rows:72px 1fr}.bottom-nav{right:auto;left:50%;bottom:18px;width:min(420px,calc(100% - 28px));min-height:58px;transform:translate(-50%);border:1px solid var(--border);border-radius:999px;overflow:hidden;box-shadow:0 12px 30px #171a331f}.screen{padding-top:24px}}@media(max-width:380px){.summary-grid{grid-template-columns:1fr}.clock-card strong{font-size:46px}}
