:root{--c:#01216d;--c2:#00a6ca;--cd:#091b6b;--bg:#f3f6fb;--fg:#0e0f10;--muted-c:#666;--bd:#dde3ea;--ok:#1e8e3e;--bad:#c5221f;--warn:#b06000;--info:#1a73e8;font-family:var(--font,Roboto, system-ui, -apple-system, Segoe UI, sans-serif);color:var(--fg,#0e0f10);font-size:15px}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--c2)}h2,h3,h4{margin:.2em 0 .5em}.center{flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;padding:1rem;display:flex}.narrow{flex-direction:column;gap:.6rem;width:min(400px,100%);display:flex}.card{border:1px solid var(--bd);background:#fff;border-radius:10px;min-width:0;padding:1rem}.card-h{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.card-h h3{margin:0;font-size:1.05rem}.grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:1rem;display:grid}.wide{grid-column:1/-1}.row{align-items:center;display:flex}.col{flex-direction:column;display:flex}.gap{gap:.5rem}.wrap{flex-wrap:wrap}.spacer{flex:1}.muted{color:#6b7785}.small{font-size:.85em}.pad{padding:.75rem 0}.nowrap{white-space:nowrap}.pre{white-space:pre-wrap}.btn{font:inherit;cursor:pointer;color:#1d2733;background:#e8edf3;border:1px solid #0000;border-radius:8px;padding:.5rem .9rem;text-decoration:none;display:inline-block}.btn.primary{background:var(--c2);color:#fff}.btn.danger{background:var(--bad);color:#fff}.btn.secondary{border-color:var(--bd);background:#fff}.btn.ghost{background:0 0}.btn:disabled{opacity:.55;cursor:default}.btn.punch{min-width:150px;padding:1rem 1.4rem;font-size:1.2rem}.punch-buttons{flex-wrap:wrap;gap:.75rem;margin:.75rem 0;display:flex}input,select,textarea{font:inherit;border:1px solid var(--bd);background:#fff;border-radius:7px;max-width:100%;padding:.45rem .55rem}input[type=checkbox],input[type=radio]{width:auto}.field{flex-direction:column;gap:.25rem;margin-bottom:.5rem;display:flex}.field>span{color:#4a5561;font-size:.85em}.check{align-items:center;gap:.5rem;margin:.4rem 0;display:flex}.form{flex-direction:column;gap:.3rem;display:flex}.form.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.2rem 1rem;display:grid}.form.inline{flex-flow:wrap;align-items:center;gap:.4rem;margin:.5rem 0}.span2{grid-column:1/-1}.alert{border-radius:8px;margin:.5rem 0;padding:.6rem .8rem}.alert.error{color:var(--bad);background:#fde8e7}.alert.ok{color:var(--ok);background:#e6f4ea}.alert.info{color:#174ea6;background:#e8f0fe}.alert.warn{color:var(--warn);background:#fef7e0}.warn-text{color:var(--warn)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{border-bottom:1px solid var(--bd);text-align:left;vertical-align:top;padding:.4rem .5rem}th{white-space:nowrap;background:#f7f9fb;font-weight:600}.badge{background:#e8edf3;border-radius:99px;margin-left:.2rem;padding:.05rem .45rem;font-size:.78rem;display:inline-block}.badge.ok{color:var(--ok);background:#e6f4ea}.badge.bad{color:var(--bad);background:#fde8e7}.badge.warn{color:var(--warn);background:#fef7e0}.badge.info{color:#174ea6;background:#e8f0fe}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:10;background:var(--c);color:#fff;padding:.5rem .75rem;padding-top:max(.5rem, env(safe-area-inset-top));align-items:center;gap:.5rem;display:flex;position:sticky;top:0}.topbar .btn.ghost{color:#fff}.brand{font-size:1.05rem}.who{opacity:.9;font-size:.85rem}.bell{color:#fff;text-decoration:none;position:relative}.dot{background:var(--bad);color:#fff;border-radius:99px;padding:0 .35rem;font-size:.7rem;position:absolute;top:-6px;right:-10px}.body{flex:1;min-height:0;display:flex}.side{border-right:1px solid var(--bd);background:#fff;flex-shrink:0;width:230px;padding:.5rem;overflow-y:auto}.side a{color:#1d2733;border-radius:7px;padding:.45rem .6rem;font-size:.92rem;text-decoration:none;display:block}.side a.active{color:#174ea6;background:#e8f0fe;font-weight:600}.nav-h{text-transform:uppercase;letter-spacing:.06em;color:#6b7785;margin:.8rem .6rem .2rem;font-size:.72rem}.main{flex:1;min-width:0;padding:1rem}.menu{display:none}@media (width<=820px){.menu{display:inline-block}.who{display:none}.side{z-index:20;transition:transform .2s;position:fixed;top:48px;bottom:0;left:0;transform:translate(-100%);box-shadow:2px 0 8px #0002}.side.open{transform:none}.main{padding:.6rem}.grid{grid-template-columns:1fr}}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--bd);padding:.45rem 0}.list li.unread{font-weight:600}.camera{aspect-ratio:4/3;background:#111;border-radius:10px;width:min(360px,100%);margin:.5rem 0;position:relative;overflow:hidden}.camera video{object-fit:cover;width:100%;height:100%;transform:scaleX(-1)}.stub{color:#9ab;justify-content:center;align-items:center;font-size:.9rem;display:flex;position:absolute;inset:0}.prompt{color:var(--c2);margin:.4rem 0;font-size:1.1rem;font-weight:600}.punch-flow{border-top:1px solid var(--bd);margin-top:.75rem;padding-top:.75rem}.cal{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-h{text-align:center;color:#6b7785;font-size:.75rem}.cal-d{border:1px solid var(--bd);cursor:pointer;min-height:52px;font:inherit;background:#fff;border-radius:7px;flex-direction:column;align-items:center;padding:3px;display:flex;position:relative}.cal-d .n{color:#6b7785;align-self:flex-start;font-size:.7rem}.cal-d .c{font-size:.85rem;font-weight:700}.cal-d .lm{color:var(--warn);font-size:.62rem;position:absolute;top:2px;right:4px}.s-P{background:#e6f4ea!important}.s-A{background:#fde8e7!important}.s-HD{background:#fef7e0!important}.s-L,.s-HL{background:#e8f0fe!important}.s-WO,.s-H{background:#f1f3f4!important}.s-OD,.s-WFH{background:#e0f7fa!important}.s-pending{background:#f3f8ff}.s-IN{background:#fffde7!important}.muster td,.muster th{text-align:center;padding:.25rem .3rem;font-size:.78rem}.muster td:first-child{text-align:left}th.sun{color:var(--bad)}.day-detail{border:1px solid var(--bd);background:#fafbfc;border-radius:8px;margin-top:.75rem;padding:.6rem}.tabs{flex-wrap:wrap;gap:.3rem;margin-bottom:.6rem;display:flex}.tabs button{border:1px solid var(--bd);cursor:pointer;font:inherit;background:#fff;border-radius:99px;padding:.35rem .8rem}.tabs button.active{background:var(--c2);color:#fff;border-color:var(--c2)}.kpis{flex-wrap:wrap;gap:.6rem;display:flex}.kpi{border:1px solid var(--bd);min-width:110px;color:inherit;border-radius:10px;flex-direction:column;padding:.6rem .9rem;text-decoration:none;display:flex}.kpi b{font-size:1.6rem}.kpi span{color:#6b7785;font-size:.8rem}.bars{align-items:flex-end;gap:3px;height:130px;display:flex}.bar{flex-direction:column;justify-content:flex-end;align-items:center;height:100%;display:flex}.bar div{background:var(--warn);border-radius:3px 3px 0 0;width:12px}.bar span{color:#6b7785;font-size:.6rem}.modal-bg{z-index:50;background:#0006;justify-content:center;align-items:flex-start;padding:3vh 1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:#fff;border-radius:12px;width:min(820px,100%);padding:1rem}.policy-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.75rem;margin:.75rem 0;display:grid}fieldset{border:1px solid var(--bd);border-radius:8px}legend{font-size:.9rem;font-weight:600}.dl{grid-template-columns:max-content 1fr;gap:.3rem .9rem;display:grid}.dl dt{color:#6b7785}.dl dd{margin:0}.consent-text{border:1px solid var(--bd);background:#fafbfc;border-radius:8px;max-height:45vh;padding:.5rem .8rem;font-size:.92rem;overflow-y:auto}.ann{border-bottom:1px solid var(--bd);padding:.4rem 0}.wo label,code{font-size:.8rem}.brand-logo{max-width:min(280px,80vw);height:auto;margin-bottom:.25rem}.brand-logo-sm{vertical-align:middle;background:#fff;border-radius:3px;width:auto;height:22px;margin-right:.45rem;padding:1px 4px}.brand-title{color:var(--c);font-size:1.35rem;font-weight:700}.brand-tag{text-align:center;max-width:360px;margin-bottom:.5rem}.brand-login .card,.brand-login .narrow{width:min(400px,100%)}.topbar{background:linear-gradient(90deg, var(--c), var(--cd))}.btn.primary{background:var(--c2)}.side a.active{background:color-mix(in srgb, var(--c2) 18%, white);color:var(--c)}
