.sb-table-wrap{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.cd:has(> #sb-table-body)>.cd-h{padding:10px 12px;gap:8px}
.sb-help{padding:6px 12px;color:var(--tx2);font-size:12px;line-height:1.3;white-space:normal}
/* Compact, field-led sizing: the table may scroll, but it no longer forces a page-wide 1680px canvas. */
.sb-table{min-width:0;--sb-pcs-width:72px;--sb-ft-width:184px}
.tbl.sb-table th{padding:6px;font-size:11.5px;letter-spacing:.65px}
.tbl.sb-table td{padding:5px 6px}
.sb-table .fi{padding:4px 6px;min-width:0;width:100%}
.sb-table select.fi{padding-right:26px}
.sb-table .sb-pcs-col{width:calc(var(--sb-pcs-width) + 16px);min-width:calc(var(--sb-pcs-width) + 16px)}
.sb-table .sb-ft-col{width:calc(var(--sb-ft-width) + 16px);min-width:calc(var(--sb-ft-width) + 16px)}
/* Explicit control sizes avoid intrinsic text-input sizing and the sidebar's .sb-ft flex styles. */
.sb-table input.fi.sb-pcs,.sb-table input.fi.sb-ft{display:block;margin-left:auto;padding:5px 7px}
.sb-table input.fi.sb-pcs{width:var(--sb-pcs-width);min-width:var(--sb-pcs-width)}
.sb-table input.fi.sb-ft{width:var(--sb-ft-width);min-width:var(--sb-ft-width)}
.sb-table th:nth-child(1),.sb-table tr[data-sb-id] td:nth-child(1),.sb-table .sp-po-line{min-width:218px;width:218px}
.sb-table th:nth-child(2),.sb-table tr[data-sb-id] td:nth-child(2),.sb-table .sp-scope,.sb-inherited-scope{min-width:182px;width:182px}
.sb-table .sb-yard-select{min-width:182px;width:182px}
.sb-table .sb-material-select{min-width:132px;width:132px}
.sb-table .sb-spec-control{min-width:108px;width:108px}
.sb-table .sb-description-control{min-width:184px;width:184px}
.sb-table .sb-size-control{min-width:108px;width:108px}
.sb-table .sb-od-control{min-width:72px;width:72px}
.sb-table .sb-wt-control{min-width:82px;width:82px}
.sb-table .sb-coating-control{min-width:88px;width:88px}
.sb-table .sb-grade-control{min-width:82px;width:82px}
.sb-table .sb-joint-control{min-width:80px;width:80px}
.sb-table .sb-physical-po{min-width:126px;width:126px}
.sb-table .sb-actions{min-width:204px}
.sb-inherited-scope{max-width:218px;white-space:normal;overflow-wrap:anywhere;font-weight:600;line-height:1.18}
.sb-inherited-scope small{display:block;margin-top:2px;color:var(--tx3);font-weight:400;font-size:10px}
.sb-po-readout,.sb-selection-readout{display:block;margin-top:2px;color:var(--tx2);font-size:10.5px;line-height:1.22;white-space:normal;overflow-wrap:anywhere}
.sb-selection-readout{font-weight:600}
.sb-inline-value{display:block;max-width:var(--sb-value-width,126px);margin-top:2px;color:var(--tx2);font-size:10.5px;line-height:1.22;white-space:normal;overflow-wrap:anywhere}
.sb-inline-value[hidden]{display:none}
.sb-table input.fi[readonly]{cursor:text}
.sb-add-form{padding-right:2px}
.sb-add-form .sb-add-link-row{grid-template-columns:minmax(230px,1.25fr) minmax(205px,1fr)}
.sb-add-form .sb-add-po,.sb-add-form .sb-add-scope,.sb-add-form .sb-add-yard,.sb-add-form .sb-add-spec{width:100%;min-width:200px}
.sb-add-form .sb-add-material{width:100%;min-width:200px}
.sb-add-form .mf-4{grid-template-columns:repeat(4,minmax(150px,1fr))}
.sb-add-form select.fi{padding-right:34px}
.sb-table .sp-phase{background:var(--bg3);color:var(--tx3);cursor:not-allowed}
.sb-table .sb-actions{white-space:nowrap}
.sb-table .sb-actions .btn{font-size:11px;padding:3px 5px;min-width:28px;min-height:28px}
.sb-table .sb-actions .btn:last-child{color:var(--red)}
.sb-table button[hidden]{display:none}
@media(max-width:680px){
  .sb-table-wrap{margin-inline:-2px}
  .sb-table .fi{min-height:34px}
  .sb-table .sb-actions .btn{min-width:34px;min-height:34px}
  .tbl.sb-table td,.tbl.sb-table th{padding:7px 6px}
  #modal-body:has(#sb-material) .mf-row{gap:10px}
  .sb-add-form .sb-add-link-row,.sb-add-form .mf-4{grid-template-columns:1fr}
  .sb-add-form .sb-add-po,.sb-add-form .sb-add-scope,.sb-add-form .sb-add-yard,.sb-add-form .sb-add-spec,.sb-add-form .sb-add-material{min-width:0}
}
.pay-rate-card .cd-h{min-height:38px;padding-block:8px}
.pay-rate-card-body{padding:10px 16px 12px}
.pay-rate-scope{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.pay-rate-scope label{display:grid;grid-template-columns:auto 1fr;column-gap:7px;align-items:start;border:1px solid var(--bdr);border-radius:var(--r);padding:8px 10px;cursor:pointer}
.pay-rate-scope label span{grid-column:2;font-size:12px;color:var(--tx3);margin-top:2px}
.pay-rate-scope-body{display:grid;grid-template-columns:minmax(260px,520px) minmax(180px,260px);gap:10px 12px;align-items:start}
.pay-rate-scope-body>.pay-rate-scope{grid-column:1/-1}
.pay-rate-selection{display:contents}
.pay-rate-control{display:grid;gap:4px;min-width:0}
.pay-rate-employee-control{grid-column:1;grid-row:2}
.pay-rate-effective{grid-column:2;grid-row:2}
.pay-rate-history-note{grid-column:1;grid-row:3;margin-top:-6px;min-height:16px}
#pay-rate-project-scope{grid-column:1/-1;grid-row:2}
.pay-rate-scope-body.is-project-scope .pay-rate-effective{grid-column:1;grid-row:3;max-width:260px}
.pay-rate-comp-heading{align-items:flex-start}
.pay-rate-change-note{font-size:11px;color:var(--tx3);margin-top:1px;font-weight:400}
.pay-rate-primary-grid,.pay-rate-secondary-grid{display:grid;gap:10px}
.pay-rate-primary-grid{grid-template-columns:repeat(5,minmax(130px,1fr))}
.pay-rate-secondary-grid{grid-template-columns:repeat(5,minmax(130px,1fr));margin-top:12px;padding-top:12px;border-top:1px solid var(--bdr)}
.pay-rate-field{display:grid;align-content:start;gap:4px;min-width:0}
.pay-rate-label{min-height:15px;font-size:11px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.75px}
.pay-rate-field .fi{width:100%;min-height:38px;border-color:var(--bdr)}
.pay-rate-input-wrap{position:relative;display:block}
.pay-rate-input-wrap .fi{padding-right:8px}
.pay-rate-auto-status{font-size:10.5px;color:var(--grn);line-height:1.2}
.pay-rate-auto-reset{border:0;background:transparent;color:var(--acc);font-size:10.5px;font-weight:700;padding:2px 0;justify-self:start;cursor:pointer}
.pay-rate-auto-reset[hidden]{display:none}
.pay-rate-actions{display:flex;gap:8px;margin-top:12px}
.pay-rate-employees{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:220px;overflow:auto;border:1px solid var(--bdr);border-radius:var(--r);padding:9px}
.pay-rate-employees label{font-size:12px;display:flex;align-items:center;gap:6px;min-width:0}
.pay-rate-classifications{display:grid;grid-template-columns:minmax(0,1fr);max-height: min(480px,65vh);overflow:auto;border:1px solid var(--bdr2);border-radius:var(--r-sm);color:var(--tx2);font-size:var(--fs-sm)}
.pay-rate-classifications>span{padding:var(--sp-md)}
.pay-rate-classification{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start;gap:var(--sp-md);padding:var(--sp-md);border-bottom:1px solid var(--bdr2);cursor:pointer;line-height:1.5}
.pay-rate-classification:last-child{border-bottom:0}
.pay-rate-classification input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--acc)}
.pay-rate-classification-content{display:grid;gap:var(--sp-xs);min-width:0;overflow-wrap:anywhere}
.pay-rate-classification-title{font-size:var(--fs-md);color:var(--tx);font-weight:700}
.pay-rate-classification-project,.pay-rate-classification-details{display:flex;flex-wrap:wrap;gap:var(--sp-xs) var(--sp-md);color:var(--tx2)}
.pay-rate-classification-project .mo{color:var(--acc)}
.pay-rate-classification:hover{background:var(--bg3)}
.pay-rate-classification:has(input:checked){background:var(--acc2);box-shadow:inset 3px 0 var(--acc)}
.pay-rate-classification:has(input:focus-visible){outline:2px solid var(--acc);outline-offset:-3px}
.pay-rate-classification:has(input:disabled){cursor:not-allowed;background:var(--bg3)}
.pay-rate-classification-reason{color:#92400E;font-size:var(--fs-sm)}
.pay-rate-guidance{padding:var(--sp-md);margin-bottom:var(--sp-md);border:1px solid var(--bdr2);border-left:3px solid var(--acc);border-radius:var(--r-sm);background:var(--acc2);color:var(--tx2);font-size:var(--fs-sm);overflow-wrap:anywhere}
.pay-rate-guidance>b{color:var(--acc)}
.pay-rate-guidance-count{margin-top:var(--sp-sm)}
.pay-rate-guidance-warning{border-left-color:#92400E;background:var(--amb2)}
.pay-rate-guidance-warning>b{color:#92400E}
.mru-project-picker{margin-bottom:14px;max-width:760px}
.mru-project-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-height:30px;margin-bottom:6px;color:var(--tx3);font-size:12px}
.mru-project-chips .btn{font-size:11.5px;padding:4px 8px}
.mru-project-combobox{position:relative}
.mru-project-combobox>.fi{width:100%}
#mru-project-list{display:none;position:absolute;z-index:400;inset-inline:0;top:calc(100% + 3px);max-height:min(260px,45vh);overflow-y:auto;background:var(--bg2);border:1px solid var(--bd);border-radius:var(--r-sm);box-shadow:var(--shadow-lg)}
#mru-project-list [data-mru-project]{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:9px 12px;cursor:pointer;border:0;border-bottom:1px solid var(--bd);background:transparent;color:inherit;text-align:left}
#mru-project-list [data-mru-project].is-active,#mru-project-list [aria-selected="true"]{background:var(--bg3)}
#mru-project-list .bg{font-size:10.5px;padding:1px 8px;flex-shrink:0}
.mru-project-empty{padding:10px 12px;font-size:12.5px;color:var(--tx3)}
@media(max-width:1024px){
  .pay-rate-scope,.pay-rate-employees{grid-template-columns:1fr}
  .pay-rate-scope-body{grid-template-columns:1fr}
  .pay-rate-effective{grid-column:1;grid-row:auto}
  .pay-rate-employee-control,.pay-rate-history-note,#pay-rate-project-scope{grid-column:1;grid-row:auto}
  .pay-rate-scope-body.is-project-scope .pay-rate-effective{grid-row:auto}
  .pay-rate-primary-grid,.pay-rate-secondary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pay-rate-card-body{padding:10px 12px 12px}
}
@media(max-width:760px){
  .mru-project-picker{max-width:none}
  #mru-project-list{max-height:min(240px,40vh)}
}
@media(max-width:440px){
  .pay-rate-primary-grid,.pay-rate-secondary-grid{grid-template-columns:1fr}
}
/* ---------------------------------------------------------------------
   APEX DESIGN SYSTEM - single source of truth for layout & spacing.
   See replit.md "Design System" for the full guide. Quick reference:
   - Tokens: spacing (--sp-*), fluid type (--fs-*), container widths
     (--container-*), frame dims (--sb-w/--tb-h), breakpoints (--bp-*).
   - Fluid scaling: type & spacing use clamp() so they scale smoothly
     between phone and desktop without a breakpoint per step.
   - Layout primitives (compose pages from these, don't hardcode):
       .container / .container-narrow / .container-wide  -> centered max-width wrapper
       .grid-auto (set --grid-min)  -> columns reflow with auto-fit/minmax
       .stack  (set --stack-gap)    -> vertical rhythm
       .cluster(set --cluster-gap)  -> horizontal wrap group
       .cq                          -> container-query context for widgets
   - Always reference tokens/primitives instead of raw px values.
   --------------------------------------------------------------------- */
:root{
  --bg:#F4F6F9;--bg2:#FFFFFF;--bg3:#F8FAFC;--sbg:#0B1120;
  --white:#FFFFFF;--card:#FFFFFF;--input:#F1F5F9;
  --bdr:#E2E8F0;--bdr2:#CBD5E1;
  --tx:#0F172A;--tx2:#475569;--tx3:#94A3B8;--tx4:#CBD5E1;
  --acc:#1E40AF;--acc2:rgba(30,64,175,.08);
  --grn:#16A34A;--grn2:rgba(22,163,74,.08);
  --red:#DC2626;--red2:rgba(220,38,38,.08);
  --amb:#D97706;--amb2:rgba(217,119,6,.08);
  /* Legacy aliases some views reference - keep mapped to the canonical tokens */
  --mut:var(--tx2);--brd:var(--bdr);--bd:var(--bdr);--yel:var(--amb);
  /* Chart palette: uniform blue family (graduated shades, alternating dark/
     light so ids adjacent in creation order stay visually distinct). All
     shades are dark enough to double as bold value-label text on light bg. */
  --ch1:#1E3A8A;--ch2:#3B82F6;--ch3:#0C4A6E;--ch4:#0EA5E9;--ch5:#1E40AF;--ch6:#0284C7;--ch7:#172554;--ch8:#4B7BD6;
  --r:12px;--r-sm:8px;--r-lg:16px;--r-xl:20px;
  --f:'Aptos','Segoe UI','Plus Jakarta Sans',sans-serif;--m:'Aptos','Segoe UI','Plus Jakarta Sans',sans-serif;
  --shadow:0 1px 3px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.03);
  --shadow-md:0 4px 12px rgba(0,0,0,.06),0 1px 3px rgba(0,0,0,.04);
  --shadow-lg:0 8px 30px rgba(0,0,0,.1),0 2px 6px rgba(0,0,0,.04);
  /* Fluid spacing scale - desktop value = max, tightens smoothly on small screens */
  --sp-xs:clamp(3px,.8vw,4px);--sp-sm:clamp(6px,1.2vw,8px);--sp-md:clamp(12px,2.2vw,16px);--sp-lg:clamp(16px,3vw,24px);--sp-xl:clamp(20px,4vw,32px);
  /* Fluid type scale - use these for text so it scales between phone and desktop */
  --fs-xs:clamp(11.5px,.67rem + .15vw,12.5px);--fs-sm:clamp(12.5px,.78rem + .15vw,13.5px);--fs-base:clamp(12.5px,.78rem + .2vw,13.5px);
  --fs-md:clamp(13px,.78rem + .35vw,15px);--fs-lg:clamp(15px,.85rem + .6vw,18px);--fs-xl:clamp(18px,1rem + 1vw,24px);
  --fs-2xl:clamp(22px,1.2rem + 1.8vw,32px);--fs-3xl:clamp(26px,1.4rem + 2.6vw,40px);
  /* Container widths + responsive page padding (the .container / .ci wrapper) */
  --container-narrow:880px;--container-max:1400px;--container-wide:1680px;--container-pad:var(--sp-lg);
  /* App-frame dimensions (sidebar width, top bar height) */
  --sb-w:260px;--sb-w-mini:68px;--tb-h:54px;
  /* Breakpoint reference (CSS @media can't read vars; keep here as the canonical set) */
  --bp-sm:480px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;
  --ease:cubic-bezier(.25,.46,.45,.94);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
}
*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}
body{font-family:var(--f);background:var(--bg);color:var(--tx);font-size:var(--fs-base);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.app{display:flex;height:100vh;height:100dvh}

/* SIDEBAR */
.sb{width:var(--sb-w);min-width:var(--sb-w);background:var(--sbg);display:flex;flex-direction:column;border-right:1px solid rgba(255,255,255,.06);transition:margin-left .25s var(--ease),opacity .25s var(--ease),width .2s var(--ease),min-width .2s var(--ease)}
.app.sb-hidden .mn{flex:1}
.sb-collapse-btn{margin-left:auto;background:none;border:none;color:#64748B;cursor:pointer;padding:4px;border-radius:6px;transition:color .15s,background .15s;display:flex;align-items:center;justify-content:center}
.sb-collapse-btn:hover{color:#94A3B8;background:rgba(255,255,255,.06)}
.sb-expand-btn{display:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--r-sm);border:1px solid var(--bdr);background:var(--white);cursor:pointer;flex-shrink:0;transition:background .15s var(--ease)}
.sb-expand-btn:hover{background:var(--bg3)}
.sb-hd{padding:20px 20px 16px;border-bottom:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:12px}
.sb-logo{width:36px;height:36px;background:#fff;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;color:var(--sbg);letter-spacing:0}
.sb-nm{font-weight:700;font-size:14.5px;color:#fff;letter-spacing:.5px}.sb-sub{font-size:11px;color:#64748B;letter-spacing:1.5px;text-transform:uppercase;margin-top:2px}
.sb-nav{flex:1;overflow-y:auto;padding:8px 0}.sb-nav::-webkit-scrollbar{width:2px}.sb-nav::-webkit-scrollbar-thumb{background:#334155;border-radius:2px}
.sb-lbl{font-size:10.5px;font-weight:600;letter-spacing:2.5px;text-transform:uppercase;color:#475569;padding:16px 16px 6px}
.sb-sec{padding:0 10px;margin-bottom:2px}
.sb-i{display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:var(--r-sm);cursor:pointer;transition:all .2s var(--ease);color:#64748B;font-size:12.5px;font-weight:500;position:relative}
.sb-i:hover{background:rgba(255,255,255,.06);color:#94A3B8}
.sb-i.act{background:rgba(59,130,246,.15);color:#60A5FA}
.sb-i.act::before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:#3B82F6}
.sb-ic{width:18px;text-align:center;font-size:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.sb-ic svg,.lc{width:16px;height:16px;stroke-width:1.8}
.stab .lc{width:18px;height:18px}
.btn svg,.bg svg{vertical-align:middle;display:inline-block}
.sb-bg{margin-left:auto;font-size:11px;font-weight:700;padding:2px 8px;border-radius:8px;background:#3B82F6;color:#fff}
.sb-ft{padding:14px 16px;border-top:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:10px}
.sb-av{width:32px;height:32px;border-radius:50%;background:#1E293B;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#94A3B8;border:1.5px solid rgba(255,255,255,.1)}
.sb-un{font-size:13.5px;font-weight:600;color:#E2E8F0}.sb-ur{font-size:12px;color:#475569}

/* MAIN */
.mn{flex:1;display:flex;flex-direction:column;overflow:hidden}
.tb{height:var(--tb-h);min-height:var(--tb-h);background:var(--white);border-bottom:1px solid var(--bdr);display:flex;align-items:center;padding:0 20px;gap:12px}
.tb-cr{font-size:12.5px;color:var(--tx3)}.tb-cr b{color:var(--tx);font-weight:600}
.tb-r{margin-left:auto;display:flex;align-items:center;gap:8px}
.tb-s{background:var(--input);border:1px solid var(--bdr);border-radius:var(--r-sm);padding:7px 14px;width:260px;font-family:var(--f);font-size:12px;color:var(--tx);outline:none;transition:border .2s var(--ease),box-shadow .2s var(--ease)}
.tb-s:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc2)}
.tb-s::placeholder{color:var(--tx4)}
.tb-sr{position:relative}
.tb-dd{position:absolute;top:calc(100% + 6px);right:0;width:380px;max-height:440px;overflow-y:auto;background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shadow-lg);z-index:999;padding:6px 0;display:none;animation:dropIn .15s var(--ease)}
.tb-dd.open{display:block}
.tb-dd-cat{padding:6px 16px 2px;font-size:11px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--tx3)}
.tb-dd-item{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;font-size:12.5px;color:var(--tx);transition:background .15s var(--ease)}
.tb-dd-item:hover,.tb-dd-item.sel{background:var(--acc2)}
.tb-dd-item .tb-dd-ic{width:30px;height:30px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg3)}
.tb-dd-item .tb-dd-ic svg{width:14px;height:14px;color:var(--tx3)}
.tb-dd-item.sel .tb-dd-ic{background:var(--acc2)}
.tb-dd-item.sel .tb-dd-ic svg{color:var(--acc)}
.tb-dd-txt{flex:1;min-width:0}
.tb-dd-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-dd-sub{font-size:12px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-dd-empty{padding:24px;text-align:center;font-size:12px;color:var(--tx3)}
.tb-dd-hint{padding:8px 16px;font-size:12px;color:var(--tx4);border-top:1px solid var(--bdr);margin-top:4px;display:flex;align-items:center;gap:8px}
.tb-dd-hint kbd{background:var(--bg3);border:1px solid var(--bdr);border-radius:4px;padding:2px 6px;font-size:11px;font-family:var(--f)}
.bell-wrap{position:relative}.bell-wrap .btn{overflow:visible}.bell-badge{position:absolute;top:-6px;right:-6px;background:#EF4444;color:#fff;font-size:11px;font-weight:800;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px;border:2px solid var(--white);pointer-events:none;line-height:1}
.alert-dd{position:absolute;top:calc(100% + 8px);right:0;width:380px;max-height:420px;background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shadow-lg);z-index:999;display:none;overflow:hidden;animation:dropIn .15s var(--ease)}
.alert-dd.open{display:block}
.alert-dd-hdr{padding:14px 18px;border-bottom:1px solid var(--bdr);display:flex;align-items:center;justify-content:space-between}
.alert-dd-list{max-height:340px;overflow-y:auto;padding:0}
.alert-dd-item{display:flex;align-items:flex-start;gap:10px;padding:12px 18px;border-bottom:1px solid var(--bdr);font-size:12px;transition:background .15s var(--ease)}
.alert-dd-item:hover{background:var(--bg3)}
.alert-dd-item:last-child{border-bottom:none}
/* Clickable (deep-linking) alert items: obvious action affordance */
.alert-dd-act{cursor:pointer}
.alert-dd-act:hover{background:var(--acc2)}
.alert-dd-act:hover .alert-dd-chev{color:var(--acc);transform:translateX(2px)}
.alert-dd-chev{width:14px;height:14px;color:var(--tx3);flex-shrink:0;align-self:center;transition:color .15s var(--ease),transform .15s var(--ease)}
.alert-dd-review{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:var(--acc);margin-top:3px}
.alert-dd-empty{padding:28px;text-align:center;font-size:12px;color:var(--tx3)}
@media(max-width:480px){.alert-dd{right:-60px;width:calc(100vw - 24px);max-width:380px}}
.mbp-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.mbp-name{width:200px;flex-shrink:0;min-width:0}
.mbp-nm{font-size:12px;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.mbp-bar{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
/* Only dashboard previews opt in; the full-list view retains its row layout. */
.dash-chart-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-md);container:dash-charts / inline-size}
.dash-chart-card{min-width:0;container:dash-chart / inline-size}
.dash-chart-card>.cd-h{align-items:flex-start;gap:var(--sp-sm);flex-wrap:wrap}
.dash-chart-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-sm);flex-wrap:wrap;flex:1 1 100%}
.dash-chart-meta .btn{flex-shrink:0;white-space:nowrap}
.dash-chart-card .mbp-row{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
.dash-chart-card .mbp-name{width:100%;min-width:0;display:flex;align-items:baseline;gap:var(--sp-sm)}
.dash-chart-card .mbp-nm{flex:1;min-width:0}
.dash-chart-card .mbp-name>.mo{flex-shrink:0;overflow-wrap:anywhere;max-width:40%}
.dash-chart-card .mbp-bar{width:100%;gap:var(--sp-sm)}
.dash-chart-card .mbp-bar>div:first-child{min-width:40px}
.dash-chart-card .mbp-bar>div:not(:first-child){flex-shrink:0}
@container dash-charts (max-width:759px){
  .dash-chart-card{grid-column:1/-1}
}
@container dash-chart (max-width:540px){
  .dash-margin-card .mbp-bar{display:grid;grid-template-columns:minmax(40px,1fr) auto}
  .dash-margin-card .mbp-bar>div:last-child{grid-column:1/-1;text-align:right;white-space:normal!important}
  .dash-margin-card .mbp-bar>div:last-child .mo{overflow-wrap:anywhere}
}
@media(max-width:640px){.mbp-row{flex-direction:column;align-items:stretch;gap:6px}.mbp-name{width:100%;display:flex;align-items:baseline;gap:8px}.mbp-name .mbp-nm{flex:1;min-width:0}.mbp-name .mo{flex-shrink:0;white-space:nowrap}.mbp-bar{gap:8px}}
.cnt{flex:1;overflow-y:auto;padding:0;scroll-behavior:smooth}.cnt::-webkit-scrollbar{width:5px}.cnt::-webkit-scrollbar-thumb{background:var(--bdr2);border-radius:3px}
.ci{padding:var(--container-pad);width:100%}

/* BUTTONS */
.btn{padding:8px 16px;border-radius:var(--r-sm);font-family:var(--f);font-size:12px;font-weight:600;border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:all .2s var(--ease);position:relative;overflow:hidden}
.btn:active{transform:scale(.97)}
.btn-a{background:var(--acc);color:var(--white)}.btn-a:hover{background:#2563EB;box-shadow:0 2px 8px rgba(30,64,175,.25)}
.btn-g{background:var(--grn);color:#fff}.btn-g:hover{background:#15803D;box-shadow:0 2px 8px rgba(22,163,74,.25)}
.btn-o{background:transparent;color:var(--tx2);border:1px solid var(--bdr2)}.btn-o:hover{border-color:var(--tx3);color:var(--tx);background:var(--bg3)}
/* Aliases used by Estimating: btn-p = primary (btn-a), btn-s = secondary (btn-o), btn-xs = compact */
.btn-p{background:var(--acc);color:var(--white)}.btn-p:hover{background:#2563EB;box-shadow:0 2px 8px rgba(30,64,175,.25)}
.btn-s{background:transparent;color:var(--tx2);border:1px solid var(--bdr2)}.btn-s:hover{border-color:var(--tx3);color:var(--tx);background:var(--bg3)}
.btn-xs{padding:4px 10px;font-size:11px}

/* CARDS */
.cd{background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);transition:box-shadow .2s var(--ease),border-color .2s var(--ease)}
/* Container queries (opt-in): add class "cq" to a card so it sizes its padding/title
   to the card's own width, not the viewport. Safe by default - only opted-in cards are containers. */
.cd.cq{container-type:inline-size;container-name:card}
@container card (max-width:360px){.cd-h{padding:10px 12px}.cd-b{padding:12px}.cd-t{font-size:var(--fs-sm)}}
.cd-h{padding:14px 18px;border-bottom:1px solid var(--bdr);display:flex;align-items:center;justify-content:space-between}
/* Section headers pop: blue title + small accent bar. The bar uses
   currentColor so cards that intentionally recolor their title (e.g. the
   green Earned Revenue card, amber warning cards) keep a matching accent. */
.cd-t{font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--acc);letter-spacing:.2px}
.cd-t::before{content:'';width:3px;height:14px;border-radius:2px;background:currentColor;flex-shrink:0}
.cd-b{padding:16px 18px}

/* System Status keeps actionable rows visible and folds completed one-time work. */
.system-status-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--bdr)}
.system-status-label,.system-status-value{font-size:var(--fs-sm)}
.system-status-label{color:var(--tx2)}
.system-status-value{min-width:0;color:var(--tx);text-align:right;overflow-wrap:anywhere}
.system-status-row-last{border-bottom:0}
.system-status-history{margin-top:8px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3)}
.system-status-history>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;cursor:pointer;color:var(--tx2);font-size:var(--fs-sm);font-weight:700;list-style-position:inside}
.system-status-history>summary:hover{color:var(--tx);background:var(--acc2)}
.system-status-history-count{margin-left:auto;padding:2px 8px;border-radius:999px;background:var(--white);border:1px solid var(--bdr);color:var(--tx3);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}
.system-status-history-body{padding:0 12px 4px;border-top:1px solid var(--bdr)}
.system-status-history-body .system-status-row:last-child{border-bottom:0}
.djr-import .cd-h{align-items:flex-start;gap:var(--sp-md);flex-wrap:wrap}
.djr-import-subtitle{margin-top:2px;font-size:var(--fs-xs);color:var(--tx3)}
.djr-import-head-actions,.djr-import-tools,.djr-import-bulk{display:flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}
.djr-import-notice,.djr-import-warning{padding:var(--sp-md);border:1px solid rgba(30,64,175,.2);border-radius:var(--r-sm);background:var(--acc2);color:var(--tx2);font-size:var(--fs-sm)}
.djr-import-notice b,.djr-import-warning b{color:var(--acc)}
.djr-import-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:var(--sp-sm);margin:var(--sp-md) 0}
.djr-import-summary>div{padding:9px 11px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3);min-width:0}
.djr-import-summary span,.djr-import-summary b{display:block;overflow-wrap:anywhere}
.djr-import-summary span{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--tx3)}
.djr-import-summary b{margin-top:2px;font-size:var(--fs-sm)}
.djr-import-projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--sp-sm);margin:var(--sp-md) 0}
.djr-import-project{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--white);color:var(--tx);font-family:var(--f);text-align:left;cursor:pointer}
.djr-import-project:hover,.djr-import-project.is-active{border-color:var(--acc);background:var(--acc2)}
.djr-import-project span,.djr-import-project small{display:block;min-width:0}
.djr-import-project small{margin-top:2px;color:var(--tx3);font-size:10.5px}
.djr-import-project-total{flex-shrink:0;color:var(--tx2);font-size:11px}
.djr-import-batches{margin:var(--sp-md) 0;border:1px solid var(--bdr);border-radius:var(--r-sm);font-size:var(--fs-xs)}
.djr-import-batches summary{padding:9px 12px;cursor:pointer;font-weight:700;color:var(--tx2)}
.djr-import-batches>div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid var(--bdr)}
.djr-import-job-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-md);padding-top:var(--sp-md);border-top:1px solid var(--bdr)}
.djr-import-job-head>div:first-child span{display:block;color:var(--tx3);font-size:var(--fs-xs)}
.djr-import-job-head .djr-import-summary{flex:1;margin:0}
.djr-import-tabs{display:flex;gap:4px;margin:var(--sp-md) 0;overflow-x:auto;border-bottom:1px solid var(--bdr);-webkit-overflow-scrolling:touch}
.djr-import-tabs button{flex:0 0 auto;padding:8px 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--tx2);font-family:var(--f);font-size:11.5px;font-weight:700;cursor:pointer}
.djr-import-tabs button.is-active{border-color:var(--acc);color:var(--acc)}
.djr-import-tabs button span{color:var(--tx3)}
.djr-import-tools .fi{min-width:150px;width:auto}
.djr-import-tools input{flex:1;min-width:210px}
.djr-import-bulk{position:sticky;top:-1px;z-index:3;margin:var(--sp-sm) 0;padding:8px 10px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--white);box-shadow:var(--shadow)}
.djr-import-bulk label{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:700}
.djr-import-bulk>span{margin-right:auto;color:var(--tx3);font-size:var(--fs-xs)}
.djr-import-proposals{display:grid;gap:var(--sp-sm)}
.djr-import-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;color:var(--tx3);font-size:12px}
.djr-import-pagination>div{display:flex;gap:6px}
.djr-import-proposal{padding:var(--sp-md);border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--white)}
.djr-import-proposal.is-blocked{border-left:3px solid var(--red)}
.djr-import-proposal-top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:10px}
.djr-import-proposal-top small{display:block;color:var(--tx3);font-size:10.5px}
.djr-import-compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-sm);margin-top:var(--sp-sm)}
.djr-import-compare>div{padding:9px 10px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3);min-width:0}
.djr-import-compare span,.djr-import-map>span{display:block;margin-bottom:3px;color:var(--tx3);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
.djr-import-compare p{font-size:var(--fs-xs);overflow-wrap:anywhere}
.djr-import-map{display:block;margin-top:var(--sp-sm)}
.djr-import-map .fi{width:100%}
.djr-import-mapped{margin-top:var(--sp-sm);padding:7px 9px;border-radius:var(--r-sm);background:var(--grn2);color:var(--tx2);font-size:var(--fs-xs)}
.djr-import-mapped b{color:var(--grn)}
.djr-import-effect,.djr-import-conflict,.djr-import-reason{display:flex;gap:6px;margin-top:var(--sp-sm);padding:7px 9px;border-radius:var(--r-sm);font-size:var(--fs-xs)}
.djr-import-effect{background:var(--grn2);color:var(--tx2)}
.djr-import-effect b{color:var(--grn);white-space:nowrap}
.djr-import-conflict{background:var(--red2);color:var(--red)}
.djr-import-reason{background:var(--bg3);color:var(--tx2)}
.djr-import-empty,.djr-import-error{padding:var(--sp-lg);text-align:center;color:var(--tx3);font-size:var(--fs-sm)}
.djr-import-error{color:var(--red);background:var(--red2);border-radius:var(--r-sm)}
.djr-import-confirm p{margin:var(--sp-md) 0}
.djr-import-confirm ul{max-height:300px;overflow:auto;margin-left:20px;color:var(--tx2);font-size:var(--fs-sm)}
.djr-import-confirm li+li{margin-top:5px}
@media(max-width:480px){
  .system-status-row{align-items:flex-start;flex-direction:column;gap:5px}
  .system-status-value{text-align:left;width:100%}
  .system-status-history>summary{align-items:flex-start}
  .djr-import-head-actions,.djr-import-head-actions .btn,.djr-import-tools,.djr-import-tools .fi,.djr-import-tools .btn{width:100%}
  .djr-import-projects{grid-template-columns:1fr}
  .djr-import-job-head{display:block}.djr-import-job-head .djr-import-summary{margin-top:var(--sp-sm)}
  .djr-import-compare{grid-template-columns:1fr}
  .djr-import-bulk{align-items:stretch}.djr-import-bulk label,.djr-import-bulk>span{width:100%}
  .djr-import-bulk .btn{flex:1}
  .djr-import-proposal-top{grid-template-columns:auto minmax(0,1fr)}.djr-import-proposal-top>div:last-child{grid-column:2}
  .djr-import-effect,.djr-import-conflict,.djr-import-reason{display:block}.djr-import-effect b{display:block}
}

/* BADGES */
.bg{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;letter-spacing:.2px}
.bg-g{background:var(--grn2);color:var(--grn)}.bg-r{background:var(--red2);color:var(--red)}
.bg-b{background:var(--acc2);color:var(--acc)}.bg-a{background:var(--amb2);color:var(--amb)}.bg-o{background:#fff3e0;color:#e65100}

/* TABLE */
.tbl{width:100%;border-collapse:collapse;table-layout:auto}
.tbl th{text-align:left;padding:10px 12px;font-size:11.5px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--tx3);background:var(--bg3);border-bottom:1px solid var(--bdr);white-space:nowrap}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--bdr);font-size:12px;white-space:nowrap}
.tbl tr{transition:background .15s var(--ease)}
.tbl tr:hover td{background:rgba(30,64,175,.03)}
/* Sortable column headers (Equipment fleet & rate sheet) */
/* Compact variant for dense read-only previews (payroll CSV preview) */
.tbl-compact th{padding:6px 8px;font-size:10.5px;letter-spacing:.8px}
.tbl-compact td{padding:4px 8px;font-size:11.5px}
.tbl-compact .bg{padding:1px 7px;font-size:11px}
.tbl th.th-sort{cursor:pointer;user-select:none;-webkit-user-select:none}
.tbl th.th-sort:hover{color:var(--tx)}
/* Header/cell alignment helpers - .tbl th's text-align:left otherwise outweighs the bare .r/.c utility */
.tbl th.r,.tbl td.r{text-align:right}
.tbl th.c,.tbl td.c{text-align:center}

