:root{--bg:#f4f5f7;--card:#fff;--ink:#1d2433;--muted:#6b7385;--line:#e4e7ec;--brand:#1f2a44;--accent:#f59e0b;
--ok:#16a34a;--warn:#d97706;--bad:#dc2626;--blue:#2563eb;--radius:14px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);padding-bottom:calc(70px + env(safe-area-inset-bottom))}
a{color:var(--blue);text-decoration:none}
h1{font-size:1.35rem;margin:.3rem 0 .8rem}
h2{font-size:1.05rem;margin:0}
code{background:#eef0f4;padding:1px 5px;border-radius:5px;font-size:.85em}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;background:var(--brand);color:#fff;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top))}
.brand{color:#fff;font-weight:700;font-size:1.05rem;white-space:nowrap}
.topnav{display:none;gap:4px;flex:1}
.topnav a{color:#cfd6e6;padding:6px 10px;border-radius:8px}
.topnav a.on,.topnav a:hover{background:rgba(255,255,255,.12);color:#fff}
.logout{margin-left:auto}
.logout .linkbtn{color:#cfd6e6}
.wrap{max-width:980px;margin:0 auto;padding:12px}
.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;background:#fff;border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;font-size:.72rem;color:var(--muted);padding:7px 0 6px;position:relative}
.bottomnav a span{font-size:1.25rem;line-height:1.2}
.bottomnav a.on{color:var(--brand);font-weight:600}
.dot{position:absolute;top:3px;left:55%;background:var(--blue);color:#fff;border-radius:10px;font-size:.65rem;padding:0 5px;min-width:16px;text-align:center}
.dot.warn,.pill.warn{background:var(--accent);color:#1d2433}
.pill{background:var(--blue);color:#fff;border-radius:10px;font-size:.7rem;padding:1px 6px}
@media(min-width:800px){.topnav{display:flex}.bottomnav{display:none}body{padding-bottom:20px}.wrap{padding:20px}}
.card{background:var(--card);border-radius:var(--radius);box-shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.04);padding:14px;margin-bottom:12px;border:1px solid var(--line)}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.card-sub{background:#f8f9fb;border-radius:10px;padding:10px;margin-bottom:10px}
.count{background:#eef0f4;color:var(--muted);border-radius:10px;font-size:.75rem;padding:1px 8px;margin-left:4px;vertical-align:middle}
.page-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.muted{color:var(--muted)}.small{font-size:.82rem}.strong{font-weight:600;color:var(--ink)}
a.strong{color:var(--ink)}
.empty{color:var(--muted);font-style:italic;margin:.3rem 0}
.flash{background:#e8f1ff;border:1px solid #c9dcff;color:#1e3a8a;padding:10px 12px;border-radius:10px;margin-bottom:12px}
.flash.err{background:#fdecec;border-color:#f8c7c7;color:#991b1b}
.flash.note{background:#fff7e6;border-color:#fde3a7;color:#7c4a03}
.flash.sync{background:#fff4e0;border-color:#fcd9a0;color:#7c4a03}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:9px 14px;font-size:.95rem;font-weight:500;cursor:pointer;min-height:40px;font-family:inherit}
.btn.sm{padding:5px 10px;min-height:32px;font-size:.82rem}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.ok{background:#e9f8ef;border-color:#bfe8cf;color:#166534}
.btn.danger{background:#fdecec;border-color:#f8c7c7;color:#991b1b}
.btn.block{width:100%}
.linkbtn{background:none;border:0;color:var(--blue);cursor:pointer;padding:0;font:inherit}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.back{display:inline-block;margin:2px 0 6px;font-size:.9rem}
.badge{display:inline-block;font-size:.72rem;font-weight:600;padding:2px 8px;border-radius:999px;background:#eef0f4;color:#374151;white-space:nowrap;vertical-align:middle;margin:1px 0}
.badge.plain{background:#f3f4f6;color:var(--muted);font-weight:500}
.src-84sales{background:#fee2e2;color:#991b1b}.src-supplypro{background:#dbeafe;color:#1e40af}.src-manual{background:#f3f4f6;color:#4b5563}
.badge.sync{background:#fff1d6;color:#92400e;border:1px dashed #f59e0b}
.badge.sync.failed{background:#fdecec;color:#991b1b;border-color:#dc2626}
.badge.new{background:#dcfce7;color:#166534}
.badge.changed{background:#ede9fe;color:#5b21b6}
.badge.overdue{background:#fdecec;color:#991b1b}.badge.due{background:#eef2ff;color:#3730a3}
.badge.qc{background:#fef3c7;color:#92400e}.badge.co{background:#e0f2fe;color:#075985}.badge.kind{background:#f1f5f9;color:#334155}
.st-open,.st-new,.st-pending,.st-active,.st-scheduled{background:#e0f2fe;color:#075985}
.st-closed,.st-done,.st-complete,.st-pushed,.st-ok,.st-approved,.st-confirmed{background:#dcfce7;color:#166534}
.st-failed,.st-error,.st-rejected,.st-cancelled{background:#fdecec;color:#991b1b}
.st-pending-approval,.st-on-hold,.st-partial,.st-in-progress,.st-new-start{background:#fff1d6;color:#92400e}
.st-skipped{background:#f3f4f6;color:#6b7280}
.overdue-t{color:var(--bad);font-weight:600}
.list{list-style:none;margin:0;padding:0}
.row{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line)}
.list>.row:first-child{border-top:0}
.card.row{border-top:1px solid var(--line);padding:12px 14px}
.row-main{flex:1;min-width:0;overflow-wrap:anywhere}
.row-side{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;max-width:40%}
.row.flag{background:linear-gradient(90deg,#f5f3ff 0,#fff 60%);margin:0 -14px;padding-left:14px;padding-right:14px;border-left:3px solid #7c3aed}
.row.dim{opacity:.55}
.delta{font-size:.85rem;margin-top:2px}
.datebox{width:46px;flex-shrink:0;text-align:center;background:#f1f5f9;border-radius:10px;padding:4px 0;line-height:1.1}
.datebox b{display:block;font-size:1.15rem}.datebox span{font-size:.7rem;color:var(--muted);text-transform:uppercase}
.datebox.today{background:var(--accent);}.datebox.today span{color:#1d2433}
.syncstrip{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:2px}
.card.mini{padding:12px;margin-bottom:10px}.card.mini.link{color:inherit;display:block}
.mini-h{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.big{font-size:1.2rem;font-weight:700;margin:4px 0 0}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.stat{background:var(--brand);color:#fff;border-radius:12px;padding:10px 6px;text-align:center}
.stat b{display:block;font-size:1.4rem}.stat span{font-size:.72rem;color:#cfd6e6}
.more{display:block;text-align:center;padding-top:8px}
.filters{display:flex;gap:8px;flex-wrap:wrap}
.filters .grow{flex:1 1 100%}
@media(min-width:800px){.filters .grow{flex:1 1 240px}}
input,select,textarea{font:inherit;font-size:16px;border:1px solid #d0d5dd;border-radius:10px;padding:9px 11px;background:#fff;color:var(--ink);width:100%;min-height:42px}
.filters select,.filters .btn{flex:1 1 auto;width:auto}
textarea{min-height:80px}
.form{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:700px){.form{grid-template-columns:1fr 1fr}.form .full{grid-column:1/-1}}
.form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:600;color:#374151}
.req{color:var(--bad)}
.danger-zone{margin-top:6px;text-align:right}
.joblist{display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:700px){.joblist{grid-template-columns:1fr 1fr}}
.jobcard{color:inherit;display:block;margin:0}
.jc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.jc-top h1{margin:0 0 4px}
.jc-badges{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px}
.jobhead .addr{display:block;margin:2px 0 8px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:8px 0;font-size:.9rem}
.kv dt{color:var(--muted)}.kv dd{margin:0}
.notes{background:#f8f9fb;border-radius:8px;padding:8px 10px;white-space:pre-wrap;font-size:.9rem}
.jumpnav{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none;position:sticky;top:48px;z-index:10;background:var(--bg)}
.jumpnav a{flex-shrink:0;background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:.85rem;color:var(--ink)}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}
.thumbs figure{margin:0}
.thumbs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;display:block;background:#eee}
.thumbs figcaption{font-size:.75rem;margin-top:3px;overflow-wrap:anywhere}
.thumbs.sm{grid-template-columns:repeat(auto-fill,64px);margin-top:6px}
.upl{display:flex;flex-direction:column;gap:8px}
.upl .btn{flex:1}
.inline-upload{margin-top:6px;font-size:.85rem}
.inline-upload summary{cursor:pointer;color:var(--blue)}
.inline-upload .upl{flex-direction:row;margin-top:6px}
.quickstatus{margin-top:6px}.quickstatus select{width:auto;min-height:34px;padding:4px 8px;font-size:14px}
.docicon{width:44px;height:44px;border-radius:8px;background:#fee2e2;color:#991b1b;font-weight:700;font-size:.75rem;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}
.docicon img{width:100%;height:100%;object-fit:cover}
.tabs{display:flex;gap:6px;overflow-x:auto;margin-bottom:10px}
.tabs a{flex-shrink:0;padding:6px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--ink);font-size:.85rem}
.tabs a.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px;background:linear-gradient(160deg,#1f2a44,#34466e)}
.card.login{width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px;padding:22px}
.card.login h1{margin:0}
.card.login label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:.9rem}
/* v4: bots, stale warning, uploader, severity */
.flash.stale{background:#fdecec;border-color:#f8c7c7;color:#991b1b}
.card.mini.stale{border-color:#f8c7c7;background:#fff8f8}
.badge.claimed{background:#e0e7ff;color:#3730a3}
.badge.sev-critical{background:#dc2626;color:#fff}.badge.sev-structural{background:#f97316;color:#fff}.badge.sev-standard{background:#e5e7eb;color:#374151}
.orderline{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:3px}
.raa{margin-top:2px}
[hidden]{display:none!important}
.upl-status{background:#f1f5f9;border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:6px}
.upl-status .btn{flex:0 0 auto;margin-right:6px}
.upl-bar{height:8px;border-radius:6px;background:#e2e8f0;overflow:hidden}
.upl-bar span{display:block;height:100%;background:var(--brand);transition:width .2s}
.shrink{display:flex;gap:6px;align-items:center}.shrink input{width:auto;min-height:0}

/* v4.1 – SupplyPro classifier / reschedule */
.badge.tc{font-size:.72rem;vertical-align:middle}
.badge.tc-framing{background:#fdebd3;color:#8a4b08}
.badge.tc-milestone{background:#e7efe0;color:#3f6212}
.badge.tc-other{background:#eef0f3;color:#5b6472}
.badge.tc-review{background:#fff4c2;color:#7a5d00}
.resched{background:#fde8e8;color:#9b1c1c;border-radius:6px;padding:3px 7px;margin:3px 0;font-weight:600}
.unmapped-box{border:2px solid #d97706;background:#fff7ed;border-radius:10px;padding:10px 12px;margin:8px 0}
.unmapped-box code{background:#fff;padding:1px 4px;border-radius:4px}
.flash.ok{background:#eaf7ee;border-color:#bfe5c9;color:#166534}

/* v5 – field features: big touch targets, high contrast (gloves / sunlight) */
:root{--muted:#4b5563;--line:#d5dae1}
.topnav{flex-wrap:wrap}
.btn.big,.bigbtn{min-height:52px;font-size:1.02rem;font-weight:700;padding:12px 16px;border-radius:12px}
.btn.big.primary,.bigbtn.primary{background:#111827;border-color:#111827;color:#fff}
.btn.warnbtn{background:#fff7ed;border-color:#f59e0b;color:#7c2d12;font-weight:700}
.btn.okbtn{background:#15803d;border-color:#15803d;color:#fff;font-weight:700}
.btn.badbtn{background:#b91c1c;border-color:#b91c1c;color:#fff;font-weight:700}
.form.field label{font-size:.95rem;color:#111827}
.form.field input,.form.field select,.form.field textarea{min-height:50px;border:2px solid #9ca3af;font-size:17px}
.form.field input:focus,.form.field select:focus,.form.field textarea:focus{border-color:#111827;outline:3px solid #fbbf24}
.bigfile{padding:12px;background:#f9fafb}
.checks{display:flex;flex-direction:column;gap:6px;font-weight:500}
.check{flex-direction:row!important;align-items:center;gap:10px!important;font-size:1rem!important;padding:8px 10px;border:2px solid var(--line);border-radius:10px;background:#fff}
.check input{width:26px;height:26px;min-height:0;flex-shrink:0}
.daytabs{display:flex;gap:8px;margin:2px 0 10px}
.daytabs a{flex:1;text-align:center;padding:10px;border-radius:12px;background:#fff;border:2px solid var(--line);font-weight:700;color:#111827}
.daytabs a.on{background:#111827;color:#fff;border-color:#111827}
.dayhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:14px 2px 8px}
.dayhead h2{font-size:1.25rem}
.lotcard{padding:0;overflow:hidden;border:2px solid #cbd2db}
.lotcard.insp{border-color:#b45309}
.lot-h{padding:12px 14px 8px;display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.lot-h h3{margin:0;font-size:1.18rem;line-height:1.25}
.lot-h h3 a{color:#111827}
.lot-sub{font-size:.9rem;color:var(--muted);margin-top:2px}
.lot-items{list-style:none;margin:0;padding:0 14px}
.lot-items li{display:flex;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.lot-items .ttl{font-weight:700;font-size:1.02rem;color:#111827}
.lot-items .meta{font-size:.88rem;color:var(--muted)}
.kicon{font-size:1.4rem;width:34px;text-align:center;flex-shrink:0}
.who{display:inline-flex;align-items:center;gap:4px;background:#eef2ff;color:#1e3a8a;border-radius:8px;padding:2px 8px;font-weight:700;font-size:.85rem}
.navrow{display:flex;gap:8px;padding:8px 14px}
.navrow .btn{flex:1;min-height:50px;font-weight:700}
.btn.nav{background:#1d4ed8;border-color:#1d4ed8;color:#fff}
.qa{display:grid;grid-template-columns:repeat(4,1fr);border-top:2px solid var(--line)}
.qa>*{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:66px;font-size:.8rem;font-weight:700;color:#111827;background:#fff;border:0;border-left:1px solid var(--line);font-family:inherit;cursor:pointer;position:relative;padding:4px}
.qa>*:first-child{border-left:0}
.qa span.i{font-size:1.5rem;line-height:1}
.qa input[type=file]{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.qa>*:active{background:#fef3c7}
.notebox{padding:10px 14px;border-top:1px solid var(--line);background:#f9fafb}
.notebox textarea{min-height:70px;border:2px solid #9ca3af}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:4px 10px;font-size:.85rem;font-weight:700;background:#f3f4f6;color:#111827;border:1px solid var(--line)}
.chip.warn{background:#fef3c7;border-color:#f59e0b;color:#7c2d12}
.chip.bad{background:#fee2e2;border-color:#ef4444;color:#7f1d1d}
.chip.ok{background:#dcfce7;border-color:#22c55e;color:#14532d}
.wx{font-size:.88rem;font-weight:600;color:#1f2937}
.wx.risk{color:#9a3412}
.alertbar{border-radius:12px;padding:10px 12px;margin-bottom:10px;font-weight:600;border:2px solid}
.alertbar.bad{background:#fef2f2;border-color:#dc2626;color:#7f1d1d}
.alertbar.warn{background:#fffbeb;border-color:#d97706;color:#78350f}
.statrow{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.statrow a{background:#111827;color:#fff;border-radius:12px;padding:10px 4px;text-align:center;font-size:.75rem;font-weight:600}
.statrow a b{display:block;font-size:1.45rem}
.statrow a.hot{background:#b91c1c}
/* checklists */
.ck-item{padding:12px 0;border-top:1px solid var(--line)}
.ck-text{font-weight:700;font-size:1.02rem;color:#111827;margin-bottom:8px}
.seg{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.seg label{position:relative}
.seg input{position:absolute;opacity:0;width:1px;height:1px}
.seg span{display:flex;align-items:center;justify-content:center;min-height:54px;border:2px solid #9ca3af;border-radius:12px;font-weight:800;font-size:1.05rem;background:#fff;color:#111827;cursor:pointer;user-select:none}
.seg input:focus-visible+span{outline:3px solid #fbbf24}
.seg .p input:checked+span{background:#15803d;border-color:#15803d;color:#fff}
.seg .f input:checked+span{background:#b91c1c;border-color:#b91c1c;color:#fff}
.seg .n input:checked+span{background:#4b5563;border-color:#4b5563;color:#fff}
.ck-extra{display:flex;gap:8px;margin-top:8px;align-items:stretch}
.ck-extra input[type=text]{flex:1;min-height:48px;border:2px solid #cbd2db}
.ck-cam{position:relative;min-width:56px;display:flex;align-items:center;justify-content:center;border:2px solid #9ca3af;border-radius:12px;font-size:1.4rem;background:#fff;cursor:pointer}
.ck-cam input{position:absolute;inset:0;opacity:0;width:100%}
.ck-status{font-size:.82rem;font-weight:700;margin-top:4px;min-height:1em}
.ck-status.saved{color:#15803d}.ck-status.queued{color:#b45309}.ck-status.err{color:#b91c1c}
.ck-section{margin-top:14px;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:#374151;font-weight:800}
.progress{height:12px;border-radius:8px;background:#e5e7eb;overflow:hidden;display:flex}
.progress i{display:block;height:100%}
.progress .p{background:#15803d}.progress .f{background:#b91c1c}.progress .n{background:#6b7280}
.fpy-opts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.fpy-opts span{font-size:.95rem}
.badge.pr-high{background:#b91c1c;color:#fff}.badge.pr-normal{background:#e5e7eb;color:#111827}.badge.pr-low{background:#f3f4f6;color:#4b5563}
.st-fixed{background:#fef3c7;color:#7c2d12}.st-verified,.st-pass,.st-yes,.st-po-received{background:#dcfce7;color:#14532d}
.st-fail,.st-no{background:#fee2e2;color:#7f1d1d}.st-partial,.st-submitted,.st-draft{background:#fff1d6;color:#92400e}
.st-not-inspected{background:#e5e7eb;color:#374151}
.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.photo-pair h3{font-size:.9rem;margin:0 0 6px}
.money{font-variant-numeric:tabular-nums}
.kv.big dd{font-weight:700}
.sticky-actions{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));background:var(--bg);padding:8px 0;z-index:5}
@media(min-width:800px){.sticky-actions{bottom:0}}
/* offline queue badge */
.jt-queue{position:fixed;right:10px;bottom:calc(68px + env(safe-area-inset-bottom));z-index:30;background:#b45309;color:#fff;border:0;border-radius:999px;padding:10px 14px;font-weight:800;font-size:.9rem;box-shadow:0 4px 14px rgba(0,0,0,.25);font-family:inherit}
.jt-queue.offline{background:#7f1d1d}
@media(min-width:800px){.jt-queue{bottom:16px}}
.jt-queue-panel{position:fixed;left:10px;right:10px;bottom:calc(118px + env(safe-area-inset-bottom));z-index:31;background:#fff;border:2px solid #111827;border-radius:14px;padding:12px;max-height:55vh;overflow:auto;box-shadow:0 8px 30px rgba(0,0,0,.3)}
.jt-queue-panel li{padding:6px 0;border-top:1px solid var(--line);font-size:.9rem}
.jt-toast{position:fixed;left:50%;transform:translateX(-50%);top:calc(64px + env(safe-area-inset-top));z-index:40;background:#111827;color:#fff;padding:10px 16px;border-radius:12px;font-weight:700;max-width:92vw;box-shadow:0 6px 20px rgba(0,0,0,.3)}
dialog.confirm{border:3px solid #111827;border-radius:16px;padding:18px;max-width:440px;width:92vw}
dialog.confirm::backdrop{background:rgba(0,0,0,.55)}
dialog.confirm h2{font-size:1.15rem;margin-bottom:8px}
.side2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
.side2>div{border-radius:12px;padding:10px;border:2px solid var(--line);background:#fff}
.side2 .lbl{font-size:.75rem;font-weight:800;text-transform:uppercase;color:#374151}
.side2 .dt{font-size:1.15rem;font-weight:800;color:#111827}
.side2 .builder{border-color:#2563eb;background:#eff6ff}
.side2 .sales{border-color:#dc2626;background:#fff5f5}
.delta-chip{font-weight:800;color:#9a3412}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tiles a{display:flex;flex-direction:column;gap:4px;background:#fff;border:2px solid var(--line);border-radius:14px;padding:14px;color:#111827;font-weight:700;min-height:84px;position:relative}
.tiles a span.i{font-size:1.6rem}
.tiles a small{font-weight:500;color:var(--muted)}
.tiles a b.dot{top:8px;left:auto;right:8px}
.rec{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rec .btn.recording{background:#b91c1c;color:#fff;border-color:#b91c1c;animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.7}}
audio{width:100%;max-width:420px}
.ins-expired{color:#b91c1c;font-weight:800}.ins-soon{color:#b45309;font-weight:800}.ins-ok{color:#15803d}
.offline-chip{display:none}
body.is-offline .offline-chip{display:inline-flex}
@media print{.topbar,.bottomnav,.jt-queue,.noprint,.flash{display:none!important}body{background:#fff;padding:0}.card{box-shadow:none;border:1px solid #999;break-inside:avoid}.wrap{max-width:none;padding:0}}

/* v6 ops */
.seg5{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:8px 0}
.seg5 .btn{font-size:.72rem;padding:10px 4px;min-height:56px}
.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.kpi{background:#fff;border:2px solid var(--line);border-radius:14px;padding:14px;text-decoration:none;color:inherit;display:block}
.kpi b{display:block;font-size:1.8rem;line-height:1.1}
.kpi span{display:block;font-size:.85rem;color:#4b5563;margin-top:4px;font-weight:600}
.kpi.good b{color:#047857}.kpi.bad b{color:#b91c1c}.kpi.warn b{color:#b45309}
@media (min-width:700px){.kpi-grid{grid-template-columns:repeat(4,1fr)}.seg5{grid-template-columns:repeat(5,minmax(0,1fr))}}
.sign-box{border:2px dashed #94a3b8;border-radius:12px;padding:12px;background:#f8fafc}


/* v2 – phases, calendar, clash, redlines, write-back */
.phasechips{flex-wrap:wrap;gap:6px;margin:8px 0 12px;display:flex}
.chip.phase-upcoming,.phase-upcoming .chip.phase-upcoming{background:#e5e7eb;color:#374151}
.chip.phase-preframe,.phase-preframe .chip.phase-preframe{background:#fef3c7;color:#92400e}
.chip.phase-framing,.phase-framing .chip.phase-framing{background:#ffedd5;color:#9a3412}
.chip.phase-dryin,.phase-dryin .chip.phase-dryin{background:#dbeafe;color:#1e40af}
.chip.phase-ready,.phase-ready .chip.phase-ready{background:#d1fae5;color:#065f46}
.chip.phase-complete,.phase-complete .chip.phase-complete{background:#f3f4f6;color:#6b7280}
.chip.on{outline:2px solid #1f2a44}
.chip.clash,.badge.clash{background:#fce7f3;color:#9d174d}
.chip.sev-critical,.sev-critical{background:#fee2e2;color:#991b1b}
.chip.sev-high{background:#ffedd5;color:#9a3412}
.chip.sev-normal{background:#e0e7ff;color:#3730a3}
.chip.sev-low{background:#f3f4f6;color:#4b5563}
.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-dow{font-size:.7rem;font-weight:800;text-align:center;color:#6b7280;padding:4px 0}
.cal-day{background:#fff;border:1px solid var(--line);border-radius:10px;min-height:88px;padding:4px;overflow:hidden}
.cal-day.out{opacity:.45}.cal-day.today{border-color:#2563eb;box-shadow:0 0 0 2px #bfdbfe}
.cal-num{font-size:.75rem;font-weight:800;color:#374151;margin-bottom:2px}
.cal-pill{display:block;font-size:.65rem;line-height:1.2;border-radius:6px;padding:3px 4px;margin:2px 0;color:#111;text-decoration:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border-left:3px solid #94a3b8;background:#f8fafc}
.cal-pill.block{white-space:normal;padding:8px;margin:4px 0}
.cal-pill.src-84sales{border-left-color:#dc2626}.cal-pill.src-supplypro{border-left-color:#2563eb}
.cal-pill.st-framing{background:#ffedd5}.cal-pill.st-ready{background:#d1fae5}
.cal-pill.st-warn{background:#fef3c7}.cal-pill.st-done{background:#f3f4f6;opacity:.7}
.cal-pill.st-sched{background:#eff6ff}
.cal-pill.clash{box-shadow:inset 0 0 0 1px #db2777}
.cal-more{font-size:.65rem;color:#6b7280;padding:2px 4px}
.clashcard.sev-1{border-left:4px solid #b91c1c}.clashcard.sev-2{border-left:4px solid #c2410c}
.clashcard.sev-3{border-left:4px solid #a16207}.clashcard.sev-4{border-left:4px solid #64748b}
.clash-cols{display:grid;gap:4px;margin-top:6px;font-size:.8rem}
.clash-cols b{color:#374151}
.card.unseen{border-color:#f59e0b;background:#fffbeb}
.alertbar.ok{background:#ecfdf5;color:#065f46;border:1px solid #6ee7b7;border-radius:10px;padding:10px;margin:8px 0}
@media (max-width:420px){.cal-day{min-height:72px}.cal-pill b{display:block}}

/* Field navigation and focused phone screens. */
.lot-tools{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0 14px}
.lot-tools a{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 8px;text-align:center;font-weight:700;min-height:48px}
.field-actions .btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.field-detail summary,.mobile-section summary{min-height:44px;padding:10px 0;font-weight:700;cursor:pointer}
.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.photo-grid figure{margin:0;min-width:0}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px}
.qc-description{font-size:1.04rem;line-height:1.55}.lot-mobile-meta{display:none}
@media(max-width:799px){
 .bottomnav a{font-size:.8rem;min-height:62px;padding:9px 0;font-weight:600}
 .bottomnav a.on{background:#eff6ff}.bottomnav a span{font-size:1.35rem}
 .lot-tools{grid-template-columns:repeat(2,1fr)}
 .filters{display:grid!important;grid-template-columns:1fr;gap:10px}
 .filters input,.filters select,.filters button{width:100%;min-width:0;min-height:46px;font-size:16px}
 .photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .lot-mobile-meta{display:block;font-size:.95rem;color:var(--muted);margin:8px 0}
 .phasechips{flex-wrap:nowrap;overflow-x:auto;padding-bottom:10px}.phasechips a{flex-shrink:0;min-height:42px}
 .jumpnav{top:48px;gap:8px}.jumpnav a{padding:10px 14px;min-height:42px}
 .cal-pill{font-size:.95rem!important;padding:10px!important;line-height:1.5}
 .cal-grid{overflow-x:auto;grid-template-columns:repeat(7,minmax(85px,1fr))}
 .kv dd,.row-main,.lot-sub{overflow-wrap:anywhere}
 .page-h{flex-wrap:wrap}.mobile-section{width:100%}.mobile-section>.card-h{margin-top:8px}
 .mobile-section summary{font-size:1rem;border-bottom:1px solid var(--line)}
 .field-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
 .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
 input,select,textarea{font-size:16px}
}

@media(max-width:799px){.jc-top{flex-wrap:wrap;gap:6px}.jc-top h1{flex-basis:100%;font-size:1.15rem!important}.jc-top .chip{max-width:100%;white-space:normal}}

.document-lot{display:flex;justify-content:space-between;gap:12px;color:var(--ink);min-height:56px}.document-lot span{color:var(--blue)}.field-note{border-top:1px solid var(--line);padding:12px 0}.field-note p{white-space:pre-wrap}.field-note:first-of-type{margin-top:12px}
.lot-area-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.lot-area-tile{display:flex;flex-direction:column;gap:7px;min-height:124px;color:var(--ink);margin:0;overflow-wrap:anywhere}.area-icon{font-size:1.7rem}.lot-area-tile small{color:var(--muted);line-height:1.4}.lot-identity h1{font-size:1.3rem;margin:0;overflow-wrap:anywhere}.lot-identity p{margin:8px 0}.source-text{white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:799px){.lot-area-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.lot-area-tile{padding:14px;min-height:130px}.lot-area-tile b{font-size:1rem}}
.calendar-events{display:grid;gap:12px}.calendar-event{margin:0;padding:18px;border-left:5px solid var(--blue)}.calendar-event h3{font-size:1.1rem;margin:12px 0;overflow-wrap:anywhere}.calendar-event.src-supplypro{border-left-color:#9c5b14}.sp-date-grid{display:grid;grid-template-columns:128px 1fr;gap:8px;margin:12px 0}.sp-date-grid dt{font-weight:600}.sp-date-grid dd{margin:0;overflow-wrap:anywhere}.cal-more{display:block;padding:10px;font-weight:600}.cal-grid .cal-pill{white-space:normal;font-size:.85rem;line-height:1.4}.cal-grid .cal-day{min-height:170px}
.calendar-page .wrap{max-width:none;width:100%;padding:20px 28px}.calendar-page .cal-grid{gap:10px}.calendar-page .cal-day{min-height:210px}.calendar-page .cal-pill{padding:9px;font-size:.95rem}.calendar-page .calendar-events{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr))}.task-dialog{width:min(850px,calc(100vw - 32px));max-width:850px;max-height:calc(100dvh - 40px);border:0;border-radius:18px;padding:24px;overflow:auto;box-shadow:0 20px 80px #0005}.task-dialog::backdrop{background:#15223699}.task-dialog-close{float:right}.task-menu header{padding-right:72px}.task-menu h2{overflow-wrap:anywhere}.task-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.task-actions .btn{flex:1 1 130px}.task-menu section{margin-top:20px}.task-menu .photo-grid figure{margin:0}.task-menu .photo-grid img{max-width:100%}.task-delivery{border-top:1px solid #ddd;padding-top:16px}.task-dialog [hidden]{display:none!important}
@media(max-width:799px){.calendar-page .wrap{padding:12px}.task-dialog{padding:16px;width:calc(100vw - 20px);max-height:calc(100dvh - 24px)}.task-actions{gap:8px}.task-actions .btn{flex-basis:44%}.task-dialog-close{float:none;margin-bottom:12px}.task-menu header{padding-right:0}}
/* Compact portal freshness controls shared by phone and desktop. */
.portal-mini{max-width:1280px;margin:8px auto;padding:8px 12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-bottom:1px solid #d9e1ea;font-size:12px}
.portal-mini-sources{display:flex;flex:1;gap:16px;min-width:0;flex-wrap:wrap}
.portal-mini-sources>div{display:flex;flex-wrap:wrap;gap:4px 8px;min-width:0;flex:1}
.portal-mini-sources small{flex-basis:100%;color:#536176}
.portal-mini form{margin:0}.portal-mini details{flex-basis:100%}.portal-mini summary{cursor:pointer}
.portal-mini [data-source-state]{color:#725412}.portal-mini [data-source-state="ok"]{color:#176342}
.portal-mini [data-login-state="needs_login"]{color:#a12828;font-weight:600}.portal-mini [data-login-state="ok"]{color:#176342}
@media(max-width:600px){.portal-mini{margin:4px 0;padding:6px 10px}.portal-mini-sources{gap:6px}.portal-mini-sources>div{flex-basis:45%}.portal-mini form{flex-basis:100%}.portal-mini form button{width:100%;min-height:42px}}
/* Date grids scroll within their own region on a phone. */
.comparison-scroll{max-width:100%;overflow-x:auto;margin:12px 0;background:#fff;border-radius:10px;border:1px solid var(--line)}
.date-comparison{width:100%;min-width:940px;border-collapse:collapse;font-size:13px}
.date-comparison th,.date-comparison td{padding:10px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.date-comparison th{background:#edf1f6}.date-comparison small{display:block;color:var(--muted);margin-top:4px}

/* Keep filter controls available without pushing field work below the fold. */
.compact-filters { padding: 0; }
.compact-filters > summary { cursor: pointer; padding: 12px 14px; min-height: 44px; box-sizing: border-box; }
.compact-filters > summary b { margin-right: 8px; }
.compact-filters .filter-summary { font-size: .78rem; color: var(--muted, #526078); }
.compact-filters > .filters, .compact-filters > form { margin: 0; padding: 12px 14px; border-top: 1px solid #dce2ea; }
@media (max-width: 600px) {
  .compact-filters > summary { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

.model-variant { border-top: 1px solid #dce2ea; padding: 10px 0; }
.model-variant > summary { cursor: pointer; min-height: 32px; line-height: 1.6; }
.model-variant .row-main { min-width: 0; overflow-wrap: anywhere; }
