/* ALPHA+FIELD-CSS-PART 4 of 6 — Sheets, create speed dial (FAB), New Job form, invoice form extras. Split from index.html; load order is the cascade. */
/* ---------- Sheets ---------- */
.scrim{position:absolute;inset:0;z-index:60;background:rgba(0,0,0,.5);opacity:0;pointer-events:none;
  transition:opacity .3s ease;backdrop-filter:none;-webkit-backdrop-filter:none}
.scrim.in{opacity:1;pointer-events:auto;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.sheet{position:absolute;left:0;right:0;bottom:0;z-index:61;max-height:90%;display:flex;flex-direction:column;
  background:linear-gradient(180deg,rgba(255,255,255,.94),rgba(255,255,255,.86));
  backdrop-filter:var(--sheet-blur);-webkit-backdrop-filter:var(--sheet-blur);
  border:1px solid var(--hair);border-bottom:none;border-radius:28px 28px 0 0;
  transform:translateY(110%);transition:transform .4s cubic-bezier(.32,.72,0,1);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 -22px 60px -16px rgba(14,35,54,.30)}
.sheet.in{transform:none}
.sheet .grab{width:38px;height:5px;border-radius:3px;background:var(--hair2);margin:9px auto 4px;flex-shrink:0}
.sheet .sh-head{padding:8px 20px 14px;display:flex;align-items:center;justify-content:space-between}
.sheet .sh-head h3{font-size:20px;font-weight:800;letter-spacing:-.4px}
.sheet .sh-x{width:30px;height:30px;border-radius:50%;background:var(--glass2);border:1px solid var(--hair);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink2)}
.sheet .sh-body{padding:0 20px calc(24px + var(--safe-b));overflow-y:auto;scrollbar-width:none}
.sheet .sh-body::-webkit-scrollbar{display:none}

