:root{--ink:#153334;--muted:#647776;--paper:#f7f6f1;--white:#fff;--green:#0f5d58;--mint:#dff0e9;--line:#dbe3de;--orange:#e98c42}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--paper);color:var(--ink)}button,input,textarea{font:inherit}button{cursor:pointer;border:0}.topbar{height:76px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:12px max(18px,calc((100vw - 1100px)/2))}.topbar h1{font-size:22px;margin:0}.eyebrow{letter-spacing:.11em;font-size:11px;font-weight:750;margin:0 0 5px}.topbar .eyebrow{color:#9ccdc3}.sync{font-size:12px;color:#cbe3dd;display:flex;gap:7px;align-items:center}.sync span:first-child{width:8px;height:8px;border-radius:50%;background:#76d4b3}main{max-width:1100px;margin:auto;padding:28px 18px 98px}.page{display:none}.page.active{display:block}.hero,.page-head,.section-head,.row{display:flex;align-items:center;justify-content:space-between;gap:15px}.hero{margin:8px 0 26px}.hero h2,.page h2{font-size:30px;margin:0 0 5px}.hero p:not(.eyebrow),.muted{color:var(--muted);margin:0}.primary,.secondary{border-radius:10px;padding:11px 15px;font-weight:700}.primary{background:var(--green);color:white}.secondary{background:#e7ece8;color:var(--ink)}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px}.quick-grid button{background:#fff;border:1px solid var(--line);border-radius:14px;height:100px;font-size:26px;color:var(--green)}.quick-grid span{font-size:13px;display:block;color:var(--ink);margin-top:6px;font-weight:650}.panel,.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;margin:16px 0}.section-head h3,.card h3{margin:0}.link{background:transparent;color:var(--green);font-weight:700}.list{margin-top:12px}.list-item{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--line);gap:10px}.list-item:first-child{border-top:0}.list-item h4,.list-item p{margin:0}.list-item p{color:var(--muted);font-size:13px;margin-top:3px}.badge{background:var(--mint);color:var(--green);border-radius:99px;padding:4px 8px;font-size:11px;font-weight:750;white-space:nowrap}.cards{margin-top:20px}.card p{color:var(--muted);line-height:1.45}.search,textarea,.field{width:100%;padding:13px;border:1px solid #bdcbc5;border-radius:10px;background:#fff;margin-top:18px}.field{margin:7px 0}textarea{height:180px;resize:vertical}.bottomnav{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:center;z-index:3}.bottomnav button{width:min(20%,150px);height:68px;background:#fff;color:var(--muted);font-size:19px}.bottomnav span{font-size:10px;display:block}.bottomnav button.active{color:var(--green);font-weight:800}dialog{border:0;border-radius:16px;width:min(540px,calc(100% - 30px));box-shadow:0 20px 50px #0004;padding:0}dialog::backdrop{background:#132b2b88}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:21px}.modal-head button{font-size:28px;background:transparent}.modal-head+div{padding:18px}.modal-actions{padding:16px 18px;display:flex;justify-content:flex-end;gap:9px;border-top:1px solid var(--line)}.check{appearance:none;width:22px;height:22px;border:2px solid var(--green);border-radius:7px;flex:none}.check:checked{background:var(--green);box-shadow:inset 0 0 0 4px #fff}@media(max-width:560px){.quick-grid{grid-template-columns:repeat(2,1fr)}.topbar{height:68px}.sync{display:none}.hero h2,.page h2{font-size:26px}}

.status-strip{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.sync.offline #syncDot{background:var(--orange)}.job-ref{color:var(--muted);font-weight:700;letter-spacing:.04em}.icon-btn{background:transparent;color:var(--green);font-size:20px;padding:8px}.actions{justify-content:flex-start;flex-wrap:wrap}.danger{border-radius:10px;padding:11px 15px;font-weight:700;background:#f4e7e4;color:#8b3028}.import-label{display:inline-block;cursor:pointer}.import-label input{display:none}@media(max-width:560px){.actions button{flex:1}.status-strip{margin-top:10px}}

.active-filter{outline:2px solid var(--green);outline-offset:1px}#jobStatusFilter{max-width:240px;margin-top:10px}

.upload-gap{margin-left:8px}.mini-list{margin-top:12px}.mini-item{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:8px 0}.small{font-size:12px}.message-box{min-height:130px}.toolbar{display:flex;gap:10px;align-items:center}.toolbar .search{flex:1}.toolbar .field{width:auto}@media(max-width:560px){.upload-gap{margin:8px 0 0;display:block;text-align:center}.toolbar{display:block}#jobStatusFilter{max-width:none}}

.intake-tools{justify-content:flex-start;margin-top:16px}.card small{color:var(--muted)}

.comm-row{align-items:flex-start}.comm-row>div{min-width:0;flex:1}.comm-row .small:last-child{margin-top:5px;white-space:normal;overflow-wrap:anywhere}

#syncText[data-state="error"]{background:#b42318;color:#fff;padding:2px 8px;border-radius:6px}

/* First-class Quotes workspace */
.quote-actions{display:flex;flex-wrap:wrap;gap:8px}.quote-actions button{flex:0 1 auto}.quote-doc-list{display:grid;gap:10px}.quote-doc-status{color:#965521;font-size:12px}.quote-meta{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.quote-actions .secondary{overflow-wrap:anywhere}.bottomnav button{width:min(14.285%,135px)}@media(max-width:560px){.bottomnav button{font-size:16px}.bottomnav span{font-size:9px}.quote-actions button{flex:1}}

/* Single-day calendar: navigable on narrow Android and iPhone screens */
.calendar-day-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:16px 0 8px;padding:13px;border-radius:12px;background:var(--paper);border:1px solid var(--line)}
.calendar-day-current{display:flex;align-items:center;flex-direction:column;gap:5px;text-align:center;flex:1 1 180px;min-width:160px}
.calendar-day-current strong{font-size:16px;color:var(--ink)}
.calendar-day-current label{color:var(--muted);font-size:12px}
.calendar-day-current input{max-width:165px;margin:0;min-height:42px;text-align:center}
.calendar-day-toolbar>button{min-height:44px;flex:0 1 auto}
@media(max-width:560px){.calendar-day-toolbar{gap:8px;padding:10px}.calendar-day-current{order:-1;flex-basis:100%}.calendar-day-toolbar>button{flex:1}}

/* Visible feedback for manual sync, uploads and downloads (including mobile where top sync text is hidden). */
.wb-action-notice[hidden]{display:none}
.wb-action-notice{position:fixed;left:50%;bottom:85px;transform:translateX(-50%);width:min(540px,calc(100vw - 24px));padding:14px 17px;border-radius:12px;background:#153334;color:white;font-weight:700;line-height:1.4;z-index:12;box-shadow:0 6px 28px #0004;overflow-wrap:anywhere}
.wb-action-ok{background:#174e42}
.wb-action-error{background:#a71e22}
.wb-action-warn{background:#805211}
.wb-action-info{background:#153334}
.wb-template-row{gap:12px;align-items:center;flex-wrap:wrap}
.wb-template-row>div:first-child{display:flex;flex-direction:column;gap:5px;min-width:160px;flex:1;overflow-wrap:anywhere}
.wb-template-row .quote-actions{justify-content:flex-end}
#wbLastAction{line-height:1.5;margin:8px 0}
@media(max-width:560px){.wb-action-notice{bottom:78px}.wb-template-row .quote-actions{width:100%;justify-content:flex-start}}

/* Calendar cloud connection status always visible even when top sync banner is hidden on mobile. */
.calendar-cloud-status{margin:13px 0 8px;padding:11px 13px;border-radius:10px;background:#e8f0eb;color:#204c40;border:1px solid #bcd3c5;font-size:13px;font-weight:650;line-height:1.45}
.calendar-cloud-status[data-state="loading"],.calendar-cloud-status[data-state="unchecked"]{background:#eff1f4;border-color:#d4dce6;color:#344257}
.calendar-cloud-status[data-state="offline"],.calendar-cloud-status[data-state="error"]{background:#fff1e8;border-color:#ebba98;color:#723912}
.calendar-cloud-status[data-state="unpaired"]{background:#fde9e7;border-color:#e5aaaa;color:#8b2424}
#calendarConnectDevice[hidden]{display:none}
#calendarConnectDevice{min-height:44px;margin:3px 0 9px}

/* Native app hyperlinks remain usable when JavaScript is blocked or stale on mobile. */
.wb-link-button{display:inline-flex;align-items:center;justify-content:center;text-align:center;text-decoration:none;min-height:44px;color:var(--ink)}
.wb-link-button:hover,.wb-link-button:focus-visible{outline:2px solid var(--green);outline-offset:2px}

/* Calendar control rows must never exceed narrow phone viewports. */
#calendar .page-head,#calendar .page-head>.row{min-width:0}
#calendar .page-head>.row{flex-wrap:wrap}
#calendar .panel{min-width:0}
#calendar .panel>.row{flex-wrap:wrap;gap:10px}
#calendar #calendarSearch{flex:1 1 200px;min-width:0}
#calendar .calendar-day-current input{width:100%;min-width:0}
@media(max-width:600px){
  #calendar .page-head{display:block}
  #calendar .page-head>div:first-child{margin-bottom:12px}
  #calendar .page-head>.row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
  #calendar .page-head>.row button{width:100%;min-width:0;max-width:100%;padding:10px 5px;min-height:48px;font-size:14px;line-height:1.3;white-space:normal;overflow-wrap:anywhere}
  #calendar .panel>.row{display:flex;align-items:stretch}
  #calendar #calendarSearch{flex-basis:100%;width:100%}
  #calendar .calendar-day-toolbar{width:100%;min-width:0}
  #calendar .calendar-day-current{min-width:0}
}

/* Clear trusted-device status without exposing access keys or PINs. */
#wbDevicePairStatus{padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:#eff3f2;color:var(--ink);line-height:1.55}
#wbDevicePairStatus[data-state="connected"]{background:#e7f3e8;border-color:#b9d8bf}
#wbDevicePairStatus[data-state="unpaired"],#wbDevicePairStatus[data-state="error"]{background:#fff1e8;border-color:#ebba98}
#enrollPrimaryDevice[hidden]{display:none}
#devicePairingControls button:disabled{opacity:.5;cursor:not-allowed}

/* Tasks: account for tall/narrow Android viewports, avoid invisible controls. */
#tasks .page-head{min-width:0}
#tasks .page-head button{min-height:44px}
#tasks .task-cloud-controls{margin:12px 0 18px}
#tasks #taskCloudStatus{margin:0 0 8px}
#tasks .task-cloud-controls button{min-height:44px;width:100%}
#tasks .task-cloud-controls button:disabled{opacity:.55}
#tasks [data-task-filter]{min-height:44px;overflow-wrap:anywhere;white-space:normal}
@media(max-width:600px){
  #tasks .page-head{display:block}
  #tasks .page-head>.primary{margin-top:10px;width:100%}
  #tasks .page-head+.row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}
  #tasks [data-task-filter]{min-width:0;width:100%;font-size:13px;padding:10px 5px}
}

.brand{display:flex;align-items:center;gap:12px}.brand-icon{width:42px;height:42px;border-radius:11px;box-shadow:0 2px 8px #0005;flex:none}.wb-app-icon{width:26px;height:26px;border-radius:7px;margin-right:9px;flex:none;box-shadow:0 1px 3px #0003}.wb-link-button{gap:0}@media(max-width:560px){.brand-icon{width:36px;height:36px;border-radius:9px}}
.wb-module-buttons{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}.wb-module-buttons>*{display:flex;align-items:center;justify-content:flex-start;text-align:left;min-height:56px;width:100%;margin:0;overflow-wrap:normal}.wb-module-buttons>button{padding-left:15px}

.qd-field{margin:12px 0}.qd-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.qd-head label{font-weight:650}.qd-field .field{margin-top:6px}.wb-mic{width:44px;height:40px;border-radius:10px;background:#fee2e2;color:#991b1b;font-size:18px;flex:none}.wb-dictate{display:inline-flex;align-items:center;gap:6px;margin:2px 0 12px;padding:8px 12px}
