:root{
  --teal:#0a2b31; --teal2:#0f3a42; --teal3:#16505b; --gold:#b0965e; --gold2:#c9a96e; --cream:#f8f4ec; --paper:#fffdf8;
  --ink:#16323a; --muted:#5d7379; --line:#e4dccb; --ok:#1e7d3c; --okbg:#e6f3ea; --warn:#a4651b; --warnbg:#fbf0dc; --bad:#a3312b; --badbg:#f8e5e3;
  --r:14px; --shadow:0 1px 2px rgba(10,43,49,.06),0 4px 14px rgba(10,43,49,.07);
  --sans:'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif; --serif:'Cormorant Garamond',Georgia,serif;
  --safe-b:env(safe-area-inset-bottom,0px);
}
@font-face{font-family:'Manrope';src:url(/fonts/manrope-normal-400-700.woff2) format('woff2');font-weight:400 800;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url(/fonts/cormorantgaramond-normal-600.woff2) format('woff2');font-weight:400 700;font-display:swap}
@font-face{font-family:'Cormorant Garamond';font-style:italic;src:url(/fonts/cormorantgaramond-italic-500.woff2) format('woff2');font-weight:400 700;font-display:swap}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--cream);color:var(--ink);font:15px/1.45 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--teal3)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--gold2);outline-offset:2px}
.boot{min-height:100vh;display:grid;place-items:center;background:var(--teal)}
.boot img{width:200px;opacity:.9}
/* top bar */
.top{position:sticky;top:0;z-index:20;background:var(--teal);color:var(--cream);padding:10px 16px calc(10px);display:flex;align-items:center;gap:12px;min-height:58px;box-shadow:0 1px 0 rgba(176,150,94,.5)}
.top .logo{height:34px;width:auto;display:block}
.top h1{font:600 22px/1.1 var(--serif);letter-spacing:.3px;margin:0;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .back{background:none;border:0;color:var(--gold2);font-weight:700;padding:8px 6px 8px 0;cursor:pointer;font-size:15px;white-space:nowrap}
.top .act{background:rgba(248,244,236,.1);border:1px solid rgba(201,169,110,.5);color:var(--cream);border-radius:999px;padding:7px 13px;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap;text-decoration:none}
.wrap{max-width:1100px;margin:0 auto;padding:14px 14px calc(96px + var(--safe-b))}
.wrap.narrow{max-width:640px}
/* bottom nav */
.nav{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--paper);border-top:1px solid var(--line);display:flex;justify-content:space-around;padding:6px 4px calc(6px + var(--safe-b))}
.nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:700;color:var(--muted);text-decoration:none;padding:4px 0;position:relative}
.nav a svg{width:24px;height:24px}
.nav a.on{color:var(--teal)}
.nav a.on svg{color:var(--gold)}
.nav .badge{position:absolute;top:0;left:calc(50% + 6px);background:var(--gold);color:#fff;border-radius:99px;font-size:10px;min-width:17px;height:17px;line-height:17px;text-align:center;padding:0 4px}
/* cards & sections */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:14px;margin-bottom:12px}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px 2px 8px}
.sec-h h2{font:700 12px/1 var(--sans);letter-spacing:1.6px;text-transform:uppercase;color:var(--gold);margin:0}
.sec-h .lnk{font-weight:700;font-size:13px;color:var(--teal3);background:none;border:0;cursor:pointer;text-decoration:none}
h3{font:600 21px/1.15 var(--serif);margin:0 0 4px}
.muted{color:var(--muted)} .small{font-size:13px} .tiny{font-size:12px}
.row{display:flex;gap:10px;align-items:center} .row.wrapr{flex-wrap:wrap} .grow{flex:1;min-width:0}
.between{display:flex;justify-content:space-between;align-items:center;gap:10px}
.stack>*+*{margin-top:10px}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;border:1px solid var(--teal);background:var(--teal);color:var(--cream);font-weight:700;padding:11px 16px;cursor:pointer;text-decoration:none;font-size:15px;min-height:44px;line-height:1.1}
.btn.gold{background:var(--gold);border-color:var(--gold);color:#fff}
.btn.ghost{background:transparent;color:var(--teal);border-color:#c8bfa9}
.btn.ok{background:var(--ok);border-color:var(--ok)}
.btn.danger{background:transparent;color:var(--bad);border-color:#e3b7b2}
.btn.big{min-height:58px;font-size:17px;border-radius:16px;width:100%}
.btn.sm{min-height:34px;padding:6px 11px;font-size:13px;border-radius:10px}
.btn svg{width:20px;height:20px;flex:none}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btns{display:flex;gap:8px;flex-wrap:wrap}
.btns.two>*{flex:1 1 0}
/* forms */
label.f{display:block;margin-bottom:12px}
label.f>span{display:block;font-size:12px;font-weight:700;letter-spacing:.4px;color:var(--muted);margin-bottom:5px}
.in,select.in,textarea.in{width:100%;border:1px solid #d6ccb6;background:#fff;border-radius:11px;padding:11px 12px;min-height:44px;font-size:16px}
textarea.in{min-height:84px;resize:vertical}
.in:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px rgba(201,169,110,.25)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.err{background:var(--badbg);color:var(--bad);border-radius:10px;padding:10px 12px;font-weight:600;font-size:14px;margin-bottom:12px}
.note{background:#f1ece0;border-radius:10px;padding:10px 12px;font-size:13px;color:var(--muted)}
/* chips & pills */
.chips{display:flex;gap:7px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;border:1px solid #d6ccb6;background:var(--paper);border-radius:999px;padding:7px 12px;font-weight:700;font-size:13px;cursor:pointer;color:var(--ink);white-space:nowrap}
.chip.on{background:var(--teal);border-color:var(--teal);color:var(--cream)}
.chip .n{opacity:.65;margin-left:4px}
.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:800;letter-spacing:.2px;white-space:nowrap;background:#eee;color:#444}
.pill::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.8}
.pill.plain::before{display:none}
.st-to_measure{background:#eef0f2;color:#4f5d66}.st-measured{background:#e8eef7;color:#2f5687}.st-quoted{background:#f3ecdf;color:#8a6420}.st-approved{background:#efe8f6;color:#6a4592}
.st-ordered{background:#e3f0f2;color:#1d6170}.st-confirmed{background:#e1eef0;color:#15596a}.st-shipped{background:#e8f0ea;color:#2d6a48}.st-arrived{background:#e6f1ec;color:#27704d}.st-scheduled{background:#fbf0dc;color:#9a5c10}.st-installed{background:#e6f3ea;color:#1e7d3c}.st-paid{background:var(--teal);color:var(--cream)}
.sh-to_type{background:var(--warnbg);color:var(--warn)}.sh-to_review{background:#fdebd0;color:#9b4a0a}.sh-approved{background:var(--okbg);color:var(--ok)}
.dot-new{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 3px rgba(176,150,94,.22);flex:none}
/* board */
.today{background:var(--teal);color:var(--cream);border-radius:var(--r);padding:14px;margin-bottom:12px}
.today h2{font:700 12px/1 var(--sans);letter-spacing:1.6px;text-transform:uppercase;color:var(--gold2);margin:0 0 10px}
.today .it{display:flex;gap:12px;align-items:center;padding:9px 0;border-top:1px solid rgba(201,169,110,.25);text-decoration:none;color:inherit}
.today .it:first-of-type{border-top:0}
.today .tm{font-weight:800;font-size:15px;min-width:68px;color:var(--gold2)}
.today .nm{font-weight:700}
.today .ad{font-size:13px;opacity:.75}
.kan{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px;margin:0 -14px;padding-left:14px;padding-right:14px;scroll-padding-left:14px}
.col{flex:0 0 82%;max-width:320px;scroll-snap-align:start;background:#efe8d9;border-radius:var(--r);padding:10px;min-height:120px}
.col.drop{outline:2px dashed var(--gold)}
.col-h{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 10px}
.col-h b{font-size:13px;letter-spacing:.3px}
.col-h .n{font-size:12px;font-weight:800;color:var(--muted);background:var(--paper);border-radius:99px;padding:1px 8px}
.jc{display:block;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin-bottom:8px;text-decoration:none;color:inherit;box-shadow:0 1px 2px rgba(10,43,49,.05);cursor:pointer}
.jc .t{display:flex;align-items:center;gap:8px;font-weight:800;font-size:14.5px}
.jc .t span.nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jc .s{font-size:12.5px;color:var(--muted);margin-top:2px}
.jc .tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.jc .amt{font-weight:800;font-size:13px;color:var(--teal3)}
.empty{color:var(--muted);font-size:13px;text-align:center;padding:14px 6px}
.fieldbtn{display:flex;align-items:center;gap:14px;background:var(--gold);color:#fff;border-radius:var(--r);padding:14px 16px;text-decoration:none;margin-bottom:12px;box-shadow:var(--shadow)}
.fieldbtn svg{width:30px;height:30px;flex:none}
.fieldbtn b{display:block;font-size:17px}
.fieldbtn span{font-size:13px;opacity:.9}
@media (min-width:900px){.col{flex:0 0 260px}.kan{margin:0;padding-left:0;padding-right:0}}
/* list rows */
.lr{display:flex;align-items:center;gap:12px;padding:12px 14px;border-top:1px solid var(--line);text-decoration:none;color:inherit;cursor:pointer;background:var(--paper)}
.lr:first-child{border-top:0}
.list{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);margin-bottom:12px}
.lr .nm{font-weight:800}
.lr .chev{color:var(--gold);font-weight:800;font-size:20px}
.av{width:40px;height:40px;border-radius:12px;background:var(--teal2);color:var(--gold2);display:grid;place-items:center;font:600 18px var(--serif);flex:none}
/* job file */
.fhead{background:var(--teal2);color:var(--cream);border-radius:var(--r);padding:16px;margin-bottom:12px}
.fhead h2{font:600 28px/1.05 var(--serif);margin:0 0 4px}
.fhead .sub{opacity:.8;font-size:14px}
.fhead .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.fhead .quick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.fhead .quick a,.fhead .quick button{display:flex;flex-direction:column;align-items:center;gap:4px;background:rgba(248,244,236,.09);border:1px solid rgba(201,169,110,.4);border-radius:12px;color:var(--cream);padding:10px 4px;text-decoration:none;font-weight:700;font-size:12.5px;cursor:pointer}
.fhead .quick svg{width:22px;height:22px;color:var(--gold2)}
.steps{display:flex;gap:4px;margin:4px 0 2px}
.steps i{flex:1;height:6px;border-radius:9px;background:#e2d9c6}
.steps i.on{background:var(--gold)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:14px}
.kv dt{color:var(--muted);font-weight:700;font-size:12.5px;padding-top:1px}
.kv dd{margin:0}
.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.photos .ph{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:#e8e0cf;cursor:pointer;border:0;padding:0}
.photos .ph img{width:100%;height:100%;object-fit:cover;display:block}
.photos .ph .cap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(10,43,49,.85));color:#fff;font-size:10.5px;font-weight:700;padding:14px 6px 5px;text-align:left;line-height:1.2}
.addph{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.wl{border-top:1px solid var(--line);padding:10px 0}
.wl:first-child{border-top:0;padding-top:0}
.wl .t{display:flex;gap:8px;align-items:baseline}
.wl .t b{font-size:14.5px}
.wl .sz{font-weight:800;font-variant-numeric:tabular-nums;color:var(--teal3);white-space:nowrap}
.wl .d{font-size:13px;color:var(--muted)}
.money{font-variant-numeric:tabular-nums;font-weight:800}
.trow{display:flex;justify-content:space-between;padding:4px 0;font-size:14px}
.trow.big{font-size:17px;font-weight:800;border-top:1px solid var(--line);margin-top:4px;padding-top:8px}
.trow.green{color:var(--ok);font-weight:700}
.ev{display:flex;gap:10px;font-size:13px;padding:6px 0;border-top:1px dashed var(--line)}
.ev:first-child{border-top:0}
.ev .w{color:var(--muted);white-space:nowrap;min-width:84px}
/* modal sheet */
.ov{position:fixed;inset:0;background:rgba(10,43,49,.55);z-index:60;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--paper);width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:20px 20px 0 0;padding:18px 16px calc(18px + var(--safe-b))}
@media (min-width:700px){.ov{align-items:center}.sheet{border-radius:20px}}
.sheet .sh{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.sheet .sh h3{margin:0}
.closebtn{background:none;border:0;color:var(--teal3);font-weight:800;cursor:pointer;padding:8px 0 8px 10px}
.opt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:8px;cursor:pointer;font-weight:700}
.opt.cur{border-color:var(--gold);background:#fbf6ea}
/* viewer */
.viewer{position:fixed;inset:0;background:#081f24;z-index:80;display:flex;flex-direction:column}
.viewer .vb{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;color:var(--cream);gap:8px}
.viewer .vs{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}
.viewer img{display:block;margin:0 auto;max-width:none}
/* toast */
#toast{position:fixed;left:50%;bottom:calc(84px + var(--safe-b));transform:translateX(-50%) translateY(20px);background:var(--teal);color:var(--cream);padding:11px 18px;border-radius:999px;font-weight:700;font-size:14px;opacity:0;pointer-events:none;transition:.25s;z-index:90;max-width:90vw;text-align:center;box-shadow:0 6px 24px rgba(0,0,0,.2)}
#toast.on{opacity:1;transform:translateX(-50%)}
/* login */
.login{min-height:100vh;background:var(--teal);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 22px}
.login .lg{width:230px;margin-bottom:10px}
.login .tag{font:italic 500 21px var(--serif);color:var(--gold2);margin:0 0 26px;text-align:center}
.login form{width:100%;max-width:380px;background:var(--paper);border-radius:20px;padding:22px 18px;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.login h2{font:600 26px var(--serif);margin:0 0 14px}
.login .foot{color:rgba(248,244,236,.6);font-size:12px;margin-top:20px;text-align:center}
/* sheet grid */
.scan{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
.scan>*,.rv>*{min-width:0}
@media (min-width:1000px){.scan{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start}.scan .imgpane{position:sticky;top:70px}}
.imgpane{background:#0d2a30;border-radius:var(--r);overflow:hidden}
.imgpane .ib{display:flex;gap:6px;align-items:center;justify-content:space-between;padding:8px 10px;color:var(--cream);font-size:13px;font-weight:700}
.imgpane .ib button{background:rgba(248,244,236,.12);border:1px solid rgba(201,169,110,.45);color:var(--cream);border-radius:9px;padding:6px 10px;font-weight:700;font-size:12.5px;cursor:pointer}
.imgpane .iv{overflow:auto;max-height:46vh;touch-action:pan-x pan-y pinch-zoom}
@media (min-width:1000px){.imgpane .iv{max-height:calc(100vh - 150px)}}
.imgpane .iv img{display:block;width:100%}
.imgpane .thumbs{display:flex;gap:6px;padding:6px 10px 10px;overflow-x:auto}
.imgpane .thumbs button{flex:none;width:46px;height:58px;border-radius:6px;overflow:hidden;border:2px solid transparent;padding:0;background:#234}
.imgpane .thumbs button.on{border-color:var(--gold2)}
.imgpane .thumbs img{width:100%;height:100%;object-fit:cover}
.gridwrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);max-height:70vh}
table.g{border-collapse:separate;border-spacing:0;font-size:14px;min-width:1180px;width:100%}
table.g th{position:sticky;top:0;background:var(--teal);color:var(--cream);font-size:11px;letter-spacing:1px;text-transform:uppercase;font-weight:800;text-align:left;padding:8px 6px;z-index:2;white-space:nowrap}
table.g td{border-bottom:1px solid #eee5d4;border-right:1px solid #f2ecdf;padding:0}
table.g td.n{background:#faf6ec;color:var(--muted);font-weight:800;font-size:12px;text-align:center;width:34px;position:sticky;left:0;z-index:1}
table.g th.n{left:0;z-index:3}
table.g input,table.g select{width:100%;border:0;background:transparent;padding:10px 7px;font-size:15px;min-height:42px;border-radius:0}
table.g input:focus,table.g select:focus{background:#fff8e8;outline:2px solid var(--gold2);outline-offset:-2px}
table.g input.bad{background:var(--badbg)}
table.g td.sz input{font-variant-numeric:tabular-nums;font-weight:700;width:86px}
table.g tr.chk td.n{background:var(--okbg);color:var(--ok)}
.gridbar{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:10px 0}
.kbd{font-size:12px;color:var(--muted)}
/* review */
.rv{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
@media (min-width:900px){.rv{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.rv .imgpane{position:sticky;top:70px}}
.rline{display:flex;gap:12px;align-items:flex-start;padding:12px;border-top:1px solid var(--line)}
.rline:first-child{border-top:0}
.cdot{flex:none;width:34px;height:34px;border-radius:50%;border:2.5px solid #c9bfa8;background:#fff;cursor:pointer;display:grid;place-items:center;padding:0}
.cdot.on{background:var(--ok);border-color:var(--ok)}
.cdot.on::after{content:'';width:12px;height:7px;border-left:3px solid #fff;border-bottom:3px solid #fff;transform:translateY(-2px) rotate(-45deg)}
.rline .sz{font-weight:800;font-size:16px;font-variant-numeric:tabular-nums}
/* installer */
.ijob{background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:16px;margin-bottom:12px}
.ijob .when{font-weight:800;color:var(--gold);font-size:13px;letter-spacing:1px;text-transform:uppercase}
.ijob h3{font-size:25px;margin:2px 0}
.ijob .addr{font-size:15px;color:var(--muted);margin-bottom:12px}
.ibtns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ibtns .btn{min-height:54px;font-size:16px}
.sig{width:100%;height:170px;background:#fff;border:1px dashed #c9bfa8;border-radius:12px;touch-action:none;display:block}
.hide{display:none!important}
@media print{ .noprint,.top,.nav,#toast{display:none!important} body{background:#fff} .wrap{padding:0;max-width:none} }
.roomhd{font-weight:800;font-size:11.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--gold);margin:12px 0 2px;padding-top:10px;border-top:1px solid var(--line)}
.roomhd:first-child{margin-top:0;padding-top:0;border-top:0}
.roomhd+.wl{border-top:0}

.track{list-style:none;margin:0;padding:0}
.track li{display:flex;gap:14px;position:relative;padding:0 0 18px}
.track li:last-child{padding-bottom:0}
.track li::before{content:'';position:absolute;left:10px;top:24px;bottom:0;width:3px;border-radius:3px;background:#e2d9c6}
.track li:last-child::before{display:none}
.track li.done::before{background:var(--gold)}
.track .tdot{flex:none;width:23px;height:23px;border-radius:50%;border:3px solid #d8cfba;background:#fff;margin-top:1px;position:relative;z-index:1}
.track li.done .tdot{background:var(--gold);border-color:var(--gold)}
.track li.cur .tdot{box-shadow:0 0 0 6px rgba(176,150,94,.22)}
.track li:not(.done) b{color:var(--muted);font-weight:700}

table.cmp{width:100%;border-collapse:collapse;margin-top:8px;font-size:13.5px}
table.cmp th{font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);text-align:left;padding:4px 4px;font-weight:800}
table.cmp td{padding:3px 4px;border-top:1px solid #efe8da;vertical-align:middle}
table.cmp td.k{color:var(--muted);font-weight:700;font-size:12px;white-space:nowrap;width:78px}
table.cmp td input{width:100%;border:1px solid #e0d7c3;border-radius:8px;padding:6px 7px;font-size:14px;background:#fff;min-height:34px}
table.cmp tr.amb td{background:#fff6e2}
table.cmp tr.amb td input{border-color:#f2b544}

/* ---------- v1.1: offline banner, field lines, saved screen, deductions ---------- */
#netbar{position:fixed;left:0;right:0;top:0;z-index:55;display:flex;align-items:center;gap:10px;padding:calc(8px + env(safe-area-inset-top,0px)) 14px 8px;font-size:13.5px;line-height:1.3;color:#3d2a00;background:#ffe2a6;border-bottom:1px solid #e8b950;cursor:pointer}
#netbar[hidden]{display:none}
#netbar .nbt{flex:1;min-width:0}
#netbar .nbdot{width:11px;height:11px;border-radius:50%;background:#c98a00;flex:none;box-shadow:0 0 0 3px rgba(201,138,0,.2)}
#netbar .nbn{background:#3d2a00;color:#ffe2a6;border-radius:99px;padding:3px 9px;font-weight:800;font-size:12px;white-space:nowrap}
#netbar .nbb{background:#0a2b31;color:#f8f4ec;border:0;border-radius:99px;padding:7px 12px;font-weight:800;font-size:12.5px;white-space:nowrap;cursor:pointer}
#netbar.busy{background:#e6eef0;color:#0a2b31;border-color:#b9cdd2}
#netbar.busy .nbdot{background:#0f3a42;animation:nbp 1s infinite alternate}
#netbar.ok{background:#dff1e4;color:#14532d;border-color:#9fd3ae}
#netbar.ok .nbdot{background:#1e7d3c;box-shadow:0 0 0 3px rgba(30,125,60,.18)}
#netbar.bad{background:#fbe1dd;color:#7a1d12;border-color:#efaaa0}
#netbar.bad .nbdot{background:#c0392b}
#netbar.wait{background:#fff1d1}
@keyframes nbp{to{opacity:.35}}
body.nb #app{padding-top:var(--nbh,0px)}
body.nb .top{top:var(--nbh,0px)}
.fline{border:1px solid var(--line);border-radius:14px;padding:10px 12px 12px;margin-bottom:10px;background:#fffdf8}
.fline .f{margin-bottom:8px}
.fsz{display:grid;grid-template-columns:1fr 1fr 64px;gap:8px}
.ph .phx{position:absolute;top:4px;right:4px;background:rgba(10,43,49,.82);color:#f8f4ec;border:0;border-radius:99px;font-size:11px;font-weight:800;padding:4px 8px;cursor:pointer}
.ph{position:relative}
.card.saved{text-align:center;padding:26px 18px 18px}
.card.saved h2{font:600 28px/1.1 var(--serif);margin:12px 0 6px;color:var(--teal)}
.card.saved p{margin:4px 0}
.bigdot{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:50%;background:#f2b544;box-shadow:0 0 0 8px rgba(242,181,68,.22)}
.bigdot.ok{background:#1e7d3c;box-shadow:0 0 0 8px rgba(30,125,60,.16);color:#fff}
.bigdot.ok svg{width:34px;height:34px}
.pendc{background:#fff4dc;color:#5a3d00}
.dedbox{border:1px solid var(--gold);border-radius:14px;padding:12px;margin:4px 0 14px;background:#fbf7ee}
.dedbox .lbl{font-size:11px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.ordsz{font-size:12.5px;color:var(--teal);margin-top:3px}
.cpsum .trow span:first-child{text-transform:uppercase;letter-spacing:1px;font-size:12px;font-weight:800}
.fillbox{display:inline-block;width:120px;height:26px;border:1.5px solid var(--gold);border-radius:4px;background:#fff}
.dedbox .chips{flex-wrap:wrap}

/* ===================== v2 (Oct 30 2026) ===================== */
/* edit-anywhere */
.ed{display:inline;background:none;border:0;padding:1px 2px;margin:0 1px;font:inherit;color:inherit;cursor:pointer;border-bottom:1.5px dotted rgba(176,150,94,.75);border-radius:3px;text-align:left;line-height:inherit;transition:background .25s}
.ed:hover{background:rgba(176,150,94,.12)}
.ed.empty{color:var(--muted);font-style:italic;font-weight:500;opacity:.85}
.ed.saving{opacity:.55}
.ed.saved{background:var(--okbg);color:var(--ok);border-bottom-color:var(--ok)}
.fhead .ed{color:inherit;border-bottom-color:rgba(201,169,110,.8)}
.fhead .ed.empty{color:rgba(248,244,236,.7)}
.fhead .ed.saved{background:rgba(230,243,234,.18);color:#e6f3ea}
.edin{font:inherit;color:var(--ink);background:#fff;border:2px solid var(--gold);border-radius:8px;padding:4px 8px;max-width:100%;box-shadow:0 0 0 4px rgba(176,150,94,.18);vertical-align:baseline}
textarea.edin{display:block;width:100%;min-height:64px}
.fhead .edin{color:var(--ink)}
.savedmark{position:fixed;left:50%;bottom:calc(92px + var(--safe-b));transform:translate(-50%,14px);background:var(--teal);color:var(--cream);font-weight:700;font-size:13px;padding:7px 14px;border-radius:999px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:all .25s;z-index:40;white-space:nowrap;border:1px solid rgba(201,169,110,.6)}
.savedmark.on{opacity:1;transform:translate(-50%,0)}
.savedmark.go{background:var(--gold);color:#fff;border-color:var(--gold)}
/* guided flow */
.flow{max-width:640px;margin:0 auto}
.fl-top{position:sticky;top:58px;z-index:15;background:var(--cream);margin:-14px -14px 0;padding:10px 14px 8px;box-shadow:0 6px 10px -8px rgba(10,43,49,.18)}
.fl-prog{position:relative;display:flex;justify-content:space-between;padding:0 4px}
.fl-line{position:absolute;left:30px;right:30px;top:17px;height:3px;background:var(--line);border-radius:3px;z-index:0}
.fl-line i{display:block;height:100%;background:var(--gold);border-radius:3px;transition:width .4s}
.fl-st{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:4px;text-decoration:none;color:var(--muted);font-size:11.5px;font-weight:700;min-width:56px}
.fl-st.off{pointer-events:none;opacity:.6}
.fl-dot{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--paper);border:2px solid var(--line);font-weight:800;font-size:14px;color:var(--muted);transition:all .25s}
.fl-dot svg{width:18px;height:18px}
.fl-st.done .fl-dot{background:var(--gold);border-color:var(--gold);color:#fff}
.fl-st.done{color:var(--teal3)}
.fl-st.cur .fl-dot{background:var(--teal);border-color:var(--teal);color:var(--cream);box-shadow:0 0 0 5px rgba(10,43,49,.12)}
.fl-st.cur{color:var(--teal)}
.fl-who{display:flex;align-items:center;gap:10px;margin-top:12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:10px 10px 10px 14px;box-shadow:var(--shadow)}
.fl-who .nm{font:600 22px/1.15 var(--serif);color:var(--teal)}
.fl-sub{font-size:13.5px;color:var(--muted);margin-top:2px;display:flex;flex-wrap:wrap;gap:2px 6px;align-items:baseline}
.fl-sub .sep{width:4px;height:4px;border-radius:50%;background:var(--gold);display:inline-block;margin:0 2px;align-self:center}
.fl-cam{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--teal);color:var(--cream);border:0;border-radius:14px;padding:9px 12px;font-weight:700;font-size:12px;cursor:pointer;min-width:62px}
.fl-cam svg{width:24px;height:24px;color:var(--gold2)}
.fl-body{padding-top:10px}
.fl-in{animation:flin .28s ease-out}
@keyframes flin{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
.fl-h{font:600 30px/1.1 var(--serif);color:var(--teal);margin:8px 2px 4px}
.fl-h .fl-c{font:700 12px var(--sans);letter-spacing:1.2px;text-transform:uppercase;color:var(--gold);vertical-align:middle;margin-left:6px}
.fl-p{color:var(--muted);margin:0 2px 14px;font-size:14.5px}
.fl-form .f span{font-weight:700}
.in.big{font-size:18px;min-height:54px;padding:12px 14px;border-radius:12px}
.fl-foot{position:sticky;bottom:0;z-index:16;margin:16px -14px 0;padding:12px 14px calc(12px + var(--safe-b));background:linear-gradient(rgba(248,244,236,0),var(--cream) 30%)}
.wrap.narrow:has(.flow){padding-bottom:20px}
.btn.wide{width:100%}
.btn.big{min-height:56px;font-size:16.5px}
.btn:disabled{opacity:.5;cursor:default}
.fmatch{display:block;width:100%;text-align:left;background:var(--warnbg);border:1px solid #ecd9b0;border-radius:12px;padding:10px 12px;margin:-4px 0 12px;cursor:pointer}
.fmatch .use{display:block;font-size:12.5px;font-weight:800;color:var(--warn);margin-top:2px}
.chips.wrapc{flex-wrap:wrap;overflow:visible}
.chip.big{padding:11px 15px;font-size:15px}
.chip.line{display:inline-flex;flex-direction:column;align-items:flex-start;text-align:left;line-height:1.2;padding:8px 12px}
.chip.line small{font-size:10.5px;letter-spacing:.8px;text-transform:uppercase;opacity:.7;font-weight:800}
.lbl2{font-size:12px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase;color:var(--gold);margin:14px 2px 6px}
/* rooms */
.rm{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.rm:last-child{border-bottom:0}
.rmn{width:30px;height:30px;border-radius:50%;background:var(--cream);border:1.5px solid var(--gold);display:grid;place-items:center;font-weight:800;color:var(--teal);font-size:13px}
.rm .ed{font-weight:700;font-size:16px;display:block;margin-bottom:1px}
/* windows */
.rtabs{display:flex;gap:6px;overflow-x:auto;padding:2px 0 6px;margin:0 -2px;scrollbar-width:none}
.rtab{flex:0 0 auto;border:1.5px solid var(--line);background:var(--paper);color:var(--teal);border-radius:999px;padding:8px 13px;font-weight:700;font-size:13.5px;cursor:pointer;display:flex;gap:6px;align-items:center}
.rtab.on{background:var(--teal);color:var(--cream);border-color:var(--teal)}
.rtab .n{background:var(--gold);color:#fff;border-radius:999px;font-size:11px;min-width:18px;padding:0 5px;line-height:18px;text-align:center}
.rtab .n:empty{display:none}
.wform{border:1.5px solid var(--gold);margin-top:10px}
.wf-h{font:600 22px/1 var(--serif);color:var(--teal);margin-bottom:2px}
.sz .in{font-size:22px;font-weight:700;text-align:center;letter-spacing:.3px}
.fr{display:flex;gap:6px;margin:-4px 0 4px;overflow-x:auto}
.fr button{flex:1 0 auto;min-width:42px;border:1px solid var(--line);background:var(--cream);border-radius:10px;padding:9px 6px;font-weight:800;color:var(--teal3);cursor:pointer}
.seg{display:flex;border:1.5px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper)}
.seg button{flex:1;border:0;background:none;padding:12px 6px;font-weight:700;cursor:pointer;color:var(--muted);font-size:14px}
.seg button.on{background:var(--teal);color:var(--cream)}
.seg.qty{align-items:center}
.seg.qty b{flex:0 0 44px;text-align:center;font-size:20px;color:var(--teal)}
.seg.qty button{color:var(--teal3)}
.wc{display:flex;gap:12px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-bottom:10px;box-shadow:var(--shadow)}
.wc-n{flex:0 0 30px;height:30px;border-radius:50%;background:var(--teal);color:var(--cream);display:grid;place-items:center;font-weight:800;font-size:13px}
.wc-t{font-weight:700;font-size:15.5px;color:var(--teal)}
.wc-sz{margin-top:3px;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.wc-sz .ed.sz{font-size:19px;font-weight:800;color:var(--ink)}
.wc-sz .by{color:var(--muted);font-size:13px}
.wc-x{margin-top:4px;display:flex;flex-wrap:wrap;gap:2px 10px;font-size:13.5px;color:var(--muted)}
.wc-ph{display:flex;gap:6px;margin-top:8px}
.wc-ph img{width:54px;height:54px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.wc-a{display:flex;gap:16px;margin-top:8px}
.wc-a .lnk{background:none;border:0;padding:6px 0;font-weight:700;font-size:13px;color:var(--teal3);cursor:pointer;display:flex;align-items:center;gap:5px}
.wc-a .lnk svg{width:17px;height:17px}
.wc-a .lnk.bad{color:var(--bad)}
/* price */
.pc{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-bottom:10px;box-shadow:var(--shadow)}
.pc.need{border-color:var(--gold);border-width:1.5px}
.pc-h{display:flex;gap:12px;align-items:flex-start}
.pc-r{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:8px;margin-top:10px}
.pc-r label{display:flex;flex-direction:column;gap:2px;background:var(--cream);border-radius:10px;padding:7px 10px}
.pc-r label>span{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.pc-r .ed{font-weight:700;font-size:16px;border-bottom:0;padding:2px 0}
.pc-r .pr{background:var(--teal)}
.pc-r .pr>span{color:var(--gold2)}
.pc-r .pr .ed{color:#fff;font-size:19px}
.pc-r .pr .ed.empty{color:rgba(248,244,236,.75)}
.tots>div{display:flex;justify-content:space-between;padding:7px 2px;border-bottom:1px solid var(--line);font-size:15px}
.tots>div:last-child{border-bottom:0}
.tots .green{color:var(--ok);font-weight:700}
details.card summary{cursor:pointer}
/* send */
.sendsum{text-align:left}
.big-money{font:600 44px/1.05 var(--serif);color:var(--teal);margin:6px 0 2px}
.sendgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.sendbtn{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;background:var(--paper);border:1.5px solid var(--line);border-radius:16px;padding:14px;min-height:112px;cursor:pointer;box-shadow:var(--shadow);color:var(--teal)}
.sendbtn svg{width:26px;height:26px;color:var(--gold);margin-bottom:4px}
.sendbtn b{font-size:16px}
.sendbtn span{font-size:12.5px;color:var(--muted);word-break:break-word}
.sendbtn.gold{background:var(--teal);border-color:var(--teal);color:var(--cream)}
.sendbtn.gold span{color:rgba(248,244,236,.75)}
.sendbtn.gold svg{color:var(--gold2)}
.hide{display:none!important}
/* instant photos tray */
#phtray{position:fixed;left:10px;right:10px;bottom:calc(74px + var(--safe-b));z-index:60;display:flex;flex-direction:column;gap:8px;max-width:520px;margin:0 auto;transform:translateY(20px);opacity:0;pointer-events:none;transition:all .25s}
#phtray.on{transform:none;opacity:1;pointer-events:auto}
.pt{display:flex;gap:12px;align-items:center;background:var(--teal);color:var(--cream);border-radius:16px;padding:9px 12px 9px 9px;box-shadow:0 8px 28px rgba(10,43,49,.35);border:1px solid rgba(201,169,110,.5)}
.pti{width:56px;height:56px;border-radius:11px;object-fit:cover;flex:0 0 56px;background:var(--teal3)}
.ptx{flex:1;min-width:0;font-size:13px;line-height:1.35}
.ptx b{font-size:14px}
.pt .bar{display:block;height:6px;border-radius:6px;background:rgba(248,244,236,.18);margin-top:7px;overflow:hidden}
.pt .bar i{display:block;height:100%;background:var(--gold2);border-radius:6px;transition:width .2s}
.pt.done{border-color:var(--gold2)}
.pt.bad{background:var(--bad)}
.kch{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap}
.kch button{border:1px solid rgba(201,169,110,.6);background:none;color:var(--cream);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer}
.kch button.on{background:var(--gold);border-color:var(--gold);color:#fff}
/* board: new quote + continue */
.newq{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,var(--teal),var(--teal3));color:var(--cream);text-decoration:none;border-radius:18px;padding:16px;margin-bottom:12px;box-shadow:0 6px 20px rgba(10,43,49,.22)}
.nq-i{width:48px;height:48px;border-radius:14px;background:rgba(201,169,110,.2);display:grid;place-items:center;flex:0 0 48px}
.nq-i svg{width:26px;height:26px;color:var(--gold2)}
.newq b{display:block;font:600 24px/1.1 var(--serif)}
.newq span span{display:block;font-size:13px;opacity:.85;margin-top:2px}
.nq-go{background:var(--gold);color:#fff;font-weight:800;border-radius:999px;padding:9px 14px;font-size:14px;white-space:nowrap}
.resume{margin-bottom:12px}
.resume h2{font:700 12px/1 var(--sans);letter-spacing:1.6px;text-transform:uppercase;color:var(--gold);margin:16px 2px 8px}
.rs{display:flex;align-items:center;gap:12px;background:var(--paper);border:1.5px solid var(--gold);border-radius:var(--r);padding:12px 14px;margin-bottom:8px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow)}
.rs b{display:block;font-size:16px;color:var(--teal)}
.rsd{display:flex;gap:5px;margin:5px 0 3px}
.rsd i{width:22px;height:5px;border-radius:5px;background:var(--line)}
.rsd i.d{background:var(--gold)}
.rsd i.c{background:var(--teal)}
.rs-go{font-weight:800;color:var(--teal3);white-space:nowrap}
.rs.one{margin:0 0 12px}
.fieldlink{display:flex;gap:10px;align-items:center;color:var(--teal3);text-decoration:none;font-size:13.5px;padding:10px 12px;border:1px dashed var(--line);border-radius:12px;margin-bottom:12px;background:rgba(255,253,248,.6)}
.fieldlink svg{width:20px;height:20px;flex:0 0 20px;color:var(--gold)}
@media (min-width:700px){.fl-top{margin:-14px 0 0;padding:10px 0 8px}.pc-r{grid-template-columns:1fr 1fr 1.2fr}}
.docscroll .d2view .page{margin:0 0 16px}

.fl-foot .row>.btn.ghost{flex:0 0 auto;padding:0 16px}
.fl-foot .row>.grow{flex:1 1 auto;min-width:0;white-space:normal;line-height:1.2}
body:has(.flow) #phtray{bottom:calc(96px + var(--safe-b))}
@media (max-width:480px){.docbar>span.grow{font-size:0}}
html:has(.flow){scroll-padding-top:130px}

/* password eye */
.pw-wrap{position:relative;display:block}
.pw-wrap .in{padding-right:48px}
.pw-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;background:transparent;color:#6b6250;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;border-radius:8px}
.pw-eye:active{background:rgba(0,0,0,.06)}

/* address suggestions */
.ac-wrap{position:relative;display:block}
.ac-box{position:absolute;left:0;right:0;top:100%;z-index:60;background:#fff;border:1px solid #d6ccb6;border-radius:11px;box-shadow:0 8px 24px rgba(0,0,0,.14);margin-top:4px;overflow:hidden}
.ac-box{overflow-y:auto;overscroll-behavior:contain}
.ac-box.ac-up{top:auto;bottom:100%;margin-top:0;margin-bottom:4px}
.ac-it{display:block;width:100%;text-align:left;background:#fff;border:0;border-bottom:1px solid #f0eadc;padding:10px 12px;font-size:15px;cursor:pointer}
.ac-it:last-child{border-bottom:0}
.ac-it b{display:block;font-weight:700;color:#0a2b31}
.ac-it span{display:block;font-size:13px;color:#7a705c}
.ac-it:active{background:#f8f4ec}

/* Nov 1 (v24): rooms + windows on one screen; red dummy sizes; blocked save */
.rtabs{flex-wrap:wrap;overflow:visible}
.rtab.add{border-style:dashed;color:var(--gold);background:transparent}
.rtab.add.on{background:var(--gold);color:#fff;border-color:var(--gold);border-style:solid}
.raddbox{margin:6px 0 12px;padding:12px}
.chip.had{border-color:var(--gold);color:var(--gold)}
.rhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:8px}
.rhead .fl-h{margin:0}
.rhead-a{display:flex;gap:14px}
.wform .szin::placeholder{color:#c0392b;opacity:1;font-weight:800}
.wform .szin::-webkit-input-placeholder{color:#c0392b;opacity:1;font-weight:800}
.wform .szin:placeholder-shown{background:#fdeeec;border-color:#e3a59c}
.wform .szin.bad{border-color:#c0392b;background:#fdeeec;box-shadow:0 0 0 3px rgba(192,57,43,.2)}
.szerr{display:flex;align-items:center;gap:8px;color:#c0392b;font-weight:800;font-size:15px;margin:-2px 0 10px}
.szerr[hidden]{display:none}
.szerr::before{content:'';width:10px;height:10px;border-radius:50%;background:#c0392b;flex:none}
.ed.sz.need{color:#c0392b;border-color:#e3a59c;background:#fdeeec}
.szwarn{border:1.5px solid #e3a59c;background:#fdeeec;color:#8f2a1f}
.mtrow{border-radius:14px;padding:2px 0 4px;margin-bottom:6px}
.mtrow.need{background:#fdeeec;border:1.5px solid #e3a59c;padding:4px 10px 10px}
.mtrow.need .lbl2{color:#c0392b}
.mtrow .req{font-weight:800;text-transform:none;letter-spacing:0;color:#c0392b;margin-left:6px}
.mtrow.need .seg button{color:#c0392b}
.mtrow.shake{animation:ewfshake .4s}
@keyframes ewfshake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.brandin{flex:1 1 140px;min-width:130px;max-width:220px;height:38px;padding:6px 12px;font-size:14px;border-radius:999px}
.fl-foot .wdone{display:block;margin:8px auto 0;padding:6px 10px;font-size:14px;color:var(--teal3);border:0;background:none;box-shadow:none;width:auto;min-height:0}
.rhead-a .lnk{border:0;background:none;padding:6px 0;font-size:14px;box-shadow:none}

.fl-form .f.need .in{border-color:#c0392b!important;background:#fdecea}
.fl-form .f.need>span{color:#c0392b}
.need-msg{color:#c0392b;font-weight:600;margin:8px 0 0}

/* v2.0.9 pricebook (QuoteRite charts) */
.pbbox{background:var(--cream);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:12px 0 6px}
.pbbox .pbprice{margin:0 0 6px}
.pbbox .pbprice .in{font-size:22px;font-weight:800;color:var(--teal)}
.pbinfo{font-size:12.5px;color:var(--muted);line-height:1.45}
.pbok{color:var(--ok);font-weight:800}
.pbchg{color:var(--warn);font-weight:800;font-size:12.5px}
.pbown{color:var(--muted);font-size:11.5px;font-weight:600}
.pbwarn{background:var(--badbg);color:var(--bad);font-weight:800;border-radius:10px;padding:8px 10px;margin:4px 0 8px;font-size:13.5px}
.pbwarn.sm{display:inline-block;padding:4px 8px;font-size:12px;margin:2px 0}
.pbmsg{background:var(--warnbg);color:var(--warn);border-radius:10px;padding:6px 10px;margin-top:6px;font-size:12.5px;font-weight:700}
.pbfab{position:relative;margin-bottom:0}
.pbsug{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:260px;overflow:auto;margin:4px 0 8px}
.pbsug button{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid #f0eadc;padding:10px 12px;font:inherit;font-size:14px;color:var(--ink);cursor:pointer}
.pbsug button small{color:var(--gold);font-weight:800;white-space:nowrap}
.pbcol{margin-top:6px}
.mfrrow{display:flex;align-items:flex-end;gap:10px;margin-top:6px}
.mfrrow .mfr{flex:0 0 52%;margin:0}
.mfrrow .mfr .in{padding:9px 10px;font-size:15px}
.mfrhint{font-size:12.5px;color:var(--teal3);font-weight:700;padding-bottom:10px}
.mfrhint .lnk,.pbline .lnk,.wc-p .lnk,.pbinfo .lnk{background:none;border:0;padding:2px 4px;color:var(--teal3);font-weight:800;font-size:12.5px;text-decoration:underline;cursor:pointer}
.mfrc{font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:3px}
.wc-p{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:6px}
.lbl3{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.wc-p .ed.prc{font-weight:800;font-size:17px;color:var(--teal)}
.pc-r.two{grid-template-columns:1fr 1.3fr}
.pbro{font-size:16px;font-weight:700;padding:2px 0}
.pbline{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}
.pbbrand h3{font-size:19px}
.pbnow{margin:8px 0 4px;font-size:14px;line-height:1.45}
.pbex{font-size:13px;color:var(--teal3);font-weight:700;margin:2px 0 10px}
.pblist .pbrow{width:100%;border-left:0;border-right:0;border-bottom:0;text-align:left;background:none;font:inherit;color:inherit;cursor:pointer}
.pblist .pbrow.on{background:var(--cream)}
.pbpct{font-weight:800;font-size:18px;color:var(--teal);text-align:right;line-height:1.1;white-space:nowrap}
.pbpct small{display:block;font-size:10.5px;color:var(--muted);font-weight:700;letter-spacing:.5px}
.pbpf{background:var(--cream);padding:10px 12px 4px;border-top:1px solid var(--line)}
a.pbmore{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}

/* v2.1.0 curtain switches (Nov 1 2026): round knob, no X anywhere */
.curt{background:#f6f1e6;border:1px solid #e3d9c4;border-radius:12px;padding:10px 12px;margin:10px 0 4px}
.tgls{display:flex;flex-direction:column;gap:6px}
.tgl{display:flex;align-items:center;gap:10px;background:#fff;border:1.5px solid #dcd2bd;border-radius:999px;padding:7px 12px 7px 8px;font:inherit;font-size:14.5px;font-weight:700;color:var(--ink,#1d2b2b);text-align:left;cursor:pointer;min-height:42px}
.tgl .tk{flex:0 0 40px;height:24px;border-radius:999px;background:#cfc6b4;position:relative;transition:background .15s}
.tgl .kn{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:left .15s}
.tgl.on{border-color:var(--teal,#0e6b6b);background:#eaf4f3}
.tgl.on .tk{background:var(--teal,#0e6b6b)}
.tgl.on .kn{left:19px}
.tgl .td{font-weight:600;color:var(--muted,#777);font-size:13px}
.curtout{margin-top:8px;font-size:14px;font-weight:700;color:var(--teal,#0e6b6b);line-height:1.45}
.curtl{line-height:1.45;font-weight:600}
.wc-curt{margin:6px 0 2px}
.wc-curt .tgls{flex-direction:row;flex-wrap:wrap;gap:5px;margin-bottom:4px}
.wc-curt .tgl{min-height:32px;padding:4px 10px 4px 5px;font-size:12.5px;gap:6px}
.wc-curt .tgl .tk{flex-basis:30px;height:18px}
.wc-curt .tgl .kn{width:12px;height:12px}
.wc-curt .tgl.on .kn{left:15px}
.wc-curt .tgl .td{font-size:11.5px}

/* v2.1.0 cost privacy: owner + administrator see cost only after a tap on "Show my cost" (hides again on leaving or after 25 s) */
body:not(.showcost) .costv{display:none!important}
body:not(.showcost) .pc-r.hc{grid-template-columns:1fr 1.3fr}
body:not(.showcost) .pc-r.hc2,.pc-r.one{grid-template-columns:1fr}
.costbtn{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;background:none;border:0;padding:2px 4px;margin-left:6px;font:inherit;font-size:12px;font-weight:700;color:var(--muted,#888);text-decoration:underline;cursor:pointer;opacity:.75}
.costbtn .cb-h{display:none}
body.showcost .costbtn .cb-s{display:none}
body.showcost .costbtn .cb-h{display:inline}

/* v2.1.1 curtain deductions: Yes / No, nothing pre-filled (Joel 3:59 PM) */
.cq{display:flex;flex-direction:column;gap:8px;margin:6px 0}
.cqr{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:10px;border:1px solid #ddd}
.cqr.need{border-color:#d33;background:#fff5f5}
.cqr[hidden]{display:none} /* v2.1.3: fullness row only after Ripplefold = Yes (the hidden attribute was overridden by display:flex) */
.cql{font-weight:600;font-size:14px}
.cqs button{min-width:56px}

/* v2.1.3 fabric photo (one per room, carried to the next window) */
.fabph{margin:2px 0 12px}
.fabbtns{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.fabbtn{background:var(--gold);border-color:var(--gold);color:#fff}
.fabph .lbl2 .muted{text-transform:none;letter-spacing:0;font-weight:600;color:var(--muted)}
.fabbtns .lnk,.fabacts .lnk{background:none;border:0;padding:8px 2px;font-weight:700;font-size:14.5px;color:var(--teal3);cursor:pointer;display:inline-flex;align-items:center;gap:6px;min-height:36px}
.fabacts .lnk.bad{color:var(--bad)}
.fabbtns .lnk svg{width:18px;height:18px}
.fabrow{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:8px;background:var(--paper)}
.fabrow.bad{border-color:var(--bad)}
.fabrow .grow{min-width:0}
.fabth{width:64px;height:64px;border-radius:10px;overflow:hidden;flex:none;padding:0;border:1px solid var(--line);background:#e8e0cf;cursor:pointer;display:block}
.fabth img{width:100%;height:100%;object-fit:cover;display:block}
.fabbar{display:block;height:6px;border-radius:99px;background:#e8e0cf;margin-top:6px;overflow:hidden}
.fabbar i{display:block;height:100%;background:var(--gold);transition:width .2s}
.fabacts{display:flex;flex-direction:column;gap:8px;align-items:flex-end;flex:none}
.fabmini{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:3px 10px 3px 3px;background:var(--paper);cursor:pointer;font-size:13px;color:var(--muted);font-weight:600}
.fabmini img{width:40px;height:40px;object-fit:cover;border-radius:7px;display:block;background:#e8e0cf}
.wc-fab{margin-top:8px}

/* v2.1.4 curtain control: Wand | Cord, Cord → Right | Left (form + window card) */
.mtrow[hidden]{display:none}
.wcctl{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center}
.wcctl .seg{display:inline-flex}
.wcctl .seg button{padding:6px 12px;font-size:13px;flex:0 0 auto}
.wccneed{color:#c0392b;font-weight:800;font-size:12px}

/* v2.1.6 curtains by the foot */
.cfx{color:var(--ok);font-weight:800;font-size:13.5px}
.wc-p .cfx{font-size:12.5px}
.cpbox{margin:10px 0 4px}
.pbcurt .pbex{margin-top:4px}
/* v2.1.6 customer's size, not verified (amber) */
.unv{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:6px}
.unvb{display:inline-block;background:#fdf0d5;color:#8a5a00;border:1px solid #f0c060;border-radius:999px;padding:3px 10px;font-weight:800;font-size:12.5px}
.unvw{font-size:12px;color:var(--muted)}
.btn.vfy{padding:5px 14px;min-height:0;background:#0a2b31;color:#fff;border-color:#0a2b31}
.unvblk{background:#fdf0d5;color:#7a5000;border:1px solid #f0c060;border-radius:10px;padding:8px 10px;font-weight:700;font-size:13px;margin-top:8px}
.unvbar{background:#f2b544;color:#3a2600;border-radius:999px;padding:4px 10px;font-weight:800;font-size:12.5px}
td.woblk{color:#a33;font-weight:800;text-align:center;font-size:.85em}

/* v2.1.7: swipe left to delete a customer; Deleted list (owner) */
.swr{position:relative;overflow:hidden;border-top:1px solid var(--line);background:var(--bad)}
.swr:first-child{border-top:0}
.swr .lr{border-top:0;position:relative;z-index:1;will-change:transform;touch-action:pan-y}
.swdel{position:absolute;top:0;right:0;bottom:0;width:96px;border:0;background:var(--bad);color:#fff;font-weight:800;font-size:15px;cursor:pointer;z-index:0}
.btn.dangerfill{background:var(--bad);border-color:var(--bad);color:#fff}
.delq{font-size:17px;margin:2px 0 8px}
.delbtns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.delbtns .btn{min-height:50px;font-size:16px}
.delbanner{border-left:4px solid var(--bad)}
.dlr{align-items:flex-start;cursor:default}
.dlr .delby{color:var(--bad);font-weight:700}
.dbtns{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.dforever{color:var(--bad);font-size:13px;font-weight:700;background:none;border:0;padding:6px 0;cursor:pointer;text-decoration:underline}

/* v2.1.7: type-ahead suggestions (customers, fabric names, workrooms) */
.sugg{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(10,43,49,.14);margin:-4px 0 12px;overflow:hidden;position:relative;z-index:5}
.sugg .sg-t{font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--gold);padding:8px 12px 2px}
.sugg .sg{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line);padding:10px 12px;cursor:pointer;font:inherit;color:inherit;min-height:48px}
.sugg .sg:first-child,.sugg .sg-t+.sg{border-top:0}
.sugg .sg b{display:block;font-weight:800}
.sugg .sg .small{display:block}
.sugg .sg:active,.sugg .sg:hover{background:#f6f1e6}
.sg-go{color:var(--gold);font-weight:800;white-space:nowrap;font-size:14px}
/* v2.1.7: New customer: Continue stays on screen above the bottom bar */
.custfoot{height:74px}
.custfoot-in{position:fixed;left:0;right:0;bottom:calc(62px + var(--safe-b));z-index:29;background:rgba(248,244,236,.97);border-top:1px solid var(--line);padding:10px 14px;display:flex;justify-content:center}
.custfoot-in .btn{max-width:560px}

/* v2.1.7: curtain progress (round dots only) */
.ctp{padding:6px 14px}
.ctp-r{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px dashed var(--line);position:relative}
.ctp-r:first-child{border-top:0}
.ctp-dot{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);background:#fff;flex:none}
.ctp-r.done .ctp-dot{background:var(--teal);border-color:var(--teal);box-shadow:inset 0 0 0 3px #fff}
.ctp-r.next .ctp-dot{border-color:var(--gold)}
.ctp-r.later{opacity:.5}
.ctp-r .lnk{font-size:14px;background:none;border:0;color:var(--teal3);font-weight:800;text-decoration:underline;cursor:pointer;padding:8px 4px}
.ctp-wr{color:var(--teal);font-weight:800;margin-top:2px}
.cchip{background:#efe7d6!important;color:#7a6236!important}
/* v2.1.7: Edit on Joel's review */
.rv-sub{gap:10px;align-items:flex-end;margin-top:2px}
.rv-edit{flex:none;min-height:36px;padding:6px 14px}
.rline.rv-flash{background:#fbf3df;transition:background .6s}
.rvf .seg{margin-bottom:12px}

/* v2.1.7: Cassette on shades */
.wc-cas{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px}
.wc-cas .chip{min-height:32px;padding:4px 12px}
.wc-cas.need{background:#fdf3e2;border-radius:10px;padding:4px 8px}

/* v2.1.7: the sheet photo on Joel's review: big, one tap to full screen */
.ivtap{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in}
.ivfull{display:flex;align-items:center;gap:10px;padding:10px 10px 4px;color:#f8f4ec}
.ivfull .btn{flex:1}
.ivfull .small{opacity:.8;white-space:nowrap}
.viewer .vs{touch-action:pan-x pan-y}
.vhint{color:#f8f4ec;opacity:.6;text-align:center;font-size:12px;padding:6px 0 calc(8px + var(--safe-b))}

/* v38 incoming call popup */
#callbar{position:fixed;left:8px;right:8px;top:calc(8px + env(safe-area-inset-top,0px));z-index:80;max-width:560px;margin:0 auto;background:var(--teal);color:var(--cream);border:1.5px solid var(--gold);border-radius:16px;padding:12px 12px 12px 14px;box-shadow:0 10px 30px rgba(10,43,49,.35);transform:translateY(-130%);opacity:0;transition:transform .25s ease,opacity .25s ease}
#callbar.on{transform:none;opacity:1}
#callbar[hidden]{display:none}
#callbar .cb-in{display:flex;gap:12px;align-items:flex-start}
#callbar .cb-ico{flex:none;width:40px;height:40px;border-radius:50%;background:var(--gold);color:var(--teal);display:flex;align-items:center;justify-content:center;animation:cbring 1.2s ease-in-out infinite}
#callbar .cb-t{flex:1;min-width:0}
#callbar .cb-k{font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gold2)}
#callbar .cb-n{font-size:17px;font-weight:700;line-height:1.25;margin-top:1px}
#callbar .cb-num{white-space:nowrap;font-variant-numeric:tabular-nums}
#callbar .cb-c{font-size:14.5px;margin-top:3px;color:var(--cream)}
#callbar .cb-c b{color:#fff}
#callbar .cb-new{color:rgba(248,244,236,.8)}
#callbar .cb-m{font-size:12.5px;color:rgba(248,244,236,.75)}
#callbar .cb-b{display:flex;gap:8px;margin-top:11px}
#callbar button{flex:1;border-radius:999px;padding:11px 12px;font:800 14.5px/1 var(--sans);cursor:pointer;min-height:44px}
#callbar .cb-go{background:var(--gold);color:var(--teal);border:0}
#callbar .cb-x{background:transparent;color:var(--cream);border:1.5px solid rgba(248,244,236,.45);flex:0 0 auto;padding-left:18px;padding-right:18px}
/* v39 call banner: caller ID line, Ignore / Potential customer / Quick note, shortcut row (wraps on a 390px phone) */
#callbar{max-height:calc(100vh - 24px);overflow:auto}
#callbar .cb-cid{font-size:16px;font-weight:600;margin-top:2px;color:#fff;overflow-wrap:anywhere}
#callbar .cb-cid b{color:var(--gold2);font-weight:800;letter-spacing:.02em}
#callbar .cb-cid.cb-none{font-size:14px;font-weight:600;color:rgba(248,244,236,.7)}
#callbar .cb-lead{display:inline-block;background:var(--gold);color:var(--teal);font-size:11.5px;font-weight:800;letter-spacing:.04em;border-radius:999px;padding:3px 9px;vertical-align:1px}
#callbar .cb-b{flex-wrap:wrap}
#callbar .cb-b button{flex:1 1 auto;padding:10px 12px;min-height:42px;font-size:14px}
#callbar .cb-s{background:rgba(248,244,236,.1);color:var(--cream);border:1.5px solid var(--gold)}
#callbar .cb-b .cb-x{flex:0 1 auto}
#callbar .cb-jumps{margin-top:8px;gap:6px;padding-top:8px;border-top:1px solid rgba(248,244,236,.16)}
#callbar .cb-jumps .cb-j{flex:1 1 auto;min-height:36px;padding:8px 10px;font-size:13px;font-weight:700;background:transparent;color:var(--gold2);border:1px solid rgba(176,150,94,.6)}
#callbar button[disabled]{opacity:.6}
#callbar .cb-ok{margin-top:8px;font-size:13.5px;font-weight:700;color:var(--gold2)}
#callbar .cb-note{margin-top:10px}
#callbar .cb-ta{width:100%;box-sizing:border-box;border-radius:12px;border:1.5px solid var(--gold);background:var(--cream);color:var(--teal);font:500 16px/1.35 var(--sans);padding:10px 12px;resize:vertical;min-height:76px}
#callbar .cb-note .cb-b{margin-top:8px}
/* v39 potential customers */
.cfilt{display:flex;gap:6px;margin:0 0 10px;flex-wrap:wrap}
.cfilt .cft{flex:1 1 auto;border-radius:999px;border:1.5px solid var(--gold);background:transparent;color:var(--teal);font:700 13.5px/1 var(--sans);padding:10px 12px;min-height:40px;cursor:pointer}
.cfilt .cft.on{background:var(--teal);color:var(--cream);border-color:var(--teal)}
.leadpill{display:inline-block;background:var(--gold);color:var(--teal);font-size:11px;font-weight:800;border-radius:999px;padding:2px 8px;vertical-align:1px;margin-left:4px}
.av.avlead{background:var(--gold);color:var(--teal)}
.leadcard{border:1.5px solid var(--gold);background:#fbf7ee}
.cidhint{margin:-4px 2px 10px;font-size:13.5px;color:var(--teal)}
.cnl .cn{padding:10px 0;border-bottom:1px solid rgba(10,43,49,.08)}
.cnl .cn:first-child{padding-top:0}
.cnl .cn:last-child{border-bottom:0;padding-bottom:0}
.cnl .cn-t{white-space:pre-wrap;font-size:15px;color:var(--teal)}
.cnl .cn-m{font-size:12.5px;color:var(--muted);margin-top:3px}

@keyframes cbring{0%,100%{transform:rotate(0)}10%{transform:rotate(-12deg)}20%{transform:rotate(12deg)}30%{transform:rotate(-8deg)}40%{transform:rotate(0)}}
@media (prefers-reduced-motion:reduce){#callbar,#callbar .cb-ico{transition:none;animation:none}}

/* v40 caller ID extras (Joel 3:34 PM Nov 2): area / line / earlier calls on the banner, Make ES first in the shortcut row, Caller ID section on the customer */
#callbar .cb-why{font-weight:600;color:rgba(248,244,236,.7)}
#callbar .cb-cid .cb-pl{color:var(--gold2)}
#callbar .cb-meta{font-size:12.5px;line-height:1.35;margin-top:3px;color:rgba(248,244,236,.82);overflow-wrap:anywhere}
#callbar .cb-hist{color:var(--gold2);font-weight:600}
#callbar .cb-jumps .cb-j.cb-jm{background:var(--gold);color:var(--teal);border-color:var(--gold);font-weight:800}
.cidcard .kv{margin:0}
.cidcard .cidl{margin-top:10px;border-top:1px solid rgba(10,43,49,.1);padding-top:6px}
.cidcard .cidr{display:flex;gap:10px;font-size:13.5px;padding:5px 0;border-bottom:1px dashed rgba(10,43,49,.08)}
.cidcard .cidr:last-child{border-bottom:0}
.cidcard .cid-d{flex:0 0 auto;min-width:84px;white-space:nowrap;color:var(--teal);font-weight:700}
.cidcard .cid-w{flex:1;min-width:0;color:#3d4b4e}
.cidcard .cidhr{border:0;border-top:1.5px solid rgba(176,150,94,.4);margin:12px 0}
/* v2.2.2 (Joel 11:40 PM Nov 2): product first, then the list folds up to one line with Change product */
.fl-foot [hidden]{display:none!important}
#wfrest[hidden]{display:none}
.wform .wpq{margin-top:10px}
.wform .wpq.need{color:#c0392b}
.wform .wprod{gap:8px}
.wpfirst{margin:12px 2px 2px;color:var(--muted);font-size:14px}
.wprodbar{display:flex;align-items:center;gap:10px;margin:10px 0 2px;padding:10px 12px;border:1px solid #d6ccb6;border-radius:12px;background:var(--paper)}
.wprodbar .wpb-n{flex:1 1 auto;min-width:0;font-weight:800;font-size:17px;color:var(--teal)}
.wprodbar .lnk{flex:none;font-weight:700}
.wprodbar .lnk{background:none;border:1px solid var(--teal3);border-radius:999px;padding:7px 14px;font-size:14px;color:var(--teal3);cursor:pointer;min-height:36px}
.wform .wpq .req{font-weight:800;text-transform:none;letter-spacing:0;color:#c0392b;margin-left:6px}
.wform .wpq.shake{animation:ewfshake .4s}

/* v42: the job's sheet & photos at the top of the windows step; tap = full screen */
.flphs{margin:0 0 12px}
.flphs-h{font-size:12px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase;color:var(--gold);margin:2px 2px 6px}
.flphs-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.flph{position:relative;flex:none;width:72px;height:72px;border-radius:10px;overflow:hidden;background:#e8e0cf;border:0;padding:0;cursor:pointer}
.flph img{width:100%;height:100%;object-fit:cover;display:block}
.flph .cap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(10,43,49,.85));color:#fff;font-size:9.5px;font-weight:700;padding:10px 4px 3px;text-align:left;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* v2.2.3 (Joel 12:20 AM Nov 3): Drapery style — Ripplefold or Pinch pleat */
.wsty{margin-top:10px}
.wsty .seg button{font-size:16px;min-height:46px}
.wsty .wpfirst{margin-top:8px}
.wc-sty{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}
.wc-sty .seg{display:inline-flex}
.wc-sty .seg button{padding:6px 12px;font-size:13px;flex:0 0 auto}
.wc-sty.need{background:#fdf3e2;border-radius:10px;padding:4px 8px}
.wc-sty .wc-fu.need button{color:#c0392b}

/* v44: read the sample book label */
.lblrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 2px;padding:10px;border:1px dashed var(--line);border-radius:12px;background:var(--paper)}
.lblrow .muted{flex:1;min-width:150px;line-height:1.3}
.lblbtn{background:#fff;border:1.5px solid var(--gold);color:var(--ink,#1d2b2f);font-weight:700;display:inline-flex;align-items:center;gap:8px}
.lblbtn svg{width:18px;height:18px;color:var(--gold)}
.lblr-ph{display:block;width:100%;max-height:150px;object-fit:contain;border-radius:12px;background:#f1efe9;margin-bottom:10px}
.lblhint{margin:2px 0 6px}
.lblh{margin-top:10px}
.lblh .lbl2{margin:0 0 6px}
.lblh .in{margin-bottom:6px}
.lblc{gap:6px}
.lblc .chip{font-size:14px;min-height:36px;padding:6px 11px}
.lblacts{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-top:14px}
.lblacts .lnk{background:none;border:0;padding:8px 2px;font-weight:700;font-size:14.5px;color:var(--teal3);cursor:pointer;align-self:center;min-height:36px}
.lblwait{display:flex;flex-direction:column;gap:8px;padding:6px 0 4px}
.lblfail{border:1px solid var(--bad);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}
.in.bad8{border-color:var(--bad)}
.lblc .lblmore{background:none;border:0;padding:6px 4px;font-weight:700;font-size:14px;color:var(--teal3);cursor:pointer;min-height:36px}

/* v45 (Joel 7:31 AM Nov 3): a clear Edit button on every window card; it opens this window's own form in place */
.wc{position:relative}
.wc-t{padding-right:70px}
.wc-edit{position:absolute;top:10px;right:10px;min-width:58px;min-height:36px;padding:0 14px;border-radius:999px;border:1.5px solid var(--gold);background:var(--teal);color:var(--cream);font:700 14px/1 inherit;font-family:inherit;letter-spacing:.2px;cursor:pointer;box-shadow:0 1px 2px rgba(10,43,49,.15)}
.wc-edit:active{background:var(--teal3)}
.wform.wedit{border-width:2px;margin:0 0 10px;background:#fffaf0;scroll-margin-top:150px}
.wf-eh{display:flex;align-items:center;justify-content:space-between;gap:10px}
.wf-eh .lnk{font:700 15px/1 inherit;font-family:inherit;color:var(--teal3);background:none;border:0;padding:8px 0;cursor:pointer}
.wf-es{margin:4px 0 2px;color:var(--muted);font-size:13.5px}
.wform .wedcan{margin-top:8px}

/* v456 manufacturer size box */
.mfrtog{background:none;border:1.5px dashed var(--teal3);color:var(--teal3);border-radius:10px;padding:8px 12px;font-weight:800;font-size:14px;cursor:pointer}
.mfrbox{border:1.5px solid var(--teal3);border-radius:12px;padding:8px 10px 4px;margin-top:8px;background:#f6fbfb}
.mfrhd{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;color:var(--teal3)}
.mfrhd .lnk{margin-left:auto;background:none;border:0;color:#b42318;font-weight:800;font-size:12.5px;text-decoration:underline;cursor:pointer}
.mfrbox .mfr .in{padding:9px 10px;font-size:15px}

/* v458 remove under each photo */
.flpw{display:flex;flex-direction:column;align-items:center;gap:2px;flex:none}
.flrm{background:none;border:0;color:#b42318;font-size:11.5px;font-weight:800;text-decoration:underline;padding:2px 4px;cursor:pointer}

/* ---------- v46: emails from the app, ask vendor, brands, service calls, Text ---------- */
.pill.svc{background:#efe4f7;color:#5b2f86}
.st-to_schedule{background:#f3e9fb;color:#5b2f86}.st-done{background:#e6f3ea;color:#1e7d3c}
.fhead .quick.q4{grid-template-columns:repeat(4,1fr)}
.newq.svcq{background:linear-gradient(135deg,#3a2350,#5b2f86)}
.svccol .col-h{border-bottom-color:#cdb6e4}
.chip.svcchip:not(.on){border-color:#cdb6e4;color:#5b2f86}
.obst{display:inline-block;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:800;white-space:nowrap}
.obst.wait{background:var(--warnbg);color:var(--warn)}.obst.ok{background:var(--okbg);color:var(--ok)}.obst.bad{background:var(--badbg);color:var(--bad)}.obst.off{background:#eee;color:#666}
.oblist .obrow{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line)}
.oblist .obrow:first-child{border-top:0;padding-top:0}
.oblist .obrow b{display:block;font-size:14px;word-break:break-word}
.oblist .obr{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.obwhy{color:var(--bad);margin-top:3px}
.obline{margin-top:8px}
.emf textarea{min-height:150px}
.emattach{display:flex;gap:10px;align-items:center;background:#f6f1e6;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0 0 12px}
.emattach svg{width:26px;height:26px;color:var(--gold);flex:none}
.emattach b{display:block;font-size:13.5px;word-break:break-all}
.emattach .muted{display:block}
.emck{gap:10px;margin:0 0 12px;align-items:center}
.emck input{width:22px;height:22px;flex:none}
.avf .chip.dim{opacity:.5}
.avf .seg{margin-bottom:4px}
.avwins{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.avw{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff;cursor:pointer}
.avw.on{border-color:var(--teal3);background:#eef5f6}
.avw input{width:22px;height:22px;flex:none;margin:1px 0 0}
.avmail{border-top:1px solid var(--line);padding-top:12px}
textarea.mono{font:13px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;min-height:240px}
.lbl2.between{display:flex;justify-content:space-between;align-items:center}
.askv{margin-bottom:12px}
.btn.wide{width:100%}
.svsteps{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:12px 0 4px}
.svs{display:flex;flex-direction:column;align-items:center;gap:6px;border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:10px 4px;font-weight:800;font-size:12.5px;color:var(--muted);cursor:pointer}
.svs i{width:12px;height:12px;border-radius:50%;border:2px solid #cdbfa2;display:block}
.svs.d{color:var(--ink)}.svs.d i{background:var(--gold2);border-color:var(--gold2)}
.svs.on{background:var(--teal);border-color:var(--teal);color:var(--cream)}.svs.on i{background:var(--gold2);border-color:var(--gold2)}
.svf .lbl2{margin-top:16px}
.svph{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.svpt{display:flex;flex-direction:column;align-items:center;gap:2px}
.svpt img{width:84px;height:84px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.in.sm{padding:6px 8px;font-size:14px}
.esline{padding:12px 0;border-top:1px solid var(--line)}
.esline:first-child{border-top:0;padding-top:0}
.esrow{gap:8px;margin-top:8px;align-items:flex-end}
.esrow label span{display:block;font-size:11.5px;font-weight:700;color:var(--muted);margin-bottom:3px}
.esq{flex:0 0 64px}.esq input{text-align:center}
.esp{flex:0 0 110px}.esp input{text-align:right}
.estot{text-align:right;padding-bottom:10px;font-weight:800}
.btns.three{display:flex;gap:8px}.btns.three>*{flex:1 1 0;padding-left:6px;padding-right:6px}
.brl .chip{display:inline-flex;align-items:center;gap:6px}
.brl .chip.fixed{background:#f6f1e6;border-color:var(--gold2);color:var(--ink)}
.brl .chip.fixed small{font-weight:600;opacity:.75;font-size:11px}
.brx{border:0;background:none;color:var(--bad);font-weight:700;font-size:11.5px;cursor:pointer;padding:0 0 0 4px}
.smsl .opt{text-decoration:none;color:var(--ink)}
.smsl .opt .small{font-weight:500}
.smsl .chev{color:var(--gold);font-weight:800}
.emf .lnk,.avf .lnk,.svf .lnk,.svpt .lnk,#svpicked .lnk,.kv .lnk,.esrow .lnk,.oblist .lnk{background:none;border:0;padding:4px 2px;color:var(--teal3);font-weight:800;font-size:13px;cursor:pointer;text-decoration:underline}
.esrow .lnk.danger{color:var(--bad)}
.btns.three .btn.big{font-size:15px;white-space:nowrap;padding-left:4px;padding-right:4px}
.obst{line-height:1.3}

/* v46 (Joel 6:03 PM): each status its own color — early stages cool blue-grey, money stages amber, installation green; service call purple */
.pill.st-inquiry{background:#e9eef4;color:#3b5068}.jc.stb-inquiry{border-left:4px solid #3b5068}.stc-inquiry .sd{background:#3b5068}.chip.stc-inquiry.on{background:#3b5068;border-color:#3b5068;color:#fff}.stpick.stb-inquiry{border-left:5px solid #3b5068}.lgrp-inquiry .lgrp-h{border-bottom-color:#3b5068}.stopt.stb-inquiry{border-left:5px solid #3b5068}
.pill.st-appointment{background:#e2ecfa;color:#22508e}.jc.stb-appointment{border-left:4px solid #22508e}.stc-appointment .sd{background:#22508e}.chip.stc-appointment.on{background:#22508e;border-color:#22508e;color:#fff}.stpick.stb-appointment{border-left:5px solid #22508e}.lgrp-appointment .lgrp-h{border-bottom-color:#22508e}.stopt.stb-appointment{border-left:5px solid #22508e}
.pill.st-price_needed{background:#e8e6fa;color:#4a3aa0}.jc.stb-price_needed{border-left:4px solid #4a3aa0}.stc-price_needed .sd{background:#4a3aa0}.chip.stc-price_needed.on{background:#4a3aa0;border-color:#4a3aa0;color:#fff}.stpick.stb-price_needed{border-left:5px solid #4a3aa0}.lgrp-price_needed .lgrp-h{border-bottom-color:#4a3aa0}.stopt.stb-price_needed{border-left:5px solid #4a3aa0}
.pill.st-ready_measure{background:#dcf0f5;color:#12606f}.jc.stb-ready_measure{border-left:4px solid #12606f}.stc-ready_measure .sd{background:#12606f}.chip.stc-ready_measure.on{background:#12606f;border-color:#12606f;color:#fff}.stpick.stb-ready_measure{border-left:5px solid #12606f}.lgrp-ready_measure .lgrp-h{border-bottom-color:#12606f}.stopt.stb-ready_measure{border-left:5px solid #12606f}
.pill.st-quote_needed{background:#dbf2ec;color:#0f6a58}.jc.stb-quote_needed{border-left:4px solid #0f6a58}.stc-quote_needed .sd{background:#0f6a58}.chip.stc-quote_needed.on{background:#0f6a58;border-color:#0f6a58;color:#fff}.stpick.stb-quote_needed{border-left:5px solid #0f6a58}.lgrp-quote_needed .lgrp-h{border-bottom-color:#0f6a58}.stopt.stb-quote_needed{border-left:5px solid #0f6a58}
.pill.st-follow_up{background:#fdf2d2;color:#865600}.jc.stb-follow_up{border-left:4px solid #865600}.stc-follow_up .sd{background:#865600}.chip.stc-follow_up.on{background:#865600;border-color:#865600;color:#fff}.stpick.stb-follow_up{border-left:5px solid #865600}.lgrp-follow_up .lgrp-h{border-bottom-color:#865600}.stopt.stb-follow_up{border-left:5px solid #865600}
.pill.st-wait_deposit{background:#fde4c8;color:#9a4a00}.jc.stb-wait_deposit{border-left:4px solid #9a4a00}.stc-wait_deposit .sd{background:#9a4a00}.chip.stc-wait_deposit.on{background:#9a4a00;border-color:#9a4a00;color:#fff}.stpick.stb-wait_deposit{border-left:5px solid #9a4a00}.lgrp-wait_deposit .lgrp-h{border-bottom-color:#9a4a00}.stopt.stb-wait_deposit{border-left:5px solid #9a4a00}
.pill.st-order_material{background:#f9ded4;color:#94381c}.jc.stb-order_material{border-left:4px solid #94381c}.stc-order_material .sd{background:#94381c}.chip.stc-order_material.on{background:#94381c;border-color:#94381c;color:#fff}.stpick.stb-order_material{border-left:5px solid #94381c}.lgrp-order_material .lgrp-h{border-bottom-color:#94381c}.stopt.stb-order_material{border-left:5px solid #94381c}
.pill.st-wait_material{background:#e6efd6;color:#4a6512}.jc.stb-wait_material{border-left:4px solid #4a6512}.stc-wait_material .sd{background:#4a6512}.chip.stc-wait_material.on{background:#4a6512;border-color:#4a6512;color:#fff}.stpick.stb-wait_material{border-left:5px solid #4a6512}.lgrp-wait_material .lgrp-h{border-bottom-color:#4a6512}.stopt.stb-wait_material{border-left:5px solid #4a6512}
.pill.st-schedule_install{background:#d7f0df;color:#17663a}.jc.stb-schedule_install{border-left:4px solid #17663a}.stc-schedule_install .sd{background:#17663a}.chip.stc-schedule_install.on{background:#17663a;border-color:#17663a;color:#fff}.stpick.stb-schedule_install{border-left:5px solid #17663a}.lgrp-schedule_install .lgrp-h{border-bottom-color:#17663a}.stopt.stb-schedule_install{border-left:5px solid #17663a}
.pill.st-service_call{background:#efe4f7;color:#5b2f86}.jc.stb-service_call{border-left:4px solid #5b2f86}.stc-service_call .sd{background:#5b2f86}.chip.stc-service_call.on{background:#5b2f86;border-color:#5b2f86;color:#fff}.stpick.stb-service_call{border-left:5px solid #5b2f86}.lgrp-service_call .lgrp-h{border-bottom-color:#5b2f86}.stopt.stb-service_call{border-left:5px solid #5b2f86}
.pill.st-approved{background:#e9f2e2;color:#3c6a1e}.jc.stb-approved{border-left:4px solid #3c6a1e}.stc-approved .sd{background:#3c6a1e}.chip.stc-approved.on{background:#3c6a1e;border-color:#3c6a1e;color:#fff}.stpick.stb-approved{border-left:5px solid #3c6a1e}.lgrp-approved .lgrp-h{border-bottom-color:#3c6a1e}.stopt.stb-approved{border-left:5px solid #3c6a1e}
.pill.st-ordered{background:#e3f0f2;color:#1d6170}.jc.stb-ordered{border-left:4px solid #1d6170}.stc-ordered .sd{background:#1d6170}.chip.stc-ordered.on{background:#1d6170;border-color:#1d6170;color:#fff}.stpick.stb-ordered{border-left:5px solid #1d6170}.lgrp-ordered .lgrp-h{border-bottom-color:#1d6170}.stopt.stb-ordered{border-left:5px solid #1d6170}
.pill.st-confirmed{background:#e1eef0;color:#15596a}.jc.stb-confirmed{border-left:4px solid #15596a}.stc-confirmed .sd{background:#15596a}.chip.stc-confirmed.on{background:#15596a;border-color:#15596a;color:#fff}.stpick.stb-confirmed{border-left:5px solid #15596a}.lgrp-confirmed .lgrp-h{border-bottom-color:#15596a}.stopt.stb-confirmed{border-left:5px solid #15596a}
.pill.st-shipped{background:#e8f0ea;color:#2d6a48}.jc.stb-shipped{border-left:4px solid #2d6a48}.stc-shipped .sd{background:#2d6a48}.chip.stc-shipped.on{background:#2d6a48;border-color:#2d6a48;color:#fff}.stpick.stb-shipped{border-left:5px solid #2d6a48}.lgrp-shipped .lgrp-h{border-bottom-color:#2d6a48}.stopt.stb-shipped{border-left:5px solid #2d6a48}
.pill.st-arrived{background:#e6f1ec;color:#27704d}.jc.stb-arrived{border-left:4px solid #27704d}.stc-arrived .sd{background:#27704d}.chip.stc-arrived.on{background:#27704d;border-color:#27704d;color:#fff}.stpick.stb-arrived{border-left:5px solid #27704d}.lgrp-arrived .lgrp-h{border-bottom-color:#27704d}.stopt.stb-arrived{border-left:5px solid #27704d}
.pill.st-scheduled{background:#fbf0dc;color:#9a5c10}.jc.stb-scheduled{border-left:4px solid #9a5c10}.stc-scheduled .sd{background:#9a5c10}.chip.stc-scheduled.on{background:#9a5c10;border-color:#9a5c10;color:#fff}.stpick.stb-scheduled{border-left:5px solid #9a5c10}.lgrp-scheduled .lgrp-h{border-bottom-color:#9a5c10}.stopt.stb-scheduled{border-left:5px solid #9a5c10}
.pill.st-installed{background:#e6f3ea;color:#1e7d3c}.jc.stb-installed{border-left:4px solid #1e7d3c}.stc-installed .sd{background:#1e7d3c}.chip.stc-installed.on{background:#1e7d3c;border-color:#1e7d3c;color:#fff}.stpick.stb-installed{border-left:5px solid #1e7d3c}.lgrp-installed .lgrp-h{border-bottom-color:#1e7d3c}.stopt.stb-installed{border-left:5px solid #1e7d3c}
.pill.st-paid{background:#e7ece9;color:#33473c}.jc.stb-paid{border-left:4px solid #33473c}.stc-paid .sd{background:#33473c}.chip.stc-paid.on{background:#33473c;border-color:#33473c;color:#fff}.stpick.stb-paid{border-left:5px solid #33473c}.lgrp-paid .lgrp-h{border-bottom-color:#33473c}.stopt.stb-paid{border-left:5px solid #33473c}

.chip.stc{display:inline-flex;align-items:center;gap:6px}
.chip.stc .sd{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}
.chip.stc.on .sd{background:#fff !important}
.stpick{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0 12px;cursor:pointer;font:inherit;color:inherit}
.stpick .pill{font-size:12.5px;padding:4px 10px}
.stchg{font-weight:800;color:var(--teal3);font-size:13px;white-space:nowrap}
.stopt .pill{font-size:12.5px}
.oldst{margin-top:8px}.oldst summary{cursor:pointer;padding:6px 2px}
.lgrp{margin-bottom:14px}
.lgrp-h{display:flex;align-items:center;justify-content:space-between;padding:4px 2px 6px;margin-bottom:8px;border-bottom:2px solid var(--line)}
.lgrp-h .n{font-weight:800;color:var(--muted);font-size:13px}
.balcard{border-color:#9fd3b0;background:#f3fbf5}
.balcard .lbl,.trkcard .lbl{font-weight:800;letter-spacing:1.2px;text-transform:uppercase;font-size:11.5px;color:#17663a}
.trkcard .lbl{color:#4a6512}
.trkcard{border-color:#c9dba7}
.balcard .big-money{font:700 30px/1.15 var(--sans);color:#17663a;margin:4px 0 2px}
.jc .tags .pill{max-width:100%;overflow:hidden;text-overflow:ellipsis}

/* ---------- v47: press-and-hold trash, vendors, Directions choice, Caller ID ---------- */
.jc{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.jc.lp-ing{transform:scale(.97);box-shadow:0 0 0 2px rgba(176,64,48,.35);transition:transform .5s ease,box-shadow .5s ease}
.trashq{display:flex;gap:12px;align-items:center;background:#faf6ee;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:2px 0 10px;font-size:16px}
.trashq svg{width:26px;height:26px;color:var(--bad);flex:none}
.trashrow{text-align:center;margin:18px 0 6px}
.trashlnk{display:inline-flex;align-items:center;gap:6px;color:var(--bad);font-weight:700}
.trashlnk svg{width:18px;height:18px}
.av.trashav{background:#f6e9e6;color:var(--bad)}.av.trashav svg{width:18px;height:18px}
.spdel{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:14px;color:var(--bad)}
.spdel svg{width:16px;height:16px}
.chip.addv{border-style:dashed;border-color:var(--gold);color:#7a5a1e;font-weight:700;background:#fffaf0}
.chip.dim{opacity:.75}
.vrow{width:100%;border-left:0;border-right:0;border-bottom:0;text-align:left;background:none;cursor:pointer}
.navaddr{display:flex;gap:8px;align-items:flex-start;margin:0 0 12px}.navaddr svg{width:18px;height:18px;flex:none;color:var(--gold)}
.navpick{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.navbtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:92px;border-radius:14px;border:1px solid var(--line);background:#fff;color:var(--teal);font-weight:700;font-size:16px;text-decoration:none}
.navbtn svg{width:30px;height:30px}
.navbtn.navg svg{color:#1a73e8}.navbtn.navw svg{color:#1b9fd8}
.navrem{display:flex;gap:10px;align-items:flex-start;margin:14px 2px 12px;font-size:15px;cursor:pointer}
.navrem input{width:22px;height:22px;flex:none;margin:1px 0 0}
.navset{margin-bottom:10px}
.top .cidbtn{display:inline-flex;align-items:center;gap:5px}
.top .cidbtn svg{width:15px;height:15px;color:var(--gold2)}
@media (max-width:420px){.top .act{padding:7px 10px;font-size:12.5px}.top{gap:8px}}
.callnow{border-left:4px solid var(--gold)}
.callnow .cn-num{display:flex;align-items:center;gap:8px;font-size:22px}
.callnow .cn-num svg{width:20px;height:20px;color:var(--gold)}
.callnow .cnst{margin-left:auto;background:#e8f3ea;color:#2d6a3e}
.callnow .cn-who{margin-top:4px;font-size:16px}
.callidle{text-align:center;padding:16px}
.crow{align-items:center;gap:10px}
.crow .cnum{font-weight:700;font-variant-numeric:tabular-nums}
.cdir{flex:none;min-width:58px;text-align:center;font-size:12px;font-weight:700;border-radius:999px;padding:4px 8px;background:#eef3f4;color:#1d6170}
.cdir.cd-out{background:#f1ece0;color:#6b5a33}
.cdir.cd-miss{background:#f6e2dc;color:var(--bad)}
@media (max-width:420px){.top:has(.cidbtn):has(.act:not(.cidbtn)) h1{visibility:hidden}}

/* v47.2 text from the store number */
.smsto{display:grid;gap:6px;background:var(--cream);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.smsto div{display:flex;gap:10px;align-items:baseline}.smsto span{min-width:42px}
.smst{min-height:110px;font-size:16px;line-height:1.35;resize:vertical}
.smsn{margin:0 2px 10px}
.smsb{display:grid;gap:8px}.smsb .btn{width:100%}
.smss[disabled]{opacity:.5;cursor:default}
.smsback{display:block;margin:12px auto 0;background:none;border:0;color:var(--teal3);font-weight:700;font-size:14px;cursor:pointer}
.smsl button.opt{font:inherit;font-weight:700;color:var(--ink)}
.smsok{text-align:center;margin:4px 0 12px}.smsok b{display:block;font-size:18px;margin-top:6px}
.smsok-i{width:52px;height:52px;border-radius:50%;background:var(--okbg);color:var(--ok);display:grid;place-items:center;font-size:28px;font-weight:800;margin:0 auto}
.smsbub{background:#e9f0f1;border-radius:18px 18px 4px 18px;padding:10px 14px;margin:0 0 10px auto;max-width:88%;width:fit-content;white-space:pre-wrap;line-height:1.35}

/* ---------- v47.3 (Nov 5 2026) ---------- */
/* call banner: × to put it away, swipe up / sideways, slim line once picked up */
#callbar{touch-action:pan-y;transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .22s ease;padding-right:46px}
#callbar.cb-drag{transition:none}
#callbar.cb-out-up{transform:translateY(-130%)!important;opacity:0!important}
#callbar.cb-out-right{transform:translateX(120%) rotate(6deg)!important;opacity:0!important}
#callbar.cb-out-left{transform:translateX(-120%) rotate(-6deg)!important;opacity:0!important}
#callbar .cb-close{position:absolute;top:8px;right:8px;flex:none;width:34px;height:34px;min-height:0;padding:0;border-radius:50%;border:1.5px solid rgba(248,244,236,.4);background:rgba(248,244,236,.08);color:var(--cream);display:flex;align-items:center;justify-content:center;z-index:2}
#callbar .cb-close:active{background:rgba(248,244,236,.22)}
#callbar .cb-hint{margin-top:9px;font-size:12px;font-weight:600;color:rgba(248,244,236,.72);text-align:center;letter-spacing:.01em}
#callbar .cb-grab{width:42px;height:4px;border-radius:4px;background:rgba(248,244,236,.38);margin:9px auto 0}
#callbar .cb-less{display:block;width:100%;margin-top:8px;min-height:34px;padding:6px;background:transparent;border:0;color:var(--gold2);font-size:13px;font-weight:700}
#callbar.cb-slim{padding:0 46px 0 0;border-radius:999px}
#callbar.cb-slim .cb-close{top:50%;transform:translateY(-50%);width:30px;height:30px;right:7px}
#callbar .cb-sl{display:flex;align-items:center;gap:10px;min-height:46px;padding:6px 6px 6px 16px;cursor:pointer;font-size:14.5px}
#callbar .cb-slt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#callbar .cb-slt b{color:var(--gold2);font-weight:800}
#callbar .cb-slw{color:rgba(248,244,236,.78)}
#callbar .cb-chev{flex:none;font-size:22px;line-height:1;color:var(--gold2)}
#callbar .cb-dot{flex:none;width:10px;height:10px;border-radius:50%;background:#3ccf74;box-shadow:0 0 0 0 rgba(60,207,116,.6);animation:cbpulse 1.6s ease-out infinite}
#callbar.cb-end .cb-dot{background:#9aa6a8;animation:none}
@keyframes cbpulse{0%{box-shadow:0 0 0 0 rgba(60,207,116,.55)}70%{box-shadow:0 0 0 9px rgba(60,207,116,0)}100%{box-shadow:0 0 0 0 rgba(60,207,116,0)}}
#callbar.cb-ans .cb-ico,#callbar.cb-end .cb-ico{animation:none}
/* the Caller ID button blinks with the number while a call is going */
.top .cidbtn.cid-live{background:var(--gold);color:var(--teal);border-color:var(--gold);animation:cidblink 1.1s ease-in-out infinite;font-variant-numeric:tabular-nums}
.top .cidbtn.cid-live svg{color:var(--teal)}
@keyframes cidblink{0%,100%{box-shadow:0 0 0 0 rgba(176,150,94,.75)}50%{box-shadow:0 0 0 6px rgba(176,150,94,0);filter:brightness(1.12)}}
/* power button: green = logged in (soft blink), red = logged out */
.top .logo-a{display:inline-flex;align-items:center;flex:none}
.top .pwr{flex:none;width:34px;height:34px;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid rgba(60,207,116,.75);background:rgba(60,207,116,.12);color:#5fe08f;cursor:pointer;margin-left:6px}
.top .pwr svg{width:17px;height:17px}
.top .pwr.on{animation:pwrglow 2.4s ease-in-out infinite}
@keyframes pwrglow{0%,100%{box-shadow:0 0 0 0 rgba(60,207,116,.45)}50%{box-shadow:0 0 0 5px rgba(60,207,116,0);color:#8ff0b4}}
.pwr-login{display:inline-flex;align-items:center;gap:6px;margin:0 auto 10px;padding:5px 12px 5px 8px;border-radius:999px;border:1.5px solid rgba(230,90,80,.75);background:rgba(230,90,80,.14);color:#ff8f86;font-size:12.5px;font-weight:700;letter-spacing:.03em}
.pwr-login svg{width:16px;height:16px}
.pwrsh{text-align:center}
.pwrsh .pwr-big{width:54px;height:54px;margin:4px auto 8px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fbe9e7;color:var(--bad)}
.pwrsh .pwr-big svg{width:26px;height:26px}
@media (max-width:420px){.top:has(.cidbtn):has(.pwr) h1{visibility:hidden}}
/* Caller ID: direction + who picked up */
.callnow .cn-st{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#1d6170;margin-bottom:6px}
.callnow.cn-out .cn-st{color:#6b5a33}
.callnow .cn-dot{width:10px;height:10px;border-radius:50%;background:var(--gold);animation:cbpulse 1.4s ease-out infinite}
.callnow.cn-live .cn-dot{background:#2fb866}
.callnow .cn-to{font-size:14px;font-weight:600;color:var(--muted)}
.callnow .cn-ans{display:flex;align-items:center;gap:7px;margin-top:9px;padding:8px 11px;border-radius:10px;background:#eef6f0;color:#245c37;font-size:14.5px;font-weight:700}
.cans{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:#245c37;margin:2px 0 1px}
.cans-cell{color:#1d6170}
.cans-miss{color:var(--bad)}
.cans-voicemail{color:#7a5c1e}
.cans + .muted.tiny{display:block}
.cwi{flex:none}
.cdir{min-width:72px}
/* quick photo to Tab */
.qpfab{position:fixed;right:14px;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:40;display:inline-flex;align-items:center;gap:7px;padding:11px 15px 11px 12px;border-radius:999px;border:1.5px solid var(--gold);background:var(--teal);color:var(--cream);font:800 14px/1 var(--sans);box-shadow:0 6px 18px rgba(10,43,49,.28);cursor:pointer}
.qpfab svg{width:20px;height:20px;color:var(--gold2)}
.qpsh .qpimg{display:block;width:100%;max-height:46vh;object-fit:contain;border-radius:12px;background:#f3efe6;margin:8px 0}
.qplist .qpi{display:flex;gap:10px;align-items:center}
.qplist .qpi img{width:64px;height:64px;object-fit:cover;border-radius:10px;flex:none;background:#eee}
/* board card: last change top-right */
.card .jhist{margin-left:auto;flex:none;text-align:right;font-size:11.5px;line-height:1.25;color:var(--muted);font-weight:600;white-space:nowrap;max-width:46%;overflow:hidden;text-overflow:ellipsis}
/* van splash on open */
#vansplash{position:fixed;inset:0;z-index:200;background:var(--teal);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;transition:opacity .45s ease;cursor:pointer}
#vansplash.out{opacity:0;pointer-events:none}
#vansplash .vs-road{position:relative;width:min(88vw,420px);height:150px;overflow:hidden}
#vansplash .vs-van{position:absolute;bottom:14px;left:0;width:230px;animation:vsdrive 3.4s cubic-bezier(.45,.05,.3,1) forwards}
#vansplash .vs-line{position:absolute;left:0;right:0;bottom:10px;height:2px;background:linear-gradient(90deg,transparent,rgba(176,150,94,.8),transparent)}
#vansplash .vs-logo{width:min(70vw,300px);opacity:0;animation:vsfade 1s ease 1.6s forwards}
#vansplash .vs-skip{position:absolute;bottom:calc(22px + env(safe-area-inset-bottom,0px));font-size:12px;color:rgba(248,244,236,.6);letter-spacing:.06em}
@keyframes vsdrive{0%{transform:translateX(-260px)}45%{transform:translateX(calc(50% + 0px))}62%{transform:translateX(calc(50% + 0px))}100%{transform:translateX(calc(min(88vw,420px) + 20px))}}
@keyframes vsfade{to{opacity:1}}
@media (prefers-reduced-motion:reduce){#vansplash .vs-van{animation:none;left:50%;transform:translateX(-50%)}#vansplash .vs-logo{animation:none;opacity:1}.top .cidbtn.cid-live,.top .pwr.on,#callbar .cb-dot{animation:none}}

@media (max-width:420px){
  .top:has(.cidbtn):has(.pwr) h1{display:none}
  .top:has(.cidbtn):has(.pwr) .cidbtn{margin-left:auto}
  .top:has(.pwr) .logo{height:29px}
  .top .pwr{width:32px;height:32px;margin-left:0}
  .top .cidbtn.cid-live svg{display:none}
  .top .cidbtn.cid-live{padding:7px 9px;font-size:12.5px}
}

.crow .crow-h{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.crow .crow-h .cdir{min-width:0;padding:3px 9px;font-size:11.5px}
.crow .cans{display:flex;margin:3px 0 1px}
.crow .btn.sm{flex:none;white-space:nowrap}
button.fieldlink.qplink{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;appearance:none;-webkit-appearance:none}
button.fieldlink.qplink svg{color:var(--gold)}
.jc .jhist{flex:none;max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;color:#8a9598;letter-spacing:0}

/* v47.3 van splash (final rules; motion is driven from app.js) */
#vansplash{background:var(--cream,#f8f4ec);gap:26px}
#vansplash .vs-logo{opacity:0;animation:none;width:min(66vw,280px);position:relative;z-index:2}
#vansplash .vs-road{width:100%;height:auto;overflow:visible;display:flex;justify-content:center}
#vansplash .vs-van{position:relative;bottom:auto;left:auto;width:min(78vw,340px);animation:none;transform:translateX(120vw)}
#vansplash .vs-line{position:absolute;left:8%;right:8%;bottom:-4px;height:2px;background:linear-gradient(90deg,transparent,rgba(176,150,94,.85),transparent)}
#vansplash .vs-skip{color:rgba(10,43,49,.45)}
@media (prefers-reduced-motion:reduce){#vansplash:not(.v476){display:none}}
#callbar .cb-hint{margin-top:6px;font-size:11.5px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#callbar .cb-hint + .cb-grab{display:none}
#callbar .cb-slok{color:var(--gold2,#d9c493);font-weight:700}
table.g td .gsty{display:block;font-size:11px;font-weight:700;color:#8a6d33;padding:0 8px 4px;white-space:nowrap}
#app:has(.qpfab) main.wrap{padding-bottom:140px}

/* v47.4: Free flow? (No / Full / Left side / Right side) asked after Ripplefold or Pinch pleat */
.wffq{margin-top:10px;border-radius:10px}
.wffq.need{background:#fdeeec;border:1.5px solid #e3a59c;padding:0 8px 8px}
.wffq.need .lbl2{color:#c0392b}
.wffq.need .seg button{color:#c0392b}
.wffq .seg button{font-size:15px;min-height:46px}
.wc-sty .wc-fs.need button{color:#c0392b}
.wc-sty .wc-ffl{margin-left:4px}
.wc-styl{font-size:13px;font-weight:600;color:#8a7345;margin:1px 0 2px}
.wffq .seg button{padding-left:4px;padding-right:4px;white-space:nowrap}

/* v47.5 (Joel 8:48 AM Nov 5): Opening + Free flow side buttons with small direction arrows */
.seg.arws button{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 4px;line-height:1.15}
.seg.arws .arw{width:34px;height:14px;fill:none;stroke:var(--teal);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.seg.arws .arw .arw-d{stroke:#b0965e;fill:#b0965e}
.seg.arws button.on .arw{stroke:#f8f4ec}
.seg.arws button.on .arw .arw-d{stroke:#b0965e;fill:#b0965e}
.mtrow.need .wopq.need .lbl2 .req,.mtrow .wfsq .req{color:#c0392b}
.wfsq{border-left:3px solid #b0965e;padding-left:10px;margin-top:4px}
.wc-sty .seg.arws button{padding:5px 8px;gap:2px}
.wc-sty .seg.arws .arw{width:26px;height:11px}
.wc-sty .seg.arws button span{font-size:11px}

/* v476: a PDF or a file the browser cannot draw shows as a tile; viewer message */
.phfile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;height:100%;min-height:80px;background:#0a2b31;color:#f8f4ec;border-radius:10px;font-size:13px}
.phfile b{font-size:18px;letter-spacing:.06em;color:#e7cf96}.phfile small{opacity:.8;font-size:11px}
.vmiss{color:#f8f4ec;text-align:center;padding:40px 20px;display:flex;flex-direction:column;align-items:center;gap:12px}.vmiss p{margin:0}

/* v476: who is logged in (top bar) */
.top .whoami{flex:none;display:inline-flex;align-items:center;gap:6px;max-width:150px;padding:5px 10px 5px 8px;border-radius:999px;background:rgba(248,244,236,.1);border:1px solid rgba(201,169,110,.45);color:var(--cream);font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .whoami .wdot{flex:none;width:8px;height:8px;border-radius:50%;background:#5fe08f;box-shadow:0 0 0 2px rgba(95,224,143,.25)}
.top .mebox{flex:none;display:flex;align-items:center;gap:8px}
@media (max-width:420px){.top .mebox{flex-direction:column-reverse;gap:1px;align-items:center}
  .top .whoami{max-width:70px;padding:0;border:0;background:none;font-size:10.5px;font-weight:700;gap:0;color:#e7cf96;line-height:1.1}
  .top .whoami .wdot{display:none}.top .mebox .pwr{margin-left:0}
  .top:not(:has(.pwr)) .whoami{font-size:12px;padding:4px 8px;border:1px solid rgba(201,169,110,.45);border-radius:999px;background:rgba(248,244,236,.1);max-width:84px}}
/* v476: Hours (owner) */
.hrs-wk{font:600 18px/1.2 var(--serif);margin:14px 0 10px}
.hrs-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.hrs-p .hrs-n{font-size:16px}.hrs-tot{font-weight:800;color:var(--teal);font-size:16px;font-variant-numeric:tabular-nums}
.hrs-days{margin-top:10px;border-top:1px solid #eadfca}
.hrs-d{padding:9px 0;border-bottom:1px solid #f1e9da}.hrs-d:last-child{border-bottom:0}
.hrs-l{color:#5d6b6d;margin-top:3px}.hrs-on{color:#1d8a4c;font-weight:700}

/* v476: drag a card (touch: hold, then drag) */
.dragghost{position:fixed;z-index:200;pointer-events:none;margin:0;transform:rotate(2deg) scale(1.03);box-shadow:0 14px 30px rgba(10,43,49,.28);opacity:.96}
.jc.dragsrc{opacity:.35}
body.dragging{touch-action:none}
body.dragging .nav,body.dragging .qpfab,body.dragging .top{pointer-events:none}body.dragging .qpfab{opacity:.25}
.lgrp.drop{outline:2px dashed var(--gold);border-radius:12px}
.cmenu .cm-l{display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow:auto}
.cmenu .cm-s{display:flex;align-items:center;gap:10px;text-align:left;padding:11px 12px;border-radius:10px;border:1px solid var(--line);background:var(--paper);font:inherit;font-weight:700;color:var(--ink,#13383f);cursor:pointer}
.cmenu .sd{width:10px;height:10px;border-radius:50%;flex:none;display:inline-block}

/* v476: Designer? */
.fnameh{margin-bottom:5px;align-items:center}.fnameh>span{font-size:12px;font-weight:700;letter-spacing:.4px;color:var(--muted)}
.dsgbtn,.dsgchip{border:1.5px solid var(--gold);background:transparent;color:#8a6a2c;border-radius:999px;padding:4px 12px;font:inherit;font-size:12.5px;font-weight:800;cursor:pointer}
.dsgbtn.on{background:#f6ecd6}
.dsgbox{border:1px solid #e3d5b6;background:#fbf6ea;border-radius:12px;padding:10px 12px 2px;margin:-4px 0 12px}.dsgh{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#8a6a2c;margin-bottom:6px}
.fhead .dsgline{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 4px}
.fhead .dsgchip{border-color:rgba(201,169,110,.7);color:#e7cf96;padding:3px 11px}.fhead .dsgchip.on{background:rgba(248,244,236,.08);color:#f8f4ec}.fhead .dsgchip b{color:#e7cf96}
.fhead .dsgcall{display:inline-flex;align-items:center;gap:5px;color:#f8f4ec;font-size:13px;font-weight:700;text-decoration:none}.fhead .dsgcall svg{width:14px;height:14px;color:var(--gold2)}

/* v476: quote accepted dialog */
#acf .acq{display:block;font-size:13px;font-weight:800;color:var(--teal);margin-bottom:6px}
#acf .seg2,#acf .seg4{display:grid;gap:8px}#acf .seg2{grid-template-columns:1fr 1fr}#acf .seg4{grid-template-columns:repeat(4,1fr)}
#acf .seg2 button,#acf .seg4 button{padding:12px 6px;border-radius:10px;border:1.5px solid var(--line);background:var(--paper);font:inherit;font-weight:800;color:#13383f;cursor:pointer}
#acf .seg2 button.on,#acf .seg4 button.on{background:var(--teal);border-color:var(--teal);color:#f8f4ec}
.accnudge{display:block;width:100%;text-align:left;margin-top:8px;background:#fdebd0;color:#9b4a0a;border:0;font:inherit;font-size:13.5px;cursor:pointer;border-radius:10px;padding:10px 12px}

/* v476: window numbers, Sizes missing, photo tags, Skip sizes */
.wl .wno{flex:none;display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:50%;background:#0a2b31;color:#e7cf96;font-size:12px;font-weight:800;margin-right:2px}
.szmiss{display:inline-block;background:#fde3df;color:#b3261e;border:1px solid #f3b4ab;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:800;letter-spacing:.02em;white-space:nowrap;margin-left:6px;vertical-align:middle}
.phtag{display:block;font-style:normal;font-weight:700;font-size:10.5px;opacity:.95;white-space:normal;line-height:1.2}
.wlater{display:flex;align-items:center;gap:10px;margin:12px 0 4px;padding:11px 12px;border:1.5px dashed #c9a96e;border-radius:12px;background:#fbf6ea;cursor:pointer;font-size:14px}
.wlater input{width:22px;height:22px;flex:none;accent-color:#0a2b31}.wlater.on{border-style:solid;background:#f6ecd6}
.wlater-n{font-size:12.5px;color:#5d6b6d;margin:6px 2px 4px}
#wf.later .grid2.sz,#wf.later .mfrrow,#wf.later #wmfrbox,#wf.later #wferr,#wf.later #wfrac,#wf.later #wcpbox,#wf.later #wcurt,#wf.later #wmountrow,#wf.later #wmerr,#wf.later #wcasrow,#wf.later .wsty,#wf.later .wpfirst,#wf.later #wcctlrow,#wf.later #wcsiderow{display:none!important}
.szml{margin:6px 0 12px;padding-left:20px}.szml li{margin:4px 0}
.gszm{display:block;color:#b3261e;font-size:10.5px;font-weight:800;padding:0 6px 3px}
table input[placeholder="Size"]::placeholder,.szin::placeholder{color:#c0392b;opacity:1;font-weight:700}

.rhead .rall{color:#8a6a2c;font-weight:800}
#raf .chip.on,#raf .seg button.on{background:var(--teal);color:#f8f4ec;border-color:var(--teal)}
.rafab{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.rafp{width:64px;height:64px;padding:0;border-radius:10px;border:2px solid var(--line);overflow:hidden;background:#eee;cursor:pointer}.rafp img{width:100%;height:100%;object-fit:cover}.rafp.on{border-color:var(--teal);box-shadow:0 0 0 2px var(--gold)}

/* v476: calendar notices + events */
.ntbar{position:sticky;top:58px;z-index:19;display:flex;align-items:center;gap:10px;width:100%;border:0;background:#e7cf96;color:#0a2b31;padding:10px 16px;font:inherit;font-size:14px;font-weight:700;cursor:pointer;text-align:left;box-shadow:0 2px 6px rgba(10,43,49,.12)}
.ntbar svg{width:18px;height:18px;flex:none}.ntbar span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ntbar b{background:#0a2b31;color:#f8f4ec;border-radius:999px;padding:4px 12px;font-size:12.5px}
.ntl .nti{margin-bottom:10px}.nt-t{display:block;font-size:16px;margin:4px 0 2px}
.evr{width:100%;border:0;background:var(--paper);font:inherit;text-align:left;cursor:pointer;color:inherit}
.evr.ev-pending{background:#fff8ea}.evr.ev-declined{opacity:.6}
.pill.evp{background:#fdebd0;color:#9b4a0a}.pill.evd{background:#eceff1;color:#5d6b6d}
.evacc{flex:none}
#evwho .chip.on{background:var(--teal);color:#f8f4ec;border-color:var(--teal)}

/* ===== v476 desktop (1100 px and wider): tabs across the top, full-width cards, side dashboard that folds away ===== */
.dash{display:none}
@media (min-width:1100px){
  body.dk .top{margin-bottom:50px}
  body.dk .nav{position:fixed;top:58px;bottom:auto;left:0;right:0;z-index:21;justify-content:flex-start;gap:4px;padding:6px 18px;background:#0d3a41;border-top:0;border-bottom:1px solid rgba(176,150,94,.45);box-shadow:0 2px 6px rgba(10,43,49,.12)}
  body.dk .nav a{flex:none;flex-direction:row;gap:8px;font-size:14px;color:rgba(248,244,236,.92);padding:8px 16px;border-radius:10px 10px 0 0;margin-bottom:-7px;border:1px solid transparent;border-bottom:0}
  body.dk .nav a svg{width:17px;height:17px}
  body.dk .nav a.on{background:var(--cream);color:var(--teal);border-color:rgba(176,150,94,.5)}
  body.dk .nav a:hover:not(.on){background:rgba(248,244,236,.08);color:#f8f4ec}
  body.dk .nav a .badge{position:static;margin-left:2px}
  body.dk .ntbar{top:108px}
  .dkb{display:grid;grid-template-columns:286px minmax(0,1fr);align-items:start;transition:grid-template-columns .2s ease}
  body.dashfold .dkb{grid-template-columns:46px minmax(0,1fr)}
  .dash{display:block;position:sticky;top:108px;height:calc(100vh - 108px);overflow:auto;background:#fbf8f1;border-right:1px solid var(--line);padding:0 0 24px}
  .dash-tg{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;width:100%;border:0;border-bottom:1px solid var(--line);background:#f4ecda;padding:11px 14px;font:inherit;font-weight:800;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#8a6a2c;cursor:pointer}
  .dash-ch{font-size:20px;line-height:1;color:var(--teal)}
  .dash.fold .dash-in{display:none}
  .dash.fold .dash-tg{flex-direction:column-reverse;gap:14px;height:100%;padding:16px 0;border:0;background:#f4ecda}
  .dash.fold .dash-tgl{writing-mode:vertical-rl;transform:rotate(180deg)}
  .dash-in{padding:6px 14px}
  .dash-sec{padding:12px 0;border-bottom:1px solid #ece3d0}.dash-sec:last-child{border-bottom:0}
  .dash-h{font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
  .dk3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}
  .dkt{display:flex;flex-direction:column;align-items:center;padding:10px 4px;border-radius:12px;background:var(--paper);border:1px solid var(--line);text-decoration:none;color:var(--teal)}
  .dkt b{font:800 24px/1 var(--sans);font-variant-numeric:lining-nums tabular-nums}.dkt span{font-size:11.5px;font-weight:700;color:var(--muted);margin-top:4px}
  .dash-li{font-size:12.5px;color:#3d5257;padding:3px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dash-row{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:6px 8px;margin:0 -8px;border-radius:8px;border:0;background:none;font:inherit;font-size:13px;color:var(--ink);text-decoration:none;cursor:pointer;text-align:left;box-sizing:content-box}
  .dash-row:hover{background:#f1e9d7}.dash-row span{display:flex;align-items:center;gap:8px;min-width:0}
  .dash-row .sd{width:9px;height:9px;border-radius:50%;flex:none;display:inline-block}
  .dash-row b{font-family:var(--sans);font-variant-numeric:lining-nums tabular-nums;font-size:13px;min-width:22px;text-align:center;background:#efe8d9;border-radius:999px;padding:1px 7px}
  .dash-row.hot{background:#fdebd0;color:#9b4a0a;font-weight:700}
  .dash-money{font:800 22px/1.1 var(--sans);color:var(--teal);font-variant-numeric:lining-nums}
  .dash-me{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px}.dash-me b{font:700 12.5px var(--sans);color:var(--ink)}.dash-me .wdot{width:8px;height:8px;border-radius:50%;background:#2fb36a}
  .dkb{width:100%}
  .dkb>main.wrap{min-width:0;max-width:none;width:auto;margin:0;padding:20px max(28px,calc((100% - 1500px)/2)) 40px;box-sizing:border-box}
  .dkb>main.wrap.narrow{padding-left:max(28px,calc((100% - 760px)/2));padding-right:max(28px,calc((100% - 760px)/2))}
  body.dk .kan{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;overflow:visible;margin:0;padding:0}
  body.dk .col{max-width:none;min-height:140px}
  body.dk .photos{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  body.dk .hrs-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}
  body.dk .qpfab{bottom:24px}
  body.dk .chips[role=tablist]{flex-wrap:wrap;overflow:visible}
}

/* ===== v476 opening screen: greeting + the logo pops onto the van (website intro), Skip, "Be thankful" ===== */
#vansplash.v476{display:block;position:fixed;inset:0;z-index:300;background:radial-gradient(120% 80% at 50% 30%,#fffdf8 0%,#f8f4ec 60%,#f1e8d6 100%);overflow:hidden;cursor:pointer;gap:0;transition:opacity .45s ease}
#vansplash.v476.out{opacity:0;pointer-events:none}
#vansplash.v476 .vs-greet{position:absolute;left:0;right:0;top:max(12vh,calc(env(safe-area-inset-top,0px) + 56px));text-align:center;padding:0 28px}
#vansplash.v476 .vs-hi{font:600 clamp(32px,8.6vw,46px)/1.05 var(--serif);color:var(--teal,#0a2b31);letter-spacing:.01em}
#vansplash.v476 .vs-msg{margin:12px auto 0;max-width:340px;font:500 16px/1.45 var(--sans);color:#4c5f62}
#vansplash.v476 .vs-msg::before{content:"";display:block;width:54px;height:1px;margin:0 auto 12px;background:#c9b27f}
#vansplash.v476 .vs-logo{position:absolute;left:50%;top:37%;width:min(62vw,300px);margin-left:calc(min(62vw,300px)/-2);transform-origin:50% 50%;opacity:1;animation:none;z-index:3;will-change:transform}
#vansplash.v476 .vs-van{position:absolute;left:0;top:60%;width:min(84vw,460px);aspect-ratio:880/438;z-index:2;pointer-events:none;background:url(/img/ewf-van-intro.webp) 0 0/100% 100% no-repeat;transform:translate3d(120vw,0,0);will-change:transform}
#vansplash.v476 .vs-van::after{content:"";position:absolute;left:8%;right:6%;bottom:-3%;height:9%;z-index:-1;border-radius:50%;background:radial-gradient(closest-side,rgba(10,43,49,.26),rgba(10,43,49,0))}
#vansplash.v476 .vs-sheen{position:absolute;left:55.1%;top:20.1%;width:19.1%;height:25.6%;overflow:hidden;opacity:0}
#vansplash.v476 .vs-sheen b{position:absolute;top:-25%;bottom:-25%;left:-60%;width:45%;background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.75) 45%,rgba(232,214,170,.6) 58%,rgba(255,255,255,0))}
#vansplash.v476 .vs-foot{position:absolute;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom,0px));padding:0 20px;text-align:center;font:600 clamp(25px,7vw,38px)/1.22 var(--serif);color:#9a7a3c;letter-spacing:.01em;text-shadow:0 1px 0 rgba(255,255,255,.8)}
#vansplash.v476 .vs-foot::before{content:"";display:block;width:70px;height:1px;margin:0 auto 14px;background:linear-gradient(90deg,transparent,#c9b27f,transparent)}
#vansplash.v476 .vs-skipb{position:absolute;right:max(16px,env(safe-area-inset-right,0px));top:calc(14px + env(safe-area-inset-top,0px));z-index:5;border:1px solid rgba(10,43,49,.25);background:rgba(255,255,255,.7);color:var(--teal,#0a2b31);border-radius:999px;padding:8px 18px;font:700 14px var(--sans);cursor:pointer}
@media (min-width:900px){#vansplash.v476 .vs-greet{top:9vh}#vansplash.v476 .vs-logo{top:36%}}

/* v476 (Joel Nov 6 7:02 AM): on a computer with the side dashboard open, the board's own Today box and filter chips repeat it — hide them */
@media (min-width:1100px){ body:not(.dashfold) .today, body:not(.dashfold) .bfilt{display:none} }

/* v476b (Joel Nov 6 7:20 AM): arched, colorful, twinkling greeting; bigger, bolder lines; goodbye screen on log out */
#vansplash.v476 .vs-hi{display:none}
.vs-arch{display:block;width:min(92vw,440px);height:auto;margin:0 auto -6px;overflow:visible}
.vs-arch text{font:700 50px var(--serif);letter-spacing:.02em}
.vs-arch tspan{animation:vstwk 1.6s ease-in-out infinite}
@keyframes vstwk{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.vs-arch tspan{animation:none}}
#vansplash.v476 .vs-msg{font:700 clamp(19px,5.2vw,24px)/1.35 var(--sans);color:#0a2b31;max-width:380px}
#vansplash.v476 .vs-foot{font:700 clamp(28px,8vw,44px)/1.2 var(--serif)}
#byescr{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#f8f4ec;text-align:center;padding:24px;animation:vsfade .4s ease}
#byescr .by-in p{font:700 clamp(20px,5.6vw,26px)/1.4 var(--sans);color:#0a2b31;margin:6px 0 0}
#vansplash.v476 .vs-date{margin:6px auto 0;font:700 clamp(17px,4.6vw,21px)/1.35 var(--sans);color:#9a7a3c}
#vansplash.v476 .vs-date span{display:block;font-weight:600;font-size:.85em;color:#6d7f82}
.vs-sun{animation:vssun 3s ease-in-out infinite;transform-origin:200px 112px}
@keyframes vssun{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
@media (prefers-reduced-motion:reduce){.vs-sun{animation:none}}
#vansplash.v476 .vs-bracha{margin:10px auto 0;max-width:360px;font:italic 600 clamp(17px,4.6vw,21px)/1.4 var(--serif);color:#1f7a6d}
.login .lg-bracha{margin:14px auto 0;max-width:340px;text-align:center;font:italic 600 18px/1.45 var(--serif);color:#e8d6aa}
.hrs-via{color:#1f7a6d}
/* Joel Nov 6 8:32/8:35: clearer font for the Hours week line; greeting moved up so the logo doesn't touch it */
.hrs .hrs-wk{font:700 17px/1.3 var(--sans);letter-spacing:0}
#vansplash.v476 .vs-greet{top:calc(env(safe-area-inset-top,0px) + 40px)}
#vansplash.v476 .vs-arch{width:min(80vw,380px);margin-bottom:-10px}
#vansplash.v476 .vs-date{margin-top:2px;font-size:clamp(15px,4.2vw,19px)}
#vansplash.v476 .vs-msg{margin-top:6px}
#vansplash.v476 .vs-msg::before{margin-bottom:6px}
#vansplash.v476 .vs-bracha{margin-top:6px;font-size:clamp(15px,4.2vw,19px)}
@media (min-width:900px){#vansplash.v476 .vs-greet{top:4vh}}
#vansplash.v476 .vs-arch{margin-bottom:2px}
/* Joel Nov 6 9:05/9:08: incoming call bar blinks; opening: "A great Friday ahead" on one line, brucha appears once the van has gone */
@keyframes cbblink{0%,100%{box-shadow:0 0 0 0 rgba(201,178,127,.0),0 6px 20px rgba(0,0,0,.25);filter:none}50%{box-shadow:0 0 0 4px rgba(233,169,58,.95),0 6px 24px rgba(233,169,58,.6);filter:brightness(1.18)}}
#callbar.on{animation:cbblink 1.1s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){#callbar.on{animation:none}}
#vansplash.v476 .vs-msg{white-space:nowrap;font-size:clamp(14px,4.3vw,22px);max-width:none}
#vansplash.v476 .vs-bracha{opacity:0;animation:vsbr .8s ease 4.6s forwards}
@keyframes vsbr{to{opacity:1}}

/* v477 message to a worker */
.wmc .wml{display:block;font-weight:700;font-size:13px;color:var(--muted);margin-bottom:6px}
.wmto button{font-size:13.5px;padding:12px 4px;line-height:1.2}
.wmhint{margin:8px 2px 4px;min-height:1.4em}
.wmpeople{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}
.wmpeople .chip{display:inline-flex;flex-direction:column;align-items:flex-start;line-height:1.2;padding:9px 13px;font-size:14px}
.wmpeople .chip small{font-size:11px;font-weight:600;opacity:.7}
.wmc textarea{min-height:110px}
.wmurg{display:flex;align-items:center;gap:12px;margin:4px 0 16px;cursor:pointer;line-height:1.25;position:relative}
.wmurg input{position:absolute;opacity:0;width:1px;height:1px}
.wsw{flex:none;width:50px;height:30px;border-radius:99px;background:#d8d2c4;position:relative;transition:background .15s}
.wsw i{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .15s}
.wmurg input:checked + .wsw{background:var(--bad)}
.wmurg input:checked + .wsw i{left:23px}
.wmurg input:focus-visible + .wsw{outline:3px solid var(--gold2);outline-offset:2px}
.wms{border-left:4px solid var(--gold)}
.wms.urg{border-left-color:var(--bad)}
.wms-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.pill.wurg{background:var(--bad);color:#fff}
.wms-b{white-space:pre-wrap;font-size:15.5px;margin:2px 0 6px;overflow-wrap:anywhere}
.wst{font-size:13.5px;border-radius:10px;padding:7px 10px;margin-top:6px}
.wst.ok{background:var(--okbg);color:var(--ok)}
.wst.wait{background:var(--warnbg);color:var(--warn)}
.wmnt-b{white-space:pre-wrap;margin-top:4px}
body.wmon{overflow:hidden}
.wmpop{position:fixed;inset:0;z-index:95;background:var(--teal);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 18px calc(24px + var(--safe-b));overflow:auto}
.wmpop.urg{padding-top:74px}
.wmp-bar{position:fixed;top:0;left:0;right:0;background:var(--bad);color:#fff;font-weight:800;font-size:18px;letter-spacing:2px;text-transform:uppercase;text-align:center;padding:calc(14px + env(safe-area-inset-top,0px)) 12px 14px;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.wmp-card{background:var(--paper);border-radius:20px;box-shadow:0 10px 40px rgba(0,0,0,.35);width:100%;max-width:520px;padding:26px 22px 22px;border-top:6px solid var(--gold)}
.wmpop.urg .wmp-card{border-top-color:var(--bad)}
.wmp-h{font:700 34px/1.1 var(--serif);color:var(--teal);margin:0 0 12px;text-align:center}
.wmpop.urg .wmp-h{color:var(--bad)}
.wmp-from{text-align:center;color:var(--muted);font-size:14px;margin-bottom:16px}
.wmp-from b{color:var(--ink)}
.wmp-first{background:var(--warnbg);color:var(--warn);border-radius:12px;padding:10px 12px;font-size:14px;font-weight:600;margin-bottom:14px}
.wmp-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:20px;line-height:1.45;color:var(--ink);background:var(--cream);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:18px}
.wmp-err{color:var(--bad);font-weight:700;font-size:14px;margin:0 0 10px}
.wmp-err:empty{display:none}
.wmp-ok{font-size:18px;padding:16px}
.wmp-n{text-align:center;color:var(--muted);font-size:13px;margin-top:10px}
.wmadd{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.wmab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:84px;border:1.5px solid var(--line);background:var(--paper);border-radius:14px;padding:10px 6px;font-weight:700;font-size:13px;line-height:1.2;color:var(--teal);cursor:pointer;text-align:center}
.wmab svg{width:26px;height:26px;color:var(--gold)}
.wmab.on{border-color:var(--teal);background:#f2efe6}
.wmab:active{background:#efe9dc}
#wmbody{margin-top:10px}
.wmfiles{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.wmfiles:empty{display:none}
.wmf{width:104px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px}
.wmf img,.wmf-doc{width:104px;height:104px;object-fit:cover;border-radius:12px;border:1px solid var(--line);display:block;background:#fff}
.wmf-doc{display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800;color:var(--bad);font-size:20px;padding:6px;text-align:center}
.wmf-doc small{font-size:10.5px;color:var(--muted);font-weight:600;overflow-wrap:anywhere;max-height:2.6em;overflow:hidden}
.wmf-st{color:var(--muted);min-height:1em}
.wmf.bad .wmf-st{color:var(--bad);font-weight:700;text-align:center}
.wmf .lnk{font-size:13px}
.wmp-files{margin:0 0 18px}
.wmp-pics{display:flex;flex-direction:column;gap:10px}
.wmp-pic{border:0;padding:0;background:none;cursor:zoom-in;display:block;width:100%}
.wmp-pic img{width:100%;max-height:52vh;object-fit:contain;border-radius:14px;background:#f1ece2;display:block;min-height:120px}
.wmp-doc,.wms-doc{display:flex;align-items:center;gap:10px;width:100%;margin-top:10px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:12px 14px;font-weight:700;cursor:pointer;text-align:left;color:var(--ink)}
.wmp-doc svg,.wms-doc svg{width:22px;height:22px;flex:none;color:var(--gold)}
.wmp-doc span,.wms-doc span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wmp-doc b,.wms-doc b{color:var(--teal3)}
.wms-files{margin:4px 0 8px}
.wms-pics{display:flex;gap:8px;flex-wrap:wrap}
.wms-pic{border:0;padding:0;background:none;cursor:zoom-in}
.wms-pic img{width:72px;height:72px;object-fit:cover;border-radius:10px;border:1px solid var(--line);display:block;background:#f1ece2}
.wms-doc{padding:8px 12px;font-size:14px}
body.wmon .viewer{z-index:99}
.wmf .lnk{background:none;border:0;padding:2px 6px;color:var(--bad);font-weight:700;font-size:13px;cursor:pointer;text-decoration:underline}
.wmf-st:empty{display:none}
.wmpeople[hidden],#wmbody[hidden]{display:none}
.ntbar.ntwrap span{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25}
#wmbody{resize:none}
.wmf img{width:104px !important;height:104px !important;object-fit:cover !important;max-width:none}
.wms-pic img{width:72px !important;height:72px !important;object-fit:cover !important;max-width:none}
.wmp-tap{text-align:center;color:var(--muted);font-size:12.5px;margin-top:6px}
.wmp-card{border-top:0 !important;position:relative;overflow:hidden;padding-top:30px}
.wmp-card::before{content:'';position:absolute;top:0;left:0;right:0;height:7px;background:var(--gold)}
.wmpop.urg .wmp-card::before{background:var(--bad)}

/* v478 (Joel 1:22 PM Nov 8): the message stays on top in a red bar until Done; Messages button at the top for workers */
.wmbar{position:sticky;top:58px;z-index:20;display:block;width:100%;border:0;background:#b3261e;color:#fff;padding:0;font:inherit;font-size:14.5px;line-height:1.3;text-align:left;box-shadow:0 2px 8px rgba(120,20,15,.3);animation:wmpulse 2.4s ease-in-out infinite}
.wmbar .wmb-row{display:flex;align-items:center;gap:8px;padding:0 12px 0 0}
.wmbar .wmb-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;padding:11px 4px 11px 14px}
.wmbar .wmb-reply{flex:none;font:inherit;font-weight:800;font-size:12.5px;background:transparent;color:#fff;border:2px solid #fff;border-radius:999px;padding:5px 12px;white-space:nowrap;cursor:pointer}
.wmbar .wmb-reply:focus-visible,.wmbar .wmb-main:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}
.wmbar.wmrep{animation:none;background:#b3261e}.wmbar.wmrep .wmb-dot{animation:none}
.wmb-box{background:#fff;color:var(--ink);margin:0 10px 10px;border-radius:14px;padding:12px;box-shadow:0 2px 10px rgba(0,0,0,.18);max-height:calc(100vh - 140px);overflow:auto}
.wmb-to{font-size:14px;margin-bottom:8px;color:var(--ink)}.wmb-to b{font-weight:800}
.wmb-re{display:block;color:var(--muted);font-size:13px;margin-top:2px;overflow-wrap:anywhere}
.wmb-box textarea.wmb-in{width:100%;font-size:16px;min-height:76px;resize:vertical;box-sizing:border-box}
.wmb-files{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.wmb-files:empty{display:none}
.wmb-err{color:var(--bad);font-weight:700;font-size:13.5px;margin:6px 0 0}.wmb-err:empty{display:none}
.wmb-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.wmb-btns .btn{flex:1 1 auto;min-height:44px}.wmb-btns .wmb-send{flex:2 1 120px}
.wmf video{width:104px;height:104px;object-fit:cover;border-radius:12px;border:1px solid var(--line);display:block;background:#000}
.wm-vids{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}.wm-vid{width:100%;max-height:52vh;border-radius:14px;background:#000;display:block}
.wms-vids .wm-vid{max-width:320px;max-height:240px}
.wmp-re{font-size:14px;color:var(--muted);background:#f6f1e6;border-left:4px solid var(--gold);border-radius:8px;padding:8px 10px;margin:0 0 12px;overflow-wrap:anywhere}
.wmr{margin-top:10px;border-left:4px solid var(--gold);background:#faf6ec;border-radius:10px;padding:8px 10px}.wmr-h{margin-bottom:2px}
.wmbar .wmb-dot{flex:none;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 0 0 0 rgba(255,255,255,.7);animation:wmdot 2.4s ease-in-out infinite}
.wmbar .wmb-t{flex:1;min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.wmbar .wmb-t b{font-weight:800}
.wmbar .wmb-go{flex:none;font-style:normal;font-weight:800;font-size:12.5px;background:#fff;color:#b3261e;border-radius:999px;padding:6px 11px;white-space:nowrap}
.wmbar:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}
@keyframes wmpulse{0%,100%{background:#b3261e}50%{background:#d7463c}}
@keyframes wmdot{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(255,255,255,.6)}50%{opacity:.55;box-shadow:0 0 0 6px rgba(255,255,255,0)}}
.wmbar.wmland{animation:wmland .6s ease-out,wmpulse 2.4s ease-in-out .6s infinite}
@keyframes wmland{0%{transform:translateY(-8px);opacity:.3}100%{transform:none;opacity:1}}
body.wmbaron .ntbar{position:relative;top:auto}
@media (min-width:1100px){body.dk .wmbar{top:108px}}
@media (prefers-reduced-motion:reduce){.wmbar,.wmbar.wmland{animation:none;background:#b3261e}.wmbar .wmb-dot{animation:none}}
.top .wmtop{display:inline-flex;align-items:center;gap:6px;position:relative}
.top .wmtop svg{width:16px;height:16px;color:var(--gold2)}
.top .wmtop.on{background:#b3261e;border-color:#e0786f;color:#fff}
.top .wmtop.on svg{color:#fff}
.top .wmtop .wmt-n{font-style:normal;background:#fff;color:#b3261e;border-radius:999px;min-width:20px;height:20px;line-height:20px;text-align:center;font-size:12px;font-weight:800;padding:0 5px}
.nav .wmnav{display:none}
.nav .wmnav .wmnb{background:#b3261e}
@media (max-width:560px){.top .wmtop{display:none}.nav .wmnav{display:flex}}
.wmpop.wmopen{background:rgba(10,43,49,.94)}
.wmp-tag{text-align:center;font-weight:800;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:#b3261e;margin-bottom:6px}
.wmp-2{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.wmp-later{width:100%;font-size:15px}
.wsd-l{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
.wsd{display:inline-block;border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:700;background:#fff;border:1px solid rgba(0,0,0,.08)}
.wsd-seen{color:var(--ink)}
.wsd-ok{background:var(--ok);color:#fff;border-color:var(--ok)}
.wsd-wait{color:var(--warn)}
.wmy-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
.wmy-open{border-left:5px solid #b3261e}
.wmy-done{opacity:.85}
.wmy .btn{margin-top:10px}

/* v480 Quick quote: the quote document is the editor */
.oqtabs{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-4px 0 12px}
.oqpill{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:10px 18px;background:var(--teal);color:var(--cream);font-weight:800;font-size:14.5px;text-decoration:none;border:1.5px solid var(--gold);box-shadow:0 2px 8px rgba(10,43,49,.12)}
.oqpill svg{width:18px;height:18px;color:var(--gold)}
.oqpill:active{transform:translateY(1px)}
.pill.oqtag{background:#f6eedb;color:#8a6d33}
.qkcmp{margin-top:8px;padding:9px 11px;border-radius:12px;background:#fbf5e6;border:1px solid #e6d3a6;color:#5b4720;font-size:13.5px;display:grid;gap:4px}
.qkcmp .lnk{justify-self:start}
.qkbar .btn{border-radius:999px}
.qktools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 12px;background:#f3eee2;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:7}
.qkhint{min-width:0}
.qkscroll{padding:10px 0 120px}
.qkstage{position:relative;max-width:840px;margin:0 auto;padding:0 6px}
.docscroll.qkscroll{overflow:visible}
.qkclip{overflow:hidden;overflow:clip}
.qked[hidden]{display:none!important}
.qkname{font-size:15px;color:var(--teal)}
.qkdoc .page{margin:0 0 12px}
.d2 [data-qk],.d2 tr.qkrow{cursor:pointer}
.d2 [data-qk]:hover,.d2 tr.qkrow:hover td{background:rgba(201,169,110,.12)}
.d2 .meta[data-qk],.d2 [data-qk='for'],.d2 .psum[data-qk],.d2 .totals[data-qk]{outline:1.5px dashed rgba(201,169,110,.75);outline-offset:3px;border-radius:3px}
.d2 tr.qkrow.on td{background:rgba(201,169,110,.22)}
.d2 tr.qksp td{padding:0;border:0;background:transparent}
.d2 tr.qkaddr td{padding:10pt 0 4pt;border:0;text-align:left}
.d2 .qkaddb{font-family:'Inter';font-weight:700;font-size:13pt;color:rgb(16,57,68);background:#fff;border:1.5pt solid rgb(201,169,110);border-radius:999px;padding:7pt 22pt;cursor:pointer}
.qked{position:absolute;z-index:20;background:#fff;border:1.5px solid var(--gold);border-radius:16px;box-shadow:0 10px 30px rgba(10,43,49,.22);padding:10px 11px;display:grid;gap:8px;font-size:15px}
.qke-h{display:flex;align-items:center;justify-content:space-between;gap:10px}
.qke-h .qkdel{color:#a3322a;border:1px solid #e3c4bf;border-radius:999px;padding:5px 12px;background:#fff;font-size:13px;font-weight:700}
.qke-b{display:flex;gap:8px;justify-content:flex-end}
.qke-b .btn{border-radius:999px;padding-left:16px;padding-right:16px}
.qkf{display:flex;flex-direction:column;gap:4px;min-width:0;position:relative;margin:0}
.qkf>span{font-size:11.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
.qkf>span i{font-style:normal;text-transform:none;letter-spacing:0;font-weight:600}
.qkf .in{width:100%;margin:0;font-size:16px;padding:9px 10px}
.qkf .in.bad{border-color:#c0392b;background:#fff4f2}
.qkf .in.auto{border-color:var(--gold);background:#fffaf0}
.qkf .sugg{position:absolute;left:0;right:0;top:100%;margin:4px 0 0;z-index:40}
.qkg{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) minmax(0,1.25fr);grid-template-areas:"r r r q" "w by h u" "p p p p";gap:8px 7px}
.qkf.r{grid-area:r}.qkf.w{grid-area:w}.qkf.h{grid-area:h}.qkf.p{grid-area:p}.qkf.q{grid-area:q}.qkf.u{grid-area:u}
/* v481c: the Was (crossed out) price sits under the price */
.qkg{grid-template-areas:"r r r q" "w by h u" "p p p p" ". . . wa"}.qkf.wasf{grid-area:wa}.qkf.wasf .in{text-align:right;font-weight:400}
.qkf.q .in{text-align:center}.qkf.u .in{text-align:right;font-weight:700}
.oq-by{grid-area:by;align-self:end;padding:0 2px 12px;color:var(--muted);font-weight:700;font-size:14px}
.oq-auto{position:absolute;left:6px;bottom:7px;border:1px solid var(--gold);background:#fff;color:#8a6d33;border-radius:999px;padding:4px 10px;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.qkchart{display:grid;gap:6px}
.qkchart .lbl2{margin:0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.qkchart .chips{padding:0}
.qkchart .lbl2 .lnk{text-transform:none;letter-spacing:0;font-size:13px;font-weight:700;background:none;border:0;padding:0;text-decoration:underline;color:var(--teal3);cursor:pointer}
.qkpx:empty{display:none}
.qked .chips{padding-bottom:0}
.qked > .in{margin:0}
.oq-sw{display:flex;align-items:center;gap:10px;cursor:pointer}
.oq-sw input{position:absolute;opacity:0;width:1px;height:1px}
.oq-sw i{flex:0 0 46px;height:28px;border-radius:999px;background:#d9d1bf;position:relative;transition:background .15s}
.oq-sw i::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .15s}
.oq-sw input:checked+i{background:var(--teal)}
.oq-sw input:checked+i::after{left:21px}
.oq-sw input:focus-visible+i{outline:2px solid var(--gold);outline-offset:2px}
.oq-sw b{font-size:14px}
@media (min-width:700px){
  .qkg{grid-template-columns:minmax(0,1.3fr) 82px auto 82px minmax(0,2fr) 60px 120px;grid-template-areas:"r w by h p q u" ". . . . . . wa"}
  .qked-line{padding:12px 14px}
}
@media (max-width:480px){.qkhint{display:none}}

.taxpill{border-radius:999px;border:1.5px solid var(--gold);background:#fff;color:var(--teal);font:inherit;font-weight:800;font-size:13.5px;padding:7px 16px;cursor:pointer}
.taxpill.on{background:var(--teal);color:var(--cream);border-color:var(--teal)}
.clonepill{border-radius:999px;border:1.5px solid var(--gold);background:#fffaf0;color:var(--teal);font:inherit;font-weight:800;font-size:13.5px;padding:7px 15px;cursor:pointer;white-space:nowrap}
.clonerow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 10px}
.clonerow .muted{min-width:0}
.d2 .qkaddb.qkclb{margin-left:8pt;background:rgb(255,250,240)}
.qke-b{flex-wrap:wrap}
.qke-b .clonepill{margin-right:auto}
.qkchg{margin:8px 0 4px;padding:9px 12px;border-left:3px solid var(--gold);background:#fffaf0;border-radius:8px;font-size:14px;line-height:1.4;color:var(--teal);font-weight:600;overflow-wrap:anywhere}

/* v481b (Joel 6:43 PM Nov 8): Your price, typed in the totals; the discount works itself out */
.ypr{align-items:center;gap:10px;cursor:text}
.ypr .ypin{flex:0 0 150px;width:150px;margin:0;text-align:right;font-weight:800;font-size:17px;padding:8px 10px}
.ypr.on .ypin,.ypf.on .in{border-color:var(--gold);background:#fffaf0}
.ypn{color:#9a5b00;margin-top:4px}
.ypt{margin:2px 0 6px}
.ypf{margin-top:12px}
.ypf .in{font-weight:700}
.d2 .totals .tl.qkyp .qkyph{font-weight:600;font-size:9pt;color:rgb(160,140,100);font-style:italic}
.d2 .totals .tl.qkyp{cursor:pointer}

/* v482 Quote form (Joel 7:48 PM Nov 8): the quote itself, typed right on it. Big and readable on the phone. */
.qfwrap{max-width:860px;margin:0 auto;padding:10px 8px 40px}
.qfhint{margin:2px 4px 10px;font-size:14px;color:#5d7379}
.qfbar .qfsaved{opacity:.8;margin-right:4px}
.qfpaper{background:#fff;color:rgb(16,57,68);border-radius:6px;box-shadow:0 4px 18px rgba(10,43,49,.14);padding:26px 18px 18px;position:relative;overflow:hidden;font-family:'Inter',sans-serif;font-size:15px}
.qfpaper .qf-top{position:absolute;top:0;left:0;right:0;height:11px;background:rgb(16,57,68)}
.qfpaper .qf-top2{position:absolute;top:11px;left:0;right:0;height:2px;background:rgb(201,169,110)}
.qfpaper .lbl{font-family:'Montserrat',sans-serif;font-size:11px;letter-spacing:1.8px;color:rgb(176,140,80);text-transform:uppercase;font-weight:700;margin-bottom:4px}
.qf-in{font:inherit;color:inherit;background:#fbf6ea;border:0;border-bottom:1.5px dashed rgba(201,169,110,.85);border-radius:4px 4px 0 0;padding:6px 6px;width:100%;box-sizing:border-box;min-height:40px;outline:none;-webkit-appearance:none;appearance:none}
textarea.qf-in{resize:none;overflow:hidden;line-height:1.35;display:block}
.qf-in:focus{background:#fff4d6;border-bottom:2px solid rgb(16,57,68);box-shadow:0 0 0 2px rgba(201,169,110,.45)}
.qf-in::placeholder{color:#a9a094;font-style:italic}
.qf-num{text-align:right;font-variant-numeric:tabular-nums}
.qf-cust{margin:0 0 16px;padding:12px;border:1.5px solid rgb(201,169,110);border-radius:8px;background:#fffdf7}
.qf-cust .f{display:block;margin:0;position:relative}
.qf-big{font-size:19px;font-weight:600}
.qf-cgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.qf-cgrid input:first-child{grid-column:1 / -1}
.qf-cpick,.qf-cdone{margin-top:8px;font-size:14px}
.qf-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-top:4px}
.qf-brand img{width:220px;max-width:100%;display:block}
.qf-addr{font-family:'Montserrat',sans-serif;font-size:10px;letter-spacing:1px;text-transform:uppercase;font-weight:600;margin-top:6px}
.qf-cont{font-size:11px;margin-top:3px;display:flex;flex-wrap:wrap;gap:4px 12px}
.qf-cont .ic{width:11px;height:11px;vertical-align:-1px;margin-right:4px}
.qf-qt{text-align:right;min-width:190px}
.qf-qt h1{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:40px;letter-spacing:8px;margin:0 -8px 0 0;line-height:1}
.qf-gl{width:96px;height:1.5px;background:rgb(201,169,110);margin:8px 0 8px auto}
.qf-meta label{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:6px}
.qf-meta label span{font-family:'Montserrat',sans-serif;font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;color:rgb(176,140,80);font-weight:700;white-space:nowrap}
.qf-meta .qf-in{width:170px;text-align:right;font-weight:600}
.qf-rule{height:1px;background:rgb(201,169,110);margin:14px 0 12px}
.qf-info{display:grid;grid-template-columns:1.3fr 1fr;gap:16px}
.qf-info label{display:block}
.qf-cell,.qf-valid{font-size:13px;color:#37555d;margin-top:4px}
.qf-table{margin-top:18px}
.qf-th{display:grid;grid-template-columns:54px 1fr 1.6fr 130px 120px 70px;gap:8px;background:rgb(16,57,68);color:#faf8f3;font-family:'Montserrat',sans-serif;font-size:10.5px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;padding:9px 8px}
.qf-th .qf-unit,.qf-th .qf-tot{text-align:right}
.qf-row{display:grid;grid-template-columns:54px 1fr 1.6fr 130px 120px 70px;gap:8px;padding:10px 8px;border-bottom:1px solid rgba(201,169,110,.5);align-items:start}
.qf-row:nth-child(even){background:#fcfaf5}
.qf-ml{display:none}
.qf-qty .qf-in{text-align:center}
.qf-unit{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.qf-money{display:flex;align-items:center;gap:2px;width:100%}
.qf-money>span{color:#8a8173}
.qf-wasl{display:flex;align-items:center;gap:4px;width:100%;font-size:12px;color:#8a8173}
.qf-wasl .qf-in{min-height:32px;font-size:13px;padding:4px 6px;background:#f6f3ee}
.qf-ws{color:#9a9a9a;font-size:13px}.qf-ws s{text-decoration-thickness:1px}
.qf-tot{text-align:right;font-weight:700;padding-top:9px}
.qf-tot .qf-tv{display:block}
.qf-ph{color:#c2b9ab;font-weight:400;font-style:italic}
.qf-rm{background:none;border:0;color:#9b3b2f;font:600 14px 'Inter',sans-serif;text-decoration:underline;padding:10px 0;cursor:pointer;justify-self:end}
.qf-acts{display:flex;flex-direction:column;align-items:flex-end;gap:0;justify-self:end}
.qf-cl{background:none;border:0;color:rgb(16,57,68);font:700 14px 'Inter',sans-serif;text-decoration:underline;padding:10px 0 4px;cursor:pointer}
.qf-acts .qf-rm{padding:4px 0 10px}
.qf-add{display:block;width:100%;margin-top:10px;padding:14px;border:1.5px dashed rgb(201,169,110);border-radius:8px;background:#fffaf0;color:rgb(16,57,68);font:700 16px 'Inter',sans-serif;cursor:pointer}
.qf-bottom{display:flex;gap:20px;margin-top:20px;align-items:flex-start}
.qf-notes{flex:1;font-size:12px;line-height:1.5;color:#37555d}
.qf-notes .thanks{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:22px;color:rgb(16,57,68);font-weight:500;margin-bottom:4px}
.qf-notes p{margin:4px 0}
.qf-totals{width:340px;max-width:100%}
.qf-tl{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 2px;border-bottom:1px solid rgba(201,169,110,.5);font-size:15px}
.qf-tl .k{font-family:'Montserrat',sans-serif;font-size:11.5px;letter-spacing:1.4px;text-transform:uppercase;font-weight:700}
.qf-tl .v{font-weight:700;text-align:right}
.qf-disc{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:7px 2px;border-bottom:1px solid rgba(201,169,110,.5)}
.qf-dl{flex:1 1 130px;min-width:110px;font-size:14px}
.qf-dys{font-size:14px;color:#37555d}
.qf-dv{display:flex;align-items:center;gap:2px;width:118px}
.qf-dpre{color:#8a8173;min-width:12px}
.qf-dmode{display:flex;gap:4px}
.qf-dmode button{border:1.5px solid rgb(201,169,110);background:#fff;color:rgb(16,57,68);border-radius:6px;font:700 14px 'Inter',sans-serif;min-width:38px;min-height:36px;cursor:pointer}
.qf-dmode button.on{background:rgb(16,57,68);color:#faf8f3;border-color:rgb(16,57,68)}
.qf-dsave{flex-basis:100%;font-size:13.5px;color:#37555d;margin-top:2px}
.qf-yp.dim{opacity:.6}
.qf-ypn{color:#9b3b2f;min-height:0}
.qf-tax{font-weight:600}
.qf-grand{background:rgb(16,57,68);color:#faf8f3;margin-top:8px;padding:10px 12px;display:flex;justify-content:space-between;align-items:center;border-top:3px solid rgb(201,169,110)}
.qf-grand .k{font-family:'Montserrat',sans-serif;font-weight:800;letter-spacing:2.5px;font-size:14px}
.qf-gfill{border:1px solid rgb(201,169,110);height:30px;width:130px}
.qf-tyn{margin:16px 0 2px;padding:10px 12px;border-left:3px solid rgb(201,169,110);background:rgba(201,169,110,.10);font-size:13px;line-height:1.45;font-style:italic}
.qfbtm{display:flex;align-items:center;gap:12px;margin-top:14px;padding:0 4px}
.newq.qfq{background:linear-gradient(135deg,#7a5a22,#b0965e)}
.qftabs{margin-top:6px}
@media (max-width:640px){
  .qfwrap{padding:8px 6px 40px}
  .qfpaper{padding:22px 12px 14px;font-size:16px}
  .qf-head{flex-direction:column;align-items:stretch}
  .qf-brand img{width:190px}
  .qf-qt{text-align:left;min-width:0}
  .qf-qt h1{font-size:34px}
  .qf-gl{margin:8px auto 8px 0}
  .qf-meta label{justify-content:space-between}
  .qf-meta .qf-in{width:58%}
  .qf-info{grid-template-columns:1fr;gap:10px}
  .qf-th{display:none}
  .qf-table{border-top:3px solid rgb(16,57,68);margin-top:14px}
  .qf-row{grid-template-columns:64px 1fr 1fr;grid-template-areas:"qty room room" "desc desc desc" "unit unit tot" "rm rm rm";gap:6px 10px;padding:12px 6px}
  .qf-ml{display:block;font-family:'Montserrat',sans-serif;font-size:10px;letter-spacing:1.4px;text-transform:uppercase;font-weight:700;color:rgb(176,140,80);margin-bottom:2px}
  .qf-qty{grid-area:qty}.qf-room{grid-area:room}.qf-desc{grid-area:desc}
  .qf-unit{grid-area:unit;align-items:stretch}
  .qf-unit .qf-ml{text-align:left}
  .qf-tot{grid-area:tot;padding-top:0;font-size:17px}
  .qf-acts{grid-area:rm;flex-direction:row;align-items:center;gap:22px}
  .qf-cl,.qf-acts .qf-rm{padding:8px 2px;font-size:15px}
  .qf-row .qf-room .qf-in{font-weight:600}
  .qf-bottom{flex-direction:column-reverse;gap:14px}
  .qf-totals{width:100%}
  .qf-dv{width:120px}
}

/* v485 (Joel 2:57 PM Nov 9): replies as a conversation under each message, Reply everywhere, Tag someone */
.wth{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.wth-h{font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.wth-r,.wth-orig{background:#faf6ec;border-left:4px solid var(--gold);border-radius:10px;padding:8px 10px;margin:0 0 8px}
.wth-r.wth-me{background:#eef4f4;border-left-color:var(--teal3)}
.wth-orig{background:#f3efe6;border-left-color:var(--muted)}
.wth-rh{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:2px;font-size:14.5px}
.wth-b{white-space:pre-wrap;font-size:15.5px;overflow-wrap:anywhere}
.wth-p{display:flex;align-items:flex-start;gap:8px;font-size:13.5px;color:var(--ink);margin:6px 0 4px}
.wth-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--gold);margin-top:5px}
.wmp-thread .wth{border-top:0;padding-top:0}
.wmp-thread{margin:6px 0 4px;text-align:left}
.wmp-passed{background:#eef4f4;border-left:4px solid var(--teal3);border-radius:8px;padding:8px 10px;margin:0 0 12px;font-size:14px;text-align:left;overflow-wrap:anywhere}
.wmp-pn{display:block;margin-top:4px;white-space:pre-wrap;font-size:15px;color:var(--ink)}
.wmp-rep{width:100%;margin-top:8px;min-height:46px;font-size:16px}
.wmp-comp{text-align:left}
.wmp-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;margin:8px 0}
.wmp-box textarea.wmb-in,.wcx-box textarea.wcx-in{width:100%;font-size:16px;min-height:76px;resize:vertical;box-sizing:border-box}
.wcx-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;margin:10px 0 0}
.wcx-to,.wmp-box .wmb-to{font-size:14px;margin-bottom:6px}
.wcx-re{display:block;color:var(--muted);font-size:13.5px;margin-top:2px;overflow-wrap:anywhere}
.wcx-btns,.wmp-box .wmb-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.wcx-btns .btn,.wmb-btns .btn{flex:1 1 auto;min-height:44px}
.wcx-btns .wcx-send,.wcx-btns .wcx-sdone,.wmb-btns .wmb-sdone{flex:2 1 120px}
.wcx-err,.wmp-box .wmb-err{color:var(--bad);font-size:14px;margin:6px 0 0;min-height:0}
.wcx-err:empty,.wmp-box .wmb-err:empty{display:none}
.wcx-tags{margin-top:10px;border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--paper)}
.wcx-tl{font-weight:700;font-size:14px;margin-bottom:6px}
.wcx-ppl{display:flex;flex-wrap:wrap;gap:6px}
.wcx-p{display:inline-flex;flex-direction:column;align-items:flex-start;min-height:44px}
.wcx-p small{font-size:11.5px;color:var(--muted)}
.wcx-p.on{background:var(--teal);color:#fff;border-color:var(--teal)}
.wcx-p.on small{color:#d9e4e4}
.wcx-note{font-size:13.5px;margin-top:8px}
.wcx-how{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.wcx-how button{min-height:44px;text-align:left;padding:8px 12px;white-space:normal}
.wmy-btns{display:flex;flex-direction:column;gap:0}
.wmy-rep{margin-top:8px}
.pill.wnew{background:var(--teal);color:#fff;margin-left:4px}
.wms-btns .btn[data-wrep]{min-width:96px}
.wcx-p{border-radius:12px}
.wcx [hidden],.wcx .btn[hidden],.wmp-rep[hidden],.wmy-rep[hidden],.wms-btns .btn[hidden]{display:none!important}

/* v486 pop-up notifications: the "Allow pop-ups" banner and the card under More, App */
.pushbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(76px + var(--safe-b));z-index:60;width:min(560px,calc(100vw - 20px));display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--teal);color:var(--cream);border-radius:16px;padding:12px 14px;box-shadow:0 10px 30px rgba(0,0,0,.28);animation:pbIn .3s ease}
.pushbar .pb-i,.pushcard .pc-i{flex:none;width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:rgba(201,169,110,.18);color:var(--gold2)}
.pushcard .pc-i{background:#f3ecdc;color:var(--teal3)}
.pushbar .pb-t{flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:14px;line-height:1.3}
.pushbar .pb-t span{opacity:.82;font-size:13px}
.pushbar .pb-b{display:flex;gap:8px;margin-left:auto}
.pushbar .btn.ghost{background:transparent;color:var(--cream);border-color:rgba(248,244,236,.45)}
body.wmon .pushbar{display:none}
@keyframes pbIn{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translateX(-50%)}}
@media print{.pushbar{display:none!important}}

/* v487 (Joel Nov 10 2026 1:00 AM, stuck on a tall message): the pop-up scrolls from the top, so Got it is always reachable */
.wmpop{justify-content:flex-start}
.wmpop .wmp-card{margin-top:auto;margin-bottom:auto;flex:none}
.wmp-pic img{max-height:32vh}

.wmp-later{margin-top:8px}

/* v489: a call banner shows above the Important message pop-up */
body.wmon #callbar{z-index:100}

/* v499 Joel: bigger, cleaner job header; phones show whose */
.fhead .hsub{font-size:17px;line-height:1.55;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}
.fhead .hsub .hph{display:inline-flex;gap:6px;align-items:baseline;white-space:nowrap}
.fhead .hsub .hph>b{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#d4b46a}
.fhead h2{font-size:26px}

.rvrow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:baseline}
.rvrow .rvsz{justify-self:start;font-weight:700;font-size:1.05em;white-space:nowrap;font-variant-numeric:tabular-nums}

.wlsz{margin-left:10px;font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}
.rvsz,.wlsz,.sz{font-feature-settings:'calt' 0,'case' 0;font-variant-ligatures:none}
