
/* Brand palette — the logo browns (espresso -> mocha -> stone). --navy/--navy2 keep their
   names (used everywhere) but now hold the deep logo brown so the whole chrome goes warm. */
:root{--navy:#3d3a36;--navy2:#2b2926;--charcoal:#3d3a36;--slate:#6f7377;--taupe:#b0a798;--stone:#eceae5;--accent:#c0392b;--green:#1f7a45;--amber:#b7791f;--line:#dcd8d1;--ink:#2b2825;--muted:#6f6a63;--bg:#f0eeea;}
*{box-sizing:border-box;} body{margin:0;font-family:-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink);}
a{color:inherit;}
header.top{background:var(--navy);color:#fff;padding:10px 20px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
header.top .brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:15px;cursor:pointer;}
header.top .brand img{height:30px;background:#fff;border-radius:5px;padding:2px;}
header.top .chip{font-size:11px;font-weight:700;background:rgba(255,255,255,.15);padding:5px 11px;border-radius:20px;margin-left:auto;}
.wrap{max-width:1180px;margin:18px auto;padding:0 16px;}
.btn{border:none;border-radius:8px;padding:9px 14px;font-weight:700;font-size:13px;cursor:pointer;}
.btn.pri{background:var(--accent);color:#fff;} .btn.nav2{background:var(--navy);color:#fff;} .btn.gh{background:#fff;border:1px solid var(--line);color:var(--ink);} .btn.gr{background:var(--green);color:#fff;}
.btn.sm{padding:6px 10px;font-size:12px;}
/* DASHBOARD */
.dashhead{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap;}
.dashhead h1{font-size:20px;margin:0;color:var(--navy);} .dashhead .sb{margin-left:auto;display:flex;gap:8px;}
.search{padding:9px 12px;border:1px solid var(--line);border-radius:8px;font-size:13px;min-width:200px;}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;}
.jc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:0 1px 2px rgba(42,38,32,.05);cursor:pointer;transition:.1s;position:relative;}
.jc:hover{box-shadow:0 3px 12px rgba(42,38,32,.12);transform:translateY(-1px);}
.jc h3{margin:0 0 2px;font-size:15px;color:var(--navy);} .jc .sub{font-size:12px;color:var(--muted);margin-bottom:10px;}
.jc .tot{font-size:19px;font-weight:800;color:var(--ink);} .jc .meta{font-size:11px;color:var(--muted);margin-top:8px;display:flex;justify-content:space-between;align-items:center;}
.badge{font-size:10px;font-weight:700;padding:3px 8px;border-radius:20px;text-transform:uppercase;letter-spacing:.4px;}
.b-bidding{background:#eaf1f8;color:#2b6cb0;} .b-won{background:#e6f4ea;color:#1f7a45;} .b-progress{background:#fdf3e2;color:#b7791f;} .b-complete{background:#edeef0;color:#566;} .b-lead{background:#f3eaf8;color:#7a4f9c;}
.jc .del{position:absolute;top:10px;right:10px;border:none;background:transparent;color:#c4c4c9;font-size:16px;cursor:pointer;opacity:0;}
.jc:hover .del{opacity:1;} .jc .del:hover{color:var(--accent);}
.empty{background:#fff;border:1px dashed var(--line);border-radius:12px;padding:50px 20px;text-align:center;color:var(--muted);}
/* JOB EDITOR */
.jobbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:12px;}
.jobbar .nm{font-weight:800;font-size:16px;color:var(--navy);border:none;outline:none;min-width:160px;}
.jobbar select{padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-size:12px;}
.jobbar .sp{flex:1;}
.tabs{display:flex;gap:4px;margin-bottom:10px;flex-wrap:wrap;}
.tab{background:#fff;border:1px solid var(--line);color:var(--muted);padding:9px 16px;border-radius:8px;font-weight:700;font-size:13px;cursor:pointer;}
.tab.active{background:var(--navy);color:#fff;border-color:var(--navy);}
.scopegap{background:#fdf3e2;border:1px solid #f0d9a8;color:#8a5a13;border-radius:8px;padding:9px 13px;font-size:12.5px;margin-bottom:10px;}
.totbar{display:flex;gap:18px;flex-wrap:wrap;background:var(--navy);color:#fff;border-radius:8px;padding:10px 16px;margin-bottom:10px;font-size:13px;align-items:center;}
.totbar b{font-size:16px;} .totbar .g{margin-left:auto;font-size:19px;font-weight:800;}
.note{font-size:12px;color:var(--muted);margin:6px 2px;}
/* DOCUMENT panes */
.page{background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 1px 3px rgba(42,38,32,.06);}
.doc{font-family:"Times New Roman",Georgia,serif;color:#000;padding:38px 52px 26px;font-size:12pt;line-height:1.32;position:relative;}
.doc img.logo{display:block;margin:0 auto 2px;width:230px;}
.doc h2.title{text-align:center;font-size:15pt;font-weight:bold;margin:6px 0 12px;}
.doc .trade{font-weight:bold;margin:9px 0 1px;} .doc .li{margin:0 0 0 2px;}
.doc .total{text-align:center;font-weight:bold;font-size:13pt;margin:16px 0;}
.doc p{margin:8px 0;} .doc .sig div{margin:14px 0;}
.doc .footaddr{text-align:center;font-size:9pt;line-height:1.25;margin-top:34px;padding-top:6px;color:#222;}
.doc table{width:100%;border-collapse:collapse;} .doc table.bidt td,.doc table.bidt th{padding:2px 6px;font-size:10.5pt;}
.doc table.bidt th{border-bottom:1.5px solid #333;text-align:left;} .doc table.bidt td.r{text-align:right;}
.doc .secrow td{font-weight:bold;border-bottom:1px solid #ccc;padding-top:8px;}
.doc .subt td{border-top:1px solid #ddd;font-style:italic;}
.doc table.rec td,.doc table.rec th{border:1px solid #999;padding:2px 5px;font-size:8.5pt;} .doc table.rec th{background:#eeeae3;}
.doc .sched div{display:flex;gap:14px;} .doc .sched .lab{width:240px;}
/* ===== SCHEDULE TAB ===== */
.schedbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 13px;margin-bottom:12px;}
.schedbar .schstart{font-size:12.5px;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:7px;}
.schedbar .sp{flex:1;}
.schedbar .schdate{padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-size:12.5px;color:#3f3a35;font-family:inherit;}
.schpred{max-width:106px;font-size:12px;}
.schlag{width:38px;text-align:center;margin-left:4px;font-size:12px;}
.schlag:disabled{opacity:.4;}
.predmore{margin-left:4px;font-size:11px;color:var(--muted);font-weight:700;}
.schshiftbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff7e6;border:1px solid #f0d59a;border-radius:10px;padding:8px 13px;margin-bottom:12px;}
.schshiftbar .ssb-msg{font-size:13px;color:#8a5a00;flex:1;min-width:150px;}
.bidtools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 12px;}
.hylist{max-height:44vh;overflow:auto;border:1px solid var(--line);border-radius:8px;}
.hyrow{display:flex;justify-content:space-between;gap:10px;padding:7px 10px;border-bottom:1px solid var(--line);font-size:13px;}
.hyrow:last-child{border-bottom:0;}
.hyd{font-weight:600;}
.hyq{color:var(--muted);white-space:nowrap;}
.hywarn{color:#b3271e;font-weight:700;font-size:11px;}
.schedempty{background:#fafafa;border:1px dashed var(--line);border-radius:10px;padding:20px 18px;text-align:center;color:var(--muted);font-size:13px;font-family:Inter,system-ui,sans-serif;margin:14px 0;}
.doc table.schtbl{width:100%;border-collapse:collapse;margin:12px 0 6px;font-family:Inter,system-ui,sans-serif;}
.doc table.schtbl th{border-bottom:1.5px solid #333;text-align:left;padding:4px 6px;font-size:10.5pt;}
.doc table.schtbl td{padding:3px 6px;font-size:10.5pt;border-bottom:1px solid #efeff1;vertical-align:middle;}
.doc table.schtbl td.schend{color:#334;font-variant-numeric:tabular-nums;}
.schin{border:1px solid var(--line);border-radius:6px;font-family:Inter,system-ui,sans-serif;font-size:12px;padding:4px 6px;color:#3f3a35;outline:none;box-sizing:border-box;width:100%;background:#fff;}
.schin:focus{border-color:var(--navy);box-shadow:0 0 0 2px rgba(61,58,54,.35);}
.schtbl select.schin{background:#fff;}
.schtbl .schdays{width:52px;text-align:center;}
.schrow.st-done td{opacity:.62;}
.schrow.st-inprogress .schtrade{font-weight:700;}
.ganttwrap{margin:16px 0 4px;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fafafa;font-family:Inter,system-ui,sans-serif;}
.gantthd{font-size:12px;font-weight:800;color:var(--navy);letter-spacing:.02em;margin-bottom:10px;}
.gantthd .gsub{font-weight:600;color:var(--muted);margin-left:6px;}
.ganttempty{font-size:12px;color:var(--muted);text-align:center;padding:6px 0;}
.gantt{display:flex;flex-direction:column;gap:6px;}
.grow{display:flex;align-items:center;gap:10px;}
.grow .glab{width:132px;flex:0 0 132px;font-size:11px;font-weight:600;color:#3f3a35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.grow .gtrack{position:relative;flex:1;height:22px;background:#eeeae3;border-radius:6px;overflow:hidden;}
.gbar{position:absolute;top:0;height:22px;border-radius:6px;min-width:4px;background:var(--navy);display:flex;align-items:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);transition:left .18s ease,width .18s ease;}
.gbar .gcap{font-size:10px;color:#fff;font-weight:600;padding:0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 1px rgba(0,0,0,.25);}
.gbar.gst-pending{background:#8794a3;}
.gbar.gst-scheduled{background:var(--navy);}
.gbar.gst-inprogress{background:#d9822b;}
.gbar.gst-done{background:var(--green,#2e8b57);}
.gbar.gst-confirmed{background:#1f7a45;}
.schrow.st-confirmed .schtrade{font-weight:600;}
.cfchip{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:20px;font-size:11px;font-weight:700;vertical-align:middle;white-space:nowrap;}
.cfchip.cf-wait{background:#fff4e0;color:#9a6a00;border:1px solid #f0d59a;}
.cfchip.cf-yes{background:#e6f4ea;color:#1f7a45;border:1px solid #b7e0c4;}
.cfchip.cf-no{background:#fdecea;color:#b3271e;border:1px solid #f4c3bd;}
@media (max-width:600px){.grow{flex-wrap:wrap;}.grow .glab{width:auto;flex:1 0 100%;}}
@media print{.doc table.schtbl .schin,.doc table.schtbl select.schin{border:none;color:#000;background:none;-webkit-appearance:none;appearance:none;padding:0;}.doc table.schtbl td.schend{color:#000;}.ganttwrap{background:#fff;break-inside:avoid;}.gbar{box-shadow:none;print-color-adjust:exact;-webkit-print-color-adjust:exact;}}
input.bl{border:none;border-bottom:1px solid #a8a29a;font-family:inherit;font-size:inherit;color:#3f3a35;background:transparent;outline:none;padding:0 1px;vertical-align:baseline;}
input.bl:focus{background:#fff7d6;border-bottom-color:#3d3a36;} input.k-meas{text-align:center;} input.k-cnt{text-align:center;} input.k-money{text-align:right;}
input.cell{border:1px solid var(--line);border-radius:4px;font-family:inherit;font-size:10.5pt;padding:2px 5px;width:80px;text-align:right;color:#3f3a35;outline:none;}
input.cell:focus{border-color:var(--navy);background:#fff7d6;}
input.di{border:none;border-bottom:1px solid #888;width:90px;text-align:right;color:#3f3a35;background:transparent;font-family:inherit;font-size:inherit;outline:none;}
.recin{border:1px solid var(--line);border-radius:3px;width:74px;text-align:right;font-size:8.5pt;padding:1px 3px;color:#3f3a35;outline:none;}
.se{outline:none;border-radius:3px;padding:0 1px;} .se:hover{background:#f4f2ed;box-shadow:inset 0 -1px 0 #cdd6e0;} .se:focus{background:#fff7d6;}
.delx{border:none;background:none;color:#c4c4c9;cursor:pointer;font:600 11px/1 inherit;padding:12px 14px;margin-left:1px;vertical-align:middle;}.delx:hover{color:#c0392b;}
#gate{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--navy),var(--navy2));padding:20px;}
#gate .gatecard{background:#fff;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.35);padding:32px 30px;max-width:380px;width:100%;text-align:center;}
#gate img{width:116px;height:auto;margin-bottom:6px;}
#gate h1{font-size:19px;color:var(--navy);margin:6px 0 2px;font-weight:700;}
#gate .tag{color:#71717a;font-size:11px;letter-spacing:.5px;text-transform:uppercase;margin-bottom:18px;}
#gate .sub{color:#5a6573;font-size:13px;margin-bottom:14px;}
#gate input{width:100%;box-sizing:border-box;text-align:center;font-size:18px;letter-spacing:4px;padding:12px;border:1.5px solid #e4e4e7;border-radius:10px;margin-bottom:12px;}
#gate input:focus{outline:none;border-color:var(--navy);}
#gate button.go{width:100%;background:var(--navy);color:#fff;border:none;border-radius:10px;padding:13px;font-size:15px;font-weight:600;cursor:pointer;}
#gate button.go:hover{background:var(--navy2);}
#gate .lk{display:inline-block;margin-top:14px;color:#71717a;font-size:12px;cursor:pointer;}
#gate .lk:hover{color:var(--accent);text-decoration:underline;}
#gate .err{color:var(--accent);font-size:12px;min-height:15px;margin-bottom:4px;}
#gate .off{margin-top:18px;font-size:10px;letter-spacing:.5px;color:#aeb6c0;text-transform:uppercase;}
.dashtools{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 16px;}
#help{position:fixed;inset:0;z-index:9000;background:rgba(39,39,42,.55);display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto;}
#help .helpcard{background:#fff;border-radius:14px;max-width:560px;width:100%;padding:26px 30px;box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative;}
#help h2{color:var(--navy);margin:0 0 14px;font-size:20px;}
#help .hclose{position:absolute;top:10px;right:14px;border:none;background:none;font-size:24px;line-height:1;color:#a8a29a;cursor:pointer;}
#help ol.steps{margin:0;padding-left:20px;color:#27272a;font-size:14px;line-height:1.7;}
#help ol.steps li{margin-bottom:9px;}
#help .hrow{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;}
#settings{position:fixed;inset:0;z-index:9100;background:rgba(39,39,42,.55);display:flex;align-items:flex-start;justify-content:center;padding:24px 20px;overflow:auto;}
#hyimport{position:fixed;inset:0;z-index:9100;background:rgba(39,39,42,.55);display:flex;align-items:flex-start;justify-content:center;padding:24px 20px;overflow:auto;}
#settings .setcard,#notifysubs .setcard,#hyimport .setcard{background:#fff;border-radius:14px;max-width:600px;width:100%;padding:22px 28px 26px;box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative;margin:auto;}
#settings h2{color:var(--navy);margin:0 0 2px;font-size:20px;}
#settings h3{color:var(--navy);font-size:12px;text-transform:uppercase;letter-spacing:.5px;margin:18px 0 8px;border-bottom:1px solid #e6e9ed;padding-bottom:4px;}
#settings .pbi{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;font-size:13px;}
#settings .pbi span{color:#4a453e;flex:1;}
#settings .pbi input{width:110px;padding:6px 8px;border:1px solid #e4e4e7;border-radius:7px;font-size:13px;text-align:right;box-sizing:border-box;}
/* Twilio auto-send: render the native checkbox as a toggle switch */
#settings .pbi input#s_twauto{-webkit-appearance:none;appearance:none;width:44px!important;height:26px;flex:0 0 auto;padding:0;border:none;border-radius:999px;background:var(--line);position:relative;cursor:pointer;transition:background .18s ease;box-sizing:border-box;}
#settings .pbi input#s_twauto::before{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(39,39,42,.35);transition:transform .18s ease;}
#settings .pbi input#s_twauto:checked{background:var(--green);}
#settings .pbi input#s_twauto:checked::before{transform:translateX(18px);}
#settings .pbi input#s_twauto:focus-visible{outline:2px solid var(--navy);outline-offset:2px;}
#settings .pbsec{font-weight:700;color:var(--navy);font-size:12px;margin:10px 0 4px;}
#settings .pbwrap{max-height:240px;overflow:auto;border:1px solid #e6e9ed;border-radius:8px;padding:10px 12px;background:#f8f6f2;}
#settings .hrow{display:flex;gap:10px;margin-top:22px;}
/* === premium dashboard === */
body{background:#f4f6f9;}
header.top{padding:13px 26px;box-shadow:0 6px 18px -10px rgba(42,38,32,.5);}
.brand{font-size:15px;letter-spacing:.2px;}
.wrap{max-width:1180px;margin:0 auto;padding:26px 22px 64px;}
.dashhead{margin-bottom:20px;align-items:center;}
.dashhead h1{font-size:27px;font-weight:800;letter-spacing:-.6px;}
.search{padding:11px 14px 11px 36px;border:1px solid var(--line);border-radius:11px;font-size:13.5px;min-width:240px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='none' stroke='%238793a1' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath d='M9.6 9.6l3.2 3.2'/%3E%3C/svg%3E") no-repeat 13px center;box-shadow:0 1px 2px rgba(42,38,32,.05);transition:.15s;}
.search:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(61,58,54,.13);}
/* ===== Button system 2.0 — complete, tactile, enticing (supersedes the base .btn) ===== */
.btn{border-radius:11px;padding:12px 18px;font-size:14px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;line-height:1;letter-spacing:.15px;-webkit-tap-highlight-color:transparent;transition:transform .09s ease,box-shadow .16s ease,filter .16s ease,background .16s ease,border-color .16s ease;}
.btn:active{transform:translateY(1px);}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(61,58,54,.34);}
.btn.pri{background:linear-gradient(180deg,#484440,#2a2724);padding:12px 20px;box-shadow:0 4px 12px -2px rgba(42,39,36,.5);}
.btn.pri:hover{filter:brightness(1.22);transform:translateY(-1px);box-shadow:0 9px 22px -5px rgba(42,39,36,.62);}
.btn.pri:active{transform:translateY(0);box-shadow:0 4px 12px -2px rgba(42,39,36,.5);}
.btn.nav2{background:linear-gradient(180deg,#797d81,#63676b);box-shadow:0 3px 10px -2px rgba(99,103,107,.42);}
.btn.nav2:hover{filter:brightness(1.09);transform:translateY(-1px);box-shadow:0 8px 20px -5px rgba(99,103,107,.52);}
.btn.gr{background:linear-gradient(180deg,#249049,#1a7038);box-shadow:0 3px 10px -2px rgba(31,122,69,.35);}
.btn.gr:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 8px 20px -5px rgba(31,122,69,.46);}
.btn.gh{box-shadow:0 1px 2px rgba(42,38,32,.05);}
.btn.gh:hover{border-color:#cfc9bf;background:#f5f3ef;color:var(--navy);transform:translateY(-1px);box-shadow:0 4px 12px -3px rgba(42,38,32,.14);}
.btn.sm{padding:8px 13px;font-size:13px;min-height:38px;border-radius:9px;}
.dashtools{gap:4px;margin:0 0 22px;}
.dashtools .btn.gh.sm{background:transparent;border-color:transparent;color:var(--muted);font-weight:600;}
.dashtools .btn.gh.sm:hover{background:#fff;border-color:var(--line);color:var(--navy);box-shadow:0 1px 2px rgba(42,38,32,.06);}
.pipe{display:flex;gap:14px;margin:0 0 22px;flex-wrap:wrap;}
.pipe .stat{background:#fff;border-radius:14px;padding:15px 20px;box-shadow:0 1px 3px rgba(42,38,32,.07);flex:1;min-width:130px;}
.pipe .stat .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:700;}
.pipe .stat .v{font-size:23px;font-weight:800;color:var(--navy);letter-spacing:-.6px;margin-top:3px;}
.cards{gap:16px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));}
.jc{border:none;border-radius:16px;padding:18px 20px 16px;box-shadow:0 1px 3px rgba(42,38,32,.07),0 1px 2px rgba(42,38,32,.04);transition:transform .18s cubic-bezier(.2,.7,.3,1),box-shadow .18s ease;overflow:hidden;}
.jc:hover{box-shadow:0 14px 34px -12px rgba(42,38,32,.3);transform:translateY(-3px);}
.jc::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--navy);}
.jc.s-lead::before{background:#7a4f9c;}.jc.s-bidding::before{background:#2b6cb0;}.jc.s-won::before{background:#1f7a45;}.jc.s-progress::before{background:#b7791f;}.jc.s-complete::before{background:#71717a;}
.jc h3{font-size:16.5px;font-weight:800;letter-spacing:-.2px;}
.jc .sub{margin-bottom:14px;}
.tot{font-size:25px;font-weight:800;letter-spacing:-.6px;}
.meta{margin-top:12px;}
.badge{padding:4px 10px;font-size:10px;}
.empty{border-radius:16px;padding:60px 20px;}
/* === UI overhaul: responsive + accessibility (Phase 3) === */
a:focus-visible,button:focus-visible,select:focus-visible,textarea:focus-visible,[contenteditable=true]:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:4px;}
input:focus-visible,input.bl:focus-visible,input.di:focus-visible,.recin:focus-visible{outline:2px solid var(--navy);outline-offset:1px;}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important;}}
@media (max-width:760px){
 .wrap{padding:16px 12px 56px;}
 header.top{padding:11px 14px;gap:10px;}
 header.top .chip{font-size:10px;padding:4px 8px;}
 .dashhead{align-items:flex-start;}
 .dashhead h1{font-size:22px;}
 .dashhead .sb{margin-left:0;width:100%;flex-wrap:wrap;}
 .search{min-width:0;flex:1;}
 .cards{grid-template-columns:1fr;}
 .pipe{gap:8px;} .pipe .stat{min-width:calc(50% - 6px);flex:1 1 calc(50% - 6px);padding:12px 14px;}
 .pipe .stat .v{font-size:20px;}
 .jobbar{padding:9px 11px;gap:8px;}
 .tabs{gap:5px;} .tab{flex:1;text-align:center;padding:10px 6px;font-size:12.5px;min-height:44px;}
 .totbar{font-size:12px;padding:9px 12px;gap:12px;} .totbar .g{font-size:17px;}
 .page{overflow-x:auto;-webkit-overflow-scrolling:touch;}
 .doc{padding:20px 16px;}
 .doc table.bidt,.doc table.rec{min-width:560px;} .doc table.schtbl{min-width:660px;}
 .doc .sched div{gap:8px;} .doc .sched .lab{width:auto;flex:1;}
 .btn{min-height:44px;} .btn.sm{min-height:40px;}
 .schin,.schlag,.schdays{min-height:40px;}
}
@media (max-width:480px){
 .pipe .stat{min-width:100%;flex-basis:100%;}
 .doc{padding:16px 12px;font-size:11.5pt;}
 .jobbar .nm{font-size:15px;min-width:110px;}
 .modal,.sheet{margin:10px;}
}
/* branded modal primitive (replaces native prompt/confirm/alert) */
.modalov{position:fixed;inset:0;background:rgba(39,39,42,.5);display:flex;align-items:center;justify-content:center;z-index:2147483646;padding:18px;animation:mfade .14s ease;}
.modal{background:#fff;border-radius:14px;box-shadow:0 24px 60px -12px rgba(39,39,42,.55);width:100%;max-width:430px;overflow:hidden;animation:mpop .16s ease;}
.modal .mhead{font-size:16px;font-weight:800;color:var(--navy);padding:18px 22px 0;}
.modal .mbody{padding:9px 22px 2px;color:var(--ink);font-size:14px;line-height:1.45;}
.modal .minput{display:block;width:auto;margin:12px 22px 2px;padding:11px 13px;border:1px solid var(--line);border-radius:9px;font-size:15px;outline:none;box-sizing:border-box;}
.modal .minput:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(61,58,54,.13);}
.modal .mfoot{display:flex;justify-content:flex-end;gap:8px;padding:16px 22px 18px;}
.modal .btn.mdanger{background:var(--accent);color:#fff;}
/* === Subcontractor contacts (Settings) + Notify-subs modal === */
#settings .subrow{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
#settings .subrow input{padding:6px 8px;border:1px solid #e4e4e7;border-radius:7px;font-size:13px;text-align:left;box-sizing:border-box;min-width:0;}
#settings .subrow .sub-nm{flex:1.4;}
#settings .subrow .sub-tr{flex:1.1;}
#settings .subrow .sub-ph{flex:1;}
#settings .subrow .sub-em{flex:1.4;}
#settings .subrow .subx{border:none;background:transparent;color:#c4c4c9;font-size:18px;line-height:1;cursor:pointer;padding:0 4px;flex:0 0 auto;}
#settings .subrow .subx:hover{color:var(--accent);}
#settings .subadd{margin:2px 0 4px;}
.nscard{max-width:560px;}
#notifysubs{position:fixed;inset:0;background:rgba(39,39,42,.5);display:flex;align-items:flex-start;justify-content:center;z-index:2147483646;padding:24px 18px;overflow:auto;}
.nslist{border:1px solid #e6e9ed;border-radius:10px;overflow:hidden;}
.nsrow{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid #ece9e2;flex-wrap:wrap;}
.nsrow:last-child{border-bottom:none;}
.nsmeta{flex:1;min-width:150px;}
.nsname{font-weight:800;color:var(--navy);font-size:14px;}
.nswarn{font-weight:600;font-size:11px;color:var(--accent);background:#fdecea;border-radius:5px;padding:1px 6px;margin-left:4px;}
.nsscope{font-size:12.5px;color:#4a453e;}
.nsdates{font-size:12px;color:var(--muted);margin-top:1px;}
.nsacts{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.nsacts .btn.sm{padding:6px 11px;font-size:12px;text-decoration:none;display:inline-block;}
@media (max-width:600px){.nsacts{width:100%;} .nsrow{gap:8px;}}
@keyframes mfade{from{opacity:0}to{opacity:1}}
@keyframes mpop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
/* === UI Phase 3 (3/n): audit punch-list - visual + mobile polish === */
/* r3: Settings close-x only had a #help-scoped rule -> brand it on both panels */
#help .hclose,#settings .hclose,#notifysubs .hclose,#hyimport .hclose{position:absolute;top:10px;right:12px;width:34px;height:34px;border:none;background:none;font-size:24px;line-height:1;color:#a8a29a;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:.14s ease;}
#help .hclose:hover,#settings .hclose:hover,#notifysubs .hclose:hover{color:var(--accent);background:#f4f2ed;}
/* r11: editor tabs + nav/action buttons get the dashboard hover/press language */
.tab{transition:.14s ease;}
.tab:hover:not(.active){border-color:var(--navy);color:var(--navy);background:#f4f2ed;}
.tab.active{box-shadow:0 2px 8px -2px rgba(61,58,54,.45);}
.btn.nav2,.btn.gr{transition:.16s ease;}
.btn.nav2:hover,.btn.gr:hover{filter:brightness(1.08);transform:translateY(-1px);}
/* r12: dense reconcile cells get a visible focus like the bid cells */
.recin:focus{background:#fff7d6;border-color:var(--navy);}
/* r5: keyboard users can reach the per-card delete (opacity:0 until hover) */
.jc:focus-within .del,.jc .del:focus-visible{opacity:1;}
/* r7: login gate must scroll, not clip, in short/landscape viewports */
#gate{overflow:auto;align-items:flex-start;}
#gate .gatecard{margin:auto;}
/* r13: editable fill-ins read as fields on screen; _pdfClean strips them for print/PDF */
@media screen{input.bl,input.di{background:rgba(11,58,134,.05);border-radius:2px;}}
/* r2: 16px inputs on phones stops iOS Safari focus auto-zoom (desktop keeps compact sizes) */
@media (max-width:760px){
 input.cell,.recin,input.bl,input.di,.jobbar select,.search,#settings .pbi input,.modal .minput{font-size:16px;}
}
.skip{position:absolute;left:-9999px;top:0;z-index:2147483647;background:var(--navy);color:#fff;padding:10px 16px;border-radius:0 0 8px 0;font-weight:700;text-decoration:none;}
.skip:focus{left:0;}
.cell.invalid,.recin.invalid{outline:2px solid var(--accent);background:#fdecea;}
.tabs .tab{font-family:inherit;line-height:1.2;text-align:center;}
/* ---- reports view ---- */
.rpthead{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--navy);font-weight:700;margin:26px 0 12px;border-bottom:1px solid var(--line);padding-bottom:6px;}
.rptstatus{display:flex;gap:12px;flex-wrap:wrap;}
.rptsc{background:#fff;border-radius:14px;padding:14px 18px;box-shadow:0 1px 3px rgba(42,38,32,.07);flex:1;min-width:130px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;}
.rptsc .badge{font-size:11px;padding:2px 9px;border-radius:20px;font-weight:700;}
.rptsc-c{font-size:12px;color:var(--muted);font-weight:600;}
.rptsc-v{font-size:18px;font-weight:800;color:var(--navy);letter-spacing:-.4px;}
.rptwin{margin-top:14px;background:#fff;border-radius:12px;padding:12px 18px;box-shadow:0 1px 3px rgba(42,38,32,.07);font-size:13px;color:var(--ink);}
.rptwin b{color:var(--navy);}
.rpttbl-wrap{background:#fff;border-radius:16px;box-shadow:0 1px 3px rgba(42,38,32,.07),0 1px 2px rgba(42,38,32,.04);overflow:hidden;}
.rpttbl{width:100%;border-collapse:collapse;font-size:13px;}
.rpttbl thead th{background:var(--navy);color:#fff;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.5px;padding:11px 14px;text-align:right;}
.rpttbl thead th:first-child{text-align:left;}
.rpttbl tbody td{padding:11px 14px;border-top:1px solid var(--line);text-align:right;vertical-align:middle;}
.rpttbl tbody tr:hover{background:#fafafa;}
.rpttbl .rptnum{font-variant-numeric:tabular-nums;white-space:nowrap;}
.rpttbl .rptaddr{font-size:11px;color:var(--muted);font-weight:400;margin-top:2px;}
.rpttbl .rptna{color:var(--muted);font-style:italic;text-align:center;}
.rpttbl .badge{font-size:11px;padding:2px 9px;border-radius:20px;font-weight:700;}
@media (max-width:600px){.rpttbl thead{display:none;}.rpttbl,.rpttbl tbody,.rpttbl tr,.rpttbl td{display:block;width:auto;}.rpttbl tr{border-top:1px solid var(--line);padding:6px 0;}.rpttbl tbody td{border:none;text-align:left;padding:3px 14px;}}
/* ---- all-jobs calendar view ---- */
.calweek{background:#fff;border-radius:16px;box-shadow:0 1px 3px rgba(42,38,32,.07),0 1px 2px rgba(42,38,32,.04);padding:14px 18px;margin:0 0 18px;}
.calweek-h{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--navy);font-weight:700;margin:0 0 10px;}
.calweek-none{font-size:13px;color:var(--muted);font-style:italic;}
.calweek-list{display:flex;flex-wrap:wrap;gap:8px;}
.calwk{display:flex;align-items:center;gap:8px;border:none;border-left:4px solid var(--line);background:#fafafa;border-radius:8px;padding:7px 11px;font:inherit;font-size:12.5px;color:var(--ink);cursor:pointer;text-align:left;transition:.14s;}
.calwk:hover{background:#f2efec;transform:translateY(-1px);box-shadow:0 3px 10px -4px rgba(42,38,32,.35);}
.calwk-d{font-size:11px;color:var(--muted);font-weight:700;white-space:nowrap;}
.calwk-t{font-weight:500;}
.calbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 12px;}
.calnav{display:flex;align-items:center;gap:6px;}
.calnav .btn.gh.sm{padding:6px 11px;background:#fff;border:1px solid var(--line);color:var(--navy);font-weight:700;}
.calnav .btn.gh.sm:hover{border-color:var(--navy);}
.caltitle{font-size:17px;font-weight:800;color:var(--navy);letter-spacing:-.3px;min-width:150px;text-align:center;}
.callegend{display:flex;flex-wrap:wrap;gap:12px;margin-left:auto;font-size:11.5px;color:var(--muted);font-weight:600;}
.callegend .cli{display:inline-flex;align-items:center;gap:5px;}
.callegend i{width:11px;height:11px;border-radius:3px;display:inline-block;}
.calgrid{background:#fff;border-radius:16px;box-shadow:0 1px 3px rgba(42,38,32,.07),0 1px 2px rgba(42,38,32,.04);overflow:hidden;border:1px solid var(--line);}
.calrow{display:grid;grid-template-columns:repeat(7,1fr);}
.calrow.calhead{background:var(--navy);}
.calh{padding:9px 6px;text-align:center;font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:#fff;font-weight:700;}
.calcell{min-height:104px;border-top:1px solid var(--line);border-left:1px solid var(--line);padding:4px 5px 6px;display:flex;flex-direction:column;gap:3px;overflow:hidden;}
.calrow .calcell:first-child{border-left:none;}
.calout{background:#f5f3ef;}
.calout .caldnum{color:#a1a1aa;}
.caldnum{font-size:11.5px;font-weight:700;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:16px;}
.caltoday{background:#fff8ec;}
.caltoday .caldnum{color:var(--amber);}
.caltodaydot{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#fff;background:var(--amber);border-radius:10px;padding:1px 6px;}
.calchip{display:block;width:100%;border:none;border-radius:5px;padding:3px 6px;font:inherit;font-size:10.5px;font-weight:600;line-height:1.25;text-align:left;color:#fff;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:filter .12s;}
.calchip:hover{filter:brightness(1.08);}
.calchip.calcont{opacity:.82;}
.calmore{font-size:10px;color:var(--muted);font-weight:700;padding:1px 4px;}
.cp-scheduled{background:#2b6cb0;}
.cp-confirmed{background:#1f7a45;}
.cp-active{background:var(--amber);}
.cp-done{background:#71717a;}
.cp-other{background:#7a4f9c;}
.callegend i.cp-scheduled{background:#2b6cb0;}
.callegend i.cp-confirmed{background:#1f7a45;}
.callegend i.cp-active{background:var(--amber);}
.callegend i.cp-done{background:#71717a;}
.callegend i.cp-other{background:#7a4f9c;}
.calwk.cp-scheduled{border-left-color:#2b6cb0;}
.calwk.cp-confirmed{border-left-color:#1f7a45;}
.calwk.cp-active{border-left-color:var(--amber);}
.calwk.cp-done{border-left-color:#71717a;}
.calwk.cp-other{border-left-color:#7a4f9c;}
@media (max-width:760px){
 .calcell{min-height:78px;padding:3px 3px 5px;}
 .calchip{font-size:9.5px;padding:2px 4px;}
 .calh{font-size:9px;padding:7px 2px;}
 .callegend{width:100%;margin-left:0;}
}
/* ==== Change Order document ==== */
.doc .cohead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0;}
.doc .cohead .colab{font-weight:bold;}
.doc .coreason{margin:10px 0;}
.doc table.cotbl{border-collapse:collapse;width:100%;margin:8px 0;}
.doc table.cotbl th,.doc table.cotbl td{border:1px solid #999;padding:4px 6px;font-size:11pt;vertical-align:top;}
.doc table.cotbl th{background:#f2f2f2;}
.doc table.cotbl input.codesc{border:none;background:transparent;font-family:inherit;font-size:inherit;color:#3f3a35;outline:none;}
.doc table.cotbl input.coamt{border:none;border-bottom:1px solid #888;background:transparent;font-family:inherit;font-size:inherit;color:#3f3a35;text-align:right;outline:none;}
.doc table.cosum{border-collapse:collapse;width:56%;min-width:300px;margin:14px 0 0 auto;}
.doc table.cosum td{padding:4px 8px;font-size:11.5pt;}
.doc table.cosum td.lab{text-align:left;}
.doc table.cosum td.amt{text-align:right;width:130px;white-space:nowrap;}
.doc table.cosum tr.conew td{border-top:2px solid #000;font-size:12.5pt;}
@media screen{.doc table.cotbl input.codesc,.doc table.cotbl input.coamt{background:rgba(11,58,134,.05);border-radius:2px;}}
/* === look & feel: premium type + motion (chrome only; documents untouched) === */
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;}
.totbar,.totbar b,.totbar .g,.pipe .stat .v,.jc .tot,.rptsc-v,.rptwin b{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";}
/* motion: hover lift + press */
.jc{transition:transform .15s ease, box-shadow .15s ease;}
.jc:hover{transform:translateY(-3px);box-shadow:0 12px 26px -12px rgba(42,38,32,.38);}
.pipe .stat,.rptsc{transition:transform .15s ease, box-shadow .15s ease;}
.pipe .stat:hover,.rptsc:hover{transform:translateY(-2px);box-shadow:0 10px 22px -12px rgba(42,38,32,.32);}
.btn:active{transform:translateY(1px);}
@keyframes sfcFade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
/* toast */
#toastwrap{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:2147483645;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;}
.toast{background:var(--navy);color:#fff;font-weight:600;font-size:13.5px;padding:11px 18px;border-radius:11px;box-shadow:0 12px 32px -8px rgba(39,39,42,.55);display:flex;align-items:center;gap:9px;animation:toastIn .22s cubic-bezier(.2,.9,.3,1.3);max-width:90vw;}
.toast .tk{color:#6fe0a0;font-weight:800;font-size:15px;}
.toast.out{animation:toastOut .2s ease forwards;}
@keyframes toastIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(10px)}}
@media print{.doc table.cotbl input.codesc,.doc table.cotbl input.coamt{color:#000;border-bottom:none;background:none!important;}}
@media (max-width:640px){.doc table.cosum{width:100%;} .doc .coreason input{width:100%!important;}}
@media print{
 header.top,.noprint{display:none!important;} body{background:#fff;} .wrap{margin:0;padding:0;max-width:none;}
 .page{border:none;box-shadow:none;border-radius:0;} .doc{padding:0;}
 .pane{display:none!important;}
 body[data-print="bid"] #pane-bid,body[data-print="spec"] #pane-spec,body[data-print="contract"] #pane-contract,body[data-print="recon"] #pane-recon,body[data-print="co"] #pane-co,body[data-print="schedule"] #pane-schedule{display:block!important;}
 body[data-print="all"] .pane{display:block!important;} body[data-print="all"] .pane{page-break-after:always;}
 input.bl,input.di{color:#000;border-bottom:none;} input.cell{border:none;color:#000;} .recin{border:none;color:#000;} .se{background:none!important;box-shadow:none!important;}
 .doc .footaddr{position:static;margin-top:22px;break-inside:avoid;} @page{margin:14mm;}
}

/* AUTO-PILOT: needs-attention strip */
.attn{background:#fff;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:12px 16px 6px;margin:0 0 16px;box-shadow:0 1px 3px rgba(42,38,32,.07);animation:sfcFade .25s ease;}
.attn-head{display:flex;align-items:center;gap:8px;padding-bottom:8px;}
.attn-title{font-weight:800;font-size:12px;color:var(--navy);text-transform:uppercase;letter-spacing:.5px;}
.attn-count{background:var(--accent);color:#fff;font-size:11px;font-weight:800;min-width:20px;height:20px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;}
.attn-x{margin-left:auto;border:none;background:transparent;color:#c4c4c9;font-size:18px;cursor:pointer;padding:0 2px;line-height:1;}
.attn-x:hover{color:var(--accent);}
.attn-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line);font-size:13px;flex-wrap:wrap;}
.attn-ico{font-size:15px;}
.attn-msg{flex:1;min-width:180px;color:var(--ink);}
.attn-act{display:flex;gap:6px;margin-left:auto;}
@media (max-width:640px){.attn-row{align-items:flex-start;} .attn-act{margin-left:25px;}}
/* AUTO-PILOT: signed chip on job cards */
.jc .mgrp{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;}
.chip-signed{background:#e6f4ea;color:var(--green);font-size:10px;font-weight:800;padding:3px 8px;border-radius:20px;letter-spacing:.3px;white-space:nowrap;}
/* ==== SMART BID ENTRY ==== */
.cell.rate-warn{outline:2px solid #d9a12b;background:#fdf6e6;}
.cell.invalid.rate-warn{outline:2px solid var(--accent);background:#fdecea;} /* letter-invalid always wins over the amber outlier flag */
input.cell::placeholder{color:#a1a1aa;font-style:italic;}

/* CompanyCam settings note — muted read-only helper text inside the Settings card */
#settings .ccnote{font-size:12px;color:var(--muted);line-height:1.5;margin:2px 0 6px;}
#settings .ccnote code{background:#f1f3f5;border:1px solid #e2e6ea;border-radius:5px;padding:1px 5px;font-size:11px;color:#4a453e;}

/* CompanyCam field-activity chip on schedule phase rows */
.ccchip{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:999px;background:#e6f6ec;color:var(--green,#1f7a45);font-size:11px;font-weight:700;line-height:1.4;white-space:nowrap;vertical-align:middle}
@media print{.ccchip{display:none}}

/* ===== Company-wide auto-scheduler ===== */
.calokbar{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#3f7d4e;background:#f2faf4;border:1px solid #cfe8d6;border-radius:8px;padding:5px 10px;margin:0 0 10px;}
.calconflictbar{font-size:12.5px;color:#8c1d1d;background:#fdf1f1;border:1px solid #f0c9c9;border-radius:10px;padding:8px 12px;margin:0 0 12px;line-height:1.5;}
.calconflictbar .ccb-det{display:block;font-size:11.5px;color:#a24a4a;margin-top:2px;}
.schedconflict{display:inline-flex;align-items:center;font-size:11.5px;font-weight:700;color:#8c1d1d;background:#fdf1f1;border:1px solid #f0c9c9;border-radius:999px;padding:3px 9px;cursor:help;}
.asmodal{max-width:520px;}
.astbl{width:100%;border-collapse:collapse;margin:2px 0 8px;font-size:12.5px;}
.astbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);padding:4px 8px 4px 0;border-bottom:1px solid var(--line);}
.astbl td{padding:5px 8px 5px 0;border-bottom:1px solid #f0f2f5;}
.astbl .asto{white-space:nowrap;}
.astbl .asto b{color:var(--navy);}
.asnew{font-size:10px;font-weight:700;color:#0b6b35;background:#e9f7ee;border-radius:999px;padding:1px 7px;margin-left:5px;vertical-align:1px;}
.assum{font-size:12px;color:var(--muted);font-weight:600;}
.asnote{font-size:11px;color:var(--muted);margin-top:6px;}

/* ===== PHOTOS TAB (ph-) ===== */
.ph-wrap{animation:sfcFade .18s ease;}
.ph-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:12px;box-shadow:0 1px 3px rgba(42,38,32,.07);}
.ph-add{cursor:pointer;}
.ph-count{margin-left:auto;font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;}
.ph-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.ph-fchip{border:1px solid var(--line);background:#fff;color:var(--ink);font-size:12px;font-weight:700;padding:5px 11px;border-radius:20px;cursor:pointer;}
.ph-fchip.on{background:var(--navy);border-color:var(--navy);color:#fff;}
.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;}
.ph-cell{position:relative;aspect-ratio:1;border:1px solid var(--line);border-radius:10px;overflow:hidden;padding:0;background:#dfe5ec;cursor:pointer;}
.ph-cell:focus-visible{outline:3px solid var(--navy);outline-offset:1px;}
.ph-thumb{width:100%;height:100%;max-width:100%;object-fit:cover;display:block;}
.ph-date{position:absolute;left:6px;bottom:6px;background:rgba(39,39,42,.72);color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;font-variant-numeric:tabular-nums;pointer-events:none;}
.ph-dots{position:absolute;right:6px;top:6px;display:flex;gap:3px;pointer-events:none;}
.ph-dot{width:9px;height:9px;border-radius:50%;border:1.5px solid #fff;display:block;}
.ph-load{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:13px;padding:28px 8px;}
.ph-spinner{width:18px;height:18px;border-radius:50%;border:2.5px solid var(--line);border-top-color:var(--navy);animation:phspin .8s linear infinite;display:inline-block;flex:0 0 auto;}
@keyframes phspin{to{transform:rotate(360deg)}}
.ph-empty{background:#fff;border:1px dashed var(--line);border-radius:12px;padding:34px 18px;text-align:center;color:var(--muted);font-size:13.5px;}
.ph-empty b{color:var(--ink);display:block;margin-bottom:4px;font-size:15px;}
.ph-emoji{font-size:28px;margin-bottom:8px;}
/* dashboard job-card count chip (sits inside .jc .meta .mgrp) */
.ph-chip{background:#f2efec;color:var(--navy);font-size:10px;font-weight:800;padding:3px 8px;border-radius:20px;white-space:nowrap;font-variant-numeric:tabular-nums;}
/* lightbox — z-index deliberately BELOW toasts (2147483645) and .modalov (2147483646) so uiConfirm + toasts stack on top */
.ph-light{position:fixed;inset:0;background:rgba(10,18,28,.86);z-index:2147483600;display:flex;align-items:center;justify-content:center;padding:12px;animation:phfade .14s ease;}
@keyframes phfade{from{opacity:0}to{opacity:1}}
.ph-lbox{display:flex;flex-direction:column;width:min(1000px,100%);max-height:100%;background:#101a26;border-radius:14px;overflow:hidden;color:#e8edf3;box-shadow:0 24px 60px -18px rgba(0,0,0,.7);}
.ph-ltop{display:flex;align-items:center;gap:12px;padding:8px 8px 8px 14px;font-size:12.5px;flex:0 0 auto;}
.ph-lmeta{color:#c8d3df;}
.ph-lmeta a{color:#8fc1ff;text-decoration:none;font-weight:700;}
.ph-lnum{margin-left:auto;color:#9fb0c2;font-variant-numeric:tabular-nums;white-space:nowrap;}
.ph-x{background:none;border:none;color:#cdd7e1;font-size:26px;line-height:1;cursor:pointer;min-width:44px;min-height:44px;flex:0 0 auto;border-radius:10px;}
.ph-x:hover{color:#fff;background:rgba(255,255,255,.08);}
.ph-lmain{display:flex;align-items:center;justify-content:center;gap:6px;flex:1;min-height:0;padding:0 8px;}
.ph-full{max-width:calc(100% - 116px);max-height:min(60vh,620px);object-fit:contain;border-radius:8px;background:#0a121c;}
.ph-arrow{width:48px;height:48px;min-width:44px;min-height:44px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:26px;line-height:1;cursor:pointer;flex:0 0 auto;}
.ph-arrow:hover{background:rgba(255,255,255,.24);}
.ph-lside{padding:10px 14px 14px;overflow:auto;flex:0 1 auto;}
.ph-lhead{font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#9fb0c2;margin:10px 0 6px;}
.ph-tagrow{display:flex;gap:6px;flex-wrap:wrap;}
.ph-tag{border:1px solid rgba(255,255,255,.25);background:transparent;color:#efeff1;font-size:12px;font-weight:700;padding:5px 11px;border-radius:20px;cursor:pointer;}
.ph-tag.on{background:var(--accent);border-color:var(--accent);color:#fff;}
.ph-comments{display:flex;flex-direction:column;gap:6px;max-height:132px;overflow:auto;margin-bottom:8px;}
.ph-com{background:rgba(255,255,255,.07);border-radius:8px;padding:6px 10px;font-size:12.5px;display:flex;gap:10px;justify-content:space-between;align-items:baseline;}
.ph-comtx{overflow-wrap:anywhere;}
.ph-comat{color:#8ea0b3;font-size:10.5px;white-space:nowrap;font-variant-numeric:tabular-nums;}
.ph-nocom{color:#8ea0b3;font-size:12px;}
.ph-cin{width:100%;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);border-radius:9px;color:#fff;padding:9px 11px;font-size:13px;box-sizing:border-box;}
.ph-cin::placeholder{color:#8ea0b3;}
.ph-lacts{margin-top:12px;display:flex;justify-content:flex-end;}
.ph-del{border:1px solid rgba(255,120,100,.45);background:transparent;color:#ffb4a8;font-size:12.5px;font-weight:700;padding:8px 14px;border-radius:9px;cursor:pointer;min-height:38px;}
.ph-del:hover{background:rgba(192,57,43,.25);color:#fff;}
@media (max-width:760px){.ph-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:480px){.ph-grid{grid-template-columns:repeat(2,1fr);}.ph-lmain{padding:0 4px;gap:3px;}.ph-arrow{width:44px;height:44px;font-size:22px;}.ph-full{max-width:calc(100% - 100px);}}
/* photos NEVER print — ID specificity beats body[data-print="all"] .pane{display:block!important} */
@media print{#pane-photos{display:none!important;}}@media print{#pane-check{display:none!important;}}

/* ===== PHOTO ANNOTATIONS (an-) — full-screen canvas editor above the photo lightbox ===== */
@keyframes anfade{from{opacity:0}to{opacity:1}}
@keyframes anspin{to{transform:rotate(360deg)}}
.an-editor{position:fixed;inset:0;z-index:2147483620;background:rgba(8,14,22,.95);display:flex;flex-direction:column;animation:anfade .14s ease;}
.an-top{display:flex;align-items:center;gap:10px;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));}
.an-title{font-weight:800;font-size:14px;color:#efeff1;margin-right:auto;}
.an-ghost{border:1px solid rgba(255,255,255,.3);background:transparent;color:#efeff1;font-size:13px;font-weight:700;padding:8px 14px;border-radius:9px;cursor:pointer;min-height:38px;}
.an-ghost:hover{background:rgba(255,255,255,.12);color:#fff;}
.an-savebtn{border:0;background:var(--green);color:#fff;font-size:13px;font-weight:800;padding:8px 16px;border-radius:9px;cursor:pointer;min-height:38px;}
.an-savebtn:disabled{opacity:.6;cursor:default;}
.an-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:4px 10px;overflow:hidden;}
.an-cv{max-width:100%;max-height:100%;touch-action:none;cursor:crosshair;border-radius:6px;box-shadow:0 8px 32px rgba(0,0,0,.55);}
.an-load{color:#efeff1;font-size:13px;font-weight:700;display:flex;align-items:center;gap:10px;}
.an-spin{width:16px;height:16px;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:anspin .7s linear infinite;display:inline-block;}
.an-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;padding:10px 12px calc(12px + env(safe-area-inset-bottom));}
.an-tool{border:1px solid rgba(255,255,255,.28);background:transparent;color:#efeff1;font-size:14px;font-weight:700;padding:7px 11px;border-radius:9px;cursor:pointer;min-height:38px;display:inline-flex;align-items:center;gap:6px;}
.an-tool.on{background:var(--accent);border-color:var(--accent);color:#fff;}
.an-tlab{font-size:11.5px;}
.an-sep{width:1px;height:24px;background:rgba(255,255,255,.18);}
.an-sw{width:28px;height:28px;border-radius:50%;border:2px solid rgba(255,255,255,.35);cursor:pointer;padding:0;}
.an-sw.on{box-shadow:0 0 0 2px #0b1420,0 0 0 4px #fff;}
.an-wd{width:34px;height:34px;border-radius:9px;border:1px solid rgba(255,255,255,.28);background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;}
.an-wd i{display:block;border-radius:50%;background:#efeff1;}
.an-wd.on{background:rgba(255,255,255,.18);border-color:#fff;}
.an-wd.on i{background:#fff;}
.an-abtn{border:1px solid rgba(255,255,255,.3);background:transparent;color:#efeff1;font-size:12.5px;font-weight:700;padding:8px 14px;border-radius:9px;cursor:pointer;min-height:38px;margin-right:auto;}
.an-abtn:hover{background:rgba(255,255,255,.12);color:#fff;}
@media(max-width:520px){.an-tlab{display:none;}.an-tool{padding:7px 10px;}.an-bar{gap:6px;}}

/* ===== BEFORE/AFTER PAIRS + CLIENT GALLERY (gal-) ===== */
.gal-btn.on{background:var(--navy);border-color:var(--navy);color:#fff;}
.ph-grid.gal-selmode .ph-cell{cursor:copy;}
.ph-cell.gal-sel{outline:3px solid var(--accent);outline-offset:-3px;}
.ph-cell.gal-sel::after{content:'✓';position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;pointer-events:none;box-shadow:0 1px 4px rgba(0,0,0,.35);}
.gal-badge{position:absolute;right:6px;bottom:6px;background:rgba(39,39,42,.72);color:#fff;font-size:11px;line-height:1.3;padding:2px 6px;border-radius:10px;pointer-events:none;}
/* floating action bar — z BELOW the lightbox (2147483600), modals & toasts stack above everything */
.gal-fab{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:2147483590;background:var(--navy);color:#fff;border-radius:14px;box-shadow:0 12px 30px -8px rgba(10,20,35,.55);display:flex;align-items:center;gap:8px;padding:10px 12px;flex-wrap:wrap;justify-content:center;max-width:calc(100vw - 24px);animation:sfcFade .18s ease;}
.gal-fab .gal-n{font-weight:800;font-size:13px;padding:0 4px;white-space:nowrap;font-variant-numeric:tabular-nums;}
.gal-fab button{border:none;border-radius:9px;font-weight:700;font-size:12.5px;padding:8px 12px;cursor:pointer;min-height:38px;}
.gal-fab .gal-share{background:var(--accent);color:#fff;}
.gal-fab .gal-pair{background:rgba(255,255,255,.14);color:#fff;}
.gal-fab .gal-done{background:transparent;color:#cdd7e1;}
.gal-fab button[disabled]{opacity:.45;cursor:not-allowed;}
@media print{.gal-fab{display:none!important;}}

/* ---- Photo report (phr-) — options modal rows + progress pill ---- */
.phr-btn{white-space:nowrap;}
.phr-opts{padding:10px 22px 2px;display:flex;flex-direction:column;gap:8px;}
.phr-opt{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink);cursor:pointer;}
.phr-opt input{width:16px;height:16px;accent-color:var(--navy);cursor:pointer;flex:0 0 auto;}
.phr-opt.phr-static{color:var(--muted);cursor:default;}
.phr-prog{pointer-events:none;}
.phr-spin{width:14px;height:14px;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;display:inline-block;flex:0 0 auto;animation:phrspin .8s linear infinite;}
@keyframes phrspin{to{transform:rotate(360deg)}}

/* ---- Activity Feed (fd-*) — mobile-first ---- */
.fd-note{display:flex;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:0 0 12px;box-shadow:0 1px 3px rgba(42,38,32,.07);}
.fd-note select{flex:1 1 150px;min-width:0;border:1px solid var(--line);border-radius:8px;padding:8px;font:inherit;background:#fff;color:var(--navy);}
.fd-note input{flex:2 1 200px;min-width:0;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit;}
.fd-note input:focus,.fd-note select:focus{outline:2px solid var(--navy);outline-offset:1px;}
.fd-chips{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px;}
.fd-chip{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;padding:5px 13px;font-size:12px;font-weight:700;cursor:pointer;}
.fd-chip:hover{border-color:var(--navy);color:var(--navy);}
.fd-chip.on,.fd-chip.on:hover{background:var(--navy);border-color:var(--navy);color:#fff;}
.fd-list{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(42,38,32,.07);}
.fd-day{position:sticky;top:0;z-index:1;background:#f6f8fa;color:var(--muted);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;padding:6px 14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.fd-list .fd-day:first-child{border-top:0;}
.fd-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);}
.fd-list .fd-row:last-child{border-bottom:0;}
.fd-ic{flex:0 0 auto;font-size:15px;line-height:1.35;}
.fd-body{flex:1 1 auto;min-width:0;}
.fd-job{display:inline;border:0;background:none;padding:0;margin:0 6px 0 0;font:inherit;font-size:13.5px;font-weight:700;color:var(--navy);cursor:pointer;}
.fd-job:hover{color:var(--accent);text-decoration:underline;}
.fd-txt{font-size:13.5px;word-break:break-word;}
.fd-ago{flex:0 0 auto;color:var(--muted);font-size:11.5px;white-space:nowrap;margin-left:auto;padding-top:2px;}
@media(max-width:560px){.fd-row{flex-wrap:wrap;}.fd-ago{width:100%;margin-left:25px;padding-top:0;}}

/* ===== Review requests (rv-*) ===== */
.rv-btn{border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;line-height:1.6;cursor:pointer;white-space:nowrap;transition:.14s ease;}
.rv-btn:hover{border-color:var(--amber);background:#fdf6e7;}
#rvmodal{position:fixed;inset:0;z-index:9200;background:rgba(39,39,42,.55);display:flex;align-items:flex-start;justify-content:center;padding:24px 20px;overflow:auto;}
#rvmodal .rv-card{background:#fff;border-radius:14px;max-width:520px;width:100%;padding:22px 26px 24px;box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative;margin:auto;border-top:4px solid var(--accent);}
#rvmodal h2{margin:0 0 4px;font-size:18px;color:var(--navy);}
#rvmodal .rv-sub{font-size:12px;color:var(--muted);margin-bottom:12px;}
#rvmodal .rv-text{white-space:pre-wrap;word-break:break-word;background:#fafafa;border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:13.5px;line-height:1.5;color:var(--ink);margin-bottom:14px;}
#rvmodal .rv-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
#rvmodal .hclose{position:absolute;top:10px;right:12px;width:34px;height:34px;border:none;background:none;font-size:24px;line-height:1;color:#a8a29a;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:.14s ease;}
#rvmodal .hclose:hover{color:var(--accent);background:#f4f2ed;}
#settings .rv-msg{width:100%;box-sizing:border-box;border:1px solid #e4e4e7;border-radius:7px;padding:8px 10px;font-size:13px;font-family:inherit;line-height:1.45;resize:vertical;margin:2px 0 4px;}
@media print{.rv-btn,#rvmodal{display:none!important;}}

/* ===== Dispatch 'Today' board (td-*) — mobile-first ===== */
.td-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0 12px;}
.td-date{font-weight:700;color:var(--navy);font-size:14px;margin-left:4px;}
.td-wknd{color:var(--amber);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;}
.td-pick{margin-left:auto;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:#fff;color:var(--ink);font-family:inherit;}
.td-strip{display:flex;gap:18px;align-items:baseline;background:var(--navy);color:#fff;border-radius:10px;padding:10px 16px;margin:0 0 14px;flex-wrap:wrap;font-size:12px;}
.td-strip b{font-size:17px;margin-right:4px;}
.td-strip-d{margin-left:auto;opacity:.75;}
.td-group{background:#fff;border:1px solid var(--line);border-radius:10px;margin:0 0 12px;overflow:hidden;box-shadow:0 1px 2px rgba(42,38,32,.05);}
.td-ghead{display:flex;align-items:center;gap:10px;padding:11px 14px;background:#f3f1ea;font-weight:700;color:var(--navy);font-size:14px;flex-wrap:wrap;}
.td-un .td-ghead{color:var(--muted);}
.td-call{text-decoration:none;font-size:15px;line-height:1;}
.td-conf{color:var(--accent);font-size:12px;font-weight:700;}
.td-gn{margin-left:auto;background:#eae5dd;color:var(--navy);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;}
.td-un .td-gn{color:var(--muted);}
.td-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--line);flex-wrap:wrap;}
.td-what{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 140px;}
.td-trade{font-weight:700;font-size:13px;color:var(--ink);}
.td-job{background:none;border:0;padding:0;font-family:inherit;font-size:12px;color:var(--navy);cursor:pointer;text-align:left;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px;}
.td-job:hover{color:var(--accent);}
.td-day{color:var(--muted);font-size:12px;white-space:nowrap;}
.td-st{border:1px solid var(--line);border-radius:999px;padding:8px 15px;min-height:36px;display:inline-flex;align-items:center;font-size:12px;font-weight:700;cursor:pointer;background:#fff;color:var(--muted);text-transform:capitalize;font-family:inherit;white-space:nowrap;transition:.14s ease;}
.td-st:hover{border-color:var(--navy);color:var(--navy);}
.td-st.st-scheduled{color:var(--navy);border-color:var(--navy);}
.td-st.st-inprogress{color:#fff;background:var(--amber);border-color:var(--amber);}
.td-st.st-done{color:#fff;background:var(--green);border-color:var(--green);}
.td-row.st-done .td-trade{color:var(--muted);text-decoration:line-through;}
@media(min-width:700px){.td-row{flex-wrap:nowrap;}.td-day{margin-left:auto;}}

/* === Phone calendar (ICS feed) — Settings section === */
#settings .icsnote{color:var(--muted);font-size:12px;margin-bottom:8px;line-height:1.55;}
#settings .icsoff{color:var(--muted);font-size:12.5px;background:#f8f6f2;border:1px dashed #e4e4e7;border-radius:8px;padding:9px 12px;}
#settings .icsrow{display:flex;gap:8px;align-items:center;margin-bottom:6px;}
#settings .icsrow input{flex:1;min-width:0;width:auto;text-align:left;font-size:12px;color:#4a453e;background:#f8f6f2;padding:8px 10px;border:1px solid #e4e4e7;border-radius:7px;box-sizing:border-box;font-family:inherit;}
#settings .icsrow .btn{white-space:nowrap;flex:0 0 auto;}
#settings .icshelp{font-size:12.5px;color:#4a453e;margin-top:2px;}
#settings .icshelp summary{cursor:pointer;color:var(--navy);font-weight:600;font-size:12px;padding:2px 0;}
#settings .icshelp>div{margin-top:6px;line-height:1.6;}
#settings .icshelp a{color:var(--accent);}
#settings .icsfine{color:var(--muted);font-size:11.5px;display:inline-block;margin-top:4px;}

/* ===== dd: drag-and-drop calendar rescheduling ===== */
.calchip.ddchip{cursor:grab;}
.calchip.ddchip:active{cursor:grabbing;}
.calchip.ddchip:focus-visible{outline:2px solid var(--navy);outline-offset:1px;}
.calchip.dd-src{opacity:.45;filter:grayscale(.35);}
.calcell.dd-over{background:#eef8f0;box-shadow:inset 0 0 0 2px var(--green);}
.ddsheet .ddsheet-date{width:calc(100% - 44px);}
.ddsheet .ddsheet-date.dd-bad{border-color:var(--accent);box-shadow:0 0 0 2px rgba(192,57,43,.15);}
.ddsheet .ddsheet-sp{flex:1;}
@media (max-width:640px){
 .ddsheetov{align-items:flex-end;padding:0;}
 .modal.ddsheet{max-width:none;border-radius:16px 16px 0 0;animation:ddup .18s ease;}
 .modal.ddsheet .mfoot{flex-wrap:wrap;padding-bottom:calc(18px + env(safe-area-inset-bottom));}
}
@keyframes ddup{from{transform:translateY(24px);opacity:.6;}to{transform:translateY(0);opacity:1;}}

/* ===== Time clock (tt*) — floating pills, bottom-LEFT, just under toasts (toastwrap is 2147483645) ===== */
#ttpills{position:fixed;left:14px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:2147483644;display:flex;flex-direction:column;gap:8px;align-items:flex-start;}
.ttpill{background:var(--navy);color:#fff;border:none;font-family:inherit;font-weight:700;font-size:13px;padding:9px 14px;border-radius:999px;box-shadow:0 12px 30px -10px rgba(39,39,42,.6);display:flex;align-items:center;gap:8px;cursor:pointer;max-width:min(78vw,360px);transition:.14s ease;}
.ttpill:hover{background:#2c516f;transform:translateY(-1px);}
.ttpill .ttlab{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.ttpill .ttdur{flex:0 0 auto;background:rgba(255,255,255,.18);border-radius:999px;padding:2px 9px;font-variant-numeric:tabular-nums;font-weight:800;}
.ttmore{font-size:11.5px;font-weight:700;color:var(--navy);background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 11px;box-shadow:0 6px 18px -8px rgba(39,39,42,.35);}
/* clock-in + client-update modals (self-contained; same look as #settings/#rvmodal cards) */
#ttmodal,#crmodal{position:fixed;inset:0;z-index:9300;background:rgba(39,39,42,.55);display:flex;align-items:flex-start;justify-content:center;padding:24px 20px;overflow:auto;animation:mfade .16s ease;}
.ttcard,.crcard{background:#fff;border-radius:14px;max-width:460px;width:100%;padding:22px 26px 24px;box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative;margin:auto;border-top:4px solid var(--navy);animation:mpop .16s ease;}
.ttcard h2,.crcard h2{margin:0 0 6px;font-size:18px;color:var(--navy);padding-right:30px;}
#ttmodal .hclose,#crmodal .hclose{position:absolute;top:10px;right:12px;width:34px;height:34px;border:none;background:none;font-size:24px;line-height:1;color:#a8a29a;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:.14s ease;}
#ttmodal .hclose:hover,#crmodal .hclose:hover{color:var(--accent);background:#f4f2ed;}
.ttcard .hrow,.crcard .hrow{display:flex;gap:10px;margin-top:16px;justify-content:flex-end;}
.ttsub{color:var(--muted);font-size:12px;margin-bottom:10px;}
.ttcard .ttname{display:flex;width:100%;justify-content:space-between;align-items:center;text-align:left;margin:0 0 7px;}
.tton{font-size:11px;font-weight:700;color:var(--green);}
.ttother{display:flex;gap:8px;margin-top:10px;}
.ttother input{flex:1;min-width:0;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:13px;}
.ttother input:focus{outline:none;border-color:var(--navy);}
/* ===== Client reminders (cr*) ===== */
.crphase{font-size:12.5px;color:#4a453e;background:#fafafa;border:1px solid var(--line);border-radius:8px;padding:8px 11px;margin:4px 0 10px;}
.crmsg{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-family:inherit;font-size:13.5px;line-height:1.5;resize:vertical;}
.crmsg:focus{outline:none;border-color:var(--navy);}
.cracts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.cracts .btn[disabled]{opacity:.5;cursor:not-allowed;}
@media (max-width:600px){#ttpills{left:10px;bottom:calc(10px + env(safe-area-inset-bottom));}.ttpill{font-size:12px;padding:8px 12px;max-width:84vw;}.cracts .btn{flex:1;}}
@media print{#ttpills,#ttmodal,#crmodal{display:none!important;}}

/* ===== CHECKLISTS + PROJECT TASKS (ck-) ===== */
.ck-wrap{max-width:880px;margin:0 auto;padding:4px 2px 40px;}
.ck-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 14px;}
.ck-bar .ck-count{margin-left:auto;}
.ck-count{color:var(--muted);font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;}
.ck-empty{background:#fff;border:1px dashed var(--line);border-radius:12px;padding:34px 18px;text-align:center;color:var(--muted);font-size:13.5px;margin-bottom:14px;}
.ck-empty b{color:var(--ink);display:block;margin-bottom:4px;font-size:15px;}
.ck-emoji{font-size:28px;margin-bottom:8px;}
.ck-list{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:14px;}
.ck-lhead{display:flex;align-items:center;gap:8px;}
.ck-lname{flex:1;min-width:120px;border:none;background:transparent;font-weight:800;font-size:15.5px;color:var(--navy);padding:8px 4px;border-bottom:1px dashed transparent;box-sizing:border-box;}
.ck-lname:focus{outline:none;border-bottom-color:var(--line);}
.ck-pct{font-size:12px;font-weight:800;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;}
.ck-prog{height:8px;border-radius:6px;background:var(--line);overflow:hidden;margin:6px 0 10px;}
.ck-fill{height:100%;background:var(--green);border-radius:6px;transition:width .25s ease;}
.ck-item{display:flex;align-items:center;gap:8px;padding:3px 0;border-bottom:1px solid #f1f4f7;}
.ck-item:last-of-type{border-bottom:none;}
.ck-box{width:44px;height:44px;min-width:44px;border-radius:10px;border:2px solid var(--line);background:#fff;font-size:20px;line-height:1;color:transparent;cursor:pointer;flex:0 0 auto;transition:background .15s,border-color .15s;}
.ck-box:hover{border-color:var(--green);}
.ck-item.done>.ck-box,.ck-task.done>.ck-box{background:var(--green);border-color:var(--green);color:#fff;}
.ck-text{flex:1;min-width:110px;border:none;background:transparent;font-size:14px;color:var(--ink);padding:10px 2px;box-sizing:border-box;}
.ck-text:focus{outline:none;}
.ck-item.done .ck-text,.ck-task.done .ck-ttext{text-decoration:line-through;color:var(--muted);}
.ck-when{font-size:10.5px;color:var(--muted);white-space:nowrap;}
.ck-cam{width:44px;height:44px;min-width:44px;border-radius:10px;border:1px solid var(--line);background:#fafafa;font-size:17px;cursor:pointer;flex:0 0 auto;}
.ck-cam:hover{border-color:var(--navy);}
.ck-pchip{width:44px;height:44px;min-width:44px;padding:0;border:2px solid var(--green);border-radius:10px;overflow:hidden;cursor:pointer;background:#eeeae3;flex:0 0 auto;}
.ck-pchip img{width:100%;height:100%;object-fit:cover;display:block;}
.ck-pflag{font-size:15px;flex:0 0 auto;}
.ck-x{background:none;border:none;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;min-width:44px;min-height:44px;border-radius:10px;flex:0 0 auto;}
.ck-x:hover{color:var(--accent);background:#faf1ef;}
.ck-addrow{display:flex;gap:8px;margin-top:8px;}
.ck-ain{flex:1;min-width:0;border:1px dashed var(--line);border-radius:10px;padding:11px 12px;font-size:13.5px;min-height:44px;box-sizing:border-box;background:#fafafa;}
.ck-ain:focus{outline:none;border-color:var(--navy);border-style:solid;background:#fff;}
/* tasks */
.ck-tsec{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-top:18px;}
.ck-thead{display:flex;align-items:center;gap:10px;}
.ck-h3{margin:0;font-size:15.5px;color:var(--navy);flex:1;}
.ck-tsec .ck-addrow{margin:10px 0 6px;}
.ck-task{display:flex;align-items:center;gap:8px;padding:4px 6px;border-bottom:1px solid #f1f4f7;flex-wrap:wrap;border-radius:8px;}
.ck-task:last-of-type{border-bottom:none;}
.ck-ttext{flex:1 1 150px;}
.ck-twho{width:96px;border:1px solid var(--line);border-radius:8px;padding:8px;font-size:12.5px;min-height:38px;box-sizing:border-box;}
.ck-tdue{width:136px;border:1px solid var(--line);border-radius:8px;padding:7px 6px;font-size:12.5px;min-height:38px;box-sizing:border-box;background:#fff;color:var(--ink);}
.ck-task.late{background:#fdf1ef;box-shadow:inset 3px 0 0 var(--accent);}
.ck-task.late .ck-tdue{border-color:var(--accent);color:var(--accent);font-weight:700;}
.ck-latechip{background:var(--accent);color:#fff;font-size:10px;font-weight:800;padding:3px 8px;border-radius:20px;white-space:nowrap;}
.ck-tempty{color:var(--muted);font-size:12.5px;padding:6px 2px 2px;}
/* template chooser + photo picker modals (reuse core .modalov/.modal chrome) */
.ck-tplopts{display:flex;flex-direction:column;gap:8px;margin:4px 0 2px;max-height:48vh;overflow:auto;}
.ck-tplopt{text-align:left;border:1px solid var(--line);background:#fafafa;border-radius:10px;padding:10px 12px;cursor:pointer;font-size:13px;color:var(--ink);}
.ck-tplopt b{display:block;font-size:13.5px;color:var(--navy);}
.ck-tplopt span{color:var(--muted);font-size:11.5px;}
.ck-tplopt:hover,.ck-tplopt:focus{border-color:var(--navy);background:#f2f6fa;}
.ck-pickmodal{width:min(560px,94vw);}
.ck-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;max-height:52vh;overflow:auto;margin:6px 0 2px;padding:2px;}
.ck-pcell{padding:0;border:2px solid transparent;border-radius:10px;overflow:hidden;cursor:pointer;background:#eeeae3;aspect-ratio:1/1;}
.ck-pcell img{width:100%;height:100%;object-fit:cover;display:block;}
.ck-pcell:hover,.ck-pcell:focus{border-color:var(--navy);}
.ck-pcell.on{border-color:var(--accent);}
/* proof viewer overlay — deliberately BELOW .modalov (2147483646) and toasts (2147483645) */
@keyframes ckfade{from{opacity:0}to{opacity:1}}
.ck-light{position:fixed;inset:0;background:rgba(10,18,28,.88);z-index:2147483610;display:flex;align-items:center;justify-content:center;padding:14px;animation:ckfade .14s ease;}
.ck-lfull{max-width:96%;max-height:88vh;object-fit:contain;border-radius:10px;background:#0a121c;}
.ck-lx{position:absolute;top:10px;right:10px;background:rgba(255,255,255,.1);border:none;color:#fff;font-size:26px;line-height:1;cursor:pointer;min-width:44px;min-height:44px;border-radius:10px;}
.ck-lx:hover{background:rgba(255,255,255,.22);}
/* dashboard job-card chip (sits inside .jc .meta .mgrp, mirrors .ph-chip) */
.ck-chip{background:#edf6ef;color:#22713e;font-size:10px;font-weight:800;padding:3px 8px;border-radius:20px;white-space:nowrap;font-variant-numeric:tabular-nums;}
.ck-chip.ok{background:var(--green);color:#fff;}
/* settings template rows */
.ck-tplrow{border:1px solid var(--line);border-radius:10px;padding:8px;margin-bottom:8px;background:#fafafa;}
.ck-tpltop{display:flex;gap:8px;align-items:center;margin-bottom:6px;}
.ck-tplname{flex:1;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13px;box-sizing:border-box;text-align:left;}
.ck-tplitems{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12.5px;box-sizing:border-box;resize:vertical;font-family:inherit;}
@media (max-width:520px){.ck-twho{width:84px;}.ck-tdue{width:128px;}.ck-when{display:none;}}

/* cci- CompanyCam job import */
.cci-ov{position:fixed;inset:0;background:rgba(39,39,42,.5);display:flex;align-items:flex-start;justify-content:center;z-index:2147483644;padding:20px;overflow:auto;animation:mfade .14s ease;}
.cci-card{background:#fff;border-radius:14px;box-shadow:0 24px 60px -12px rgba(39,39,42,.55);width:100%;max-width:520px;margin:auto;animation:mpop .16s ease;display:flex;flex-direction:column;max-height:86vh;}
.cci-head{display:flex;align-items:center;justify-content:space-between;font-size:16px;font-weight:800;color:var(--navy);padding:16px 20px 8px;}
.cci-x{border:none;background:none;font-size:24px;color:#a8a29a;cursor:pointer;border-radius:8px;width:34px;height:34px;}
.cci-x:hover{color:var(--accent);background:#f4f2ed;}
.cci-sec{font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);padding:12px 20px 4px;display:flex;align-items:center;gap:8px;}
.cci-n{background:var(--accent);color:#fff;font-size:11px;min-width:20px;height:20px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px;}
.cci-row{display:flex;align-items:center;gap:11px;padding:9px 20px;border-top:1px solid var(--line);cursor:pointer;}
.cci-row:hover{background:#f8fafb;}
.cci-ck{width:19px;height:19px;flex:none;}
.cci-info{display:flex;flex-direction:column;min-width:0;flex:1;}
.cci-info b{font-size:14px;color:var(--ink);}
.cci-sub{font-size:12px;color:var(--muted);}
.cci-m{cursor:default;}
.cci-empty{padding:26px 20px;text-align:center;color:var(--muted);font-size:14px;}
.cci-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px 16px;border-top:1px solid var(--line);margin-top:6px;}
.cci-ban{background:#fff;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:12px;padding:12px 16px;margin:0 0 16px;box-shadow:0 1px 3px rgba(42,38,32,.07);display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;animation:sfcFade .25s ease;}
.cci-ban .cci-act{display:flex;gap:6px;margin-left:auto;}


/* ===== cc2- : CompanyCam photos in the app gallery (view-only) ===== */
.cc2-head{margin:14px 0 8px;font-size:12px;font-weight:800;color:var(--muted);letter-spacing:.4px;text-transform:uppercase;display:flex;align-items:center;gap:6px;}
.cc2-headnote{font-weight:600;text-transform:none;letter-spacing:0;color:var(--muted);opacity:.8;}
.cc2-grid{margin-top:2px;}
.cc2-badge{position:absolute;top:6px;right:6px;background:#1b6fb8;color:#fff;font-size:9px;font-weight:800;letter-spacing:.5px;padding:2px 6px;border-radius:8px;pointer-events:none;box-shadow:0 1px 4px rgba(0,0,0,.35);}
.cc2-light{position:fixed;inset:0;background:rgba(10,18,28,.86);z-index:2147483600;display:flex;align-items:center;justify-content:center;padding:12px;animation:phfade .14s ease;}
.cc2-lbox{display:flex;flex-direction:column;width:min(900px,100%);max-height:100%;background:#101a26;border-radius:14px;overflow:hidden;color:#e8edf3;box-shadow:0 24px 60px -18px rgba(0,0,0,.7);}
.cc2-ltop{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 12px;}
.cc2-btag{position:static;flex:0 0 auto;}
.cc2-lmeta{font-size:13px;color:#cdd7e1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cc2-lnum{margin-left:auto;font-size:12px;color:#9fb0c0;font-variant-numeric:tabular-nums;flex:0 0 auto;}
.cc2-x{background:none;border:none;color:#cdd7e1;font-size:26px;line-height:1;cursor:pointer;min-width:44px;min-height:44px;flex:0 0 auto;border-radius:10px;}
.cc2-x:hover{background:rgba(255,255,255,.08);}
.cc2-lmain{display:flex;align-items:center;justify-content:center;gap:6px;padding:0 8px;min-height:0;flex:1;}
.cc2-full{max-width:calc(100% - 120px);max-height:min(70vh,640px);object-fit:contain;border-radius:6px;background:#0a121c;}
.cc2-arrow{width:48px;height:48px;min-width:44px;min-height:44px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:26px;line-height:1;cursor:pointer;flex:0 0 auto;}
.cc2-arrow:hover{background:rgba(255,255,255,.22);}
.cc2-lfoot{padding:10px 14px 14px;font-size:12.5px;color:#9fb0c0;text-align:center;}
.cc2-open{color:#7db8e8;font-weight:700;text-decoration:none;margin-left:6px;}
.cc2-open:hover{text-decoration:underline;}
@media (max-width:480px){.cc2-full{max-width:calc(100% - 100px);}.cc2-arrow{width:44px;height:44px;font-size:22px;}.cc2-lmeta{font-size:12px;}}

/* ---- r-help: How-to manual (hp-) — lives inside the existing #help / .helpcard shell ---- */
#help .helpcard.hp-card{max-width:720px;display:flex;flex-direction:column;max-height:min(88vh,860px);padding:22px 22px 16px;}
#help .hp-card h2{padding-right:34px;flex:0 0 auto;}
.hp-search{flex:0 0 auto;position:sticky;top:0;z-index:2;background:#fff;padding:2px 0 10px;}
.hp-search input{width:100%;box-sizing:border-box;border:1px solid var(--line,#d5dce3);border-radius:9px;padding:9px 12px;font:inherit;font-size:14px;color:#27272a;background:#f5f3ef;}
.hp-search input:focus{outline:2px solid var(--navy);outline-offset:1px;background:#fff;}
.hp-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:2px;}
details.hp-sec{border:1px solid var(--line,#e3e8ee);border-radius:10px;margin:0 0 8px;background:#fafafa;}
details.hp-sec[open]{background:#fff;}
.hp-sec summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;padding:10px 12px;font-weight:700;font-size:13.5px;color:var(--navy);border-radius:10px;user-select:none;}
.hp-sec summary::-webkit-details-marker{display:none;}
.hp-sec summary::before{content:'▸';color:#a8a29a;font-size:11px;transition:transform .12s ease;}
.hp-sec[open] summary::before{transform:rotate(90deg);color:var(--accent);}
.hp-sec summary:hover{background:#f2f6fa;}
.hp-b{padding:0 14px 10px;}
.hp-b ul{margin:0;padding-left:18px;color:#27272a;font-size:13px;line-height:1.55;}
.hp-b li{margin:0 0 7px;}
.hp-b b{color:var(--navy);}
.hp-none{text-align:center;color:var(--muted);font-size:13px;padding:18px 0;}
#help .hp-card .hrow{flex:0 0 auto;margin-top:12px;}
@media (max-width:600px){#help .helpcard.hp-card{padding:18px 14px 12px;max-height:92vh;}.hp-b ul{font-size:12.5px;}.hp-sec summary{font-size:13px;}}
@media print{#help{display:none!important;}}

/* ===== FEEL 3.0 — the "free & easy" layer ==================================
   Appended last so it wins the cascade without editing any earlier rule.
   Same logo palette (charcoal/slate/taupe) — more air, softer surfaces,
   gentler motion, friendlier focus. Print (.doc) is deliberately untouched. */
:root{
 --bg:#f5f3ef; --line:#e3dfd8;
 --r-sm:10px; --r-md:14px; --r-lg:18px;
 --shadow-1:0 1px 2px rgba(43,41,38,.05),0 2px 8px rgba(43,41,38,.05);
 --shadow-2:0 4px 10px rgba(43,41,38,.08),0 12px 28px rgba(43,41,38,.10);
 --ring:0 0 0 3px rgba(176,167,152,.45);
}
body{line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
::selection{background:rgba(176,167,152,.4);}

/* header — a touch more presence, a touch more air */
header.top{background:linear-gradient(135deg,var(--navy2) 0%,var(--navy) 60%,#4a4640 100%);padding:12px 22px;box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 2px 10px rgba(43,41,38,.18);}
header.top .brand img{border-radius:7px;}
.wrap{margin:24px auto;padding:0 20px;}

/* buttons — soft, springy, obviously pressable */
.btn{border-radius:var(--r-sm);padding:10px 16px;min-height:40px;transition:transform .14s ease,box-shadow .14s ease,background-color .14s ease,border-color .14s ease;}
.btn.sm{padding:7px 12px;min-height:34px;}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-1);}
.btn:active{transform:translateY(0) scale(.98);box-shadow:none;}
.btn.gh:hover{border-color:var(--taupe);background:#faf9f6;}
.btn:focus-visible,.tab:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:var(--ring);}
button{touch-action:manipulation;}

/* inputs — calm until you need them */
.search,input.di,select.di,textarea.di{border-radius:var(--r-sm);transition:border-color .14s ease,box-shadow .14s ease;}
.search:focus,input.di:focus,select.di:focus,textarea.di:focus{border-color:var(--taupe);box-shadow:var(--ring);outline:none;}
.search{padding:10px 14px;}

/* dashboard cards — roomier, floatier */
.cards{gap:14px;}
.jc{border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow-1);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;}
.jc:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:var(--taupe);}
.jc h3{font-size:15.5px;}
.jc .tot{font-size:20px;letter-spacing:-.02em;}
.badge{padding:4px 10px;}
.empty{border-radius:var(--r-lg);padding:56px 20px;font-size:14px;border-width:2px;}
.dashhead h1{font-size:22px;letter-spacing:-.02em;}

/* modals — settle in, don't slam in */
.modalov{background:rgba(43,41,38,.44);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:f3fade .16s ease;}
.modal,.setcard{border-radius:var(--r-lg);}
.modalov .modal,.modalov .setcard,#settings .setcard{animation:f3pop .2s cubic-bezier(.2,.9,.3,1.2);box-shadow:var(--shadow-2);}
@keyframes f3fade{from{opacity:0;}to{opacity:1;}}
@keyframes f3pop{from{opacity:0;transform:translateY(10px) scale(.985);}to{opacity:1;transform:none;}}

/* tabs & bars — smooth hovers everywhere something is clickable */
.tab{transition:background-color .14s ease,color .14s ease;border-radius:var(--r-sm) var(--r-sm) 0 0;}
.attn,.apcard,.jobbar,.schedbar,.dashtools{border-radius:var(--r-md);}

/* slim, quiet scrollbars */
*::-webkit-scrollbar{width:10px;height:10px;}
*::-webkit-scrollbar-thumb{background:#cfc9bf;border-radius:8px;border:2px solid var(--bg);}
*::-webkit-scrollbar-thumb:hover{background:var(--taupe);}
*::-webkit-scrollbar-track{background:transparent;}

/* phones — bigger targets, same calm */
@media (max-width:600px){
 .btn{min-height:46px;}
 .btn.sm{min-height:40px;}
 .wrap{margin:16px auto;padding:0 12px;}
 .jc{padding:16px;}
}
body{background:var(--bg);} /* reclaim from the stale pre-palette override at line ~155 */

/* ===== FEEL 3.1 — motion & loading (pure CSS; reduced-motion safe) ========= */
@keyframes f3in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
@keyframes f3shimmer{from{background-position:200% 0;}to{background-position:-200% 0;}}
@keyframes f3tick{0%{transform:scale(1);}45%{transform:scale(1.3);}100%{transform:scale(1);}}
@keyframes f3pulse{0%,100%{box-shadow:0 0 0 0 rgba(183,121,31,.35);}55%{box-shadow:0 0 0 6px rgba(183,121,31,0);}}
@keyframes f3bar{from{background-position:200% 0;}to{background-position:-200% 0;}}

/* staggered card entrance — each dashboard card lands a beat after the last */
.cards .jc{animation:f3in .26s ease both;}
.cards .jc:nth-child(2){animation-delay:.03s;}.cards .jc:nth-child(3){animation-delay:.06s;}
.cards .jc:nth-child(4){animation-delay:.09s;}.cards .jc:nth-child(5){animation-delay:.12s;}
.cards .jc:nth-child(6){animation-delay:.15s;}.cards .jc:nth-child(7){animation-delay:.18s;}
.cards .jc:nth-child(8){animation-delay:.21s;}.cards .jc:nth-child(9){animation-delay:.24s;}
.cards .jc:nth-child(n+10){animation-delay:.27s;}

/* pane/tab switches glide in instead of snapping (print clones unaffected —
   the PDF pipeline captures detached copies outside .pane) */
.pane{animation:f3in .2s ease;}
.attn,.apcard,#nudgestrip{animation:f3in .24s ease both;}

/* photos shimmer while they load, then the image simply covers it */
.ph-grid img,.gal img{background:linear-gradient(110deg,#eceae5 35%,#f8f6f2 50%,#eceae5 65%);background-size:200% 100%;animation:f3shimmer 1.4s linear infinite;}

/* satisfying ticks + a soft heartbeat on in-progress work */
input[type=checkbox]{accent-color:var(--green);}
input[type=checkbox]:checked{animation:f3tick .22s ease;}
.b-progress{animation:f3pulse 3s ease infinite;}

/* thin sync bar under the header — visible progress, not just a corner pill */
#f3bar{position:fixed;top:0;left:0;right:0;height:3px;z-index:5800;opacity:0;pointer-events:none;transition:opacity .2s ease;background:linear-gradient(90deg,var(--taupe),var(--green),var(--taupe));background-size:200% 100%;animation:f3bar 1.1s linear infinite;}
#f3bar.on{opacity:1;}
body.demo-on #f3bar{top:34px;}
@media print{#f3bar{display:none!important;}}

/* ===== FEEL 3.2 — dark mode + celebrations + gantt/lightbox motion ========= */
/* 🌙 warm charcoal night theme — same palette family; documents stay paper */
body.dark{--bg:#211f1c;--ink:#e8e4dd;--muted:#a39c92;--line:#3a3733;--stone:#2c2a26;
 --shadow-1:0 1px 2px rgba(0,0,0,.3),0 2px 8px rgba(0,0,0,.28);
 --shadow-2:0 4px 10px rgba(0,0,0,.4),0 12px 28px rgba(0,0,0,.45);}
body.dark .jc,body.dark .modal,body.dark .setcard,body.dark .attn,body.dark .apcard,
body.dark .dashtools,body.dark .schedbar,body.dark .jobbar,body.dark .calcell,
body.dark .calhead,body.dark .helpcard{background:#2a2825;border-color:#3a3733;color:var(--ink);}
body.dark .btn.gh{background:#2c2a26;color:var(--ink);border-color:#454138;}
body.dark .btn.gh:hover{background:#33302b;border-color:var(--taupe);}
body.dark .search,body.dark input.di,body.dark select.di,body.dark textarea.di,
body.dark .setcard input,body.dark .setcard select,body.dark .setcard textarea,
body.dark .modal input,body.dark .modal select,body.dark .modal textarea{background:#2c2a26;color:var(--ink);border-color:#454138;}
body.dark .empty{background:#262421;border-color:#3a3733;}
body.dark #syncind{background:#2c2a26!important;}
body.dark .toast{background:#2c2a26;color:var(--ink);}
body.dark ::-webkit-scrollbar-thumb{background:#48443e;border-color:var(--bg);}
body.dark .jc h3,body.dark .dashhead h1{color:var(--ink);}
/* printable docs stay lit pages on the dark desk — print output is identical */
body.dark .doc{box-shadow:0 0 0 1px #3a3733,0 10px 34px rgba(0,0,0,.55);}

/* 🎉 confetti */
.f3conf{position:fixed;left:50%;top:38%;z-index:6500;pointer-events:none;}
.f3conf i{position:absolute;width:9px;height:13px;border-radius:2px;opacity:0;animation:f3confetti 1.25s cubic-bezier(.15,.6,.35,1) both;}
@keyframes f3confetti{0%{opacity:1;transform:translate(0,0) rotate(0);}70%{opacity:1;}100%{opacity:0;transform:translate(var(--dx),calc(var(--dy) + 240px)) rotate(var(--rz));}}

/* gantt bars draw themselves in on open (screen only; PDF/print untouched) */
@media screen{.gantt .gbar{transform-box:fill-box;transform-origin:left center;animation:f3grow .45s ease both;}}
@keyframes f3grow{from{transform:scaleX(0);}to{transform:scaleX(1);}}

/* lightbox photos bloom in instead of popping */
.ph-full,.cc2-full{animation:f3zoom .18s ease;}
@keyframes f3zoom{from{opacity:0;transform:scale(.94);}to{opacity:1;transform:none;}}

/* quiet row highlight on data tables (screen only — never the printed doc) */
@media screen{.rpttbl tbody tr:hover td{background:rgba(176,167,152,.14);}}
html{scroll-behavior:smooth;}

/* ===== FEEL 3.3 — calendar visuals: segmented switcher, presets, today glow = */
#cv-bar .cv-seg{display:inline-flex;background:#e9e6e0;border:1px solid var(--line);border-radius:12px;padding:3px;gap:2px;}
#cv-bar .cv-seg button{border:none;background:transparent;color:var(--muted);font-weight:700;font-size:12.5px;padding:7px 13px;border-radius:9px;cursor:pointer;min-height:34px;transition:background-color .16s ease,color .16s ease,box-shadow .16s ease;}
#cv-bar .cv-seg button:hover{color:var(--ink);}
#cv-bar .cv-seg button.on{background:#fff;color:var(--navy);box-shadow:0 1px 3px rgba(43,41,38,.14);}
.cv-presets{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 2px;}
.cv-pre{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:12px;font-weight:700;padding:6px 12px;border-radius:20px;cursor:pointer;min-height:32px;transition:border-color .14s ease,background-color .14s ease,transform .14s ease;}
.cv-pre:hover{border-color:var(--taupe);transform:translateY(-1px);}
.cv-pre.on{background:var(--navy);border-color:var(--navy);color:#fff;}
.cv-pre.cv-save{border-style:dashed;color:var(--muted);background:transparent;}
.cv-pre.cv-save:hover{color:var(--ink);}
.cv-px{font-size:10px;opacity:.55;padding:2px 3px;border-radius:6px;}
.cv-px:hover{opacity:1;color:#c0392b;background:rgba(192,57,43,.1);}
.caltoday{box-shadow:inset 0 0 0 2px var(--taupe);border-radius:8px;}
.caltodaydot{animation:f3pulse 3s ease infinite;}
.calchip,.cv-chip{transition:transform .12s ease,box-shadow .12s ease;}
.calchip:hover,.cv-chip:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(43,41,38,.16);}
/* dark mode: full calendar coverage */
body.dark #cv-bar .cv-seg{background:#242220;border-color:#3a3733;}
body.dark #cv-bar .cv-seg button.on{background:#3a3733;color:var(--ink);}
body.dark .cv-pre{background:#2a2825;border-color:#3a3733;color:var(--ink);}
body.dark .cv-pre.on{background:var(--taupe);border-color:var(--taupe);color:#211f1c;}
body.dark .calgrid,body.dark .calout,body.dark .calweek,body.dark .cv-opts select,body.dark .cv-opts input{background:#2a2825;border-color:#3a3733;color:var(--ink);}
@media (max-width:600px){.cv-presets{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;-webkit-overflow-scrolling:touch;}.cv-pre{flex:0 0 auto;}}

/* ===== FEEL 3.4 — easier scrolling & clicking everywhere =================== */
/* the tab bar sticks: switch documents without scrolling back up */
.tabs{position:sticky;top:0;z-index:80;background:var(--bg);padding-top:8px;margin-top:-8px;padding-bottom:6px;margin-bottom:4px;}
body.demo-on .tabs{top:34px;}
body.dark .tabs{background:var(--bg);}
/* dashboard toolbar sticks too */
.dashtools{position:sticky;top:8px;z-index:70;background:var(--bg);border-radius:var(--r-md);}
body.demo-on .dashtools{top:42px;}
/* long bid/reconcile sheets keep their column headers in view (screen only —
   print + the PDF clone pipeline are untouched) */
@media screen{
 #pane-bid .doc thead th,#pane-recon .doc thead th{position:sticky;top:56px;background:#fff;z-index:5;box-shadow:0 1px 0 var(--line);}
 body.demo-on #pane-bid .doc thead th,body.demo-on #pane-recon .doc thead th{top:90px;}
}
/* anchored/focused things land clear of the sticky bar */
html{scroll-padding-top:80px;}
.pane :focus{scroll-margin-top:90px;}
/* roomier task + attention rows, fatter checkboxes = easier thumbs */
.td-row{padding:13px 14px;}
.attn-row{padding:12px 0;}
#pane-check input[type=checkbox],.td-row input[type=checkbox],.ck-t input[type=checkbox]{width:20px;height:20px;flex:0 0 auto;}
[role=button]{cursor:pointer;}
.calchip,.cv-chip{min-height:24px;}
/* modals: scroll inside themselves, never the page behind them */
.modalov{overscroll-behavior:contain;}
.modal,.setcard,.helpcard{max-height:88vh;overflow:auto;overscroll-behavior:contain;}
/* side-scrolling doc tables get a visible, friendly scrollbar */
.page{scrollbar-width:thin;}
.page::-webkit-scrollbar{height:9px;}
/* back-to-top */
#f3top{position:fixed;left:calc(14px + env(safe-area-inset-left));bottom:calc(14px + env(safe-area-inset-bottom));z-index:5600;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:18px;font-weight:800;cursor:pointer;box-shadow:var(--shadow-1);opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;}
#f3top.on{opacity:1;pointer-events:auto;transform:none;}
#f3top:hover{box-shadow:var(--shadow-2);transform:translateY(-2px);}
body.dark #f3top{background:#2c2a26;color:var(--ink);border-color:#3a3733;}
@media print{#f3top{display:none!important;}}

/* ===== FEEL 3.5 — sharpen: crisper lines, tighter type, defined edges ====== */
:root{--line:#d8d3c9;
 --shadow-1:0 1px 2px rgba(43,41,38,.09),0 2px 6px rgba(43,41,38,.06);
 --shadow-2:0 3px 8px rgba(43,41,38,.11),0 10px 24px rgba(43,41,38,.13);}
h1,h2,h3,.dashhead h1,.jc h3{letter-spacing:-.015em;}
.jc .tot{font-variant-numeric:tabular-nums;}
.badge,.selchip,.chip,.selin,.selup,.sotag{border:1px solid rgba(43,41,38,.07);}
.btn{letter-spacing:.01em;}
.btn.pri,.btn.nav2,.btn.gr{box-shadow:inset 0 -1.5px 0 rgba(0,0,0,.14);}
.btn.pri:active,.btn.nav2:active,.btn.gr:active{box-shadow:inset 0 1px 2px rgba(0,0,0,.18);}
.search,input.di,select.di,textarea.di{border-color:#cfc9bf;}
.tabs .tab.active{font-weight:800;}
.jc,.selcard,.wh-row,.apcard,.attn{border-color:var(--line);}
body.dark{--line:#413d38;}
body.dark .badge,body.dark .selchip,body.dark .chip{border-color:rgba(255,255,255,.08);}

/* ===== FEEL 4.0 — the Workers-Hub design language ==========================
   Same buttons, same features — the mock's LOOK: warm beige surfaces, squarer
   corners, border-defined cards (flat, not floaty), uppercase section labels,
   uppercase primary buttons. Appended last; print/.doc untouched. */
:root{--r-sm:8px;--r-md:10px;--r-lg:12px;
 --panel:#faf7f1;              /* the mock's warm card tint */
 --panel2:#f1ebdf;             /* deeper beige (banner / featured tiles) */
 --shadow-1:0 1px 2px rgba(43,41,38,.06);
 --shadow-2:0 2px 6px rgba(43,41,38,.10),0 6px 16px rgba(43,41,38,.08);}
/* warm border-forward cards, like the mock's tiles */
.jc,.selcard,.wh-row,.apcard,.attn,.sh2k,.sh2act,.setcard,.calout,.calgrid{border-radius:var(--r-lg);}
.jc{background:var(--panel);border:1.5px solid #ddd5c6;box-shadow:none;}
.jc:hover{background:#fff;box-shadow:var(--shadow-2);}
.sh2k{background:var(--panel);border-color:#ddd5c6;}
#sh2kpi{background:var(--panel2);border-color:#d9d0bd;}
.wh-row,.apcard,.attn,.sh2act{box-shadow:none;border-width:1.5px;}
.wh-row:hover{box-shadow:var(--shadow-2);}
.empty{background:var(--panel);border-radius:var(--r-lg);}
/* uppercase section labels everywhere, like MY DASHBOARD / RECENT ACTIVITY */
.dashhead h1,.wh-head h1,.caltitle,.attn-head,.selbar>b{text-transform:uppercase;letter-spacing:.06em;font-size:16px;font-weight:800;color:var(--navy);}
.jc h3{letter-spacing:0;text-transform:none;}
/* primary buttons go uppercase + squared, like the mock's CTA */
.btn{border-radius:var(--r-sm);}
.btn.pri,.btn.nav2,.btn.gr{text-transform:uppercase;letter-spacing:.05em;font-size:12px;}
.btn.gh{background:#fff;border-width:1.5px;}
.btn.gh:hover{background:var(--panel);}
.modal,.helpcard{border-radius:var(--r-lg);}
.tabs .tab{border-radius:var(--r-sm) var(--r-sm) 0 0;}
.cv-pre,.badge,.selchip{border-radius:8px;}      /* squarer chips, mock-style */
#sh2cta{border-radius:var(--r-sm);}
.search,input.di,select.di,textarea.di{border-radius:var(--r-sm);background:#fff;}
/* dark mode: same geometry, warm dark surfaces */
body.dark{--panel:#2c2a26;--panel2:#262421;}
body.dark .jc{background:var(--panel);border-color:#413d38;}
body.dark .jc:hover{background:#33302b;}
body.dark .sh2k{background:var(--panel);border-color:#413d38;}
body.dark #sh2kpi{background:var(--panel2);border-color:#413d38;}
body.dark .btn.gh:hover{background:#33302b;}
/* specificity bump: the shell injects its own <style> later in <head>, so
   scope through #app to make the beige panel tint win */
#app #sh2kpi{background:var(--panel2);border-color:#d9d0bd;}
#app .sh2k{background:var(--panel);border-color:#ddd5c6;}
#app .sh2act{box-shadow:none;border-width:1.5px;}
body.dark #app #sh2kpi{background:var(--panel2);border-color:#413d38;}
body.dark #app .sh2k{background:var(--panel);border-color:#413d38;}

/* ===== FEEL 4.1 — soften the seams ========================================
   Same layout, gentler transitions: only three surface tones (page #f5f3ef →
   surface #fbf9f6 → white on hover), feather borders, and the KPI banner
   block dissolves into free-standing tiles — structure from spacing and
   labels, not color blocks. */
:root{--panel:#fbf9f6;--panel2:transparent;--line-soft:#e7e2d9;}
#app #sh2kpi{background:transparent;border:none;padding:0;margin-bottom:16px;gap:12px;}
#app .sh2k{background:var(--panel);border:1px solid var(--line-soft);}
.jc{background:var(--panel);border:1px solid var(--line-soft);}
.jc:hover{background:#fff;border-color:var(--taupe);}
.wh-row,.apcard,.attn,.selcard{border-width:1px;border-color:var(--line-soft);background:var(--panel);}
.wh-row:hover{background:#fff;}
#app .sh2act{border-width:1px;border-color:var(--line-soft);background:var(--panel);}
.btn.gh{border-width:1px;border-color:var(--line-soft);}
.empty{border-color:var(--line-soft);background:var(--panel);}
.selopt{border-color:var(--line-soft);}
/* header: flat charcoal instead of the gradient — one calm block */
header.top{background:var(--navy);box-shadow:none;border-bottom:1px solid rgba(255,255,255,.07);}
/* the uppercase labels breathe a little more, separating sections by air */
.dashhead h1,.wh-head h1,.caltitle,.attn-head,.selbar>b{font-size:15px;color:var(--slate);}
.dashhead{margin-bottom:16px;}
#dash2{gap:20px;}
.cards{gap:12px;}
/* chips: quieter tints, no borders (the border made them buzz) */
.badge,.selchip,.chip,.selin,.selup,.sotag,.cv-pre{border-color:transparent;}
.cv-pre{border-color:var(--line-soft);}
/* dark mode: same softening */
body.dark{--panel:#282623;--panel2:transparent;--line-soft:#36332e;}
body.dark #app #sh2kpi{background:transparent;border:none;}
body.dark #app .sh2k,body.dark .jc,body.dark .wh-row,body.dark .apcard,body.dark #app .sh2act{background:var(--panel);border-color:var(--line-soft);}
body.dark .jc:hover,body.dark .wh-row:hover{background:#2f2c28;}

/* ===== 📌 calendar events ================================================== */
.cp-evt{background:#6b4fa0;}                       /* event chips: violet, unmistakably not a phase */
.cv-evtchip{background:#6b4fa0;}
.cvef{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;flex:1;min-width:0;}
.cvef label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.cvef label i{font-weight:600;text-transform:none;letter-spacing:0;}
.cvef input,.cvef select{padding:9px 11px;border:1px solid var(--line-soft,#e7e2d9);border-radius:8px;font-size:14px;background:#fff;color:var(--ink);}
.cvef2{display:flex;gap:10px;}
body.dark .cvef input,body.dark .cvef select{background:#2c2a26;border-color:#3a3733;color:var(--ink);}

/* ===== 📊 Timeline (master all-jobs Gantt) view =========================== */
.tlwrap{margin-top:4px;}
.tlscroll{overflow:auto;max-height:72vh;border:1px solid var(--line-soft,#e7e2d9);border-radius:12px;background:#fff;-webkit-overflow-scrolling:touch;}
body.dark .tlscroll{background:#262421;border-color:#36332e;}
.tlinner{position:relative;width:calc(var(--labw) + var(--trackw));min-width:100%;}
.tlr{display:flex;align-items:stretch;border-bottom:1px solid rgba(43,41,38,.05);}
.tlr:last-child{border-bottom:none;}
.tlc{box-sizing:border-box;}
.tllab{position:sticky;left:0;z-index:2;flex:0 0 var(--labw);width:var(--labw);background:#fff;border-right:1px solid var(--line-soft,#e7e2d9);padding:6px 12px;font-size:12px;color:var(--ink);display:flex;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
body.dark .tllab{background:#262421;border-right-color:#36332e;}
.tllab.tlsub{font-size:11.5px;color:var(--muted);padding-left:20px;}
.tllab.tlsub i{font-style:normal;color:var(--slate);}
.tljlab{font-weight:800;font-size:12.5px;color:var(--navy);cursor:pointer;}
.tljlab:hover{color:var(--accent);}
.tltrack{position:relative;flex:0 0 var(--trackw);width:var(--trackw);height:30px;overflow:hidden;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(5*var(--dayw)),rgba(43,41,38,.05) calc(5*var(--dayw)),rgba(43,41,38,.05) calc(7*var(--dayw)));}
.tlr.tljob .tltrack{height:24px;background:none;}
.tlr.tljob .tllab{background:var(--panel,#fbf9f6);}
body.dark .tlr.tljob .tllab{background:#2c2a26;}
.tljbar{position:absolute;top:9px;height:6px;border-radius:4px;background:rgba(111,115,119,.35);}
.tlbar{position:absolute;top:4px;height:22px;border-radius:5px;background:var(--slate,#6f7377);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;padding:0 7px;overflow:hidden;cursor:pointer;box-shadow:inset 0 -1.5px 0 rgba(0,0,0,.13);transition:filter .12s ease,transform .12s ease;}
.tlbar:hover{filter:brightness(1.07);transform:translateY(-1px);z-index:2;}
.tlbt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tl-dots{border:none;background:rgba(255,255,255,.28);color:#fff;font-size:11px;line-height:1;padding:1px 5px;margin-right:5px;border-radius:5px;cursor:pointer;flex:0 0 auto;}
.tl-dots:hover{background:rgba(255,255,255,.52);}
.tlhd{position:sticky;top:0;z-index:4;}
.tlhd .tllab{z-index:5;}
.tlcorner{font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.tlhdtrack{height:30px;background:#fff;}
body.dark .tlhdtrack{background:#262421;}
.tlmon{position:absolute;top:3px;font-size:11px;font-weight:800;color:var(--navy);text-transform:uppercase;letter-spacing:.04em;padding-left:5px;border-left:1px solid var(--line-soft,#e7e2d9);box-sizing:border-box;overflow:hidden;white-space:nowrap;}
body.dark .tlmon{color:var(--taupe);}
.tltick{position:absolute;bottom:2px;font-size:10px;color:var(--muted);padding-left:3px;border-left:1px solid rgba(43,41,38,.08);}
.tltoday{position:absolute;top:30px;bottom:0;width:2px;background:#c0392b;z-index:3;pointer-events:none;}
.tltoday::before{content:'';position:absolute;top:-30px;left:-3px;border:4px solid transparent;border-top-color:#c0392b;}
.cv-zoom{display:inline-flex;background:#e9e6e0;border:1px solid var(--line-soft,#e7e2d9);border-radius:8px;padding:2px;gap:2px;vertical-align:middle;}
.cv-zoom .cv-zb{border:none;background:transparent;color:var(--muted);font-size:11.5px;font-weight:700;padding:5px 10px;border-radius:6px;cursor:pointer;}
.cv-zoom .cv-zb.on{background:#fff;color:var(--navy);box-shadow:0 1px 2px rgba(43,41,38,.12);}
body.dark .cv-zoom{background:#2c2a26;border-color:#3a3733;}
body.dark .cv-zoom .cv-zb.on{background:#3a3733;color:var(--ink);}
@media print{.tlscroll{max-height:none;overflow:visible;}.tllab,.tlhd{position:static;}}
/* status colors must beat the .tlbar slate fallback (equal-specificity, later
   in file) — scope to .tlbar so the timeline matches the calendar palette */
.tlbar.cp-scheduled{background:#2b6cb0;}
.tlbar.cp-confirmed{background:#1f7a45;}
.tlbar.cp-active{background:var(--amber);}
.tlbar.cp-done{background:#71717a;}
.tlbar.cp-other{background:#7a4f9c;}
.tlbar.cp-evt{background:#6b4fa0;}

/* ===== DESIGN 5.0 — Square-clean: light slate grey + logo brown ============
   Palette sampled from the Scott Francis logo: brown monogram (#6f5a4b),
   taupe stripes (#b8afa6), near-black wordmark. Neutrals are a light slate
   grey kept warm enough not to fight the brown. This :root is LAST in the
   file so it wins over every earlier :root block (lines 4/828/1027/1046/1093). */
:root{
 /* brand — the logo brown */
 --brown:#6f5a4b; --brown-d:#59463a; --brown-l:#8a7565; --brown-tint:#f2efec;
 --taupe:#b8afa6; --stone:#edeae6;
 /* legacy brand names remapped onto the brown so every existing rule follows */
 --navy:#5a4a3e; --navy2:#46392f; --charcoal:#3f3a35; --slate:#71717a;
 /* neutrals — light slate grey */
 --bg:#f4f4f5; --panel:#ffffff; --panel2:transparent; --surface:#fafafa;
 --line:#e4e4e7; --line-soft:#efeff1;
 --ink:#27272a; --muted:#71717a;
 /* semantic — meaning unchanged, legible on the new neutrals */
 --accent:#c0392b; --green:#1f7a45; --amber:#b7791f;
 /* geometry — Square-ish: moderate radii + hairline borders */
 --r-sm:6px; --r-md:8px; --r-lg:12px;
}
/* the stale body{background:#f4f6f9} at ~line 155 predates the palette — retire it */
body{background:var(--bg);}
/* dark mode: neutrals only. --navy stays dark so the chrome stays dark. */
body.dark{
 --bg:#1c1c1f; --panel:#242427; --panel2:transparent; --surface:#202023;
 --line:#35353a; --line-soft:#2e2e33; --stone:#2c2a26;
 --ink:#ececee; --muted:#a1a1aa;
}
