:root{--bg:#f5f5f7;--card:#fff;--ink:#1d1d1f;--muted:#6e6e73;--faint:#8e8e93;--sep:#3c3c4324;--fill:#f2f2f5;--fill-strong:#e8e8ed;--accent:#0071e3;--accent-press:#0062c4;--accent-ink:#fff;--ok:#1d7f3a;--ok-bg:#e9f6ed;--warn:#8a5300;--warn-bg:#fff5e1;--bad:#c4261d;--bad-bg:#fdecea;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #0000000a, 0 6px 20px #0000000d;--ease:cubic-bezier(.2, .8, .2, 1);--focus:0 0 0 3px #0071e359;--safe-b:env(safe-area-inset-bottom,0px);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,system-ui,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg)}body{letter-spacing:-.01em;margin:0;font-size:17px;line-height:1.42}main{max-width:680px;padding:max(12px, env(safe-area-inset-top)) 16px calc(140px + var(--safe-b));margin:0 auto}main.wide{max-width:880px}h1,h2,h3,p{margin:0}.title{letter-spacing:-.025em;font-size:34px;font-weight:700;line-height:1.12}.title-sm{letter-spacing:-.02em;font-size:28px;font-weight:700;line-height:1.15}.subtitle{color:var(--muted);margin-top:6px;font-size:17px}.section-head{color:var(--muted);letter-spacing:0;margin:28px 16px 8px;font-size:13px;font-weight:400}.section-foot{color:var(--muted);margin:8px 16px 0;font-size:13px;line-height:1.4}.muted{color:var(--muted)}.small{font-size:15px}.tiny{font-size:13px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus{outline:none}:focus-visible{outline-offset:2px;outline:3px solid #0071e373}.cell:focus-visible,.menu-item:focus-visible,.sheet-body .cell:focus-visible{outline-offset:-3px}.dialog:focus-visible,.sheet:focus-visible,[tabindex="-1"]:focus-visible,.input:focus-visible,.cell-input:focus-visible,textarea:focus-visible{outline:none}.nav{justify-content:space-between;align-items:center;min-height:44px;margin:0 -8px;display:flex}.nav-left,.nav-right{align-items:center;gap:4px;min-width:44px;display:flex}.nav-right{justify-content:flex-end}.header{padding:6px 0 4px}.header .title{margin-top:2px}button{font:inherit;color:inherit;cursor:pointer;letter-spacing:inherit;background:0 0;border:0}button:disabled{cursor:default}.btn{min-height:50px;transition:background-color .15s var(--ease), transform .1s var(--ease), opacity .15s;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:17px;font-weight:600;display:inline-flex}.btn:active:not(:disabled){transform:scale(.985)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent-press)}.btn-primary:disabled{color:#fff;background:#b8d4f5}.btn-gray{background:var(--fill-strong);color:var(--ink)}.btn-gray:hover:not(:disabled){background:#dedee4}.btn-tint{color:var(--accent);background:#e8f1fc}.btn-danger{background:var(--bad-bg);color:var(--bad)}.btn-block{width:100%}.btn-lg{border-radius:14px;min-height:54px;font-size:17px}.btn-sm{border-radius:18px;min-height:36px;padding:0 14px;font-size:15px}.btn:disabled:not(.btn-primary){opacity:.45}.link-btn{color:var(--accent);border-radius:10px;align-items:center;gap:2px;min-height:44px;padding:0 8px;font-size:17px;display:inline-flex}.link-btn:disabled{color:var(--faint)}.icon-btn{width:44px;height:44px;color:var(--accent);border-radius:22px;justify-content:center;align-items:center;transition:background-color .15s;display:inline-flex}.icon-btn:hover:not(:disabled){background:#0000000a}.icon-btn:disabled{color:#c7c7cc}.help-btn{border-radius:22px;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.help-btn span{background:var(--fill-strong);width:26px;height:26px;color:var(--muted);border-radius:13px;justify-content:center;align-items:center;font-size:15px;font-weight:600;transition:background-color .15s;display:inline-flex}.help-btn:hover span{background:#dcdce2}.group{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.group+.group{margin-top:16px}.cell{text-align:left;background:var(--card);align-items:center;gap:12px;width:100%;min-height:52px;padding:10px 16px;display:flex;position:relative}.cell+.cell:before{content:"";border-top:.5px solid var(--sep);position:absolute;top:0;left:16px;right:0}.cell.indent+.cell:before,.cell+.cell.indent:before{left:56px}button.cell,a.cell{color:var(--ink);text-decoration:none;transition:background-color .12s}button.cell:active,a.cell:active{background:#ececf0}@media (hover:hover){button.cell:hover:not(:disabled),a.cell:hover{background:#fafafc;text-decoration:none}}.cell-main{flex:1;min-width:0}.cell-title{font-size:17px}.cell-sub{color:var(--muted);margin-top:1px;font-size:15px}.cell-value{color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;max-width:60%;font-size:17px;overflow:hidden}.cell-value.ink{color:var(--ink)}.chev{color:#c4c4c9;flex:none}.cell-icon{width:30px;height:30px;color:var(--muted);flex:none;justify-content:center;align-items:center;display:inline-flex}.cell.danger .cell-title{color:var(--bad)}.cell.accent .cell-title{color:var(--accent)}.field{padding:0;display:block}.field-label{color:var(--muted);margin-bottom:4px;font-size:13px;display:block}input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}.input{background:var(--fill);border:0;border-radius:12px;width:100%;min-height:50px;padding:12px 14px;font-size:17px;transition:box-shadow .15s,background-color .15s}.input:focus{box-shadow:var(--focus), inset 0 0 0 1px #0071e380;background:#fff}.cell-input{text-align:right;background:0 0;border:0;flex:1;min-width:0;min-height:44px;padding:0;font-size:17px}.cell-input:focus{box-shadow:none}.cell:has(.cell-input:focus-visible){box-shadow:inset 0 0 0 2px #0071e359}textarea.cell-input{text-align:left;resize:vertical;min-height:72px;padding:4px 0;line-height:1.4}.code-input{letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums;font-size:32px;font-weight:600}.switch{flex:none;width:51px;height:31px;position:relative}.switch input{opacity:0;cursor:pointer;z-index:1;margin:0;position:absolute;inset:0}.switch span{transition:background-color .2s var(--ease);background:#e3e3e8;border-radius:16px;position:absolute;inset:0}.switch span:after{content:"";width:27px;height:27px;transition:transform .2s var(--ease);background:#fff;border-radius:14px;position:absolute;top:2px;left:2px;box-shadow:0 2px 6px #0000002e}.switch input:checked+span{background:#34c759}.switch input:checked+span:after{transform:translate(20px)}.switch input:focus-visible+span{outline-offset:2px;outline:3px solid #0071e373}.seg{background:var(--fill-strong);border-radius:10px;gap:2px;padding:2px;display:flex;position:relative}.seg button{min-height:40px;color:var(--ink);transition:background-color .2s var(--ease), box-shadow .2s var(--ease);white-space:nowrap;border-radius:8px;flex:1;padding:0 8px;font-size:15px;font-weight:500}.seg button[aria-pressed=true],.seg button[aria-checked=true]{background:#fff;font-weight:600;box-shadow:0 1px 3px #0000001f,0 0 0 .5px #0000000a}.seg button:disabled{opacity:.5}.seg-wrap{padding:12px 16px}.stepper{background:var(--fill);border-radius:12px;align-items:center;gap:0;display:inline-flex}.stepper button{width:48px;height:44px;color:var(--ink);border-radius:12px;justify-content:center;align-items:center;transition:background-color .12s;display:inline-flex}.stepper button:active:not(:disabled){background:var(--fill-strong)}.stepper button:disabled{color:#c7c7cc}.stepper output{text-align:center;font-variant-numeric:tabular-nums;min-width:56px;font-size:20px;font-weight:600}.stepper .sep{background:var(--sep);width:.5px;height:20px}.banner{border-radius:12px;align-items:flex-start;gap:10px;margin:12px 0;padding:12px 14px;font-size:15px;line-height:1.4;display:flex}.banner svg{flex:none;margin-top:1px}.banner.warn{background:var(--warn-bg);color:var(--warn)}.banner.ok{background:var(--ok-bg);color:var(--ok)}.banner.bad{background:var(--bad-bg);color:var(--bad)}.banner.info{color:#0b4f9c;background:#eaf2fd}.inline-msg{align-items:center;gap:6px;margin:0 4px 10px;font-size:15px;display:flex}.inline-msg.ok{color:var(--ok)}.inline-msg.bad{color:var(--bad)}.inline-msg.warn{color:var(--warn)}.badge{background:var(--fill-strong);color:var(--muted);white-space:nowrap;border-radius:10px;align-items:center;gap:6px;padding:3px 9px;font-size:13px;font-weight:600;display:inline-flex}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.blue{color:var(--accent);background:#e8f1fc}.dot{background:currentColor;border-radius:4px;width:8px;height:8px;display:inline-block}.person{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:12px;overflow:hidden}.person-head{align-items:center;gap:10px;padding:14px 8px 6px 16px;display:flex}.person-name{letter-spacing:-.015em;flex:1;min-width:0;font-size:19px;font-weight:600}.person-body{padding:4px 16px 14px}.person .cell{padding-left:16px}.avatar{background:var(--fill-strong);width:36px;height:36px;color:var(--muted);border-radius:18px;flex:none;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:inline-flex}.hours-row{justify-content:space-between;align-items:center;gap:12px;min-height:60px;padding:8px 16px;display:flex;position:relative}.hours-row:before{content:"";border-top:.5px solid var(--sep);position:absolute;top:0;left:16px;right:0}.datebar{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:4px;margin-top:16px;padding:4px;display:flex}.datebar strong{text-align:center;flex:1;font-size:17px;font-weight:600}.datebar .icon-btn{color:var(--ink)}.datebar .icon-btn:disabled{color:#c7c7cc}.bottom-bar{z-index:20;padding:10px 16px calc(12px + var(--safe-b));-webkit-backdrop-filter:saturate(180%)blur(20px);border-top:.5px solid var(--sep);background:#f5f5f7d1;position:fixed;bottom:0;left:0;right:0}.bottom-bar>div{max-width:680px;margin:0 auto}.bottom-bar .btn-primary .count{opacity:.9;font-weight:400}.backdrop{z-index:50;animation:fade .22s var(--ease);background:#00000052;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.backdrop.center{align-items:center;padding:20px}.sheet{background:var(--card);width:100%;max-width:560px;max-height:88vh;padding-bottom:var(--safe-b);animation:up .32s var(--ease);border-radius:16px 16px 0 0;flex-direction:column;display:flex;box-shadow:0 -8px 40px #0000001f}.sheet-grab{background:#d1d1d6;border-radius:3px;flex:none;width:36px;height:5px;margin:8px auto 2px}.sheet-head{flex:none;justify-content:space-between;align-items:center;padding:4px 8px 8px 20px;display:flex}.sheet-head h2{letter-spacing:-.015em;font-size:20px;font-weight:600}.sheet-search{flex:none;padding:0 16px 10px}.sheet-body{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 0 12px;overflow-y:auto}.sheet-body .cell{padding-left:20px}.sheet-body .cell+.cell:before{left:20px}.sheet-pad{padding:0 20px 16px}.dialog{background:var(--card);width:100%;max-width:420px;animation:pop .26s var(--ease);border-radius:18px;max-height:calc(100vh - 40px);padding:28px 24px 20px;overflow-y:auto;box-shadow:0 20px 60px #0003}.dialog h2{letter-spacing:-.02em;margin-bottom:8px;font-size:22px;font-weight:700}.dialog p{color:var(--muted)}.steps{counter-reset:s;gap:14px;margin:18px 0 22px;padding:0;list-style:none;display:grid}.steps li{counter-increment:s;align-items:flex-start;gap:12px;line-height:1.4;display:flex}.steps li:before{content:counter(s);width:26px;height:26px;color:var(--accent);background:#e8f1fc;border-radius:13px;flex:none;justify-content:center;align-items:center;margin-top:0;font-size:14px;font-weight:600;display:inline-flex}@media (min-width:768px){.backdrop{align-items:center;padding:24px}.sheet{max-height:80vh;animation:pop .26s var(--ease);border-radius:16px}.sheet-grab{display:none}.sheet-head{padding-top:14px}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}.day-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:12px;overflow:hidden}.day-card-head{justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px 10px;display:flex}.day-card-head h3{font-size:17px;font-weight:600}.flag{color:var(--warn);align-items:flex-start;gap:10px;padding:0 16px 8px;font-size:15px;display:flex}.flag.note{color:var(--muted)}.flag svg{flex:none;margin-top:2px}.line{grid-template-columns:1fr auto;gap:2px 12px;padding:10px 16px;font-size:15px;display:grid;position:relative}.line:before{content:"";border-top:.5px solid var(--sep);position:absolute;top:0;left:16px;right:0}.line .who{font-size:16px}.line .hrs{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.line .meta{color:var(--muted);grid-column:1/-1;font-size:14px}.actions{gap:10px;padding:12px 16px 16px;display:flex}.actions .btn{flex:1;min-height:44px;font-size:16px}.stack-16>*+*{margin-top:16px}.center-wrap{flex-direction:column;justify-content:center;max-width:420px;min-height:calc(100vh - 80px);margin:0 auto;display:flex}.brand-mark{background:var(--ink);color:#fff;border-radius:16px;justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:20px;display:inline-flex}.loading{color:var(--muted);text-align:center;padding:40px 0}.empty{text-align:center;color:var(--muted);padding:40px 16px}.empty strong{color:var(--ink);margin:10px 0 4px;font-size:19px;font-weight:600;display:block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tabular{font-variant-numeric:tabular-nums}@media (min-width:768px){main{padding-top:28px;padding-left:24px;padding-right:24px}.title{font-size:40px}}.ai{overflow:visible}.ai *{transform-box:view-box}.ai-clock .hand,.ai-link .chain{transform-origin:12px 12px}.ai-check .tick{stroke-dasharray:1;stroke-dashoffset:0}.cell:active .ai-check .tick,.cell:focus-visible .ai-check .tick{animation:draw .34s var(--ease) both}.cell:active .ai-check .t2,.cell:focus-visible .ai-check .t2{animation-delay:60ms}.cell:active .ai-check .t3,.cell:focus-visible .ai-check .t3{animation-delay:.12s}.cell:active .ai-clock .hand,.cell:focus-visible .ai-clock .hand{animation:sweep .4s var(--ease)}.cell:active .ai-people .front,.cell:focus-visible .ai-people .front{animation:nudge-l .32s var(--ease)}.cell:active .ai-people .back,.cell:focus-visible .ai-people .back{animation:nudge-r .32s var(--ease)}.cell:active .ai-link .chain,.cell:focus-visible .ai-link .chain{animation:tilt .36s var(--ease)}@media (hover:hover){.cell:hover .ai-check .tick{animation:draw .34s var(--ease) both}.cell:hover .ai-check .t2{animation-delay:60ms}.cell:hover .ai-check .t3{animation-delay:.12s}.cell:hover .ai-clock .hand{animation:sweep .4s var(--ease)}.cell:hover .ai-people .front{animation:nudge-l .32s var(--ease)}.cell:hover .ai-people .back{animation:nudge-r .32s var(--ease)}.cell:hover .ai-link .chain{animation:tilt .36s var(--ease)}}@keyframes draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes sweep{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes nudge-l{0%{transform:none}45%{transform:translate(-1.5px)}to{transform:none}}@keyframes nudge-r{0%{transform:none}45%{transform:translate(2px)}to{transform:none}}@keyframes tilt{0%{transform:rotate(0)}45%{transform:rotate(-18deg)}to{transform:rotate(0)}}@media (prefers-reduced-motion:reduce){.ai *{animation:none!important}}.spinner{opacity:.85;border:2px solid;border-right-color:#0000;border-radius:50%;flex:none;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.skel{background:linear-gradient(90deg,#ececf0 0%,#f6f6f8 45%,#ececf0 90%) 0 0/220% 100%;animation:1.4s linear infinite shimmer,.15s ease-out .2s both skel-in;display:block}@keyframes shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@media (prefers-reduced-motion:reduce){.skel{animation:none}.spinner{animation-duration:1.4s!important}}.state{text-align:center;max-width:420px;margin:0 auto;padding:40px 12px 24px}.state-icon{background:var(--fill-strong);width:60px;height:60px;color:var(--muted);border-radius:30px;justify-content:center;align-items:center;display:inline-flex}.state strong{letter-spacing:-.015em;margin:16px 0 6px;font-size:20px;font-weight:600;display:block}.state p{color:var(--muted)}.state-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;display:flex}.state-actions .btn{min-width:140px}a.btn{text-decoration:none}.menu-wrap{position:relative}.menu{z-index:40;-webkit-backdrop-filter:blur(20px);min-width:240px;animation:pop .18s var(--ease);transform-origin:100% 0;background:#fffffff5;border-radius:14px;position:absolute;top:46px;right:4px;overflow:hidden;box-shadow:0 10px 40px #00000029,0 0 0 .5px #0000000f}.menu-item{text-align:left;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 16px;font-size:17px;display:flex;position:relative}.menu-item svg{color:var(--muted)}.menu-item+.menu-item:before{content:"";border-top:.5px solid var(--sep);position:absolute;top:0;left:0;right:0}.menu-item:hover,.menu-item:focus-visible{background:#0000000a}.copy-row{cursor:pointer}.copy-row .cell-sub{font-size:13px}.copy-state{color:var(--accent);flex:none;align-items:center;gap:4px;font-size:15px;font-weight:500;transition:color .15s;display:inline-flex}.copy-state.on{color:var(--ok)}.field-error{color:var(--bad);margin:6px 16px 0;font-size:13px}.badge.bad{background:var(--bad-bg);color:var(--bad)}.bar{background:var(--fill-strong);border-radius:4px;height:8px;overflow:hidden}.bar>span{background:var(--accent);border-radius:4px;height:100%;display:block}.bar.behind>span{background:var(--bad)}.bar.close>span{background:#c98a12}.bar.ahead>span{background:var(--ok)}.kv{grid-template-columns:1fr 1fr;gap:10px 16px;padding:4px 16px 14px;display:grid}.kv div{font-size:15px}.kv b{font-variant-numeric:tabular-nums;font-size:19px;font-weight:600;display:block}.kv .lbl{color:var(--muted);font-size:13px}.explain{color:var(--muted);margin:10px 4px 0;font-size:15px;line-height:1.45}.person-row{padding:10px 16px;position:relative}.person-row:before{content:"";border-top:.5px solid var(--sep);position:absolute;top:0;left:16px;right:0}.person-row .top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.person-row .name{font-size:16px;font-weight:600}.person-row .role{color:var(--muted);font-size:14px}.person-row .total{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}.person-row.flagged{background:var(--warn-bg)}.codes{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.chip{background:var(--fill);color:var(--ink);font-variant-numeric:tabular-nums;border-radius:10px;padding:3px 9px;font-size:13px}.job-head{text-align:left;background:var(--card);align-items:center;gap:10px;width:100%;padding:14px 16px;display:flex}.job-head .cell-title{font-weight:600}.qty-row{grid-template-columns:1fr 96px 74px;align-items:center;gap:8px;padding:10px 16px;display:grid;position:relative}.qty-row:before{content:"";border-top:.5px solid var(--sep);position:absolute;top:0;left:16px;right:0}.qty-row .input{text-align:right;min-height:44px;padding:8px 10px;font-size:17px}.qty-note{padding:0 16px 10px}.qty-note .input{min-height:40px;font-size:15px}.split{align-items:center;gap:10px;display:flex}.check{color:#fff;border:2px solid #c7c7cc;border-radius:12px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.check.on{background:var(--accent);border-color:var(--accent)}.filters{flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;display:flex}.filters .input{flex:1;min-width:180px;min-height:44px}.week-table{border-collapse:collapse;width:100%;font-size:15px}.week-table th{text-align:left;color:var(--muted);padding:6px 16px;font-size:13px;font-weight:400}.week-table td{border-top:.5px solid var(--sep);font-variant-numeric:tabular-nums;padding:8px 16px}@media (min-width:900px){main.wide{max-width:1040px}}.shell{--sb-w:248px;grid-template-columns:var(--sb-w) minmax(0, 1fr);min-height:100vh;display:grid}.sb-collapsed .shell{--sb-w:64px}.sidebar{border-right:.5px solid var(--sep);background:#fbfbfd;flex-direction:column;gap:14px;height:100vh;padding:14px 10px;display:flex;position:sticky;top:0;overflow-y:auto}.sb-brand{white-space:nowrap;align-items:center;gap:10px;padding:4px 8px 6px;font-size:15px;display:flex}.sb-logo{background:var(--ink);color:#fff;border-radius:8px;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;font-weight:700;display:inline-flex}.sb-group{flex-direction:column;gap:1px;display:flex}.sb-group-label{color:var(--muted);padding:4px 10px;font-size:12px}.sb-item{min-height:34px;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;width:100%;padding:6px 10px;font-family:inherit;font-size:14px;text-decoration:none;display:flex}.sb-item:hover{background:var(--fill-strong)}.sb-item:focus-visible{box-shadow:var(--focus);outline:none}html[data-page=home] .nav-home,html[data-page=review] .nav-review,html[data-page=approve] .nav-approve,html[data-page=progress] .nav-progress,html[data-page=jobs] .nav-jobs,html[data-page=people] .nav-people,html[data-page=quickbooks] .nav-quickbooks,html[data-page=audit] .nav-audit,html[data-page=schedule] .nav-schedule{color:var(--accent);background:#e8f1fc;font-weight:600}.sb-icon{color:var(--muted);flex:none;display:inline-flex;position:relative}html[data-page=home] .nav-home .sb-icon,html[data-page=review] .nav-review .sb-icon,html[data-page=approve] .nav-approve .sb-icon,html[data-page=progress] .nav-progress .sb-icon,html[data-page=jobs] .nav-jobs .sb-icon,html[data-page=people] .nav-people .sb-icon,html[data-page=quickbooks] .nav-quickbooks .sb-icon,html[data-page=audit] .nav-audit .sb-icon,html[data-page=schedule] .nav-schedule .sb-icon{color:var(--accent)}.sb-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.sb-badges{gap:4px;display:inline-flex}.sb-badge{background:var(--fill-strong);min-width:20px;height:20px;color:var(--muted);font-variant-numeric:tabular-nums;border-radius:10px;justify-content:center;align-items:center;padding:0 6px;font-size:12px;font-weight:600;display:inline-flex}.sb-badge.warn{background:var(--warn-bg);color:var(--warn)}.sb-badge.bad{background:var(--bad-bg);color:var(--bad)}.sb-dot{background:var(--bad);border-radius:4px;width:7px;height:7px;position:absolute;top:-2px;right:-3px}.sb-collapse{color:var(--muted);margin-top:auto}.sb-collapsed .shell .sb-label{display:none}.sb-collapsed .shell .sb-item{justify-content:center;padding:8px}.sb-collapsed .shell .sb-brand{justify-content:center;padding:4px 0 6px}.shell-main{flex-direction:column;min-width:0;display:flex}.topbar{z-index:30;-webkit-backdrop-filter:saturate(180%)blur(20px);border-bottom:.5px solid var(--sep);background:#f5f5f7db;align-items:center;gap:16px;height:60px;padding:0 28px;display:flex;position:sticky;top:0}.tb-search{background:var(--card);border:.5px solid var(--sep);width:min(420px,38vw);height:38px;color:var(--muted);border-radius:10px;align-items:center;gap:8px;padding:0 10px;display:flex;position:relative}.tb-search:focus-within{box-shadow:var(--focus)}.tb-search input{font:inherit;color:var(--ink);background:0 0;border:0;outline:none;flex:1;min-width:0;font-size:14px}.tb-search kbd{font:inherit;border:.5px solid var(--sep);color:var(--faint);border-radius:5px;padding:0 6px;font-size:12px}.tb-results{background:var(--card);border-radius:12px;max-height:70vh;padding:6px;position:absolute;top:44px;left:0;right:0;overflow-y:auto;box-shadow:0 12px 40px #00000024}.tb-group{color:var(--muted);padding:8px 10px 4px;font-size:12px}.tb-hit{color:var(--ink);border-radius:8px;justify-content:space-between;gap:12px;padding:8px 10px;font-size:14px;text-decoration:none;display:flex}.tb-hit:hover,.tb-hit:focus-visible,.tb-hit[aria-selected=true]{background:var(--fill);outline:none}.tb-hit .muted{white-space:nowrap;font-size:13px}.tb-empty{color:var(--muted);padding:12px;font-size:14px}.tb-slot{flex:1;justify-content:center;align-items:center;gap:10px;min-width:0;display:flex}.tb-user{position:relative}.tb-avatar{font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:8px;padding:4px 6px;font-size:14px;display:flex}.tb-avatar:hover{background:var(--fill-strong)}.tb-menu{background:var(--card);z-index:40;border-radius:12px;width:260px;padding:6px;position:absolute;top:46px;right:0;box-shadow:0 12px 40px #00000024}.tb-menu-head{border-bottom:.5px solid var(--sep);flex-direction:column;gap:2px;margin-bottom:4px;padding:10px 12px;font-size:14px;display:flex}.tb-menu-item{width:100%;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:9px 12px;font-size:14px;display:flex}.tb-menu-item:hover{background:var(--fill)}.tb-menu-item.danger{color:var(--bad)}.tb-week{background:var(--card);border:.5px solid var(--sep);border-radius:10px;align-items:center;gap:2px;height:38px;padding:0 2px;display:flex}.tb-week strong{white-space:nowrap;padding:0 10px;font-size:14px;font-weight:600}.tb-week .icon-btn{width:32px;height:32px;min-height:32px}@media (min-width:1024px){.shell-content main,.shell-content main.wide{max-width:1320px;margin:0;padding:8px 32px 120px}.shell .header .title{font-size:28px}.shell .header{padding-top:12px}.shell .bottom-bar{left:var(--sb-w)}.shell .bottom-bar>div{max-width:520px}.shell .backdrop{left:var(--sb-w)}}@media (max-width:1023px){.shell{display:block}.sidebar,.topbar{display:none}}.dt-wrap{background:var(--card);box-shadow:var(--shadow);border-radius:12px;margin-top:12px;overflow:hidden}.dt{border-collapse:collapse;table-layout:auto;width:100%;font-size:14px}.dt th{text-align:left;color:var(--muted);border-bottom:.5px solid var(--sep);white-space:nowrap;background:#fbfbfd;padding:10px 12px;font-size:12.5px;font-weight:500}.dt td{border-top:.5px solid var(--sep);vertical-align:middle;font-variant-numeric:tabular-nums;padding:10px 12px}.dt tbody tr:first-child td{border-top:0}.dt tr.click{cursor:pointer}.dt tr.click:hover td{background:#f7f8fa}.dt tr.click:focus-visible{outline:none;box-shadow:inset 0 0 0 2px #0071e359}.dt tr.sel td{background:#eef4fd}.dt tr.flagged td:first-child{box-shadow:none}.dt .sub{color:var(--muted);font-size:12.5px}.dt .clip{text-overflow:ellipsis;white-space:nowrap;max-width:340px;overflow:hidden}.dt input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.dt-sort{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.dt-sort:hover{color:var(--ink)}.dt-arrow{color:var(--faint);font-size:9px;display:inline-flex}.dt-arrow.on{color:var(--accent)}.dt-empty{text-align:center;color:var(--muted);padding:28px;font-size:14px}.dt .bar{min-width:90px}.drawer-backdrop{z-index:44;animation:fade .18s var(--ease);background:#0000001f;position:fixed;inset:0}.drawer{z-index:45;background:var(--card);width:min(600px,92vw);animation:slide .24s var(--ease);outline:none;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-12px 0 40px #0000001f}@keyframes slide{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}.drawer-head{border-bottom:.5px solid var(--sep);justify-content:space-between;gap:12px;padding:18px 20px 12px;display:flex}.drawer-head h2{letter-spacing:-.015em;font-size:19px;font-weight:600}.drawer-tools{align-items:flex-start;gap:2px;display:flex}.drawer-tools .icon-btn{width:34px;height:34px;min-height:34px}.drawer-body{flex:1;padding:8px 0 20px;overflow-y:auto}.drawer-body .dt-wrap{box-shadow:none;border-radius:0;margin:0}.drawer-sec{color:var(--muted);padding:14px 20px 6px;font-size:13px}.drawer-foot{padding:12px 20px calc(14px + var(--safe-b));border-top:.5px solid var(--sep);gap:10px;display:flex}.drawer-foot .btn{flex:1;min-height:42px;font-size:15px}.drawer .flag{padding:4px 20px;font-size:14px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.toolbar .seg{width:auto;min-width:380px}.toolbar .input{width:260px;height:38px;min-height:38px;padding:6px 12px;font-size:14px}.toolbar .grow{flex:1}.toolbar .btn{min-height:38px;padding:6px 14px;font-size:14px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:16px;display:grid}@media (max-width:1200px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.stat{background:var(--card);box-shadow:var(--shadow);color:var(--ink);border-radius:12px;flex-direction:column;gap:4px;padding:14px 16px;text-decoration:none;display:flex}a.stat:hover{box-shadow:0 0 0 1px #0071e340, var(--shadow)}.stat .lbl{color:var(--muted);font-size:13px}.stat .big{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:28px;font-weight:600}.stat .big small{color:var(--muted);font-size:15px;font-weight:500}.stat .foot{color:var(--muted);font-size:13px}.stat.warn .big{color:var(--warn)}.stat.bad .big{color:var(--bad)}.panels{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;margin-top:16px;display:grid}@media (max-width:1200px){.panels{grid-template-columns:minmax(0,1fr)}}.panel{background:var(--card);box-shadow:var(--shadow);border-radius:12px;overflow:hidden}.panel-head{justify-content:space-between;align-items:baseline;padding:14px 16px 8px;display:flex}.panel-head h3{font-size:15px;font-weight:600}.panel-head a{color:var(--accent);font-size:13px;text-decoration:none}.panel .dt-wrap{box-shadow:none;border-radius:0;margin:0}.panel-empty{color:var(--muted);padding:4px 16px 16px;font-size:14px}@media (min-width:1024px){.code-item{grid-template-columns:minmax(0,1fr) 380px;align-items:center;display:grid}.code-item .est-row{grid-template-columns:1fr 1fr 80px;padding:8px 16px}.code-item .est-row:before{display:none}}.est-row{grid-template-columns:1fr 1fr 80px;padding-left:50px}.shell{--sb-w:264px}.tb-search{flex:none;width:clamp(220px,30vw,420px)}@media (max-width:1279px){.tb-name .muted{display:none}}.dt td,.dt th{white-space:nowrap}.dt td.wrap{white-space:normal}.dt td.fill{text-overflow:ellipsis;width:100%;max-width:0;overflow:hidden}.dt-wrap{overflow-x:auto}.stats{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}@media (max-width:1200px){.stats{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}}@media (min-width:1024px){.shell .header{position:relative}.shell .header .nav:not(:has(.link-btn)){position:absolute;top:14px;right:0}:is(.shell .header .nav:not(:has(.link-btn))+.title,.shell .header .nav:not(:has(.link-btn))+.title-sm){margin-top:8px;padding-right:48px}}.brand-link{border-radius:8px;align-items:center;padding:6px 8px;display:inline-flex}.brand-logo{width:auto;height:28px;display:block}@media (min-width:1024px){.shell .header .brand-link{display:none}.shell .header .nav:not(:has(.link-btn)){position:absolute;top:14px;right:0}}.sb-brand{color:var(--muted);flex-direction:column;align-items:flex-start;gap:4px;padding:6px 8px 8px;text-decoration:none;display:flex}.sb-brand .brand-logo{height:30px}.sb-app{color:var(--muted);padding-left:2px;font-size:12.5px}.sb-collapsed .shell .sb-brand{align-items:center}@media (max-width:1023px){.shell main{padding-bottom:calc(150px + 64px + var(--safe-b))}.shell .bottom-bar{bottom:calc(58px + var(--safe-b));padding-bottom:10px}}.tabbar{z-index:25;padding:6px 4px calc(6px + var(--safe-b));-webkit-backdrop-filter:saturate(180%)blur(20px);border-top:.5px solid var(--sep);background:#fafafceb;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{max-width:120px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:2px;min-height:46px;padding:4px 0;font-family:inherit;font-size:11px;text-decoration:none;display:flex}.tab-more.active,html[data-page=home] .tab-k-home,html[data-page=review] .tab-k-review,html[data-page=approve] .tab-k-approve,html[data-page=progress] .tab-k-progress,html[data-page=jobs] .tab-k-jobs,html[data-page=people] .tab-k-people,html[data-page=quickbooks] .tab-k-quickbooks,html[data-page=audit] .tab-k-audit,html[data-page=schedule] .tab-k-schedule{color:var(--accent);font-weight:600}.tab:focus-visible{box-shadow:var(--focus);outline:none}.tab-icon{display:inline-flex;position:relative}.tab-badge{background:var(--fill-strong);min-width:18px;height:18px;color:var(--muted);border:1.5px solid #fafafc;border-radius:9px;justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex;position:absolute;top:-5px;left:14px}.tab-badge.warn{color:#fff;background:#f5a524}.tab-badge.bad{background:var(--bad);color:#fff}.viewas{z-index:60;padding:8px 14px;padding-top:max(8px, env(safe-area-inset-top));color:#fff;background:#1d1d1f;align-items:center;gap:10px;font-size:14px;display:flex;position:sticky;top:0}.viewas-text{flex:1;min-width:0}.viewas-text span{color:#ffffffbf}.viewas-exit{color:#1d1d1f;font:inherit;cursor:pointer;background:#fff;border:0;border-radius:8px;min-height:36px;padding:6px 14px;font-size:14px;font-weight:600}html.viewing-as .sidebar{height:calc(100vh - 44px);top:44px}html.viewing-as .topbar{top:44px}.chips{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.sort-btn{align-items:center;gap:4px;display:inline-flex}.select-dot{color:#fff;background:var(--card);border:2px solid #c7c7cc;border-radius:12px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.select-dot.on{background:var(--accent);border-color:var(--accent)}.day-card.selected{box-shadow:0 0 0 2px var(--accent), var(--shadow)}.dt tr.inactive td{opacity:.55}.gate-review,.gate-approve,.gate-progress,.gate-job_setup,.gate-people,.gate-quickbooks,.gate-audit,.gate-enter_crew{display:none}html[data-can~=review] .gate-review,html[data-can~=approve] .gate-approve,html[data-can~=progress] .gate-progress,html[data-can~=job_setup] .gate-job_setup,html[data-can~=people] .gate-people,html[data-can~=quickbooks] .gate-quickbooks,html[data-can~=audit] .gate-audit,html[data-can~=enter_crew] .gate-enter_crew{display:flex}.sb-group-crew,.sb-group-jobs{display:none}html[data-can~=review] .sb-group-crew,html[data-can~=approve] .sb-group-crew,html[data-can~=progress] .sb-group-jobs,html[data-can~=job_setup] .sb-group-jobs{display:block}.tab[class*=tab-k-]{display:none}html[data-tabs~=home] .tab-k-home,html[data-tabs~=review] .tab-k-review,html[data-tabs~=approve] .tab-k-approve,html[data-tabs~=progress] .tab-k-progress,html[data-tabs~=jobs] .tab-k-jobs,html[data-tabs~=people] .tab-k-people,html[data-tabs~=quickbooks] .tab-k-quickbooks,html[data-tabs~=audit] .tab-k-audit,html[data-tabs~=schedule] .tab-k-schedule,html[data-tabs~=field] .tab-k-field{display:flex}@media (min-width:1024px){.tabbar{display:none}}.sb-logo{display:none}.sb-collapsed .sb-logo{display:inline-flex}.sb-collapsed .sb-brand-full{display:none}.sb-brand-full{display:contents}@keyframes skel-in{0%{opacity:0}to{opacity:1}}@keyframes content-in{0%{opacity:0}to{opacity:1}}main>.group:not([aria-hidden]),main>.stats,main>.panels,main>.dt-wrap{animation:.15s ease-out both content-in}@view-transition{navigation:auto}::view-transition-old(root){animation-duration:.15s}::view-transition-new(root){animation-duration:.15s}.sidebar{view-transition-name:rocha-sidebar}.topbar{view-transition-name:rocha-topbar}.tabbar{view-transition-name:rocha-tabbar}::view-transition-group(rocha-sidebar){animation:none}::view-transition-group(rocha-topbar){animation:none}::view-transition-group(rocha-tabbar){animation:none}::view-transition-old(rocha-sidebar){display:none}::view-transition-old(rocha-topbar){display:none}::view-transition-old(rocha-tabbar){display:none}::view-transition-new(rocha-sidebar){animation:none}::view-transition-new(rocha-topbar){animation:none}::view-transition-new(rocha-tabbar){animation:none}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}.seg-slot{display:none}html[data-can~=review][data-can~=approve] .seg-slot{display:block}
