
:root{
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:#17212b;background:#eef2f6;
  --blue:#0b5fa5;--blue2:#0875c1;--blueSoft:#e9f3fb;--navy:#183247;
  --green:#16835b;--greenSoft:#e8f6f0;--red:#b4232f;--redSoft:#fff0f1;
  --amber:#a06100;--amberSoft:#fff6df;--line:#d9e1e8;--muted:#697887;
  --panel:#fff;--shadow:0 2px 8px rgba(33,52,69,.08);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#eef2f6}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
.error{color:#b4232f;font-weight:700}.muted{color:var(--muted);font-size:.9rem}
.successText{color:var(--green)!important}

/* Login */
.loginShell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#0c4d80,#11314b)}
.loginCard{width:min(420px,100%);background:#fff;border-radius:14px;padding:32px;box-shadow:0 18px 50px #001b2f55}
.brandMark{width:52px;height:52px;border-radius:11px;background:var(--blue);color:#fff;font-weight:900;display:grid;place-items:center;letter-spacing:.4px}
.brandMark.small{width:38px;height:38px;border-radius:9px;font-size:.85rem}
.loginCard h1{margin:14px 0 4px;font-size:1.75rem}.loginSub{margin:0 0 24px;color:var(--muted)}
.loginCard label,.panel label{font-size:.78rem;font-weight:800;color:#4f6070;text-transform:uppercase;letter-spacing:.035em;display:block;margin:14px 0 5px}
input,select,textarea{width:100%;border:1px solid #cbd5df;border-radius:7px;background:#fff;padding:10px 11px;color:#17212b;outline:none}
input:focus,select:focus,textarea:focus{border-color:#5ca2d5;box-shadow:0 0 0 3px #0b5fa51c}
textarea{resize:vertical}.loginVersion{font-size:.75rem;color:#8996a3;text-align:center;margin-top:18px}

/* Shell */
.appShell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:238px;background:#17364d;color:#dce8f1;z-index:40;display:flex;flex-direction:column}
.sideBrand{height:72px;display:flex;align-items:center;gap:11px;padding:0 18px;border-bottom:1px solid #ffffff18}.sideBrand b{display:block;color:#fff}.sideBrand span{display:block;font-size:.7rem;color:#9db3c3;margin-top:2px}
.sideNav{padding:14px 10px;display:flex;flex-direction:column;gap:4px}.navItem{border:0;background:transparent;color:#c3d3df;padding:10px 11px;border-radius:7px;display:flex;align-items:center;gap:10px;text-align:left;font-weight:650}
.navItem:hover{background:#ffffff0d;color:#fff}.navItem.active{background:#0b5fa5;color:#fff}.navIcon{width:22px;text-align:center}.navBadge{margin-left:auto;background:#27a979;color:#fff;font-size:.62rem;border-radius:20px;padding:2px 6px;font-weight:900}
.sideFooter{margin-top:auto;padding:12px;border-top:1px solid #ffffff18}.userBox{display:flex;gap:9px;align-items:center;padding:11px 4px}.userBox b,.userBox span{display:block}.userBox span{font-size:.72rem;color:#9db3c3}.avatar{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:#ffffff18;color:#fff;font-weight:800}
.signout{border:0;background:transparent;color:#afc1ce;padding:8px 4px;width:100%;text-align:left}.signout:hover{color:#fff}

.workspace{margin-left:238px;min-height:100vh}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:25}
.topbar h1{font-size:1.25rem;margin:0;color:#223444}.topbar p{margin:3px 0 0;color:var(--muted);font-size:.82rem}.topActions{display:flex;align-items:center;gap:10px}.topUser{font-size:.85rem;color:#526372}.mobileMenu{display:none}
.content{padding:22px;max-width:1480px;margin:0 auto}.page{display:none}.page.activePage{display:block}

/* Active strip */
.activeJobStrip{background:#0f7b57;color:#fff;display:flex;align-items:center;gap:13px;padding:10px 24px;position:sticky;top:72px;z-index:24;box-shadow:0 2px 6px #0002}
.liveDot{width:10px;height:10px;border-radius:50%;background:#83f0c6;box-shadow:0 0 0 4px #ffffff1f}
.activeStripMain{min-width:0;display:flex;align-items:baseline;gap:9px;flex:1;white-space:nowrap;overflow:hidden}.stripLabel{font-size:.66rem;font-weight:900;letter-spacing:.08em}.activeStripMain strong{font-size:.95rem}.activeStripMain span:not(.stripLabel){font-size:.8rem;opacity:.85;overflow:hidden;text-overflow:ellipsis}.stripTimer{font-size:1.05rem;font-weight:900;font-variant-numeric:tabular-nums}

/* Panels and business UI */
.panel{background:var(--panel);border:1px solid #dde4ea;border-radius:9px;box-shadow:var(--shadow);padding:18px;margin-bottom:18px}
.panelHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:15px}.panelHeader h2{margin:2px 0 2px;font-size:1.08rem;color:#223444}.panelHeader p{margin:3px 0 0;color:var(--muted);font-size:.86rem}.eyebrow{font-size:.68rem;color:#70808f;font-weight:900;letter-spacing:.075em}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.metricCard{background:#fff;border:1px solid #dde4ea;border-radius:9px;box-shadow:var(--shadow);padding:17px}.metricCard span,.metricCard small{display:block;color:var(--muted)}.metricCard span{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.metricCard strong{display:block;font-size:1.75rem;color:#1d3446;margin:7px 0 1px}.metricCard small{font-size:.75rem}
.activePanel{border-left:4px solid var(--green)}.livePill{background:var(--greenSoft);color:var(--green);border-radius:999px;padding:5px 9px;font-size:.7rem;font-weight:900}.currentJobGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:#f7f9fb;border:1px solid #e6ebef;border-radius:7px;padding:12px}.currentJobGrid span{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;font-weight:800}.currentJobGrid strong{display:block;margin-top:3px;font-size:.9rem}
.quickActions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}

/* Buttons */
.btn,.linkBtn{border:1px solid transparent;border-radius:6px;padding:9px 13px;font-weight:750;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1.1}
.btn.primary{background:var(--blue);color:#fff}.btn.primary:hover{background:#084f89}.btn.light{background:#f5f7f9;color:#31485a;border-color:#d8e0e7}.btn.light:hover{background:#edf1f4}.btn.white{background:#fff;color:#106246}.btn.camera{background:#0875c1;color:#fff}.btn.danger{background:var(--red);color:#fff}.btn.dangerOutline{background:#fff;color:var(--red);border-color:#e4aab0}.btn.outline{background:transparent;color:#dce8f1;border-color:#6d899d}.btn.full{width:100%;margin-top:10px}.btn.compact{padding:7px 10px;font-size:.78rem}

/* Search / jobs */
.searchWrap{display:flex;align-items:center;border:1px solid #cfd8e0;border-radius:7px;background:#fff;padding:0 10px;margin-bottom:12px}.searchWrap span{color:#758594}.searchWrap input{border:0;box-shadow:none!important;padding:10px 8px}
.jobCards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.jobCard{border:1px solid #dce3e9;border-radius:8px;padding:14px;background:#fff;display:flex;gap:12px;align-items:flex-start}.jobCard:hover{border-color:#a8c5db;background:#fbfdff}.jobCard.current{border:2px solid var(--green);background:#f8fffc}.jobState{width:34px;height:34px;border-radius:7px;background:var(--blueSoft);color:var(--blue);display:grid;place-items:center;font-weight:900;flex:none}.jobCard.current .jobState{background:var(--greenSoft);color:var(--green)}.jobBody{min-width:0;flex:1}.jobBody h3{font-size:.96rem;margin:0 0 3px;color:#21384a}.jobBody .site{font-size:.86rem;font-weight:650;color:#465a6b}.jobBody .jobname{font-size:.8rem;color:#5e7180;margin-top:3px}.jobMeta{font-size:.75rem;color:#7a8996;margin-top:8px;display:flex;gap:8px;flex-wrap:wrap}.jobCardActions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.statusPill{display:inline-block;border-radius:999px;padding:3px 7px;font-size:.66rem;font-weight:900}.statusPill.open{background:var(--greenSoft);color:var(--green)}.statusPill.archived{background:#eef1f4;color:#71808d}
.emptyState{text-align:center;background:#fff;border:1px solid #dde4ea;border-radius:9px;padding:55px 20px;box-shadow:var(--shadow)}.emptyIcon{width:56px;height:56px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;background:#eef3f6;color:#81909b}.emptyState h2{margin:0}.emptyState p{color:var(--muted);margin:8px 0 18px}

/* Current job */
.jobIdentity{border-left:4px solid var(--green)}.jobIdentityTop{display:flex;justify-content:space-between;gap:20px}.jobIdentity h2{font-size:1.5rem;margin:4px 0 0}.jobIdentity h3{font-size:1rem;margin:4px 0;color:#43596a}.jobIdentity p{margin:4px 0;color:var(--muted)}.bigTimer{text-align:right;background:#f1f8f5;border:1px solid #d6ebe2;border-radius:8px;padding:11px 14px;min-width:145px}.bigTimer span{display:block;color:#5b786d;font-size:.72rem;text-transform:uppercase;font-weight:800}.bigTimer strong{display:block;font-size:1.55rem;color:var(--green);margin-top:3px;font-variant-numeric:tabular-nums}.jobMetaLine{display:flex;gap:16px;flex-wrap:wrap;border-top:1px solid #e8edf1;margin-top:13px;padding-top:11px;font-size:.8rem;color:#667887}.twoPanel{display:grid;grid-template-columns:1fr 1fr;gap:18px}.countPill{background:#edf3f7;color:#486071;border-radius:999px;padding:4px 8px;font-size:.75rem;font-weight:800}.saveState{font-size:.75rem;color:var(--green);font-weight:800}
.cameraDrop{border:1px dashed #8fb7d5!important;background:#f6fbff;border-radius:8px!important;padding:24px!important;text-align:center!important;text-transform:none!important;letter-spacing:0!important;color:#284b65!important;cursor:pointer}.cameraDrop span,.cameraDrop strong,.cameraDrop small{display:block}.cameraLarge{font-size:2rem}.cameraDrop strong{margin:7px 0}.cameraDrop small{font-weight:500;color:var(--muted)}.hiddenFile{position:absolute!important;left:-10000px!important}.chosenPhoto{font-size:.82rem;color:#587083;margin:8px 0}.photoList{margin-top:12px}.photoRow{display:grid;grid-template-columns:72px 1fr auto;gap:10px;align-items:center;border-top:1px solid #e5ebef;padding:10px 0}.photoRow img{width:72px;height:72px;border-radius:7px;object-fit:cover}.photoText b{font-size:.84rem}.photoText span{font-size:.74rem}.photoRow button{border:0;background:#fff0f1;color:var(--red);border-radius:6px;padding:7px 9px;font-weight:750}

/* table-like lists */
.tableList{border-top:1px solid #e4eaee}.timeRow,.archiveRow,.entry{display:grid;grid-template-columns:1.5fr 1fr .8fr auto;gap:10px;align-items:center;padding:11px 4px;border-bottom:1px solid #e7ecef;font-size:.82rem}.timeRow strong,.entry strong{color:#243b4d}.rowMuted{color:#748491}.entryActions{display:flex;gap:6px;flex-wrap:wrap}.miniLink,.miniButton{background:#f3f6f8;border:1px solid #d9e1e7;color:#385267;border-radius:5px;padding:6px 8px;font-size:.72rem;font-weight:750;text-decoration:none}.miniButton.dangerMini{background:#fff0f1;color:#9e2732;border-color:#f0c9cd}.miniButton.archive{background:#fff7e5;color:#91610e;border-color:#ecd9ad}

/* forms / clients */
.formGrid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.formGrid.three{grid-template-columns:2fr 1fr 1fr}.span2{grid-column:1/-1}.formActions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.closeX{border:0;background:transparent;font-size:1.5rem;color:#7b8a96}.clientGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.clientCard{border:1px solid #dce3e9;border-radius:8px;padding:14px}.clientCard h3{margin:0 0 4px;font-size:.95rem}.clientContact{font-size:.8rem;color:#5f7282}.clientSites{margin-top:10px;border-top:1px solid #edf0f2;padding-top:8px;font-size:.78rem}.siteChip{display:inline-block;background:#f1f5f8;color:#52697a;padding:4px 7px;border-radius:5px;margin:3px 3px 0 0}.clientActions{margin-top:10px}

/* Exports/security */
.exportGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.exportCard{border:1px solid #dce3e9;border-radius:8px;padding:16px}.exportIcon{width:38px;height:38px;border-radius:8px;background:var(--blueSoft);color:var(--blue);display:grid;place-items:center;font-size:.78rem;font-weight:900}.exportCard h3{margin:10px 0 4px}.exportCard p{color:var(--muted);font-size:.82rem;min-height:38px}.securityState{display:flex;align-items:center;gap:12px;border-radius:8px;padding:13px;margin-bottom:14px}.securityState span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:900}.securityState b,.securityState p{display:block}.securityState p{margin:3px 0 0;font-size:.8rem}.securityState.off{background:#f4f6f8}.securityState.off span{background:#e3e8ec}.securityState.on{background:var(--greenSoft)}.securityState.on span{background:#cdebdc;color:var(--green)}.securityState.pending{background:var(--amberSoft)}.securityState.pending span{background:#f7e3ad;color:var(--amber)}.qr{width:220px;max-width:100%;display:block;margin:10px auto;border:8px solid white;box-shadow:0 1px 8px #0002}.secret{display:block;overflow-wrap:anywhere;background:#f1f5f8;padding:10px;border-radius:6px}.recovery{background:#fff7e7;padding:14px;border-radius:8px;margin-top:15px}.recovery pre{white-space:pre-wrap;font-size:1rem;line-height:1.5}

/* Mobile */
.mobileNav{display:none}
@media(max-width:980px){
  .metrics{grid-template-columns:1fr 1fr}.twoPanel{grid-template-columns:1fr}.jobCards{grid-template-columns:1fr}
}
@media(max-width:760px){
  body{padding-bottom:68px}.sidebar{transform:translateX(-105%);transition:.2s;width:260px;box-shadow:8px 0 30px #001b2f44}.sidebar.open{transform:translateX(0)}
  .workspace{margin-left:0}.topbar{height:64px;padding:0 13px}.mobileMenu{display:block;border:0;background:transparent;font-size:1.35rem;margin-right:8px}.topbar>div:first-of-type{flex:1}.topActions .topUser{display:none}.topActions #topInstallBtn{display:none!important}
  .content{padding:12px}.activeJobStrip{top:64px;padding:9px 12px;gap:8px}.activeStripMain{display:block}.stripLabel{display:block}.activeStripMain span:not(.stripLabel){display:none}.stripTimer{font-size:.9rem}.activeJobStrip .btn{display:none}
  .metrics{grid-template-columns:1fr 1fr;gap:8px}.metricCard{padding:13px}.metricCard strong{font-size:1.4rem}
  .currentJobGrid{grid-template-columns:1fr 1fr}.quickActions{display:grid;grid-template-columns:1fr 1fr}.quickActions .btn:last-child:nth-child(3){grid-column:1/-1}
  .jobIdentityTop{display:block}.bigTimer{text-align:left;margin-top:12px}.jobMetaLine{display:block}.jobMetaLine span{display:block;margin:5px 0}
  .formGrid,.formGrid.three,.clientGrid,.exportGrid{grid-template-columns:1fr}.span2{grid-column:auto}
  .timeRow,.archiveRow,.entry{grid-template-columns:1fr;gap:3px}.entryActions{margin-top:6px}
  .panel{padding:14px;border-radius:8px;margin-bottom:12px}.panelHeader{margin-bottom:12px}
  .mobileNav{position:fixed;z-index:35;bottom:0;left:0;right:0;height:64px;background:#fff;border-top:1px solid #d7e0e6;display:grid;grid-template-columns:repeat(5,1fr);padding-bottom:env(safe-area-inset-bottom)}
  .mobileNavItem{border:0;background:transparent;color:#71818e;font-size:.66rem;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.mobileNavItem span{font-size:1.15rem}.mobileNavItem.active{color:var(--blue)}
}
@media(max-width:430px){
  .metrics{grid-template-columns:1fr 1fr}.metricCard span{font-size:.66rem}.currentJobGrid{grid-template-columns:1fr}.quickActions{grid-template-columns:1fr}.quickActions .btn:last-child:nth-child(3){grid-column:auto}
}


/* Phase 1.4: focused mobile field workflow */
.trustChoice{display:flex!important;gap:10px;align-items:flex-start;text-transform:none!important;letter-spacing:0!important;background:#f4f7f9;border:1px solid #dce4ea;border-radius:8px;padding:11px!important;margin-top:13px!important;cursor:pointer}
.trustChoice input{width:auto;margin:3px 0 0}.trustChoice span{display:block}.trustChoice b,.trustChoice small{display:block}.trustChoice b{font-size:.86rem;color:#2d4354}.trustChoice small{font-size:.72rem;color:#70808d;margin-top:3px;font-weight:500}
.mobileCurrentHero{display:none}
.fieldTabs{display:flex;gap:5px;background:#e5ebf0;border-radius:9px;padding:4px;margin-bottom:12px;position:sticky;top:126px;z-index:20}
.fieldTab{flex:1;border:0;border-radius:7px;background:transparent;padding:10px 6px;font-size:.72rem;font-weight:900;color:#5f7281}.fieldTab span{margin-right:3px}.fieldTab b{background:#d5dfe6;border-radius:999px;padding:1px 5px;font-size:.62rem}.fieldTab.active{background:#fff;color:var(--blue);box-shadow:0 1px 4px #0002}.fieldTab.active b{background:var(--blueSoft);color:var(--blue)}
.jobTabPane{display:none}.jobTabPane.activeJobTab{display:block}
.timePanel{max-width:760px;margin-left:auto;margin-right:auto}.timeFocus{text-align:center;padding:15px 5px 20px}.timeFocus>strong{display:block;font-size:3.1rem;line-height:1;color:var(--green);font-variant-numeric:tabular-nums;margin:8px 0}.timeFocus p{color:var(--muted);margin:0}
.jobFacts{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#dfe6eb;border:1px solid #dfe6eb;border-radius:8px;overflow:hidden;margin-bottom:14px}.jobFacts>div{background:#fff;padding:11px}.jobFacts>div.wide{grid-column:1/-1}.jobFacts span,.jobFacts strong{display:block}.jobFacts span{font-size:.66rem;text-transform:uppercase;font-weight:900;color:#7a8996}.jobFacts strong{font-size:.88rem;margin-top:3px;color:#2b4152}
.btn.giant{min-height:52px;font-size:.92rem}.giantCamera{padding:34px 18px!important}.giantCamera .cameraLarge{font-size:2.8rem}
.fieldActionDock{display:none}
@media(max-width:760px){
  body{padding-bottom:132px}
  .mobileCurrentHero{display:block;background:#0f7b57;color:#fff;margin:-12px -12px 10px;padding:15px 14px 12px;position:sticky;top:64px;z-index:19;box-shadow:0 2px 5px #0002}
  .mobileCurrentHero .eyebrow{color:#bff0dd!important}.mobileCurrentHero h2{font-size:1.12rem;margin:3px 0 0}.mobileCurrentHero h3{font-size:.84rem;margin:2px 0;color:#e2fff4}.mobileCurrentHero p{font-size:.75rem;margin:3px 0;color:#cbeadd}
  .heroTimer{position:absolute;right:13px;top:16px;text-align:right}.heroTimer span{display:block;font-size:.6rem;text-transform:uppercase;font-weight:900;color:#bff0dd}.heroTimer strong{display:block;font-size:1.18rem}
  #view-current .activeJobStrip{display:none!important}
  .fieldTabs{top:158px}
  .timeFocus>strong{font-size:3.35rem}.jobFacts{grid-template-columns:1fr}.jobFacts>div.wide{grid-column:auto}
  .fieldActionDock{position:fixed;display:grid;grid-template-columns:repeat(4,1fr);left:0;right:0;bottom:64px;height:62px;background:#17364d;z-index:34;border-top:1px solid #ffffff1c;box-shadow:0 -5px 18px #00111f28;padding-bottom:env(safe-area-inset-bottom)}
  .fieldActionDock button{border:0;background:transparent;color:#dce8f1;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.62rem;gap:2px}.fieldActionDock button span{font-size:1.05rem}.fieldActionDock button.dockClockOut{background:#a92731;color:#fff}
  .fieldActionDock[hidden]{display:none!important}
  .mobileNav{bottom:0}
  .photoPanel .cameraDrop{margin-top:4px!important}
}


/* Phase 1.5 Daily Flow */
.btn.switchBtn{background:#6a4fb3;color:#fff;border-color:#6a4fb3}.btn.switchBtn:hover{background:#58409a}
.btn.arrived{background:#17855d;color:#fff;border-color:#17855d}
.activityHero{display:inline-block;border-radius:999px;padding:6px 11px;font-size:.72rem;font-weight:950;letter-spacing:.08em}
.activityHero.onsite{background:#e6f6ef;color:#11714f}.activityHero.travel{background:#fff1d6;color:#965e00}.activityHero.remote{background:#e9f3fb;color:#0b5fa5}.activityHero.admin{background:#f1edfb;color:#6a4fb3}
.dailyTimeline{position:relative;padding-left:20px}.dailyTimeline:before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:2px;background:#d8e1e8}
.timelineItem{position:relative;border:1px solid #dce4ea;border-radius:8px;background:#fff;margin:0 0 10px;padding:12px 12px 12px 14px}
.timelineItem:before{content:"";position:absolute;left:-18px;top:17px;width:10px;height:10px;border-radius:50%;background:#9aa9b5;border:2px solid #eef2f6}
.timelineItem.live{border-color:#8bcdb5;background:#fbfffd}.timelineItem.live:before{background:#16835b}
.timelineItem.travel:before{background:#d58b18}.timelineTop{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.timelineActivity{font-size:.66rem;font-weight:950;letter-spacing:.07em;border-radius:999px;padding:4px 7px;background:#eef3f6;color:#526675}.timelineActivity.travel{background:#fff1d6;color:#965e00}.timelineActivity.onsite{background:#e6f6ef;color:#11714f}.timelineActivity.remote{background:#e9f3fb;color:#0b5fa5}
.timelineTitle{font-weight:850;color:#263d4e;margin-top:5px}.timelineSite{font-size:.78rem;color:#607383;margin-top:2px}.timelineTime{font-size:.78rem;font-weight:800;color:#526777;white-space:nowrap}.timelineMeta{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:.7rem;color:#738391}.timelineSummary{font-size:.78rem;color:#526777;margin-top:7px}
.modalOverlay{position:fixed;inset:0;background:#0b1b29aa;z-index:100;display:grid;place-items:center;padding:18px}
.switchModalCard{width:min(760px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:12px;box-shadow:0 20px 70px #0006;padding:18px}.modalHead{display:flex;justify-content:space-between;gap:12px}.modalHead h2{margin:2px 0}.modalHead p{margin:4px 0 14px;color:#6d7d89;font-size:.82rem}.switchCurrentInfo{background:#f3f7f9;border:1px solid #dce4e9;border-radius:8px;padding:10px 12px;margin-bottom:12px;font-size:.82rem}
.switchJobList{display:flex;flex-direction:column;gap:8px}.switchJobRow{border:1px solid #dce4ea;border-radius:8px;padding:12px}.switchJobRow h3{margin:0;font-size:.92rem}.switchJobRow p{margin:3px 0 0;font-size:.78rem;color:#657786}.switchActions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.switchActions button{min-height:42px}
.travelBtn{background:#fff4df!important;color:#8b5906!important;border-color:#e9cf99!important}.onsiteBtn{background:#eaf7f1!important;color:#106b4c!important;border-color:#b8dfce!important}
.autoSavePulse{color:#16835b}
@media(max-width:760px){
  .dailyFlowPanel{margin-bottom:12px}.dailyTimeline{padding-left:18px}.timelineTop{display:block}.timelineTime{margin-top:5px}
  .modalOverlay{padding:0;align-items:end}.switchModalCard{width:100%;max-height:90vh;border-radius:16px 16px 0 0;padding:15px 12px calc(20px + env(safe-area-inset-bottom))}
  .switchActions{grid-template-columns:1fr 1fr}
  .fieldActionDock{grid-template-columns:repeat(5,1fr)}
  .fieldActionDock button.dockSwitch{background:#5b4693;color:#fff}
}


/* Phase 1.6 manual time / corrections */
.btn.manualBtn{background:#385b74;color:#fff;border-color:#385b74}
.btn.liveContinue{background:#16835b;color:#fff;border-color:#16835b}
.manualNotice{display:flex;gap:10px;align-items:flex-start;background:#fff6df;border:1px solid #efd9a0;border-radius:8px;padding:10px 12px;margin:10px 0 14px;color:#765115}
.manualNotice b{white-space:nowrap}.manualNotice span{font-size:.78rem}
.auditNotice{background:#eef6fb;border-color:#c8dfed;color:#365a70}
.activityChooser{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:12px 0}
.activityChoice{border:1px solid #d5dfe6;background:#f6f8fa;color:#5d7181;border-radius:7px;padding:9px 5px;font-size:.74rem;font-weight:850}
.activityChoice.active{background:#0b5fa5;color:#fff;border-color:#0b5fa5}
.manualActions{display:flex;justify-content:flex-end;gap:7px;margin-top:16px}
.sourceBadge{display:inline-block;border-radius:999px;padding:3px 6px;font-size:.61rem;font-weight:900;letter-spacing:.04em}
.sourceBadge.manual{background:#fff0d2;color:#8b5b09}.sourceBadge.edited{background:#f2eafb;color:#6c45a0}.sourceBadge.live{background:#eef3f6;color:#657987}
.timelineEdit{border:0;background:#f2f5f7;color:#466071;border-radius:5px;padding:5px 7px;font-size:.67rem;font-weight:800}
@media(max-width:760px){
  .topManual{display:none!important}
  .manualModalCard,.editTimeCard{max-height:93vh}
  .activityChooser{grid-template-columns:repeat(3,1fr)}
  .manualActions{display:grid;grid-template-columns:1fr 1fr}
  .manualActions .btn.liveContinue{grid-column:1/-1;min-height:50px}
}


/* Phase 1.7 quick client + ticket workflow */
.headerButtons{display:flex;gap:7px;flex-wrap:wrap}
.btn.quickAddBtn{background:#0b5fa5;color:#fff;border-color:#0b5fa5}
.quickCreateActions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-top:16px}
.quickJobCard{max-width:700px}
.ticketRef{display:inline-block;background:#eef3f8;color:#38576d;border-radius:5px;padding:3px 6px;font-size:.68rem;font-weight:850}
@media(max-width:760px){
  .headerButtons{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .quickCreateActions{grid-template-columns:1fr}
  .quickCreateActions .btn{min-height:48px}
}


/* Phase 1.8 timesheet history + period exports */
.timesheetFilters{display:grid;grid-template-columns:1fr 190px;gap:8px;margin-bottom:12px}
.timesheetHistory{display:flex;flex-direction:column;gap:8px}
.historyCard{border:1px solid #dce4ea;border-radius:8px;padding:13px;background:#fff}
.historyCard.live{border-left:4px solid #16835b}.historyCard.manual{border-left:4px solid #d68c19}
.historyHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.historyHead h3{margin:0;font-size:.95rem;color:#273f51}.historyHead p{margin:3px 0 0;font-size:.78rem;color:#647685}
.historyHours{text-align:right;white-space:nowrap}.historyHours strong{display:block;font-size:1.05rem}.historyHours span{font-size:.72rem;color:#71818e}
.historyDetails{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px;font-size:.72rem;color:#6c7d89}
.historySummary{margin-top:8px;font-size:.8rem;color:#506575}
.historyActions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.editEntryCard{max-width:760px}
.exportGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){
  .timesheetFilters{grid-template-columns:1fr}
  .historyHead{display:block}.historyHours{text-align:left;margin-top:7px}
  .exportGrid{grid-template-columns:1fr}
}


/* Phase 1.9 active-client import, universal search, quick notes */
.universalSearchPanel{border-left:4px solid #0b5fa5}
.universalSearchBox input{font-size:1rem}
.universalResults{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.searchResultCard{border:1px solid #dce4ea;border-radius:8px;padding:12px;background:#fff}
.searchResultCard h3{margin:0;font-size:.92rem;color:#263e50}
.searchResultCard p{margin:4px 0;color:#647684;font-size:.77rem}
.searchResultMeta{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.searchResultMeta span{background:#f0f4f7;color:#526a7a;border-radius:5px;padding:3px 6px;font-size:.67rem}
.searchResultActions{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.clientCompanyId{font-size:.7rem;color:#0b5fa5;font-weight:800}
.btn.noteBtn{background:#385b74;color:#fff;border-color:#385b74}
.btn.aiBtn{background:#6247aa;color:#fff;border-color:#6247aa}
.quickNotesSection{margin-top:22px;border-top:1px solid #e4eaee;padding-top:15px}
.compactHeader{margin-bottom:8px}
.quickNoteItem{border-left:3px solid #0b5fa5;background:#f7fafc;border-radius:6px;padding:9px 10px;margin:7px 0}
.quickNoteItem b{display:block;font-size:.78rem}.quickNoteItem p{font-size:.8rem;margin:4px 0;white-space:pre-wrap}.quickNoteItem small{color:#71818e}
.dictationHint{display:flex;gap:10px;background:#eef6fb;border:1px solid #c9dfec;border-radius:8px;padding:10px 12px;margin:8px 0 13px}
.dictationHint b{white-space:nowrap}.dictationHint span{font-size:.76rem;color:#4f6878}
.noteToolRow{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:7px;margin:10px 0}
.quickNoteActions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}
.aiStatus{font-size:.75rem;color:#647684;min-height:20px;margin:6px 0}
.aiStatus.good{color:#167452}.aiStatus.warn{color:#91610e}
.quickNoteCard{max-width:720px}
@media(max-width:760px){
  .universalResults{grid-template-columns:1fr}
  .noteToolRow{grid-template-columns:1fr}
  .quickNoteActions{grid-template-columns:1fr}
  .dockNote{background:#294e68!important}
}


/* Phase 1.10 searchable client picker */
.clientPicker{position:relative}
.hiddenSelect{display:none!important}
.clientPickerResults{position:relative;display:flex;flex-direction:column;gap:5px;margin-top:6px;max-height:280px;overflow:auto}
.clientPickRow{border:1px solid #d9e2e8;background:#fff;border-radius:7px;padding:9px 10px;text-align:left;width:100%;display:block}
.clientPickRow:hover,.clientPickRow:focus{border-color:#8db5d3;background:#f7fbfe;outline:none}
.clientPickRow strong{display:block;color:#263f51;font-size:.86rem}
.clientPickRow span{display:block;color:#6a7c89;font-size:.7rem;margin-top:2px}
.clientPickRow .pickerMeta{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.clientPickRow .pickerMeta em{font-style:normal;background:#eef3f6;color:#506879;border-radius:4px;padding:2px 5px;font-size:.62rem}
.clientChosen{background:#eaf5fb;border:1px solid #b9d7e9;border-radius:7px;padding:9px 10px;margin-top:6px}
.clientChosen strong{display:block;font-size:.86rem;color:#25465d}.clientChosen span{font-size:.7rem;color:#607584}
.clientChosen button{float:right;border:0;background:transparent;color:#0b5fa5;font-weight:800;font-size:.72rem}
.pickerHint{font-size:.73rem;color:#72828e;padding:6px 2px}
@media(max-width:760px){
  .clientPickerResults{max-height:44vh}
  .clientPickRow{padding:11px}
}


/* Phase 1.11 local Ollama */
.localAiNote{background:#edf7ef;border:1px solid #c7e3cb;color:#315e39;border-radius:7px;padding:8px 10px;font-size:.75rem}


/* Phase 1.12 automatic local note cleanup */
.labelHint{font-size:.68rem;font-weight:500;color:#71818d;margin-left:5px}
.professionalNoteBox{margin:14px 0;border:1px solid #cfe0d5;background:#f8fcf9;border-radius:9px;padding:12px}
.professionalNoteHead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:7px}
.professionalNoteHead h3{margin:2px 0;font-size:.95rem;color:#28483a}
.professionalNoteBox textarea{background:#fff;border-color:#cfe0d5}
.proStatus{font-size:.67rem;font-weight:800;border-radius:999px;padding:5px 8px;background:#eef3f6;color:#60727f}
.proStatus.ready{background:#e5f5eb;color:#17704e}.proStatus.stale{background:#fff1d9;color:#8c5b08}.proStatus.basic{background:#f0eef8;color:#674c8f}
.saveBehaviorHint{text-align:center;font-size:.7rem;color:#71818e;margin:7px 0 0}
.quickNoteActions.singleAction{grid-template-columns:1fr}
.autoNoteTools{grid-template-columns:1fr}
@media(max-width:760px){
  .professionalNoteHead{display:block}
  .proStatus{display:inline-block;margin-top:5px}
}


/* Phase 1.13 asynchronous professional rewrite */
.proStatus.queued{background:#e8f2fb;color:#285f89}
.proStatus.processing{background:#eee9fb;color:#6545a1}
.proStatus.error{background:#fdebec;color:#a33c46}
.professionalAsyncRow{display:flex;justify-content:space-between;gap:10px;align-items:center}
.professionalAsyncRow p{margin:5px 0;flex:1}
@media(max-width:760px){
  .professionalAsyncRow{display:block}
  .professionalAsyncRow button{margin-top:6px}
}


/* Phase 1.14 dual note outputs + receipts */
.cleanedNoteBox{margin:14px 0;border:1px solid #c9dbea;background:#f7fbfe;border-radius:9px;padding:12px}
.cleanedNoteBox textarea{background:#fff;border-color:#c9dbea}
.receiptPanel{min-height:420px}
.receiptCamera{border-color:#d8c79b;background:#fffcf3}
.receiptList{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.receiptCard{display:grid;grid-template-columns:150px 1fr;gap:14px;border:1px solid #dce4e9;border-radius:9px;padding:12px;background:#fff}
.receiptThumb img{width:100%;max-height:210px;object-fit:contain;border-radius:7px;background:#f3f5f6}
.receiptStatus{display:inline-block;font-size:.67rem;font-weight:800;border-radius:999px;padding:4px 7px;background:#eef3f6;color:#627480;margin-bottom:6px}
.receiptStatus.queued{background:#e7f1fa;color:#2a628b}
.receiptStatus.processing{background:#eee9fb;color:#6545a1}
.receiptStatus.ready{background:#e5f5eb;color:#16704d}
.receiptStatus.error{background:#fdebec;color:#a33c46}
.receiptFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.receiptFields .wide{grid-column:1/-1}
.receiptFields label{margin-top:0}
.receiptActions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.receiptMoneySummary{display:flex;gap:12px;flex-wrap:wrap;margin:5px 0 9px;font-size:.78rem;color:#4e6574}
.receiptMoneySummary strong{color:#203d51}
@media(max-width:760px){
  .fieldTabs{overflow-x:auto;justify-content:flex-start}
  .fieldTab{min-width:92px}
  .receiptCard{grid-template-columns:1fr}
  .receiptThumb img{max-height:280px}
  .receiptFields{grid-template-columns:1fr}
  .receiptFields .wide{grid-column:auto}
}


/* Phase 1.15 — Rebuild My Day */
.rebuildIntro{border-left:4px solid #7454b8}
.localOnlyPill{background:#eee8fb;color:#6747a1;border-radius:999px;padding:6px 9px;font-size:.68rem;font-weight:900}
.rebuildSafety{display:flex;gap:10px;align-items:flex-start;background:#fff7df;border:1px solid #ead69b;border-radius:8px;padding:11px 12px;margin:10px 0 14px}
.rebuildSafety b{white-space:nowrap;color:#78560d}.rebuildSafety span{font-size:.78rem;color:#675d44}
.rebuildInputActions{display:grid;grid-template-columns:1fr 1.4fr;gap:8px;margin-top:10px}
.rebuildAnalyzeStatus{min-height:25px;margin-top:10px;font-size:.78rem;color:#5f7180}
.rebuildAnalyzeStatus.processing{color:#6747a1;font-weight:750}
.rebuildAnalyzeStatus.error{color:#a33c46}
.originalRecap{background:#f7f9fa;border:1px solid #dfe6ea;border-radius:8px;padding:9px 11px;margin-bottom:12px}
.originalRecap summary{font-weight:800;cursor:pointer;color:#405767}
.originalRecap p{white-space:pre-wrap;font-size:.8rem;color:#596d7b}
.rebuildTotals{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.rebuildTotalChip{background:#eef3f7;border-radius:6px;padding:7px 9px;font-size:.73rem;color:#4b6373}
.rebuildTotalChip strong{color:#223f52}
.rebuildSegments{display:flex;flex-direction:column;gap:12px}
.rebuildSegment{border:1px solid #dce4e9;border-radius:10px;background:#fff;padding:13px}
.rebuildSegment.review{border-left:4px solid #d79a27}
.rebuildSegment.conflict{border-left:4px solid #c94b56}
.rebuildSegHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.rebuildSegTitle{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rebuildSegTitle h3{margin:0;font-size:1rem;color:#263f51}
.rebuildSegNum{display:inline-flex;width:26px;height:26px;border-radius:50%;align-items:center;justify-content:center;background:#eaf2f8;color:#345d77;font-weight:900;font-size:.76rem}
.rebuildConfidence{font-size:.67rem;background:#eff3f5;color:#637580;padding:4px 6px;border-radius:999px}
.rebuildInclude{display:flex;gap:6px;align-items:center;font-size:.73rem;font-weight:800}
.rebuildReviewMsg{background:#fff5dc;border-radius:6px;padding:7px 9px;margin:8px 0;color:#7a590f;font-size:.75rem}
.rebuildConflictMsg{background:#fdebed;color:#943b45}
.rebuildSegGrid{display:grid;grid-template-columns:150px 150px 180px 1fr;gap:8px;margin-top:10px}
.rebuildSegGrid .span2{grid-column:span 2}.rebuildSegGrid .wide{grid-column:1/-1}
.rebuildMatchBox{background:#f7f9fb;border:1px solid #dfe6eb;border-radius:8px;padding:10px;margin-top:10px}
.rebuildMatchBox.good{background:#f1faf4;border-color:#cde6d5}
.rebuildMatchBox.new{background:#fff9e9;border-color:#ecdca8}
.rebuildMatchBox.bad{background:#fdf0f1;border-color:#ebc8cc}
.rebuildMatchBox b{display:block;font-size:.8rem;color:#314c5e}.rebuildMatchBox span{font-size:.72rem;color:#667986}
.rebuildMatchActions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.rebuildSource{font-size:.7rem;color:#71818d;margin-top:8px;font-style:italic}
.rebuildCommitBar{position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border:1px solid #dce5ea;border-radius:10px;padding:11px;margin-top:15px;display:flex;justify-content:space-between;gap:12px;align-items:center;box-shadow:0 6px 22px rgba(0,0,0,.08)}
.rebuildCommitBar div{display:flex;flex-direction:column}.rebuildCommitBar span{font-size:.7rem;color:#6c7e8b}
.rebuildHistory{display:flex;flex-direction:column;gap:7px}
.rebuildHistoryRow{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid #dfe6ea;border-radius:8px;padding:10px}
.rebuildHistoryRow strong{display:block;color:#314b5d}.rebuildHistoryRow span{font-size:.7rem;color:#71818d}
.rebuildHistoryActions{display:flex;gap:6px;flex-wrap:wrap}
@media(max-width:760px){
  .rebuildInputActions{grid-template-columns:1fr}
  .rebuildSafety{display:block}.rebuildSafety b{display:block;margin-bottom:4px}
  .rebuildSegHead{display:block}.rebuildInclude{margin-top:7px}
  .rebuildSegGrid{grid-template-columns:1fr 1fr}
  .rebuildSegGrid .span2,.rebuildSegGrid .wide{grid-column:1/-1}
  .rebuildCommitBar{display:block;bottom:78px}.rebuildCommitBar button{width:100%;margin-top:9px}
  .rebuildHistoryRow{display:block}.rebuildHistoryActions{margin-top:8px}
}


/* Phase 1.16 — automatic grammar/spell pass */
.cleanedNoteBox .proStatus.ready{background:#e5f5eb;color:#17704e}
.cleanedNoteBox .proStatus.queued{background:#e8f2fb;color:#285f89}
.cleanedNoteBox .proStatus.processing{background:#eee9fb;color:#6545a1}
.cleanedNoteBox .proStatus.error{background:#fdebec;color:#a33c46}


/* Phase 1.17 — Quick General Time */
.quickGeneralPanel{border-left:4px solid #2a779f;background:linear-gradient(180deg,#fbfdff,#f7fbfd)}
.quickPill{background:#e4f2f8;color:#286684;border-radius:999px;padding:6px 9px;font-size:.68rem;font-weight:900}
.quickGeneralFields{margin-top:8px}
.quickGeneralActions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:11px}
@media(max-width:760px){.quickGeneralActions{grid-template-columns:1fr}.quickGeneralActions .giant{min-height:54px}}

/* Phase 1.18 searchable selectors everywhere */
.jobPicker{position:relative}.jobPicker .clientPickerResults{max-height:320px}.quickGeneralPanel .clientPickerResults{max-height:340px}


/* Phase 1.19 — reliable photos + rapid/batch upload + remote */
.photoModeGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.photoModeCard{border:1px solid #dce5ea;border-radius:10px;padding:13px;background:#fff}
.photoModeCard h3{margin:3px 0 10px;color:#294657}
.rapidCard{background:#fafcff}
.rapidPhotoActions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.photoUploadStatus{min-height:24px;margin-top:8px;font-size:.76rem;color:#667986}
.photoUploadStatus.working{color:#5f4d94;font-weight:800}
.photoUploadStatus.good{color:#17704e;font-weight:800}
.photoUploadStatus.error{color:#a33c46;font-weight:800}
.photoListHeader{display:flex;justify-content:space-between;align-items:end;gap:10px;margin:18px 0 8px}
.photoListHeader h3{margin:0;color:#304b5d}
.photoEditRow{align-items:flex-start}
.photoEditRow .photoText{flex:1}
.photoEditRow .photoText label{margin-top:0}
.photoMeta{font-size:.68rem;color:#748590;margin:5px 0}
.remoteBtn{background:#eef0fb!important;color:#4e4e8b!important;border:1px solid #cbcfea!important}
.quickCreateActions{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){
  .photoModeGrid{grid-template-columns:1fr}
  .rapidPhotoActions{grid-template-columns:1fr}
  .photoEditRow{display:grid;grid-template-columns:96px 1fr}
  .photoEditRow>button{grid-column:2}
  .quickCreateActions{grid-template-columns:1fr}
}


/* Phase 1.20 — in-app direct camera */
.inAppCameraButton{width:100%;font-family:inherit;cursor:pointer;text-align:center}
.miniCameraFallback{display:inline-block;margin-top:8px;font-size:.7rem;font-weight:800;color:#597181;text-decoration:underline;cursor:pointer}
.cameraModalOverlay{z-index:1200;background:rgba(7,15,20,.92)}
.fieldCameraCard{width:min(760px,100%);max-height:96vh;background:#0b1115;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;color:#fff}
.cameraModalHead{background:#fff;color:#263f51;padding:12px 14px}
.cameraViewport{position:relative;min-height:300px;background:#000;display:flex;align-items:center;justify-content:center;overflow:hidden}
.cameraViewport video{display:block;width:100%;height:min(68vh,620px);object-fit:contain;background:#000}
.cameraPermissionMessage{position:absolute;inset:auto 18px 18px;background:rgba(0,0,0,.72);border-radius:8px;padding:12px;color:#fff;text-align:center;font-size:.8rem}
.cameraCaptureBar{display:grid;grid-template-columns:1fr 92px 1fr;align-items:center;gap:12px;padding:13px 16px;background:#101820}
.cameraCaptureBar .btn{min-height:46px}
.cameraShutter{width:72px;height:72px;border-radius:50%;border:6px solid #fff;background:#fff;box-shadow:inset 0 0 0 5px #1b2832;justify-self:center;cursor:pointer}
.cameraShutter:active{transform:scale(.94)}.cameraShutter:disabled{opacity:.45}
.fieldCameraCard>.photoUploadStatus{padding:0 16px 12px;background:#101820;margin:0;min-height:28px}
@media(max-width:760px){
  .fieldCameraCard{width:100%;height:100dvh;max-height:none;border-radius:0}
  .cameraViewport{flex:1;min-height:0}.cameraViewport video{height:100%;object-fit:contain}
  .cameraCaptureBar{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
}


/* Phase 1.21 — overlap resolver, deletion, media archive */
.mediaCleanupCard{border-left:4px solid #8a6b35}
.mediaCleanupPreview{font-size:.73rem;color:#5f7180;background:#f6f8f9;border-radius:7px;padding:8px;margin:8px 0}
.btn.danger{background:#a53e48;color:#fff;border-color:#a53e48}
.btn.danger:disabled{opacity:.45}
.historyActions .dangerMini{margin-left:auto}
@media(max-width:760px){
  .historyActions .dangerMini{margin-left:0}
}


/* Phase 1.22 — complete ConnectWise manual package */
.connectwisePackageCard{border-left:4px solid #2c6f9f}
.connectwisePackageCard small{display:block;margin-top:7px;color:#647887;line-height:1.35}


/* Phase 1.26 — retention-based storage cleanup */
.storageCleanupCard{border-left:4px solid #7b6333}
.storageRetentionChoices{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}
.storageRetentionChoices label{display:flex;align-items:center;gap:5px;background:#f5f7f8;border:1px solid #dce3e7;border-radius:999px;padding:7px 10px;font-size:.76rem;font-weight:750;color:#405766}
.storageRetentionChoices input{margin:0}
.storageSafeText{color:#26714f;font-weight:750}
.archivedMediaThumb,.archivedReceiptThumb{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#eef1f3;color:#657681;border:1px dashed #aebbc3;border-radius:7px;min-height:90px;text-align:center;font-weight:850;font-size:.75rem}
.archivedMediaThumb small,.archivedReceiptThumb small{font-weight:500}
@media(max-width:760px){
  .storageRetentionChoices{display:grid;grid-template-columns:1fr 1fr}
}

.cwTransferList{display:flex;flex-direction:column;gap:12px}.cwTransferCard.done{border-left:4px solid #27845b}.cwCardHead{display:flex;justify-content:space-between;gap:10px}.cwDonePill{background:#e5f5eb;color:#17704e;padding:6px 9px;border-radius:999px;font-size:.7rem;font-weight:900}.cwFacts{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:10px 0}.cwFacts div{background:#f5f8fa;padding:8px;border-radius:7px}.cwFacts b,.cwFacts span{display:block}.cwFacts b{font-size:.66rem;color:#6b7e8a}.cwFacts span{font-weight:800}.cwCopyRow{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.cwAttachments{display:flex;flex-direction:column;gap:6px;margin:12px 0}.cwAttachment{display:block;padding:8px;background:#f5f8fa;border-radius:7px;text-decoration:none;color:#35576c}.cwAttachment.archived{color:#7a858c}.storageMainGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:760px){.cwFacts{grid-template-columns:1fr 1fr}.storageMainGrid{grid-template-columns:1fr}}
.workFlowBanner,.flowHero{background:linear-gradient(135deg,#173b50,#285f7c);color:#fff;border-radius:12px;padding:16px;margin-bottom:12px}.workFlowBanner p,.flowHero p{color:#dbe9f0}.catchupGrid,.moreGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.flowChoice{text-align:left;background:#fff;border:1px solid #d9e3e8;border-radius:10px;padding:15px;min-height:80px;color:#294657}.flowChoice b,.flowChoice span{display:block}.flowChoice span{font-size:.75rem;color:#687d89}.miniTimelineRow{display:grid;grid-template-columns:130px 1fr 75px;gap:8px;padding:7px;border-bottom:1px solid #edf1f3;font-size:.76rem}.miniTimelineRow em{text-align:right;font-style:normal}.reviewStatus{display:flex;justify-content:space-between;padding:12px;border-radius:8px;margin-top:10px}.reviewStatus.ready{background:#e7f6ed;color:#176c49}.reviewStatus.issues{background:#fff2df;color:#895c18}.reviewIssue{background:#fff6e8;padding:8px;margin-top:5px;border-radius:6px}.timelineRow{display:grid;grid-template-columns:95px 1fr auto;gap:10px;align-items:center;background:#fff;border:1px solid #dde6ea;border-radius:9px;padding:10px;margin-top:7px}.timelineRow span{display:block;font-size:.72rem;color:#6a7d88}.mobileFlowNav{display:none}@media(max-width:760px){body{padding-bottom:74px}.mobileFlowNav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);bottom:0;left:0;right:0;z-index:1000;background:#fff;border-top:1px solid #ccd9df;padding:5px 3px calc(5px + env(safe-area-inset-bottom));box-shadow:0 -3px 12px rgba(20,45,60,.12)}.mobileFlowNav button{border:0;background:transparent;font-size:.57rem;font-weight:850;color:#48616f;padding:4px 1px}.mobileFlowNav button span{display:block;font-size:1rem}.catchupGrid,.moreGrid{grid-template-columns:1fr}.miniTimelineRow{grid-template-columns:105px 1fr 65px}}.travelAssistPanel{border-left:4px solid #c9872b;background:#fffaf2}.noteFollowupPanel{border-left:4px solid #d49b31;background:#fffdf7}.noteFollowupRow{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #edf1f3}.noteFollowupRow span{display:block;font-size:.72rem;color:#6c7e89}.jobPickerResults{display:flex;flex-direction:column;gap:5px;max-height:300px;overflow:auto}.jobPickerResult{text-align:left;background:#fff;border:1px solid #d8e2e7;border-radius:7px;padding:9px}.jobPickerResult b,.jobPickerResult span{display:block}.jobPickerResult span{font-size:.72rem;color:#687d88}
/* Phase 1.31 — mobile save reliability and dashboard cleanup */
.startMyDayPanel{border:2px solid #2b6e95;box-shadow:0 4px 14px rgba(27,78,108,.10)}
.startMyDayTitle{margin-bottom:10px}
.startMyDayTitle strong{display:block;font-size:1.05rem;margin-top:3px;color:#244759}

@media(max-width:760px){
  /* Keep the work screen focused: start time first, details later. */
  #view-dashboard .metrics,
  #view-dashboard .universalSearchPanel,
  #view-dashboard .dailyFlowPanel{display:none}
  #view-dashboard .workFlowBanner{margin-bottom:8px}
  #view-dashboard .todayMiniPanel{order:5}
  #view-dashboard .quickGeneralPanel{margin-top:0}
  #view-dashboard .quickGeneralFields,
  #view-dashboard #generalNote{display:none}
  #view-dashboard .quickGeneralActions{
    display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px
  }
  #view-dashboard .quickGeneralActions .btn{min-height:52px;padding:8px 5px;font-size:.76rem}
  #view-dashboard #startJobPanel .panelHeader p{display:none}

  /* Full-screen phone editor: Save/Cancel always reachable in portrait. */
  #editEntryModal.modalOverlay,
  #editTimeModal.modalOverlay{
    align-items:stretch;
    padding:0;
  }
  #editEntryModal .switchModalCard,
  #editTimeModal .switchModalCard{
    width:100%;
    max-width:none;
    height:100dvh;
    max-height:100dvh;
    border-radius:0;
    overflow-y:auto;
    padding:14px 14px 96px;
    -webkit-overflow-scrolling:touch;
  }
  #editEntryModal .modalHead,
  #editTimeModal .modalHead{
    position:sticky;
    top:-14px;
    z-index:4;
    background:#fff;
    margin:-14px -14px 8px;
    padding:14px;
    border-bottom:1px solid #e1e7ea;
  }
  #editEntryModal .formActions,
  #editTimeModal .formActions{
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:1100;
    display:grid;
    grid-template-columns:1fr 1.5fr;
    gap:8px;
    background:#fff;
    border-top:1px solid #d4dee3;
    padding:9px 12px calc(9px + env(safe-area-inset-bottom));
    box-shadow:0 -5px 18px rgba(24,51,68,.14);
  }
  #editEntryModal .formActions .btn,
  #editTimeModal .formActions .btn{
    min-height:50px;
    font-size:.9rem;
  }
  #editEntryModal textarea[readonly]{
    min-height:76px;
    max-height:110px;
  }
}

/* Phase 1.32 — always-visible Save + smoother switch/ticket flow */
.modalHeadActions{display:flex;align-items:center;gap:8px}
.mobileHeaderSave{display:none;border:0;border-radius:7px;background:#0b5fa5;color:#fff;font-weight:900;padding:10px 14px;min-height:42px}
.switchConfirmStep{padding-top:4px}
.switchChosenJob{background:#eef6fb;border:1px solid #cbdfe9;border-radius:9px;padding:11px;margin:8px 0 12px}
.switchChosenJob h3{margin:3px 0;font-size:1rem;color:#24485d}
.switchChosenJob p{margin:0;color:#637987;font-size:.78rem}
.switchActivityChoices{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin:12px 0}
.switchActivityChoices .btn{opacity:.62;min-height:48px}
.switchActivityChoices .selectedActivity{opacity:1;outline:3px solid rgba(34,91,126,.18);font-weight:900}
.backToJobs{margin-bottom:6px}

@media(max-width:760px){
  .mobileHeaderSave{display:inline-flex;align-items:center;justify-content:center}

  /* Use dynamic + small viewport fallbacks for iOS Safari/PWA keyboards. */
  #editEntryModal .switchModalCard,
  #editTimeModal .switchModalCard{
    height:100vh;
    height:100svh;
    height:100dvh;
    max-height:none!important;
  }

  /* The TOP Save is the guaranteed path. Bottom Save remains a convenience. */
  #editEntryModal .modalHead,
  #editTimeModal .modalHead{
    top:0!important;
    margin:-14px -14px 10px!important;
    padding:calc(10px + env(safe-area-inset-top)) 12px 10px!important;
  }

  #editEntryModal .formActions,
  #editTimeModal .formActions{
    position:sticky!important;
    bottom:0!important;
    left:auto!important;
    right:auto!important;
    margin:18px -14px -96px!important;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom))!important;
  }

  #switchModal.modalOverlay{padding:0;align-items:stretch}
  #switchModal .switchModalCard{
    width:100%;max-width:none;height:100dvh;max-height:100dvh;border-radius:0;
    padding:14px 14px calc(90px + env(safe-area-inset-bottom));
  }
  #switchModal .modalHead{
    position:sticky;top:-14px;background:#fff;z-index:4;
    margin:-14px -14px 10px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;
    border-bottom:1px solid #e0e7eb;
  }
  #switchConfirmStep label{margin-top:10px}
  #confirmSwitchBtn{position:sticky;bottom:0;margin-top:12px;box-shadow:0 -4px 15px rgba(25,57,76,.1)}
}

/* Phase 1.33 — screen wake lock during dictation */
.wakeLockIndicator{
  position:fixed;left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));
  z-index:1400;text-align:center;font-size:.72rem;pointer-events:none
}
.wakeLockIndicator.active{color:#17704e;font-weight:900;background:#eef9f2;border-radius:999px;padding:6px}
.wakeLockIndicator.pending{color:#8a641e;background:#fff7e7;border-radius:999px;padding:6px}
.wakeLockIndicator.unsupported{color:#8a4f4f}