/* DOS audit history is evidence, not a dense activity grid. Keep saved
   values intact at every width and turn rows into labelled cards on phones so
   long notes/reasons never disappear behind a clipped cell. */
.dos-audit-table{min-width:1120px}
.dos-audit-table th,.dos-audit-table td{vertical-align:top}
.dos-audit-table td{white-space:normal}
.dos-audit-table .dos-audit-summary-cell{min-width:170px;max-width:280px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.dos-audit-table .dos-audit-value-cell,.dos-audit-table .dos-audit-reason-cell{min-width:180px;max-width:420px}
.dos-audit-value-text{display:block;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.dos-audit-cell-label{display:none}
.dos-audit-cell-content{min-width:0}
.dos-audit-snapshot{min-width:160px;white-space:normal}
.dos-audit-snapshot-title{font-size:11px;font-weight:800;color:var(--tx3);text-transform:uppercase;letter-spacing:.7px;margin-bottom:4px}
.dos-audit-snapshot-row{display:grid;grid-template-columns:minmax(64px,35%) minmax(0,1fr);gap:8px;padding:2px 0}
.dos-audit-snapshot-key{font-size:11px;font-weight:700;color:var(--tx3);overflow-wrap:anywhere}
.dos-audit-snapshot-value{font-size:12px;color:inherit;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.dos-audit-note{font-size:12px;line-height:1.45;color:var(--tx3);margin-top:12px}
/* Audit history is evidence-heavy: give the desktop table enough room for
   Before and After, rather than opening the shared 780px form modal. */
#modal-box:has(.dos-audit-table){
  width:min(1360px,calc(100vw - 48px))!important;
  max-width:1360px!important;
}
@media(max-width:1100px){
  #modal-box:has(.dos-audit-table){width:100%!important;max-width:100%!important}
  .dos-audit-scroll{overflow-x:visible!important;max-height:none!important}
  .tbl.dos-audit-table{min-width:0!important;width:100%;max-width:100%;display:block}
  .dos-audit-table thead{display:none}
  .dos-audit-table tbody,.dos-audit-table tr{display:block}
  .dos-audit-table tr{border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:12px;overflow:hidden}
  .dos-audit-table td{display:grid;grid-template-columns:minmax(92px,34%) minmax(0,1fr);gap:10px;min-width:0!important;max-width:none!important;padding:8px 10px!important;white-space:normal!important}
  /* Real label nodes keep the card's field names available without relying
     on generated table-cell content. */
  .dos-audit-table td::before{content:none!important}
  .dos-audit-cell-label{display:block;font-size:10px;font-weight:800;letter-spacing:.65px;text-transform:uppercase;color:var(--tx3);overflow-wrap:anywhere}
  .dos-audit-cell-content{display:block;min-width:0;overflow-wrap:anywhere}
  .dos-audit-table .dos-audit-value-cell,.dos-audit-table .dos-audit-reason-cell{overflow-wrap:anywhere}
  .dos-audit-snapshot{min-width:0}
}

/* Project Reporting Cost Ledger density is intentionally view-scoped. */
.prt-ledger{min-width:0}
.prt-ledger-page-head{margin-bottom:8px!important}
.prt-tabs:has(.prt-tab[data-prt="ledger"].act){margin-bottom:10px}
.prt-tabs:has(.prt-tab[data-prt="ledger"].act) .utab{padding-top:8px;padding-bottom:8px}
.prt-ledger-summary .kpi-r{gap:8px;margin-bottom:8px}
.prt-ledger-summary .kpi{padding:9px 12px}
.prt-ledger-summary .kpi-l{margin-bottom:2px}
.prt-ledger-summary .kpi-v{font-size:17px}
.prt-ledger-summary .kpi-s{margin-top:2px}
.prt-ledger-banner{border:1px solid;border-radius:var(--r);padding:6px 10px;margin-bottom:8px;font-size:12px;color:var(--tx2)}
.prt-ledger-toolbar{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.prt-ledger-toolbar .btn{padding:6px 10px}
.prt-ledger-group{margin-bottom:8px}
.prt-ledger-group-head{display:flex;align-items:center;gap:8px;padding:7px 10px;flex-wrap:wrap;cursor:pointer;user-select:none;-webkit-user-select:none}
.prt-ledger-group-head.is-open{border-bottom:1px solid var(--bdr)}
.prt-ledger-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.prt-ledger-pagination{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-sm);padding:var(--sp-sm) var(--sp-md);font-size:var(--fs-xs);color:var(--tx2);border-bottom:1px solid var(--bdr);overflow-anchor:none}
.prt-ledger-page-actions{display:flex;flex-wrap:wrap;gap:var(--sp-sm)}
.prt-ledger-pagination .btn{min-height:40px;padding:var(--sp-sm) var(--sp-md)}
.prt-ledger-pagination .btn:disabled{opacity:.45;cursor:not-allowed}
.prt-ledger-pagination .btn:focus-visible,.prt-ledger-group-head:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
.prt-ledger-table{margin:0;min-width:max-content}
.prt-ledger-table th{padding:6px 8px;font-size:10px;letter-spacing:.7px}
.prt-ledger-table td{padding:5px 8px;font-size:11.5px}
.prt-ledger-table .bg{padding:2px 7px;font-size:10px!important}
.prt-ledger-description{width:180px;max-width:180px;white-space:normal!important;line-height:1.25}
.prt-ledger-description details{width:180px}
.prt-ledger-description summary{display:flex;align-items:flex-start;gap:4px;cursor:pointer;list-style:none;color:var(--tx)}
.prt-ledger-description summary::-webkit-details-marker{display:none}
.prt-ledger-description summary span{min-width:0;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.prt-ledger-description summary::after{content:'More';flex-shrink:0;color:var(--acc);font-size:10px;font-weight:700}
.prt-ledger-description details[open] summary::after{content:'Less'}
.prt-ledger-description-full{margin-top:4px;color:var(--tx2);overflow-wrap:anywhere}
.prt-ledger-actions{white-space:nowrap}
.prt-ledger-action{font-size:11px;padding:3px 6px;min-width:28px;min-height:28px}
.prt-ledger-action-delete{color:var(--red);border-color:var(--red)}
@media(max-width:900px){
  .prt-ledger-page-head{margin-bottom:6px!important}
  .prt-tabs:has(.prt-tab[data-prt="ledger"].act) .utab{padding-top:10px;padding-bottom:10px}
  .prt-ledger-toolbar{align-items:stretch}
  .prt-ledger-toolbar select,.prt-ledger-toolbar input,.prt-ledger-toolbar .btn{min-height:40px}
  .prt-ledger-group-head{min-height:44px;padding:8px 10px}
  .prt-ledger-table th.th-sort{padding-top:14px;padding-bottom:14px}
  .prt-ledger-table .btn.prt-ledger-action{min-width:40px;min-height:40px;padding:7px 13px}
}
/* Standard button row under a table/grid inside a card body */
.form-actions{display:flex;justify-content:flex-end;align-items:center;gap:var(--sp-sm);margin-top:var(--sp-md);padding-top:var(--sp-md);border-top:1px solid var(--bdr)}
.zh-warning{font-size:var(--fs-sm);color:var(--tx2);line-height:1.5}
.zh-warning>b{color:var(--tx)}
.zh-warning p{margin-top:var(--sp-sm)}
.zh-warning ul{margin:var(--sp-md) 0;padding:var(--sp-sm) var(--sp-md) var(--sp-sm) 32px;max-height:210px;overflow:auto;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3);color:var(--tx)}
.zh-warning-note{font-size:var(--fs-xs);color:var(--tx3)}
.zh-actions{margin-top:var(--sp-md)}
/* Compact icon delete button that lines up with .fi inputs in a grid row */
.row-del{width:35px;height:35px;min-width:35px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--red);font-size:12px}

/* Compact, responsive PO entry modal. Existing lines stay visible as a
   duplicate-prevention reference while new line cards reflow without overflow. */
.po-quick-rules{padding:10px 12px;margin-bottom:var(--sp-md);border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--acc2);font-size:var(--fs-xs);color:var(--tx2)}
.po-quick-rules>b{color:var(--acc)}
.po-quick-rules ul{display:flex;flex-wrap:wrap;gap:3px 22px;margin:5px 0 0 17px}
.po-quick-rules li{flex:1 1 210px}
.po-existing-wrap,.po-new-wrap{border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3);padding:var(--sp-md);margin-bottom:var(--sp-md);min-width:0}
.po-section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-sm);margin-bottom:var(--sp-sm);font-size:var(--fs-xs)}
.po-section-head span{color:var(--tx3)}
.po-existing-lines{display:flex;flex-direction:column;gap:6px;max-height:190px;overflow-y:auto}
.po-existing-line{display:grid;grid-template-columns:minmax(135px,.8fr) minmax(130px,1fr) minmax(280px,1.7fr);align-items:center;gap:var(--sp-sm);padding:8px 10px;border:1px solid var(--bdr);border-radius:7px;background:var(--white);font-size:11.5px;transition:opacity .15s,border-color .15s,background .15s}
.po-existing-main,.po-existing-desc{min-width:0}
.po-existing-main b,.po-existing-main span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.po-existing-main span,.po-existing-desc{color:var(--tx3)}
.po-existing-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.po-existing-meta{display:flex;justify-content:flex-end;gap:12px;white-space:nowrap;color:var(--tx3)}
.po-existing-meta b{color:var(--tx2);font-variant-numeric:tabular-nums}
.po-existing-match{border-color:var(--acc);background:var(--acc2)}
.po-existing-muted{opacity:.62}
.po-existing-empty{padding:12px;text-align:center;color:var(--tx3);font-size:var(--fs-xs)}
.po-scope-row{padding:var(--sp-md);margin-bottom:var(--sp-sm);border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--white)}
.po-entry-grid{display:grid;grid-template-columns:minmax(145px,1.2fr) minmax(170px,1.6fr) minmax(110px,.9fr) minmax(90px,.7fr);grid-template-areas:"scope desc desc remove" "billing uom price qty" "amount amount amount amount";gap:var(--sp-sm);align-items:end;min-width:0}
.po-field-scope{grid-area:scope}.po-field-desc{grid-area:desc}.po-field-billing{grid-area:billing}.po-field-uom{grid-area:uom}.po-field-price{grid-area:price}.po-field-qty{grid-area:qty;min-width:90px}.po-field-amount{grid-area:amount;display:grid;grid-template-columns:minmax(150px,220px) 1fr;align-items:end;column-gap:var(--sp-sm)}.po-field-amount>.mf-label{grid-column:1/-1}.po-field-remove{grid-area:remove;justify-self:end}
.po-r-amount-mode{display:flex;align-items:center;gap:8px;min-height:35px}
.po-amount-badge{display:inline-flex;padding:2px 7px;border-radius:999px;background:var(--grn2);color:var(--grn);font-size:10.5px;font-weight:700}
.po-amount-badge.manual{background:var(--amb2);color:var(--amb)}
.po-amount-reset{padding:0;border:0;background:none;color:var(--acc);font-family:var(--f);font-size:11px;font-weight:700;cursor:pointer}
.po-r-mq-wrap{margin-top:var(--sp-sm)}
.po-add-scope{font-size:12px}
@media(max-width:700px){
  .po-entry-grid{grid-template-columns:1fr 1fr;grid-template-areas:"scope remove" "desc desc" "billing uom" "price qty" "amount amount"}
  .po-existing-line{grid-template-columns:1fr}.po-existing-meta{justify-content:flex-start;flex-wrap:wrap;gap:4px 12px}.po-existing-desc{white-space:normal}
}
@media(max-width:480px){
  .po-entry-grid{grid-template-columns:1fr;grid-template-areas:"remove" "scope" "desc" "billing" "uom" "price" "qty" "amount"}
  .po-field-amount{grid-template-columns:1fr}.po-r-amount-mode{min-height:unset}
  .po-quick-rules ul{display:block}.po-quick-rules li+li{margin-top:3px}
}

