/* ── Z-INDEX LADDER ──────────────────────────────────────────────
   0        map containers (.leaflet-container — contains Leaflet's 400–1000)
   1–50     in-page layering (sticky table heads, chips)
   218–220  chrome: submenu 218 · nav 219 · header 220
   1200+    modal overlay families (all dialogs)
   1300     photo lightbox
   2500–4000 specialty overlays (scanner, eq detail, mobile report)
   8999–9990 login screen · toasts (always on top)
   New overlays go at 1200+. Nothing between 221–1199.        ── */
:root{
    --asphalt:#1b1e24; --asphalt-2:#262a32;
    --concrete:#eceef1; --paper:#ffffff;
    --line:#d4d8de; --line-soft:#e6e9ed;
    --ink:#1b1e24; --text-2:#3c4250; --muted:#6a7180; --muted-2:#767d8c; /* muted-2 4.5:1 on white */
    --rail:#f4f5f7;            /* subtle row/rail background */
    --paper-2:#fbfcfd;         /* faint raised surface */
    --amber-faint:#fffaf2;     /* barely-amber attention background */
    --amber:#f2a900; --amber-soft:#fff4d6; --amber-line:#e6a200;
    --amber-text:#b57f00;      /* amber AS TEXT on light surfaces (brand amber is 2.0:1 on white) */
    --green:#1f7a4d; --green-deep:#155c39; --green-soft:#e4f1ea;
    --red:#c0392b; --red-soft:#fbeae8;
    --blue:#2b6cb0; --blue-soft:#e7f0f9;
    --purple:#7a4ca0; --purple-soft:#efe7f7;
    --asset-tint:#fcfbfe;      /* faint purple lift for the Assets Worked section */
    --radius:10px; --radius-sm:7px;
    --shadow:0 1px 2px rgba(27,30,36,.06), 0 4px 16px rgba(27,30,36,.06);
    --shadow-lg:0 8px 36px rgba(27,30,36,.16);
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{font-family:'Public Sans',system-ui,sans-serif; background:var(--concrete); color:var(--ink); -webkit-font-smoothing:antialiased; line-height:1.5;}
  button{font-family:inherit; cursor:pointer;}
  input,select{font-family:inherit; font-size:14px;}

  /* chrome */
  /* Sticky chrome: the header and nav stay pinned even when a page's content
     overflows the viewport by a few px (fixed-height panels + calc offsets),
     so scrolling never pushes navigation off the top of the screen. */
  .chrome{background-color:var(--asphalt);
    background-image:linear-gradient(rgba(27,30,36,.55), rgba(27,30,36,.8)), var(--hdr-scene,none);
    background-size:cover; background-position:var(--hdr-scene-pos, center bottom);
    color:#fff; position:sticky; top:0; z-index:220;}
  .chrome-inner{max-width:1280px; margin:0 auto; padding:6px 22px; display:flex; align-items:center; gap:14px; flex-wrap:wrap;}
  .div-btns{display:flex; align-items:center; gap:5px; flex-wrap:wrap;}
  .div-btn{background:rgba(255,255,255,.08); border:1.5px solid rgba(255,255,255,.18); color:#c7cdd8; border-radius:8px; padding:6px 14px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px; letter-spacing:.03em; transition:.12s; cursor:pointer;}
  .div-btn:hover{background:rgba(255,255,255,.15); border-color:rgba(255,255,255,.45); color:#fff;}
  .div-btn.on{background:var(--amber); border-color:var(--amber); color:var(--asphalt);}
  .who{text-align:right; font-size:13px; margin-left:auto; flex-shrink:0;}
  .brand{display:flex; align-items:center; gap:12px;}
  .shield{width:32px; height:32px; border-radius:7px; background:linear-gradient(160deg,var(--green),var(--green-deep)); border:2px solid rgba(255,255,255,.85); display:flex; align-items:center; justify-content:center; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:14px; color:#fff;}
  .brand h1{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:18px; margin:0; line-height:1; letter-spacing:.03em;}
  .brand .sub{font-size:11px; color:#aeb4c0; letter-spacing:.14em; text-transform:uppercase; margin-top:3px;}

  .who .name{font-weight:600;}
  .who .meta{color:#aeb4c0; font-size:12px;}

  /* ── header session selectors ── */
  .hdr-shopcrew{display:inline-flex; align-items:center; gap:6px; margin-top:2px; font-size:12px; color:#dde0e6; letter-spacing:.02em;}
  .hdr-shopcrew.clickable{cursor:pointer; padding:3px 9px 3px 0; border-radius:6px; transition:.12s;}
  .hdr-shopcrew.clickable:hover{background:rgba(255,255,255,.08); color:#fff;}
  .hdr-shopcrew .hsc-chev{font-size:10px; color:var(--amber); transition:.15s;}
  .hdr-shopcrew.open .hsc-chev{transform:rotate(180deg);}
  .hdr-dropdown{position:absolute; top:100%; left:0; margin-top:6px; background:var(--paper); border-radius:10px; box-shadow:var(--shadow-lg); min-width:240px; max-height:320px; overflow:auto; z-index:50; display:none; border:1px solid var(--line);}
  .hdr-dropdown.on{display:block;}
  .hdr-dropdown .hdo{padding:9px 14px; cursor:pointer; font-size:13px; color:var(--text-2); border-bottom:1px solid var(--line-soft); display:flex; align-items:center; gap:8px;}
  .hdr-dropdown .hdo:hover{background:var(--amber-soft);}
  .hdr-dropdown .hdo.sel{background:var(--green-soft); color:var(--green-deep); font-weight:600;}
  .hdr-dropdown .hdo .hdo-shop{color:var(--muted); font-weight:400;}
  .hdr-shopcrew-wrap{position:relative;}

  .profile-pick{display:inline-flex; align-items:center; gap:5px; font-size:12px; color:#dde0e6;}
  .profile-pick.clickable{cursor:pointer; padding:3px 8px; border-radius:6px; transition:.12s;}
  .profile-pick.clickable:hover{background:rgba(255,255,255,.08); color:#fff;}
  .profile-pick .pp-chev{font-size:10px; color:var(--amber);}
  .profile-dropdown{position:absolute; top:100%; right:0; margin-top:6px; background:var(--paper); border-radius:10px; box-shadow:var(--shadow-lg); min-width:180px; z-index:50; display:none; border:1px solid var(--line); overflow:hidden;}
  .profile-dropdown.on{display:block;}
  .profile-dropdown .hdo{padding:9px 14px; cursor:pointer; font-size:13px; color:var(--text-2); border-bottom:1px solid var(--line-soft);}
  .profile-dropdown .hdo:hover{background:var(--amber-soft);}
  .profile-dropdown .hdo.sel{background:var(--green-soft); color:var(--green-deep); font-weight:600;}
  .profile-pick-wrap{position:relative; display:inline-block;}

  .who-row{display:flex; align-items:center; gap:8px; justify-content:flex-end;}
  .logout-btn{background:none; border:1px solid rgba(255,255,255,.25); color:#dde0e6; border-radius:6px; padding:2px 9px; font-size:11px; cursor:pointer; transition:.12s;}
  .logout-btn:hover{background:rgba(255,255,255,.1); border-color:#fff; color:#fff;}

  /* nav */
  .nav{background:var(--asphalt-2); border-top:1px solid rgba(255,255,255,.06); border-bottom:3px solid var(--amber); position:sticky; top:var(--hdr-h,58px); z-index:219;}
  .nav-inner{max-width:1280px; margin:0 auto; padding:0 14px; display:flex; align-items:stretch; gap:2px; flex-wrap:wrap;}
  .navitem{background:none; border:none; color:#c7cdd8; font-family:'Saira Condensed',sans-serif; font-weight:600; font-size:15.5px; letter-spacing:.02em; padding:10px 16px; display:flex; align-items:center; gap:7px; border-bottom:3px solid transparent; margin-bottom:-3px; transition:.12s;}
  .navitem-green{color:#6fcf97 !important;}
  .navitem-green:hover{color:#8fe0b3 !important;}
  .navitem-green.active{color:#fff !important; border-bottom-color:var(--green) !important;}
  .navitem-green .nav-dot{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block;margin-right:2px;}
  .navitem:hover{color:#fff; background:rgba(255,255,255,.05);}
  .navitem.active{color:#fff; border-bottom-color:var(--amber);}
  .navitem .car{font-size:10px; opacity:.7; transition:.2s;}
  .navitem.open .car{transform:rotate(180deg);}
  /* submenu */
  .submenu{display:none; background:var(--paper); border-bottom:1px solid var(--line); box-shadow:var(--shadow); position:sticky; top:calc(var(--hdr-h,58px) + var(--nav-h,44px)); z-index:218;}
  /* When open, pin below header+nav as a fixed dropdown; as an in-flow sticky
     element it scrolled under the top bar because its parent wrapper ends. */
  .submenu.on{display:block; animation:drop .16s ease; position:fixed; top:calc(var(--hdr-h,58px) + var(--nav-h,44px)); left:0; right:0;}
  @keyframes drop{from{opacity:0; transform:translateY(-6px);}to{opacity:1; transform:none;}}
  .submenu-inner{max-width:1280px; margin:0 auto; padding:12px 18px; display:flex; gap:10px; flex-wrap:wrap;}
  .subbtn{display:flex; align-items:center; gap:9px; text-align:left; background:var(--paper); border:1.5px solid var(--line); border-radius:9px; padding:8px 14px; min-width:0; transition:.12s;}
  .subbtn:hover{border-color:var(--green); background:var(--green-soft);}
  .subbtn .si{width:30px; height:30px; border-radius:7px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:14px; background:var(--asphalt); color:#fff;}
  .subbtn .stxt .sn{font-weight:600; font-size:14px;}
  .subbtn .stxt .sd{font-size:11.5px; color:var(--muted);}
  .subbtn.soon{opacity:.6; cursor:default;}
  .subbtn.soon:hover{border-color:var(--line); background:var(--paper);}
  .subbtn .badge{margin-left:auto; font-size:10px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; padding:2px 6px; border-radius:4px;}
  .badge-live{background:var(--green-soft); color:var(--green-deep);}
  .badge-soon{background:var(--rail); color:var(--muted-2);}

  /* pages */
  .page{display:none;}
  .page.on{display:block;}
  .wrap{max-width:1280px; margin:0 auto; padding:4px 22px 130px;}

  /* === daily report (switcher etc) === */
  /* sql console */
  .sql-quickref{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
  .sql-quickref .sqr-lbl{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-2);margin-right:2px;}
  .sqr-chip{border:1px solid var(--line);background:var(--paper);border-radius:20px;padding:5px 13px;font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer;}
  .sqr-chip:hover{border-color:var(--amber);background:var(--amber-soft);}
  .sql-editor-wrap{background:var(--asphalt);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:14px;}
  .sql-editor{width:100%;min-height:160px;background:#1a1d22;color:#e3e7ee;border:none;padding:16px 18px;font-family:'Roboto Mono',monospace;font-size:13.5px;line-height:1.6;resize:vertical;box-sizing:border-box;}
  .sql-editor:focus{outline:none;}
  .sql-editor-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--asphalt-2);}
  .sql-hint{font-size:11.5px;color:#9aa0ac;margin-right:auto;}
  .sql-confirm-bar{display:flex;align-items:center;gap:12px;background:var(--amber-soft);border:1.5px solid var(--amber-line);border-radius:10px;padding:13px 18px;margin-bottom:14px;}
  .sql-confirm-bar .sqc-icon{font-size:18px;flex-shrink:0;}
  .sql-confirm-bar .sqc-txt{flex:1;font-size:13.5px;color:#7a5200;font-weight:600;}
  .btn-danger{background:var(--red);color:#fff;border:none;border-radius:8px;padding:9px 18px;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;}
  .btn-danger:hover{background:#a82a1f;}
  .sql-result-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:16px;}
  .sql-result-h{padding:11px 16px;display:flex;align-items:center;gap:10px;}
  .sql-result-h.ok{background:var(--green-soft);border-bottom:1px solid #bfe0cf;}
  .sql-result-h.write{background:var(--blue-soft);border-bottom:1px solid #b8d4ea;}
  .sql-result-h.errcard{background:var(--red-soft);border-bottom:1px solid #f0bdb6;}
  .sql-result-h .srh-txt{font-size:13.5px;font-weight:700;}
  .sql-result-h.ok .srh-txt{color:var(--green-deep);}
  .sql-result-h.write .srh-txt{color:var(--blue);}
  .sql-result-h.errcard .srh-txt{color:var(--red);}
  .sql-result-body{overflow:auto;max-height:480px;}
  table.sql-result-tbl{border-collapse:collapse;width:100%;font-size:12.5px;white-space:nowrap;}
  table.sql-result-tbl thead th{position:sticky;top:0;background:var(--asphalt);color:#fff;padding:8px 11px;text-align:left;border-right:1px solid #000;font-family:'Roboto Mono',monospace;font-size:11.5px;z-index:1;}
  table.sql-result-tbl tbody td{padding:7px 11px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);color:var(--text-2);max-width:280px;overflow:hidden;text-overflow:ellipsis;}
  table.sql-result-tbl tbody tr:nth-child(even){background:var(--paper-2);}
  .sql-err-msg{padding:14px 16px;font-family:'Roboto Mono',monospace;font-size:12.5px;color:#8a2a1f;white-space:pre-wrap;line-height:1.6;}
  .sql-history-wrap{margin-top:8px;}
  .sql-history-h{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-2);margin-bottom:8px;}
  .sql-hist-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line-soft);border-radius:8px;margin-bottom:6px;cursor:pointer;background:var(--paper);}
  .sql-hist-item:hover{border-color:var(--amber);}
  .sql-hist-item .shi-sql{flex:1;font-family:'Roboto Mono',monospace;font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .sql-hist-item .shi-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;flex-shrink:0;}
  .shi-ok{background:var(--green-soft);color:var(--green-deep);}
  .shi-err{background:var(--red-soft);color:var(--red);}

  /* org chart — 4-column finder layout */
  .org-move{background:none;border:none;padding:0 3px;font-size:10px;line-height:1.15;color:var(--muted-2);cursor:pointer;}
  .org-move:hover:not(:disabled){color:var(--ink);}
  .org-move:disabled{opacity:.25;cursor:default;}
  .org-cols{display:grid;grid-template-columns:repeat(4,1fr);height:calc(100vh - 150px);overflow:hidden;border-top:1px solid var(--line);}
  .org-col{display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--line);background:var(--paper);}
  .org-col:last-child{border-right:none;}
  .org-col-h{padding:12px 16px;border-bottom:1px solid var(--line);background:var(--rail);display:flex;align-items:center;gap:8px;flex-shrink:0;}
  .org-col-h .och-ttl{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-2);flex:1;}
  .org-col-h .och-ct{font-family:'Roboto Mono';font-size:11px;color:var(--muted-2);background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:1px 8px;}
  .org-col-add{background:var(--green);color:#fff;border:none;border-radius:6px;width:24px;height:24px;font-size:16px;line-height:1;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;}
  .org-col-add:hover{background:var(--green-deep);}
  .org-col-body{overflow:auto;flex:1;}
  .org-item{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line-soft);cursor:pointer;transition:background .1s;}
  .org-item:hover{background:var(--amber-soft);}
  .org-item.sel{background:var(--asphalt);color:#fff;}
  .org-item.sel .org-item-ct{color:#9aa0ac;}
  .org-item-nm{flex:1;font-size:13.5px;font-weight:600;}
  .org-item-ct{font-size:11px;color:var(--muted-2);font-family:'Roboto Mono';}
  .org-item-del{background:none;border:none;color:var(--muted-2);font-size:13px;padding:2px 5px;cursor:pointer;opacity:0;transition:opacity .1s;flex-shrink:0;}
  .org-item:hover .org-item-del{opacity:1;}
  .org-item.sel .org-item-del{color:#9aa0ac;}
  .org-item.sel .org-item-del:hover{color:#ef9a9a;}
  .org-item-del:hover{color:var(--red);}
  .org-item-chev{font-size:13px;color:var(--muted-2);flex-shrink:0;}
  .org-item.sel .org-item-chev{color:#9aa0ac;}
  .org-empty{padding:40px 20px;text-align:center;color:var(--muted-2);font-size:12.5px;line-height:1.6;}
  .org-add-row{padding:10px 14px;border-bottom:1px solid var(--line-soft);background:var(--paper-2);}
  .org-add-inp{width:100%;border:1.5px solid var(--amber);border-radius:7px;padding:7px 10px;font-size:13px;font-family:inherit;}
  .org-add-inp:focus{outline:none;box-shadow:0 0 0 3px var(--amber-soft);}

  /* daily report date bar */
  .date-bar{background:var(--asphalt-2);border-bottom:1px solid rgba(255,255,255,.06);}
  .date-bar-inner{max-width:1280px;margin:0 auto;padding:10px 22px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
  .date-bar label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#9aa0ac;flex-shrink:0;}
  .date-pick{border:1.5px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:#fff;border-radius:8px;padding:7px 12px;font-size:14px;font-family:inherit;cursor:pointer;}
  .date-pick:focus{outline:none;border-color:var(--amber);}
  .date-pick option{background:var(--asphalt-2);color:#fff;}
  .date-status{font-size:12px;color:var(--amber-text);font-weight:600;margin-left:auto;}
  .switch-wrap{background:var(--asphalt-2);}
  .switch{max-width:1280px; margin:0 auto; padding:14px 22px 16px; display:flex; gap:12px; flex-wrap:wrap;}
  .signtab{flex:1; min-width:210px; text-align:left; background:#20402f; color:#dfeee6; border:2px solid rgba(255,255,255,.55); border-radius:8px; padding:11px 14px; transition:.15s;}
  .signtab:hover{border-color:rgba(255,255,255,.9);}
  .signtab.on{background:var(--green); color:#fff; border-color:#fff; box-shadow:0 0 0 3px rgba(242,169,0,.45), var(--shadow-lg);}
  .signtab .lbl{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:17px; letter-spacing:.02em; display:flex; align-items:center; gap:8px;}
  .signtab .ex{font-size:10px; font-weight:700; background:rgba(255,255,255,.18); border-radius:4px; padding:2px 5px; letter-spacing:.08em;}
  .signtab .desc{font-size:12px; color:#cfe3d8; margin-top:3px; line-height:1.35;}
  .signtab.on .desc{color:#eafaf1;}
  .annot{max-width:1280px; margin:0 auto; padding:13px 22px; display:flex; gap:14px; align-items:flex-start; font-size:13px; color:var(--text-2);}
  .annot .tag{flex-shrink:0; font-family:'Saira Condensed',sans-serif; font-weight:700; text-transform:uppercase; letter-spacing:.05em; font-size:12px; color:var(--green-deep); background:var(--green-soft); border:1px solid #c4e0d2; border-radius:5px; padding:3px 9px; margin-top:1px;}
  .annot b{color:var(--ink);}
  .flow{display:none;}
  .flow.on{display:block; animation:fade .25s ease;}
  @keyframes fade{from{opacity:0; transform:translateY(6px);}to{opacity:1; transform:none;}}
  .report-head{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin:18px 0 6px;}
  .report-head .ttl{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:26px; line-height:1;}
  .report-head .crewline{font-size:13px; color:var(--muted); margin-top:5px;}
  .pill{display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; background:var(--paper); border:1px solid var(--line); border-radius:20px; padding:5px 11px; color:var(--text-2);}
  .pill .dot{width:7px; height:7px; border-radius:50%; background:var(--amber);}
  .lane-rule{height:4px; margin:16px 0; background:repeating-linear-gradient(90deg,var(--amber) 0 22px,transparent 22px 40px); border-radius:2px; opacity:.8;}
  .sec-h{display:flex; align-items:center; gap:8px; margin-bottom:9px;}
  .sec-h .ic{width:22px; height:22px; border-radius:6px; display:flex; align-items:center; justify-content:center; font-size:12px;}
  .ic-crew{background:var(--blue-soft); color:var(--blue);} .ic-equip{background:var(--amber-soft); color:var(--amber-line);}
  .ic-mat{background:var(--green-soft); color:var(--green-deep);} .ic-asset{background:var(--purple-soft); color:var(--purple);}
  .sec-h .t{font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--text-2);}
  .sec-h .ct{font-size:11px; color:var(--muted-2); margin-left:auto;}
  .lineitem{display:flex; align-items:center; gap:8px; padding:6px 9px; border-radius:7px; font-size:13px; background:var(--rail); border:1px solid var(--line-soft); margin-bottom:6px;}
  .lineitem .li-nm{flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .lineitem .li-val{font-family:'Roboto Mono',monospace; font-weight:600; font-size:12.5px; color:var(--text-2); flex-shrink:0;}
  .lineitem .li-x{cursor:pointer; color:var(--muted-2); font-size:14px; padding:0 2px; flex-shrink:0;}
  .li-val-inp{width:56px; border:1.5px solid var(--line); border-radius:6px; padding:4px 6px; text-align:right; font-family:'Roboto Mono',monospace; font-weight:600; font-size:12.5px; color:var(--ink); flex-shrink:0;}
  .li-val-inp:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 2px var(--amber-soft);}
  .li-unit-fixed{font-family:'Roboto Mono',monospace; font-size:11.5px; color:var(--muted-2); flex-shrink:0; width:14px;}
  .li-unit-inp{width:58px; border:1.5px solid var(--line); border-radius:6px; padding:4px 6px; text-align:left; font-family:'Roboto Mono',monospace; font-size:11.5px; color:var(--muted-2); flex-shrink:0;}
  .li-unit-inp:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 2px var(--amber-soft);}
  .li-sub{font-size:10.5px; color:var(--muted-2); display:block; margin-top:1px;}
  .lineitem .li-x:hover{color:var(--red);}
  .li-route{font-size:11px; color:var(--blue); font-weight:600;}
  .acc-inline{width:62px; border:1.5px solid var(--line); border-radius:6px; padding:5px 6px; text-align:center; font-family:'Roboto Mono',monospace; font-weight:600; font-size:12.5px; color:var(--ink); flex-shrink:0;}
  .acc-inline:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .acc-unit{font-size:10.5px; color:var(--purple); font-weight:700; width:42px; flex-shrink:0; text-transform:uppercase;}
  .addline{width:100%; text-align:left; border:1px dashed var(--line); background:var(--paper); color:var(--muted); border-radius:7px; padding:7px 10px; font-size:12.5px; font-weight:600; transition:.12s;}
  .addline:hover{border-color:var(--green); color:var(--green-deep); background:var(--green-soft);}
  .fa-card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:16px; overflow:hidden;}
  .fa-card.dirty{border-color:#bfe0cf; box-shadow:0 0 0 1px var(--green), var(--shadow);}
  .fa-cardhead{display:flex; align-items:center; gap:14px; padding:16px 18px; border-bottom:2px solid var(--line-soft); background:var(--paper-2); box-shadow:inset 4px 0 0 var(--amber);}
  .fa-card.dirty .fa-cardhead{background:var(--green-soft); box-shadow:inset 4px 0 0 var(--green);}
  .unsaved-badge{font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; background:var(--green); color:#fff; border-radius:10px; padding:2px 8px; margin-left:8px; white-space:nowrap;}
  .lineitem.dirty{background:var(--green-soft); border-color:#bfe0cf;}
  .fa-save-area{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
  .pill-dirty{background:var(--green-soft); border-color:#bfe0cf; color:var(--green-deep); animation:pillpulse 1.8s ease-in-out infinite;}
  .pill-dirty .dot{background:var(--green);}
  @keyframes pillpulse{0%,100%{box-shadow:0 0 0 0 rgba(31,122,77,.35);}50%{box-shadow:0 0 0 5px rgba(31,122,77,0);}}
  .btn-submit-report{background:var(--green); color:#fff; border:none; border-radius:20px; padding:7px 16px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:13.5px; box-shadow:var(--shadow);}
  .btn-submit-report:hover{background:var(--green-deep);}
  .actcode{font-family:'Roboto Mono',monospace; font-weight:600; font-size:13px; background:var(--asphalt); color:#fff; border-radius:6px; padding:6px 9px; flex-shrink:0;}
  .fa-cardhead .nm{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:20px; line-height:1.05;}
  .fa-cardhead .un{font-size:12px; color:var(--muted); margin-top:2px;}
  .fa-acc{margin-left:auto; display:flex; align-items:center; gap:12px;}
  .acc-readout{text-align:right;}
  .acc-readout label{display:block; font-size:10px; text-transform:uppercase; letter-spacing:.07em; color:var(--muted-2); margin-bottom:2px;}
  .acc-total{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:21px; line-height:1; color:var(--purple);}
  .acc-total span{font-family:'Public Sans'; font-size:11px; font-weight:600; color:var(--muted); margin-left:3px;}
  .xbtn{border:1px solid var(--line); background:var(--paper); color:var(--muted); width:30px; height:30px; border-radius:7px; font-size:16px; line-height:1; flex-shrink:0;}
  .xbtn:hover{border-color:var(--red); color:var(--red); background:var(--red-soft);}
  .fa-sections{display:grid; grid-template-columns:repeat(6,1fr); gap:1px; background:var(--line-soft);}
  .fa-sec.crew, .fa-sec.equip, .fa-sec.mat{grid-column:span 2;}
  .fa-sec.notes{background:var(--paper);}
  .fa-sec{padding:15px 18px; background:var(--paper);}
  .fa-sec.assets{grid-column:span 3; background:var(--asset-tint);}
  .fa-sec.notes{grid-column:span 3;}
  @media(max-width:880px){.fa-sections{grid-template-columns:repeat(2,1fr);} .fa-sec.crew, .fa-sec.equip, .fa-sec.mat{grid-column:span 1;} .fa-sec.assets, .fa-sec.notes{grid-column:1/-1;}}
  .addact{width:100%; border:2px dashed var(--line); background:var(--paper); color:var(--text-2); border-radius:var(--radius); padding:15px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:17px; letter-spacing:.02em; transition:.12s;}
  .addact:hover{border-color:var(--amber); color:var(--amber-line); background:var(--amber-soft);}
  /* Flow A summary */
  .fa-summary{background:var(--asphalt); color:#fff; border-radius:var(--radius); margin-top:20px; margin-bottom:16px; overflow:hidden;}
  .fa-sum-h{background:rgba(0,0,0,.25); padding:13px 18px; display:flex; align-items:center; gap:10px;}
  .fa-sum-h .sh{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:18px; letter-spacing:.02em;}
  .fa-sum-h .sd{font-size:12px; color:#9aa0ac; margin-left:auto;}
  .fa-sum-grid{display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:1px; background:rgba(0,0,0,.2);}
  .fa-sum-sec{padding:14px 18px; background:var(--asphalt-2);}
  .fa-sum-sec .st{font-size:10.5px; text-transform:uppercase; letter-spacing:.07em; color:#9aa0ac; font-weight:700; margin-bottom:9px; display:flex; align-items:center; gap:7px;}
  .fa-sum-sec .st .sic{width:18px; height:18px; border-radius:5px; display:flex; align-items:center; justify-content:center; font-size:10px; flex-shrink:0;}
  .srow{display:flex; align-items:center; gap:8px; padding:5px 0; border-bottom:1px solid rgba(255,255,255,.06); font-size:13px;}
  .srow:last-child{border-bottom:none;}
  .srow .snm{flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#c7cdd8;}
  .srow .sval{font-family:'Roboto Mono'; font-weight:600; font-size:12.5px; flex-shrink:0; color:#fff;}
  .srow .sbal{font-size:11px; font-family:'Roboto Mono'; font-weight:600; padding:2px 7px; border-radius:20px; flex-shrink:0;}
  .sbal-ok{background:var(--green-soft); color:var(--green-deep);}
  .sbal-over{background:var(--red-soft); color:var(--red);}
  .sbal-under{background:var(--amber-soft); color:#9a6a00;}
  .fa-sum-acc{padding:14px 18px; background:var(--asphalt-2); grid-column:1 / -1; border-top:1px solid rgba(0,0,0,.2);}
  .acc-chips{display:flex; gap:8px; flex-wrap:wrap; margin-top:8px;}
  .acc-chip{background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.12); border-radius:8px; padding:7px 12px; display:flex; align-items:center; gap:8px;}
  .acc-chip .acode{font-family:'Roboto Mono'; font-size:10px; background:var(--amber); color:var(--asphalt); border-radius:4px; padding:2px 5px; font-weight:700;}
  .acc-chip .anm{font-size:12px; color:#c7cdd8;}
  .acc-chip .av{font-family:'Saira Condensed'; font-weight:700; font-size:16px; color:#fff; margin-left:4px;}
  .acc-chip .au{font-size:11px; color:#9aa0ac;}
  .fb-panel{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); padding:15px 18px; margin-bottom:14px;}
  .fb-panel h3{font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin:0 0 11px; display:flex; align-items:center; gap:8px;}
  .fb-panel h3 .step{font-family:'Roboto Mono'; font-size:10px; background:var(--asphalt); color:#fff; border-radius:5px; padding:2px 6px; letter-spacing:0;}
  .chips{display:flex; flex-wrap:wrap; gap:8px;}
  .chip{display:inline-flex; align-items:center; gap:7px; padding:7px 12px; border-radius:22px; font-size:13px; font-weight:600; border:1.5px solid var(--line); background:var(--paper); color:var(--text-2); transition:.12s;}
  .chip .ck{width:15px; height:15px; border-radius:50%; border:1.5px solid var(--line); display:flex; align-items:center; justify-content:center; font-size:10px; color:transparent;}
  .chip.on{border-color:var(--green); background:var(--green-soft); color:var(--green-deep);}
  .chip.on .ck{background:var(--green); border-color:var(--green); color:#fff;}
  .chip.eq.on{border-color:var(--amber-line); background:var(--amber-soft); color:#9a6a00;}
  .chip.eq.on .ck{background:var(--amber-line); border-color:var(--amber-line);}
  .chip.act{border-radius:8px;} .chip.act .code{font-family:'Roboto Mono'; font-size:11px; opacity:.7;}
  .chip.act.on{border-color:var(--asphalt); background:var(--asphalt); color:#fff;}
  .chip.act.on .ck{background:var(--amber); border-color:var(--amber); color:var(--asphalt);}
  .roster-split{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
  @media(max-width:720px){.roster-split{grid-template-columns:1fr;}}
  .fb-gridwrap{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:auto; margin-bottom:16px;}
  table.fb-grid{border-collapse:collapse; width:100%; min-width:520px; font-size:13px;}
  table.fb-grid th, table.fb-grid td{padding:0; text-align:center; border-right:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft);}
  table.fb-grid thead th{background:var(--asphalt); color:#fff; font-weight:600; padding:10px 8px; font-family:'Saira Condensed',sans-serif; font-size:13.5px; position:sticky; top:0;}
  table.fb-grid thead th .tc{font-family:'Roboto Mono',monospace; font-size:10px; color:var(--amber); font-weight:500; display:block; margin-top:1px;}
  table.fb-grid th.rowhead{text-align:left; padding-left:14px; min-width:150px; background:var(--asphalt-2);}
  table.fb-grid td.rowname{text-align:left; padding:9px 14px; font-weight:600; background:var(--paper-2); white-space:nowrap;}
  table.fb-grid td.rowname small{display:block; font-weight:400; color:var(--muted-2); font-size:11px;}
  .cellinput{width:60px; border:none; text-align:center; padding:11px 4px; font-family:'Roboto Mono',monospace; font-weight:500; font-size:14px; color:var(--ink); background:transparent;}
  .cellinput:focus{outline:none; background:var(--amber-soft); box-shadow:inset 0 0 0 2px var(--amber);}
  .cellinput::placeholder{color:#c9cdd4;}
  td.totcell{background:var(--rail); font-family:'Roboto Mono',monospace; font-weight:600; color:var(--text-2);}
  .balance{font-size:11px; font-family:'Roboto Mono',monospace; padding:2px 7px; border-radius:20px; font-weight:600; display:inline-block;}
  .bal-ok{background:var(--green-soft); color:var(--green-deep);} .bal-over{background:var(--red-soft); color:var(--red);} .bal-under{background:var(--amber-soft); color:#9a6a00;}
  tfoot.fb-foot td{background:var(--asphalt-2); color:#fff; font-family:'Roboto Mono',monospace; font-weight:600; padding:9px 8px; border-color:#000;}
  tfoot.fb-foot td.rowname{background:var(--asphalt); color:#fff;}
  .emptygrid{padding:26px; text-align:center; color:var(--muted); font-size:13px;}
  .fb-block{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:12px; overflow:hidden;}
  .fb-block-h{display:flex; align-items:center; gap:12px; padding:13px 18px; cursor:pointer; background:linear-gradient(180deg,#fff,var(--paper-2));}
  .fb-block-h .nm{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:18px;}
  .fb-block-h .acc-mini{font-size:12px; color:var(--purple); font-weight:700; margin-left:auto; font-family:'Roboto Mono';}
  .fb-block-h .caret{transition:.2s; color:var(--muted-2);}
  .fb-block.open .caret{transform:rotate(90deg);}
  .fb-block-body{display:none; padding:2px 18px 16px; grid-template-columns:1fr 1fr; gap:20px;}
  .fb-block.open .fb-block-body{display:grid;}
  @media(max-width:640px){.fb-block-body{grid-template-columns:1fr !important;}}
  .fc-frame{max-width:480px; margin:20px auto 0; background:var(--paper); border:1px solid var(--line); border-radius:20px; box-shadow:var(--shadow-lg); overflow:hidden;}
  .fc-devhead{background:var(--asphalt); color:#fff; padding:13px 20px; display:flex; align-items:center; justify-content:space-between;}
  .fc-devhead .t{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px;}
  .fc-devhead .t small{display:block; font-family:'Public Sans'; font-weight:400; font-size:11px; color:#aeb4c0;}
  .fc-steps{display:flex; gap:6px;}
  .fc-mile{display:flex; flex-direction:column; align-items:center;}
  .fc-mile .pin{width:26px; height:26px; border-radius:6px; border:2px solid #4a505c; color:#7a818f; display:flex; align-items:center; justify-content:center; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:13px; transition:.2s;}
  .fc-mile.done .pin{background:var(--green); border-color:var(--green); color:#fff;}
  .fc-mile.now .pin{background:var(--amber); border-color:var(--amber); color:var(--asphalt); box-shadow:0 0 0 3px rgba(242,169,0,.3);}
  .fc-body{padding:22px 20px 16px; min-height:340px;}
  .fc-q{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:23px; line-height:1.1; margin:0 0 4px;}
  .fc-hint{font-size:13px; color:var(--muted); margin:0 0 18px;}
  .fc-opt{width:100%; text-align:left; border:1.5px solid var(--line); background:var(--paper); border-radius:12px; padding:14px 16px; margin-bottom:10px; transition:.12s; display:flex; align-items:center; gap:13px;}
  .fc-opt:hover{border-color:var(--green); background:var(--green-soft);}
  .fc-opt.sel{border-color:var(--green); background:var(--green-soft); box-shadow:0 0 0 3px rgba(31,122,77,.12);}
  .fc-opt .oc{width:34px; height:34px; border-radius:8px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-family:'Roboto Mono',monospace; font-weight:600; font-size:12px; background:var(--asphalt); color:#fff;}
  .fc-opt .otxt{flex:1; min-width:0;}
  .fc-opt .on-nm{font-weight:600; font-size:15px;} .fc-opt .on-sub{font-size:12px; color:var(--muted); margin-top:1px;}
  .fc-opt .otick{width:22px; height:22px; border-radius:50%; border:2px solid var(--line); flex-shrink:0; display:flex; align-items:center; justify-content:center; color:transparent; font-size:13px;}
  .fc-opt.sel .otick{background:var(--green); border-color:var(--green); color:#fff;}
  .fc-rowedit{display:flex; align-items:center; gap:10px; padding:11px 0; border-bottom:1px solid var(--line-soft);}
  .fc-rowedit .rn{flex:1; font-size:14px; font-weight:500;}
  .fc-rowedit .rn small{display:block; color:var(--blue); font-size:11px; font-weight:600;}
  .fc-rowedit .ri{width:78px; border:1.5px solid var(--line); border-radius:8px; padding:8px; text-align:center; font-family:'Roboto Mono',monospace; font-weight:600;}
  .fc-rowedit .ri:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .fc-rowedit .ru{font-size:11px; color:var(--muted-2); width:38px;} .fc-rowedit .ru.acc{color:var(--purple); font-weight:700;}
  .fc-loopcrumb{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--amber-line); margin-bottom:8px;}
  .fc-foot{display:flex; gap:10px; padding:14px 20px 20px; border-top:1px solid var(--line-soft); background:var(--paper-2);}
  .btn{border:none; border-radius:10px; padding:13px 18px; font-weight:700; font-size:15px; font-family:'Saira Condensed',sans-serif; letter-spacing:.02em; transition:.12s;}
  .btn-ghost{background:var(--paper); border:1.5px solid var(--line); color:var(--text-2); flex-shrink:0;} .btn-ghost:hover{border-color:var(--muted);}
  .btn-go{background:var(--green); color:#fff; flex:1;} .btn-go:hover{background:var(--green-deep);}
  .btn-amber{background:var(--amber); color:var(--asphalt);} .btn-amber:hover{background:var(--amber-line);}
  .fc-review-row{display:flex; gap:12px; padding:12px 0; border-bottom:1px solid var(--line-soft);}
  .fc-review-row .rc{font-family:'Roboto Mono',monospace; font-weight:600; font-size:11px; background:var(--asphalt); color:#fff; border-radius:5px; padding:4px 7px; height:fit-content;}
  .fc-review-row .rb{flex:1; font-size:13px;} .fc-review-row .rb .rt{font-weight:600; font-size:14px;}
  .fc-review-row .rb .rd{color:var(--muted); margin-top:3px; line-height:1.5;} .fc-review-row .rb .rd b{color:var(--text-2); font-weight:600;} .fc-review-row .rb .rd .accb{color:var(--purple); font-weight:700;}
  .modal-overlay{position:fixed; inset:0; background:rgba(27,30,36,.55); z-index:1200; display:none; align-items:center; justify-content:center; padding:20px;}
  .modal-overlay.on{display:flex; animation:fade .15s;}
  .modal{background:var(--paper); border-radius:14px; width:100%; max-width:440px; max-height:86vh; display:flex; flex-direction:column; box-shadow:var(--shadow-lg); overflow:hidden;}
  .modal-h{padding:16px 20px; border-bottom:1px solid var(--line-soft);}
  .modal-h .mt{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:20px; line-height:1.05;}
  .modal-h .ms{font-size:12.5px; color:var(--muted); margin-top:3px;}
  .modal-list{overflow:auto; padding:8px 12px; flex:1;}
  .pick{display:flex; align-items:center; gap:11px; padding:10px; border-radius:9px; border:1.5px solid transparent; cursor:pointer;}
  .pick:hover{background:var(--rail);} .pick.on{background:var(--green-soft); border-color:#bfe0cf;}
  .pick .pck{width:20px; height:20px; border-radius:6px; border:2px solid var(--line); flex-shrink:0; display:flex; align-items:center; justify-content:center; color:transparent; font-size:12px;}
  .pick.on .pck{background:var(--green); border-color:var(--green); color:#fff;}
  .pick .pnm{flex:1; font-size:14px; font-weight:500; min-width:0;} .pick .pnm small{display:block; color:var(--muted-2); font-weight:400; font-size:11.5px;}
  .pick .pin{width:70px; border:1.5px solid var(--line); border-radius:8px; padding:7px; text-align:center; font-family:'Roboto Mono',monospace; font-weight:600; flex-shrink:0;}
  .pick .pin:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .pick .pu{font-size:11px; color:var(--muted-2); width:36px; flex-shrink:0;} .pick .pu.acc{color:var(--purple); font-weight:700; text-transform:uppercase;}
  .modal-f{padding:13px 20px; border-top:1px solid var(--line-soft); display:flex; gap:10px; background:var(--paper-2);}
  .modal-allnote{font-size:12px; color:var(--muted); padding:6px 12px 2px;}
  .totbar{position:fixed; left:0; right:0; bottom:0; z-index:40; background:rgba(27,30,36,.97); color:#fff; border-top:3px solid var(--amber);}
  .totbar-in{max-width:1280px; margin:0 auto; padding:11px 22px; display:flex; align-items:center; gap:24px; flex-wrap:wrap;}
  .tot{display:flex; flex-direction:column;}
  .tot .v{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:21px; line-height:1;} .tot .v small{font-size:12px; color:var(--amber); font-weight:600;}
  .tot .k{font-size:10.5px; text-transform:uppercase; letter-spacing:.08em; color:#9aa0ac; margin-top:3px;}
  .totbar .spacer{flex:1;}
  .submitbtn{background:var(--amber); color:var(--asphalt); border:none; border-radius:9px; padding:11px 22px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px;}
  .submitbtn:hover{background:var(--paper);}
  .draftnote{font-size:11.5px; color:#9aa0ac;}

  /* === INVENTORY === */
  .inv-head{display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin:18px 0 4px;}
  .inv-head .ttl{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:27px; line-height:1;}
  .inv-head .sub{font-size:13px; color:var(--muted); margin-top:5px;}
  .inv-head .sub b{color:var(--green-deep);}
  .inv-toolbar{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:14px 0;}
  .search{display:flex; align-items:center; gap:8px; background:var(--paper); border:1.5px solid var(--line); border-radius:9px; padding:8px 12px; min-width:220px;}
  .search input{border:none; outline:none; flex:1; font-size:14px; background:none;}
  .search .mag{color:var(--muted-2);}
  .filt{display:flex; gap:6px; align-items:center; flex-wrap:wrap;}
  .filt .lbl{font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); font-weight:700; margin-right:2px;}
  .fchip{border:1.5px solid var(--line); background:var(--paper); border-radius:20px; padding:6px 12px; font-size:12.5px; font-weight:600; color:var(--text-2);}
  .fchip.on{border-color:var(--asphalt); background:var(--asphalt); color:#fff;}
  .invcount{margin-left:auto; font-size:12.5px; color:var(--muted); font-family:'Roboto Mono';}

  .inv-grid{display:grid; grid-template-columns:1fr 440px; gap:16px; align-items:start;}
  @media(max-width:1040px){.inv-grid{grid-template-columns:1fr;}}
  .tablewrap{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:auto; max-height:calc(100vh - 160px);}
  table.inv-tbl{border-collapse:collapse; width:100%; font-size:12.5px; white-space:nowrap;}
  table.inv-tbl thead th{position:sticky; top:0; background:var(--asphalt); color:#fff; font-family:'Saira Condensed',sans-serif; font-weight:600; font-size:12.5px; letter-spacing:.02em; padding:9px 11px; text-align:left; border-right:1px solid #000; z-index:2;}
  table.inv-tbl tbody td{padding:8px 11px; border-bottom:1px solid var(--line-soft); border-right:1px solid var(--line-soft); color:var(--text-2);}
  table.inv-tbl tbody tr{cursor:pointer; transition:background .1s;}
  table.inv-tbl tbody tr:hover{background:var(--amber-soft);}
  table.inv-tbl tbody tr.sel{background:var(--green-soft);}
  table.inv-tbl tbody tr.sel td{border-color:#bfe0cf;}
  table.inv-tbl tbody tr.hidden{display:none;}
  .td-name{font-weight:700; color:var(--ink) !important; font-family:'Roboto Mono'; font-size:12px;}
  .td-id{font-family:'Roboto Mono'; color:var(--blue) !important; font-weight:600;}
  .stat-dot{display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align:middle; flex-shrink:0;}
  .stat-dot.sd-active{background:var(--green);}
  .stat-dot.sd-inactive{background:#94a3b8;}
  .stat-dot.sd-removed{background:#ef4444;}
  .stat-dot.sd-other{background:#d97706;}
  .loc-tag{font-size:10.5px; font-weight:700; padding:2px 7px; border-radius:5px; text-transform:uppercase; letter-spacing:.03em;}
  .loc-Right{background:var(--blue-soft); color:var(--blue);}
  .loc-Median{background:var(--amber-soft); color:#9a6a00;}
  .rail-tag{font-size:11px; font-weight:600;}

  /* ── Column customizer popover ─────────────────────────────────────── */
  #col-popover{position:fixed;z-index:9000;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.18);padding:10px 0;min-width:220px;display:none;}
  #col-popover.open{display:block;}
  .col-pop-hdr{padding:6px 14px 8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted-2);border-bottom:1px solid var(--line-soft);}
  .col-pop-list{max-height:320px;overflow:auto;padding:4px 0;}
  .col-pop-row{display:flex;align-items:center;gap:8px;padding:7px 12px;cursor:default;transition:background .1s;user-select:none;}
  .col-pop-row:hover{background:var(--amber-soft);}
  .col-pop-row.drag-over{background:var(--green-soft);border-top:2px solid var(--green-deep);}
  .col-pop-drag{font-size:14px;color:var(--muted-2);cursor:grab;padding:0 2px;line-height:1;}
  .col-pop-drag:active{cursor:grabbing;}
  .col-pop-label{flex:1;font-size:13px;color:var(--ink);}
  .col-pop-foot{padding:8px 14px 4px;border-top:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;}
  .col-pop-reset{font-size:12px;color:var(--blue);cursor:pointer;background:none;border:none;padding:0;}
  .col-pop-reset:hover{text-decoration:underline;}
  .btn-col-cust{font-family:'Saira Condensed';font-weight:700;font-size:13px;border:1.5px solid var(--line);background:var(--paper);border-radius:8px;padding:6px 12px;cursor:pointer;display:flex;align-items:center;gap:5px;color:var(--muted-2);}
  .btn-col-cust:hover{border-color:var(--ink);color:var(--ink);}

  /* Sort indicator on single click */
  th.sortable-th:not([data-sortable="off"])::after{content:'\A0\2195';font-size:10px;opacity:.35;}
  th.sortable-th.sorted-asc::after{content:'\A0\25B2';opacity:.9;}
  th.sortable-th.sorted-desc::after{content:'\A0\25BC';opacity:.9;}

  .map-col{position:sticky; top:14px;}
  #invmap,#signmap{height:380px; border-radius:var(--radius); border:1px solid var(--line); box-shadow:var(--shadow); background:#dfe3e8; z-index:1;}
  /* Contain Leaflet's internal z-indexes (panes go up to 1000) inside the map
     box so maps can never overlay the sticky header, dropdown menus, or modal
     dialogs. z-index:0 on the positioned container creates a stacking context. */
  .leaflet-container{font-family:'Public Sans',sans-serif; z-index:0;}
  .maptip{font-size:11.5px; color:var(--muted); margin:8px 2px 0; display:flex; align-items:center; gap:8px;}
  .legend-line{display:inline-block; width:22px; height:4px; border-radius:2px; vertical-align:middle;}
  .detail{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); margin-top:12px; overflow:hidden;}
  .detail-h{background:linear-gradient(180deg,#fff,var(--paper-2)); padding:13px 16px; border-bottom:1px solid var(--line-soft); display:flex; align-items:center; gap:11px;}
  .detail-h .dnm{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:19px; line-height:1;}
  .detail-h .did{font-family:'Roboto Mono'; font-size:11px; color:var(--blue); font-weight:600; margin-top:2px;}
  .detail-h .dlen{margin-left:auto; text-align:right;}
  .detail-h .dlen .v{font-family:'Saira Condensed'; font-weight:700; font-size:20px; color:var(--green-deep); line-height:1;}
  .detail-h .dlen .k{font-size:10px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2);}
  .detail-body{padding:6px 16px 14px;}
  .drow{display:flex; justify-content:space-between; gap:12px; padding:7px 0; border-bottom:1px solid var(--line-soft); font-size:13px;}
  .drow:last-child{border-bottom:none;}
  .drow .dk{color:var(--muted); flex-shrink:0;}
  .drow .dv{font-weight:600; text-align:right; color:var(--text-2);}
  .detail-actions{padding:0 16px 16px; display:flex; gap:9px; flex-wrap:wrap;}
  .da-btn{flex:1; min-width:120px; border:none; border-radius:9px; padding:11px 8px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:13.5px; letter-spacing:.02em;}
  .da-prim{background:var(--green); color:#fff;} .da-prim:hover{background:var(--green-deep);}
  .da-sec{background:var(--paper); border:1.5px solid var(--line); color:var(--text-2);} .da-sec:hover{border-color:var(--muted);}
  .detail-empty{padding:40px 20px; text-align:center; color:var(--muted); font-size:13px;}
  .detail-empty .be{font-size:30px; margin-bottom:8px; opacity:.4;}


  /* ══════════════════════════════════════════════════════════════════════════
     PAYSHEET
     ══════════════════════════════════════════════════════════════════════════ */
  .pay-wrap{display:flex;flex-direction:column;gap:0;height:calc(100vh - 110px);overflow:hidden;}
  .pay-toolbar{display:flex;align-items:center;gap:10px;padding:10px 0 12px;flex-shrink:0;flex-wrap:wrap;}
  .pay-period-sel{font-family:'Saira Condensed';font-weight:700;font-size:15px;padding:8px 14px;border:1.5px solid var(--line);border-radius:9px;background:var(--paper);cursor:pointer;min-width:240px;}
  .pay-vtabs{display:flex;gap:4px;flex-shrink:0;}
  .pay-vtab{font-family:'Saira Condensed';font-weight:700;font-size:15px;padding:8px 18px;border-radius:8px;border:1.5px solid var(--line);background:var(--paper);color:var(--muted);cursor:pointer;transition:.1s;}
  .pay-vtab.on{background:var(--asphalt);color:#fff;border-color:var(--asphalt);}
  .pay-body{flex:1;overflow:auto;}
  .pay-loading{padding:40px;text-align:center;color:var(--muted);font-size:14px;}

  /* ── Detail view ── */
  .pay-emp-card{border:1.5px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:14px;}
  .pay-emp-hdr{display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--asphalt-2);color:#fff;cursor:pointer;user-select:none;}
  .pay-emp-hdr:hover{filter:brightness(1.1);}
  .pay-emp-name{font-family:'Saira Condensed';font-weight:800;font-size:17px;flex:1;}
  .pay-emp-no{font-family:'Roboto Mono';font-size:11px;opacity:.7;}
  .pay-emp-title{font-size:12px;opacity:.65;}
  .pay-emp-totals{display:flex;gap:16px;font-size:12px;}
  .pay-emp-tot{display:flex;flex-direction:column;align-items:flex-end;}
  .pay-emp-tot .tv{font-family:'Roboto Mono';font-weight:700;font-size:13px;}
  .pay-emp-tot .tk{font-size:10px;opacity:.7;text-transform:uppercase;letter-spacing:.04em;}
  .pay-emp-tot.ot-val .tv{color:#fbbf24;}
  .pay-emp-body{display:none;}
  .pay-emp-body.open{display:block;}

  .pay-week-hdr{display:flex;align-items:center;gap:10px;padding:7px 16px;background:var(--rail);border-bottom:1px solid var(--line);}
  .pay-week-label{font-family:'Saira Condensed';font-weight:700;font-size:14px;color:var(--ink);flex:1;}
  .pay-week-sub{font-size:12px;color:var(--muted);font-family:'Roboto Mono';}

  .pay-day-block{border-bottom:1px solid var(--line-soft);}
  .pay-day-hdr{display:flex;align-items:center;gap:0;padding:5px 16px 3px;background:var(--paper-2);}
  .pay-day-name{font-weight:700;font-size:12px;color:var(--muted-2);min-width:80px;}
  .pay-day-meta{font-size:11.5px;color:var(--muted);flex:1;}
  .pay-day-reg{font-family:'Roboto Mono';font-size:12px;color:var(--green-deep);font-weight:700;min-width:60px;text-align:right;}
  .pay-day-ot{font-family:'Roboto Mono';font-size:12px;color:#d97706;font-weight:700;min-width:52px;text-align:right;}

  .pay-act-row{display:flex;align-items:center;padding:4px 16px 4px 28px;border-bottom:1px dashed var(--line-soft);font-size:12.5px;}
  .pay-act-row:last-child{border-bottom:none;}
  .pay-act-code{font-family:'Roboto Mono';font-size:11px;color:var(--muted-2);min-width:44px;}
  .pay-act-name{flex:1;color:var(--ink);}
  .pay-act-hrs{font-family:'Roboto Mono';font-weight:700;font-size:12.5px;min-width:52px;text-align:right;}
  .pay-act-row.leave-row{background:var(--blue-soft);}
  .pay-act-row.leave-row .pay-act-name{color:var(--blue);font-style:italic;}
  .pay-act-row.leave-row .pay-act-hrs{color:var(--blue);}
  .pay-act-row.holiday-row{background:var(--amber-soft);}
  .pay-act-row.holiday-row .pay-act-name{color:#b45309;font-style:italic;}
  .pay-act-row.holiday-row .pay-act-hrs{color:#b45309;}

  .pay-week-totrow{display:flex;gap:16px;padding:7px 16px;background:var(--asphalt-2);color:#e8eaed;font-size:12px;border-top:2px solid var(--asphalt);}
  .pay-week-totrow .wtt{font-family:'Roboto Mono';font-weight:700;font-size:13px;}
  .pay-week-totrow .wtl{font-size:10px;opacity:.7;text-transform:uppercase;letter-spacing:.04em;}
  .pay-week-totrow .wti{display:flex;flex-direction:column;}
  .pay-week-totrow .wti.ot-v .wtt{color:#fbbf24;}

  .pay-emp-footer{display:flex;gap:20px;padding:9px 16px;background:var(--green-soft);border-top:2px solid var(--green-deep);font-size:12.5px;}
  .pay-emp-footer .pft{font-family:'Roboto Mono';font-weight:700;font-size:14px;color:var(--green-deep);}
  .pay-emp-footer .pfl{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2);}
  .pay-emp-footer .pfi{display:flex;flex-direction:column;}
  .pay-emp-footer .pfi.ot-v .pft{color:#d97706;}

  /* ── Summary view ── */
  .pay-sum-wrap{background:var(--paper);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
  table.pay-sum-tbl{border-collapse:collapse;width:100%;font-size:13px;}
  table.pay-sum-tbl thead th{position:sticky;top:0;background:var(--asphalt);color:#fff;font-family:'Saira Condensed';font-weight:700;font-size:13px;padding:10px 14px;text-align:left;border-right:1px solid rgba(255,255,255,.1);}
  table.pay-sum-tbl thead th.num{text-align:right;}
  table.pay-sum-tbl tbody td{padding:9px 14px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);}
  table.pay-sum-tbl tbody tr:hover{background:var(--amber-soft);}
  table.pay-sum-tbl tbody tr.zero-row td{color:var(--muted);font-style:italic;}
  table.pay-sum-tbl tbody tr.zero-row td:first-child::after{content:' — no hours';font-size:11px;color:#ef4444;margin-left:6px;}
  .sum-num{font-family:'Roboto Mono';font-weight:700;text-align:right;}
  .sum-num.ot-v{color:#d97706;}
  .sum-num.zero{color:var(--muted);font-weight:400;}
  .pay-sum-footer{display:flex;gap:24px;padding:10px 16px;background:var(--asphalt-2);color:#e8eaed;}
  .pay-sum-footer .psft{font-family:'Roboto Mono';font-weight:700;font-size:14px;}
  .pay-sum-footer .psfl{font-size:10px;text-transform:uppercase;letter-spacing:.04em;opacity:.7;}
  .pay-sum-footer .psfi{display:flex;flex-direction:column;}
  .pay-sum-footer .psfi.ot-v .psft{color:#fbbf24;}

  /* ── Holiday admin ── */
  .hol-grid{display:grid;grid-template-columns:1fr 360px;gap:16px;align-items:start;}
  .hol-form{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:18px;}
  .hol-form h3{font-family:'Saira Condensed';font-weight:800;font-size:17px;margin:0 0 14px;}
  .hol-post-bar{background:var(--amber-soft);border:1.5px solid #d97706;border-radius:10px;padding:14px 16px;margin-top:14px;}
  .hol-post-bar h4{font-family:'Saira Condensed';font-weight:700;margin:0 0 10px;font-size:15px;color:#92400e;}

  @media(max-width:760px){
    .fa-sections{grid-template-columns:1fr;}
    .fa-acc{margin-left:0;} .fa-cardhead{flex-wrap:wrap;} .tot.hide-sm{display:none;}
  }

  /* === NEW INSPECTION PAGE === */
  .insp-page{display:flex; flex-direction:column; height:calc(100dvh - var(--chrome-b,102px)); /* --chrome-b = measured bottom of sticky chrome (JS) */}
  .insp-topbar{background:var(--paper); border-bottom:1px solid var(--line); padding:10px 20px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; flex-shrink:0;}
  .insp-topbar .tbl{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); flex-shrink:0;}
  .itype{display:inline-flex; align-items:center; gap:8px; border:1.5px solid var(--line); background:var(--paper); border-radius:9px; padding:8px 14px; font-size:13px; font-weight:600; color:var(--text-2); transition:.12s; cursor:pointer;}
  .itype .ct{font-size:11px; font-family:'Roboto Mono'; color:var(--muted-2);}
  .itype.on{border-color:var(--asphalt); background:var(--asphalt); color:#fff;}
  .itype.on .ct{color:var(--amber);}
  .itype .dot{width:8px; height:8px; border-radius:50%; flex-shrink:0;}
  .insp-body{display:grid; grid-template-columns:300px 1fr; flex:1; min-height:0; overflow:hidden;}
  @media(max-width:860px){.insp-body{grid-template-columns:1fr;}}
  .insp-list-col{display:flex; flex-direction:column; border-right:1px solid var(--line); background:var(--paper); overflow:hidden;}
  .insp-list-search{padding:10px 12px; border-bottom:1px solid var(--line-soft); flex-shrink:0;}
  .insp-list-search .search{width:100%; margin:0;}
  .insp-list-inner{overflow:auto; flex:1;}
  .irow{display:grid; grid-template-columns:90px 1fr; gap:0; border-bottom:1px solid var(--line-soft); cursor:pointer; transition:background .1s;}
  .irow:hover{background:var(--amber-soft);}
  .irow.sel{background:var(--green-soft);}
  .irow .ir-id{padding:10px 10px; font-family:'Roboto Mono'; font-size:12px; font-weight:600; color:var(--ink); border-right:1px solid var(--line-soft); display:flex; align-items:center;}
  .irow .ir-info{padding:10px 10px; font-size:12px; color:var(--text-2); display:flex; flex-direction:column; justify-content:center; overflow:hidden;}
  .irow .ir-info .ir-main{font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .irow .ir-info .ir-sub{color:var(--muted-2); font-size:11px; margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .irow .ir-dot{width:7px; height:7px; border-radius:50%; flex-shrink:0; margin-right:5px; display:inline-block; vertical-align:middle;}
  .insp-list-empty{padding:28px 16px; text-align:center; color:var(--muted); font-size:13px;}
  .insp-list-header{padding:8px 10px; background:var(--rail); border-bottom:1px solid var(--line-soft); display:grid; grid-template-columns:90px 1fr; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); flex-shrink:0;}
  .insp-list-header span{border-right:1px solid var(--line-soft); padding-right:4px;}
  .insp-map-col{display:flex; flex-direction:column; overflow:hidden;}
  #newInspMap{flex:1; z-index:1;}
  .imap-tip{padding:7px 14px; background:var(--asphalt-2); color:#aeb4c0; font-size:11.5px; display:flex; align-items:center; gap:10px; flex-shrink:0;}
  .imap-tip .start-btn{background:var(--amber); color:var(--asphalt); border:none; border-radius:7px; padding:6px 14px; font-family:'Saira Condensed'; font-weight:700; font-size:13px; margin-left:auto;}
  .imap-tip .start-btn:disabled{opacity:.4; cursor:default;}

  /* work history modal */
  .wh-overlay{position:fixed; inset:0; background:rgba(27,30,36,.55); z-index:1200; display:none; align-items:center; justify-content:center; padding:18px;}
  .wh-overlay.on{display:flex; animation:fade .15s;}
  .wh-modal{background:var(--paper); border-radius:14px; width:100%; max-width:560px; max-height:88vh; display:flex; flex-direction:column; box-shadow:var(--shadow-lg); overflow:hidden;}
  .wh-h{background:var(--asphalt); color:#fff; padding:14px 20px; display:flex; align-items:center; gap:12px;}
  .wh-h .wi{width:36px; height:36px; border-radius:8px; background:var(--blue); display:flex; align-items:center; justify-content:center; font-size:16px; flex-shrink:0;}
  .wh-h .wt{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:18px;}
  .wh-h .ws{font-size:11px; color:#aeb4c0; margin-top:2px;}
  .wh-body{overflow:auto; flex:1; padding:0;}
  .wh-empty{padding:40px 20px; text-align:center; color:var(--muted); font-size:13px;}
  .wh-record{border-bottom:1px solid var(--line-soft); padding:13px 20px;}
  .wh-record:last-child{border-bottom:none;}
  .wh-rec-head{display:flex; align-items:center; gap:10px; margin-bottom:7px; flex-wrap:wrap;}
  .wh-date{font-family:'Roboto Mono'; font-size:12px; font-weight:600; color:var(--muted);}
  .wh-act{font-family:'Saira Condensed'; font-weight:700; font-size:16px; color:var(--ink);}
  .wh-code{font-family:'Roboto Mono'; font-size:11px; background:var(--asphalt); color:#fff; border-radius:5px; padding:3px 6px;}
  .wh-acc{margin-left:auto; font-family:'Saira Condensed'; font-weight:700; font-size:16px; color:var(--purple);}
  .wh-details{display:flex; gap:16px; flex-wrap:wrap; font-size:12.5px; color:var(--text-2);}
  .wh-detail .dk{color:var(--muted-2); margin-right:3px;}
  .wh-detail .dv{font-weight:600;}
  .wh-notes{margin-top:6px; font-size:12px; color:var(--muted); font-style:italic;}
  .wh-f{padding:13px 20px; border-top:1px solid var(--line-soft); background:var(--paper-2);}
  /* sign class color chips/dots */
  .cls-Guide{background:var(--green);} .cls-Warning{background:var(--amber-line);} .cls-Regulatory{background:var(--blue);}
  .cls-Emergency{background:var(--red);} .cls-Recreational{background:var(--purple);}
  .cls-tag{font-size:11px; font-weight:700;}

  /* inspection modal */
  .insp-overlay{position:fixed; inset:0; background:rgba(27,30,36,.55); z-index:1200; display:none; align-items:center; justify-content:center; padding:18px;}
  .insp-overlay.on{display:flex; animation:fade .15s;}
  .insp{background:var(--paper); border-radius:18px; width:100%; max-width:460px; max-height:90vh; display:flex; flex-direction:column; box-shadow:var(--shadow-lg); overflow:hidden;}
  .insp-h{background:var(--asphalt); color:#fff; padding:15px 20px; display:flex; align-items:center; gap:12px;}
  .insp-h .ic{width:38px; height:38px; border-radius:9px; background:var(--amber); color:var(--asphalt); display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0;}
  .insp-h .it{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:19px; line-height:1.05;}
  .insp-h .is{font-size:12px; color:#aeb4c0; margin-top:2px;}
  .insp-form-body{overflow:auto; padding:16px 20px; flex:1; display:block;}
  .insp-q{margin-bottom:15px;}
  .insp-q .ql{font-size:13px; font-weight:600; color:var(--text-2); margin-bottom:7px; display:flex; align-items:center; gap:7px;}
  .insp-q .ql .qn{width:20px; height:20px; border-radius:5px; background:var(--asphalt); color:#fff; font-family:'Roboto Mono'; font-size:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0;}
  .seg{display:flex; gap:7px;}
  .seg button{flex:1; border:1.5px solid var(--line); background:var(--paper); border-radius:9px; padding:10px 6px; font-size:13px; font-weight:600; color:var(--text-2); transition:.12s;}
  .seg button:hover{border-color:var(--muted);}
  .seg button.on-good{border-color:var(--green); background:var(--green-soft); color:var(--green-deep);}
  .seg button.on-fair{border-color:var(--amber-line); background:var(--amber-soft); color:#9a6a00;}
  .seg button.on-poor{border-color:var(--red); background:var(--red-soft); color:var(--red);}
  .seg button.on-imm{border-color:#7a1610; background:#7a1610; color:#fff;}
  .insp-input{width:100%; border:1.5px solid var(--line); border-radius:9px; padding:10px 12px; font-size:14px;}
  .insp-input:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  textarea.insp-input{resize:vertical; min-height:62px; font-family:inherit;}
  .insp-overall{background:var(--green-soft); border:1px solid #bfe0cf; border-radius:10px; padding:11px 14px; margin-bottom:14px; display:flex; align-items:center; gap:10px; font-size:13px;}
  .insp-overall .ov-v{margin-left:auto; font-family:'Saira Condensed'; font-weight:700; font-size:18px;}
  .insp-overall.warn{background:var(--amber-soft); border-color:#e6cf99;}
  .insp-overall.bad{background:var(--red-soft); border-color:#e6b3ad;}
  .insp-f{padding:13px 20px; border-top:1px solid var(--line-soft); display:flex; flex-direction:column; gap:10px; background:var(--paper-2);}
  .insp-f-btns{display:flex; gap:10px;}
  .insp-warn-banner{border-radius:9px; padding:10px 14px; font-size:12.5px; line-height:1.5; display:flex; align-items:flex-start; gap:9px;}
  .insp-warn-banner.warn-orange{background:var(--amber-soft); border:1px solid #e6cf99; color:#7a5200;}
  .insp-warn-banner.warn-red{background:var(--red-soft); border:1px solid #f0bdb6; color:#8a2a1f;}
  .insp-warn-banner .iwb-ic{font-size:16px; flex-shrink:0;}
  .btn-go.btn-warn-orange{background:#e08a00;} .btn-go.btn-warn-orange:hover{background:#c87800;}
  .btn-go.btn-warn-red{background:var(--red);} .btn-go.btn-warn-red:hover{background:#a82a1f;}
  .btn-go:disabled{background:#d8dadf; color:#9aa0ac; cursor:not-allowed;}
  .insp-top-field{margin-bottom:15px;}
  .insp-top-field .ql{display:flex; align-items:center; gap:8px; font-weight:700; font-size:13.5px; margin-bottom:7px; color:var(--ink);}
  .insp-photo-section{margin-top:18px; padding-top:16px; border-top:1px solid var(--line-soft);}

  /* generic sortable table headers — used on every inventory-style table */
  th.sortable-th{cursor:pointer; user-select:none; position:relative;}
  th.sortable-th:hover{background:var(--green) !important; color:#fff !important; box-shadow:inset 0 0 0 2px #fff;}
  .sort-ind{margin-left:4px; font-size:10px; opacity:.85;}
  .insp-meta{font-size:11px; color:var(--muted); padding:2px 2px 10px;}

  /* nav badge */
  .div-btn{position:relative;}
  .div-btn-badge{position:absolute; top:-6px; right:-6px; margin-left:0; z-index:2;}
  .nav-badge{display:inline-flex; align-items:center; justify-content:center; min-width:17px; height:17px; padding:0 4px; background:var(--red); color:#fff; border-radius:20px; font-size:10px; font-weight:700; font-family:'Roboto Mono',monospace; margin-left:5px; animation:pulse 1.8s infinite;}
  @keyframes pulse{0%,100%{opacity:1}50%{opacity:.65}}

  /* ── REPAIR ORDERS page ── */
  .ro-page{max-width:1280px; margin:0 auto; padding:16px 22px 120px;}
  .ro-topbar{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px;}
  .ro-topbar .pg-ttl{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:28px; line-height:1; flex:1;}
  .btn-new-ro{background:var(--green); color:#fff; border:none; border-radius:9px; padding:11px 20px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px; display:flex; align-items:center; gap:7px;}
  .btn-new-ro:hover{background:var(--green-deep);}
  .btn-pm-due{position:relative; background:var(--paper); border:1.5px solid var(--line); color:var(--text-2); border-radius:9px; padding:11px 18px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:15px; display:flex; align-items:center; gap:7px;}
  .btn-pm-due:hover{border-color:var(--amber-line); background:var(--amber-soft);}
  .btn-pm-due .bpb{position:absolute; top:-7px; right:-7px; background:var(--red); color:#fff; border-radius:20px; font-size:10px; font-weight:700; font-family:'Roboto Mono'; padding:1px 6px; min-width:20px; text-align:center;}
  .ro-filters{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; align-items:center;}
  .ro-tab{border:1.5px solid var(--line); background:var(--paper); border-radius:8px; padding:7px 14px; font-size:13px; font-weight:600; color:var(--text-2); transition:.12s;}
  .ro-tab:hover{border-color:var(--muted);}
  .ro-tab.on{border-color:var(--asphalt); background:var(--asphalt); color:#fff;}
  .ro-tab .tct{font-family:'Roboto Mono'; font-size:10px; opacity:.7; margin-left:4px;}
  .ro-search{display:flex; align-items:center; gap:8px; background:var(--paper); border:1.5px solid var(--line); border-radius:9px; padding:7px 12px; margin-left:auto;}
  .ro-search input{border:none; outline:none; font-size:13px; background:none; width:180px;}
  .ro-list{display:flex; flex-direction:column; gap:0; background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden;}
  .ro-list-hd{display:grid; grid-template-columns:90px 160px 1fr 80px 100px 80px 70px; gap:0; background:var(--asphalt); color:#fff; padding:10px 16px; font-family:'Saira Condensed',sans-serif; font-weight:600; font-size:13px; letter-spacing:.02em;}
  .ro-row{display:grid; grid-template-columns:90px 160px 1fr 80px 100px 80px 70px; gap:0; padding:13px 16px; border-bottom:1px solid var(--line-soft); cursor:pointer; align-items:center; transition:background .1s;}
  .ro-row:hover{background:var(--rail);}
  .ro-row.open-detail{background:var(--amber-soft);}
  .ro-row:last-child{border-bottom:none;}
  .ro-num{font-family:'Roboto Mono'; font-size:12px; font-weight:600; color:var(--blue);}
  .ro-unit{font-weight:600; font-size:13px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .ro-unit small{display:block; font-weight:400; font-size:11px; color:var(--muted-2);}
  .ro-desc{font-size:13px; color:var(--text-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding:0 10px;}
  .ro-pri{font-size:11px; font-weight:700; border-radius:5px; padding:3px 8px; text-align:center;}
  .pri-Emergency{background:var(--red-soft); color:var(--red);}
  .pri-Urgent{background:var(--amber-soft); color:#9a6a00;}
  .pri-Routine{background:var(--green-soft); color:var(--green-deep);}
  .ro-stat{font-size:11px; font-weight:700; border-radius:6px; padding:4px 9px; text-align:center; display:inline-block;}
  .stat-Open{background:var(--blue-soft); color:var(--blue);}
  .stat-InProgress{background:var(--amber-soft); color:#9a6a00;}
  .stat-PendingParts{background:var(--purple-soft); color:var(--purple);}
  .stat-Complete{background:var(--green-soft); color:var(--green-deep);}
  .stat-Closed{background:var(--rail); color:var(--muted);}
  .ro-age{font-family:'Roboto Mono'; font-size:12px; color:var(--muted); text-align:right;}
  .ro-age.old{color:var(--red); font-weight:600;}
  .ro-acts{font-family:'Roboto Mono'; font-size:12px; color:var(--muted-2); text-align:center;}
  /* RO detail panel */
  .ro-detail{background:var(--rail); border-top:2px solid var(--amber); padding:18px 20px; display:none;}
  .ro-detail.on{display:block;}
  .rod-head{display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap; margin-bottom:14px;}
  .rod-info .ri-ttl{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:20px; margin:0;}
  .rod-info .ri-meta{font-size:12px; color:var(--muted); margin-top:3px;}
  .rod-actions{margin-left:auto; display:flex; gap:8px; flex-wrap:wrap;}
  .rod-act-btn{border:1.5px solid var(--line); background:var(--paper); border-radius:8px; padding:8px 14px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:13px; color:var(--text-2);}
  .rod-act-btn.prim{background:var(--green); border-color:var(--green); color:#fff;}
  .rod-act-btn:hover{opacity:.85;}
  .activities-list{display:flex; flex-direction:column; gap:12px;}
  .act-card{background:var(--paper); border:1px solid var(--line); border-radius:9px; overflow:hidden;}
  .act-card-h{background:linear-gradient(180deg,var(--paper),var(--paper-2)); padding:11px 15px; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line-soft);} /* v0.7.154: #fff hardcoded in the gradient glared in dark mode */
  .act-card-h .acn{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px;}
  .act-card-h .acode{font-family:'Roboto Mono'; font-size:11px; background:var(--asphalt); color:#fff; border-radius:5px; padding:3px 7px;}
  .act-card-h .atot{margin-left:auto; font-size:12px; color:var(--muted); font-family:'Roboto Mono';}
  .act-card-body{display:grid; grid-template-columns:1fr 1fr; gap:0;}
  .act-sec{padding:11px 15px; border-right:1px solid var(--line-soft);}
  .act-sec:last-child{border-right:none;}
  .act-sec .ath{font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); margin-bottom:7px;}
  .act-li{display:flex; align-items:center; gap:8px; font-size:12.5px; padding:4px 0; border-bottom:1px solid var(--line-soft);}
  .act-li:last-of-type{border-bottom:none;}
  .act-li .aln{flex:1; color:var(--text-2);}
  .act-li .alv{font-family:'Roboto Mono'; font-size:12px; font-weight:600; color:var(--ink);}
  .act-add{font-size:12px; font-weight:600; color:var(--green-deep); background:none; border:1px dashed #bfe0cf; border-radius:6px; padding:5px 10px; width:100%; text-align:left; margin-top:6px;}
  .act-add:hover{background:var(--green-soft);}
  .act-del{background:none;border:none;color:var(--muted-2);font-size:13px;cursor:pointer;padding:0 3px;margin-left:auto;flex-shrink:0;}
  .act-del:hover{color:var(--red);}
  /* system table data tab */
  .sys-tabs{display:flex;gap:0;background:var(--paper);border-bottom:2px solid var(--line);margin-bottom:16px;}
  .sys-tab{border:none;background:none;padding:10px 18px;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;}
  .sys-tab.on{color:var(--ink);border-bottom-color:var(--amber);}
  .sys-data-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
  .sys-data-bar .sd-ct{font-size:12px;font-family:'Roboto Mono';color:var(--muted);margin-left:auto;}
  .btn-add-row{background:var(--green);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;}
  .btn-add-row:hover{background:var(--green-deep);}
  .btn-import-data{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;}
  .btn-import-data:hover{background:#1d4f7a;}

  /* ── IMPORT MODAL ── */
  /* ── LOGIN SCREEN ─────────────────────────────────────── */
  #login-screen{position:fixed;inset:0;background-color:var(--asphalt);
    background-image:linear-gradient(rgba(27,30,36,.72), rgba(27,30,36,.9)), var(--hdr-scene,none);
    background-size:cover;background-position:var(--hdr-scene-pos, center bottom);z-index:9000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;}
  .login-card{width:100%;max-width:400px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:40px 36px;box-shadow:0 24px 64px rgba(0,0,0,.5);}
  .login-shield{font-family:'Saira Condensed',sans-serif;font-weight:900;font-size:32px;color:#fff;background:var(--amber);border-radius:12px;width:56px;height:56px;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;}
  .login-title{font-family:'Saira Condensed',sans-serif;font-weight:800;font-size:20px;color:#fff;text-align:center;letter-spacing:.03em;margin-bottom:4px;}
  .login-sub{font-size:12px;color:#7a8296;text-align:center;margin-bottom:28px;}
  .login-inp{width:100%;box-sizing:border-box;background:rgba(255,255,255,.07);border:1.5px solid rgba(255,255,255,.12);border-radius:10px;padding:13px 15px;font-size:14px;color:#fff;font-family:inherit;margin-bottom:12px;transition:.15s;}
  .login-inp:focus{outline:none;border-color:var(--amber);background:rgba(255,255,255,.1);}
  .login-inp::placeholder{color:#5a6278;}
  .login-btn{width:100%;background:var(--green);color:#fff;border:none;border-radius:10px;padding:14px;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:18px;cursor:pointer;transition:.15s;margin-top:4px;}
  .login-btn:hover:not(:disabled){background:#1a8a45;filter:brightness(1.1);}
  .login-btn:disabled{opacity:.6;cursor:not-allowed;}
  .login-err{margin-top:14px;background:rgba(220,53,69,.15);border:1px solid rgba(220,53,69,.3);border-radius:8px;padding:10px 14px;font-size:13px;color:#f08090;text-align:center;display:none;}
  .login-footer{margin-top:32px;font-size:11.5px;color:#4a5268;text-align:center;}
  /* ── CHANGE PASSWORD MODAL (post-login) ─── */
  #change-pw-screen{position:fixed;inset:0;background:rgba(27,30,36,.85);z-index:8999;display:none;align-items:center;justify-content:center;padding:24px;}
  .change-pw-card{background:var(--paper);border-radius:16px;padding:36px 32px;width:100%;max-width:420px;box-shadow:0 12px 40px rgba(0,0,0,.3);}
  .change-pw-card h2{font-family:'Saira Condensed',sans-serif;font-size:22px;font-weight:700;margin:0 0 6px;}
  .change-pw-card p{font-size:13.5px;color:var(--muted);margin:0 0 22px;line-height:1.5;}
  .change-pw-rules{font-size:12px;color:var(--muted-2);margin-top:8px;}

  .mat-row-inactive{background:var(--rail);}
  .mat-row-inactive:hover{background:var(--concrete)!important;}

  /* ── Approval nav dot ─────────────────────────────────────────────── */
  .appr-nav-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:6px;vertical-align:middle;background:transparent;transition:background .3s;}
  .appr-nav-dot.dot-red{background:#ef4444;}
  .appr-nav-dot.dot-yellow{background:#f59e0b;}
  .appr-nav-dot.dot-green{background:#22c55e;}

  /* ── Approval page layout ────────────────────────────────────────── */
  .appr-wrap{display:grid;grid-template-columns:240px 1fr;gap:16px;height:calc(100vh - 120px);overflow:hidden;}
  .appr-cal-panel{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper);}
  .appr-cal-hdr{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--asphalt-2);color:#fff;}
  .appr-cal-hdr span{font-family:'Saira Condensed';font-weight:700;font-size:15px;}
  .appr-cal-hdr button{background:none;border:none;color:#fff;cursor:pointer;font-size:15px;padding:2px 6px;border-radius:4px;}
  .appr-cal-hdr button:hover{background:rgba(255,255,255,.15);}
  .appr-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;padding:8px;flex:1;}
  .appr-cal-dow{font-size:10px;font-weight:700;text-align:center;color:var(--muted-2);padding:4px 0;}
  .appr-day{position:relative;display:flex;align-items:center;justify-content:center;height:30px;border-radius:6px;cursor:pointer;font-size:12.5px;transition:.1s;}
  .appr-day:hover{background:var(--amber-soft);}
  .appr-day.selected{background:var(--asphalt);color:#fff;}
  .appr-day.today{font-weight:700;color:var(--amber-text);}
  .appr-day.other-month{color:var(--line);}
  .appr-day .appr-dd{position:absolute;bottom:2px;right:4px;width:6px;height:6px;border-radius:50%;}
  .appr-day .appr-dd.red{background:#ef4444;}
  .appr-day .appr-dd.green{background:#22c55e;}
  .appr-day .appr-dd.yellow{background:#f59e0b;}

  /* ── Approval main panel ─────────────────────────────────────────── */
  .appr-main{display:flex;flex-direction:column;overflow:hidden;}
  .appr-vtabs{display:flex;gap:4px;padding:0 0 10px;flex-shrink:0;}
  .appr-vtab{font-family:'Saira Condensed';font-weight:700;font-size:15px;padding:8px 18px;border-radius:8px;border:1.5px solid var(--line);background:var(--paper);color:var(--muted);cursor:pointer;transition:.1s;}
  .appr-vtab.on{background:var(--asphalt);color:#fff;border-color:var(--asphalt);}
  .appr-view{display:none;flex:1;overflow:auto;}
  .appr-view.on{display:flex;flex-direction:column;gap:10px;}
  /* Crew tabs within crew view */
  .appr-crew-tabs{display:flex;gap:6px;flex-wrap:wrap;flex-shrink:0;}
  .appr-crew-tab{font-size:13px;font-weight:600;padding:7px 14px;border-radius:8px;border:1.5px solid var(--line);background:var(--paper);cursor:pointer;transition:.1s;position:relative;}
  .appr-crew-tab:hover{border-color:var(--amber);}
  .appr-crew-tab.on{background:var(--asphalt);color:#fff;border-color:var(--asphalt);}
  .appr-crew-tab.has-pending::after{content:'';position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:#ef4444;}
  .appr-crew-tab.all-approved::after{content:'';position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:#22c55e;}

  /* ── Report card ─────────────────────────────────────────────────── */
  .appr-report-card{border:1.5px solid var(--line);border-radius:12px;overflow:hidden;}
  .appr-report-hdr{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 18px;background:var(--asphalt-2);color:#fff;}
  .appr-report-title{font-family:'Saira Condensed';font-weight:800;font-size:19px;}
  .appr-report-meta{font-size:12px;color:#9aa0ac;margin-top:3px;}
  .appr-report-status-approved{background:rgba(34,197,94,.15);border:1px solid #22c55e;color:#22c55e;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:700;}
  .appr-report-status-pending{background:rgba(245,158,11,.15);border:1px solid #f59e0b;color:#f59e0b;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:700;}
  .appr-totals{display:flex;gap:16px;padding:10px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
  .appr-total-item{font-size:12.5px;color:var(--muted);}
  .appr-total-item strong{color:var(--ink);font-size:14px;}
  .appr-approve-bar{display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--rail);border-bottom:1px solid var(--line);}
  .btn-approve{font-family:'Saira Condensed';font-weight:700;font-size:16px;background:var(--green-deep);color:#fff;border:none;border-radius:8px;padding:10px 22px;cursor:pointer;transition:.15s;}
  .btn-approve:hover:not(:disabled){filter:brightness(1.1);}
  .btn-approve:disabled{opacity:.5;cursor:not-allowed;}
  .btn-edit-report{font-family:'Saira Condensed';font-weight:700;font-size:14px;background:var(--paper);color:var(--ink);border:1.5px solid var(--line);border-radius:8px;padding:9px 18px;cursor:pointer;}
  .btn-edit-report:hover{border-color:var(--amber);}

  /* ── Activity blocks (approval view) ─────────────────────────────── */
  .appr-act-block{border-bottom:1px solid var(--line-soft);padding:12px 18px;}
  .appr-act-code{font-family:'Saira Condensed';font-size:13px;font-weight:700;color:var(--muted-2);}
  .appr-act-name{font-family:'Saira Condensed';font-size:17px;font-weight:700;margin-bottom:8px;}
  .appr-act-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;}
  .appr-act-col h5{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);margin:0 0 6px;}
  .appr-act-row{font-size:12.5px;padding:3px 0;display:flex;justify-content:space-between;border-bottom:1px solid var(--line-soft);}
  .appr-act-row:last-child{border:none;}
  .appr-asset-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
  .appr-asset-chip{font-size:12px;background:var(--asphalt-2);color:#e8eaed;border-radius:20px;padding:3px 10px;}

  /* ── Inspection Schedule ─────────────────────────────────────────── */
  .sched-badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 10px;border-radius:12px;white-space:nowrap;}
  .sched-overdue{background:var(--red-soft);color:#dc2626;}
  .sched-due{background:var(--amber-soft);color:#92400e;}
  .sched-next_year{background:var(--blue-soft);color:var(--blue);}
  .sched-upcoming{background:var(--green-soft);color:var(--green-deep);}
  .sched-no_record{background:var(--rail);color:var(--muted-2);}
  .sched-nav-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-left:5px;vertical-align:middle;}
  .sched-dot-alert{background:#dc2626;} .sched-dot-warn{background:#d97706;} .sched-dot-ok{background:var(--green);}

  /* ── RO description field & Complete RO ─────────────────────────── */
  .ro-desc-field{width:100%;border:1.5px solid var(--line-soft);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit;resize:none;min-height:52px;max-height:100px;color:var(--ink);background:var(--paper);margin-top:8px;transition:border-color .15s;box-sizing:border-box;}
  .ro-desc-field:focus{border-color:var(--asphalt);background:var(--paper);outline:none;}
  .ro-desc-field[readonly]{background:var(--rail);color:var(--muted);cursor:default;}
  .nro-unit-card{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--line-soft);transition:background .1s;}
  .nro-unit-card:hover{background:var(--amber-soft);}
  .nro-unit-card.selected{background:var(--green-soft);}
  .nro-unit-card:last-child{border-bottom:none;}
  .nro-unit-id{font-family:'Roboto Mono';font-weight:700;font-size:12.5px;color:var(--ink);min-width:60px;}
  .nro-unit-desc{flex:1;font-size:12.5px;color:var(--ink);}
  .nro-unit-meta{font-size:11px;color:var(--muted);white-space:nowrap;}
  .ro-pick-row{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--line-soft);transition:background .1s;}
  .ro-pick-row:hover{background:var(--amber-soft);}
  .ro-pick-row.selected{background:var(--green-soft);}
  .ro-pick-row:last-child{border-bottom:none;}
  .ro-pick-name{flex:1;font-size:13px;color:var(--ink);font-weight:600;}
  .ro-pick-sub{font-size:11.5px;color:var(--muted);}
  .eqd-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:3200;display:flex;align-items:center;justify-content:center;padding:20px;}
  .eqd-panel{background:var(--paper);width:100%;max-width:780px;max-height:86vh;border-radius:16px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 18px 60px rgba(0,0,0,.35);}
  .eqd-head{padding:16px 20px 0;border-bottom:1px solid var(--line);flex-shrink:0;}
  .eqd-title{font-family:'Saira Condensed';font-weight:800;font-size:20px;color:var(--ink);}
  .eqd-sub{font-size:13px;color:var(--muted);margin-bottom:10px;}
  .eqd-tabs{display:flex;gap:0;}
  .eqd-tab{padding:10px 18px;font-family:'Saira Condensed';font-weight:700;font-size:14px;border:none;background:none;cursor:pointer;color:var(--muted-2);border-bottom:2px solid transparent;transition:.15s;}
  .eqd-tab.on{color:var(--green-deep);border-bottom-color:var(--green-deep);}
  /* PROVENANCE TAGS. Three categories, and the middle one is the trap: a
     figure computed from OUR data divided by SOMEBODY ELSE'S assumption reads
     as a measurement unless it is marked. "9.2 mechanics" is our hours over a
     published productivity benchmark, not something we measured. */
  .prov{display:inline-block;font-family:'Roboto Mono',monospace;font-size:9.5px;
        font-weight:700;letter-spacing:.03em;padding:1px 5px;border-radius:3px;
        vertical-align:middle;margin-left:5px;white-space:nowrap;}
  .prov-ours{background:rgba(63,185,80,.16);color:var(--green-deep);
             border:1px solid rgba(63,185,80,.35);}
  .prov-mixed{background:rgba(255,176,32,.14);color:var(--amber);
              border:1px solid rgba(255,176,32,.35);}
  .prov-pub{background:rgba(255,255,255,.06);color:var(--muted-2);
            border:1px solid var(--line);}
  /* In a table header the tag needs its own line — inline it collided with
     the label and read as "UnitsOURS". */
  th .prov{display:block;margin-left:0;width:fit-content;text-transform:lowercase;
           font-weight:600;}
  /* On a phone a centred 780px card with 20px of padding is a cramped modal,
     not a usable form — and a mechanic completes a condition assessment on a
     phone in the bay. Full bleed below 760px. This also improves the unit
     detail panel, which uses the same classes. */
  @media(max-width:760px){
    .eqd-overlay{padding:0;align-items:stretch;}
    .eqd-panel{max-width:none;max-height:none;height:100%;border-radius:0;}
  }
  .eqd-body{flex:1;overflow:auto;padding:16px 20px;}


  /* ── Mobile Report ───────────────────────────────────────────────── */
  .mb-page{position:fixed;inset:0;background:var(--rail);z-index:2500;display:flex;flex-direction:column;overflow:hidden;}
  .mb-header{background:var(--asphalt);color:#fff;padding:14px 18px 12px;flex-shrink:0;}
  .mb-header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
  .mb-title{font-family:'Saira Condensed';font-weight:800;font-size:20px;}
  .mb-close{background:rgba(255,255,255,.15);border:none;color:#fff;border-radius:8px;padding:6px 12px;cursor:pointer;font-size:13px;font-weight:600;}
  .mb-progress{display:flex;gap:4px;align-items:center;}
  .mb-pip{width:24px;height:4px;border-radius:2px;background:rgba(255,255,255,.25);transition:background .2s;}
  .mb-pip.done{background:#6fcf97;} .mb-pip.active{background:var(--paper);}
  .mb-step-label{font-size:12px;color:rgba(255,255,255,.7);margin-top:6px;}
  .mb-body{flex:1;overflow-y:auto;padding:16px 14px 8px;-webkit-overflow-scrolling:touch;}
  .mb-section-title{font-family:'Saira Condensed';font-weight:800;font-size:18px;color:var(--ink);margin:0 0 4px;}
  .mb-section-hint{font-size:13px;color:var(--muted);margin:0 0 14px;line-height:1.4;}
  .mb-card{background:var(--paper);border-radius:12px;padding:14px 16px;margin-bottom:10px;display:flex;align-items:center;gap:12px;cursor:pointer;border:2px solid transparent;transition:border-color .15s,background .15s;min-height:60px;}
  .mb-card.selected{border-color:var(--green-deep);background:var(--green-soft);}
  .mb-card-avatar{width:42px;height:42px;border-radius:50%;background:var(--asphalt-2);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Saira Condensed';font-weight:800;font-size:17px;flex-shrink:0;}
  .mb-card.selected .mb-card-avatar{background:var(--green-deep);}
  .mb-card-body{flex:1;min-width:0;}
  .mb-card-name{font-weight:700;font-size:15px;color:var(--ink);}
  .mb-card-sub{font-size:12px;color:var(--muted);}
  .mb-card-check{font-size:22px;color:var(--green-deep);opacity:0;transition:opacity .15s;flex-shrink:0;}
  .mb-card.selected .mb-card-check{opacity:1;}
  .mb-act-code{font-family:'Roboto Mono';font-weight:700;font-size:14px;color:var(--ink);background:var(--rail);border-radius:6px;padding:2px 8px;flex-shrink:0;}
  .mb-hours-card{background:var(--paper);border-radius:12px;padding:16px;margin-bottom:10px;}
  .mb-hours-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft);}
  .mb-hours-row:last-child{border:none;}
  .mb-hours-name{flex:1;font-weight:600;font-size:14px;}
  .mb-hours-inp{width:72px;border:1.5px solid var(--line);border-radius:8px;padding:9px 10px;font-family:'Roboto Mono';font-weight:700;font-size:16px;text-align:center;background:var(--paper);}
  .mb-hours-unit{font-size:12px;color:var(--muted);width:20px;}
  .mb-add-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--paper);border:2px dashed var(--line);border-radius:12px;padding:14px;cursor:pointer;color:var(--muted-2);font-size:14px;font-weight:600;width:100%;margin-bottom:10px;box-sizing:border-box;}
  .mb-asset-card{background:var(--paper);border-radius:12px;padding:14px 16px;margin-bottom:10px;border:1.5px solid var(--line-soft);}
  .mb-inp-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-2);display:block;margin-bottom:4px;}
  .mb-inp{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px;background:var(--paper);font-family:inherit;box-sizing:border-box;}
  .mb-inp:focus{border-color:var(--asphalt);background:var(--paper);outline:none;}
  .mb-del-btn{background:none;border:none;color:var(--muted-2);font-size:20px;cursor:pointer;padding:4px;flex-shrink:0;line-height:1;}
  .mb-footer{background:var(--paper);border-top:1px solid var(--line);padding:12px 14px;display:flex;gap:10px;flex-shrink:0;padding-bottom:max(12px,env(safe-area-inset-bottom));}
  .mb-btn-back{flex:0 0 auto;border:1.5px solid var(--line);background:var(--paper);border-radius:12px;padding:14px 20px;font-family:'Saira Condensed';font-weight:700;font-size:15px;cursor:pointer;color:var(--muted-2);}
  .mb-btn-next{flex:1;background:var(--green-deep);border:none;border-radius:12px;padding:14px;font-family:'Saira Condensed';font-weight:800;font-size:16px;color:#fff;cursor:pointer;}
  .mb-btn-next:disabled{opacity:.45;pointer-events:none;}
  .mb-review-card{background:var(--paper);border-radius:12px;padding:14px 16px;margin-bottom:10px;}
  .mb-review-act{font-family:'Saira Condensed';font-weight:800;font-size:16px;color:var(--ink);margin-bottom:8px;}
  .mb-review-row{display:flex;justify-content:space-between;padding:4px 0;font-size:13px;border-bottom:1px solid var(--line-soft);}
  .mb-review-row:last-child{border:none;}
  .mb-date-inp{border:1.5px solid var(--line);border-radius:8px;padding:10px 14px;font-size:15px;font-family:'Roboto Mono';font-weight:600;background:var(--paper);width:100%;box-sizing:border-box;}

  /* ── Fuel Import ─────────────────────────────────────────────────── */
  .fuel-dropzone{border:2px dashed var(--line);border-radius:12px;padding:36px 24px;text-align:center;cursor:pointer;transition:.2s;background:var(--rail);}
  .fuel-dropzone:hover,.fuel-dropzone.dragover{border-color:var(--asphalt);background:var(--amber-soft);}
  .fuel-dropzone-icon{font-size:36px;margin-bottom:8px;opacity:.4;}
  .fuel-dropzone-lbl{font-family:'Saira Condensed';font-weight:700;font-size:16px;color:var(--ink);}
  .fuel-dropzone-sub{font-size:12.5px;color:var(--muted);margin-top:4px;}
  .fuel-summary-bar{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 10px;}
  .fuel-stat{background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:10px 16px;text-align:center;min-width:80px;}
  .fuel-stat .fsv{font-family:'Saira Condensed';font-weight:800;font-size:22px;line-height:1;}
  .fuel-stat .fsl{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);margin-top:2px;}
  .fuel-stat.fs-err{border-color:var(--red);background:var(--red-soft);} .fuel-stat.fs-err .fsv{color:#dc2626;}
  .fuel-stat.fs-warn{border-color:var(--amber-line);background:var(--amber-faint);} .fuel-stat.fs-warn .fsv{color:#d97706;}
  .fuel-stat.fs-ok{border-color:#bbf7d0;background:var(--green-soft);} .fuel-stat.fs-ok .fsv{color:var(--green-deep);}
  .fuel-filter-bar{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap;align-items:center;}
  table.fuel-tbl{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap;}
  table.fuel-tbl thead th{position:sticky;top:0;background:var(--asphalt);color:#fff;font-family:'Saira Condensed';font-weight:600;font-size:12px;padding:8px 10px;text-align:left;border-right:1px solid #000;z-index:2;}
  table.fuel-tbl tbody td{padding:6px 10px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);vertical-align:top;}
  .fuel-row-ok{} 
  .fuel-row-warn td{background:var(--amber-faint);}
  .fuel-row-err td{background:var(--red-soft);}
  .fuel-row-notsys td{background:var(--rail);color:var(--muted);}
  .fuel-row-dup td{background:var(--rail);color:var(--muted-2);text-decoration:line-through;}
  .fuel-prod-unl{font-weight:700;color:var(--blue);}
  .fuel-prod-dsl{font-weight:700;color:#92400e;}
  .fuel-badge{display:inline-block;font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap;}
  .fb-match{background:var(--green-soft);color:var(--green-deep);}
  .fb-notsys{background:#e2e8f0;color:#475569;}
  .fb-dup{background:#e2e8f0;color:#94a3b8;}
  .fb-err{background:var(--red-soft);color:#dc2626;}
  .fb-warn{background:var(--amber-soft);color:#92400e;}
  .fuel-meter-cell{min-width:110px;}
  .fuel-meter-edit{display:flex;flex-direction:column;gap:4px;}
  .fuel-meter-inp{width:90px;border:1.5px solid var(--amber);border-radius:6px;padding:3px 6px;font-family:'Roboto Mono';font-size:12px;}
  .fuel-meter-hint{font-size:10.5px;color:var(--muted);line-height:1.4;}
  .fuel-use-est{font-size:10.5px;color:var(--blue);background:none;border:none;cursor:pointer;padding:0;text-decoration:underline;}
  .fuel-flag-panel{background:var(--amber-faint);border:1.5px solid var(--amber-line);border-radius:10px;padding:14px 18px;margin-bottom:12px;}
  .fuel-flag-panel h4{font-family:'Saira Condensed';font-weight:800;font-size:16px;margin:0 0 10px;color:#92400e;}
  .fuel-flag-row{display:grid;grid-template-columns:80px 70px 1fr auto;gap:8px;align-items:start;padding:8px 0;border-bottom:1px solid #fde68a;}
  .fuel-flag-row:last-child{border:none;}
  .fuel-flag-equip{font-family:'Roboto Mono';font-weight:700;font-size:12.5px;color:var(--ink);}
  .fuel-flag-detail{font-size:12px;color:var(--muted);line-height:1.5;}
  .fuel-commit-bar{position:sticky;bottom:0;background:var(--paper);border-top:1px solid var(--line);padding:12px 18px;display:flex;align-items:center;gap:12px;margin-top:12px;border-radius:0 0 var(--radius) var(--radius);}

  /* ── Fuel Import ─────────────────────────────────────────────────── */
  .appr-act-block{position:relative;}
  .appr-act-approved-badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--green-deep);background:var(--green-soft);border-radius:20px;padding:3px 10px;margin-bottom:6px;}
  .btn-approve-act{font-family:'Saira Condensed';font-weight:700;font-size:13px;background:transparent;color:var(--green-deep);border:1.5px solid var(--green-deep);border-radius:7px;padding:6px 14px;cursor:pointer;transition:.15s;white-space:nowrap;}
  .btn-approve-act:hover:not(:disabled){background:var(--green-deep);color:#fff;}
  .btn-approve-act:disabled{opacity:.45;cursor:not-allowed;}
  .appr-act-footer{display:flex;align-items:center;justify-content:flex-end;padding-top:10px;margin-top:8px;border-top:1px dashed var(--line-soft);}
  .appr-act-block.act-approved{background:var(--green-soft);border-left:3px solid var(--green-deep);}

  /* Asset accomplishment rows (replace chips) */
  .appr-asset-row{display:flex;align-items:baseline;justify-content:space-between;padding:3px 0;font-size:12.5px;border-bottom:1px solid var(--line-soft);}
  .appr-asset-row:last-child{border:none;}
  .appr-asset-name{flex:1;color:var(--ink);}
  .appr-asset-route{font-size:11px;color:var(--muted);margin-left:6px;}
  .appr-asset-acc{font-family:'Roboto Mono';font-weight:700;font-size:12.5px;color:var(--ink);margin-left:12px;white-space:nowrap;}

  /* Partial-approval progress bar */
  .appr-prog-bar-wrap{padding:8px 18px;background:var(--rail);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;}
  .appr-prog-bar{flex:1;height:6px;background:var(--line-soft);border-radius:3px;overflow:hidden;}
  .appr-prog-fill{height:100%;background:var(--green-deep);border-radius:3px;transition:width .3s;}
  .appr-prog-label{font-size:11.5px;color:var(--muted);white-space:nowrap;}

  /* ── Weekly summary ──────────────────────────────────────────────── */
  .appr-sum-section{margin-bottom:20px;}
  .appr-sum-head{font-family:'Saira Condensed';font-weight:800;font-size:17px;padding:8px 14px;background:var(--asphalt-2);color:#fff;border-radius:8px 8px 0 0;}
  .appr-sum-row{display:flex;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line-soft);gap:10px;font-size:13px;cursor:default;}
  .appr-sum-row:hover{background:var(--amber-soft);}
  .appr-sum-name{flex:1;font-weight:500;}
  .appr-sum-num{font-family:'Roboto Mono';font-size:13px;font-weight:700;min-width:60px;text-align:right;}
  .appr-sum-num.approved{color:var(--green-deep);}
  .appr-sum-num.pending{color:#ef4444;cursor:pointer;text-decoration:underline;}
  .appr-sum-num.pending:hover{opacity:.8;}

  /* Material Categories admin */
  .matcat-item{padding:10px 14px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;justify-content:space-between;transition:.1s;}
  .matcat-item.sel,.matcat-item:hover{background:var(--amber-soft);}
  .matcat-item.sel{border-left:3px solid var(--amber);}

  /* ── Toast notifications ───────────────────────────────────────────── */
  #toast-container{position:fixed;bottom:22px;right:22px;z-index:9990;display:flex;flex-direction:column;gap:8px;pointer-events:none;}
  .toast{background:var(--asphalt);color:#e8eaed;padding:12px 18px;border-radius:10px;font-size:13.5px;max-width:360px;box-shadow:0 4px 24px rgba(0,0,0,.4);opacity:0;transform:translateY(6px);transition:opacity .2s,transform .2s;pointer-events:none;border-left:3px solid rgba(255,255,255,.15);}
  .toast.show{opacity:1;transform:translateY(0);}
  .toast.t-error{border-left-color:var(--red);background:#2a1215;}
  .toast.t-warn{border-left-color:#d97706;background:#231a0a;}
  .toast.t-ok{border-left-color:var(--green-deep);background:#0a1f14;}

  .imp-overlay{position:fixed;inset:0;background:rgba(27,30,36,.6);z-index:1200;display:none;align-items:center;justify-content:center;padding:18px;}

  /* ── ASSET PHOTOS (generic widget) ── */
  .photo-widget{margin-top:14px;}
  .photo-widget-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
  .photo-widget-h .pwt{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);}
  .photo-main{position:relative;border-radius:10px;overflow:hidden;background:var(--rail);border:1px solid var(--line);}
  .photo-main img{width:100%;display:block;max-height:260px;object-fit:cover;cursor:pointer;}
  .photo-main .pm-del{position:absolute;top:8px;right:8px;background:rgba(27,30,36,.65);color:#fff;border:none;border-radius:6px;width:26px;height:26px;font-size:13px;cursor:pointer;}
  .photo-main .pm-del:hover{background:var(--red);}
  .photo-strip{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap;}
  .photo-thumb{width:48px;height:48px;border-radius:7px;overflow:hidden;cursor:pointer;border:2px solid transparent;flex-shrink:0;}
  .photo-thumb.sel{border-color:var(--amber);}
  .photo-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
  .photo-empty{border:2px dashed var(--line);border-radius:10px;padding:22px 14px;text-align:center;cursor:pointer;transition:.12s;}
  .photo-empty:hover{border-color:var(--blue);background:var(--blue-soft);}
  .photo-empty .pei{font-size:24px;opacity:.4;margin-bottom:5px;}
  .photo-empty .pet{font-size:12.5px;color:var(--muted);}
  .photo-upload-btn{width:100%;border:1.5px dashed var(--line);background:var(--paper);color:var(--text-2);border-radius:8px;padding:8px;font-size:12.5px;font-weight:600;margin-top:7px;cursor:pointer;}
  .photo-upload-btn:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-soft);}
  .photo-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:1300;display:none;align-items:center;justify-content:center;padding:24px;}
  .photo-lightbox.on{display:flex;}
  .photo-lightbox img{max-width:100%;max-height:100%;border-radius:8px;}
  .photo-lightbox .plx-close{position:absolute;top:18px;right:24px;color:#fff;font-size:28px;cursor:pointer;background:none;border:none;}

  /* ── EQUIPMENT INVENTORY ── */
  .eq-status{font-size:11px;font-weight:700;padding:2px 9px;border-radius:10px;white-space:nowrap;}
  .eq-status.active{background:var(--green-soft);color:var(--green-deep);}
  .eq-status.replaced{background:var(--amber-soft);color:#9a6a00;}
  .eq-status.retired{background:var(--rail);color:var(--muted-2);}
  .eq-type-count{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--asphalt);color:#fff;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:16px;}
  .eq-type-count.has{background:var(--green-deep);}
  .eqv-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-soft);}
  .eqv-row .eqv-val{font-size:13px;font-weight:600;flex:1;}
  .eqv-row .eqv-sub{font-size:11.5px;color:var(--muted);flex-shrink:0;}
  .eqv-add-row{padding:10px 0;display:flex;gap:8px;}
  .eqv-add-inp{flex:1;border:1.5px solid var(--line);border-radius:8px;padding:8px 11px;font-size:13px;font-family:inherit;}
  .eqv-add-inp:focus{outline:none;border-color:var(--amber);}


  .mat-row{cursor:pointer; transition:background .1s;}
  .mat-row:hover td{background:var(--amber-soft);}
  .mat-row.open td{background:var(--green-soft);}
  .mat-expand-row td{background:var(--rail); padding:0 !important; white-space:normal; max-width:none; overflow:visible; text-overflow:clip;}
  .mat-expand-inner{padding:14px 18px 16px; border-bottom:2px solid #bfe0cf; display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:16px;}
  .mat-exp-sec{min-width:0;overflow-wrap:anywhere;}
  .mat-exp-sec h4{font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); margin:0 0 8px;}
  .mat-barcode{display:inline-flex; align-items:center; gap:7px; background:var(--paper); border:1px solid var(--line); border-radius:7px; padding:5px 10px; font-family:'Roboto Mono',monospace; font-size:13px; margin-bottom:5px;}
  .mat-vendor-row{font-size:12.5px; padding:5px 0; border-bottom:1px solid var(--line-soft);}
  .mat-vendor-row .mvr-name{font-weight:600;}
  .mat-vendor-row .mvr-meta{color:var(--muted); font-size:11.5px;}
  .mat-stock-badge{display:inline-block; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:17px;}
  .mat-stock-badge.low{color:var(--red);}
  .mat-stock-badge.ok{color:var(--green-deep);}
  .mat-notrack{font-size:11.5px; color:var(--muted); font-style:italic;}
  .mat-tx-btn{font-size:12px; font-weight:700; color:var(--blue); border:1px solid var(--blue-soft); background:var(--blue-soft); border-radius:6px; padding:5px 12px; cursor:pointer;}
  .mat-tx-btn:hover{background:var(--blue); color:#fff;}
  /* transaction modal rows */
  .tx-row{display:flex; align-items:flex-start; gap:10px; padding:10px 0; border-bottom:1px solid var(--line-soft); font-size:13px;}
  .tx-type{flex-shrink:0; font-weight:700; font-size:11px; text-transform:uppercase; padding:2px 8px; border-radius:10px; letter-spacing:.04em;}
  .tx-in{background:var(--green-soft); color:var(--green-deep);}
  .tx-out{background:var(--red-soft); color:var(--red);}
  .tx-adj{background:var(--amber-soft); color:#9a6a00;}
  .tx-qty{font-family:'Roboto Mono'; font-weight:700; min-width:54px; text-align:right; flex-shrink:0;}
  .tx-qty.pos{color:var(--green-deep);}
  .tx-qty.neg{color:var(--red);}
  .tx-meta{flex:1; min-width:0;}
  .tx-meta .tx-ref{font-weight:600;}
  .tx-meta .tx-date{color:var(--muted); font-size:11.5px;}
  .tx-after{font-family:'Roboto Mono'; font-size:11px; color:var(--muted-2); flex-shrink:0;}

  .cv-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;}
  .cv-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;cursor:pointer;transition:.12s;}
  .cv-card:hover{border-color:var(--amber);box-shadow:var(--shadow-lg);transform:translateY(-1px);}
  .cv-card .cvc-title{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:16px;color:var(--ink);margin-bottom:4px;}
  .cv-card .cvc-sub{font-size:12px;color:var(--muted);line-height:1.5;}
  .cv-col-row{display:grid;grid-template-columns:24px 1fr 1fr 90px;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-soft);}
  .cv-col-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--green);cursor:pointer;}
  .cv-col-meta{font-size:11.5px;color:var(--muted-2);font-family:'Roboto Mono',monospace;}
  .cv-type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px;}
  @media(max-width:700px){.cv-type-grid{grid-template-columns:1fr 1fr;}}
  .cv-type-opt{border:2px solid var(--line);border-radius:12px;padding:16px 14px;text-align:center;cursor:pointer;transition:.12s;}
  .cv-type-opt:hover{border-color:var(--muted);}
  .cv-type-opt.sel{border-color:var(--blue);background:var(--blue-soft);}
  .cv-type-opt .cti{font-size:26px;margin-bottom:8px;}
  .cv-type-opt .ctt{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;margin-bottom:4px;}
  .cv-type-opt .ctd{font-size:11px;color:var(--muted);line-height:1.4;}
  .cv-form-row{display:grid;grid-template-columns:24px 1fr 1fr 130px 70px;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-soft);}
  .cv-form-row select,.cv-form-row input{font-size:12.5px;border:1.5px solid var(--line);border-radius:6px;padding:5px 8px;}

  .imp-overlay.on{display:flex;}
  .imp-modal{background:var(--paper);border-radius:14px;width:100%;max-width:920px;max-height:92vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden;}
  .imp-head{padding:16px 24px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:14px;flex-shrink:0;}
  .imp-head .iht{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:19px;flex:1;}
  .imp-steps{display:flex;align-items:center;gap:6px;}
  .imp-step{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:#eceef1;color:var(--muted-2);}
  .imp-step.on{background:var(--blue);color:#fff;}
  .imp-step.done{background:var(--green);color:#fff;}
  .imp-step-sep{width:18px;height:2px;background:#eceef1;}
  .imp-body{overflow:auto;flex:1;padding:20px 24px;}
  .imp-foot{padding:14px 24px;border-top:1px solid var(--line-soft);display:flex;align-items:center;gap:10px;flex-shrink:0;background:var(--paper-2);}

  .imp-drop{border:2.5px dashed var(--line);border-radius:14px;padding:48px 24px;text-align:center;cursor:pointer;transition:.15s;}
  .imp-drop:hover{border-color:var(--blue);background:var(--blue-soft);}
  .imp-drop .idi{font-size:38px;opacity:.4;margin-bottom:10px;}
  .imp-drop .idt{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:18px;margin-bottom:5px;}
  .imp-drop .ids{font-size:13px;color:var(--muted);}

  .imp-map-row{display:grid;grid-template-columns:1fr 28px 1fr;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line-soft);}
  .imp-map-row-wrap{border-bottom:1px solid var(--line-soft);}
  .imp-map-row-wrap .imp-map-row{border-bottom:none;}
  .imp-lookup-row{display:flex;align-items:center;gap:8px;padding:0 0 10px 40px;}
  .imp-lookup-lbl{font-size:11.5px;color:var(--purple);font-weight:700;flex-shrink:0;}
  .imp-lookup-sel{font-size:12.5px;max-width:420px;border-color:#c39ede;background:var(--purple-soft);}
  .imp-map-col{background:var(--rail);border:1.5px solid var(--line);border-radius:8px;padding:8px 12px;font-size:13px;font-family:'Roboto Mono',monospace;}
  .imp-map-arrow{text-align:center;color:var(--muted-2);}
  .imp-map-sel{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit;background:var(--paper);}
  .imp-map-sel:focus{outline:none;border-color:var(--amber);}
  .imp-map-sel.required{border-color:var(--amber-line);background:var(--amber-soft);}
  .imp-map-sel.skip{color:var(--muted-2);font-style:italic;}
  .imp-req-note{font-size:11px;color:#9a6a00;margin-top:2px;}
  .imp-template-banner{background:var(--green-soft);border:1px solid #bfe0cf;border-radius:10px;padding:10px 14px;font-size:13px;color:var(--green-deep);margin-bottom:16px;display:flex;align-items:center;gap:8px;}

  .imp-collision-group{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;}
  .imp-collision-opt{border:2px solid var(--line);border-radius:12px;padding:14px 16px;cursor:pointer;transition:.12s;}
  .imp-collision-opt:hover{border-color:var(--muted);}
  .imp-collision-opt.sel{border-color:var(--blue);background:var(--blue-soft);}
  .imp-collision-opt .ico-h{display:flex;align-items:center;gap:10px;margin-bottom:5px;}
  .imp-collision-opt .ico-t{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:15px;}
  .imp-collision-opt .ico-d{font-size:12.5px;color:var(--muted);line-height:1.5;padding-left:28px;}
  .imp-collision-warn{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:10px;margin-left:8px;}
  .warn-safe{background:var(--green-soft);color:var(--green-deep);}
  .warn-caution{background:var(--amber-soft);color:#9a6a00;}
  .warn-danger{background:var(--red-soft);color:var(--red);}

  .imp-summary-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:18px;}
  .imp-sum-chip{flex:1;min-width:110px;border-radius:10px;padding:12px 14px;text-align:center;}
  .imp-sum-chip .isv{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:26px;line-height:1;}
  .imp-sum-chip .isk{font-size:11px;text-transform:uppercase;letter-spacing:.05em;margin-top:4px;font-weight:700;}
  .chip-insert{background:var(--green-soft);} .chip-insert .isv,.chip-insert .isk{color:var(--green-deep);}
  .chip-update{background:var(--blue-soft);} .chip-update .isv,.chip-update .isk{color:var(--blue);}
  .chip-skip{background:var(--rail);} .chip-skip .isv,.chip-skip .isk{color:var(--muted-2);}
  .chip-error{background:var(--red-soft);} .chip-error .isv,.chip-error .isk{color:var(--red);}

  .imp-coerce-box{background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:16px;}
  .imp-coerce-h{padding:10px 16px;background:var(--asphalt-2);color:#fff;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px;cursor:pointer;}
  .imp-coerce-body{max-height:200px;overflow:auto;}
  table.imp-tbl{border-collapse:collapse;width:100%;font-size:12.5px;}
  table.imp-tbl thead th{background:var(--rail);padding:7px 11px;text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-2);border-bottom:1px solid var(--line);}
  table.imp-tbl tbody td{padding:6px 11px;border-bottom:1px solid var(--line-soft);}
  .imp-errors-box{background:var(--red-soft);border:1px solid #f0bdb6;border-radius:10px;overflow:hidden;margin-bottom:16px;}
  .imp-errors-h{padding:10px 16px;background:var(--red);color:#fff;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;}
  .imp-errors-body{max-height:220px;overflow:auto;padding:4px 16px;}
  .imp-err-row{padding:7px 0;border-bottom:1px solid #f5d5d0;font-size:12.5px;}
  .imp-err-row .ier-row{font-family:'Roboto Mono';font-weight:700;color:var(--red);margin-right:8px;}
  .imp-result-banner{border-radius:12px;padding:18px 22px;text-align:center;margin-bottom:18px;}
  .imp-result-banner.ok{background:var(--green-soft);}
  .imp-result-banner.warn{background:var(--amber-soft);}
  .imp-result-banner .irbt{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:20px;}
  .sys-data-wrap{overflow:auto;max-height:520px;border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);}
  table.sys-data-tbl{border-collapse:collapse;width:100%;font-size:12.5px;white-space:nowrap;}
  table.sys-data-tbl thead th{position:sticky;top:0;background:var(--asphalt);color:#fff;padding:9px 11px;text-align:left;border-right:1px solid #000;font-family:'Saira Condensed',sans-serif;font-size:12.5px;font-weight:600;z-index:2;}
  table.sys-data-tbl tbody td{padding:8px 11px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);color:var(--text-2);max-width:220px;overflow:hidden;text-overflow:ellipsis;}
  table.sys-data-tbl tbody tr:hover td{background:var(--amber-soft);}
  .td-null{color:var(--muted-2);font-style:italic;font-size:11px;}
  .td-act{display:flex;gap:5px;align-items:center;}
  .btn-tbl-edit{background:var(--blue-soft);color:var(--blue);border:none;border-radius:5px;padding:4px 9px;font-size:11.5px;font-weight:700;cursor:pointer;font-family:'Saira Condensed',sans-serif;}
  .btn-tbl-del{background:var(--red-soft);color:var(--red);border:none;border-radius:5px;padding:4px 9px;font-size:11.5px;font-weight:700;cursor:pointer;font-family:'Saira Condensed',sans-serif;}
  .sys-pg{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px;color:var(--muted);}
  .sys-pg button{border:1.5px solid var(--line);background:var(--paper);border-radius:7px;padding:5px 12px;font-size:13px;font-weight:600;cursor:pointer;}
  .sys-pg button:hover{border-color:var(--muted);}
  .sys-pg button:disabled{opacity:.4;cursor:default;}
  /* add column panel */
  .add-col-form{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-top:4px;}
  .add-col-form h3{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:17px;margin:0 0 14px;}
  .ac-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;}
  .ac-field label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);margin-bottom:5px;}
  .ac-inp{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:9px 12px;font-size:14px;font-family:inherit;}
  .ac-inp:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px var(--amber-soft);}
  .ac-sel{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:9px 12px;font-size:14px;font-family:inherit;background:var(--paper);}
  .ac-warn{background:var(--amber-soft);border:1px solid #e6cf99;border-radius:8px;padding:10px 14px;font-size:12.5px;color:#9a6a00;margin-bottom:12px;}
  /* row edit modal dynamic form */
  .row-form{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .row-field label{display:block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);margin-bottom:4px;}
  .row-inp{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit;}
  .row-inp:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px var(--amber-soft);}
  .row-inp.pk-field{background:var(--rail);color:var(--muted);cursor:not-allowed;}
  .add-activity-row{margin-top:10px;}
  .add-act-btn{width:100%; border:2px dashed var(--line); background:var(--paper); color:var(--muted); border-radius:9px; padding:10px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:14px; transition:.12s;}
  .add-act-btn:hover{border-color:var(--amber); color:var(--amber-line); background:var(--amber-soft);}
  .ro-empty{padding:48px; text-align:center; color:var(--muted); font-size:13px;}
  .ro-empty .re-ic{font-size:32px; opacity:.25; margin-bottom:10px;}

  /* ── PM DUE page ── */
  .pm-page{max-width:1280px; margin:0 auto; padding:16px 22px 120px;}
  .pm-topbar{display:flex; align-items:center; gap:12px; margin-bottom:16px; flex-wrap:wrap;}
  .pm-topbar .pg-ttl{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:28px; line-height:1;}
  .pm-topbar .pg-sub{font-size:13px; color:var(--muted); margin-top:3px;}
  .pm-tabs{display:flex; gap:0; background:var(--paper); border:1.5px solid var(--line); border-radius:9px; overflow:hidden; flex-shrink:0;}
  .pm-tab{padding:10px 22px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:15px; border:none; background:none; color:var(--muted); display:flex; align-items:center; gap:7px;}
  .pm-tab .ptc{font-family:'Roboto Mono'; font-size:11px;}
  .pm-tab.on{background:var(--asphalt); color:#fff;}
  .pm-tab.on .ptc{color:var(--amber);}
  .pm-tab.danger{color:var(--red);}
  .pm-tab.danger.on{background:var(--red); color:#fff;}
  .pm-tbl-wrap{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:auto;}
  table.pm-tbl{border-collapse:collapse; width:100%; font-size:13px;}
  table.pm-tbl thead th{background:var(--asphalt); color:#fff; font-family:'Saira Condensed',sans-serif; font-size:13px; font-weight:600; padding:10px 13px; text-align:left; border-right:1px solid #000; white-space:nowrap; position:sticky; top:0;}
  table.pm-tbl tbody td{padding:10px 13px; border-bottom:1px solid var(--line-soft); border-right:1px solid var(--line-soft); vertical-align:middle;}
  table.pm-tbl tbody tr:hover td{background:var(--amber-soft);}
  .pm-unit{font-weight:700; color:var(--ink);}
  .pm-unit small{display:block; font-weight:400; color:var(--muted-2); font-size:11px;}
  .pm-type{font-weight:600; font-size:13px;}
  .pm-interval{font-family:'Roboto Mono'; font-size:12px; color:var(--text-2);}
  .pm-last{font-family:'Roboto Mono'; font-size:12px; color:var(--muted);}
  .pm-due-at{font-family:'Roboto Mono'; font-size:12px; font-weight:600;}
  .pm-status{font-size:11.5px; font-weight:700; border-radius:6px; padding:4px 9px; white-space:nowrap;}
  .pms-overdue{background:var(--red-soft); color:var(--red);}
  .pms-due{background:var(--amber-soft); color:#9a6a00;}
  .pms-nearly{background:var(--blue-soft); color:var(--blue);}
  .pm-action{background:var(--green); color:#fff; border:none; border-radius:7px; padding:7px 13px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:13px;}
  .pm-action:hover{background:var(--green-deep);}
  .pm-empty{padding:48px; text-align:center; color:var(--muted); font-size:13px;}

  /* ── INVENTORY SHARED ── */
  .inv-pg{max-width:1180px; margin:0 auto; padding:16px 22px 120px;}
  .inv-pg-head{display:flex; align-items:flex-end; gap:12px; flex-wrap:wrap; margin-bottom:18px;}
  .inv-pg-head .pt{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:28px; line-height:1; flex:1;}
  .inv-pg-head .ps{font-size:13px; color:var(--muted); margin-top:3px;}
  .inv-card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; margin-bottom:16px;}
  .inv-card-h{padding:13px 18px; background:var(--paper-2); border-bottom:1px solid var(--line-soft); display:flex; align-items:center; gap:10px;}
  .inv-card-h .ch{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:17px;}
  .inv-card-body{padding:14px 18px;}
  .field-row{display:flex; gap:14px; flex-wrap:wrap; margin-bottom:14px;}
  .field-group{display:flex; flex-direction:column; flex:1; min-width:160px;}
  .field-group.sm{max-width:160px; flex:0 0 160px;}
  .field-group.md{max-width:240px; flex:0 0 240px;}
  .field-group label{font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); margin-bottom:5px;}
  .field-inp{border:1.5px solid var(--line); border-radius:9px; padding:9px 12px; font-size:14px; font-family:inherit; background:var(--paper); width:100%;}
  .field-inp:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .field-sel{border:1.5px solid var(--line); border-radius:9px; padding:9px 12px; font-size:14px; font-family:inherit; background:var(--paper); width:100%; cursor:pointer;}
  .field-sel:focus{outline:none; border-color:var(--amber);}

  /* ── RECEIVE MATERIALS ── */
  .rm-lines{width:100%; overflow:auto;}
  table.rm-tbl{border-collapse:collapse; width:100%; font-size:13px; min-width:700px;}
  table.rm-tbl thead th{background:var(--asphalt-2); color:#fff; font-family:'Saira Condensed',sans-serif; font-size:13px; font-weight:600; padding:9px 12px; text-align:left; border-right:1px solid #000; white-space:nowrap;}
  table.rm-tbl tbody td{padding:7px 10px; border-bottom:1px solid var(--line-soft); border-right:1px solid var(--line-soft); vertical-align:middle;}
  .rm-item-name{font-weight:600; color:var(--ink);}
  .rm-item-name small{display:block; font-weight:400; color:var(--muted-2); font-size:11px;}
  .rm-num-inp{width:80px; border:1.5px solid var(--line); border-radius:7px; padding:7px 8px; text-align:right; font-family:'Roboto Mono',monospace; font-weight:600; font-size:13px;}
  .rm-num-inp:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .rm-ext{font-family:'Roboto Mono'; font-size:13px; font-weight:600; color:var(--green-deep); white-space:nowrap; padding:7px 12px;}
  .rm-notes-inp{width:100%; border:1.5px solid var(--line); border-radius:7px; padding:7px 9px; font-size:12.5px; font-family:inherit;}
  .rm-notes-inp:focus{outline:none; border-color:var(--amber);}
  .rm-del{background:none; border:none; color:var(--muted-2); font-size:16px; padding:4px 6px; cursor:pointer;}
  .rm-del:hover{color:var(--red);}
  .rm-add-row{padding:12px 0; display:flex; gap:10px; align-items:center;}
  .btn-add-material{display:flex; align-items:center; gap:7px; border:1.5px dashed var(--green); background:var(--green-soft); color:var(--green-deep); border-radius:9px; padding:10px 16px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:15px;}
  .btn-add-material:hover{background:var(--green); color:#fff; border-style:solid;}
  .btn-scan{display:flex; align-items:center; gap:6px; border:1.5px solid var(--line); background:var(--paper); color:var(--text-2); border-radius:9px; padding:10px 14px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:14px;}
  .btn-scan:hover{border-color:var(--blue); color:var(--blue); background:var(--blue-soft);}
  .rm-footer{display:flex; align-items:center; gap:16px; padding:14px 18px; border-top:2px solid var(--line-soft); background:var(--rail); flex-wrap:wrap;}
  .rm-total{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:22px; color:var(--green-deep);}
  .rm-total span{font-size:13px; color:var(--muted); font-family:'Public Sans'; font-weight:400; margin-right:4px;}
  .btn-post{background:var(--green); color:#fff; border:none; border-radius:10px; padding:12px 24px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:17px; margin-left:auto;}
  .btn-post:hover{background:var(--green-deep);}
  .rm-empty{padding:32px; text-align:center; color:var(--muted); font-size:13px; border-bottom:1px solid var(--line-soft);}

  /* material picker */
  .mpick-overlay{position:fixed; inset:0; background:rgba(27,30,36,.55); z-index:1200; display:none; align-items:center; justify-content:center; padding:18px; overflow-y:auto;}
  .mpick-overlay.on{display:flex; animation:fade .15s;}
  .mpick{background:var(--paper); border-radius:14px; width:100%; max-width:520px; max-height:88vh; display:flex; flex-direction:column; box-shadow:var(--shadow-lg); overflow:hidden; margin:auto;}
  .mpick-h{padding:15px 20px; border-bottom:1px solid var(--line-soft); display:flex; align-items:center; gap:10px;}
  .mpick-h .mpt{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:19px; flex:1;}
  .mpick-search{display:flex; align-items:center; gap:8px; padding:10px 16px; border-bottom:1px solid var(--line-soft); gap:8px;}
  .mpick-search .ms-inp{flex:1; border:1.5px solid var(--line); border-radius:8px; padding:9px 12px; font-size:14px; font-family:inherit;}
  .mpick-search .ms-inp:focus{outline:none; border-color:var(--amber);}
  .mpick-search .ms-scan{border:1.5px solid var(--line); background:var(--paper); border-radius:8px; padding:9px 12px; color:var(--text-2); display:flex; align-items:center; gap:6px; font-size:13px; font-weight:600; white-space:nowrap;}
  .mpick-search .ms-scan:hover{border-color:var(--blue); color:var(--blue);}
  .mpick-list{overflow:auto; flex:1;}
  .mpick-hdr{display:grid; grid-template-columns:1fr 80px 60px 80px; padding:7px 16px; background:var(--rail); border-bottom:1px solid var(--line-soft); font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2);}
  .mpi{display:grid; grid-template-columns:1fr 80px 60px 80px; align-items:center; padding:10px 16px; border-bottom:1px solid var(--line-soft); cursor:pointer; transition:background .1s;}
  .mpi:hover{background:var(--amber-soft);}
  .mpi.sel{background:var(--green-soft);}
  .mpi .mn{font-weight:600; font-size:13px; color:var(--ink);}
  .mpi .mn small{display:block; font-weight:400; color:var(--muted-2); font-size:11px;}
  .mpi .mc{font-size:11px; color:var(--muted);}
  .mpi .mu{font-family:'Roboto Mono'; font-size:12px; color:var(--text-2);}
  .mpi .moh{font-family:'Roboto Mono'; font-size:12px; font-weight:600; color:var(--green-deep); text-align:right;}
  .mpi .moh.low{color:var(--red);}
  .mpick-f{padding:13px 20px; border-top:1px solid var(--line-soft); display:flex; gap:10px; background:var(--paper-2);}
  .mpick-ct{font-size:12px; color:var(--muted); display:flex; align-items:center; margin-right:auto;}
  /* scan demo */
  .scan-demo{text-align:center; padding:28px 20px;}
  .scan-demo .sd-ic{font-size:48px; margin-bottom:10px; opacity:.6;}
  .scan-demo .sd-t{font-family:'Saira Condensed'; font-weight:700; font-size:20px; margin-bottom:6px;}
  .scan-demo .sd-s{font-size:13px; color:var(--muted); margin-bottom:20px;}
  .scan-demo .sd-btn{background:var(--amber); color:var(--asphalt); border:none; border-radius:10px; padding:12px 24px; font-family:'Saira Condensed'; font-weight:700; font-size:16px;}

  /* ── ISSUE MATERIALS ── */
  .im-head{display:flex; align-items:center; gap:12px; margin-bottom:14px; flex-wrap:wrap;}
  .im-tabs{display:flex; border:1.5px solid var(--line); border-radius:9px; overflow:hidden; background:var(--paper);}
  .im-tab{padding:9px 18px; border:none; background:none; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:14px; color:var(--muted); cursor:pointer;}
  .im-tab.on{background:var(--asphalt); color:#fff;}
  .im-split{display:grid; grid-template-columns:1fr 320px; gap:16px; align-items:start;}
  @media(max-width:960px){.im-split{grid-template-columns:1fr;}}
  .im-list-wrap{overflow:auto;}
  table.im-tbl{border-collapse:collapse; width:100%; font-size:13px; min-width:580px;}
  table.im-tbl thead th{background:var(--asphalt); color:#fff; font-family:'Saira Condensed'; font-size:13px; font-weight:600; padding:9px 12px; text-align:left; border-right:1px solid #000; white-space:nowrap; position:sticky; top:0;}
  table.im-tbl tbody td{padding:9px 12px; border-bottom:1px solid var(--line-soft); border-right:1px solid var(--line-soft); vertical-align:middle;}
  table.im-tbl tbody tr:hover td{background:var(--rail);}
  .im-mat{font-weight:600; color:var(--ink);}
  .im-mat small{display:block; font-weight:400; color:var(--muted-2); font-size:11px;}
  .im-qty{font-family:'Roboto Mono'; font-size:13px; font-weight:600;}
  .im-oh{font-family:'Roboto Mono'; font-size:13px; font-weight:600;}
  .im-oh.ok{color:var(--green-deep);}
  .im-oh.low{color:var(--red);}
  .im-oh.med{color:#9a6a00;}
  .btn-pick{background:var(--amber); color:var(--asphalt); border:none; border-radius:7px; padding:7px 12px; font-family:'Saira Condensed'; font-weight:700; font-size:13px; white-space:nowrap;}
  .btn-pick:hover{background:var(--amber-line);}
  .btn-pick.added{background:var(--green-soft); color:var(--green-deep); border:1px solid #bfe0cf;}
  .pick-panel{background:var(--asphalt); color:#fff; border-radius:var(--radius); box-shadow:var(--shadow-lg); overflow:hidden; position:sticky; top:14px;}
  .pick-panel-h{background:rgba(0,0,0,.2); padding:13px 16px; display:flex; align-items:center; gap:10px;}
  .pick-panel-h .pph{font-family:'Saira Condensed'; font-weight:700; font-size:17px;}
  .pick-panel-h .ppc{font-family:'Roboto Mono'; font-size:11px; background:var(--amber); color:var(--asphalt); border-radius:20px; padding:2px 8px; font-weight:700; margin-left:auto;}
  .pick-item{display:flex; align-items:flex-start; gap:8px; padding:10px 16px; border-bottom:1px solid rgba(255,255,255,.07); font-size:12.5px;}
  .pick-item .pi-nm{flex:1; min-width:0; color:#dde0e6;}
  .pick-item .pi-nm small{display:block; color:#9aa0ac; font-size:11px;}
  .pick-item .pi-q{font-family:'Roboto Mono'; font-weight:600; font-size:13px; color:#fff; flex-shrink:0;}
  .pick-item .pi-x{background:none; border:none; color:var(--muted); font-size:14px; cursor:pointer; padding:0 2px; flex-shrink:0;}
  .pick-item .pi-x:hover{color:#ef9a9a;}
  .pick-empty{padding:28px 16px; text-align:center; color:var(--muted); font-size:12.5px;}
  .pick-footer{padding:12px 16px; border-top:1px solid rgba(255,255,255,.1); display:flex; flex-direction:column; gap:8px;}
  .btn-finalize{background:var(--amber); color:var(--asphalt); border:none; border-radius:9px; padding:12px; font-family:'Saira Condensed'; font-weight:700; font-size:16px; width:100%;}
  .btn-finalize:hover{background:var(--paper);}
  .btn-finalize:disabled{opacity:.4; cursor:default;}

  /* ── TRANSFER MATERIALS ── */
  .tm-tabs{display:flex; gap:0; background:var(--paper); border:1.5px solid var(--line); border-radius:9px; overflow:hidden; margin-bottom:16px;}
  .tm-tab{padding:10px 22px; font-family:'Saira Condensed'; font-weight:700; font-size:15px; border:none; background:none; color:var(--muted); cursor:pointer; display:flex; align-items:center; gap:8px;}
  .tm-tab.on{background:var(--asphalt); color:#fff;}
  .tm-tab .ttc{font-family:'Roboto Mono'; font-size:11px; background:var(--amber); color:var(--asphalt); border-radius:20px; padding:1px 7px;}
  .pl-group{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:14px; overflow:hidden;}
  .pl-group-h{background:var(--asphalt-2); color:#fff; padding:12px 18px; display:flex; align-items:center; gap:12px;}
  .pl-group-h .pgh{font-family:'Saira Condensed'; font-weight:700; font-size:18px;}
  .pl-group-h .pgct{font-size:12px; color:#9aa0ac; font-family:'Roboto Mono';}
  .pl-group-h .pg-finalize{margin-left:auto; background:var(--amber); color:var(--asphalt); border:none; border-radius:7px; padding:8px 16px; font-family:'Saira Condensed'; font-weight:700; font-size:14px;}
  table.pl-tbl{border-collapse:collapse; width:100%; font-size:13px;}
  table.pl-tbl thead th{background:var(--rail); color:var(--muted-2); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; padding:8px 14px; border-right:1px solid var(--line-soft); border-bottom:1px solid var(--line); text-align:left;}
  table.pl-tbl tbody td{padding:9px 14px; border-bottom:1px solid var(--line-soft); border-right:1px solid var(--line-soft); font-size:13px;}
  .tm-new-form{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); padding:20px;}
  .tm-empty{padding:40px; text-align:center; color:var(--muted); font-size:13px;}

  /* overhead calculator */
  .oh-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
  @media(max-width:760px){.oh-grid{grid-template-columns:1fr 1fr;}}
  .oh-comp{background:var(--paper);border:1.5px solid var(--line);border-radius:10px;padding:12px 14px;}
  .oh-comp label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2);margin-bottom:6px;}
  .oh-comp .oh-inp-row{display:flex;align-items:center;gap:6px;}
  .oh-comp input{width:100%;border:1.5px solid var(--line);border-radius:7px;padding:7px 9px;font-size:14px;font-family:'Roboto Mono',monospace;text-align:right;}
  .oh-comp input:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px var(--amber-soft);}
  .oh-comp .oh-pct-sign{color:var(--muted-2);font-size:13px;}
  .oh-comp .oh-comp-amt{font-size:11.5px;color:var(--green-deep);font-family:'Roboto Mono';margin-top:5px;text-align:right;}
  .oh-result-card{background:var(--asphalt);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:22px 26px;margin-bottom:16px;}
  .oh-result-row{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;}
  .oh-res-block{text-align:center;}
  .oh-res-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#9aa0ac;margin-bottom:5px;}
  .oh-res-val{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:26px;color:#dde0e6;}
  .oh-res-final .oh-res-val{color:var(--amber);font-size:32px;}
  .oh-res-op{font-size:22px;color:var(--muted);font-weight:300;}
  .oh-result-sub{text-align:center;font-size:12.5px;color:#9aa0ac;margin-top:12px;}


  /* ── P-CARD ENTRY ── */
  .pc-import-bar{background:linear-gradient(135deg,var(--asphalt),#2e3440); border-radius:var(--radius); padding:18px 22px; margin-bottom:18px; display:flex; align-items:center; gap:16px; flex-wrap:wrap;}

  /* entry mode toggle */
  .pc-mode-tabs{display:flex;gap:0;margin-bottom:18px;border-radius:10px;overflow:hidden;border:1.5px solid var(--line);}
  .pc-mode-tab{flex:1;padding:11px 18px;background:var(--paper);border:none;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:15px;cursor:pointer;text-align:center;transition:.12s;color:var(--muted-2);border-right:1px solid var(--line);}
  .pc-mode-tab:last-child{border-right:none;}
  .pc-mode-tab.on{background:var(--asphalt);color:#fff;}
  .pc-mode-tab:hover:not(.on){background:var(--concrete);}
  /* manual-entry inputs (same layout as imported display) */
  .pc-manual-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 16px;padding:14px 18px;}
  @media(max-width:680px){.pc-manual-grid{grid-template-columns:1fr 1fr;}}
  .pc-manual-grid .pm-field label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-2);margin-bottom:5px;}
  .pc-manual-inp{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:9px 11px;font-size:13.5px;font-family:inherit;box-sizing:border-box;}
  .pc-manual-inp:focus{outline:none;border-color:var(--amber);}

  /* today's log */
  .pclog-section{margin-top:24px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;}
  .pclog-head{background:var(--asphalt-2);padding:12px 18px;display:flex;align-items:center;gap:10px;}
  .pclog-head .plt{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:16px;color:#fff;flex:1;}
  .pclog-head .plct{font-size:12px;color:#9aa0ac;}

  /* Budget Appropriations */
  .approp-year-bar{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap;}
  .approp-year-sel{font-family:'Saira Condensed',sans-serif;font-size:20px;font-weight:700;border:2px solid var(--line);border-radius:10px;padding:8px 14px;background:var(--paper);color:var(--ink);cursor:pointer;}
  .approp-year-sel:focus{outline:none;border-color:var(--amber);}
  .approp-manage-years{font-size:12px;color:var(--muted);cursor:pointer;text-decoration:underline;}
  .approp-manage-years:hover{color:var(--ink);}
  .approp-years-panel{background:var(--rail);border:1px solid var(--line);border-radius:10px;padding:14px 18px;margin-bottom:16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .approp-year-chip{display:inline-flex;align-items:center;gap:6px;background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:4px 10px 4px 14px;font-family:'Saira Condensed';font-weight:700;font-size:14px;}
  .approp-year-chip button{border:none;background:none;cursor:pointer;color:var(--muted-2);font-size:13px;padding:0 2px;line-height:1;}
  .approp-year-chip button:hover{color:var(--red);}
  .approp-cat-header{display:grid;grid-template-columns:140px 1fr 110px 180px 150px 90px;align-items:center;gap:10px;padding:10px 14px;background:var(--asphalt-2);}
  .approp-cat-title{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:15px;color:#fff;}
  .approp-col-head{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#9aa0ac;text-align:right;}
  .approp-row{display:grid;grid-template-columns:140px 1fr 110px 180px 150px 90px;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line-soft);}
  .approp-row:hover{background:var(--amber-soft);}
  .approp-acct-num{font-family:'Roboto Mono',monospace;font-weight:700;font-size:12.5px;}
  .approp-scope{font-size:11.5px;color:var(--muted-2);}
  .approp-inp{width:100%;border:1.5px solid var(--line);border-radius:7px;padding:6px 10px;font-size:13.5px;font-family:'Roboto Mono',monospace;text-align:right;box-sizing:border-box;}
  .approp-inp:focus{outline:none;border-color:var(--amber);background:var(--amber-faint);}
  .approp-prior{font-family:'Roboto Mono';font-size:13px;text-align:right;color:var(--muted);}
  .approp-pct{font-family:'Roboto Mono';font-size:12px;font-weight:700;text-align:right;}
  .approp-pct.up{color:var(--green-deep);}
  .approp-pct.dn{color:var(--muted-2);}
  .approp-pct.big{color:var(--red);}
  .approp-subtotal{display:grid;grid-template-columns:140px 1fr 110px 180px 150px 90px;align-items:center;gap:10px;padding:9px 14px;background:#eef1f5;font-weight:700;border-top:2px solid var(--line);}
  .approp-grandtotal{display:grid;grid-template-columns:140px 1fr 110px 180px 150px 90px;align-items:center;gap:10px;padding:12px 14px;background:var(--asphalt);color:#fff;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:16px;border-radius:0 0 10px 10px;margin-top:18px;}


  .ba-category-group{margin-bottom:22px;}
  .ba-cat-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--asphalt-2);border-radius:8px 8px 0 0;}
  .ba-cat-header .bcht{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:16px;color:#fff;}
  .ba-cat-header .bchd{font-size:12px;color:#9aa0ac;margin-left:4px;}
  .ba-cat-pill{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 9px;border-radius:10px;margin-left:auto;}
  .bap-operating{background:#1e4080;color:#c8d8f8;}
  .bap-rr{background:#1a5c30;color:#b8e8c8;}
  .bap-capital{background:#6a3800;color:#f8d8a0;}
  .ba-scope-divider{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-2);padding:8px 14px 4px;background:var(--rail);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);}
  .ba-acct-row{display:grid;grid-template-columns:140px 1fr 120px 90px;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line-soft);font-size:13px;cursor:pointer;transition:.1s;}
  .ba-acct-row:hover{background:var(--amber-soft);}
  .ba-acct-num{font-family:'Roboto Mono',monospace;font-weight:700;font-size:13px;color:var(--ink);}
  .ba-acct-desc{font-weight:500;}
  .ba-acct-scope{font-size:11.5px;color:var(--muted);}
  .ba-empty{padding:28px;text-align:center;color:var(--muted);font-size:13px;background:var(--rail);border:1px solid var(--line);border-top:none;border-radius:0 0 8px 8px;}
  /* Budget year amounts in modal */
  .ba-year-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-soft);}
  .ba-year-label{font-family:'Roboto Mono';font-size:13px;font-weight:700;width:60px;flex-shrink:0;}
  .pclog-empty{padding:24px;text-align:center;color:var(--muted);font-size:13px;}
  .pclog-row{display:grid;grid-template-columns:90px 1fr 1fr 100px 80px;align-items:center;gap:10px;padding:10px 18px;border-bottom:1px solid var(--line-soft);font-size:12.5px;}
  .pclog-row:hover{background:var(--amber-soft);}
  .pclog-row .plr-method{font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 7px;border-radius:8px;}
  .plr-import{background:var(--blue-soft);color:var(--blue);}
  .plr-manual{background:var(--purple-soft);color:var(--purple);}

  .pc-import-bar .pi-t{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:18px; color:#fff; line-height:1.1;}
  .pc-import-bar .pi-s{font-size:12.5px; color:#9aa0ac; margin-top:3px;}
  .btn-import{background:var(--amber); color:var(--asphalt); border:none; border-radius:9px; padding:11px 20px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:15px; display:flex; align-items:center; gap:8px; flex-shrink:0;}
  .btn-import:hover{background:var(--paper);}
  .btn-import-demo{background:rgba(255,255,255,.1); color:#c7cdd8; border:1.5px solid rgba(255,255,255,.2); border-radius:9px; padding:11px 18px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:14px; flex-shrink:0;}
  .btn-import-demo:hover{background:rgba(255,255,255,.18); color:#fff;}
  .pc-how{background:var(--asphalt-2); border:1px solid rgba(255,255,255,.08); border-radius:9px; padding:14px 18px; margin-bottom:18px; font-size:13px; color:#9aa0ac;}
  .pc-how summary{cursor:pointer; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:14px; color:#c7cdd8; letter-spacing:.02em; list-style:none; display:flex; align-items:center; gap:8px;}
  .pc-how summary::after{content:'▸'; transition:.2s; margin-left:auto;}
  .pc-how[open] summary::after{transform:rotate(90deg);}
  .pc-how .bm-code{background:#1a1d22; border:1px solid rgba(255,255,255,.1); border-radius:7px; padding:11px 14px; font-family:'Roboto Mono',monospace; font-size:11px; color:#a8c4a2; margin-top:12px; word-break:break-all; user-select:all; cursor:text;}
  .pc-how ol{padding-left:18px; margin:10px 0 0; color:#aeb4c0; line-height:1.8;}
  .pc-how ol strong{color:#c7cdd8;}
  .pc-imported-section{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; margin-bottom:16px;}
  .pc-sec-h{padding:12px 18px; border-bottom:1px solid var(--line-soft); display:flex; align-items:center; gap:10px;}
  .pc-sec-h .sh{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px;}
  .pc-sec-h .sbadge{font-size:11px; font-weight:700; padding:3px 9px; border-radius:20px;}
  .badge-imported{background:var(--green-soft); color:var(--green-deep); border:1px solid #bfe0cf;}
  .badge-manual{background:var(--amber-soft); color:#9a6a00; border:1px solid #e6cf99;}
  .pc-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:0; background:var(--line-soft);}
  .pc-grid.two-col{grid-template-columns:1fr 1fr;}
  .pc-field{background:var(--paper); padding:14px 18px;}
  .pc-field label{display:block; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); margin-bottom:5px;}
  .pc-val{font-size:14px; font-weight:600; color:var(--ink); min-height:22px;}
  .pc-val.empty{color:var(--muted-2); font-weight:400; font-style:italic;}
  .pc-val.amount{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:22px; color:var(--green-deep);}
  .imported-glow{box-shadow:inset 0 0 0 2px rgba(31,122,77,.25); background:var(--green-soft) !important;}
  .pc-detail-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:16px 18px;}
  .pc-inp-group{display:flex; flex-direction:column; gap:5px;}
  .pc-inp-group label{font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2);}
  .pc-sel{border:1.5px solid var(--line); border-radius:9px; padding:10px 12px; font-size:14px; font-family:inherit; background:var(--paper); width:100%;}
  .pc-sel:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .pc-inp{border:1.5px solid var(--line); border-radius:9px; padding:10px 12px; font-size:14px; font-family:inherit; width:100%;}
  .pc-inp:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .pc-inp.full{grid-column:1/-1;}
  .pc-asset-chips{display:flex; flex-wrap:wrap; gap:7px; margin-top:6px;}
  .pc-asset-chip{display:inline-flex; align-items:center; gap:6px; background:var(--purple-soft); border:1px solid #c39ede; border-radius:20px; padding:4px 10px; font-size:12px; font-weight:600; color:var(--purple);}
  .pc-asset-chip button{background:none; border:none; color:var(--purple); font-size:13px; padding:0; cursor:pointer; opacity:.7;}
  .pc-asset-chip button:hover{opacity:1;}
  .pc-footer{display:flex; align-items:center; gap:12px; padding:16px 18px; border-top:2px solid var(--line-soft); background:var(--rail); flex-wrap:wrap;}
  .btn-save-pc{background:var(--green); color:#fff; border:none; border-radius:10px; padding:13px 28px; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:17px;}
  .btn-save-pc:hover{background:var(--green-deep);}
  .pc-status{font-size:12.5px; color:var(--muted);}
  .import-flash{animation:importpop .6s ease;}
  @keyframes importpop{0%{background:var(--amber-soft)}100%{background:var(--green-soft)}}

  /* ── CONTRACT PURCHASE ── */
  .ct-section{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; margin-bottom:16px;}
  .ct-sec-h{padding:12px 18px; border-bottom:1px solid var(--line-soft); display:flex; align-items:center; gap:10px; background:var(--paper-2);}
  .ct-sec-h .csh{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px;}
  .ct-body{padding:16px 18px;}
  .ct-lines{overflow:auto; margin:-4px 0 4px;}
  table.ct-tbl{border-collapse:collapse; width:100%; font-size:13px; min-width:780px;}
  table.ct-tbl thead th{background:var(--asphalt-2); color:#fff; font-family:'Saira Condensed',sans-serif; font-size:12.5px; font-weight:600; padding:9px 11px; text-align:left; border-right:1px solid #000;}
  table.ct-tbl tbody td{padding:7px 9px; border-bottom:1px solid var(--line-soft); border-right:1px solid var(--line-soft); vertical-align:middle;}
  table.ct-tbl tfoot td{background:var(--rail); font-weight:700; padding:9px 11px; border-right:1px solid var(--line-soft);}
  .ct-li-inp{width:100%; border:1.5px solid var(--line); border-radius:7px; padding:7px 9px; font-size:13px; font-family:inherit;}
  .ct-li-inp:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .ct-num-inp{width:80px; border:1.5px solid var(--line); border-radius:7px; padding:7px 8px; text-align:right; font-family:'Roboto Mono',monospace; font-weight:600; font-size:13px;}
  .ct-num-inp:focus{outline:none; border-color:var(--amber); box-shadow:0 0 0 3px var(--amber-soft);}
  .ct-sel{border:1.5px solid var(--line); border-radius:7px; padding:7px 8px; font-size:12.5px; font-family:inherit; width:100%; background:var(--paper);}
  .ct-sel:focus{outline:none; border-color:var(--amber);}
  .ct-ext{font-family:'Roboto Mono'; font-size:13px; font-weight:600; color:var(--green-deep); white-space:nowrap;}
  .ct-del{background:none; border:none; color:var(--muted-2); font-size:16px; cursor:pointer; padding:2px 6px;}
  .ct-del:hover{color:var(--red);}
  .ct-add-line{width:100%; text-align:left; border:1px dashed var(--line); background:var(--paper); color:var(--muted); border-radius:7px; padding:8px 12px; font-size:13px; font-weight:600; transition:.12s;}
  .ct-add-line:hover{border-color:var(--green); color:var(--green-deep); background:var(--green-soft);}
  .ct-total-bar{display:flex; align-items:center; gap:20px; padding:13px 18px; background:var(--rail); border-top:2px solid var(--line-soft); flex-wrap:wrap;}
  .ct-total-val{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:24px; color:var(--green-deep);}
  .ct-total-label{font-size:12px; color:var(--muted); margin-bottom:2px;}
  .ct-stat-chip{font-size:12px; font-weight:700; padding:4px 10px; border-radius:20px;}
  .ctstat-draft{background:var(--rail); color:var(--muted-2);}
  .ctstat-pending{background:var(--amber-soft); color:#9a6a00;}
  .ctstat-approved{background:var(--green-soft); color:var(--green-deep);}
  .approval-trail{padding:14px 18px; display:flex; flex-direction:column; gap:8px;}
  .atrail-row{display:flex; align-items:flex-start; gap:12px; font-size:13px;}
  .atrail-dot{width:22px; height:22px; border-radius:50%; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:11px; margin-top:1px;}
  .adot-done{background:var(--green); color:#fff;}
  .adot-now{background:var(--amber); color:var(--asphalt);}
  .adot-wait{background:#e0e2e6; color:var(--muted-2);}
  .atrail-txt .at{font-weight:600;}
  .atrail-txt .as{color:var(--muted); font-size:12px; margin-top:1px;}

  /* ── FINANCE REPORTS ── */
  .fin-kpi-row{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:18px;}
  @media(max-width:900px){.fin-kpi-row{grid-template-columns:1fr 1fr;}}
  .fin-kpi{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); padding:16px 18px;}
  .fin-kpi .kv{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:26px; line-height:1; color:var(--ink);}
  .fin-kpi .kk{font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted-2); margin-top:5px; font-weight:700;}
  .fin-kpi .ks{font-size:12px; color:var(--muted); margin-top:3px;}
  .fin-tabs{display:flex; gap:0; border:1.5px solid var(--line); border-radius:9px; overflow:hidden; background:var(--paper); margin-bottom:16px; width:fit-content;}
  .fin-tab{padding:9px 20px; border:none; background:none; font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:14px; color:var(--muted); cursor:pointer;}
  .fin-tab.on{background:var(--asphalt); color:#fff;}
  .fin-panel{display:none;}
  .fin-panel.on{display:block;}
  .fin-tbl-wrap{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); overflow:auto;}
  table.fin-tbl{border-collapse:collapse; width:100%; font-size:13px;}
  table.fin-tbl thead th{background:var(--asphalt); color:#fff; font-family:'Saira Condensed',sans-serif; font-size:13px; font-weight:600; padding:10px 13px; text-align:left; border-right:1px solid #000; white-space:nowrap; position:sticky; top:0;}
  table.fin-tbl tbody td{padding:9px 13px; border-bottom:1px solid var(--line-soft); border-right:1px solid var(--line-soft); font-size:13px; vertical-align:middle;}
  table.fin-tbl tbody tr:hover td{background:var(--rail);}
  table.fin-tbl tfoot td{background:var(--asphalt-2); color:#fff; font-weight:700; padding:9px 13px; border-right:1px solid #000; font-family:'Roboto Mono'; font-size:13px;}
  .fin-amt{font-family:'Roboto Mono'; font-size:13px; font-weight:600; text-align:right;}
  .fin-amt.pos{color:var(--green-deep);}
  .fin-bar-row{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:18px;}
  @media(max-width:800px){.fin-bar-row{grid-template-columns:1fr;}}
  .fin-bar-card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); padding:16px 18px;}
  .fin-bar-card h3{font-family:'Saira Condensed',sans-serif; font-weight:700; font-size:16px; margin:0 0 14px; color:var(--ink);}
  .bar-item{margin-bottom:10px;}
  .bar-item .bi-head{display:flex; justify-content:space-between; font-size:12.5px; margin-bottom:4px;}
  .bar-item .bi-nm{font-weight:600; color:var(--text-2);}
  .bar-item .bi-val{font-family:'Roboto Mono'; font-size:12px; color:var(--muted);}
  .bar-track{background:#eceef1; border-radius:4px; height:8px; overflow:hidden;}
  .bar-fill{height:8px; border-radius:4px; transition:.4s;}
  .fin-empty{padding:40px; text-align:center; color:var(--muted); font-size:13px;}
/* ── P-Card Reconciliation ─────────────────────────────────────────────── */
.rc-tabs{display:flex;gap:6px;margin-bottom:14px;border-bottom:2px solid var(--line);padding-bottom:0}
.rc-tab{background:transparent;border:none;border-bottom:3px solid transparent;padding:8px 14px;
  font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:15px;color:var(--muted);cursor:pointer}
.rc-tab.on{color:var(--ink);border-bottom-color:var(--amber)}
.rc-pill{display:inline-block;min-width:20px;padding:1px 7px;border-radius:10px;background:var(--line);
  font-size:12px;font-family:'Roboto Mono',monospace;margin-left:4px}
.rc-tab.on .rc-pill{background:var(--amber);color:var(--asphalt)}

.rc-card{border:1px solid var(--line);border-radius:var(--radius,10px);background:var(--paper,#fff);
  margin-bottom:14px;overflow:hidden;box-shadow:var(--shadow,none)}
.rc-card-head{display:flex;gap:14px;align-items:center;padding:10px 14px;background:var(--line-soft);
  border-bottom:1px solid var(--line)}
.rc-card-head .rc-ch{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:16px}
.rc-card-head .rc-merch{color:var(--muted);font-size:13px}
.rc-card-head .rc-amt{margin-left:auto;font-family:'Roboto Mono',monospace;font-weight:600;font-size:16px}

.rc-diff{display:grid;grid-template-columns:1fr 1fr;gap:0}
.rc-side{padding:12px 16px}
.rc-side:first-child{border-right:1px dashed var(--line)}
.rc-side-t{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:13px;text-transform:uppercase;
  letter-spacing:.5px;color:var(--muted);margin-bottom:8px}
.rc-f{margin-bottom:7px;font-size:13px}
.rc-f label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted-2);margin-bottom:1px}
.rc-f-match{background:var(--green-soft);border-radius:4px;padding:2px 6px;display:inline-block}
.rc-f-warn{background:var(--amber-soft);border-radius:4px;padding:2px 6px;display:inline-block}
.rc-f-missing{background:var(--amber-soft);border:1px dashed var(--amber);border-radius:4px;
  padding:2px 8px;display:inline-block;color:var(--muted);font-style:italic}

.rc-actions{display:flex;gap:12px;align-items:center;padding:10px 14px;border-top:1px solid var(--line);
  background:var(--line-soft)}
.rc-btn-accept{background:var(--green);color:#fff;border:none;border-radius:7px;padding:7px 16px;
  font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;cursor:pointer}
.rc-btn-accept.sm{padding:4px 10px;font-size:13px}
.rc-btn-accept:disabled{opacity:.6;cursor:default}
.rc-btn-reject{background:transparent;color:var(--red);border:1px solid var(--red);border-radius:7px;
  padding:7px 14px;font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:14px;cursor:pointer;margin-left:auto}
.rc-btn-flag{background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:7px;
  padding:4px 10px;font-size:12px;cursor:pointer}
.rc-btn-flag:hover{color:var(--red);border-color:var(--red)}

.rc-alt{border-top:1px solid var(--line);padding:6px 14px;font-size:13px}
.rc-alt summary{cursor:pointer;color:var(--muted);padding:4px 0}
.rc-alt-row{display:flex;gap:14px;align-items:center;padding:6px 0;border-top:1px dashed var(--line-soft)}

.rc-map-row{display:flex;gap:14px;align-items:center;border:1px solid var(--line);border-radius:8px;
  padding:10px 14px;margin-bottom:8px;background:var(--paper,#fff)}
.rc-map-row>div:first-child{flex:1}

@media(max-width:760px){.rc-diff{grid-template-columns:1fr}.rc-side:first-child{border-right:none;border-bottom:1px dashed var(--line)}}

/* ── Map geometry picker ──────────────────────────────────────────────── */
.mp-overlay{position:fixed;inset:0;background:rgba(15,18,22,.55);z-index:4000;display:flex;align-items:center;justify-content:center}
.mp-box{background:var(--paper,#fff);border-radius:12px;width:min(940px,96vw);height:min(680px,92vh);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.mp-head{display:flex;align-items:center;gap:14px;padding:10px 14px;border-bottom:1px solid var(--line)}
.mp-title{font-family:'Saira Condensed',sans-serif;font-weight:700;font-size:17px}
.mp-modes{display:flex;gap:4px;margin-left:8px}
.mp-mode{background:transparent;border:1px solid var(--line);border-radius:7px;padding:4px 12px;font-size:13px;cursor:pointer;color:var(--muted)}
.mp-mode.on{background:var(--asphalt);color:#fff;border-color:var(--asphalt)}
.mp-x{margin-left:auto;background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted)}
#mp-map{flex:1;min-height:300px}
.mp-foot{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--line);flex-wrap:wrap}
.mp-btn{background:transparent;border:1px solid var(--line);border-radius:7px;padding:7px 12px;font-size:13px;cursor:pointer}
.mp-btn:disabled{opacity:.5}
.mp-info{font-size:12px;color:var(--muted-2);margin-left:auto;margin-right:auto}
.mp-save{background:var(--green);color:#fff;border-color:var(--green);font-weight:700;font-family:'Saira Condensed',sans-serif;font-size:15px;padding:8px 18px}
@media(max-width:640px){.mp-box{width:100vw;height:100dvh;border-radius:0}.mp-foot{gap:6px}.mp-info{width:100%;order:9;text-align:center}}

/* candidate selector rows in recon diff cards */
.rc-cands{border-top:1px solid var(--line);padding:8px 14px}
.rc-cands-t{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:4px}
.rc-cand-row{display:flex;gap:12px;align-items:center;padding:6px 8px;border-radius:6px;font-size:13px;cursor:pointer}
.rc-cand-row:hover{background:var(--line-soft)}
.rc-cand-row.on{background:var(--green-soft);outline:1px solid var(--green)}
.rc-cand-row .mono{font-family:'Roboto Mono',monospace;font-size:12px}

  /* === UTILITIES (extracted from the most-repeated inline styles) === */
  .u-lbl12{font-size:12px;color:var(--muted);}
  .u-lbl11{font-size:11px;color:var(--muted-2);}
  .u-lblblk{font-size:11px;color:var(--muted-2);display:block;margin-bottom:4px;}
  .u-mono12{font-family:'Roboto Mono',monospace;font-size:12px;}
  .u-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .u-empty{text-align:center;padding:30px;color:var(--muted);}

  /* ═══════════ DARK MODE ═══════════
     Rides the same tokens; header/nav are dark in both themes by design.
     Map markers and chart data colors are deliberately theme-constant.  */
  html[data-theme="dark"]{
    color-scheme:dark;
    --concrete:#14161a;        /* page background */
    --paper:#1e2127;           /* cards, tables, modals */
    --paper-2:#23262d;
    --rail:#202329;
    --ink:#e8eaee;
    --text-2:#c9cfd9;          /* body text on dark surfaces */
    --muted:#a3aab8;           /* 6.9:1 on paper */
    --muted-2:#8b93a2;         /* 5.2:1 on paper */
    --line:#3a3f49; --line-soft:#2c3037;
    --amber-text:#f0b429;      /* 8.6:1 on paper */
    --amber-soft:#332912;
    --amber-faint:#26221a; --amber-line:#8a6a10;
    --green:#37a06b; --green-deep:#3fae76; --green-soft:#17281e;
    --red:#e06052; --red-soft:#33201d;
    --blue:#6ea8dc; --blue-soft:#1b2836;
    --purple:#a97fd1; --purple-soft:#282133;
    --asset-tint:#22212a;      /* same faint purple lift, dark */
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 4px 16px rgba(0,0,0,.35);
    --shadow-lg:0 8px 36px rgba(0,0,0,.6);
  }
  /* Maps stay LIGHT in dark mode (user preference — the map reads as content,
     like photos). To try a dark basemap later: filter the .leaflet-tile-pane
     or swap tile URLs per theme. */
  /* photos & lightbox stay untouched; native widgets follow color-scheme */

  /* printing is always light regardless of screen theme */
  @media print{
    html[data-theme="dark"]{
      color-scheme:light;
      --concrete:#eceef1; --paper:#ffffff; --paper-2:#fbfcfd; --rail:#f4f5f7;
      --ink:#1b1e24; --text-2:#3c4250; --muted:#6a7180; --muted-2:#767d8c;
      --line:#d4d8de; --line-soft:#e6e9ed;
      --amber-text:#b57f00; --amber-soft:#fff4d6; --amber-faint:#fffaf2; --amber-line:#e6a200;
      --green:#1f7a4d; --green-deep:#155c39; --green-soft:#e4f1ea;
      --red:#c0392b; --red-soft:#fbeae8; --blue:#2b6cb0; --blue-soft:#e7f0f9;
      --purple:#7a4ca0; --purple-soft:#efe7f7;
      --asset-tint:#fcfbfe;
    }
  }

/* ── Fit-mode for dense inventory tables (opt-in: add .tbl-fit) ─────────────
   sys-data-tbl defaults to nowrap (right for arbitrary Data-Tables content);
   registry screens with long location text overflow instead of fitting.
   .tbl-fit lets text columns wrap and shrinks short numeric columns to
   content width. Column tuning is per-table via .fit-snug (nowrap, width to
   content) and .fit-wrap (allowed to wrap). */
table.tbl-fit{white-space:normal; table-layout:auto;}
table.tbl-fit thead th{white-space:nowrap; padding:8px 8px;}
table.tbl-fit tbody td{padding:7px 8px; white-space:normal;}
table.tbl-fit .fit-snug{white-space:nowrap; width:1%;}
table.tbl-fit .fit-wrap{min-width:120px; max-width:none; overflow:visible; text-overflow:clip;}
table.tbl-fit td.fit-snug{max-width:none;}

/* Culvert inventory: map + detail split stacks on narrow screens */
@media(max-width:880px){ .cu-split{flex-direction:column;} .cu-split #cu-map{flex:0 0 auto;} }

/* LOS Assessment Entry — built for field foremen and older eyes */
.lse-tbl thead th{font-size:13px;padding:10px 12px;}
.lse-tbl tbody td{font-size:16px;padding:12px 12px;}
.lse-tbl .btn-tbl-edit{font-size:14px;padding:9px 16px;}
.lse-tbl tr.lse-done td{opacity:.55;font-size:13.5px;padding:7px 12px;}
.lse-tbl tr.lse-done .btn-tbl-edit{font-size:12px;padding:5px 10px;}
@media(max-width:980px){ #lse-split{flex-direction:column;} }

/* Batch-1 rollout: side-by-side stacks on narrow screens */
@media(max-width:880px){
  .sg-split, .br-split { flex-direction:column; }
  .sg-split #sg-map, .br-split #br-map { flex:0 0 auto; }
}

/* Bridges: hide the Insp column by default (8th column, header + body cell) */
#page-inv-bridges table.sys-data-tbl thead th:nth-child(8),
#page-inv-bridges table.sys-data-tbl tbody td:nth-child(8) { display:none; }

/* Batch-2 restructure: signs + guardrail canonical layout — stack on narrow screens */
@media(max-width:880px){
  .gr-split, .sn-split { flex-direction:column; }
  .gr-split #invmap, .sn-split #signmap { flex:0 0 auto; }
}
/* signmap sizing override (old rule fixed height:380 via #signmap; the inline height now wins,
   but the min-width from the .map-col wrapper is gone entirely) */

/* Activity card: Work notes textarea (v0.5.72) */
.fa-notes-inp{width:100%;min-height:52px;resize:none;overflow-y:hidden;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-family:inherit;font-size:13px;line-height:1.45;background:var(--paper);color:inherit;box-sizing:border-box;}
.fa-notes-inp:focus{outline:none;border-color:var(--green);}
.fa-notes-inp:disabled{background:var(--rail);color:var(--muted);cursor:not-allowed;}

/* Mobile daily report: compact asset lineitem (v0.5.76) — matches desktop pattern
   Single row per asset: name+route on the left, accomplishment input beside, X to remove. */
.mb-lineitem{display:flex;align-items:center;gap:10px;padding:10px 8px;border-bottom:1px solid var(--line-soft);}
.mb-lineitem:last-child{border-bottom:none;}
.mb-li-nm{flex:1;font-size:13.5px;font-weight:600;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mb-li-route{font-weight:400;color:var(--muted);font-size:12.5px;}
.mb-li-acc{width:68px;border:1.5px solid var(--line);border-radius:8px;padding:8px 10px;font-family:'Roboto Mono';font-weight:700;font-size:15px;text-align:center;background:var(--paper);}
.mb-li-unit{font-size:11.5px;color:var(--muted-2);min-width:36px;text-transform:uppercase;letter-spacing:.04em;}

/* Third-level submenu — expand-in-place group (v0.5.83) */
.subbtn-group{grid-column:1/-1; background:var(--rail); border-style:dashed;}
.subbtn-group:hover{background:var(--rail); border-color:var(--asphalt);}
.subbtn-group .grp-chev{margin-left:auto; font-size:12px; color:var(--muted-2);}
.subgrp{grid-column:1/-1; display:grid; grid-template-columns:repeat(2,1fr); gap:8px; padding:0 0 4px 12px; border-left:2px solid var(--line);}
.subbtn-child{background:var(--paper); border-color:var(--line-soft);}
.subbtn-child .si{background:var(--muted-2);}
@media(max-width:640px){.subgrp{grid-template-columns:1fr; padding-left:8px;}}


/* ═══════ All Assets: focus modes + mobile/tablet adaptivity (v0.5.97) ═══════
   The screen has three panes: the asset list, the map, and a pinned bottom
   strip carrying the selection label + Start Inspection + Report Damage.
   The bottom strip is ALWAYS visible — user requirement. The top two adapt
   to viewport and to the user's chosen focus mode.

   Focus modes on #ni-body[data-focus]:
     "none"  both list and map visible (default on wide screens)
     "list"  list fills the top; map hidden
     "map"   map fills the top; list hidden

   Viewport defaults:
     ≥ 1024px    → default "none" (both visible)
     768-1023px  → default "none" in landscape, "list" in portrait
     < 768px     → default "list"; clicking an asset auto-flips to "map"

   The last part is set by JavaScript (niInit); CSS only handles the render. */

/* Compact focus toggle group in the top bar */
.ni-focus-toggle{display:inline-flex; gap:2px; background:var(--rail); border:1px solid var(--line); border-radius:8px; padding:2px;}
.ni-focus-btn{background:transparent; border:none; border-radius:6px; padding:4px 10px; font-size:12px; font-weight:600; color:var(--muted); cursor:pointer;}
.ni-focus-btn:hover{color:var(--ink); background:var(--paper);}
.ni-focus-btn[aria-pressed="true"]{background:var(--paper); color:var(--ink); box-shadow:0 1px 2px rgba(0,0,0,.08);}

/* Re-shape insp-body: now a nested grid where the list-col + map-col occupy
   the same conceptual row. Existing rule (line 592) uses grid-template-columns
   300px 1fr; we keep that when both are visible and switch to 1fr in focus. */
#ni-body[data-focus="list"]{grid-template-columns:1fr;}
#ni-body[data-focus="list"] #ni-map-col{display:none;}
#ni-body[data-focus="map"]{grid-template-columns:1fr;}
#ni-body[data-focus="map"] #ni-list-col{display:none;}

/* Pinned bottom strip — always renders in the sticky-chrome flow, below
   insp-body. Because insp-page is flex-column and insp-body is flex:1, the
   imap-tip naturally sits at the bottom. Make it a bit taller on mobile
   for tappability. */
#ni-imap-tip{flex-shrink:0;}
.ni-back-to-list{background:transparent; border:1px solid var(--line-soft); color:#c7cdd8; padding:4px 10px; border-radius:6px; font-size:11.5px; cursor:pointer; display:none;}
.ni-back-to-list:hover{background:rgba(255,255,255,.06);}
/* Show back-to-list only when we're in map focus */
#ni-body[data-focus="map"] ~ #ni-imap-tip .ni-back-to-list{display:inline-block;}

/* Mobile phones: default the toggle group to hide the "Both" button (no room),
   make the buttons larger for touch. */
@media(max-width:640px){
  .ni-focus-toggle{margin-left:auto;}
  .ni-focus-btn{padding:7px 12px; font-size:13px;}
  #ni-focus-both{display:none;}
  .imap-tip{flex-wrap:wrap; padding:8px 10px; row-gap:6px; column-gap:6px;}
  /* Selection label takes the full width so buttons wrap below it. */
  .imap-tip #ni-sel-label{width:100%; font-size:12.5px;}
  .imap-tip .start-btn{padding:9px 12px; font-size:12.5px;}
  /* Shrink geo + back buttons to icons on mobile. Tooltip / title carries meaning. */
  .ni-geo-btn{padding:7px 9px; margin-left:2px;}
  #ni-geo-locate{font-size:0;}   /* hide text but keep width from padding */
  #ni-geo-locate::before{content:'📍'; font-size:15px;}
  #ni-geo-follow{font-size:12px; padding:7px 8px;}
  .ni-back-to-list{padding:6px 10px; font-size:12.5px;}
}

/* Tablet portrait: keep Both button but list gets default focus on narrow.
   Set by niInit at page enter; no CSS-only decision here. */

/* When All Assets is in focus mode, hide the top chrome (header + nav +
   submenu) and the screen's own type-filter bar. The whole viewport belongs
   to the map or list. Kept scoped to body.ni-focused so no other screen is
   affected.

   .chrome  = header bar with logo, user, shop/crew selector
   .nav     = division tab row
   .submenu = drawer under the active tab
   .insp-topbar = All Assets' own "Signs / Guardrail / Culverts" filter row */
body.ni-focused .chrome,
body.ni-focused .nav,
body.ni-focused .submenu,
body.ni-focused .insp-topbar{display:none !important;}
/* The page normally leaves room for the sticky chrome via calc(100dvh - var(--chrome-b)).
   With chrome hidden we recover that space so the map/list fills the viewport. */
body.ni-focused .insp-page{height:100dvh;}
/* A tiny fixed exit button sits top-right so users can return to the app. It's
   the only piece of chrome we keep — without it, focus mode traps them. */
body.ni-focused .ni-focus-exit{display:flex; position:fixed; top:10px; right:10px; z-index:250;
  align-items:center; gap:6px; padding:8px 14px; background:var(--paper); border:1.5px solid var(--line);
  border-radius:20px; font-size:13px; font-weight:600; color:var(--ink); box-shadow:var(--shadow);
  cursor:pointer;}
.ni-focus-exit{display:none;}

/* When All Assets is in a focused mode, modals (Start Inspection + Report
   Damage) should cover the full viewport — the user is on a phone and
   there's no context to preserve behind the modal. Trigger the full-screen
   mode via a body class the focus toggle sets. */
body.ni-focused .insp-overlay.on{padding:0;}
body.ni-focused .insp{max-width:100vw; max-height:100vh; width:100vw; height:100dvh; border-radius:0;}
body.ni-focused .insp-form-body{max-height:none;}
body.ni-focused .mpick-overlay.on{padding:0;}
body.ni-focused .mpick{max-width:100vw; max-height:100dvh; width:100vw; height:100dvh; border-radius:0;}
/* The mpick body has overflow:auto; forcing height means it fills.
   iOS Safari needs the dynamic viewport unit or a rotated toolbar clips. */


/* Geolocation buttons in the All Assets imap-tip (v0.5.98) */
.ni-geo-btn{background:transparent; border:1px solid rgba(255,255,255,.2); color:#c7cdd8; padding:5px 10px;
  border-radius:6px; font-size:12px; cursor:pointer; margin-left:8px; white-space:nowrap;}
.ni-geo-btn:hover{background:rgba(255,255,255,.08); color:#fff;}
.ni-geo-btn.on{background:#1a73e8; color:#fff; border-color:#1a73e8;}
@media(max-width:640px){
  .ni-geo-btn{padding:7px 10px; font-size:12.5px; margin-left:4px;}
}


/* ─ Damage Log focus mode (v0.6.0) — mirrors All Assets ──────────────────── */
body.dmg-focused .chrome,
body.dmg-focused .nav,
body.dmg-focused .submenu{display:none !important;}
body.dmg-focused .inv-pg-head,
body.dmg-focused #dmg-cards,
body.dmg-focused .sys-data-bar,
body.dmg-focused .sys-data-wrap{display:none !important;}
body.dmg-focused .inv-pg{padding:0; margin:0; max-width:none;}
body.dmg-focused #dmg-map{height:calc(100dvh - 60px) !important; margin:0 !important; border-radius:0 !important; border:none !important;}
body.dmg-focused .ni-focus-exit{display:flex; position:fixed; top:10px; right:10px; z-index:250;
  align-items:center; gap:6px; padding:8px 14px; background:var(--paper); border:1.5px solid var(--line);
  border-radius:20px; font-size:13px; font-weight:600; color:var(--ink); box-shadow:var(--shadow); cursor:pointer;}

/* Bottom action strip — hidden by default, shown only in dmg-focused */
.dmg-focus-bar{display:none;}
body.dmg-focused .dmg-focus-bar{display:flex; position:fixed; bottom:0; left:0; right:0; z-index:240;
  padding:8px 14px; background:var(--asphalt-2); color:#c7cdd8; align-items:center; gap:10px;
  flex-wrap:wrap; border-top:1px solid rgba(255,255,255,.1);}
body.dmg-focused .dmg-focus-bar #dmg-focus-label{color:#c7cdd8; flex:1 1 auto; min-width:180px;}
body.dmg-focused .dmg-focus-bar .start-btn{padding:8px 14px; font-size:13px;}

/* Full-screen modals over Damage Log focus mode — sibling of the ni-focused
   rules above. Both mpick-overlay (used by Damage Log's dmgModal via mpick
   class family) and any other overlay that appears while damage-focused. */
body.dmg-focused .mpick-overlay.on{padding:0;}
body.dmg-focused .mpick{max-width:100vw; max-height:100dvh; width:100vw; height:100dvh; border-radius:0;}

@media(max-width:640px){
  body.dmg-focused .dmg-focus-bar{padding:8px 10px; gap:6px;}
  body.dmg-focused .dmg-focus-bar .start-btn{padding:8px 10px; font-size:12.5px;}
  body.dmg-focused .dmg-focus-bar #dmg-focus-label{width:100%; font-size:12px;}
  body.dmg-focused .dmg-focus-bar #dmg-geo-locate{font-size:0;}
  body.dmg-focused .dmg-focus-bar #dmg-geo-locate::before{content:"📍"; font-size:15px;}
}

/* ─ LOS Survey modal — full screen on mobile (v0.6.0) ─────────────────────
   The modal is defined inline with max-width:760px;width:96vw;max-height:92vh.
   Inline style beats external CSS, so !important is required. Applied at
   768px and below (phone + portrait tablet). */
@media(max-width:768px){
  #losSurveyModal .modal{
    max-width:100vw !important; width:100vw !important;
    max-height:100dvh !important; height:100dvh !important;
    border-radius:0 !important;
  }
  #losSurveyModal{padding:0 !important;}
  #losSurveyModal .modal-h{padding:12px 14px;}
  /* The modal footer uses justify-content:space-between; on narrow it wraps
     into two lines which is fine — just make sure buttons are tap-friendly. */
  #losSurveyModal button{padding:10px 14px; font-size:13.5px;}
}


/* ─ Mobile hamburger nav (v0.6.1) ────────────────────────────────────────
   The v0.6.0 attempt used position:fixed on .nav and .submenu with
   translateX — that left a residual vertical bar on the phone from the
   box-shadow of off-screen elements. This version wraps both nav elements
   in a #mobileNavDrawer div (created by JS at page load) that lives
   normally in the flow when open and disappears entirely when closed. No
   box-shadow bleed possible. */

/* Hamburger button + scrim — only exist on mobile */
.hamburger-btn{display:none; background:transparent; border:none; color:#fff;
  font-size:22px; padding:0 10px; cursor:pointer; line-height:1;}
.mobile-nav-scrim{display:none; position:fixed; inset:0; background:rgba(0,0,0,.4); z-index:230;}

@media(max-width:767px){
  .hamburger-btn{display:inline-block;}

  /* Hide desktop division buttons; drawer replaces them. */
  .chrome-inner .div-btns{display:none;}

  /* Drawer wrapper (inserted by JS around .nav + .submenu at load).
     Closed by default. When body.nav-open, the drawer appears as a
     scrollable panel below the header. */
  #mobileNavDrawer{display:none; position:fixed; top:58px; left:0; right:0;
    max-height:calc(100dvh - 58px); overflow-y:auto; z-index:240;
    background:var(--asphalt-2); border-bottom:2px solid var(--amber);}
  body.nav-open #mobileNavDrawer{display:block;}
  body.nav-open .mobile-nav-scrim{display:block;}

  /* Reset the child nav bars' sticky-position + hide their own borders,
     since they're now inside the drawer in normal flow. */
  #mobileNavDrawer .nav,
  #mobileNavDrawer .submenu{position:static; top:auto; display:block; z-index:auto;
    box-shadow:none; border:none; max-height:none; height:auto;}
  #mobileNavDrawer .submenu{background:var(--paper); border-top:1px solid var(--line);}

  /* Vertical stack for tap comfort inside the drawer. */
  #mobileNavDrawer .nav-inner{flex-direction:column !important; align-items:stretch;
    padding:8px !important; gap:4px !important;}
  #mobileNavDrawer .nav-inner .navitem{width:100%; text-align:left; padding:12px 16px !important;
    font-size:14px !important; color:#fff;}
  #mobileNavDrawer .submenu-inner{flex-direction:column !important; align-items:stretch;
    padding:10px !important; gap:6px !important;}
  #mobileNavDrawer .submenu-inner .subbtn{width:100%; justify-content:flex-start; padding:12px 14px;}

  /* When NOT in drawer (unwrapped), hide the desktop sticky bars entirely
     on mobile. This applies during the moment before JS runs — CSS is
     defensive, not the sole gate. */
  body:not(.nav-wrapped) .nav,
  body:not(.nav-wrapped) .submenu{display:none !important;}
}

/* Very narrow: tighten the header content so ☰ + brand + user icons fit */
@media(max-width:640px){
  .chrome-inner{padding:6px 12px; gap:8px;}
  .chrome h1{font-size:12px; letter-spacing:.02em;}
  .hdr-shopcrew{font-size:11px;}
  .who .name{font-size:12px;}
}

/* Once the mobile drawer wrapper exists, at desktop widths make it transparent
   to layout so the nav + submenu render normally as sticky bars. */
@media(min-width:768px){
  #mobileNavDrawer{display:contents;}
}





/* All Assets map — culvert square divIcon (v0.6.2). Signs stay circles
   (L.circleMarker), guardrails stay polylines. Three distinct shapes at
   a glance so signs vs culverts can't be confused when both filters are on. */
.ni-culv-icon{background:transparent; border:none;}
.ni-culv-marker{
  width:14px; height:14px;
  border:2px solid #fff;
  border-radius:2px;
  box-shadow:0 0 2px rgba(0,0,0,.35);
}

.ni-map-legend{background:rgba(255,255,255,.94); padding:6px 9px; border-radius:6px;
  border:1px solid var(--line); box-shadow:0 1px 3px rgba(0,0,0,.15);
  font-size:11px; display:flex; gap:10px; align-items:center; color:#333;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;}
.ni-map-legend span{display:inline-flex; gap:5px; align-items:center;}
.ni-map-legend i{display:inline-block; background:#7f8c8d; border:1.5px solid #fff;
  box-shadow:0 0 2px rgba(0,0,0,.35);}
.ni-map-legend i.lg-circle{width:10px; height:10px; border-radius:50%;}
.ni-map-legend i.lg-square{width:10px; height:10px; border-radius:2px;}
.ni-map-legend i.lg-line{width:16px; height:3px; border:none; background:#FF5500; box-shadow:none;}
/* Mobile: legend still shows but slightly smaller */
@media(max-width:640px){.ni-map-legend{font-size:10px; padding:4px 7px; gap:7px;}}


/* Selected culvert divIcon marker on All Assets map — green ring, similar
   visual language to sign selection (which uses circleMarker setStyle). */
.ni-culv-icon.ni-marker-selected .ni-culv-marker,
.ni-culv-icon .ni-culv-marker.ni-marker-selected{
  border-color:#1f7a4d;
  border-width:3px;
  width:16px; height:16px;
  box-shadow:0 0 0 3px rgba(31,122,77,.35), 0 0 3px rgba(0,0,0,.4);
}


/* ─ iOS input auto-zoom fix (v0.6.14) ─────────────────────────────────────
   Mobile Safari zooms the viewport when focusing an input whose computed
   font-size is under 16px. On blur it should zoom back — sometimes it
   doesn't, leaving the layout slightly off-center (left edge clipped).
   The reliable fix is to make inputs render at 16px on touch viewports.
   Applies to all input types + textareas + selects the app uses. */
@media(max-width:768px){
  .field-inp, .field-sel, .row-inp,
  input[type="text"], input[type="password"], input[type="email"],
  input[type="number"], input[type="date"], input[type="time"],
  input[type="tel"], input[type="url"], input[type="search"],
  textarea, select{
    font-size:16px !important;
  }
}


/* Submitter-name suffix on approval crew tabs (v0.6.16) — only shown when
   a crew has multiple reports for the same day so tabs can be told apart. */
.appr-crew-tab-sub{font-size:11px;color:var(--muted-2);font-weight:400;margin-left:4px;}
.appr-crew-tab.on .appr-crew-tab-sub{color:#fff;opacity:.8;}


/* Camera overlay on the asset-panel photo (v0.6.19) — the photo itself now
   opens the lightbox on tap; replacing goes through this small button. */
.ap-photo-change{position:absolute;bottom:6px;right:6px;background:rgba(0,0,0,.55);
  border:1px solid rgba(255,255,255,.4);border-radius:6px;color:#fff;
  font-size:13px;padding:4px 7px;cursor:pointer;line-height:1;}
.ap-photo-change:hover{background:rgba(0,0,0,.75);}


/* ─ All Assets: sign triangle markers + legend (v0.6.20) ─────────────────
   Shapes echo the physical asset: triangle = sign, circle = drop inlet,
   square = culvert, line = guardrail. Sign divIcons use the same
   opacity/selected-class path as culvert squares in niRefreshMap. */
.ni-sign-tri{width:0;height:0;border-left:8px solid transparent;
  border-right:8px solid transparent;border-bottom:14px solid #888;
  filter:drop-shadow(0 0 1px rgba(255,255,255,.9));}
.ni-sign-icon.ni-marker-selected .ni-sign-tri,
.ni-sign-icon .ni-sign-tri.ni-marker-selected{
  filter:drop-shadow(0 0 4px #1f7a4d) drop-shadow(0 0 2px #1f7a4d);}
.ni-map-legend .lg-triangle{display:inline-block;width:0;height:0;
  border-left:5px solid transparent;border-right:5px solid transparent;
  border-bottom:9px solid #555;margin-right:4px;vertical-align:baseline;}


/* ─ File attachments widget (v0.6.21) ────────────────────────────────────
   Shared by asset panels, facilities detail, fleet Files tab, and the
   generic files modal. */
.file-widget{font-size:12.5px;}
.file-widget .fw-head{display:flex;align-items:center;gap:10px;margin-bottom:4px;}
.file-widget .fw-title{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);}
.file-widget .fw-row{display:flex;align-items:center;gap:8px;padding:4px 0;border-top:1px dashed var(--line-soft);}
.file-widget .fw-name{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--blue);text-decoration:none;font-weight:600;}
.file-widget .fw-name:hover{text-decoration:underline;}
.file-widget .fw-meta{flex:1;font-size:10.5px;color:var(--muted-2);white-space:nowrap;}
.file-widget .fw-del{background:none;border:none;color:var(--muted-2);cursor:pointer;font-size:12px;padding:2px 5px;}
.file-widget .fw-del:hover{color:var(--red);}


/* Files button when the record has attachments (v0.6.22) — amber reads in
   both themes; count shown in the label. */
.btn-tbl-edit.has-files{background:var(--amber);color:#1b1e24;border-color:var(--amber);font-weight:700;}
.btn-tbl-edit.has-files:hover{background:var(--amber-line);}


/* Condition report (v0.6.27): poor-cause panels stack on narrow screens */
@media (max-width: 900px){ .cr-poor-grid{grid-template-columns:1fr !important;} }

/* map-pick buttons — rounded + blue everywhere (user 2026-07-23).
   NOTE: lived one version inside a print-template <style> block (first
   </style> in the file is the TIMESHEET template's, not the app's — the
   app styles are THIS file). */
.btn-map-pick{background:#1d6fd1;color:#fff;border:none;border-radius:999px;
  padding:10px 18px;font-weight:800;font-size:13px;cursor:pointer;width:100%;
  display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn-map-pick:hover{background:#1a63bb}
.btn-map-pick:disabled{opacity:.5;cursor:default}
.btn-map-pick[style*="width:auto"]{width:auto}

/* modal header — was never defined; title+X sat unstyled at the left
   (affected raEditModal + ltEditModal). X now pinned top-right. */
.modal-head{display:flex;justify-content:space-between;align-items:center;
  padding:12px 16px;border-bottom:1px solid var(--line);gap:12px}
