:root{--cyan:#2EC8F5;--blue:#1677D2;--blue-text:#0B5DAE;--navy:#0B2A55;--navy-deep:#06173A;--silver:#C3CCD6;--silver-dark:#7F8C9A;--ink:#0f1c2e;--muted:#4a5a6e;--bg:#eef3f8;--card:#fff;--line:#d5dde6;--ok:#0f7a4a;--bad:#b42318;
--chrome:linear-gradient(90deg,#8d99a6 0%,#e8edf2 22%,#aab5c1 45%,#f7f9fb 60%,#9aa6b3 82%,#dfe5eb 100%);--radius:14px;--shadow:0 6px 24px rgba(6,23,58,.08)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{visibility:hidden;margin:0;font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
.wrap{max-width:1280px;margin:0 auto;padding:0 16px}
.skip{position:absolute;left:-999px;top:0;background:#fff;color:var(--navy);padding:8px 12px;z-index:99}.skip:focus{left:8px;top:8px}
:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
/* header */
.top{background:radial-gradient(120% 140% at 0% 0%,#14427f 0%,var(--navy) 45%,var(--navy-deep) 100%);color:#fff;position:sticky;top:0;z-index:20;box-shadow:0 2px 14px rgba(0,0,0,.25)}
.top-in{display:flex;align-items:center;gap:14px;padding:10px 16px;flex-wrap:wrap}
.brand-logo{width:76px;height:64px;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.brand-txt{flex:1;min-width:180px}
.brand-name{margin:0;font-weight:900;font-size:1.45rem;letter-spacing:.06em;text-transform:uppercase;background:linear-gradient(180deg,#a9ecff,var(--cyan) 55%,#5fb2ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand-name span{background:none;-webkit-text-fill-color:#fff;color:#fff;font-weight:700;letter-spacing:.18em;font-size:.8em}
.brand-sub{margin:0;color:#cfe3f5;font-size:.9rem}
.tools{display:flex;gap:8px;flex-wrap:wrap}
.chrome-bar{height:4px;background:var(--chrome)}
/* buttons */
.btn{appearance:none;border:1px solid var(--line);background:#fff;color:var(--navy);font:inherit;font-weight:600;padding:10px 16px;border-radius:10px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;min-height:44px;text-decoration:none}
.btn:hover{border-color:var(--blue)}
.btn.sm{padding:6px 12px;min-height:38px;font-size:.92rem}
.top .btn{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.28)}
.top .btn:hover{background:rgba(255,255,255,.16)}
.btn.cyan,.top .btn.cyan{background:var(--cyan);color:var(--navy-deep);border-color:var(--cyan)}
.btn.primary{background:linear-gradient(180deg,#1b86e6,var(--blue-text));color:#fff;border-color:var(--blue-text)}
.btn.primary:hover{filter:brightness(1.08)}
.btn.ghost{background:transparent}
.btn.danger,.lnk.danger{color:var(--bad)}
.btn.file{position:relative;overflow:hidden}.btn.file input{position:absolute;inset:0;opacity:0;cursor:pointer}
.lnk{background:none;border:0;color:var(--blue-text);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;padding:6px 4px;text-decoration:underline}
/* layout */
main{padding:20px 16px 90px}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:20px;align-items:start}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:20px;border-top:3px solid transparent;border-image:var(--chrome) 1;border-image-slice:1 0 0 0}
.sec-h{margin:0 0 4px;font-size:1.25rem;color:var(--navy)}
.lead{margin:0 0 14px;color:var(--muted);font-size:.95rem}
.small{font-size:.82rem;color:var(--muted)}
.col-side{position:sticky;top:104px}
/* tabs */
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.tabs button{border:1px solid var(--line);background:#f6f9fc;color:var(--navy);font:inherit;font-weight:600;font-size:.92rem;padding:8px 12px;border-radius:999px;cursor:pointer;min-height:40px}
.tabs button[aria-selected="true"]{background:var(--navy);color:#fff;border-color:var(--navy);box-shadow:inset 0 -3px 0 var(--cyan)}
.tabpanel{border:1px solid var(--line);border-radius:12px;padding:16px;background:linear-gradient(180deg,#fbfdff,#fff)}
.panel-title{margin:0 0 12px;font-size:1.1rem;color:var(--navy)}
/* forms */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px 14px}
.fld{display:flex;flex-direction:column;gap:4px}.fld.wide{grid-column:1/-1}
label{font-weight:600;font-size:.9rem;color:#24344a}
input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid #b9c5d2;border-radius:9px;padding:9px 11px;min-height:44px;width:100%}
textarea{min-height:auto;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,200,245,.3);outline:none}
.fld small{color:var(--muted);font-size:.8rem}
.chk{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer;font-weight:500}
.chk input{width:20px;height:20px;min-height:0;accent-color:var(--blue);flex:none}
[hidden]{display:none!important}
fieldset.addons{border:1px solid var(--line);border-radius:10px;margin:14px 0 0;padding:10px 12px 12px}
fieldset.addons legend{font-weight:700;color:var(--navy);padding:0 6px}
.preview{margin-top:14px;background:#f2f8fd;border:1px dashed #9dc7e8;border-radius:10px;padding:10px 12px}
.pv-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0}.pv-row+.pv-row{border-top:1px solid #d7e7f4}
.pv-row ul{margin:4px 0 0;padding-left:18px;color:var(--muted);font-size:.86rem}
.pv-row .warn{color:#8a5300}
.pv-amt{text-align:right;font-weight:800;font-size:1.15rem;color:var(--navy);white-space:nowrap}.pv-amt small{display:block;font-weight:500;font-size:.75rem;color:var(--muted)}
.form-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
/* summary */
.sum{padding:0;overflow:hidden}
.sum-h{margin:0;padding:14px 18px;background:linear-gradient(180deg,var(--navy),var(--navy-deep));color:#fff;font-size:1.1rem;border-bottom:3px solid var(--cyan)}
.lines{padding:8px 18px;max-height:46vh;overflow:auto}
.empty{color:var(--muted);font-size:.92rem}
.li{padding:10px 0;border-bottom:1px solid var(--line)}
.li-row{display:flex;justify-content:space-between;gap:10px}
.li-t{font-weight:600;font-size:.92rem}.li-t small{display:block;font-weight:400;color:var(--muted);font-size:.78rem}
.li-a{font-weight:700;white-space:nowrap}
.li-act{display:flex;gap:6px;margin-top:2px}
.tot{margin:0;padding:8px 18px 4px}
.tot div{display:flex;justify-content:space-between;padding:4px 0;font-size:.95rem}
.tot dt{color:#33445a}.tot dd{margin:0;font-weight:600}
.tot .grand{border-top:2px solid var(--navy);margin-top:6px;padding-top:8px;font-size:1.3rem}.tot .grand dd{font-weight:900;color:var(--navy)}
.tot .dep{background:#e8f8fe;border-radius:8px;padding:6px 8px;margin:4px -8px}.tot .dep dd{color:var(--blue-text);font-weight:800}
#recurNote{padding:0 18px}
.crew{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 18px;background:#f6f9fc;border-top:1px solid var(--line)}
.crew div{display:flex;flex-direction:column;font-size:.78rem;color:var(--muted)}.crew strong{font-size:1rem;color:var(--navy)}
.margin{padding:10px 18px 14px;border-top:1px solid var(--line)}
.margin .m-h{margin:0 0 4px;font-weight:700;color:var(--navy);font-size:.9rem}
.margin div{display:flex;justify-content:space-between;font-size:.9rem}
.margin.low #t_margin,.margin.low #marginNote{color:var(--bad)}.margin:not(.low) #marginNote{color:var(--ok)}
.foot-note{color:var(--muted);font-size:.82rem;text-align:center}
.mbar{display:none}
/* dialog */
dialog{width:min(980px,96vw);max-height:92vh;border:0;border-radius:16px;padding:0;box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(6,23,58,.6)}
.dlg-head,.dlg-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 18px}
.dlg-head{background:var(--navy);color:#fff;position:sticky;top:0;z-index:2;border-bottom:3px solid var(--cyan)}.dlg-head h2{margin:0;font-size:1.15rem}
.dlg-head .btn{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.dlg-body{padding:14px 18px}
.dlg-foot{border-top:1px solid var(--line);position:sticky;bottom:0;background:#fff}
details{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;background:#fff}
summary{cursor:pointer;padding:12px 14px;font-weight:700;color:var(--navy)}
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px;padding:4px 14px 14px}
.rf{display:flex;flex-direction:column;gap:4px}.rf.wide{grid-column:1/-1}
.rin{display:flex;align-items:center;gap:6px}.rin .u{font-size:.8rem;color:var(--muted);white-space:nowrap;min-width:70px}
.rf small{font-size:.76rem;color:var(--muted)}
.logo-up{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:0 14px 14px}.logo-up p{flex-basis:100%;margin:0;color:var(--muted);font-size:.88rem}
.toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%) translateY(20px);background:var(--navy-deep);color:#fff;padding:10px 16px;border-radius:10px;opacity:0;transition:.25s;pointer-events:none;z-index:50;border-left:4px solid var(--cyan)}
.toast.show{opacity:1;transform:translateX(-50%)}
/* printable estimate (screen preview) */
.print-est{display:none}
.print-wrap{display:none}
body.show-print main,body.show-print .mbar,body.show-print .viewnav{display:none}
body.show-print .print-wrap{display:block;padding:0 12px 40px}
body.show-print .print-est{display:block;max-width:850px;margin:16px auto 20px;background:#fff;box-shadow:var(--shadow);padding:36px 40px}
.ph{display:grid;grid-template-columns:150px 1fr auto;gap:18px;align-items:center}
.plogo{width:150px;height:125px;object-fit:contain}
.pco h1{margin:0;font-size:1.5rem;color:var(--navy);text-transform:uppercase;letter-spacing:.04em}
.pco p{margin:1px 0;font-size:.85rem;color:#3a4a5e}.pco .tag{color:var(--blue-text);font-weight:600}
.pmeta{text-align:right;font-size:.85rem}.pmeta h2{margin:0 0 6px;font-size:1.6rem;letter-spacing:.16em;color:var(--navy)}
.pmeta span,.pclient span{color:var(--muted);margin-right:4px}
.pbar{height:6px;margin:16px 0;background:linear-gradient(90deg,var(--navy) 0 40%,var(--cyan) 40% 70%,transparent 70%),var(--chrome);border-radius:3px}
.pclient{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.pclient>div{border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:8px;padding:10px 12px}
.pclient h3,.pterms h3,.psign h3,.pnotes h3{margin:0 0 4px;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--blue-text)}
.pclient p{margin:1px 0;font-size:.9rem}.pclient .cn{font-weight:700;font-size:1rem;color:var(--navy)}
.ptable{width:100%;border-collapse:collapse;font-size:.88rem}
.ptable th{background:var(--navy);color:#fff;text-align:left;padding:8px;font-weight:600}
.ptable td{padding:8px;border-bottom:1px solid var(--line);vertical-align:top}
.ptable tbody tr:nth-child(even) td{background:#f5f8fb}
.ptable .n{width:28px;color:var(--muted)}.ptable .b{width:120px;color:#3a4a5e;font-size:.8rem}
.r{text-align:right;white-space:nowrap}
.pd{color:var(--muted);font-size:.78rem;margin-top:2px}
.psum{display:grid;grid-template-columns:1fr 300px;gap:20px;margin-top:14px}
.pnotes p{margin:0 0 6px;font-size:.88rem}
.ptot{width:100%;border-collapse:collapse;font-size:.9rem}.ptot td{padding:5px 8px}
.ptot .grand td{border-top:2px solid var(--navy);font-weight:900;font-size:1.15rem;color:var(--navy);padding-top:8px}
.ptot .dep td{background:#e8f8fe;font-weight:700;color:var(--blue-text)}
.pterms{margin-top:18px;font-size:.78rem;color:#2f3e52}.pterms ol{margin:4px 0 0;padding-left:18px}
.psign{margin-top:16px;font-size:.85rem;break-inside:avoid}
.sig{display:grid;grid-template-columns:2fr 1.4fr 1fr;gap:18px;margin-top:26px}
.sig div{font-size:.78rem;color:var(--muted)}.sig .ln{display:block;border-bottom:1px solid #222;height:26px;margin-bottom:4px}
.pf{margin-top:20px;padding-top:8px;border-top:3px solid;border-image:var(--chrome) 1;text-align:center;font-size:.78rem;color:var(--muted)}
/* responsive */
@media (max-width:1000px){.layout{grid-template-columns:1fr}.col-side{position:static}.lines{max-height:none}
 .mbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;background:var(--navy-deep);color:#fff;border-top:3px solid var(--cyan)}
 .mbar strong{font-size:1.2rem;color:#fff}}
@media (max-width:640px){.top{position:static}.brand-logo{width:58px;height:50px}.brand-name{font-size:1.15rem}.tools{width:100%}.tools .btn{flex:1 1 auto;justify-content:center}
 .card{padding:16px}.grid{grid-template-columns:1fr 1fr}.grid .chk,.grid .fld.wide{grid-column:1/-1}
 body.show-print .print-est{padding:18px;margin:0 -12px}.ph{grid-template-columns:90px 1fr}.plogo{width:90px;height:76px}.pmeta{grid-column:1/-1;text-align:left}.pclient,.psum{grid-template-columns:1fr}.ptable .b{display:none}.sig{grid-template-columns:1fr}}
@media (max-width:380px){.grid{grid-template-columns:1fr}}
/* print */
@page{size:Letter;margin:.5in}
@media print{
 body{background:#fff;font-size:11px}
 .ptable td{padding:5px 6px}.ptable th{padding:6px}.pd{font-size:.74rem}.pterms{margin-top:10px;font-size:.72rem}.psign{margin-top:10px}.sig{margin-top:18px}.pclient{margin-bottom:10px}.pbar{margin:10px 0}.plogo{width:120px;height:100px}.ph{grid-template-columns:120px 1fr auto}
 .top,main,.mbar,.toast,dialog,.skip,.printbar,.sign-panel,.foot-wrap{display:none!important}
 .print-wrap{display:block!important;padding:0!important}
 .print-est{display:block!important;box-shadow:none!important;margin:0!important;padding:0!important;max-width:none!important}
 *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .ptable tr,.psum,.pterms li{break-inside:avoid}
}

body.ready{visibility:visible}
.nojs{visibility:visible;padding:20px;text-align:center}

.brand-contact{margin:2px 0 0;font-size:.82rem;color:#cfe3f5}.brand-contact a{color:#fff}
.rates-callout{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;background:#eef8fd;border:1px solid #b6def2;border-left:4px solid var(--cyan);border-radius:10px;padding:10px 12px;margin:0 0 14px}
.rates-callout p{margin:0;font-size:.9rem;flex:1 1 320px}
.app-foot{background:linear-gradient(180deg,var(--navy),var(--navy-deep));color:#dbe9f6;border-radius:var(--radius);padding:16px 20px;text-align:center;border-top:3px solid var(--cyan);margin-bottom:12px}
.app-foot p{margin:2px 0;font-size:.9rem}.app-foot .af-name{font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fff}.app-foot a{color:#fff}
.pco a,.pf a{color:inherit;text-decoration:none}
#pvRates{margin-top:6px}
@media (max-width:640px){.brand-contact{display:none}}

/* ===== v3 components ===== */
.viewnav{display:flex;gap:4px;overflow-x:auto;padding:0 16px 8px;scrollbar-width:thin}
.viewnav button{flex:none;border:1px solid rgba(255,255,255,.25);background:transparent;color:#dbe9f6;font:inherit;font-weight:600;font-size:.92rem;padding:8px 14px;border-radius:999px;min-height:40px;cursor:pointer}
.viewnav button[aria-current="page"]{background:var(--cyan);color:var(--navy-deep);border-color:var(--cyan)}
.actionbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.quickadd{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:0 0 14px}.quickadd .fld{flex:1 1 200px}.quickadd .grow{flex:3 1 260px}
.filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:0 0 14px}.filters .fld{flex:1 1 170px}
.seg{display:inline-flex;gap:0}.seg .btn{border-radius:0}.seg .btn:first-child{border-radius:10px 0 0 10px}.seg .btn:last-child{border-radius:0 10px 10px 0}.seg .btn+.btn{margin-left:-1px}
.seg .btn[aria-pressed="true"],.seg .btn.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.plain{list-style:none;margin:0;padding:0}.plain li{padding:8px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
.results li button{background:none;border:0;color:var(--blue-text);font:inherit;text-align:left;cursor:pointer;padding:4px 0;text-decoration:underline}
.tablewrap{overflow-x:auto;margin:0 0 12px}
table.mini{width:100%;border-collapse:collapse;font-size:.9rem}table.mini th{text-align:left;color:var(--muted);font-weight:600;padding:6px;border-bottom:2px solid var(--line)}table.mini td{padding:6px;border-bottom:1px solid var(--line);vertical-align:middle}
table.mini input,table.mini select{min-height:38px;padding:6px 8px}table.mini input[type=color]{width:52px;padding:2px}
.sr{position:absolute;left:0;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.h3,.h4{color:var(--navy);margin:16px 0 8px}.h3{font-size:1.1rem}.h4{font-size:1rem}
.warnlist{color:#8a5300;font-size:.9rem;margin:6px 0}.warnlist:empty{display:none}
.okmsg{color:var(--ok);font-weight:700}
.muted{color:var(--muted)}.nowrap{white-space:nowrap}
.fld.inline{flex-direction:row;align-items:center;gap:8px}
.chk.sm{min-height:36px;padding:4px 8px;font-size:.88rem}
.tag[class*="t-"]{display:inline-block;font-size:.7rem;font-weight:700;padding:1px 7px;border-radius:999px;background:#e5edf5;color:var(--navy);vertical-align:middle;margin-left:4px}
.tag.t-good{background:#e6f4ea;color:#0f5d34}.tag.t-better{background:#e3f2fd;color:#0b4f8a}.tag.t-best{background:#fff1d6;color:#7a4b00}
.status-badge{display:inline-block;font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:999px;background:#fff;color:var(--navy);vertical-align:middle}
.s-sent{--sc:#4453d6}.s-estimate{--sc:#5b6878}.s-accepted{--sc:#0f7a4a}.s-scheduled{--sc:#1677D2}.s-inprogress{--sc:#8a5300}.s-done{--sc:#3f6a0c}.s-invoiced{--sc:#8a3ab9}.s-paid{--sc:#0f7a4a}
.status-badge[class*="s-"]{background:var(--sc);color:#fff}
/* tiers */
.tier-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:10px 12px 0}
.tier-pick .tp{display:flex;flex-direction:column;align-items:center;gap:2px;border:2px solid var(--line);border-radius:10px;padding:8px 4px;cursor:pointer;font-size:.82rem;text-align:center}
.tier-pick .tp input{position:absolute;opacity:0;width:1px;height:1px}.tier-pick .tp strong{font-size:1rem;color:var(--navy)}
.tier-pick .tp.on{border-color:var(--blue);background:#eef8fd}.tier-pick .tp:focus-within{outline:3px solid var(--cyan)}
/* photos */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-top:14px}
.ph-item{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#f8fafc;display:flex;flex-direction:column}
.ph-item img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:#dde5ee}
.ph-item figcaption{padding:8px;display:flex;flex-direction:column;gap:6px;font-size:.85rem}.ph-item select,.ph-item input{min-height:38px;padding:6px 8px;font-size:.88rem}
.ph-row{display:flex;gap:6px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.pdfthumb{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;background:#eef3f8;color:var(--navy);font-weight:600;padding:8px;text-align:center;word-break:break-all}
/* jobs board */
.board{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;padding-bottom:8px}
.bcol{background:#f3f7fb;border-radius:12px;padding:10px;border-top:4px solid var(--sc,#7F8C9A);min-height:120px}
.bcol h3{margin:0 0 8px;font-size:.95rem;color:var(--navy);display:flex;justify-content:space-between}.cnt{background:#fff;border-radius:999px;padding:0 8px;font-size:.8rem}
.jcard{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;box-shadow:0 1px 3px rgba(6,23,58,.06)}
.jcard h4{margin:0;font-size:.95rem;color:var(--navy)}.jcard p{margin:2px 0}.jt{font-weight:700}
.jact{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}.jact select{min-height:36px;padding:4px 6px;font-size:.85rem;width:auto;flex:1}
/* calendar */
.callabel{margin:0 0 0 auto;font-size:1.05rem;color:var(--navy)}
.cal{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:10px}
.cal-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-row+.cal-row{border-top:1px solid var(--line)}
.cal-head div{background:var(--navy);color:#fff;font-size:.8rem;font-weight:600;padding:6px;text-align:center}
.cal-cell{min-height:110px;padding:4px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:4px;min-width:0}.cal-cell:first-child{border-left:0}
.cal.month .cal-cell{min-height:84px}.cal-cell.other{background:#f6f8fa;color:#9aa6b3}.cal-cell.today{background:#eef8fd}.cal-cell.today .cal-d{background:var(--cyan);color:var(--navy-deep);border-radius:999px;padding:0 6px}
.cal-d{font-size:.78rem;font-weight:700;align-self:flex-start}
.chip{display:flex;flex-direction:column;text-align:left;font:inherit;font-size:.74rem;line-height:1.25;background:#fff;border:1px solid var(--line);border-left:4px solid #7F8C9A;border-radius:6px;padding:3px 5px;cursor:pointer;color:var(--ink);overflow:hidden;min-width:0}
.chip b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip span{color:var(--muted);overflow:hidden;text-overflow:ellipsis}
.chip.conflict{background:#fdecea;border-color:#f1b0a8;color:var(--bad)}
/* map */
dialog.wide{width:min(1100px,98vw)}
.mapbox{height:min(58vh,520px);border-radius:10px;border:1px solid var(--line);background:#dfe6ee;margin:8px 0}
.maparea{margin:0;font-size:1.05rem;flex:1 1 180px}
/* print preview bar + signature */
.printbar{max-width:850px;margin:16px auto 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:5;background:var(--bg);padding:8px 0}
.sign-panel{max-width:850px;margin:0 auto 30px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;border-top:4px solid var(--cyan)}
.sign-panel h2{margin:0 0 10px;color:var(--navy)}.sign-panel .lbl{display:block;margin:10px 0 6px}
.sigpad{display:block;width:100%;height:180px;border:2px dashed #9dc7e8;border-radius:10px;background:#fbfdff;touch-action:none;cursor:crosshair}
/* printable extras */
.paybox{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:14px;padding:12px 14px;border:2px solid var(--cyan);border-radius:10px;background:#f2fbff;break-inside:avoid}
.paybox h3{margin:0 0 4px;color:var(--navy);font-size:1rem}.paybox p{margin:2px 0}.paybox .url{word-break:break-all}
.paybtn{display:inline-block;background:var(--blue-text);color:#fff!important;text-decoration:none;font-weight:700;padding:8px 14px;border-radius:8px}
.qr{width:110px;height:110px;flex:none}.qr svg,svg.qr{width:110px;height:110px}
.ptiers{margin:0 0 14px;break-inside:avoid}.ptiers h3,.pphotos h3{margin:0 0 6px;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--blue-text)}
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.tcol{border:1px solid var(--line);border-radius:8px;padding:10px;font-size:.85rem}.tcol h4{margin:0 0 4px;color:var(--navy)}.tcol ul{margin:4px 0;padding-left:16px}.tcol .pprice{font-size:1.15rem;font-weight:900;color:var(--navy);margin:4px 0}
.tcol.on{border:2px solid var(--blue);background:#f2fbff}.tcol .pick{font-size:.75rem;font-weight:700;color:var(--ok)}
.pphotos{margin-top:16px}.phgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pph{margin:0;break-inside:avoid}.pph img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;display:block}.pph figcaption{font-size:.72rem;color:var(--muted);margin-top:2px}
.sigimg{max-width:260px;max-height:80px;display:block;margin-bottom:2px}
.accepted{color:var(--ok);font-weight:700;margin:8px 0 0}
.paidstamp{display:inline-block;margin-top:14px;border:3px solid var(--ok);color:var(--ok);font-weight:900;letter-spacing:.1em;padding:6px 14px;border-radius:8px;transform:rotate(-3deg)}
.balance td{font-weight:900;color:var(--bad)}
table.chk{display:table;min-height:0;padding:0;border:0;cursor:default;font-weight:400}
.ptable.chk{table-layout:fixed}.ptable.chk th:first-child{width:17%}.ptable.chk td{font-size:.8rem}.ptable.chk ul{margin:0;padding-left:14px}.ptable.chk li{margin:0 0 2px}.ptable.chk td:first-child{font-weight:700;color:var(--navy)}
.scope ul{margin:4px 0 10px;padding-left:18px;font-size:.88rem}.pintro{font-size:.9rem;margin:0 0 12px}
.ptot.wide{max-width:420px;margin-left:auto}
.pd .muted{color:var(--muted)}
@media (max-width:1000px){.two{grid-template-columns:1fr}}
@media (max-width:640px){.viewnav{padding:0 8px 8px}.viewnav button{padding:6px 10px;font-size:.85rem}
 .actionbar .btn{flex:1 1 calc(50% - 8px);justify-content:center}
 .board{grid-template-columns:1fr}
 .cal-cell{min-height:70px;padding:2px}.chip span{display:none}.cal-head div{font-size:.7rem;padding:4px 1px}
 .tgrid{grid-template-columns:1fr}.phgrid{grid-template-columns:1fr 1fr}.paybox{flex-direction:column;align-items:flex-start}
 .printbar{padding:8px}.tier-pick{grid-template-columns:1fr}
 .ptable.chk{table-layout:fixed;font-size:.72rem}.ptable.chk th,.ptable.chk td{padding:4px 2px;word-break:break-word;hyphens:auto}.ptable.chk th:first-child,.ptable.chk td:first-child{width:34%}.ptable{font-size:.8rem}}
@media print{.ptable.chk td{font-size:9.5px;padding:4px 5px}.pmeta h2{font-size:1.25rem;letter-spacing:.1em}.psum{break-inside:auto}.tgrid{grid-template-columns:repeat(3,1fr)!important}.phgrid{grid-template-columns:repeat(4,1fr)!important}.paybox{flex-direction:row!important}.chip{font-size:7px}.paybtn{color:#fff!important}}
body[data-view]:not([data-view="estimator"]) .mbar{display:none!important}
#clientBox,#tplBox,#jobsBox{overflow-x:auto;max-width:100%}
body.show-print .top{position:static}
.internal-note{margin-top:14px;background:#fff8e6;border:1px dashed #d9a400;border-radius:10px;padding:10px 12px;font-size:.85rem;color:#4a3a00}.internal-note p{margin:0 0 4px}
.jobcontact{margin:4px 0}.jobcontact a{color:var(--blue-text);font-weight:700}
.amt-enter{margin:4px 0;font-size:.95rem}.amt-enter strong{color:var(--navy);font-size:1.05rem}
@media print{.internal-note{display:none!important}}
.two>*{min-width:0}
.view[data-view="schedule"] .two{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
#crewList input[data-f="name"],#crewList input[data-f="supervisor"]{min-width:150px}#crewList input[data-f="phone"]{min-width:130px}#crewList input[data-f="members"]{min-width:64px;width:70px}#crewList select{min-width:150px}
@media (max-width:1000px){.view[data-view="schedule"] .two{grid-template-columns:1fr}}