.sb-toggle{display:none;background:none;border:none;color:var(--tx);cursor:pointer;padding:4px}

/* VIEW HEADER - title/subtitle block + action buttons (Job Setup etc.) */
.view-hd{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);margin-bottom:20px}
.view-hd-txt{min-width:0}
.view-hd-actions{display:flex;gap:8px;flex-shrink:0}
/* Pills + "Showing X of Y" line above the project list */
.pp-filterbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.pp-filter{position:relative;display:inline-flex;align-items:center;gap:6px}
.pp-filter-label{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;color:var(--acc)}
.pp-filter-menu{position:absolute;z-index:80;top:calc(100% + 7px);right:0;width:min(300px,calc(100vw - 32px));padding:12px;background:var(--white);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shadow-lg);display:grid;gap:10px}
.pp-filter-menu label{display:grid;gap:4px;font-size:11px;font-weight:700;color:var(--tx2)}
.pp-filter-menu .fi{width:100%}
.pp-filter-menu-clear{justify-self:start;padding:6px 10px}
.filter-desktop-fields{display:grid;gap:10px}
.filter-mobile-options{display:none}
.filter-mobile-title{font-size:11px;font-weight:800;letter-spacing:.45px;text-transform:uppercase;color:var(--tx3)}
.filter-option-btn{width:100%;min-height:42px;padding:9px 11px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--white);color:var(--tx);font:600 13px/1.25 var(--f);text-align:left;cursor:pointer}
.filter-option-btn:hover,.filter-option-btn:focus-visible{border-color:var(--acc);background:var(--acc2);color:var(--acc);outline:none}
.filter-option-btn.selected{border-color:var(--acc);background:var(--acc2);color:var(--acc);box-shadow:inset 3px 0 0 var(--acc)}
@media(max-width:640px){
  .pp-filterbar{align-items:flex-start}
  .pp-filter{flex-wrap:wrap}
  .pp-filter-label{max-width:calc(100vw - 230px)}
  .filter-desktop-fields{display:none}
  .filter-mobile-options{display:grid;gap:6px}
  .pp-filter-menu{position:fixed;z-index:180;top:auto;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:12px;width:auto;max-height:70vh;max-height:min(70dvh,520px);overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box;padding:14px;border-radius:14px}
}
.pp-showing{font-size:12px;color:var(--tx3)}

