[hidden]{display:none!important}
:root{color-scheme:dark;--bg:#141414;--card:#1e1e1e;--card2:#262626;--ink:#f4f4f2;--muted:#a3a3a0;--line:#333333;--field:#2a2a2a;--fieldline:#454545;--y:#F7D706;--y2:#FFE233;--yink:#141414;--brand:#F7D706;--brand2:#F7D706;--danger:#ff6b5e;--dangerline:#7a3530;--top:#0d0d0d;--ytext:#F7D706;--focus:#FFE233;--hover:#5a5a5a;--chev:#6f6f6c;--badge:#2e2e2e;--badgeink:#d0d0cc;--warn:#ffab5c;--ph:#7d7d7a;--pdfbg:rgba(255,99,88,.18);--pdf:#ff8a80;--linkbg:rgba(247,215,6,.16);--miss:#9a9a96;--x:#8a8a86;--secline:#F7D706;
--won:#5fe39a;--wonbg:rgba(46,204,113,.16);--lost:#ff8a80;--lostbg:rgba(255,99,88,.16);--quoted:#7cb8ff;--quotedbg:rgba(80,150,255,.17);--hold:#ffab5c;--holdbg:rgba(255,145,40,.17);--design:#c3a6ff;--designbg:rgba(160,120,255,.18);--r:14px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;padding-bottom:env(safe-area-inset-bottom)}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--ytext)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.topbar{position:sticky;top:0;z-index:10;background:var(--top);color:var(--ink);border-bottom:2px solid var(--y);padding-top:env(safe-area-inset-top)}
.topbar-inner{max-width:760px;margin:0 auto;display:flex;align-items:center;gap:10px;min-height:56px;padding:0 14px}
.topbar h1{font-size:20px;margin:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.icon-btn{background:none;border:0;color:var(--ytext);font-size:18px;padding:10px 8px 10px 0;min-height:44px;cursor:pointer}
main{max-width:760px;margin:0 auto;padding:14px 14px 40px;outline:none}
.pad{padding:24px}.center{text-align:center}.muted{color:var(--muted)}
button.primary,a.primary{background:var(--y);color:var(--yink);border:0;border-radius:12px;padding:13px 18px;font-weight:600;min-height:48px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
button.primary.small{padding:8px 14px;min-height:40px;background:var(--y);color:var(--yink);font-size:16px}
button.secondary,a.secondary{background:transparent;color:var(--ytext);border:1.5px solid var(--secline);border-radius:12px;padding:11px 16px;font-weight:600;min-height:48px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
button.danger{background:transparent;color:var(--danger);border:1.5px solid var(--dangerline);border-radius:12px;padding:11px 16px;font-weight:600;min-height:48px;cursor:pointer}
button:disabled{opacity:.6}
.block{width:100%}
.card{background:var(--card);border-radius:var(--r);box-shadow:none;border:1px solid var(--line);padding:16px;margin-bottom:14px}
.card h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 10px}
/* login */
.login{max-width:380px;margin:12vh auto 0}
.login h2{font-size:24px;text-transform:none;letter-spacing:0;color:var(--ink);margin:0 0 6px}
label{display:block;font-weight:600;font-size:15px;margin:14px 0 6px}
input[type=text],input[type=password],input[type=tel],input[type=email],input[type=number],input[type=search],select,textarea{width:100%;border:1.5px solid var(--fieldline);border-radius:12px;padding:12px 14px;background:var(--field);color:var(--ink);min-height:48px;font-size:17px}
input::placeholder,textarea::placeholder{color:var(--ph)}
textarea{min-height:96px;resize:vertical}
.hint{font-size:14px;color:var(--muted);margin:4px 0 0}
.err{color:var(--danger);font-weight:600;margin:10px 0 0}
/* list */
.years{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}
.years::-webkit-scrollbar{display:none}
.year{flex:0 0 auto;border:1.5px solid var(--fieldline);background:var(--card);color:var(--ink);border-radius:999px;padding:8px 18px;font-weight:700;font-size:17px;min-height:44px;cursor:pointer}
.year[aria-pressed=true]{background:var(--y);border-color:var(--y);color:var(--yink)}
.search{margin-bottom:10px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.chip{border:1.5px solid var(--fieldline);background:var(--card);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:15px;min-height:40px;cursor:pointer;font-weight:600}
.chip[aria-pressed=true]{background:var(--y);color:var(--yink);border-color:var(--y)}
.chip .n{opacity:.7;font-weight:500;margin-left:3px}
.totals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.total{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--y);border-radius:12px;padding:10px 12px;min-width:0}
.total b{display:block;font-size:18px;color:var(--ytext);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.total span{font-size:13px;color:var(--muted)}
.totnote{font-size:13px;color:var(--muted);margin:-6px 0 12px}
.yearhead{font-size:15px;font-weight:700;color:var(--muted);margin:16px 2px 8px}
.jobs{list-style:none;margin:0;padding:0}
.job{display:flex;gap:10px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:13px 14px;margin-bottom:8px;text-decoration:none;color:inherit;min-height:64px}
.job:active{background:var(--card2)}
@media(hover:hover){.job:hover{border-color:var(--hover)}}
.job .main{flex:1;min-width:0}
.job .addr{font-weight:700;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.job .tline{display:flex;align-items:center;gap:6px;min-width:0}
.job .clip{flex:0 0 auto;display:inline-flex;align-items:center;gap:1px;font-size:14px;line-height:1;padding:3px 6px;border-radius:999px;background:var(--linkbg);border:1px solid transparent;color:var(--ink)}
.job .clip b{font-size:12px;font-weight:700}
.job .sub{font-size:14px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.job .side{text-align:right;flex:0 0 auto;max-width:42%}
.job .val{font-weight:700;font-size:16px;color:var(--ytext);margin-top:4px;white-space:nowrap}
.job .chev{color:var(--chev);font-size:22px;flex:0 0 auto}
.badge{display:inline-block;border-radius:999px;padding:3px 10px;font-size:13px;font-weight:700;white-space:nowrap;background:var(--badge);color:var(--badgeink)}
.badge.won{background:var(--wonbg);color:var(--won)}.badge.lost{background:var(--lostbg);color:var(--lost)}
.badge.quoted{background:var(--quotedbg);color:var(--quoted)}.badge.hold{background:var(--holdbg);color:var(--hold)}.badge.design{background:var(--designbg);color:var(--design)}
.warn{color:var(--warn);font-weight:700}
.empty{text-align:center;color:var(--muted);padding:30px 10px}
/* detail */
.dhead h2{font-size:24px;text-transform:none;letter-spacing:0;color:var(--ink);margin:0 0 8px}
.dhead .meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:15px}
.kv{display:grid;grid-template-columns:minmax(110px,40%) 1fr;gap:10px 12px;margin:0}
.kv dt{color:var(--muted);font-size:15px}
.kv dd{margin:0;font-weight:600;word-break:break-word;white-space:pre-line}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.actions>*{flex:1 1 140px}
.notes{white-space:pre-wrap;word-break:break-word;margin:0}
.files{list-style:none;margin:0 0 10px;padding:0}
.files li{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding:8px 0;min-height:52px}
.files li:first-child{border-top:0}
.files .fname{flex:1;min-width:0;word-break:break-word}
.files a.open{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-weight:600;flex:1;min-width:0;min-height:44px}
.ficon{flex:0 0 auto;width:36px;height:36px;border-radius:8px;background:var(--pdfbg);color:var(--pdf);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center}
.ficon.link{background:var(--linkbg);color:var(--ytext)}.ficon.miss{background:var(--badge);color:var(--miss)}
.fsub{display:block;font-size:13px;color:var(--muted);font-weight:500}
.xbtn{background:none;border:0;color:var(--x);font-size:15px;padding:10px;min-height:44px;cursor:pointer}
.sectiontop{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.sectiontop h2{margin:0}
.uploadbtn{font-size:15px;padding:8px 12px;min-height:42px;white-space:nowrap;flex:0 0 auto}
.sectiontop{gap:10px}
.formgrid{display:grid;grid-template-columns:1fr;gap:0 14px}
@media(min-width:620px){.formgrid{grid-template-columns:1fr 1fr}.formgrid .full{grid-column:1/-1}}
.savebar{position:sticky;bottom:0;background:linear-gradient(transparent,var(--bg) 30%);padding:18px 0 calc(10px + env(safe-area-inset-bottom));display:flex;gap:8px}
.savebar>*{flex:1}
#toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--y);color:var(--yink);padding:12px 18px;border-radius:12px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s;max-width:90vw;z-index:20}
#toast.show{opacity:1}
.footer{margin-top:26px;text-align:center}
.linkbtn{background:none;border:0;color:var(--ytext);text-decoration:underline;padding:12px;min-height:44px;cursor:pointer;font-size:15px}
@media(max-width:380px){.totals{grid-template-columns:1fr 1fr}.total:last-child{grid-column:1/-1}}

/* brand */
.brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.brand img{width:30px;height:30px;border-radius:8px;flex:0 0 auto}
.topbar h1{color:var(--ink)}
.topbar h1 .accent{color:var(--ytext)}
.login .logo{display:block;width:72px;height:72px;border-radius:18px;margin:0 0 14px}
.login h2 .accent{color:var(--ytext)}
select option{background:var(--field);color:var(--ink)}
#backBtn:not([hidden])+.brand img{display:none}

/* theme toggle */
.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seg button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;border-radius:12px;border:1.5px solid var(--fieldline);background:var(--card2);color:var(--ink);font-weight:600;cursor:pointer}
.seg button[aria-pressed=true]{background:var(--y);border-color:var(--y);color:var(--yink)}
.seg .sw{width:20px;height:20px;border-radius:6px;border:1.5px solid #8a8a86;flex:0 0 auto}
.seg .sw.d{background:#141414}.seg .sw.l{background:#ffffff}

/* white theme */
html[data-theme=light]{color-scheme:light;--bg:#f4f4f2;--card:#ffffff;--card2:#efefec;--ink:#141414;--muted:#5c5c58;--line:#e2e2dd;--field:#ffffff;--fieldline:#cfcfc9;
--yink:#141414;--ytext:#141414;--focus:#141414;--top:#ffffff;--danger:#c62828;--dangerline:#e6a9a4;--hover:#b8b8b2;--chev:#9a9a95;--badge:#ececE8;--badgeink:#4a4a46;--warn:#a35200;--ph:#8a8a85;
--pdfbg:#fde3e1;--pdf:#b3261e;--linkbg:#fff4b0;--miss:#6b6b66;--x:#6b6b66;--secline:#141414;
--won:#157a3e;--wonbg:#dcf5e6;--lost:#b3261e;--lostbg:#fde3e1;--quoted:#1d5fbf;--quotedbg:#e1edff;--hold:#a35200;--holdbg:#ffecd6;--design:#6a3fc4;--designbg:#ece4ff}
html[data-theme=light] .topbar{border-bottom-width:3px;box-shadow:0 1px 0 rgba(0,0,0,.04)}
html[data-theme=light] .card,html[data-theme=light] .job,html[data-theme=light] .total{box-shadow:0 1px 2px rgba(0,0,0,.04)}
html[data-theme=light] .total b,html[data-theme=light] .job .val{font-weight:800}
html[data-theme=light] .accent{color:var(--ink)!important;background:linear-gradient(transparent 58%,var(--y) 58%,var(--y) 92%,transparent 92%);padding:0 2px}
html[data-theme=light] a:not(.primary):not(.secondary):not(.open){text-decoration-color:var(--y);text-decoration-thickness:2px;text-underline-offset:2px}
html[data-theme=light] html[data-theme=light] #toast{box-shadow:0 4px 14px rgba(0,0,0,.15)}

/* ⋮ menu */
.menu-wrap{position:relative;flex:0 0 auto}
.menu-btn{width:44px;height:44px;border-radius:12px;border:1.5px solid var(--fieldline);background:var(--card);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.menu-btn svg{display:block}
.menu-btn[aria-expanded=true]{border-color:var(--y)}
.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:262px;max-width:calc(100vw - 28px);background:var(--card);border:1px solid var(--fieldline);border-radius:14px;padding:6px;box-shadow:0 10px 30px rgba(0,0,0,.45);z-index:20}
.menu-item{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;min-height:48px;padding:10px 12px;background:none;border:0;border-radius:10px;color:var(--ink);font-size:17px;font-weight:500;text-align:left;cursor:pointer;white-space:nowrap}
.menu-item:hover,.menu-item:focus-visible{background:var(--card2)}
.menu-item:focus-visible{outline-offset:-2px}
.menu-item+.menu-item{border-top:1px solid var(--line);border-radius:0 0 10px 10px}
.menu-item+.menu-item:not(:last-child){border-radius:0}
.switch{flex:0 0 auto;position:relative;width:46px;height:28px;border-radius:999px;background:var(--fieldline);transition:background .15s}
.switch .knob{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.35);transition:transform .15s}
.menu-item[aria-checked=true] .switch{background:var(--y)}
.menu-item[aria-checked=true] .switch .knob{transform:translateX(18px)}
html[data-theme=light] .menu{box-shadow:0 10px 30px rgba(0,0,0,.14)}
@media (prefers-reduced-motion:reduce){.switch,.switch .knob{transition:none}}
.actions a.off,.actions button.off{opacity:.5;border-style:dashed;flex-direction:column;gap:0;line-height:1.15}
.actions a.off small,.actions button.off small{font-size:12px;font-weight:500}
.actions button.off:hover,.actions button.off:focus-visible{opacity:.8}
.mailalt{margin:8px 0 0}

/* status dropdowns (save on change) */
.jrow{position:relative}
.job .side{min-width:122px}
.job .stspace{height:36px}
.stwrap{position:relative;display:inline-flex;align-items:center;border-radius:999px;background:var(--badge);color:var(--badgeink);max-width:100%}
.stwrap::after{content:"";position:absolute;right:11px;top:50%;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-70%) rotate(45deg);pointer-events:none;opacity:.85}
.stwrap select.stsel{appearance:none;-webkit-appearance:none;background:transparent;border:0;color:inherit;font-weight:700;font-size:16px;line-height:1.2;padding:6px 30px 6px 12px;min-height:36px;width:auto;max-width:100%;border-radius:999px;cursor:pointer}
.stwrap select.stsel:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.stwrap select.stsel:disabled{opacity:.6}
.stwrap.won{background:var(--wonbg);color:var(--won)}
.stwrap.lost{background:var(--lostbg);color:var(--lost)}
.stwrap.quoted{background:var(--quotedbg);color:var(--quoted)}
.stwrap.hold{background:var(--holdbg);color:var(--hold)}
.stwrap.design{background:var(--designbg);color:var(--design)}
.jrow .stwrap.row{position:absolute;top:12px;right:36px;z-index:1}
.strow{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}
.strow label{margin:0;color:var(--muted);font-size:15px;font-weight:600}
.stwrap.big select.stsel{font-size:17px;min-height:46px;padding:9px 38px 9px 16px}
.stwrap.big::after{right:15px}
.savedmark{opacity:0;color:var(--won);font-weight:700;font-size:15px}
.savedmark.show{animation:savedfade 2.4s forwards}
@keyframes savedfade{0%{opacity:0}8%{opacity:1}75%{opacity:1}100%{opacity:0}}
/* totals per status */
.stgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
.stcard{--c:var(--y);text-align:left;background:var(--card);border:1px solid var(--line);border-top:3px solid var(--c);border-radius:12px;padding:8px 10px 9px;min-width:0;cursor:pointer;color:var(--ink);display:flex;flex-direction:column;gap:1px;font:inherit}
.stcard.won{--c:var(--won)}.stcard.lost{--c:var(--lost)}.stcard.quoted{--c:var(--quoted)}.stcard.hold{--c:var(--hold)}.stcard.design{--c:var(--design)}
.stcard:active{background:var(--card2)}
.stcard[aria-pressed=true]{border-color:var(--c);box-shadow:0 0 0 1.5px var(--c);background:var(--card2)}
.sthead{display:flex;justify-content:space-between;align-items:center;gap:4px;min-width:0}
.stname{font-size:13px;font-weight:700;color:var(--c);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stcard.all .stname{color:var(--ytext)}
.stn{font-size:12px;font-weight:700;background:var(--badge);color:var(--ink);border-radius:999px;padding:1px 7px;flex:0 0 auto}
.stv{font-size:17px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.stcard.all .stv{color:var(--ytext)}
.sta{font-size:12px;line-height:1.25;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.stav{font-weight:700;color:var(--ink);opacity:.85}
.showing{font-size:14px;color:var(--muted);margin:-4px 0 8px;display:flex;align-items:center;gap:2px}
.showing .linkbtn{padding:6px 8px;min-height:36px}
.addlink{font-weight:600}

@media(max-width:360px){.stv{font-size:15px}.stcard{padding:7px 8px}}
html[data-theme=light] .stcard{box-shadow:0 1px 2px rgba(0,0,0,.04)}
html[data-theme=light] .stcard.all .stname,html[data-theme=light] .stcard.all .stv{color:var(--ink)}
html[data-theme=light] .stcard.all{--c:#141414;border-top-color:var(--y)}
html[data-theme=light] .stcard.all[aria-pressed=true]{border-color:var(--y);box-shadow:0 0 0 1.5px var(--y)}

/* compact status filter (Quoted / Designing / On hold live here, no cards) */
.stfilter{display:flex;align-items:center;gap:8px;margin:-2px 0 10px;font-size:14px;color:var(--muted)}
.stfilter label{font-weight:600}
.stfwrap{position:relative;display:inline-flex}
.stfwrap::after{content:"";position:absolute;right:12px;top:50%;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-70%) rotate(45deg);pointer-events:none;color:var(--muted)}
.stfilter select{appearance:none;-webkit-appearance:none;width:auto;min-height:38px;padding:6px 32px 6px 12px;border-radius:999px;font-size:16px;font-weight:600;background:var(--card);border:1.5px solid var(--fieldline);color:var(--ink);cursor:pointer}
.stfilter .linkbtn{padding:6px 8px;min-height:36px}
@media(min-width:760px){.stgrid{max-width:620px}}

/* ===== home ===== */
.home{max-width:560px;margin:0 auto}
.hello{margin:6px 2px 16px}
.hello h2{font-size:28px;margin:0;letter-spacing:-.01em}
.hello p{margin:2px 0 0;font-size:15px}
.tiles{display:grid;gap:12px}
.tile{position:relative;display:flex;align-items:center;gap:16px;min-height:118px;padding:18px 16px 18px 18px;background:var(--card);border:1px solid var(--line);border-left:5px solid var(--y);border-radius:18px;text-decoration:none;color:var(--ink);min-width:0}
.tile:active{background:var(--card2)}
@media(hover:hover){.tile:hover{border-color:var(--hover);border-left-color:var(--y)}}
.ticon{flex:0 0 auto;width:58px;height:58px;border-radius:16px;background:var(--y);color:#141414;display:flex;align-items:center;justify-content:center}
.tbody{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.tname{font-size:23px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tsub{font-size:15px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcount{flex:0 0 auto;font-size:30px;font-weight:800;color:var(--ytext);font-variant-numeric:tabular-nums}
.tile .chev{color:var(--chev);font-size:26px;flex:0 0 auto;margin-left:-6px}
.duetxt{color:var(--warn);font-weight:700}
html[data-theme=light] .tile{box-shadow:0 1px 3px rgba(0,0,0,.06)}
html[data-theme=light] .tcount{color:var(--ink)}

/* ===== directory + leads lists ===== */
.countline{font-size:14px;color:var(--muted);margin:-2px 2px 10px}
.avatar{flex:0 0 auto;width:42px;height:42px;border-radius:50%;background:var(--linkbg);color:var(--ytext);font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center;letter-spacing:.02em}
.avatar.big{width:60px;height:60px;font-size:21px}
html[data-theme=light] .avatar{background:var(--y);color:#141414}
.job.drow .side,.job.lrow .side{min-width:0;max-width:46%;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pill{display:inline-block;font-size:13px;font-weight:700;border-radius:999px;padding:3px 9px;background:var(--badge);color:var(--badgeink);white-space:nowrap}
.pill.lp{background:var(--linkbg);color:var(--ink)}
.badge.new{background:var(--linkbg);color:var(--ink)}
.fchip{display:inline-flex;flex-direction:column;align-items:flex-end;font-size:12px;font-weight:600;color:var(--muted);line-height:1.2;white-space:nowrap}
.fchip b{font-size:15px;color:var(--ink)}
.fchip.due{color:var(--warn)}.fchip.due b{color:var(--warn)}
.fchip.due:not(.over){font-size:13px;font-weight:800}
.mini{list-style:none;margin:0;padding:0}
.mini li+li{border-top:1px solid var(--line)}
.mini a{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:11px 0;min-height:56px;text-decoration:none;color:var(--ink)}
.mini .mt{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;column-gap:6px}
.mini .mt b{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini .mt small{flex-basis:100%;font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini .mt .clip{font-size:13px;padding:2px 6px;border-radius:999px;background:var(--linkbg)}
.mini .mr{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.mini .mv{font-weight:700;font-size:15px;color:var(--ytext)}
html[data-theme=light] .mini .mv{font-weight:800}
.dperson{display:flex;align-items:center;gap:14px}
.dperson>div{min-width:0}
.dperson h2{word-break:break-word}
.merge summary{cursor:pointer;font-weight:600;color:var(--ytext);min-height:32px;display:flex;align-items:center}
.merge[open] summary{margin-bottom:6px}
.emptycard{text-align:center;padding:28px 18px}
.emptycard .ticon{margin:0 auto 12px}
.emptycard h2{font-size:20px;text-transform:none;letter-spacing:0;color:var(--ink)}
.emptycard p{margin:0 0 16px}
.movebtn{margin-top:16px;font-size:18px;min-height:54px}
.dhead .hint.center{margin-top:8px}
input[type=date]{-webkit-appearance:none;appearance:none;display:block;width:100%;border:1.5px solid var(--fieldline);border-radius:12px;padding:12px 14px;background:var(--field);color:var(--ink);min-height:48px;font-size:17px;text-align:left}
input[type=date]::-webkit-date-and-time-value{text-align:left}

/* ===== move-to-jobs sheet ===== */
.sheet-bg{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.6);display:flex;align-items:flex-end;justify-content:center}
.sheet{width:100%;max-width:520px;background:var(--card);border:1px solid var(--fieldline);border-bottom:0;border-radius:20px 20px 0 0;padding:20px 18px calc(16px + env(safe-area-inset-bottom));max-height:92vh;overflow:auto;border-top:4px solid var(--y)}
.sheet h2{font-size:22px;text-transform:none;letter-spacing:0;color:var(--ink);margin:0 0 6px}
.sheet .muted{margin:0;font-size:15px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sheetbar{display:flex;gap:8px;margin-top:16px}.sheetbar>*{flex:1}
@media(min-width:620px){.sheet-bg{align-items:center}.sheet{border-radius:20px;border-bottom:1px solid var(--fieldline)}}
html[data-theme=light] .sheet-bg{background:rgba(0,0,0,.35)}

/* ===== archive / trash / delete ===== */
.morebtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:10px;border:1.5px solid transparent;background:transparent;color:var(--muted);cursor:pointer;flex:0 0 auto}
.morebtn:hover{border-color:var(--fieldline);color:var(--ink)}
.morebtn:active{background:var(--card2)}
.morebtn:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.job .morespace{flex:0 0 22px;width:22px}
.jrow .morebtn.onrow{position:absolute;right:3px;top:10px;width:38px;height:44px;z-index:2}
.jrow .stwrap.row{right:42px}
li>.morebtn.onrow.mid{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:38px;height:44px;z-index:2}
#app ul.jobs>li{position:relative}
.dhead.hasmore{position:relative}
.dhead.hasmore>h2,.dhead.hasmore>.badge{margin-right:44px}
.morebtn.onhead{position:absolute;top:10px;right:10px;border-color:var(--fieldline);color:var(--ink);width:42px;height:42px}
body.noscroll{overflow:hidden}
.actsheet{padding-top:16px}
.acthead{display:flex;align-items:center;gap:8px;margin:0 2px 10px;min-width:0}
.acthead h2{margin:0;font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}
.badge.binb{background:var(--linkbg);color:var(--ink);flex:0 0 auto}
.actlist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:12px}
.actitem{display:flex;align-items:center;gap:14px;width:100%;min-height:58px;padding:10px 14px;background:var(--card);border:0;color:var(--ink);font-size:17px;font-weight:600;text-align:left;cursor:pointer}
.actitem+.actitem{border-top:1px solid var(--line)}
.actitem:hover,.actitem:focus-visible{background:var(--card2)}
.actitem:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.actitem .aicon{display:flex;color:var(--ytext);flex:0 0 auto}
.actitem .atext{display:flex;flex-direction:column;min-width:0}
.actitem small{font-size:13.5px;font-weight:500;color:var(--muted);margin-top:1px}
.actitem.isdanger,.actitem.isdanger .aicon{color:var(--danger)}
.sheet[tabindex]:focus{outline:none}
.delsheet{text-align:center}
.delsheet .delicon{width:54px;height:54px;border-radius:50%;margin:0 auto 10px;display:flex;align-items:center;justify-content:center;background:var(--lostbg);color:var(--danger)}
.delsheet .delicon svg{width:28px;height:28px}
.delsheet h2{font-size:22px}
.delsheet p.muted{font-size:16px;line-height:1.4}
.delsheet p.muted b{color:var(--ink)}
.delsheet .hint{margin-top:8px}
button.dangerfill{background:var(--danger);color:#fff;border:0;border-radius:12px;padding:12px 16px;font-weight:700;min-height:48px;cursor:pointer;font-size:17px}
button.dangerfill:disabled{opacity:.6}
html[data-theme=light] button.dangerfill{background:#c62828}
.linkbtn.dangerlink{color:var(--danger);text-decoration-color:var(--danger)}
.footer.delfoot{margin-top:10px}
.jobacts button svg,.binacts button svg,.binlinks svg,.bintabs svg{flex:0 0 auto;width:19px;height:19px}
.jobacts>button{gap:7px}
.binlinks{display:flex;justify-content:center;gap:10px;margin:22px 0 0;flex-wrap:wrap}
.binlinks a{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:8px 16px;border-radius:999px;border:1.5px solid var(--fieldline);background:var(--card);color:var(--ink);text-decoration:none!important;font-weight:600;font-size:15px}
.binlinks a svg{color:var(--muted)}
.binlinks b,.bintabs b{display:inline-block;min-width:22px;padding:1px 7px;border-radius:999px;background:var(--y);color:#141414;font-size:13px;text-align:center;margin-left:2px}
.binbanner{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--y);border-radius:var(--r);padding:12px 12px 12px 14px;margin-bottom:12px}
.binbanner.trash{border-left-color:var(--danger)}
.binbanner .bicon{display:flex;color:var(--muted);flex:0 0 auto}
.binbanner .btext{flex:1;min-width:0;font-size:14px;color:var(--muted);display:flex;flex-direction:column}
.binbanner .btext b{font-size:16px;color:var(--ink)}
.binbanner button{flex:0 0 auto;min-height:42px;padding:8px 14px}
.bintabs{margin-bottom:12px}
.bintabs a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;border-radius:12px;border:1.5px solid var(--fieldline);background:var(--card2);color:var(--ink);font-weight:600;text-decoration:none!important}
.bintabs a.on{background:var(--y);border-color:var(--y);color:var(--yink)}
.bintabs a.on b{background:#141414;color:var(--y)}
.binnote{margin:0 2px 6px;line-height:1.4}
.binrow{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin-bottom:8px;overflow:hidden}
html[data-theme=light] .binrow{box-shadow:0 1px 2px rgba(0,0,0,.04)}
.binrow .job{border:0;margin:0;border-radius:0;background:transparent;box-shadow:none!important}
.binrow .job .side{min-width:0;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.binacts{display:flex;gap:8px;padding:0 12px 12px;align-items:center}
.binacts>button:not(.morebtn){display:inline-flex;align-items:center;justify-content:center;flex:1;min-height:44px;padding:8px 10px;gap:6px;font-size:15px;white-space:nowrap}
.binacts .morebtn.inrow{border-color:var(--fieldline);width:44px;height:44px}
#toast.act{pointer-events:auto;display:flex;align-items:center;gap:14px;padding:8px 8px 8px 16px;width:max-content}
#toast span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60vw}
#toast .undo{background:#141414;color:var(--y);border:0;border-radius:9px;padding:8px 14px;min-height:40px;font-weight:700;cursor:pointer;flex:0 0 auto}
/* attach in the New/Edit form */
.attach{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.attach h3{margin:0;font-size:17px}
.attach .attcat{display:flex;align-items:center;gap:10px;margin:8px 0 2px}
.attach .attcat label{margin:0;font-size:15px;color:var(--muted);flex:0 0 auto}
.attach .attcat select{flex:1;min-height:44px;padding:8px 12px}
.attach .files.pending{margin:8px 0 0}
.attach .files.pending:empty{display:none}

/* ===== Designer section on job / new project forms ===== */
.dsec{border:1.5px solid var(--line);border-left:4px solid var(--y);border-radius:12px;padding:6px 14px 14px;margin:18px 0 6px;min-width:0;background:var(--card2)}
.dsec legend{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--ytext);padding:0 6px;margin-left:-6px;display:flex;align-items:center;gap:6px}
html[data-theme=light] .dsec{background:#fbfbf8}
.dsec-ic{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;background:var(--y);color:var(--yink);font-size:12px}
.dsec label{margin-top:10px}
.dsec .dgrid{display:grid;grid-template-columns:1fr;gap:0 12px}
@media (min-width:560px){.dsec .dgrid{grid-template-columns:1fr 1fr}}
.ta{position:relative}
.tawrap{position:relative}
.tawrap input{padding-right:44px}
.taclear{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;background:transparent;color:var(--muted);font-size:24px;line-height:1;cursor:pointer;border-radius:10px}
.tasugg{position:absolute;left:0;right:0;top:100%;z-index:30;list-style:none;margin:4px 0 0;padding:4px;background:var(--card);border:1.5px solid var(--fieldline);border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.35);max-height:300px;overflow:auto}
.tasugg li{display:flex;flex-direction:column;gap:1px;padding:10px 12px;border-radius:9px;cursor:pointer;min-height:44px;justify-content:center}
.tasugg li.on,.tasugg li:hover{background:var(--linkbg)}
.tasugg .sn{font-weight:600;font-size:16px;color:var(--ink);overflow-wrap:anywhere}
.tasugg .ss{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.tasugg li.add{border-top:1px solid var(--line);margin-top:2px}
.tasugg li.add .sn{color:var(--ytext)}
.dtag{min-height:22px;margin:6px 0 0;font-size:14px;font-weight:600}
.dtag.found{color:var(--won)}
.dtag.new{color:var(--ytext)}
.dsec .hint{margin-top:8px}
.dsec .hint.dmiss{color:var(--ytext);font-weight:500}
/* ===== Designers tab: add button ===== */
a.primary.addbig{display:flex;width:100%;min-height:54px;font-size:18px;font-weight:700;margin:2px 0 14px;border-radius:14px}
.addbig .plus{font-size:24px;line-height:1;margin-top:-2px}
.fab{position:fixed;right:18px;bottom:calc(20px + env(safe-area-inset-bottom));width:58px;height:58px;border-radius:50%;background:var(--y);color:var(--yink);display:grid;place-items:center;font-size:32px;font-weight:600;line-height:1;text-decoration:none;box-shadow:0 6px 18px rgba(0,0,0,.4);z-index:40}
.fab[hidden]{display:none}
.dupwarn{margin:8px 0 0;padding:10px 12px;border-radius:10px;background:var(--holdbg);color:var(--ink);font-size:15px}
.dupwarn a{color:var(--ytext);font-weight:700;white-space:nowrap}
html[data-theme=light] .dupwarn a{color:#141414;text-decoration:underline}
.fabspace{height:76px}


/* inline editing: tap a value to edit it in place */
.ie{min-width:0}
.ie-v{display:flex;align-items:flex-start;gap:8px;width:calc(100% + 16px);margin:-8px -8px;padding:8px;min-height:40px;background:transparent;border:1px dashed transparent;border-radius:10px;color:var(--ink);font:inherit;font-weight:600;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ie-v:hover{border-color:var(--fieldline)}
.ie-v:active{background:var(--field)}
.ie-t{flex:1;min-width:0;word-break:break-word;white-space:pre-line}
.ie-add{flex:1;color:var(--ytext);font-weight:600}
.ie-pen{flex:0 0 auto;color:var(--chev);font-size:15px;line-height:1.5}
.ie.multi .ie-v{border-color:var(--line);margin:0;width:100%;padding:12px;min-height:56px;font-weight:400}
.ie.multi .ie-t{white-space:pre-wrap}
dd .ie.multi .ie-v{margin:-8px -8px;width:calc(100% + 16px);padding:8px;min-height:40px;border-color:transparent;font-weight:600}
.ie-saved{display:block;height:0;overflow:visible;opacity:0;color:var(--won);font-weight:700;font-size:13px;line-height:1}
.ie-saved.show{animation:savedfade 2.4s forwards;height:auto;margin-top:6px}
.ie-ed input,.ie-ed textarea{width:100%;min-height:44px;padding:9px 12px;font-weight:500}
.ie-ed input[aria-invalid=true],.ie-ed textarea[aria-invalid=true]{border-color:var(--danger)}
.ie-ed textarea{min-height:120px}
dd .ie-ed textarea{min-height:64px}
.ie-err{color:var(--danger);font-weight:600;font-size:14px;margin:6px 0 0;white-space:normal}
.ie-err:empty{display:none}
.ie-bar{display:flex;align-items:center;gap:6px;margin-top:6px;flex-wrap:wrap}
.ie-tip{flex:1;font-size:13px;color:var(--muted);font-weight:400;min-width:0}
.ie-bar .linkbtn{padding:8px 10px;min-height:40px}
.ie-bar .primary.small{min-height:40px;padding:8px 16px}
.sectiontop .tapnote{font-size:13px;color:var(--muted);font-weight:400}
.ccard .dname{font-weight:700}

/* ===== attachments: download button + open-in sheet ===== */
.files .dlbtn{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;border:1.5px solid var(--fieldline);background:var(--card2);color:var(--ytext);text-decoration:none;-webkit-tap-highlight-color:transparent}
.files .dlbtn:active{background:var(--hover)}
.files .dlbtn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.files li .xbtn{flex:0 0 auto;padding:10px 6px}
.fosheet .acthead{margin-bottom:2px}
.fosheet .acthead h2{white-space:normal;overflow-wrap:anywhere;line-height:1.25}
.fosheet .fometa{margin:0 2px 12px;font-size:15px}
.foitem{text-decoration:none!important}
.foitem .aicon svg{width:26px;height:26px;display:block}
.foitem .aicon{width:30px;justify-content:center}
.foitem[aria-disabled=true]{opacity:.55}
.foitem .fo-here,.foitem .fo-download{color:var(--ytext)}
.fohint{margin:-2px 2px 12px;font-size:13.5px;transition:color .2s}
.fohint.on{color:var(--ink);font-weight:600}

/* designers: a tag from the notes, and a second phone */
.job.drow .main .pill.ntag{display:inline-block;margin-top:5px}
.job.drow .addr{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere;line-height:1.25}
.pill.ntag{background:transparent;color:var(--muted);border:1px solid var(--line);font-weight:600;font-size:12px;padding:2px 8px;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.kv.p2{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}

/* ===== contacts ===== */
.contacts-hub .countline{margin:2px 2px 12px}
.cempty{text-align:center;padding:28px 18px 18px}
.cempty .ticon{margin:0 auto 12px;width:64px;height:64px}
.card.cempty h2{font-size:22px;margin:0 0 6px;text-transform:none;letter-spacing:-.01em;color:var(--ink)}
.cempty p{margin:0 auto 18px;max-width:300px;line-height:1.4}
.cempty a.primary.addbig{margin:0}
.contacts-hub .tsub,.t-contacts .tsub{white-space:normal;line-height:1.3}

/* contractor / electrician blocks on job + project forms and pages */
.rsec .dsec-ic{font-size:15px}
.rcard .kv dd .addlink{font-weight:600}

/* price sheets (manufacturers) */
.ficon.k-xls{background:rgba(34,170,96,.16);color:#3ddc84}
html[data-theme=light] .ficon.k-xls{background:#e3f6ea;color:#17803d}
.ficon.k-img{background:var(--linkbg);color:var(--ytext)}
.ficon.k-other{background:var(--badge);color:var(--muted)}
.psheets .fname{font-weight:600}
.pslabel{display:block;font-weight:700;color:var(--ink)}
.psfile{display:block;font-weight:500;font-size:14px;color:var(--muted);overflow-wrap:anywhere}
.psheets .files li{gap:6px}
.psheets .files .dlbtn.psmore{font-size:22px;font-weight:800;line-height:1;cursor:pointer;color:var(--ink);padding:0}
.pscount{display:inline-block;min-width:22px;padding:1px 7px;margin-left:4px;border-radius:999px;background:var(--y);color:#141414;font-size:13px;font-weight:800;text-align:center;letter-spacing:0;vertical-align:2px}
.psempty{margin:2px 0 4px}
.pssheet label{display:block;margin-top:12px}
.pssheet .files.pending{margin:10px 0 2px;max-height:34vh;overflow:auto}
.pssheet .savebar{margin-top:14px}
.extwrap{display:flex;align-items:center;gap:6px}
.extwrap input{flex:1;min-width:0}
.extwrap .ext{flex:0 0 auto;color:var(--muted);font-weight:600}
.job.drow .addr .psclip{display:inline-flex;vertical-align:1px;margin-left:4px;font-size:13px;padding:2px 6px}
.weblink{overflow-wrap:anywhere}

/* ===== in-app file viewer (PDF / Excel / photos) ===== */
body.vwopen{overflow:hidden}
body.vwopen .sheet-bg{z-index:60}
.viewer{position:fixed;inset:0;z-index:45;background:var(--bg);display:flex;flex-direction:column;overscroll-behavior:contain}
.vwtop{display:flex;align-items:center;gap:6px;background:var(--top);border-bottom:2px solid var(--y);padding:env(safe-area-inset-top) 8px 0 6px;min-height:56px;flex:0 0 auto}
html[data-theme=light] .vwtop{border-bottom-width:3px}
.vwbtn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;border-radius:10px;border:0;background:transparent;color:var(--ytext);font-size:22px;font-weight:700;cursor:pointer;text-decoration:none;flex:0 0 auto;padding:0 6px}
.vwbtn:active{background:var(--card2)}
.vwbtn.vwclose{font-size:21px}
.vwbtn.sm{min-width:40px;height:38px;font-size:22px;border:1.5px solid var(--fieldline);color:var(--ink)}
.vwname{flex:1;min-width:0;display:flex;flex-direction:column;padding:6px 0}
.vwname h2{margin:0;font-size:16.5px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:none;letter-spacing:0}
.vwsub{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vwtools{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--card);border-bottom:1px solid var(--line);flex:0 0 auto;flex-wrap:wrap}
.vwpi{font-size:14px;color:var(--muted);font-weight:600;flex:1;min-width:0}
.vwzoom{display:flex;align-items:center;gap:6px;margin-left:auto}
.vwzval{min-width:58px;height:38px;border-radius:10px;border:0;background:transparent;color:var(--ink);font-size:14.5px;font-weight:700;cursor:pointer}
.vwbody{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}
.vwscroll{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-x pan-y}
.vwpages{width:100%;padding:10px 8px calc(24px + env(safe-area-inset-bottom));box-sizing:border-box;transform-origin:0 0}
.vwpage{position:relative;background:#fff;margin:0 auto 10px;width:100%;box-shadow:0 1px 4px rgba(0,0,0,.35);border-radius:2px;overflow:hidden}
.vwpage canvas{display:block;width:100%;height:100%;position:absolute;inset:0}
.vwpn{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#999;font-size:15px}
.vwpage.ok .vwpn{display:none}
.vwpage.bad .vwpn::after{content:" · could not draw this page"}
.vwmsg{margin:auto;padding:30px 22px;text-align:center;max-width:420px}
.vwmsg p{margin:12px 0 0}
.vwmsg .primary{margin-top:18px}
.vwerr{font-size:19px;font-weight:700;color:var(--ink)}
.vwspin{width:34px;height:34px;margin:0 auto;border-radius:50%;border:3.5px solid var(--line);border-top-color:var(--y);animation:vwspin .8s linear infinite}
@keyframes vwspin{to{transform:rotate(360deg)}}
.vwimgbox{width:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:8px;box-sizing:border-box;transform-origin:0 0}
.vwimgbox img{width:100%;height:auto;display:block}
.vwtext{margin:0;padding:14px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px}
/* spreadsheet: search on top, table scrolls sideways inside its own box */
.vwsheettools{flex-direction:column;align-items:stretch;gap:6px;padding:10px 12px 8px}
.vwsearch{position:relative}
.vwsearch input{width:100%;min-height:46px;padding:10px 44px 10px 40px;border-radius:12px;border:1.5px solid var(--fieldline);background:var(--field) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5' fill='none' stroke='%23999' stroke-width='2.2'/%3E%3Cpath d='m15.5 15.5 5 5' stroke='%23999' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 12px 50%/20px;color:var(--ink);font-size:17px;-webkit-appearance:none;appearance:none}
.vwsearch input::-webkit-search-cancel-button{display:none}
.vwqx{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;background:transparent;color:var(--muted);font-size:17px;cursor:pointer;border-radius:10px}
.vwcount{margin:0 2px;font-size:13.5px;color:var(--muted);font-weight:600}
.vwtabs{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin:2px -12px 0;padding:0 12px}
.vwtabs::-webkit-scrollbar{display:none}
.vwtab{flex:0 0 auto;min-height:38px;padding:6px 14px;border-radius:19px;border:1.5px solid var(--fieldline);background:transparent;color:var(--ink);font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap}
.vwtab small{color:var(--muted);font-weight:600;margin-left:3px}
.vwtab[aria-selected=true]{background:var(--y);border-color:var(--y);color:var(--yink)}
.vwtab[aria-selected=true] small{color:var(--yink);opacity:.7}
.vwtablewrap{background:var(--card)}
.vwtable{border-collapse:separate;border-spacing:0;font-size:14px;min-width:100%;margin-bottom:env(safe-area-inset-bottom)}
.vwtable th,.vwtable td{padding:9px 9px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
.vwtable td{color:var(--ink)}
.vwtable td.num{text-align:right;font-variant-numeric:tabular-nums}
.vwtable thead th{position:sticky;top:0;z-index:2;background:var(--card2);color:var(--ink);font-weight:700;border-bottom:2px solid var(--y)}
.vwtable .vwrn{position:sticky;left:0;z-index:1;background:var(--card);color:var(--muted);font-size:12px;text-align:right;width:40px;min-width:40px;max-width:40px;padding:9px 6px;box-sizing:border-box}
.vwtable td:nth-child(2),.vwtable th:nth-child(2){position:sticky;left:40px;z-index:1;background:var(--card);box-shadow:2px 0 0 var(--line)}
.vwtable thead th:nth-child(2){z-index:3;background:var(--card2)}
.vwtable tbody tr:nth-child(even) td:nth-child(2){background:var(--card)}
.vwtable thead .vwrn{z-index:3;background:var(--card2)}
.vwtable tbody tr:nth-child(even) td{background:rgba(127,127,127,.06)}
.vwtable tbody tr:nth-child(even) td.vwrn{background:var(--card)}
.vwtable mark{background:var(--y);color:var(--yink);border-radius:3px;padding:0 1px}
.vwtable td.long{white-space:normal;min-width:200px;max-width:300px;overflow-wrap:anywhere}
.vwcap{position:sticky;left:0;padding:10px 12px 8px;font-size:13.5px;color:var(--muted);line-height:1.35;max-width:100vw;box-sizing:border-box}
.vwcap div:first-child{font-weight:700;color:var(--ink);font-size:14.5px}
.vwtable td a{color:var(--ytext);font-weight:600}
.vwtab.vwnohit{opacity:.55}
.vwgo{display:inline-block;margin:8px 6px 0;font-weight:700;color:var(--ytext);background:none;border:0;text-decoration:underline;font-size:16px;cursor:pointer;min-height:40px}
.vwtable td:nth-child(2){max-width:160px;white-space:normal;overflow-wrap:break-word}
.vwtable td.short{white-space:nowrap!important}
.vwtable tr.vwgrp td[colspan]{position:static;max-width:none;background:var(--card2)!important;box-shadow:none;padding:10px 9px 8px}
.vwtable tr.vwgrp td[colspan] span{position:sticky;left:49px;display:inline-block;max-width:calc(100vw - 72px);white-space:normal;font-weight:700;font-size:13.5px;letter-spacing:.02em;color:var(--ytext)}
html[data-theme=light] .vwtable tr.vwgrp td[colspan] span{color:var(--ink)}
.vwnone{text-align:center!important;color:var(--muted)!important;padding:28px 10px!important;white-space:normal!important}
/* open sheet: "Open here" is the first, highlighted choice */
.foitem.fodefault{background:var(--y);color:var(--yink)}
.foitem.fodefault .aicon,.foitem.fodefault small{color:var(--yink)!important}
.foitem.fodefault small{opacity:.75}
.foitem.fodefault:hover,.foitem.fodefault:focus-visible{background:var(--y2)}

/* ---- Sales status (⋮ menu + Home tile): Total / Won / Lost cards and every status ---- */
.sales .stgrid{margin-bottom:10px}
.sales .stcard{padding:12px 10px 12px;gap:3px}
.sales .stcard .stv{font-size:18px}
.ssrate{margin:4px 2px 18px;font-size:15px;color:var(--muted)}
.ssrate b{color:var(--ink)}
.sshead{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 2px 8px;font-weight:700}
.sslist{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.sslist li+li{border-top:1px solid var(--line)}
.ssrow{--c:var(--muted);display:flex;align-items:center;gap:10px;width:100%;min-height:60px;padding:10px 12px 10px 14px;background:none;border:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-width:0}
.ssrow:active{background:var(--card2)}
.ssrow.won{--c:var(--won)}.ssrow.lost{--c:var(--lost)}.ssrow.quoted{--c:var(--quoted)}.ssrow.hold{--c:var(--hold)}.ssrow.design{--c:var(--design)}
.ssdot{flex:0 0 auto;width:12px;height:12px;border-radius:50%;background:var(--c)}
.ssname{flex:1 1 auto;min-width:0;font-weight:600;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ssn{flex:0 0 auto;min-width:28px;text-align:right;font-weight:800;font-variant-numeric:tabular-nums;font-size:17px}
.ssv{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;font-weight:700;font-variant-numeric:tabular-nums;font-size:15px;min-width:96px}
.ssv small{font-weight:500;font-size:12px;color:var(--muted)}
.ssrow .chev{color:var(--chev);font-size:22px;flex:0 0 auto}
.sstip{text-align:center;margin-top:14px}
.t-sales .sswon{color:var(--won);font-weight:700}.t-sales .sslost{color:var(--lost);font-weight:700}
.t-sales .tsub{white-space:normal;line-height:1.35}
html[data-theme=light] .sslist{box-shadow:0 1px 2px rgba(0,0,0,.04)}
@media(min-width:760px){.sales{max-width:620px}}

/* ---- reminders ---- */
.emoicon{font-size:20px;line-height:1}
.menu-btn{position:relative}
.menudot{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--danger);color:#fff;font-size:12px;font-weight:800;line-height:20px;text-align:center;border:2px solid var(--bg)}
.menudot[hidden]{display:none}
.mbadge{flex:0 0 auto;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--danger);color:#fff;font-size:13px;font-weight:800;line-height:24px;text-align:center}
.remlist{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.remitem{border:1.5px solid var(--fieldline);border-radius:14px;padding:12px;background:var(--card2);min-width:0}
.rempage .remitem{background:var(--card)}
.remitem.over{border-color:var(--danger)}
.remitem.done{opacity:.6}
.remitem.done .remwhat{text-decoration:line-through}
.remmain{display:flex;flex-direction:column;gap:3px;color:var(--ink);text-decoration:none;position:relative;min-width:0}
a.remmain{padding-right:22px}
a.remmain .chev{position:absolute;right:0;top:50%;transform:translateY(-50%);margin:0}
.remwhen{font-size:14px;font-weight:700;color:var(--muted)}
.remitem.over .remwhen,.overtxt{color:var(--danger)!important;font-weight:800}
.remwhat{font-size:17px;font-weight:700;overflow-wrap:anywhere}
.remjob{font-size:14px;color:var(--muted);overflow-wrap:anywhere}
.remnote{display:block;width:100%;text-align:left;background:none;border:0;padding:6px 0 0;margin:0;color:var(--ink);font:inherit;font-size:15px;cursor:pointer}
.remnote span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere}
.remnote.open span{display:block;-webkit-line-clamp:unset}
.remnote:not(.open)::after{content:'more';color:var(--muted);font-size:13px;font-weight:600}
.rembtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.rb{flex:1 1 auto;min-height:40px;padding:8px 10px;border-radius:10px;border:1.5px solid var(--fieldline);background:var(--card);color:var(--ink);font-size:14px;font-weight:600;text-align:center;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.rb.rbdel{color:var(--danger)}
.remdonetog{margin-top:12px}
.remhead{display:flex;align-items:center;gap:8px;font-size:15px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:22px 0 2px}
.remhead span{font-size:13px;background:var(--card2);color:var(--ink);border-radius:10px;padding:1px 8px}
.remhead.over{color:var(--danger)}
.rempage .empty{text-align:center;margin-top:28px;line-height:1.6}
.remsheet h2{margin:0 0 4px}
.remfor{margin:0 0 4px;font-weight:600}
.remsheet .opt{font-weight:500;color:var(--muted)}
.remsheet textarea{min-height:84px;resize:vertical;font:inherit;font-size:17px}
.remquick{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.chipbtn{min-height:40px;padding:8px 12px;border-radius:20px;border:1.5px solid var(--fieldline);background:var(--card2);color:var(--ink);font-size:14px;font-weight:600;cursor:pointer}
.chipbtn.on{background:var(--y);color:var(--yink);border-color:var(--y)}
input[type=time]{-webkit-appearance:none;appearance:none;display:block;width:100%;border:1.5px solid var(--fieldline);border-radius:12px;padding:12px 14px;background:var(--field);color:var(--ink);min-height:48px;font-size:17px;text-align:left}
input[type=time]::-webkit-date-and-time-value{text-align:left}
.remsheet .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.remsheet .two>div{min-width:0}
#rfWhen{font-weight:600;color:var(--ink);margin-top:10px}
.remok{text-align:left}
.okicon{width:52px;height:52px;border-radius:26px;background:var(--y);color:var(--yink);font-size:28px;font-weight:900;display:flex;align-items:center;justify-content:center;margin:0 auto 10px}
.remok h2{text-align:center}
.remsum{border:1.5px solid var(--fieldline);border-radius:14px;padding:12px;margin:12px 0 14px;display:flex;flex-direction:column;gap:4px;background:var(--card2)}
.remsum .remwhen{color:var(--ink)}
.remnotefull{white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;padding-top:4px}
.remsheet a.primary.block,.remsheet button.block{display:flex;align-items:center;justify-content:center;width:100%;margin-top:10px;text-decoration:none}
.remok .hint.center{text-align:center}
.alerttop{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--muted);margin-bottom:8px}
.alerttop .bell{font-size:26px}
.alerttop .iconx{margin-left:auto;width:40px;height:40px;border-radius:20px;border:1.5px solid var(--fieldline);background:var(--card2);color:var(--ink);font-size:16px;cursor:pointer}
.remalert h2{font-size:22px;overflow-wrap:anywhere}
.remalert .remwhen{margin-top:4px}
.remalert .remnotefull{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}
.remalert .sheetbar>*{flex:1 1 0}
.remcard .remlist{margin-top:4px}

/* ===== New Projects list: the project's own note, small, on the outside of the card ===== */
.lcard{position:relative}
.lcard>.morebtn.onrow.mid{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:38px;height:44px;z-index:2}
#app ul.jobs>li.lcardli{margin-bottom:8px}
#app ul.jobs>li.lcardli .job.lrow{margin-bottom:0}
.job .lnote{font-size:13.5px;line-height:1.35;color:var(--muted);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;white-space:normal}

/* "called" dot: green (called) or red (no answer) on list rows next to the name; small status row inside a contact */
.cdot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#22C55E;margin-left:7px;vertical-align:2px;flex:none}
.cdot.red{background:#EF4444}
.cdot.none{background:transparent;box-shadow:inset 0 0 0 1.5px var(--muted)}
.calledline{margin:10px 0 0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:13px;color:var(--muted)}
.calledline .cs-btn{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:4px 10px;border-radius:999px;border:1px solid var(--fieldline);background:transparent;color:var(--muted);font-size:13px;cursor:pointer}
.calledline .cs-btn .cdot{margin:0}
.calledline .cs-btn[aria-pressed="true"]{color:var(--ink);border-color:var(--ink);background:var(--card2);font-weight:600}
.calledline .cs-when{margin-left:2px;white-space:nowrap}

/* 💬 Chat with Tab (desktop sheet) */
a.menu-item{text-decoration:none;box-sizing:border-box}
.chatsheet .tcnum{font-size:30px;font-weight:800;color:var(--ytext);letter-spacing:.5px;margin:10px 0 4px;user-select:all;-webkit-user-select:all}

/* New Projects: colored status pill + ✏️ Edit on each card (Oct 21, 2026) */
#app ul.jobs>li.lcardli .job.lrow{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}
.lbar{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1px solid var(--line);border-top:1px dashed var(--line);border-radius:0 0 var(--r) var(--r);padding:7px 10px 8px 12px}
.fsel{-webkit-appearance:none;appearance:none;font:inherit;font-size:14px;font-weight:700;line-height:1.1;border:0;border-radius:999px;padding:8px 30px 8px 13px;min-height:36px;width:auto;max-width:62%;cursor:pointer;color:#fff;
  background-repeat:no-repeat;background-position:right 11px center;background-size:10px 6px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.fsel.s-called{background-color:#DCEBFF;color:#1E4E8C;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%231E4E8C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.fsel.s-no_answer{background-color:#FFE0E0;color:#9B1C1C;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239B1C1C' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.fsel.s-emailed{background-color:#FFE8D1;color:#9A4A00;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239A4A00' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.fsel.s-plans_sent{background-color:#DDF5E3;color:#1E6B34;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%231E6B34' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.fsel.s-custom{background-color:#EEE3FF;color:#5B2E91;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235B2E91' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.fsel.s-none{background-color:var(--card2);color:var(--muted);box-shadow:inset 0 0 0 1px var(--fieldline);font-weight:600;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23999' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.fsel option{color:#141414;background:#fff;font-weight:600}
.fsel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
html[data-theme=light] .fsel.s-called,html[data-theme=light] .fsel.s-no_answer,html[data-theme=light] .fsel.s-emailed,html[data-theme=light] .fsel.s-plans_sent,html[data-theme=light] .fsel.s-custom{box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.fsel:disabled{opacity:.6}
.ledit{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;min-height:36px;padding:7px 14px;border-radius:999px;border:1.5px solid var(--y);color:var(--ytext);background:transparent;font-size:14px;font-weight:700;text-decoration:none;white-space:nowrap}
.ledit:active{background:var(--linkbg)}
html[data-theme=light] .ledit{color:#141414;background:var(--y)}
.dstat{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0 4px}
.fsel.big{font-size:16px;min-height:44px;padding:10px 34px 10px 16px;max-width:65%}
.ledit.big{font-size:16px;min-height:44px;padding:9px 18px;background:var(--y);color:var(--yink)}

/* 📎 attach right under each links box in the New/Edit job form */
.linkfield .linkatt{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.linkfield .linkatt .hint{margin:0;font-size:14px}
.attbtn{font-size:15px;padding:8px 14px;min-height:44px;white-space:nowrap;flex:0 0 auto}
.linkfield .files.pending{margin:8px 0 0}
.linkfield .files.pending:empty{display:none}
.files.pending li.had .fsub{color:var(--accent,inherit)}

/* save to iPhone Contacts + phone-number autofill */
.tasugg li{min-height:52px;padding:12px 14px}
.phonematch{display:block;width:100%;margin-top:6px;min-height:46px;padding:10px 12px;border-radius:10px;border:1.5px solid var(--fieldline);background:var(--linkbg);color:var(--ink);font:inherit;font-size:15px;text-align:left;cursor:pointer}
.phonematch[hidden]{display:none}
.vcfcard{border:2px solid var(--fieldline)}
.vcfhead{display:flex;align-items:center;justify-content:space-between;gap:8px}
.vcfhead h2{margin:0}
.vcfx{min-width:44px;min-height:44px;border:0;background:transparent;color:var(--muted);font-size:20px;cursor:pointer}
.vcfbtn{min-height:52px;display:flex;align-items:center;justify-content:center;font-size:17px;text-decoration:none;margin:10px 0 4px}
.vcfsheet .muted,.vcfsheet .hint{margin:8px 0}