/* field must-do sub-tasks checklist */
.ft-sub-intro{font-size:14px;color:var(--ink2);line-height:1.4;margin:0 0 12px}
.ft-sub-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.ft-sub-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:var(--glass3);border:1px solid var(--hair);cursor:pointer;font-size:15px;font-weight:600;line-height:1.35}
.ft-sub-row input.ft-sub-cb{width:22px;height:22px;flex-shrink:0;accent-color:#176AF4;cursor:pointer}
.ft-sub-actions{display:flex;gap:10px;padding-top:4px}
.ft-sub-actions button{flex:1;padding:14px 16px;border-radius:14px;font-size:15px;font-weight:700;border:1px solid var(--hair);cursor:pointer}
.ft-sub-actions .ft-sub-cancel{background:var(--glass2);color:var(--ink2)}
.ft-sub-actions .ft-sub-confirm{background:#176AF4;color:#fff;border-color:#176AF4}
.ft-sub-actions .ft-sub-confirm:disabled{background:var(--glass2);color:var(--ink2);border-color:var(--hair);cursor:not-allowed}

/* create grid */
.creategrid{display:grid;grid-template-columns:1fr 1fr;gap:11px;padding-bottom:6px}
.createcell{padding:16px;border-radius:18px;background:var(--glass3);border:1px solid var(--hair);cursor:pointer;
  display:flex;flex-direction:column;gap:11px;transition:transform .12s ease;
  box-shadow:0 6px 18px -12px rgba(14,35,54,.30)}
.createcell:active{transform:scale(.96)}
.createcell .ci{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center}
.createcell .ct{font-size:16px;font-weight:700}
.createcell .cd{font-size:12.5px;color:var(--ink2);font-weight:500;line-height:1.3}

/* ---------- Menu button (bottom-right) ----------
   Opens the Field menu sheet. The speed-dial layer it used to expand into was
   removed 2026-08-30: fabBtn has called openFieldHub() directly since the menu
   replaced it, so the layer's open state was never set and every rule under it
   — the scrim, the stacked items, the plus-to-x rotation — was unreachable. */
.fab-layer{position:absolute;inset:0;z-index:45;pointer-events:none}
.fab-layer.hidden{display:none}
.fab{position:absolute;right:18px;bottom:calc(18px + var(--safe-b));width:56px;height:56px;border-radius:50%;
  border:none;cursor:pointer;pointer-events:auto;z-index:2;display:flex;align-items:center;justify-content:center;
  color:#fff;background:linear-gradient(180deg,#5B95F7,var(--blue));
  box-shadow:0 14px 32px -8px rgba(23,106,244,.7),0 0 0 1px rgba(255,255,255,.18) inset;
  transition:transform .26s cubic-bezier(.2,.9,.3,1.25)}
.fab svg{width:26px;height:26px}
.fab:active{transform:scale(.92)}

/* quote builder */
.field{margin-bottom:13px}
.field label{display:block;font-size:12.5px;font-weight:700;color:var(--ink2);margin:0 2px 6px}
.field .inp{width:100%;background:var(--glass);border:1px solid var(--hair);border-radius:13px;padding:13px 14px;
  color:var(--ink);font-family:var(--font);font-size:15px;font-weight:500;outline:none}
.field .inp:focus{border-color:rgba(23,106,244,.5)}
.lineitem{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--hair)}
.lineitem .li-d{flex:1;font-size:14.5px;font-weight:600}
.lineitem .li-p{font-size:14.5px;font-weight:700}
.li-total{display:flex;align-items:center;justify-content:space-between;padding:14px 2px 4px}
.li-total .lt-l{font-size:14px;color:var(--ink2);font-weight:600}
.li-total .lt-v{font-size:26px;font-weight:800;letter-spacing:-.5px}
.bigbtn{width:100%;height:52px;border-radius:16px;background:var(--blue);color:#fff;border:none;font-family:var(--font);
  font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;margin-top:8px;
  transition:transform .12s ease}
.bigbtn:active{transform:scale(.98)}
.bigbtn.green{background:linear-gradient(180deg,#3B82F6,#176AF4);box-shadow:0 14px 32px -20px rgba(23,106,244,.78)} .bigbtn.glass{background:var(--glass2);border:1px solid var(--hair)}
.send-as{display:flex;align-items:center;gap:8px;justify-content:center;font-size:12.5px;color:var(--ink3);font-weight:600;margin-top:12px}

/* Bug / Idea lane picker on the field report sheet. Bug is on by default; the
   on state fills accent and stays filled — thumb-sized, never smaller than the
   44px floor. */
.wh-report-kind{display:flex;gap:9px;margin:14px 0 4px}
.wh-kind{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;height:50px;border-radius:14px;
  border:1px solid var(--hair);background:var(--glass);color:var(--ink2);
  font-family:var(--font);font-size:15px;font-weight:700;cursor:pointer;transition:transform .12s ease}
.wh-kind:active{transform:scale(.98)}
/* Selected, not primary: the blue Send button below is the ONE solid accent in
   this sheet, so the picked lane reads as an accent-tinted selection instead of
   a second CTA competing with it. */
.wh-kind.on{background:rgba(23,106,244,.12);border-color:rgba(23,106,244,.45);color:var(--accent);font-weight:800}

/* ---------- Field New Job ---------- */
.sheet.job-sheet-shell,.sheet.client-sheet-shell,.sheet.invoice-sheet-shell{top:0;max-height:none;height:100%;border-radius:0;border:none;background:#F4F6F9}
.job-form{height:100%;display:flex;flex-direction:column;background:linear-gradient(180deg,#FBF9F5,#F4F6F9);color:var(--ink);
  --job-accent:#3B82F6;--job-accent-strong:#176AF4;--job-accent-soft:rgba(23,106,244,.16);--job-accent-line:rgba(23,106,244,.36)}
.job-top{position:sticky;top:0;z-index:3;display:grid;grid-template-columns:52px 1fr 52px;align-items:center;
  min-height:calc(66px + var(--safe-t));padding:calc(10px + var(--safe-t)) 20px 10px;
  background:rgba(8,11,18,.84);backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);
  border-bottom:1px solid rgba(255,255,255,.07)}
.job-close{width:46px;height:46px;border-radius:50%;border:1px solid var(--hair);background:var(--glass2);color:var(--ink);
  display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 12px 28px -20px rgba(0,0,0,.85)}
.job-titlebar{text-align:center;font-size:18px;font-weight:850;letter-spacing:-.25px}
.job-top-spacer{width:46px;height:46px}
.job-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:0 0 calc(32px + var(--safe-b))}
.job-scroll::-webkit-scrollbar{display:none}
.job-section{padding:24px 20px 25px;border-top:8px solid rgba(255,255,255,.05)}
.job-section:first-child{border-top:none}
.job-section h4{font-size:20px;font-weight:850;letter-spacing:-.35px;color:var(--ink);margin-bottom:17px}
.job-stack{display:flex;flex-direction:column;gap:12px}
.job-with-icon{display:grid;grid-template-columns:38px 1fr;gap:14px;align-items:start;margin-top:12px}
.job-side-icon{height:52px;display:flex;align-items:center;justify-content:center;color:var(--ink2)}
.job-side-icon svg{width:22px;height:22px}
.job-input,.job-textarea{width:100%;border:1px solid var(--hair2);background:rgba(255,255,255,.07);color:var(--ink);
  border-radius:14px;font-family:var(--font);font-size:18px;font-weight:550;outline:none}
.job-input{height:56px;padding:0 16px}
.job-textarea{min-height:92px;padding:15px 16px;resize:none;line-height:1.35}
.job-input::placeholder,.job-textarea::placeholder{color:var(--ink3)}
.job-input:focus,.job-textarea:focus{border-color:rgba(23,106,244,.55);background:rgba(255,255,255,.10)}
.devcap-field{margin-bottom:12px}
.devcap-save{width:100%;height:54px;border:none;border-radius:14px;background:linear-gradient(180deg,#5B95F7,#EA6A12);color:#fff;font-family:var(--font);font-size:17px;font-weight:800;cursor:pointer;margin-top:4px;box-shadow:0 6px 16px rgba(234,106,18,.28)}
.devcap-save:disabled{opacity:.6;cursor:default}
.devcap-hint{font-size:12.5px;color:var(--ink2);text-align:center;margin-top:12px;font-weight:600}
.job-outline{width:100%;height:58px;border-radius:14px;border:1px solid var(--hair2);background:rgba(255,255,255,.035);
  color:var(--job-accent);font-family:var(--font);font-size:17px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer}
.job-outline.secondary{color:var(--ink);justify-content:space-between;padding:0 16px}
.job-add-row{display:grid;grid-template-columns:38px 1fr;gap:14px;align-items:center;margin-top:18px;color:var(--job-accent);
  font-size:17px;font-weight:800;cursor:pointer}
.job-add-row svg{width:22px;height:22px;color:var(--ink2)}
.job-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:62px;padding:0 0;border-bottom:1px solid rgba(255,255,255,.08)}
.job-row:last-child{border-bottom:none}
.job-row-main{display:flex;align-items:center;gap:10px;min-width:0}
.job-row-label{font-size:18px;font-weight:850;letter-spacing:-.25px;color:var(--ink)}
.job-row-sub{font-size:17px;font-weight:500;color:var(--ink2);margin-top:4px}
.job-row-value{font-size:20px;font-weight:850;letter-spacing:-.35px;color:var(--ink);white-space:nowrap}
.job-plus{border:none;background:transparent;color:var(--job-accent);width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.job-plus svg{width:24px;height:24px}
.job-line-list{padding:2px 0 10px}
.job-line-chip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.07)}
.job-line-chip .name{font-size:15px;font-weight:750;color:var(--ink)}
.job-line-chip .meta{font-size:12.5px;font-weight:650;color:var(--ink3);margin-top:2px}
.job-line-chip .amount{font-size:15px;font-weight:850;color:var(--ink)}
.job-remove{border:none;background:transparent;color:var(--ink3);width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.job-schedule-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;font-size:19px;font-weight:500}
.job-switch{width:58px;height:34px;border-radius:999px;border:none;background:rgba(255,255,255,.08);position:relative;cursor:pointer;transition:background .18s ease}
.job-switch::after{content:"";position:absolute;top:3px;left:3px;width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 3px 10px rgba(0,0,0,.28);transition:left .18s ease}
.job-switch.on{background:var(--job-accent-strong,var(--blue))}
.job-switch.on::after{left:27px}
.job-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}
.job-cal-title{font-size:20px;font-weight:850;letter-spacing:-.35px}
.job-cal-arrows{display:flex;gap:18px;color:var(--job-accent)}
.job-cal-arrows button{width:34px;height:34px;border:none;background:transparent;color:inherit;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.job-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:0;text-align:center}
.job-cal-dow{font-size:14px;font-weight:850;color:var(--ink2);padding:0 0 10px}
.job-day{height:42px;border:none;background:transparent;color:var(--ink);font-family:var(--font);font-size:15.5px;font-weight:600;cursor:pointer;border-radius:0}
.job-day.out{background:rgba(255,255,255,.05);color:var(--ink3)}
.job-day.selected{color:var(--job-accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.job-team-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 0;border-top:1px solid rgba(255,255,255,.09)}
.job-team-row.assignable{cursor:pointer}
.job-team-row.assignable:active{transform:scale(.99)}
.job-team-main{display:flex;align-items:flex-start;gap:12px}
.job-team-main svg{margin-top:2px;color:var(--ink2)}
.job-team-label{font-size:20px;font-weight:850;letter-spacing:-.35px}
.job-team-count{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:999px;background:var(--job-accent-soft);border:1px solid var(--job-accent-line);
  color:#BFE8FF;font-size:12px;font-weight:850;white-space:nowrap}
.job-team-list{overflow-y:auto;scrollbar-width:none;margin-top:10px;padding-right:2px}
.job-team-list::-webkit-scrollbar{display:none}
.job-member-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.08);cursor:pointer}
.job-member-row:last-child{border-bottom:none}
.job-member-row .body{flex:1;min-width:0}
.job-member-row .nm{font-size:16px;font-weight:850;color:var(--ink)}
.job-member-row .sub{font-size:13px;font-weight:650;color:var(--ink3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.job-member-check{width:26px;height:26px;border-radius:50%;border:1px solid var(--hair2);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}
.job-member-row.on .job-member-check{background:var(--job-accent-strong);border-color:var(--job-accent-strong)}
.job-team-tools{display:flex;gap:8px;margin:10px 0 2px}
.job-team-tools button{height:34px;border-radius:11px;border:1px solid var(--hair);background:var(--glass2);color:var(--ink);font-family:var(--font);font-size:13px;font-weight:800;padding:0 12px}
.job-panel-note{font-size:13px;color:var(--ink3);font-weight:650;line-height:1.4;margin-top:10px}
.job-invoice-row{display:flex;align-items:center;justify-content:space-between;gap:18px;font-size:19px;line-height:1.25;color:var(--ink);font-weight:500}
.job-select{width:100%;height:56px;padding:0 42px 0 16px;border:1px solid var(--hair2);border-radius:14px;color:var(--ink);
  font-family:var(--font);font-size:16px;font-weight:600;-webkit-appearance:none;appearance:none;
  background-color:rgba(255,255,255,.07);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a93a6' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;background-size:20px 20px}
.job-select:focus{border-color:rgba(23,106,244,.55);background-color:rgba(255,255,255,.10)}
.ncl-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px;font-size:16px;font-weight:600;color:var(--ink2)}
.ncl-toggle-row.wide{margin-top:18px;align-items:flex-start;line-height:1.32}
.ncl-toggle-row.wide span{max-width:74%}
.ncl-phone-meta{display:flex;align-items:center;gap:10px}
.ncl-phone-meta .job-select{flex:1}
.ncl-remove{flex-shrink:0;width:46px;height:46px;border-radius:13px;border:1px solid var(--hair2);background:rgba(255,255,255,.05);color:var(--ink3);display:flex;align-items:center;justify-content:center;cursor:pointer}
.ncl-remove svg{width:18px;height:18px}
.job-savebar{position:sticky;bottom:0;z-index:4;padding:12px 20px calc(12px + var(--safe-b));
  background:linear-gradient(180deg,rgba(8,11,18,0),rgba(8,11,18,.72) 22%,rgba(8,11,18,.96))}
.job-save{height:56px;width:100%;border:none;border-radius:15px;background:linear-gradient(180deg,#3B82F6,#176AF4);color:#fff;font-family:var(--font);
  font-size:18px;font-weight:850;cursor:pointer;box-shadow:0 14px 32px -20px rgba(23,106,244,.78)}
.job-picker-backdrop,.job-panel-backdrop{position:absolute;inset:0;z-index:6;background:rgba(0,0,0,.48);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.job-picker,.job-panel{position:absolute;left:0;right:0;bottom:0;z-index:7;max-height:76%;display:flex;flex-direction:column;
  border-radius:24px 24px 0 0;border:1px solid var(--hair);border-bottom:none;
  background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(255,255,255,.9));backdrop-filter:var(--sheet-blur);-webkit-backdrop-filter:var(--sheet-blur);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 -22px 60px -16px rgba(14,35,54,.30);padding:18px 20px calc(22px + var(--safe-b))}
.job-picker h3,.job-panel h3{font-size:20px;font-weight:850;letter-spacing:-.35px;margin-bottom:13px}
.job-picker-list{overflow-y:auto;scrollbar-width:none;margin-top:12px}
.job-picker-list::-webkit-scrollbar{display:none}
.job-picker-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.08);cursor:pointer}
.job-picker-row .body{flex:1;min-width:0}
.job-picker-row .nm{font-size:16px;font-weight:800;color:var(--ink)}
.job-picker-row .sub{font-size:13px;font-weight:600;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.job-panel-actions{display:flex;gap:10px;margin-top:14px}
.job-panel-actions .job-save{height:50px;flex:1}
.job-cancel{height:50px;min-width:106px;border-radius:15px;border:1px solid var(--hair);background:var(--glass2);color:var(--ink);font-family:var(--font);font-size:16px;font-weight:800}
/* ---------- Invoice form extras (built on .job-* system) ---------- */
.inv-amt{display:flex;align-items:center;gap:5px}
.inv-amt-pre,.inv-tax-edit>span{font-size:18px;font-weight:850;color:var(--ink2)}
.inv-amt-input{width:108px;height:46px;text-align:right;border:1px solid var(--hair2);background:rgba(255,255,255,.07);color:var(--ink);border-radius:12px;font-family:var(--font);font-size:18px;font-weight:800;padding:0 12px}
.inv-tax-edit{display:flex;align-items:center;gap:8px}
.inv-rate-input{width:62px;height:46px;text-align:right;border:1px solid var(--hair2);background:rgba(255,255,255,.07);color:var(--ink);border-radius:12px;font-family:var(--font);font-size:16px;font-weight:800;padding:0 8px}
.inv-amt-input:focus,.inv-rate-input:focus{border-color:rgba(23,106,244,.55);background:rgba(255,255,255,.10);outline:none}
.inv-tax-edit .job-row-value{min-width:78px;text-align:right}
.inv-total-row{border-top:1px solid rgba(255,255,255,.12);margin-top:4px}
.inv-total-row .job-row-label,.inv-total-row .job-row-value{font-size:22px}
.inv-pay-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:58px;font-size:18px;font-weight:600;color:var(--ink);border-bottom:1px solid rgba(255,255,255,.08)}
.inv-pay-row:last-child{border-bottom:none}
.inv-save-secondary{display:block;width:100%;margin-top:12px;background:transparent;border:none;color:var(--job-accent);font-family:var(--font);font-size:17px;font-weight:850;cursor:pointer;padding:8px}