/* RESPONSIVE GRID UTILITIES */
.rg{display:grid;gap:var(--sp-md)}
.rg-2{grid-template-columns:repeat(2,1fr)}
.rg-3{grid-template-columns:repeat(3,1fr)}
.rg-4{grid-template-columns:repeat(4,1fr)}
.rg-5{grid-template-columns:repeat(5,1fr)}
.rg-gap8{gap:var(--sp-sm)}.rg-gap10{gap:10px}.rg-gap16{gap:var(--sp-md)}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* Add Production loads grid: capped-height scroll pane so the modal never
   grows past the screen - the newest row and the footer buttons stay visible.
   Header + totals rows stay pinned while the pane scrolls. */
.bulk-prod-pane{max-height:clamp(160px,calc(100dvh - 440px),520px);overflow:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--bdr);border-radius:var(--r-sm);position:relative;z-index:0}
.bulk-prod-pane thead th{position:sticky;top:0;z-index:2}
.bulk-prod-pane tfoot td{position:sticky;bottom:0;background:var(--bg3);z-index:2}
.bulk-prod-error td{background:var(--red2)}
.bulk-prod-error-text td{white-space:normal;color:var(--red);background:var(--red2);font-size:11px;line-height:1.35;padding-top:4px;padding-bottom:6px}
.bulk-prod-shared-warning{margin:-2px 0 10px;padding:7px 9px;border:1px solid rgba(220,38,38,.35);border-radius:var(--r-sm);background:var(--red2);color:var(--red);font-size:11px;line-height:1.35}
.bulk-prod-render-error{padding:12px;border:1px solid rgba(220,38,38,.35);border-radius:var(--r-sm);background:var(--red2);color:var(--red);font-size:12px;line-height:1.45}
.bulk-prod-render-error .btn{margin-top:8px}
.bulk-prod-loading{margin-bottom:8px;padding:7px 9px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3);color:var(--tx2);font-size:11px}
/* The optional Alt ID column needs a little more room than the original
   six-column load grid, without changing the width of unrelated modals. */
#modal-box:has(#bulk-prod-rows){width:min(980px,calc(100vw - 32px));max-width:980px!important}
/* Alt IDs are supplemental literals and can have no natural word breaks. */
#dt-prod .tbl td:nth-child(4),#dt-prod .tbl td:nth-child(5),#dt-prod .ec-bd>div:nth-child(3) .ef-v{overflow-wrap:anywhere;word-break:break-word;white-space:normal}
/* Report Alt IDs are literal identifiers. Keep their column bounded and wrap
   unbroken 200-character IDs instead of making the report table infinitely
   wide; applies only to report-rendered cells/headers. */
.report-alt-id,.report-alt-id-col{min-width:12rem}
.tbl td.report-alt-id{max-width:22rem;white-space:normal;overflow-wrap:anywhere;word-break:break-word;vertical-align:top}
/* Date-range Cost & Revenue project identity sits below the report heading.
   Saved PO/customer/location values can be long or have no natural breaks,
   especially on narrow screens, so keep the metadata inside the card. */
.rpt-project-details{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--sp-xs) var(--sp-lg);padding:var(--sp-sm) var(--sp-md);border-bottom:1px solid var(--bdr);font-size:var(--fs-sm);line-height:1.4;color:var(--tx2)}
.rpt-project-details>div{min-width:0;overflow-wrap:anywhere;word-break:break-word}
.rpt-project-details-label{font-weight:700;color:var(--tx3)}
/* The pane's own stacking context (z-index:0) keeps its sticky header/totals
   beneath the modal's sticky chrome; raise the chrome explicitly too. */
#modal-hd{z-index:5!important}
.modal-footer{z-index:5}
.equip-quick-create{margin-top:var(--sp-sm);padding-top:var(--sp-sm);border-top:1px solid var(--bdr);min-width:0}
.equip-quick-create-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-md);margin-bottom:var(--sp-md)}
.equip-quick-create-title{font-size:var(--fs-xs);font-weight:800;letter-spacing:.65px;text-transform:uppercase;color:var(--tx2)}
.equip-quick-create-note{font-size:var(--fs-xs);color:var(--tx3);text-align:right}
.equip-quick-create-grid{display:grid;gap:var(--sp-sm);margin-bottom:var(--sp-sm);min-width:0}
.equip-quick-create-grid>div{min-width:0}
.equip-quick-create-primary{grid-template-columns:minmax(130px,.72fr) minmax(220px,1.6fr)}
.equip-quick-create-details{grid-template-columns:repeat(2,minmax(0,1fr))}
.equip-quick-create-details.has-rate{grid-template-columns:repeat(3,minmax(0,1fr))}
.equip-quick-create-error{margin-top:var(--sp-xs);color:var(--red);font-size:var(--fs-xs)}
.equip-quick-create-actions{display:flex;justify-content:flex-end;gap:var(--sp-sm);margin-top:var(--sp-md)}
/* DOS gives the shared fleet combobox its own full row. Its quick-create
   form therefore has the same usable width as the rest of the entry form,
   rather than being constrained to a single field column. */
.dos-equipment-picker{margin-bottom:var(--sp-md);min-width:0}
.dos-equipment-picker>.mf-label{margin-bottom:5px}
.dos-equipment-picker .equip-quick-create{margin-top:var(--sp-md);padding:var(--sp-md);border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3)}
.dos-equipment-picker .equip-quick-create::before{content:'';display:block;width:26px;height:2px;margin-bottom:var(--sp-sm);border-radius:2px;background:var(--acc)}
.dos-equipment-details-row{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:var(--sp-md)}
@media(max-width:768px){
  .bulk-prod-pane{max-height:clamp(140px,calc(100dvh - 520px),400px)}
  #modal-box .dos-equipment-details-row,.dos-inline-equipment-form .dos-equipment-details-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:480px){
  #modal-box .dos-equipment-details-row,.dos-inline-equipment-form .dos-equipment-details-row{grid-template-columns:1fr!important}
  .equip-quick-create-heading{align-items:flex-start;flex-direction:column;gap:2px}
  .equip-quick-create-note{text-align:left}
  .equip-quick-create-primary,.equip-quick-create-details,.equip-quick-create-details.has-rate{grid-template-columns:1fr}
  .equip-quick-create-actions{flex-direction:column-reverse}
  .equip-quick-create-actions .btn{width:100%}
}

/* LAYOUT PRIMITIVES - compose pages from these instead of hardcoding widths/spacing */
.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--container-pad)}
.container-narrow{max-width:var(--container-narrow)}
.container-wide{max-width:var(--container-wide)}
/* View width caps - centered max-width wrappers (no extra padding; .ci already pads). Use on text-heavy views that read poorly when stretched across ultrawide monitors. */
.vcap{width:100%;max-width:var(--container-max);margin-inline:auto}
.vcap-wide{width:100%;max-width:var(--container-wide);margin-inline:auto}
.vcap-narrow{width:100%;max-width:var(--container-narrow);margin-inline:auto}
.grid-auto{display:grid;gap:var(--sp-md);grid-template-columns:repeat(auto-fit,minmax(min(var(--grid-min,240px),100%),1fr))}
.fgrid{display:grid;gap:var(--sp-sm);grid-template-columns:repeat(auto-fill,minmax(min(var(--fgrid-min,210px),100%),1fr));align-items:start}
.fgrid>div{min-width:0}
.fgrid .fi{width:100%}
.fg-span2{grid-column:span 2}
.fgrid-fit{grid-template-columns:repeat(auto-fit,minmax(min(var(--fgrid-min,210px),100%),1fr))}
.jd-form .ef-l{color:var(--tx3);letter-spacing:.6px;margin-bottom:3px}
.jd-form-compact{overflow:hidden}
.jd-group{border-top:1px solid var(--bdr);margin-top:12px;padding-top:10px}
.jd-group:first-child{border-top:0;margin-top:0;padding-top:0}
.jd-gl{font-size:var(--fs-xs);font-weight:800;color:var(--tx3);text-transform:uppercase;letter-spacing:1px;margin-bottom:7px}
.jd-hint{font-size:var(--fs-xs);font-weight:400;color:var(--tx3);text-transform:none;letter-spacing:0;margin-top:3px;line-height:1.4}
.jd-form-compact .fgrid{gap:7px 10px}
.jd-gl:has(.tip-i){display:flex;align-items:center;gap:4px}
.jd-gl .tip-i{margin-left:0;text-transform:none;letter-spacing:normal}
.jd-classification-grid{grid-template-columns:minmax(170px,230px) minmax(220px,300px) minmax(190px,250px);justify-content:start}
.jd-labor-badge{padding:8px 0}
.jd-location-grid{grid-template-columns:minmax(220px,320px) minmax(165px,220px) minmax(150px,220px) minmax(145px,190px) auto;align-items:start;justify-content:start}
.jd-location-field>.ef-l{min-height:18px}
.jd-location-action{display:flex;align-items:flex-start;padding-top:19px}
.jd-location-action .btn{white-space:nowrap}
.jd-team-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.jd-team-role{min-width:0;border:1px solid var(--bdr);border-radius:var(--r-sm);padding:7px 8px;background:var(--bg2)}
.jd-team-role .ef-l{margin-bottom:2px}
.jd-team-role>div:nth-child(2){min-height:24px!important;margin-bottom:3px!important}
.jd-team-role .fi{font-size:12px}
.jd-team-role .cluster{max-width:100%;white-space:normal;overflow-wrap:anywhere;vertical-align:middle}
.jd-team-role select{min-width:0}
.jd-client-row{grid-template-columns:minmax(220px,1fr)}
.jd-auto-label{display:inline-flex;margin-left:4px;padding:1px 6px;border-radius:999px;background:var(--grn2);color:var(--grn);font-size:10px;font-weight:700;letter-spacing:0;text-transform:none;vertical-align:1px}
.jd-auto-label.manual{background:var(--amb2);color:var(--amb)}
.jd-resolved-field{background:var(--bg3);color:var(--grn)}
.job-pay-card{border-color:rgba(30,64,175,.24)}
.job-pay-card>.cd-h{align-items:flex-start;gap:var(--sp-md)}
.job-pay-sub{font-size:var(--fs-xs);color:var(--tx3);margin-top:2px}
.job-pay-lock{font-size:var(--fs-xs);font-weight:700;color:var(--tx3);display:inline-flex;align-items:center;gap:5px}
.job-pay-redacted{display:inline-flex;padding:2px 7px;border-radius:999px;background:var(--bg3);color:var(--tx3);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.job-pay-table-wrap{overflow-x:auto}
.job-pay-table{min-width:1010px;table-layout:auto}
.job-pay-table td,.job-pay-table th{font-size:10.5px;padding:4px 6px;line-height:1.2;white-space:nowrap}
.job-pay-table th{font-size:9.5px;letter-spacing:.15px}
.job-pay-table th:first-child,.job-pay-table td:first-child{min-width:132px;white-space:normal}
.job-pay-table th:nth-child(3),.job-pay-table td:nth-child(3){max-width:112px;white-space:normal}
.job-pay-table th:nth-child(12),.job-pay-table td:nth-child(12){max-width:86px;overflow-wrap:anywhere;white-space:normal}
.job-pay-table th:nth-child(13),.job-pay-table td:nth-child(13){max-width:132px;overflow-wrap:anywhere;white-space:normal}
.job-pay-table .row-del{padding:1px 5px!important;min-height:22px;font-size:13px;line-height:1}
.job-pay-mobile-list{display:none}
.job-pay-mobile-group>h4{padding:7px 2px 4px;color:var(--acc);font-size:11px;text-transform:uppercase;letter-spacing:.7px}
.job-pay-mobile-card{min-width:0;padding:10px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--white)}
.job-pay-mobile-card.is-missing{border-color:rgba(220,38,38,.3);background:var(--red2)}
.job-pay-mobile-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}
.job-pay-mobile-head>b{min-width:0;overflow-wrap:anywhere;font-size:var(--fs-sm)}
.job-pay-mobile-head .bg{flex-shrink:0;padding:2px 7px;font-size:10px}
.job-pay-mobile-card dl{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
.job-pay-mobile-card dl>div{min-width:0}
.job-pay-mobile-card dt,.crew-mobile-source>span{font-size:9.5px;font-weight:800;color:var(--tx3);text-transform:uppercase;letter-spacing:.55px}
.job-pay-mobile-card dd{margin:1px 0 0;color:var(--tx2);font-size:11.5px;overflow-wrap:anywhere}
.job-pay-correct{width:100%;margin-top:9px;padding:6px 8px;font-size:11px}
.job-pay-default-note{padding:9px 14px;border-bottom:1px solid var(--bdr);background:var(--bg3);color:var(--tx2);font-size:var(--fs-xs)}
.job-pay-overhead-readiness{border-bottom:1px solid var(--bdr)}
.job-pay-overhead-readiness>.job-pay-section-title{margin:0;padding:10px 14px 6px;background:var(--bg3)}
.job-pay-overhead-readiness .job-pay-default-note{padding-top:4px}
.job-pay-catalog-title{margin:0;padding:11px 14px 7px;background:var(--white)}
.job-pay-source{font-weight:700;color:var(--tx2)}
.job-labor-review{display:flex;align-items:flex-start;gap:8px;margin-bottom:var(--sp-md);padding:10px 14px;border:1px solid rgba(217,119,6,.3);border-radius:var(--r);background:var(--amb2);color:var(--tx2);font-size:var(--fs-xs)}
.job-labor-review b{flex-shrink:0;color:var(--amb)}
.new-project-kind{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%;border:0}
.new-project-kind legend{margin-bottom:6px;font-size:11px;font-weight:700;color:var(--tx2);text-transform:uppercase;letter-spacing:.6px}
.new-project-kind>label{display:flex;gap:8px;align-items:flex-start;padding:10px;border:1px solid var(--bdr);border-radius:var(--r-sm);cursor:pointer}
.new-project-kind>label:has(input:checked){border-color:var(--acc);background:var(--acc2)}
.new-project-kind input{margin-top:3px;accent-color:var(--acc)}
.new-project-kind label span,.new-project-kind label small{display:block}
.new-project-kind label small{margin-top:2px;color:var(--tx3);font-size:11px;line-height:1.35}
.new-project-kind>.mf-note{grid-column:1/-1}
.crew-mobile-source{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.crew-mobile-source .fi{width:100%;min-width:0}
.crew-mobile-actions{display:flex;gap:6px;margin-top:9px}
.crew-mobile-actions .btn{flex:1;padding:6px 8px;font-size:11px}
.job-pay-class-name{display:flex;align-items:center;gap:4px}
.job-pay-trade td{padding:4px 7px!important;background:var(--bg3)!important;color:var(--acc);font-size:10px!important;font-weight:800;text-transform:uppercase;letter-spacing:.5px}
.job-pay-trade span{color:var(--tx3);font-weight:500;text-transform:none;letter-spacing:0;margin-left:6px}
.job-pay-none{text-align:center!important;padding:20px!important;color:var(--tx3)!important}
.job-pay-empty{display:flex;flex-direction:column;gap:3px;padding:4px 0;color:var(--tx2)}
.job-pay-empty span{font-size:var(--fs-xs);color:var(--tx3)}
.job-pay-warning,.job-pay-mode-note,.job-pay-activation{padding:10px 14px;background:var(--amb2);border-bottom:1px solid rgba(217,119,6,.18);font-size:var(--fs-xs);color:var(--tx2)}
.job-pay-mode-note{background:var(--acc2);border-color:rgba(30,64,175,.18)}
.job-pay-import{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:12px 16px;border-top:1px solid var(--bdr);background:var(--bg3)}
.job-pay-import>div{display:flex;flex-direction:column}
.job-pay-import span{font-size:var(--fs-xs);color:var(--tx3)}
.job-pay-form{display:flex;flex-direction:column;gap:var(--sp-md)}
.job-pay-form .job-pay-activation{border:1px solid rgba(217,119,6,.22);border-radius:var(--r-sm)}
.job-pay-schedule-fields{display:grid;grid-template-columns:minmax(180px,280px) minmax(180px,280px);gap:var(--sp-md);align-items:end}
.job-pay-edit-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);margin:var(--sp-sm) 0}
.job-pay-edit-head>div{display:flex;flex-direction:column}
.job-pay-edit-head span{font-size:var(--fs-xs);color:var(--tx3)}
.job-pay-edit-row{border:1px solid var(--bdr);border-radius:var(--r);padding:var(--sp-lg);margin-bottom:var(--sp-md);background:var(--bg3);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.job-pay-row-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);margin-bottom:var(--sp-md)}
.job-pay-row-head>b{font-size:var(--fs-sm);color:var(--tx)}
.job-pay-delete-confirm{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:10px 12px;margin-bottom:var(--sp-md);border:1px solid rgba(220,38,38,.3);border-radius:var(--r-sm);background:var(--red2)}
.job-pay-delete-confirm[hidden]{display:none}
.job-pay-delete-confirm>div{display:flex;align-items:center;gap:var(--sp-sm)}
.job-pay-delete-confirm>div:first-child{align-items:flex-start;flex-direction:column;gap:2px}
.job-pay-delete-confirm span{font-size:var(--fs-xs);color:var(--tx2)}
.job-pay-edit-identity,.job-pay-edit-rates,.job-pay-edit-meta{display:grid;gap:var(--sp-sm);align-items:end}
.job-pay-edit-identity{grid-template-columns:minmax(180px,1fr) minmax(220px,2fr) auto}
.job-pay-edit-section{margin-top:var(--sp-md);padding-top:var(--sp-md);border-top:1px solid var(--bdr)}
.job-pay-section-title{margin-bottom:var(--sp-sm);font-size:11px;font-weight:800;color:var(--tx2);text-transform:uppercase;letter-spacing:.7px}
.job-pay-edit-rates{grid-template-columns:repeat(4,minmax(0,1fr))}
.job-pay-edit-meta{grid-template-columns:150px minmax(200px,1fr) minmax(0,2fr)}
.job-pay-eligibility{display:flex;align-items:end;gap:var(--sp-md);min-height:36px}
.job-pay-union-fields{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(0,1.5fr);gap:var(--sp-sm);min-width:0}
.job-pay-edit-meta>*{min-width:0}
.job-pay-union-fields .fi{width:100%;min-width:0}
.job-pay-union-fields.is-disabled{opacity:.48}
.starting-pay-impact{display:flex;flex-direction:column;gap:var(--sp-md)}
.starting-pay-choice{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--bdr);border-radius:var(--r-sm);cursor:pointer}
.starting-pay-choice:has(input:checked){border-color:var(--acc);background:var(--acc2)}
.starting-pay-choice span{display:flex;flex-direction:column}.starting-pay-choice small{color:var(--tx2);margin-top:2px}
.starting-pay-recost{display:flex;gap:8px;align-items:center;font-weight:700}
.starting-pay-compare{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-sm)}.starting-pay-compare>div{display:flex;flex-direction:column;padding:10px;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3)}.starting-pay-compare small{color:var(--tx3);text-transform:uppercase;font-weight:700}.starting-pay-compare span{color:var(--tx2);font-size:var(--fs-xs);margin-top:3px}
@media(max-width:600px){.starting-pay-compare{grid-template-columns:1fr}}
.job-pay-missing-default{color:var(--red);font-size:var(--fs-xs)}.job-pay-link{border:0;background:none;color:var(--acc);font-weight:700;cursor:pointer}
.job-pay-edit-row label{font-size:10.5px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px}
.job-pay-edit-row label small{display:block;margin-top:2px;color:var(--acc);font-size:9px;font-weight:700;letter-spacing:0;text-transform:none}
.job-pay-check{display:flex!important;align-items:center;gap:7px;min-height:36px;color:var(--tx2)!important;text-transform:none!important;letter-spacing:0!important}
.job-pay-row-remove{color:var(--red);border-color:rgba(220,38,38,.38)}
.job-pay-form-error{min-height:18px;color:var(--red);font-size:var(--fs-xs);font-weight:700}
.job-pay-direct-delete{display:flex;flex-direction:column;gap:var(--sp-md)}
.job-pay-direct-delete>p{margin:0}
.job-pay-direct-delete .job-pay-activation{border:1px solid rgba(217,119,6,.22);border-radius:var(--r-sm)}
.job-pay-direct-delete>label{max-width:280px}
.job-pay-copy{display:flex;flex-direction:column;gap:var(--sp-md)}
.job-pay-copy>label{max-width:520px}
.job-pay-copy-source{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--bg3);border:1px solid var(--bdr);border-radius:var(--r-sm)}
.job-pay-copy-source span{font-size:var(--fs-xs);color:var(--tx2)}
.job-pay-legend{padding:9px 14px;background:var(--bg3);border-top:1px solid var(--bdr);font-size:11px;color:var(--tx2)}
.crew-class-table{min-width:0;width:100%;table-layout:auto}
.crew-class-wrap{overflow-x:auto}
.crew-class-table .job-pay-needs td{background:rgba(245,158,11,.06)}
.job-pay-class-cell{display:flex;align-items:center;gap:5px;white-space:nowrap}
.job-pay-class-cell select{width:230px;flex:0 0 230px}
.job-pay-scheduled{display:block;font-size:10px;line-height:1.25;color:var(--amb);white-space:normal}
.job-pay-current-date,.job-pay-scheduled-date{display:block;white-space:nowrap}
.crew-col-pay-date{white-space:nowrap}
.job-pay-rate-info{display:inline-flex;align-items:center;flex:0 0 auto}
.job-pay-rate-info .tip-i{margin-left:0}
/* Summary text lives in data-tip and the body-level popover, never table layout. */
.job-pay-rate-info:has(.tip-i){width:24px;min-width:24px}
.job-pay-rate-info .tip-i{min-width:24px;min-height:24px}
.jp-crew-date{width:140px}
.job-pay-mini{font-size:10px!important;padding:2px 6px!important;min-height:unset}
.job-pay-delete{color:var(--red);margin-left:3px}
.crew-action-label{display:none}
.job-pay-row-badge{font-size:10px;margin-left:5px}
.job-pay-save-state{font-size:10px;color:var(--tx3);white-space:nowrap}
.zero-cost-labor-callout{background:rgba(245,158,11,.07);border:1px solid rgba(245,158,11,.3);border-radius:var(--r);padding:12px 16px;margin-bottom:16px}
.zero-cost-labor-head{display:flex;align-items:center;gap:10px}
.zero-cost-labor-copy{flex:1;min-width:0}
.bulk-crew-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(80px,.35fr);align-items:center;gap:8px;padding:6px 8px;border-bottom:1px solid var(--bdr)}
.bulk-crew-row>label{display:grid;grid-template-columns:auto 70px 1fr;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.bulk-crew-trade{color:var(--tx3);font-size:11px}
.stack{display:flex;flex-direction:column;gap:var(--stack-gap,var(--sp-md))}
.cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cluster-gap,var(--sp-sm))}
.cq{container-type:inline-size}

