/* SUN Controller Dashboard - mobile first. Component styles taken from design mockup-v2. */
*{box-sizing:border-box}
body{margin:0;background:#F8FAFC;font:14px/1.3 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#0F172A}
#app{max-width:520px;margin:0 auto;min-height:100vh;background:#F8FAFC}
[hidden]{display:none!important}
*{box-sizing:border-box}
body{margin:0;background:#E5E7EB;font:14px/1.3 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#0F172A}
.phone{width:390px;min-height:844px;background:#F8FAFC;border:1px solid #CBD5E1;border-radius:0;overflow:hidden;position:relative}
.exbar{background:repeating-linear-gradient(135deg,#FDB93A 0 10px,#F59E0B 10px 20px);color:#111;font-weight:800;font-size:11px;letter-spacing:.06em;text-align:center;padding:4px}
.top{display:flex;justify-content:space-between;align-items:center;padding:8px 14px 6px;background:#fff}
.logo{height:34px}
.who{font-size:13px;color:#334155;border:1px solid #CBD5E1;border-radius:14px;padding:3px 10px}
.banner{padding:6px 12px;color:#fff;display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px}
.banner.ok{background:#14532D}
.banner.bad{background:#991B1B}
.b1{font-weight:700;font-size:12px;line-height:1.25}
.b2{font-size:12px;line-height:1.25;opacity:.95;display:inline-flex;align-items:center;gap:0}
.banner .note{flex:1 1 100%;margin-top:2px}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.dot.g{background:#4ADE80}
.dot.r{background:#FCA5A5}
.sec{padding:10px 12px 0}
.sec h2{font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:#334155;margin:0 0 6px;display:flex;justify-content:space-between;align-items:baseline}
.asof{font-size:10.5px;text-transform:none;letter-spacing:0;color:#991B1B;font-weight:700}
.per{font-size:11px;color:#64748B;margin:-2px 0 6px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.card{position:relative;display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid #CBD5E1;border-radius:10px;padding:8px 10px 8px}
.lbl{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#64748B}
.val{font-size:23px;font-weight:800;margin:2px 0 1px;letter-spacing:-.01em}
.sub{font-size:11px;color:#64748B}
.chev{position:absolute;right:9px;top:8px;color:#94A3B8;font-size:16px}
.wl{border-color:#FDB93A;border-width:2px}
.card.stale{background:#F1F5F9;border-style:dashed}
.card.stale .val{color:#64748B}
.list{background:#fff;border:1px solid #CBD5E1;border-radius:10px;overflow:hidden}
.row{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-bottom:1px solid #E2E8F0;text-decoration:none;color:inherit}
.row:last-child{border:0}
.rv{font-size:18px;font-weight:800}
.unav{background:#FFFBEB}
.uv{text-align:right}
.uv b{display:block;color:#92400E;font-size:15px}
.uv span{font-size:10.5px;color:#92400E}
.pill{font-size:9px;font-weight:700;background:#FEF3C7;color:#92400E;border-radius:8px;padding:1px 6px;margin-left:6px;letter-spacing:0;text-transform:none}
.pill.ex{background:#E0E7FF;color:#3730A3}
.pill.ph{background:#E2E8F0;color:#475569;font-size:10px}
.att{background:#fff;border:1px solid #CBD5E1;border-radius:10px;padding:10px}
.att.none{font-weight:700;color:#14532D;background:#F0FDF4;border-color:#BBF7D0}
.ai{display:flex;gap:8px;padding:6px 0;border-bottom:1px solid #F1F5F9}
.ai:last-of-type{border:0}
.ai b{font-size:13px}
.sev{flex:none;font-size:9px;font-weight:800;background:#FEF3C7;color:#92400E;border-radius:6px;padding:3px 5px;height:18px;margin-top:1px}
.sev.red{background:#FEE2E2;color:#991B1B}
.sev.gray{background:#E2E8F0;color:#475569}
.more{font-size:11px;color:#64748B;padding-top:4px}
.p2{border:1.5px dashed #94A3B8;border-radius:10px;padding:9px 10px;background:#F8FAFC}
.p2h{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}
.foot{font-size:10px;color:#64748B;text-align:center;padding:12px 14px 16px}
.grp{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#475569;background:#F1F5F9;padding:5px 10px;border-bottom:1px solid #E2E8F0}
.grp u{text-decoration:none;color:#0F172A;border-bottom:2px solid #FDB93A}
.tie{font-size:10px;color:#14532D;margin-top:2px}
.why{font-size:11px;color:#334155;background:#F8FAFC;border-left:3px solid #FDB93A;padding:3px 6px;margin-top:4px;border-radius:0 4px 4px 0}
.why b{color:#0F172A}
.row .sub{line-height:1.3}
.banner.warn{background:#92400E}
.dot.a{background:#FCD34D}
.note{font-size:11.5px;margin-top:5px;background:rgba(255,255,255,.18);padding:4px 6px;border-radius:5px}
.who{display:flex;gap:8px;align-items:center}
.who button,.btn{font:inherit;font-size:12px;border:1px solid #94A3B8;background:#fff;color:#0F172A;border-radius:14px;padding:4px 12px;min-height:32px;cursor:pointer}
.sec.stale .asof,.asof{color:#991B1B}
.card.unav{background:#FFFBEB;border-color:#FCD34D}.card.unav .val{color:#92400E;font-size:18px}
.rv{font-size:18px;font-weight:800}
.dtl{font-size:10.5px;color:#92400E;margin-top:2px}
.err{color:#991B1B;font-size:13px;margin:8px 0;min-height:18px}
.formwrap{padding:24px 18px}.formwrap h1{font-size:18px;margin:10px 0 4px}.formwrap p{color:#475569;font-size:13px}
.formwrap label{display:block;font-size:12px;font-weight:700;color:#334155;margin:12px 0 4px}
.formwrap input{width:100%;font:inherit;font-size:16px;padding:10px;border:1px solid #94A3B8;border-radius:8px;background:#fff}
.formwrap .btn.primary{width:100%;margin-top:14px;background:#0F172A;color:#fff;border-radius:10px;font-size:15px;padding:12px;min-height:44px}
.conn{padding:30px 18px;text-align:center}.conn h2{color:#991B1B}
.exbar{font-weight:800}

.rec{background:#fff;border:1px solid #CBD5E1;border-radius:10px;padding:4px 10px 8px}
.rec.ok{border-color:#86EFAC}.rec.bad{border-color:#FCA5A5;background:#FEF2F2}.rec.wh{background:#FFFBEB;border-color:#FCD34D}
.rl{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:6px 0;border-bottom:1px solid #F1F5F9}
.rn{font-size:12.5px;font-weight:700;color:#0F172A}
.rv2{font-size:14px;font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}
.rl.tot{border-top:2px solid #0F172A;border-bottom:0;margin-top:2px}
.rl.dif{border-bottom:0;padding-top:0}.rl.dif .rn,.rl.dif .rv2{font-size:12px;font-weight:700;color:#475569}
.rl.ux .rn,.rl.ux .rv2{color:#991B1B}
.rres{font-size:12px;font-weight:800;color:#14532D;margin-top:4px}
.rec.bad .rres{color:#991B1B}.rec.wh .rres{color:#92400E}
.rsrc{margin-top:4px;font-size:10px}

label.chk{display:flex;align-items:flex-start;gap:.5rem;margin:12px 0;font:400 14px/1.35 system-ui,sans-serif;color:#334}
label.chk input{margin-top:.2rem;flex:0 0 auto}


/* Mark 2026-10-05: NOI WIP note + compact A/P reconciliation lines */
.card .note{margin-top:1px;color:#92400E}
.card .note span{display:inline-block;white-space:nowrap}
.apn{padding:6px 10px 8px}
.apl{font-size:11px;line-height:1.35}
.apl.ok{color:#15803D;font-weight:600}
.apl.warn{color:#B45309;font-weight:600}
.apl.muted{color:#64748B}
.formwrap .btn.linkbtn{width:100%;margin-top:10px;border:0;background:none;color:#334155;text-decoration:underline;font-size:14px;min-height:44px}

/* Header v3 (Mark 2026-10-08 12:48 PM): logo left | Ask Chuck (secondary, SUN gold) | 20px+ clear space | quiet hamburger
   pinned to the far-right corner. No name in the header, no shared container. Gold = the page's brand gold (#FDB93A). */
.top{position:relative;gap:20px}
.top .logo{margin-right:auto}
.ask-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:13px;font-weight:600;line-height:1;color:#0F172A;background:#FFF8EA;border:1px solid #FDB93A;border-radius:22px;padding:0 14px 0 11px;min-height:44px;white-space:nowrap;cursor:pointer}
.ask-btn:hover{background:#FEF0CC}
.ask-btn .ask-ic{flex:none;color:#B7791F}
.acct-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:-8px;padding:0;color:#475569;background:transparent;border:0;border-radius:10px;cursor:pointer}
.acct-btn:hover,.acct-btn[aria-expanded="true"]{background:#F1F5F9}
.acct-menu{position:absolute;right:8px;top:calc(100% - 2px);z-index:40;min-width:200px;background:#fff;border:1px solid #E2E8F0;border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.14);padding:4px 0}
.acct-id{padding:9px 14px 8px}
.acct-name{font-size:14px;font-weight:600;color:#0F172A}
.acct-role{font-size:12px;color:#64748B;margin-top:2px}
.acct-env{display:inline-block;margin-top:5px;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748B;border:1px solid #CBD5E1;border-radius:4px;padding:1px 4px;line-height:1.2}
.acct-sep{height:1px;background:#E2E8F0;margin:2px 0}
.acct-item{display:block;width:100%;text-align:left;font:inherit;font-size:14px;color:#0F172A;background:none;border:0;padding:0 14px;min-height:44px;cursor:pointer}
.acct-item:hover,.acct-item:focus{background:#F1F5F9;outline:none}
.ask-btn:focus-visible,.acct-btn:focus-visible{outline:2px solid #0F172A;outline-offset:2px}

/* Ask Chuck (2026-10-08): secondary outline header button + slide-up panel. Fixed overlay, so the dashboard never shifts. */
.ask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}
.ask-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(15,23,42,.35);opacity:0;transition:opacity .2s}
.ask-sheet{position:absolute;left:0;right:0;bottom:0;max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:#fff;border-radius:14px 14px 0 0;padding:6px 14px calc(14px + env(safe-area-inset-bottom));box-shadow:0 -6px 24px rgba(15,23,42,.18);transform:translateY(100%);transition:transform .22s ease-out}
.ask.open .ask-bg{opacity:1}
.ask.open .ask-sheet{transform:none}
@media (min-width:640px){.ask-sheet{width:440px;margin:0 auto;bottom:24px;max-height:min(80vh,640px);border-radius:12px;padding-bottom:16px}}
@media (prefers-reduced-motion:reduce){.ask-sheet,.ask-bg{transition:none}}
body.ask-lock{overflow:hidden}
.ask-grab{width:36px;height:4px;border-radius:2px;background:#CBD5E1;margin:2px auto 6px}
.ask-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.ask-hd h2{font-size:16px;margin:0;color:#0F172A;outline:none}
.ask-x{font:inherit;font-size:13px;background:transparent;border:1px solid #CBD5E1;color:#334155;border-radius:14px;padding:4px 12px;min-height:32px;cursor:pointer}
.ask-lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#askq{display:block;width:100%;font:inherit;font-size:16px;line-height:1.35;padding:9px 10px;border:1px solid #94A3B8;border-radius:8px;background:#fff;color:#0F172A;resize:vertical;min-height:84px}
.ask-row{display:flex;justify-content:space-between;align-items:center;margin-top:6px}
.ask-count{font-size:11px;color:#64748B}
.ask-submit{font:inherit;font-size:14px;font-weight:600;background:#0F172A;color:#fff;border:0;border-radius:10px;padding:8px 18px;min-height:40px;cursor:pointer}
.ask-submit:disabled{opacity:.5}
.ask-note{font-size:11.5px;color:#475569;margin:8px 0 0}
.ask-ok{font-size:13px;color:#14532D;background:#F0FDF4;border:1px solid #BBF7D0;border-radius:8px;padding:8px 10px;margin-top:8px}
.ask-err{color:#991B1B;font-size:12.5px;margin-top:6px;min-height:0}
.ask-err:empty{display:none}
.ask-h3{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:#334155;margin:14px 0 6px}
.ask-list{list-style:none;margin:0;padding:0;border:1px solid #E2E8F0;border-radius:10px}
.ask-item{padding:8px 10px;border-bottom:1px solid #F1F5F9}
.ask-item:last-child{border-bottom:0}
.ask-q{font-size:13px;color:#0F172A;white-space:pre-wrap;overflow-wrap:anywhere}
.ask-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;color:#64748B;margin-top:3px}
.ask-st{font-size:10px;font-weight:700;border-radius:8px;padding:1px 7px}
.ask-st.wait{background:#F1F5F9;color:#475569}
.ask-st.done{background:#DCFCE7;color:#14532D}
.ask-a{margin-top:6px;background:#F8FAFC;border-left:3px solid #94A3B8;border-radius:0 6px 6px 0;padding:5px 8px}
.ask-al{font-size:10.5px;font-weight:700;color:#334155}
.ask-at{font-size:13px;color:#0F172A;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px}
.ask-empty{padding:10px;font-size:12px;color:#64748B}
/* Ask Chuck two-way (Oct 8 2026; behind CTRL_ASKCHUCK_TWO_WAY): understated badge, slim notice, compact items */
#askchuck{position:relative}
.ask-badge{position:absolute;top:-3px;right:-3px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#FDB93A;color:#0F172A;font-size:10.5px;font-weight:700;line-height:17px;text-align:center;box-shadow:0 0 0 2px #fff}
.ask-notice{font-size:12.5px;color:#713F12;background:#FFF8EA;border-left:3px solid #FDB93A;border-radius:0 6px 6px 0;padding:5px 9px;margin:0 0 8px}
.ask-sec{margin-bottom:10px}
.ask-sec .ask-h3{margin-top:4px}
.ask-ni{border-left:3px solid #FDB93A}
.ask-nh{font-size:12px;font-weight:700;color:#713F12;margin-bottom:3px}
.ask-rp{margin-top:6px;background:#FFFFFF;border-left:3px solid #CBD5E1;border-radius:0 6px 6px 0;padding:5px 8px}
.ask-src{font-size:11px;color:#64748B;margin-top:4px}
.ask-acts{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:6px}
.ask-reply-main{font:inherit;font-size:13px;font-weight:600;color:#0F172A;background:#FFF8EA;border:1px solid #FDB93A;border-radius:18px;padding:0 14px;min-height:36px;cursor:pointer}
.ask-link{font:inherit;font-size:12.5px;color:#334155;background:transparent;border:0;text-decoration:underline;padding:6px 4px;min-height:32px;cursor:pointer}
.ask-done{font:inherit;font-size:12.5px;font-weight:600;color:#334155;background:#fff;border:1px solid #CBD5E1;border-radius:16px;padding:0 14px;min-height:32px;cursor:pointer}
.ask-rbox{margin-top:8px}
.ask-rq{display:block;width:100%;font:inherit;font-size:16px;line-height:1.35;padding:8px 10px;border:1px solid #94A3B8;border-radius:8px;background:#fff;color:#0F172A;resize:vertical;min-height:70px}
.ask-ok-item{margin-top:6px;padding:6px 9px}
.ask-foot{font-size:11.5px;color:#64748B;margin:10px 2px 0}
/* Bid Pipeline (Oct 9 2026; behind CTRL_BID_PIPELINE): read-only phone view of Victoria's Bidding Projects.
   Design reference: Mark's mockup 10/09 11:33 PM (segmented control under the unchanged header). */
.tabs{display:flex;gap:0;margin:0 12px 2px;padding:3px;background:#E5E7EB;border-radius:10px}
.tab{flex:1;font:inherit;font-size:14px;font-weight:600;min-height:38px;border:0;border-radius:8px;background:transparent;color:#334155;cursor:pointer;position:relative}
.tab.on{background:#0B1F3A;color:#fff;box-shadow:inset 0 -3px 0 #FDB93A}
.bp{padding:12px 12px 18px}
.bp-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin:0 2px 10px}
.bp-title{font-size:22px;font-weight:800;color:#0B1F3A;margin:0;letter-spacing:-.01em}
.bp-asof{text-align:right;font-size:12.5px;color:#334155;line-height:1.35}
.bp-asof #bptime{color:#64748B;font-size:12px}
.bp-stats{display:grid;grid-template-columns:repeat(3,1fr);background:#EEF2F7;border-radius:12px;padding:10px 4px;margin-bottom:10px}
.bp-stat{text-align:center;padding:0 4px;border-left:1px solid #CBD5E1}
.bp-stat:first-child{border-left:0}
.bp-sv{font-size:24px;font-weight:800;color:#0B1F3A;line-height:1.1}
.bp-sl{font-size:11.5px;color:#334155;margin-top:2px}
.bp-samt{font-size:13px;font-weight:800;color:#15803D;margin-top:1px}
.bp-tools{display:flex;gap:8px;margin-bottom:10px}
.bp-search{flex:1;display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #CBD5E1;border-radius:10px;padding:0 10px;color:#64748B;min-height:42px}
.bp-search input{flex:1;min-width:0;border:0;outline:none;font:inherit;font-size:14px;color:#0F172A;background:transparent}
.bp-filt{width:44px;min-height:42px;border:1px solid #CBD5E1;border-radius:10px;background:#fff;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center}
.bp-filt.on{border-color:#0B1F3A;color:#0B1F3A;box-shadow:inset 0 0 0 1px #0B1F3A}
.bp-fmenu{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 10px}
.bp-chip{font:inherit;font-size:12.5px;border:1px solid #CBD5E1;background:#fff;color:#334155;border-radius:14px;padding:4px 10px;min-height:32px;cursor:pointer}
.bp-chip.on{background:#0B1F3A;border-color:#0B1F3A;color:#fff}
.bp-list{background:#fff;border:1px solid #E2E8F0;border-radius:10px;overflow:hidden;margin:0 -2px}
.bp-row{display:grid;grid-template-columns:80px minmax(0,1fr) 78px 82px 10px;gap:6px;align-items:center;width:100%;padding:8px 8px 8px 10px;border:0;border-bottom:1px solid #E2E8F0;background:#fff;font:inherit;font-size:13px;color:#0F172A;text-align:left;cursor:pointer;min-height:50px}
.bp-row:last-child{border-bottom:0}
.bp-head{background:#EEF2F7;color:#334155;font-size:11.5px;font-weight:700;min-height:0;padding:7px 8px 7px 10px;cursor:default}
.bp-sort{font:inherit;font-weight:700;color:inherit;background:none;border:0;padding:0;text-align:left;cursor:pointer;white-space:nowrap}
.bp-sort span{color:#94A3B8;font-size:11px}
.bp-due{display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.bp-date{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12.5px}
.bp-od .bp-date{color:#DC2626}
.bp-tag{font-size:11px;font-weight:600;border-radius:7px;padding:1px 6px;white-space:nowrap}
.bp-overdue{background:#FEE2E2;color:#B91C1C}
.bp-today{background:#FEF3C7;color:#92400E}
.bp-soon{background:#F1F5F9;color:#475569}
.bp-proj{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}
.bp-cl{font-weight:700;font-size:13px}
.bp-store{font-size:12.5px;color:#334155}
.bp-loc{color:#334155;font-size:12.5px;overflow-wrap:anywhere}
.bp-st{display:flex;justify-content:flex-start}
.bp-pill{font-size:12px;font-weight:600;color:#1D4ED8;background:#DBEAFE;border-radius:8px;padding:2px 9px}
.bp-awcell{display:flex;flex-direction:column;align-items:center;gap:2px;background:#DCFCE7;border-radius:6px;padding:4px 5px;margin:-4px 0}
.bp-pill-aw{color:#15803D;background:#BBF7D0}
.bp-awl{font-size:11px;font-weight:800;letter-spacing:.04em;color:#15803D}
.bp-amt{font-size:12.5px;font-weight:800;color:#15803D;font-variant-numeric:tabular-nums}
.bp-row.bp-aw{background:#F7FDF9}
.bp-chev{color:#94A3B8;font-size:20px;line-height:1}
.bp-empty{padding:12px;color:#64748B}
.bp-src{font-size:11px;color:#64748B;margin:8px 2px 0}
.bp-ro{font-size:11px;color:#94A3B8;margin:4px 2px 0}
.bpd{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55}
.bpd-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(15,23,42,.35)}
.bpd-sheet{position:absolute;left:0;right:0;bottom:0;max-height:88vh;overflow-y:auto;overscroll-behavior:contain;background:#fff;border-radius:14px 14px 0 0;padding:6px 14px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -6px 24px rgba(15,23,42,.18)}
@media (min-width:640px){.bpd-sheet{width:440px;margin:0 auto;bottom:24px;border-radius:12px}}
.bpd-hd{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.bpd-hd h2{font-size:17px;margin:0;outline:none;color:#0B1F3A}
.bpd-st{display:flex;gap:8px;align-items:center;margin:0 0 8px}
.bpd-st.bp-aw{flex-direction:column;align-items:flex-start;gap:0;background:#DCFCE7;border-radius:8px;padding:6px 10px}
.bpd-st.bp-aw .bp-amt{font-size:18px}
.bpd-dl{display:grid;grid-template-columns:132px 1fr;margin:0;border-top:1px solid #E2E8F0}
.bpd-dl dt,.bpd-dl dd{margin:0;padding:8px 0;border-bottom:1px solid #E2E8F0;font-size:13px}
.bpd-dl dt{color:#64748B}
.bpd-dl dd{color:#0F172A;font-weight:600;overflow-wrap:anywhere;white-space:pre-wrap}
.bp-stale{background:#FEF3C7;color:#92400E;border:1px solid #FCD34D;border-radius:8px;font-size:12.5px;font-weight:600;padding:6px 10px;margin:-2px 0 10px}
.card .val.neg{color:#B91C1C}  /* YTD NOI loss (Mark 10/10): red, parentheses come from the server */
/* Job Profitability (CTRL_JOB_PROFIT; management only) */
.tab{font-size:13.5px;padding:0 4px;white-space:nowrap}
.jp-period{margin:-4px 2px 10px}
.jp-per{display:inline-block;font-size:13px;font-weight:600;color:#0B1F3A;border:1px solid #CBD5E1;border-radius:8px;padding:4px 10px;background:#fff}
.jp-stats{grid-template-columns:repeat(4,1fr)}
.jp-stats .bp-sv{font-size:19px;color:#15803D}
.jp-stats .bp-stat:first-child .bp-sv{color:#0B1F3A}
.bp-sv.neg,.jp-gp.neg,.jp-mv.neg,.jp-kv.neg{color:#DC2626}
.jp-counts{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid #E2E8F0;border-radius:12px;padding:8px 4px;margin-bottom:10px}
.jp-cnt{display:flex;flex-direction:column;align-items:center;font-size:11.5px;color:#334155}
.jp-cnt b{font-size:16px;color:#0B1F3A}
.jp-dot{width:9px;height:9px;border-radius:50%;margin-bottom:2px}
.jp-ok{background:#16A34A}.jp-loss{background:#DC2626}.jp-prov{background:#F59E0B}.jp-final{background:#16A34A}
.jp-row{display:grid;grid-template-columns:minmax(0,1fr) 70px 74px 78px 10px;gap:5px;align-items:center;width:100%;padding:8px 6px 8px 10px;border:0;border-bottom:1px solid #E2E8F0;background:#fff;font:inherit;font-size:12.5px;color:#0F172A;text-align:left;cursor:pointer;min-height:54px}
.jp-row.jp-head{background:#EEF2F7;color:#334155;font-size:11px;font-weight:700;min-height:0;padding:7px 6px 7px 10px;cursor:default}
.jp-r{text-align:right;font-variant-numeric:tabular-nums}
.jp-job{display:flex;flex-direction:column;min-width:0}
.jp-t{font-size:12.5px;overflow-wrap:anywhere}
.jp-s{font-size:11.5px;color:#64748B}
.jp-gp{font-weight:700;color:#15803D}
.jp-m{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.jp-mv{font-weight:700;color:#15803D}
.jp-pill{font-size:9.5px;font-weight:800;letter-spacing:.03em;color:#92400E;background:#FEF3C7;border:1px solid #FCD34D;border-radius:7px;padding:1px 5px}
.jp-pill.jp-final{color:#15803D;background:#DCFCE7;border-color:#86EFAC}
.jp-dh{display:flex;align-items:center;gap:6px}
.jp-dh h2{flex:1;font-size:18px;margin:0;color:#0B1F3A;outline:none}
.jp-back{font:inherit;font-size:28px;line-height:1;border:0;background:none;color:#0B1F3A;cursor:pointer;padding:0 8px 2px 0;min-height:40px}
.jp-dsub{font-size:13px;color:#64748B;margin:0 0 10px 26px}
.jp-kpi{display:grid;grid-template-columns:1fr 1fr;gap:10px 8px;background:#fff;border:1px solid #E2E8F0;border-radius:12px;padding:12px;margin-bottom:10px}
.jp-kv{font-size:20px;font-weight:800;color:#0B1F3A;font-variant-numeric:tabular-nums}
.jp-kv.pos{color:#15803D}
.jp-kl{font-size:12px;color:#64748B}
.jp-flags{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.jp-flag{font-size:12px;color:#334155;background:#F1F5F9;border-radius:8px;padding:5px 9px}
.jp-flag.jp-diff{color:#92400E;background:#FEF3C7}
.jp-dl{grid-template-columns:150px 1fr;margin-bottom:10px}
.jp-qb{background:#EEF4FF;border:1px solid #C7D7F5;border-radius:12px;padding:10px 12px;margin-bottom:10px}
.jp-qbh{font-size:13.5px;font-weight:700;color:#0B1F3A}
.jp-qbn{font-size:12px;color:#334155;margin-top:3px}
.jp-sec{background:#fff;border:1px solid #E2E8F0;border-radius:10px;margin-bottom:8px}
.jp-sec summary{display:flex;justify-content:space-between;align-items:center;padding:12px;font-size:14px;font-weight:700;color:#0B1F3A;cursor:pointer;min-height:44px;box-sizing:border-box}
.jp-secn{font-size:12px;color:#64748B;font-weight:600}
.jp-secb{padding:0 12px 10px}
.jp-cat,.jp-item{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:6px 0;border-top:1px solid #E2E8F0;font-variant-numeric:tabular-nums}
.jp-item{font-size:12px;color:#475569;padding:3px 0 3px 12px;border-top:0}
.jp-uncat{color:#92400E}
.jp-tot{border-top:2px solid #0B1F3A}
.jp-none,.jp-note{font-size:13px;color:#334155;margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.jp-hist{font-size:12.5px;padding:6px 0;border-top:1px solid #E2E8F0;overflow-wrap:anywhere}
.jp-hw{font-size:11.5px;color:#64748B}
