
/* 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:600;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:600;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:600;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:600;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:600;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:600;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:600;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:600;}
.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:600;margin:6px 0 12px;}
.doc .trade{font-weight:600;margin:9px 0 1px;} .doc .li{margin:0 0 0 2px;}
.doc .total{text-align:center;font-weight:600;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:600;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:600;}
.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:600;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:600;}
.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:600;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:600;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:600;}
#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:600;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:600;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:600;}
.pipe .stat .v{font-size:23px;font-weight:600;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:600;letter-spacing:-.2px;}
.jc .sub{margin-bottom:14px;}
.tot{font-size:25px;font-weight:600;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:600;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:600;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:600;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:600;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:600;}
.rptsc-c{font-size:12px;color:var(--muted);font-weight:600;}
.rptsc-v{font-size:18px;font-weight:600;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:600;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:600;}
@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:600;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:600;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:600;}
.calnav .btn.gh.sm:hover{border-color:var(--navy);}
.caltitle{font-size:17px;font-weight:600;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:600;}
.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:600;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:600;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:600;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:600;}
.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 biqFade{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:600;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:biqFade .25s ease;}
.attn-head{display:flex;align-items:center;gap:8px;padding-bottom:8px;}
.attn-title{font-weight:600;font-size:12px;color:var(--navy);text-transform:uppercase;letter-spacing:.5px;}
.attn-count{background:var(--accent);color:#fff;font-size:11px;font-weight:600;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:600;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:600;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:600;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:600;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:biqFade .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:600;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:600;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:600;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:600;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:600;}
.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:600;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:600;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:600;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:600;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:600;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:600;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:600;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:600;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:600;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:600;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:biqFade .18s ease;}
.gal-fab .gal-n{font-weight:600;font-size:13px;padding:0 4px;white-space:nowrap;font-variant-numeric:tabular-nums;}
.gal-fab button{border:none;border-radius:9px;font-weight:600;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:600;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:600;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:600;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:600;color:var(--navy);font-size:14px;margin-left:4px;}
.td-wknd{color:var(--amber);font-size:11px;font-weight:600;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:600;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:600;}
.td-gn{margin-left:auto;background:#eae5dd;color:var(--navy);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600;}
.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:600;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:600;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:600;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:600;}
.ttmore{font-size:11.5px;font-weight:600;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:600;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:600;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:600;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:600;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:600;}
.ck-latechip{background:var(--accent);color:#fff;font-size:10px;font-weight:600;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:600;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:600;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:600;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:biqFade .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:600;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:600;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:600;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:600;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:600;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:600;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:600;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:600;}
.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:600;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:600;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:600;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:600;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:600;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:600;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:600;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 first customer's 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;
}

/* ===========================================================================
   THE 2026-09-06 RE-TINT — owner: "a beige and yellow basis but the beiege is
   faint". Ported from the prototype's chrome/palette.js, which BuildIQ never
   had: this app has theme.js, feel.js and texture.js but no palette.js, so it
   was still rendering the pre-re-tint greys while the React half at /app had
   moved on. Two halves of one product, two palettes.

   SET ON BODY, NOT :root, AND THAT IS LOAD-BEARING. A custom property set on
   body beats one set on :root for everything inside body, whatever the
   specificity, because body is nearer. The :root blocks above stay as the
   defaults; these win.

   KEYED ON body.dark / body:not(.dark), NOT on [data-theme]. The prototype's
   theme.js stamps data-theme on <html> as well as toggling .dark on <body>;
   THIS app's theme.js only does the class. Copying palette.js's selectors
   verbatim would make `:root:not([data-theme="light"])` match permanently and
   paint LIGHT mode with the dark palette — the exact half-failure palette.js
   itself warns about, the kind that looks like a taste problem.

   The relationships, which are the part a re-tint breaks first:
   light — panel above surface above ground, hairline darker than all three;
   dark  — same order, hairline LIGHTER than the surfaces. A border separates
   by contrasting with its fill, and which way that runs depends on the ground.
   =========================================================================== */
body:not(.dark){
  --bg:#f5efe1;          /* the GROUND carries the beige */
  --panel:#fdf9ee;       /* warm off-white, NOT white */
  --surface:#f8f2e4;     /* the raised step sits between them */
  --line:#e3d7bd;        /* hairlines warm rather than grey */
  --line-soft:#ece5d5;
  --ink:#3a3630;
  --muted:#6f6659;
  --brand:#d9a441;       /* the storefront's hero yellow */
}
body.dark{
  --brand:#d9a441;
  --bg:#1c1813;          /* warm charcoal, not black */
  /* panel/surface/line: the prototype's 2026-09-09 step up, once the hive went
     onto the ground — a card on a textured ground needs more lift to read as
     opaque. Same numbers as the React office's global.css; the two halves
     share a user and must not carry two charcoals. */
  --panel:#2e2820;
  --surface:#3b3229;
  --line:#4e4536;
  --line-soft:#332c23;
}
/* --amber is deliberately untouched: it is the yellow that has to work as TEXT
   on a pale ground, and #d9a441 as type there is a contrast failure. The bright
   yellow fills and the dark gold writes. */

/* ---------------------------------------------------------------------------
   Ledger rule 2: nothing bolder than 600 — emphasis is colour and space, never
   thicker letterforms.

   The browser's own stylesheet renders <b>, <strong> and every heading at
   `bold`, so the heaviest type in the app was never declared anywhere and no
   grep of this file could find it. Same fix as the React half's global.css,
   kept in step here for the same reason the 2026-09-06 re-tint had to be:
   the two halves share an origin and a user walks between them, so a
   difference in weight reads as the theme not matching itself.

   A FLOOR, not an override — the rules above that set a weight are more
   specific and keep winning.
   ------------------------------------------------------------------------ */
b,strong{font-weight:600;}
h1,h2,h3,h4,h5,h6{font-weight:600;}