/* RESPONSIVE */
@media(max-width:768px){
  .yard-inv-disclosure>summary{align-items:flex-start;flex-direction:column;gap:5px;padding:10px 12px}
  .yard-inv-group-heading{width:100%}
  .yard-inv-group-onhand{padding-left:26px;white-space:normal}
  .yard-inv-summary-note{line-height:1.4}
  .job-pay-card>.cd-h{padding:9px 10px}
  .job-pay-table{min-width:1010px!important}
  .job-pay-table td,.job-pay-table th{padding:4px 5px}
  .job-pay-table-wrap,.job-pay-default-table,.crew-class-wrap{display:none}
  .job-pay-mobile-list{display:grid;gap:8px;padding:9px 10px}
  .job-pay-mobile-group{display:grid;gap:7px}
  .crew-mobile-list{border-top:1px solid var(--bdr)}
  .new-project-kind{grid-template-columns:1fr}
  .job-labor-review{display:block}.job-labor-review b{display:block;margin-bottom:3px}
  .sb{position:fixed;left:calc(-1 * var(--sb-w) - 20px);top:0;bottom:0;z-index:900;width:var(--sb-w);transition:left .3s var(--ease);box-shadow:4px 0 24px rgba(0,0,0,.35)}
  .sb.open{left:0}
  .sb-toggle{display:block}
  .mob-toggle{display:flex!important;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-sm);border:1px solid var(--bdr);background:var(--white);cursor:pointer;flex-shrink:0;transition:background .15s var(--ease)}
  .mob-toggle:active{background:var(--bg3);transform:scale(.95)}
  .sb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(2px);z-index:899;transition:opacity .3s var(--ease)}
  .sb.open~.sb-overlay,.sb-overlay.show{display:block}
  .cnt{margin-left:0;width:100%;padding:14px}
  .ci{padding:var(--sp-md)}
  .tb{padding:8px 14px;gap:8px}
  .tb-s{display:none}
  .g2,.g3,.rg-3,.rg-4,.rg-5{grid-template-columns:1fr 1fr}
  .rg-2{grid-template-columns:1fr 1fr}
  .kpi-r{grid-template-columns:repeat(2,1fr)!important}
  .tbl td,.tbl th{padding:8px 10px;font-size:13px}
  .tbl{min-width:500px}
  /* View header stacks: full-width title block, buttons wrap below it */
  .view-hd{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:14px}
  .view-hd-actions{flex-wrap:wrap}
  .view-hd-actions .btn{flex:1 1 auto}
  /* Pills scroll on their own line; the "Showing X of Y" count drops below */
  .pp-filterbar .pills{max-width:100%}
  .pp-showing{flex-basis:100%}
  .pp-colhdr{display:none!important}
  .pp-desk{display:none!important}.pp-mob{display:block!important}
  .inv-colhdr{display:none!important}
  .inv-desk{display:none!important}.inv-mob{display:block!important}
  .pp-row{overflow:visible}
  .dos-bn{border-radius:var(--r-lg);margin-bottom:var(--sp-md)}
  .dos-bn-top{flex-direction:column;align-items:center;gap:10px;padding:14px 16px 10px;text-align:center}
  .dos-bn-top>span{margin-left:0!important}
  .dos-bn-info{text-align:center;flex:none!important;width:100%}
  .dos-bn-nm{white-space:normal!important;word-break:break-word;font-size:14px}
  .dos-bn-loc{justify-content:center}
  .dos-bn-ctx{flex-direction:column;align-items:center;padding:0 16px 14px;text-align:center;width:100%}
  .dos-bn-meta{gap:8px 12px;flex-wrap:wrap;justify-content:center;width:fit-content;align-self:center}
  .dos-bn-copy{width:100%;justify-content:center;margin-top:8px;padding:10px 14px}
  .utabs{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.utab{font-size:12px;padding:12px 14px;flex-shrink:0;min-height:44px}
  .tr-master-head{align-items:flex-start;gap:8px}
  .tr-master-actions{width:100%;justify-content:space-between}
  /* DOS's desktop tab bar is hidden via .dos-desk-section below; other .stabs
     (Yards Inventory/Info, Payroll Review/Process) must stay visible on mobile. */
  .stabs{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .stab{flex-shrink:0;min-width:max-content}
  .dos-menu{display:block!important;border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:var(--sp-md)}
  .dos-desk-section{display:none!important}
  .dos-content-section{display:none!important}
  .dos-sub-active .dos-home-section{display:none!important}
  .dos-sub-active .dos-content-section{display:block!important}
  .dos-sub-active .dos-sub-back{display:flex!important}
  .dos-sub-active .dos-all-back{display:none!important}
  .wk{display:flex;gap:3px;padding:4px;margin-bottom:var(--sp-md);border-radius:var(--r)}
  .wd{flex:1;min-width:0;padding:8px 4px;border-radius:var(--r-sm);text-align:center}
  .wd-l{font-size:10px;letter-spacing:.5px;line-height:1}.wd-n{font-size:15px;line-height:1.2}
  .cd-h{flex-direction:column;gap:8px;align-items:flex-start}
  .dos-tbl-desk{display:none!important}
  .dos-cards-mob{display:block!important}
  .dos-day-footer{flex-direction:column!important;gap:12px!important;padding:16px!important;align-items:stretch!important;text-align:center;border-radius:var(--r)}
  .dos-day-footer .dos-ft-left{flex-direction:column;gap:4px}
  .dos-day-footer .dos-ft-right{flex-direction:column;gap:8px}
  .dos-day-footer .btn{width:100%;justify-content:center;min-height:48px;font-size:13px;border-radius:var(--r-sm)}
  .dos-add-btn{position:sticky;bottom:0;z-index:10;padding:12px 0;background:linear-gradient(transparent,var(--bg) 30%)}
  .dos-add-btn .btn{min-height:52px;font-size:14px;font-weight:700;border-radius:var(--r)}
  .modal-footer{flex-direction:column;gap:8px}
  .modal-footer .btn{width:100%;justify-content:center;min-height:48px;font-size:14px}
  .pr{grid-template-columns:1fr!important;gap:8px;padding:14px 18px}
  .pr>div{text-align:left!important}
  .pc-bd{grid-template-columns:1fr 1fr 1fr}
  .pg{grid-template-columns:1fr}
  .pills{overflow-x:auto;flex-wrap:nowrap}.pill{flex-shrink:0;white-space:nowrap}
  .dash-pills-desk{display:none!important}.dash-pills-mob{display:block!important}
  #dash-trend-proj{max-width:calc(100vw - 120px)!important}
  #modal-overlay,.modal-overlay{padding:10px!important}
  #modal-box{max-width:100%!important;margin:0;border-radius:var(--r);box-sizing:border-box}
  #modal-box .cd-b,#modal-box>div:not(.modal-footer):not([style*="border-bottom"]){padding-left:16px;padding-right:16px}
  .mf-2,.mf-3,.mf-4{grid-template-columns:1fr!important}
  .mf-row{margin-bottom:12px}
  .mf-label{font-size:12px!important}
  .fi,select.fi,textarea.fi,input[type="text"],input[type="number"],input[type="date"],input[type="email"],input[type="password"],input[type="search"],select,textarea{font-size:16px!important}
  .tb-s{font-size:16px!important}
  .prt-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .prt-tabs .utab{flex-shrink:0;white-space:nowrap;min-width:80px;min-height:44px}
  .btn{min-height:44px;min-width:44px;font-size:13px}
  .tbl .btn{min-height:34px;min-width:34px;font-size:13px;padding:4px 10px}
  #login-overlay>div{max-width:100%!important}
  #login-overlay input{font-size:16px!important}
  .sb-i{min-height:48px;padding:12px 14px}
  .pill{min-height:40px;padding:10px 16px}
}
@media(max-width:900px){
  .jd-classification-grid{grid-template-columns:1fr 1fr}
  .jd-location-grid{grid-template-columns:1fr 1fr}
  .jd-location-main,.jd-location-action{grid-column:1/-1}
  .jd-location-action{padding-top:0}
  .jd-team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .jd-team-role{min-width:0}
}
@media(max-width:600px){
  .jd-classification-grid{grid-template-columns:1fr}
  .jd-team-grid{grid-template-columns:1fr}
}
@media(max-width:480px){
  .ci{padding:12px}
  .g2,.g3,.rg-2,.rg-3,.rg-4,.rg-5{grid-template-columns:1fr}
  .fgrid,.fgrid-fit{grid-template-columns:1fr}
  .fg-span2{grid-column:auto}
  .kpi-r{grid-template-columns:1fr!important}
  .pc-bd{grid-template-columns:1fr}
  .ec-bd{grid-template-columns:1fr 1fr}
  .dos-bn-id{font-size:12px;padding:4px 10px}
  .dos-bn-date-hd{font-size:13px}
  .dos-bn-nm{font-size:14px}
  .utab{font-size:12px;padding:10px 12px}
  .stab .si{font-size:16px}.stab span:not(.si):not(.sc):not(.dos-notes-dot){display:none}
  .stab .sc{font-size:10px}
  .dos-ecard-bd{grid-template-columns:1fr 1fr}
  .dos-day-footer .dos-ft-left span:first-child{font-size:12px}
  .dos-day-footer .dos-ft-left span:last-child{font-size:20px;margin-left:0}
  .jd-location-grid{grid-template-columns:1fr}
  .jd-location-main,.jd-location-action{grid-column:auto}
  .jd-location-action .btn{width:100%}
  .jd-team-grid{grid-template-columns:1fr;overflow:visible}
  .jd-team-role{min-width:0}
  .jd-client-row{grid-template-columns:1fr}
}
@media(min-width:769px){.mob-toggle{display:none!important}.sb-overlay{display:none!important}.pp-mob{display:none!important}
.app.sb-hidden .sb{margin-left:calc(-1 * var(--sb-w));opacity:0;pointer-events:none;overflow:hidden}
.app.sb-hidden .sb-expand-btn{display:flex}
/* Collapsed icon-only rail (desktop) - icons stay visible & clickable */
.app.sb-mini .sb{width:var(--sb-w-mini);min-width:var(--sb-w-mini)}
.app.sb-mini .sb-lbl{display:none}
.app.sb-mini .sb-sec{padding:0 8px}
.app.sb-mini .sb-i{justify-content:center;padding:10px 0;gap:0}
.app.sb-mini .sb-i-l{display:none}
.app.sb-mini .sb-bg{display:none}
.app.sb-mini .sb-i.act::before{top:8px;bottom:8px}
.app.sb-mini .sb-hd{flex-direction:column;gap:8px;padding:14px 0;justify-content:center}
.app.sb-mini .sb-hd>div{display:none}
.app.sb-mini .sb-collapse-btn{margin-left:0;transform:rotate(180deg)}
.app.sb-mini .sb-ft{flex-direction:column;gap:10px;padding:14px 0;justify-content:center}
.app.sb-mini .sb-ft>div:nth-child(2){display:none}}
@media(max-width:768px){.sb-collapse-btn{display:none!important}.sb-expand-btn{display:none!important}}
@media(max-width:768px) and (hover:none) and (pointer:coarse){
  .fi,select.fi{min-height:44px;font-size:16px}
  .utab{min-height:44px}.stab{min-height:40px;padding:10px 14px!important}
  .wd{min-height:52px}
  td,th{padding:10px 12px!important}
}
@supports(padding:max(0px)){
  .sb{padding-bottom:max(16px,env(safe-area-inset-bottom))}
  .cnt{padding-bottom:max(16px,env(safe-area-inset-bottom))}
}
@media(max-width:768px){
  .job-pay-import,.job-pay-edit-head{align-items:stretch;flex-direction:column}
  .job-pay-edit-identity,.job-pay-edit-rates{grid-template-columns:1fr 1fr}
  .job-pay-edit-meta{grid-template-columns:1fr 1fr}
  .job-pay-edit-meta .job-pay-union-fields{grid-column:1/-1}
  .job-pay-edit-meta .job-pay-row-remove{grid-column:1/-1}
  .job-pay-delete-confirm{align-items:stretch;flex-direction:column}
  .job-pay-delete-confirm>div:last-child{justify-content:flex-end}
  .crew-class-wrap{overflow:visible}
  .crew-class-table,.crew-class-table tbody{display:block;width:100%;min-width:0!important}
  .crew-class-table thead{display:none}
  .crew-class-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 10px;padding:12px 14px;border-bottom:1px solid var(--bdr)}
  .crew-class-table td{display:block;padding:0!important;border:0!important;text-align:left!important;min-width:0}
  .crew-class-table .crew-col-code{grid-column:1;grid-row:1}
  .crew-class-table .crew-col-name{grid-column:1/-1;grid-row:2}
  .crew-class-table .crew-col-trade{grid-column:1/-1;grid-row:3;color:var(--tx2)}
  .crew-class-table .crew-col-class{grid-column:1/-1;grid-row:4}
  .crew-class-table .crew-col-actions{display:flex!important;grid-column:1/-1;grid-row:5;justify-content:flex-end;gap:8px;margin-top:4px}
  .crew-class-table .crew-col-rate,.crew-class-table .crew-col-elig,.crew-class-table .crew-col-date,.crew-class-table .crew-col-pay-date{display:none!important}
  .crew-class-table .job-pay-class-cell{display:grid!important;width:100%;box-sizing:border-box;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:6px;white-space:normal}
  .crew-class-table .job-pay-class-cell::before{content:"Classification";grid-column:1/-1;font-size:10px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.5px}
  .crew-class-table .job-pay-class-cell select{width:100%;min-width:0;max-width:100%;flex:none}
  .crew-class-table .job-pay-scheduled{grid-column:1/-1}
  .job-pay-class-cell .job-pay-mini{min-height:38px!important}
  .crew-col-actions .job-pay-mini{display:inline-flex;align-items:center;gap:5px;min-height:38px!important}
  .crew-action-label{display:inline}
  .jp-crew-date{width:132px}
  .bulk-crew-row{grid-template-columns:1fr}
  .bulk-crew-row>label{grid-template-columns:auto 64px 1fr}
}
@media(max-width:480px){
  .job-pay-schedule-fields,.job-pay-edit-identity,.job-pay-edit-rates,.job-pay-edit-meta,.job-pay-union-fields{grid-template-columns:1fr}
  .zero-cost-labor-head{align-items:flex-start;flex-wrap:wrap}
  .zero-cost-labor-head>svg{margin-top:2px}
  .zero-cost-labor-copy{flex-basis:calc(100% - 26px)}
  .zero-cost-labor-head>#zc-toggle-btn{margin-left:26px;min-height:40px}
  .job-pay-edit-row{padding:var(--sp-md)}
  .job-pay-eligibility{align-items:flex-start;flex-direction:column;gap:0}
  .job-pay-row-head{align-items:stretch;flex-direction:column}
  .job-pay-delete-confirm>div:last-child{align-items:stretch;flex-direction:column}
}
.mo{font-family:var(--m);font-size:13.5px}.r{text-align:right}.b{font-weight:700}
/* Numeric displays use the body font (Aptos) with tabular figures so digit columns stay aligned */
.mo,.kpi-v,.dos-bn-id,.dos-bn-we,.dos-bn-pill b,.wd-n,.dos-menu-item .dm-count,.dos-ecard-val,.ec-hrs,.pc-id,.ps-v{font-variant-numeric:tabular-nums}

