:root{color-scheme:light;--navy:#0b2545;--navy-2:#13315c;--blue:#0961c3;--blue-dark:#0a52a3;--blue-tint:#e7f2fc;--silver:#eef2f6;--silver-2:#dfe5ec;--line:#cfd8e3;--ink:#0f1b2b;--muted:#526173;--white:#ffffff;--green:#17803d;--green-tint:#e5f4ea;--amber:#a5590b;--amber-tint:#fdf0dc;--red:#b42318;--red-tint:#fdecea;--grey-dot:#7a8696;--radius:14px;--shadow:0 1px 2px rgba(11,37,69,.06),0 4px 16px rgba(11,37,69,.06);--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--silver);color:var(--ink);font:17px/1.45 var(--font);min-height:100dvh}a{color:var(--blue-dark)}h1,h2,h3{color:var(--navy);line-height:1.2;margin:0 0 .5rem}h1{font-size:1.6rem}h2{font-size:1.2rem}h3{font-size:1.05rem}p{margin:0 0 .75rem}.muted,small{color:var(--muted)}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.topbar{background:linear-gradient(180deg,#eef1f5,#dce2ea);color:var(--navy);border-bottom:1px solid #c9d2dd;padding:max(env(safe-area-inset-top),10px) 16px 10px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.topbar-inner{max-width:1180px;margin:0 auto;gap:12px}.brand,.topbar-inner{display:flex;align-items:center}.brand{gap:10px;color:var(--navy);text-decoration:none;min-width:0}.brand img{height:36px;width:auto;display:block}.brand img.uploaded{max-width:150px;object-fit:contain}.team-tag{font-weight:800;font-size:.95rem;color:var(--white);background:var(--blue);border-radius:6px;padding:2px 8px;letter-spacing:.02em}.wordmark{display:flex;flex-direction:column;line-height:1.05}.wordmark .biz{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;opacity:.78;font-weight:600}.wordmark .app{font-size:1.15rem;font-weight:700}.wordmark .app span{color:#7cc0f5}.topnav{margin-left:auto;display:flex;gap:4px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.topnav a,.topnav button{color:var(--navy);text-decoration:none;font:600 .92rem var(--font);padding:8px 10px;border-radius:8px;background:transparent;border:0;cursor:pointer}.topnav a[aria-current=page]{background:var(--navy);color:var(--white)}.topnav a:not([aria-current=page]):hover,.topnav button:hover{background:rgba(11,37,69,.08)}.subnav{background:var(--navy-2);overflow-x:auto}.subnav-inner{max-width:1180px;margin:0 auto;display:flex;gap:2px;padding:0 10px}.subnav a{color:#d6e4f5;text-decoration:none;padding:11px 12px;font-weight:600;font-size:.95rem;white-space:nowrap;border-bottom:3px solid transparent}.subnav a[aria-current=page]{color:var(--white);border-bottom-color:#7cc0f5}.badge-count{display:inline-block;min-width:1.35em;padding:0 .4em;margin-left:.35em;border-radius:99px;background:#f59f00;color:var(--navy);font-size:.78rem;text-align:center}.page{max-width:560px;margin:0 auto;padding:16px 16px calc(32px + env(safe-area-inset-bottom))}.page.wide{max-width:1180px}.stack>*+*{margin-top:14px}.row,.spread{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.grid-stats{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px;gap:10px}@media (min-width:820px){.grid-stats.four{grid-template-columns:repeat(4,1fr)}}.cols{display:grid;grid-gap:14px;gap:14px}@media (min-width:900px){.cols{grid-template-columns:1.4fr 1fr;align-items:start}}.demo-banner{background:#f59f00;color:var(--navy);text-align:center;font-weight:800;padding:6px 12px;font-size:.9rem;letter-spacing:.02em}.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;border:1px solid #e3e8ef}.card.flat{box-shadow:none}.card-title{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:8px}.stat{background:var(--white);border-radius:12px;padding:12px 14px;border:1px solid #e3e8ef}.stat .label{font-size:.82rem;color:var(--muted);font-weight:600}.stat .value{font-size:1.45rem;font-weight:750;color:var(--navy);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat .sub{font-size:.82rem;color:var(--muted)}.status{display:inline-flex;align-items:center;gap:8px;font-weight:700;padding:6px 12px 6px 10px;border-radius:99px;font-size:.95rem}.status:before{content:"";width:12px;height:12px;border-radius:50%;background:currentColor;flex:none}.status.working{color:var(--green);background:var(--green-tint)}.status.on_break{color:var(--amber);background:var(--amber-tint)}.status.clocked_out{color:#4a5565;background:var(--silver-2)}.status.big{font-size:1.1rem;padding:8px 16px 8px 12px}.status.big:before{width:14px;height:14px}.pill{display:inline-block;font-size:.8rem;font-weight:700;padding:3px 9px;border-radius:99px;white-space:nowrap}.pill.approved{background:var(--green-tint);color:var(--green)}.pill.pending{background:var(--blue-tint);color:var(--blue-dark)}.pill.warn{background:var(--amber-tint);color:var(--amber)}.pill.danger{background:var(--red-tint);color:var(--red)}.pill.grey{background:var(--silver-2);color:#3d4757}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 18px;border-radius:12px;border:2px solid transparent;font:700 1rem var(--font);text-decoration:none;cursor:pointer;text-align:center;background:var(--blue);color:var(--white);transition:filter .12s,transform .06s}.btn:active{transform:scale(.985)}.btn:hover{filter:brightness(1.05)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.navy{background:var(--navy)}.btn.secondary{background:var(--white);color:var(--navy);border-color:var(--line)}.btn.ghost{background:transparent;color:var(--blue-dark);border-color:transparent;min-height:40px;padding:6px 10px}.btn.danger{background:var(--red)}.btn.green{background:var(--green)}.btn.small{min-height:38px;padding:6px 12px;font-size:.92rem;border-radius:10px}.btn.block{display:flex;width:100%}.clock-btn{width:100%;min-height:128px;border-radius:22px;font-size:1.9rem;letter-spacing:.01em;box-shadow:0 6px 20px rgba(11,99,197,.35);flex-direction:column;gap:2px}.clock-btn small{color:rgba(255,255,255,.85);font-size:.95rem;font-weight:600}.clock-btn.navy{box-shadow:0 6px 20px rgba(11,37,69,.35)}.clock-btn.amber{background:var(--amber);box-shadow:0 6px 20px rgba(165,89,11,.3)}label{display:block;font-weight:650;color:var(--navy);margin-bottom:6px;font-size:.95rem}.field+.field{margin-top:14px}.hint{font-size:.85rem;color:var(--muted);margin-top:4px}input,select,textarea{width:100%;font:17px var(--font);color:var(--ink);background:var(--white);border:1.5px solid var(--line);border-radius:10px;padding:11px 12px;min-height:48px}input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0;flex:none;margin:0;padding:0;accent-color:var(--blue)}label.row{flex-wrap:nowrap;align-items:flex-start;gap:10px;line-height:1.35}label.row>input{margin-top:1px}textarea{min-height:88px;resize:vertical}.btn:focus-visible,a:focus-visible,input:focus,select:focus,textarea:focus{outline:3px solid #8cc6f7;outline-offset:1px}.inline-fields{display:grid;grid-gap:10px;gap:10px;grid-template-columns:1fr 1fr}@media (max-width:420px){.inline-fields.collapse{grid-template-columns:1fr}}.alert{border-radius:12px;padding:12px 14px;font-weight:600;border:1.5px solid}.alert.ok{background:var(--green-tint);color:#0d5c2b;border-color:#9fd3b0}.alert.error{background:var(--red-tint);color:#8a1a12;border-color:#f2b2ab}.alert.warn{background:var(--amber-tint);color:#7a420a;border-color:#f0c98f}.alert.info{background:var(--blue-tint);color:#0f4c86;border-color:#a9d1f5}.alert strong{display:block;font-size:1.05rem}.offline-bar{position:-webkit-sticky;position:sticky;top:0;z-index:30;background:var(--red);color:var(--white);padding:10px 16px;text-align:center;font-weight:700}.table-wrap{overflow-x:auto;background:var(--white);border-radius:var(--radius);border:1px solid #e3e8ef;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;font-size:.95rem}td,th{padding:10px 12px;text-align:left;border-bottom:1px solid #edf1f5;vertical-align:top}th{background:#f6f8fb;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;position:-webkit-sticky;position:sticky;top:0}td.num,th,th.num{white-space:nowrap}td.num,th.num{text-align:right}tr.total td{font-weight:800;background:#f6f8fb;color:var(--navy)}tbody tr:hover{background:#fafcfe}.list{list-style:none;margin:0;padding:0}.list>li{padding:12px 0;border-bottom:1px solid #edf1f5}.list>li:last-child{border-bottom:0}.shift-card{background:var(--white);border:1px solid #e3e8ef;border-radius:12px;padding:12px 14px}.shift-card .times{font-size:1.1rem;font-weight:700;color:var(--navy)}.kv{display:grid;grid-template-columns:auto 1fr;grid-gap:6px 14px;gap:6px 14px;font-size:.95rem}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:600}.sheet-backdrop{position:fixed;inset:0;background:rgba(11,37,69,.45);z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--white);width:100%;max-width:560px;border-radius:20px 20px 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom));max-height:92dvh;overflow-y:auto}@media (min-width:700px){.sheet-backdrop{align-items:center}.sheet{border-radius:20px}}.login-shell{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:linear-gradient(180deg,#eef1f5,#dce2ea)}.login-card{width:100%;max-width:420px}.login-brand{color:var(--navy);text-align:center;margin-bottom:18px}.login-brand .biz{letter-spacing:.16em;text-transform:uppercase;font-size:.78rem;opacity:.8;font-weight:600}.login-brand .app{font-size:2rem;font-weight:800}.login-brand .app span{color:var(--blue)}.login-brand img{max-height:64px;max-width:280px;margin:0 auto 10px;display:block}.login-brand img.uploaded{background:var(--white);border-radius:10px;padding:6px 10px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}@media (max-width:480px){.topbar-inner{flex-wrap:wrap;gap:6px}.topnav{margin-left:0;width:100%;justify-content:space-between}.topnav a,.topnav button{padding:6px 8px;font-size:.88rem}}.skeleton{border-radius:12px;background:linear-gradient(90deg,#e3e8ef,#f1f4f8 50%,#e3e8ef);background-size:200% 100%;animation:shimmer 1.1s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:10px;gap:10px}.photo-grid .photo{display:flex;flex-direction:column;gap:4px;text-decoration:none}.photo-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:var(--silver)}