/* Compact yard inventory disclosures and the yard-wide normalized summary. */
.yard-inv-disclosure{width:100%}
.yard-inv-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:10px 14px;cursor:pointer;list-style:none;user-select:none}
.yard-inv-disclosure>summary::-webkit-details-marker{display:none}
.yard-inv-disclosure>summary:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
.yard-inv-group-heading{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.yard-inv-disclosure-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;color:var(--tx3);font-size:22px;line-height:1;transition:transform .15s var(--ease)}
.yard-inv-disclosure[open] .yard-inv-disclosure-icon{transform:rotate(90deg)}
.yard-inv-group-label{font-size:13px;font-weight:700;min-width:0;overflow-wrap:anywhere}
.yard-inv-status{font-size:11px;margin-left:2px}
.yard-inv-group-onhand{flex:0 0 auto;font-size:12px;color:var(--tx3);white-space:nowrap}
.yard-inv-group-body{border-top:1px solid var(--bdr);padding:0}
.yard-inv-group-body .tbl{margin:0}
.yard-inv-summary-note{padding:9px 14px;border-bottom:1px solid var(--bdr);font-size:12px;color:var(--tx3)}
.yard-inv-spec-summary{margin-bottom:16px}
.yard-inv-spec-table{margin:0}
.yard-inv-spec-table td,.yard-inv-spec-table th{white-space:nowrap}
.yard-inv-spec-table td:nth-child(2){white-space:normal;min-width:220px}
.yard-inv-spec-table tfoot tr{background:var(--bg3);border-top:2px solid var(--bdr)}
.yard-inv-spec-table tfoot td{font-weight:700}

/* Yard list: an identity column beside a fixed, legible operating snapshot. */
.yard-list{display:flex;flex-direction:column;gap:8px;min-width:0}
.yard-list-row{display:grid;grid-template-columns:minmax(230px,1fr) minmax(430px,.94fr);align-items:center;gap:22px;width:100%;min-width:0;padding:13px 16px;border:1px solid var(--bdr);border-radius:8px;background:var(--white);box-shadow:0 1px 2px rgba(0,0,0,.04);cursor:pointer;transition:border-color .12s,transform .12s}
.yard-list-row:hover{border-color:var(--acc);transform:translateY(-1px)}
.yard-list-row:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.yard-list-identity{min-width:0}
.yard-list-name{font-size:14px;font-weight:700;line-height:1.28;overflow-wrap:anywhere}
.yard-list-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px 7px;margin-top:6px;min-width:0;font-size:11px;color:var(--tx3)}
.yard-list-meta .bg{font-size:9px}
.yard-list-lease{padding:1px 6px;border-radius:3px;background:var(--bg3);color:var(--tx3)}
.yard-list-location{min-width:0;overflow-wrap:anywhere}
.yard-list-acres{white-space:nowrap}
.yard-list-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 14px;min-width:0}
.yard-list-metric{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label label" "value unit";align-items:baseline;column-gap:3px;min-width:0;padding-left:13px;border-left:1px solid var(--bdr)}
.yard-list-metric:first-child{padding-left:0;border-left:0}
.yard-list-metric-label{grid-area:label;display:block;margin-bottom:3px;font-size:10px;line-height:1.2;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--tx3);white-space:nowrap}
.yard-list-metric-value{grid-area:value;min-width:0;font-size:16px;line-height:1.2;font-weight:700;letter-spacing:-.02em;color:var(--tx);overflow-wrap:anywhere}
.yard-list-metric-unit{grid-area:unit;font-size:10px;color:var(--tx3);white-space:nowrap}
/* Inventory can have many operational columns; the disclosure owns its scroll area. */
.yard-inv-group-body>div[style*="overflow-x"]{max-width:100%;overflow-x:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.yard-inv-group-body>div[style*="overflow-x"]>.tbl{min-width:760px}
@media(max-width:1100px){
  .yard-list-row{grid-template-columns:1fr;gap:13px;padding:13px}
  .yard-list-metrics{gap:10px 8px}
  .yard-list-metric{padding-left:9px}
}
@media(max-width:480px){
  .yard-list-row{padding:12px}
  .yard-list-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 14px}
  .yard-list-metric:nth-child(odd){padding-left:0;border-left:0}
  .yard-list-metric:nth-child(3){border-left:0;padding-left:0}
  .yard-list-metric-value{font-size:15px}
  .yard-list-meta{gap:5px}
}

/* SAFETY REVIEW */
.safety-filter-card{padding:14px 16px}
.safety-filter-grid{display:grid;grid-template-columns:2fr repeat(3,minmax(130px,1fr));gap:12px;align-items:end}
.safety-page-count{font-size:12px;color:var(--amb);font-weight:700}
.safety-state{background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);padding:34px 20px;text-align:center;color:var(--tx3);font-size:13px}
.safety-state-error{color:var(--red)}
.safety-observation-table{display:grid;gap:8px}
.safety-observation-table-head{display:grid;grid-template-columns:minmax(170px,1fr) minmax(260px,2fr) minmax(180px,1fr);gap:14px;padding:0 16px 4px;color:var(--tx3);font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase}
.safety-observation-card{display:grid;grid-template-columns:minmax(170px,1fr) minmax(260px,2fr) minmax(180px,1fr);gap:14px;align-items:center;background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);padding:13px 16px;box-shadow:var(--shadow)}
.safety-observation-card.is-reviewed{opacity:.78}
.safety-observation-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0}
.safety-observation-project{font-size:13px;font-weight:700;color:var(--tx)}
.safety-observation-date{font-size:11px;color:var(--tx3);margin-top:3px}
.safety-source-link{display:inline-block;margin-top:5px;font-size:11px;color:var(--acc);text-decoration:none}
.safety-source-link:hover{text-decoration:underline}
.safety-observation-summary{font-size:13px;color:var(--tx2);line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.safety-review-history{grid-column:1/-1;border-top:1px solid var(--bdr);padding-top:10px;display:grid;gap:8px}
.safety-review-history-title{font-size:10px;font-weight:800;color:var(--tx3);letter-spacing:.8px;text-transform:uppercase}
.safety-review-history-entry{background:var(--bg3);border:1px solid var(--bdr);border-radius:var(--r-sm);padding:8px 10px;display:grid;gap:5px}
.safety-review-history-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--tx3)}
.safety-review-history-response{font-size:13px;color:var(--tx2);line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.safety-review-history-empty{font-size:12px;color:var(--tx3);font-style:italic}
.safety-observation-foot{grid-column:1/-1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.safety-observation-foot>span:first-child{font-size:11px;color:var(--tx3);overflow-wrap:anywhere}
.safety-observation-foot>span:not(:first-child){font-size:11px;color:var(--tx3)}
.safety-observation-audit{line-height:1.45}
.safety-review-btn{font-size:11px;padding:5px 8px;white-space:nowrap}
.safety-review-dialog{font-size:13px}
.safety-review-dialog .safety-review-response{width:100%;min-height:140px;resize:vertical;box-sizing:border-box;line-height:1.45}
.safety-review-canonical{margin-bottom:14px;padding:10px 12px;background:var(--bg3);border:1px solid var(--bdr);border-radius:var(--r-sm)}
.safety-review-canonical-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:var(--tx3)}
.safety-review-canonical-head b{font-size:12px;color:var(--tx)}
.safety-review-canonical-text{margin-top:6px;color:var(--tx2);line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.safety-review-stored{margin-top:10px;padding-top:9px;border-top:1px solid var(--bdr)}
.safety-review-stored-title{margin-bottom:6px;font-size:10px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--amb)}
.safety-review-stored .safety-review-history{border-top:0;padding-top:0}
.safety-review-canonical-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px}
.safety-review-canonical-actions .btn{font-size:11px;padding:5px 8px}
.safety-review-refresh-status{font-size:11px;color:var(--tx3);line-height:1.4}
.safety-review-error{min-height:18px;margin-top:6px;color:var(--red);font-size:12px;line-height:1.4}
.safety-review-dialog .modal-footer{margin:16px -20px -28px}
@media(max-width:850px){
  .safety-filter-grid{grid-template-columns:1fr 1fr}
  .safety-observation-table-head{display:none}
  .safety-observation-card{display:grid;grid-template-columns:1fr auto;gap:9px 12px}
  .safety-observation-head{display:flex;grid-column:1/-1;align-items:flex-start;justify-content:space-between;gap:8px}
  .safety-observation-summary{grid-column:1/-1}
  .safety-observation-foot{grid-column:1/-1}
  .safety-observation-foot>span:first-child{flex:1}
}
@media(max-width:480px){
  .safety-filter-grid{grid-template-columns:1fr}
  .safety-filter-card{padding:12px}
  .safety-review-dialog .modal-footer{margin-left:-16px;margin-right:-16px}
}

/* KPI */
.kpi-r{display:grid;gap:var(--sp-md);margin-bottom:var(--sp-lg)}
.kpi{background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);padding:16px 18px;position:relative;overflow:hidden;transition:all .2s var(--ease);box-shadow:var(--shadow);min-width:0}
.kpi:hover{border-color:var(--bdr2);box-shadow:var(--shadow-md)}
.kpi-bar{position:absolute;top:0;left:0;right:0;height:3px}
.kpi-l{font-size:11.5px;color:var(--tx3);font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi-l:has(.tip-i){display:flex;align-items:center;gap:4px;overflow:visible}
.kpi-l .tip-i{flex:0 0 auto;margin-left:0;text-transform:none;letter-spacing:normal}
.kpi-v{font-size:20px;font-weight:800;font-family:var(--m);letter-spacing:-0.5px;line-height:1.2;word-break:break-all}
.kpi-s{font-size:12.5px;color:var(--tx3);margin-top:6px;line-height:1.4}
.prog{height:6px;background:#E2E8F0;border-radius:3px;overflow:hidden}.prog-f{height:100%;border-radius:3px;transition:width .4s var(--ease)}

/* WEEK-ENDING CALENDAR PICKER (weCalFieldHtml in app.js) */
.we-cal-wrap{position:relative;display:inline-block}
.we-cal-btn{background:var(--input);border:1px solid var(--bdr);border-radius:6px;padding:6px 12px;font-family:var(--m);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700;color:var(--acc);cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.we-cal-btn:hover{border-color:var(--bdr2)}
.we-cal-car{font-size:10px;color:var(--tx3)}
.we-cal-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:998;width:262px;background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shadow-lg);padding:10px;animation:dropIn .15s var(--ease)}
.we-cal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.we-cal-hd b{font-size:12.5px}
.we-cal-nav{width:28px;height:28px;border:none;border-radius:6px;background:var(--bg3);color:var(--tx2);font-size:13px;font-weight:700;cursor:pointer;transition:all .15s var(--ease)}
.we-cal-nav:hover{background:var(--acc2);color:var(--acc)}
.we-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.we-cal-dow{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--tx3);text-align:center;padding:2px 0}
.we-cal-day{font-family:var(--m);font-variant-numeric:tabular-nums;font-size:12px;text-align:center;padding:7px 0;border-radius:6px;border:none;background:none;line-height:1}
span.we-cal-day.dis{color:var(--tx4);cursor:default}
span.we-cal-day.dis.out{color:transparent}
button.we-cal-day.we{background:var(--acc2);color:var(--acc);font-weight:700;cursor:pointer;transition:all .15s var(--ease)}
button.we-cal-day.we:hover{background:var(--acc);color:#fff}
button.we-cal-day.we.sel{background:var(--acc);color:#fff;box-shadow:0 2px 8px rgba(30,64,175,.3)}
button.we-cal-day.we.out{opacity:.5}
.we-cal-hint{font-size:10.5px;color:var(--tx3);text-align:center;margin-top:6px}
@media(max-width:768px){
  .we-cal-pop{width:272px}
  .we-cal-day{padding:10px 0;font-size:13px}
  .we-cal-nav{width:36px;height:36px}
}
@media(max-width:400px){.we-cal-pop{right:-8px}}

/* DOS-SPECIFIC */
.dos-bn{background:linear-gradient(135deg,#0B1120,#162032,#1A2744);border:1px solid rgba(255,255,255,.06);border-radius:var(--r-lg);margin-bottom:20px;color:#fff;box-shadow:0 4px 24px rgba(11,17,32,.35),0 1px 3px rgba(0,0,0,.1);overflow:hidden}
.dos-bn-top{padding:18px 24px 14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.dos-bn-id{font-family:var(--m);font-size:13px;font-weight:700;color:#60A5FA;background:rgba(96,165,250,.1);border:1px solid rgba(96,165,250,.2);padding:5px 12px;border-radius:var(--r-sm);white-space:nowrap;letter-spacing:.5px;flex-shrink:0}
.dos-bn-info{min-width:0;flex:1}
.dos-bn-nm{font-size:15.5px;font-weight:700;color:#F1F5F9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.dos-bn-loc{font-size:13.5px;color:#64748B;margin-top:3px;display:flex;align-items:center;gap:6px}
.dos-bn-ctx{padding:0 24px 16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.dos-bn-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.dos-bn-date{font-size:12px;color:#94A3B8;font-weight:500}
.dos-bn-date-hd{font-size:14px;font-weight:700;color:#F1F5F9;letter-spacing:.2px;white-space:nowrap;flex-shrink:0}
.dos-bn-we{font-family:var(--m);font-size:12.5px;font-weight:600;color:#475569;background:rgba(255,255,255,.06);padding:3px 10px;border-radius:6px;border:1px solid rgba(255,255,255,.08)}
.dos-bn-pill{font-size:12.5px;color:#64748B;display:inline-flex;align-items:center;gap:4px}
.dos-bn-pill b{font-family:var(--m);color:#94A3B8;font-weight:600}
.dos-bn-copy{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:var(--r-sm);font-family:var(--f);font-size:12.5px;font-weight:600;color:#CBD5E1;cursor:pointer;padding:7px 14px;display:inline-flex;align-items:center;gap:6px;transition:all .2s var(--ease)}
.dos-bn-copy:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18);color:#F1F5F9}
.dos-bn-id-row{display:flex;align-items:center;gap:10px}
.dos-nav-inline{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12);color:#94A3B8;cursor:pointer;flex-shrink:0;padding:0;transition:background .15s ease}
.dos-nav-inline svg{width:16px;height:16px}
.dos-nav-inline:hover{background:rgba(255,255,255,.2);color:#F1F5F9}
.dos-nav-inline:active{background:rgba(255,255,255,.25);transform:scale(.92)}
.wk{display:flex;gap:3px;margin-bottom:var(--sp-md);background:var(--white);border:1px solid var(--bdr);border-radius:var(--r);padding:4px;box-shadow:var(--shadow)}
.wd{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 4px;border-radius:var(--r-sm);text-align:center;cursor:pointer;transition:all .2s var(--ease);color:var(--tx3)}
.wd:hover{background:var(--bg);color:var(--tx2)}.wd.act{background:var(--acc);color:#fff;box-shadow:0 2px 8px rgba(30,64,175,.3)}
.wd-l{font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;opacity:.5}
.wd.act .wd-l{opacity:.9;color:rgba(255,255,255,.7)}.wd-n{font-family:var(--m);font-size:15px;font-weight:700}.wd-l{margin-top:2px}.wd.fu{opacity:.25}
.utabs{display:flex;gap:0;border-bottom:0;box-shadow:inset 0 -2px var(--bdr);margin-bottom:var(--sp-md);width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.utab{padding:12px 18px;font-size:13px;font-weight:700;cursor:pointer;border:none;border-bottom:3px solid transparent;margin-bottom:0;background:none;color:var(--tx3);transition:all .2s var(--ease);display:flex;align-items:center;gap:7px;white-space:nowrap}
.utab:hover{color:var(--tx2)}
.utab.act{color:var(--acc);border-bottom-color:var(--acc)}
.tr-master-head,.tr-master-actions{flex-wrap:wrap}
.stabs{display:flex;gap:0;border-bottom:2px solid var(--bdr);margin-bottom:var(--sp-md)}
.stab{flex:1;padding:12px 14px;text-align:center;font-size:13.5px;font-weight:700;color:var(--tx3);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;background:none;transition:all .2s var(--ease);display:flex;flex-direction:column;align-items:center;gap:4px;position:relative}
.stab:hover{color:var(--tx2)}
.stab.act{color:var(--acc);border-bottom-color:var(--acc)}
.stab .si{font-size:17px;display:flex;align-items:center;justify-content:center}.stab .sc{font-size:11.5px;font-weight:700;background:var(--bg);padding:2px 7px;border-radius:8px}
.stab.act .sc{background:var(--acc2);color:var(--acc)}

/* DOS MENU NAV (Raken-style list for mobile) */
.dos-menu{display:none}
.dos-menu-item{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--white);border-bottom:1px solid var(--bdr);cursor:pointer;transition:background .15s var(--ease);-webkit-tap-highlight-color:transparent}
.dos-menu-item:first-child{border-radius:var(--r) var(--r) 0 0}
.dos-menu-item:last-child{border-bottom:none;border-radius:0 0 var(--r) var(--r)}
.dos-menu-item:only-child{border-radius:var(--r)}
.dos-menu-item:active{background:var(--bg3)}
.dos-menu-item .dm-ic{width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:var(--tx2);flex-shrink:0}
.dos-menu-item .dm-ic svg{width:22px;height:22px}
.dos-menu-item .dm-label{flex:1;font-size:15px;font-weight:600;color:var(--tx)}
.dos-menu-item .dm-count{font-family:var(--m);font-size:13px;font-weight:700;color:var(--tx3);margin-right:4px}
.dos-menu-item .dm-chev{color:var(--tx4);flex-shrink:0;display:flex;align-items:center}
.dos-menu-item .dm-chev svg{width:16px;height:16px}
.dos-notes-dot{width:9px;height:9px;border-radius:50%;background:var(--grn);box-shadow:0 0 0 3px var(--grn2);display:inline-block;flex-shrink:0}
.stab .dos-notes-dot{position:absolute;top:10px;left:calc(50% + 9px)}
.dos-sub-back{display:none;align-items:center;gap:8px;padding:12px 0;margin-bottom:12px;cursor:pointer;color:var(--acc);font-size:14px;font-weight:600;-webkit-tap-highlight-color:transparent}
.dos-sub-back:active{opacity:.7}
.dos-sub-back svg{width:18px;height:18px}
.dos-sub-title{font-size:13px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:12px}
.dos-desk-section{display:block}
.dos-content-section{display:block}
.dos-supplement-note{background:var(--grn2);border:1px solid rgba(22,163,74,.25);border-radius:var(--r-sm);padding:9px 12px;margin-bottom:var(--sp-md);font-size:var(--fs-xs);color:var(--tx2)}
.photo-dropzone{background:var(--acc2);border:2px dashed var(--acc);border-radius:var(--r);padding:28px;text-align:center;margin-bottom:var(--sp-md);cursor:pointer;transition:background .15s var(--ease),border-color .15s var(--ease),opacity .15s var(--ease)}
.photo-dropzone.is-dragover{border-color:var(--grn);background:var(--grn2)}
.photo-dropzone.is-uploading{cursor:wait;opacity:.62}
.photo-drop-icon{margin-bottom:6px;color:var(--acc);display:flex;justify-content:center}
.photo-drop-icon svg{width:28px;height:28px}
.photo-drop-title{font-size:var(--fs-sm);font-weight:700;color:var(--acc)}
.photo-drop-help{font-size:var(--fs-xs);color:var(--tx3);margin-top:4px}
.photo-upload-panel{border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--card);padding:10px 12px;margin-bottom:var(--sp-md)}
.photo-upload-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:var(--fs-xs);font-weight:700;color:var(--tx2);margin-bottom:7px}
.photo-upload-item{display:grid;grid-template-columns:20px minmax(120px,1fr) minmax(150px,auto) auto;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--bdr);font-size:var(--fs-xs)}
.photo-upload-state{width:18px;height:18px;border-radius:50%;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--tx3)}
.photo-upload-item.is-success .photo-upload-state{background:var(--grn2);color:var(--grn)}
.photo-upload-item.is-failed .photo-upload-state{background:var(--red2);color:var(--red)}
.photo-upload-item.is-queued-offline .photo-upload-state{background:var(--amb2);color:var(--amb)}
.photo-upload-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--tx)}
.photo-upload-label{color:var(--tx3);text-align:right}
.photo-upload-item.is-failed .photo-upload-label{color:var(--red)}
.photo-upload-spinner{width:11px;height:11px;border:2px solid var(--bdr2);border-top-color:var(--acc);border-radius:50%;animation:spin .8s linear infinite}
.photo-report-summary{background:var(--grn2);border:1px solid rgba(22,163,74,.35);border-radius:var(--r-sm);padding:8px 12px;margin-bottom:12px;font-size:var(--fs-xs);color:var(--grn);font-weight:700;display:flex;align-items:center;gap:6px}
.photo-report-summary svg{width:12px;height:12px;flex-shrink:0}
.photo-report-options{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:150px}
.photo-report-choice{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--tx2);cursor:pointer;white-space:nowrap}
.photo-report-choice input{accent-color:var(--grn);margin:0}
.photo-report-badge{font-size:11px;color:var(--tx4);border:1px solid var(--bdr);border-radius:999px;padding:2px 7px}
.photo-report-badge.is-selected{color:var(--grn);border-color:rgba(22,163,74,.35);background:var(--grn2);font-weight:700}
.photo-notes-control{min-width:230px;padding:6px 8px;font-size:12px}
.photo-note-readonly{display:block;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx2)}
.photo-delete-btn{font-size:12px;padding:6px 10px;color:var(--red);border-color:var(--red)}
.photo-empty{text-align:center;color:var(--tx3);padding:16px!important}
@media(max-width:600px){
  .photo-dropzone{padding:22px 14px}
  .photo-upload-item{grid-template-columns:20px minmax(0,1fr) auto}
  .photo-upload-label{grid-column:2/4;text-align:left}
  .photo-notes-control{min-width:190px}
}

/* PROJECT PICKER */
.pp-mob{display:none}
.pp-row{transition:all .2s var(--ease)!important}
.pp-row:hover{border-color:var(--acc)!important;box-shadow:var(--shadow-md)!important;transform:translateY(-1px)}
@media(min-width:769px){#pp-body-prt{overflow-x:auto}.pp-row-prt{overflow:visible!important}}

/* DOS MOBILE CARDS & FOOTER */
.dos-tbl-desk{display:block}.dos-cards-mob{display:none}
.dos-detail-wrap{max-width:1100px}
.dos-detail-wrap .tbl{table-layout:auto;width:100%;min-width:max-content}
.dos-ecard{background:var(--white);border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:8px;overflow:hidden;box-shadow:var(--shadow);transition:all .2s var(--ease)}
.dos-ecard:active{transform:scale(.99)}
.dos-ecard-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--bdr);background:var(--bg3)}
.dos-ecard-num{width:22px;height:22px;border-radius:50%;background:var(--acc);color:var(--white);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex-shrink:0}
.dos-ecard-nm{font-weight:700;font-size:12px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dos-ecard-val{font-family:var(--m);font-size:15px;font-weight:800;color:var(--acc);flex-shrink:0}
.dos-ecard-u{font-size:11px;color:var(--tx3);font-weight:500;margin-left:2px}
.dos-ecard-bd{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;padding:10px 14px}
.dos-ecard-bd>div>.ef-l{font-size:var(--fs-xs);font-weight:700;color:var(--tx4);text-transform:uppercase;letter-spacing:.8px}
.dos-ecard-bd>div>.ef-v{font-size:13px;font-weight:500;margin-top:1px}
.dos-day-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--sp-md);padding:14px 18px;background:#0F172A;border-radius:var(--r);color:#fff}
.dos-ft-left{display:flex;align-items:center;gap:12px}
.dos-ft-right{display:flex;align-items:center;gap:14px;font-size:12px;opacity:.8}

/* ENTRY CARDS */
.ec{background:var(--white);border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:8px;overflow:hidden;box-shadow:var(--shadow);transition:all .2s var(--ease)}
.ec:active{transform:scale(.99)}
.ec-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--bdr);background:var(--bg3)}
.ec-n{width:22px;height:22px;border-radius:50%;background:var(--acc);color:var(--white);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px}
.ec-nm{font-weight:700;font-size:12px;flex:1}
.ec-hrs{font-family:var(--m);font-size:15px;font-weight:800;color:var(--acc)}
.ec-u{font-size:11px;color:var(--tx3);font-weight:500}
.ec-bd{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px 10px;padding:10px 14px}
.ef-l{font-size:var(--fs-xs);font-weight:700;color:var(--tx4);text-transform:uppercase;letter-spacing:.8px}.ef-v{font-size:13.5px;font-weight:500;margin-top:1px}

/* PROJECT CARDS */
.pg{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--sp-md)}
.tbl tr.pr:hover td{background:var(--acc2)}
.tbl tr.pr td{padding:10px 12px;vertical-align:middle;line-height:1.4}
.pc{background:var(--white);border:1px solid var(--bdr);border-radius:var(--r);overflow:hidden;cursor:pointer;transition:all .2s var(--ease);box-shadow:var(--shadow)}
.pc:hover{border-color:var(--acc);box-shadow:var(--shadow-md);transform:translateY(-2px)}
.pc-h{padding:16px 18px;border-bottom:1px solid var(--bdr);display:flex;align-items:flex-start;justify-content:space-between}
.pc-id{font-family:var(--m);font-size:13px;font-weight:700;color:var(--acc)}.pc-nm{font-size:12.5px;font-weight:600;margin-top:3px;color:var(--tx)}.pc-loc{font-size:12.5px;color:var(--tx3);margin-top:2px}
.pc-bd{padding:14px 18px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.ps{text-align:center}.ps-v{font-family:var(--m);font-size:15px;font-weight:800}.ps-l{font-size:11px;color:var(--tx4);text-transform:uppercase;letter-spacing:.8px;margin-top:2px}
.pc-f{padding:10px 18px;background:var(--bg3);display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:var(--tx3)}

/* PILLS */
.pills{display:flex;gap:2px;background:var(--bg);border-radius:var(--r-sm);padding:3px;border:1px solid var(--bdr)}
/* pill-row: same component as .pills (used by Estimating) - inline, compact, scrolls sideways on phones */
.pill-row{display:flex;gap:2px;background:var(--bg);border-radius:var(--r-sm);padding:3px;border:1px solid var(--bdr);width:max-content;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.pill-row .pill{flex-shrink:0;white-space:nowrap}
.pill{padding:7px 16px;border-radius:7px;font-size:12px;font-weight:600;color:var(--tx3);cursor:pointer;transition:all .2s var(--ease)}
.pill:hover{color:var(--tx2)}.pill.act{background:var(--acc);color:var(--white);box-shadow:0 2px 6px rgba(30,64,175,.2)}
.dash-pills-mob{display:none}
.dash-head-actions{gap:6px!important}
.dash-filter{position:relative;display:flex;align-items:center;gap:5px;min-width:0}
.dash-filter-btn{width:34px;height:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--bdr2);border-radius:var(--r-sm);background:var(--white);color:var(--tx2);cursor:pointer}
.dash-filter-btn:hover,.dash-filter-btn:focus-visible,.dash-filter-btn.active{border-color:var(--acc);color:var(--acc);background:var(--acc2);outline:none}
.dash-filter-btn svg{width:17px;height:17px}
.dash-filter-label{max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;color:var(--acc)}
.dash-filter-clear{width:24px;height:24px;border:0;border-radius:50%;background:var(--bg3);color:var(--tx2);font-size:18px;line-height:1;cursor:pointer}
.dash-filter-clear:hover,.dash-filter-clear:focus-visible{background:var(--red2);color:var(--red);outline:none}
.dash-filter-menu{position:absolute;z-index:80;top:calc(100% + 7px);right:0;width:min(300px,calc(100vw - 32px));padding:12px;background:var(--white);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shadow-lg);display:grid;gap:10px}
.dash-filter-menu label{display:grid;gap:4px;font-size:11px;font-weight:700;color:var(--tx2)}
.dash-filter-menu .fi{width:100%}
.dash-filter-menu-clear{justify-self:start;padding:6px 10px}
@media(max-width:640px){
  .dash-head-actions{align-items:flex-start!important;width:100%;justify-content:flex-start}
  .dash-pills-mob{flex:1;min-width:0!important}
  .dash-filter{flex:0 1 auto;flex-wrap:wrap}
  .dash-filter-label{max-width:calc(100vw - 230px)}
  .dash-filter-menu{position:fixed;z-index:180;top:auto;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:12px;width:auto;max-height:70vh;max-height:min(70dvh,520px);overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box;padding:14px;border-radius:14px}
}

/* PORT ROW */
.pr{display:grid;grid-template-columns:2.5fr 1fr 1fr 1fr 100px 80px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--bdr);cursor:pointer;transition:background .15s var(--ease)}
.pr:hover{background:rgba(30,64,175,.03)}

.g2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-md)}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--sp-md)}
.mt16{margin-top:var(--sp-md)}.mb16{margin-bottom:var(--sp-md)}.mb20{margin-bottom:20px}
.hidden{display:none!important}
.ct-chev-open{transform:rotate(90deg)}
.fi{background:var(--input);border:1px solid var(--bdr);border-radius:var(--r-sm);padding:8px 12px;font-family:var(--f);font-size:12px;color:var(--tx);outline:none;transition:border .2s var(--ease),box-shadow .2s var(--ease)}
.fi:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc2)}
.ifi{padding:4px 6px;font-size:13px;width:100%}
select.ifi{padding:3px 4px}
@keyframes ifiok{0%{border-color:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.35)}100%{box-shadow:0 0 0 2px rgba(34,197,94,0)}}
.ifi-ok{animation:ifiok 1s var(--ease)}
.fg{margin-bottom:14px}
.fg:last-child{margin-bottom:0}
.fl{display:block;font-size:12.5px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px}
.fg .fi{width:100%;min-height:44px}
input[type="number"]{-moz-appearance:textfield;appearance:textfield}
input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}
select.fi{cursor:pointer;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394A3B8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}
@keyframes up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.an{animation:up .35s var(--ease) both}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes dropIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes scaleIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}

/* UTILITY CLASSES */
.sec-title{font-size:19px;font-weight:800;letter-spacing:-.2px}
.sec-sub{font-size:13px;color:var(--tx2);margin-top:2px}
.sec-label{font-size:13.5px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:10px}
.alert-bar{border-radius:var(--r);padding:12px 16px;display:flex;align-items:center;gap:10px;margin-bottom:14px;font-size:13px}
.alert-bar svg{width:14px;height:14px;flex-shrink:0}
.alert-bar-red{background:var(--red2);border:1px solid rgba(220,38,38,.2)}
.alert-bar-red svg{color:var(--red)}
.alert-bar-amb{background:var(--amb2);border:1px solid rgba(217,119,6,.3)}
.alert-bar-amb svg{color:var(--amb)}
.alert-bar-grn{background:rgba(22,163,74,.06);border:1px solid rgba(22,163,74,.2)}
.alert-bar-grn svg{color:#22c55e}
.btn-icon{padding:6px;min-width:32px;min-height:32px;justify-content:center}
.empty-state{text-align:center;color:var(--tx3);padding:24px;font-size:12px}
.card-actions{display:flex;justify-content:flex-end;gap:8px;padding:6px 12px;border-top:1px solid var(--bdr)}

/* ═══ Estimating ═══ */
.est-tbl th{white-space:nowrap}
.est-tbl td{vertical-align:middle}
/* Inline estimating fields keep the compact in-table feel but must read as
   fields in light AND dark: same surface/border tokens as the platform .fi */
.est-inl{background:var(--input);border:1px solid var(--bdr);border-radius:6px;padding:4px 8px;color:var(--tx);font:inherit;font-size:13px;transition:border .2s var(--ease)}
.est-inl:hover:not(:disabled){border-color:var(--bdr2)}
.est-inl:focus{border-color:var(--acc);outline:none;background:var(--white)}
.est-inl:disabled{opacity:.7;background:var(--bg3)}
select.est-inl{cursor:pointer}
.est-title{font-size:20px;font-weight:700;width:280px}
.est-n{width:74px;text-align:right}
/* Editor header band: title row + quiet meta line + actions on the right */
.est-ed-head{align-items:flex-start}
.est-ed-titlerow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.est-ed-meta{display:flex;gap:14px;align-items:center;margin-top:8px;flex-wrap:wrap;font-size:12px;color:var(--tx2)}
.est-vers{display:inline-flex;gap:4px;align-items:center}
.est-vers .pill{padding:2px 8px;font-size:11px;min-height:0}
.pg-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.pg-title{font-size:18px;font-weight:800}
.pg-sub{font-size:12px;color:var(--tx2)}
.pg-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex-shrink:1;max-width:100%}
@media(max-width:640px){.pg-head-actions{width:100%;justify-content:flex-start}}
.beta-tag{display:inline-block;vertical-align:middle;margin-left:8px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(135deg,#F59E0B,#EF4444);color:#fff;box-shadow:0 0 0 1px rgba(245,158,11,.45)}
.est-ed-actions{display:flex;gap:8px;flex-shrink:0;align-items:flex-start}
/* Overflow menu (Duplicate / New Revision / templates / exports) */
.est-menu{position:relative}
.est-menu-dd{display:none;position:absolute;top:calc(100% + 6px);right:0;min-width:200px;background:var(--card);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shadow-lg);z-index:5000;padding:6px;animation:dropIn .15s var(--ease)}
.est-menu-dd.open{display:block}
.est-menu-it{display:block;width:100%;text-align:left;background:none;border:none;border-radius:var(--r-sm);padding:8px 12px;font-family:var(--f);font-size:12.5px;font-weight:500;color:var(--tx);cursor:pointer;transition:background .15s var(--ease)}
.est-menu-it:hover{background:var(--acc2);color:var(--acc)}
.est-menu-sep{height:1px;background:var(--bdr);margin:5px 8px}
/* Sticky totals summary bar with the levers expander tucked inside */
.est-sumbar{position:sticky;top:0;z-index:40;display:flex;align-items:flex-start;gap:16px;padding:10px 16px;box-shadow:var(--shadow-md)}
.est-sumbar .est-levers-wrap{flex:1;min-width:0}
.est-levers-wrap{flex:1 1 320px;min-width:0}
.est-levers{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:12px;padding:10px 2px 4px}
.est-levers label{display:inline-flex;align-items:center;gap:6px;color:var(--tx2);white-space:nowrap}
.est-sum-kpis{display:flex;gap:22px;align-items:center;margin-left:auto;padding:2px 0;flex-wrap:nowrap;flex-shrink:0;white-space:nowrap}
/* Vertical entry flow for labor/equipment lines: each line is a stacked block
   whose labeled fields wrap downward - no sideways table scrolling. */
.est-lline{border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg2);padding:8px 10px;margin:6px 0}
.est-lline-hd{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px;font-size:12px}
.est-lline-f{display:flex;gap:8px 14px;flex-wrap:wrap;align-items:flex-end;font-size:12px;color:var(--mut)}
.est-lline-f .est-lf{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.est-lf{font-size:11px;color:var(--tx3);display:inline-flex;gap:4px;align-items:center;white-space:nowrap}
.est-kpi-lg{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}
.est-kpi-ll{font-size:10.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--tx3)}
.est-kpi-lg b{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}
.est-kpi-sub{font-size:11px;color:var(--tx3);font-variant-numeric:tabular-nums}
.est-kpi-price b{color:var(--grn)}
/* Expander rows (Drivers / Pipe spec / Hauling / checklist / levers) */
details.est-exp{margin:8px 0;border:1px solid var(--bdr);border-radius:var(--r-sm);background:var(--bg3)}
details.est-exp[open]{background:var(--bg2)}
details.est-exp>*:not(summary){padding:0 12px 10px}
details.est-exp-nest{margin:8px 0 0;background:var(--bg3)}
.est-exp-sum{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;padding:7px 12px;font-size:12px;user-select:none;-webkit-user-select:none}
.est-exp-sum::-webkit-details-marker{display:none}
.est-exp-sum::before{content:'';width:0;height:0;border-left:5px solid var(--tx3);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .15s var(--ease);flex-shrink:0}
details[open]>.est-exp-sum::before{transform:rotate(90deg)}
.est-exp-t{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--tx2)}
.est-exp-hint{font-size:11.5px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* GET-style cascading worksheet pieces */
.est-drivers{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--mut);padding-top:2px}
/* Derived (computed) chip: visually distinct from typed inputs, click for math */
.est-drv{background:var(--bg3);border:1px dashed var(--bdr2);border-radius:6px;padding:2px 7px;font-size:12px;color:var(--tx2);cursor:pointer;white-space:nowrap}
.est-drv:hover{border-color:var(--acc)}
.est-src-estimate{background:rgba(148,163,184,.18);color:var(--tx3)}
.est-movers{display:flex;flex-direction:column;line-height:1;gap:2px}
.est-sumstack{padding:6px 10px;margin-top:12px}
.est-sumrow{display:flex;gap:14px;align-items:center;padding:5px 6px;border-radius:6px;text-decoration:none;color:var(--tx)}
.est-sumrow:hover{background:var(--bg3)}
.est-sumnm{font-weight:600;font-size:13px;flex:1}
.est-check{padding:4px 6px;margin-top:12px;border-left:3px solid var(--amb)}
.est-check .est-exp-sum{padding:8px 10px}
.est-check ul{padding:0 12px 10px 30px!important;color:var(--tx2)}
.est-check-n{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--amb2);color:var(--amb);font-size:11px;font-weight:800}
/* Hover-revealed row/section actions: opacity only (never display/visibility)
   so scripts and keyboard users can still reach the buttons */
.est-rowact{display:inline-flex;gap:4px;opacity:0;transition:opacity .15s var(--ease)}
tr:hover .est-rowact,.est-rowact:focus-within{opacity:1}
.est-scope-act{display:inline-flex;gap:4px;opacity:.25;transition:opacity .15s var(--ease)}
.est-scope:hover .est-scope-act,.est-scope-act:focus-within{opacity:1}
.est-kpi{font-size:12px;color:var(--mut);white-space:nowrap}
.est-kpi b{color:inherit;font-size:13px;margin-left:2px}
.est-scope{padding:16px;margin-top:14px}
.est-scope-hd{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--bdr)}
.est-scope-nm{font-size:16px;font-weight:700;width:200px}
.est-wd-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--mut);margin:6px 0}
.est-wdl{white-space:nowrap;font-size:12px}
.est-sub{margin-top:10px;border-top:1px dashed var(--bdr);padding-top:8px}
/* "+ Pipe spec" adder: clears the spec blocks' floated controls and reads as
   a real control (dashed drop-zone style) so it can't hide below a float. */
.est-addspec{clear:both;display:flex;align-items:center;gap:10px;margin:8px 0;padding:8px 10px;border:1.5px dashed var(--bdr);border-radius:var(--r-sm);background:var(--bg2)}
.est-addspec-btn{font-weight:600;white-space:nowrap}
.est-sub-hd{display:flex;gap:10px;align-items:center;font-weight:600;font-size:13px;margin-bottom:4px}
.est-cat-tot{font-size:12px;color:var(--mut);font-weight:400}
.est-rollup{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;padding:8px 10px;background:var(--bg3);border:1px solid var(--bdr);border-radius:8px}
.est-ovrc{white-space:nowrap}
.est-ovr{background:rgba(245,158,11,.18);border-radius:6px;padding:2px 5px;box-shadow:inset 0 0 0 1px rgba(245,158,11,.5)}
.est-ic{cursor:pointer;opacity:.55;font-size:12px;text-decoration:none}
.est-ic:hover{opacity:1}
/* Inherited (followed) value cue - must stay visible on light backgrounds */
.est-inh{font-style:italic;color:var(--tx3);border-style:dashed}
.est-src{font-size:10px;padding:1px 6px;border-radius:8px;background:var(--bg3);color:var(--tx2)}
.est-src-cell{background:rgba(59,130,246,.12);color:#1D4ED8}
.est-src-scope{background:rgba(168,85,247,.12);color:#7E22CE}
.est-src-category{background:rgba(16,185,129,.12);color:#047857}
.est-totrow td{border-top:1px solid var(--bdr);background:var(--bg3)}
.est-grand td{font-size:14px}
.est-st-Draft{background:rgba(148,163,184,.25)}
.est-st-Submitted{background:rgba(59,130,246,.25)}
.est-st-Awarded{background:rgba(16,185,129,.25)}
.est-st-Lost{background:rgba(239,68,68,.25)}
.est-notes{width:100%;min-height:70px;margin-top:6px;background:var(--input);border:1px solid var(--bdr);border-radius:8px;color:var(--tx);padding:8px;font:inherit;font-size:13px}
.est-notes:focus{border-color:var(--acc);outline:none}
/* Estimating modals (mf-grid) follow the platform modal form pattern:
   uppercase mf-labels, .fi-style fields, primary Save aligned right */
.mf-grid .mf-row{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.mf-grid .mf-row>label{font-size:12.5px;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.8px}
.mf-grid input:not([type=checkbox]):not([type=radio]),.mf-grid select,.mf-grid textarea{background:var(--input);border:1px solid var(--bdr);border-radius:var(--r-sm);padding:8px 12px;font-family:var(--f);font-size:13px;color:var(--tx);outline:none;width:100%;transition:border .2s var(--ease)}
.mf-grid input:focus,.mf-grid select:focus,.mf-grid textarea:focus{border-color:var(--acc)}
.mf-grid>.btn{align-self:flex-start;margin-top:2px}
.mf-grid{display:flex;flex-direction:column}
/* Estimating on phones: keep tap targets sane without blowing up compact rows */
@media(max-width:640px){
  .est-inl{min-height:38px}
  .est-title{width:100%;font-size:18px}
  .btn-xs{min-height:36px}
  .est-levers{gap:10px}
  .est-ed-head{flex-direction:column;align-items:stretch}
  .est-ed-actions{width:100%;justify-content:flex-end}
  /* Stack the summary bar: KPIs on top, Levers expander below. Without the
     column layout the full-width KPI row squeezes the Levers <details> to
     0 width in the row flex, so its label wraps vertically (~230px of dead
     whitespace in the card). */
  .est-sumbar{position:static;gap:10px;flex-direction:column-reverse;align-items:stretch}
  .est-sum-kpis{width:100%;justify-content:space-between;margin-left:0}
  .est-levers-wrap{width:100%;flex:none}
  .est-rowact,.est-scope-act{opacity:1}
  .est-exp-hint{white-space:normal}
}

/* ── Clickable info icon + popover (shared pay forms) ── */
.tip-i{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--bdr);background:var(--bg3);color:var(--tx3);font-size:10px;font-weight:700;font-style:normal;line-height:1;cursor:pointer;vertical-align:middle;margin-left:4px;padding:0;font-family:inherit}
.tip-i:hover,.tip-i:focus{color:var(--acc);border-color:var(--acc);outline:none}
.tip-pop{position:absolute;z-index:4000;max-width:min(280px,calc(100vw - 16px));background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:0 4px 16px rgba(0,0,0,.35);padding:8px 10px;font-size:12px;color:var(--tx2);font-weight:400;text-align:left;white-space:normal;line-height:1.45}
.employee-pay-setup-method{min-width:0}
.employee-pay-setup-note{font-size:11px;color:var(--tx3);margin-top:5px;line-height:1.35}
.employee-default-pay-readiness{margin:0 0 14px;padding:10px 12px;border:1px solid var(--bdr);border-radius:var(--r);font-size:12px;line-height:1.45;color:var(--tx2)}
.employee-default-pay-readiness.is-complete{background:var(--grn2);border-color:rgba(22,163,74,.3)}
.employee-default-pay-readiness.is-missing{background:var(--amb2);border-color:rgba(217,119,6,.35)}
.employee-default-pay-action{font-size:11px;padding:3px 8px;margin-left:4px;vertical-align:middle}
@media(max-width:600px){.kpi-l .tip-i{width:20px;height:20px;font-size:11px}}

/* ── Alert deep-link focus flash (employee Pay tab pay-setup row) ── */
@keyframes hlFlash{0%{background:rgba(245,158,11,.28)}100%{background:transparent}}
.hl-flash{animation:hlFlash 2.6s ease-out both;border-radius:4px}

/* Estimating labor source tag: sheet-sourced vs library vs hand-typed lines */
.est-src-tag{display:inline-block;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 4px;border-radius:3px;background:var(--brand-soft,#e8f0fe);color:var(--brand,#1a5dc8);vertical-align:middle}
.est-src-tag.est-src-typed{background:var(--bg3,#eee);color:var(--tx3,#888)}
