/* ---------- design tokens ---------- */
:root{--teal:#1599B3;--teal-d:#0e7d94;--teal-l:#e6f5f8;--ink:#15202b;--ink-2:#3b4653;--muted:#6b7684;--faint:#9aa5b1;--bg:#f4f6f9;--card:#fff;--line:#e4e8ee;--line-2:#eef1f5;
--red:#c2410c;--red-bg:#fff1ec;--amber:#a16207;--amber-bg:#fef7e0;--green:#15803d;--green-bg:#e9f9ef;--blue:#1d4ed8;--blue-bg:#eaf0ff;--r:12px;--r-s:8px;--shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);--sidebar:232px}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:14px/1.55 -apple-system,"Inter","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
a{color:var(--teal-d);text-decoration:none}a:hover{text-decoration:underline}
/* ---------- shell: sidebar + content ---------- */
.shell{display:flex;min-height:100vh}
.side{width:var(--sidebar);background:#0f1f2b;color:#c9d3dc;padding:18px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px;flex-shrink:0;transition:width .15s}
.side svg{width:18px;height:18px;flex-shrink:0;opacity:.85}.side a .lbl{white-space:nowrap;overflow:hidden}
.navtoggle{margin-left:auto;background:none;border:0;color:#8a9ba8;padding:4px;cursor:pointer;border-radius:6px;display:inline-flex}.navtoggle:hover{background:#1a2d3b;color:#fff}.navtoggle svg{width:16px;height:16px;transition:transform .15s}
/* collapsed rail: icons only, labels as tooltips */
html.nav-c .side{width:64px;padding:18px 10px}html.nav-c .side .lbl,html.nav-c .side .grp{display:none}html.nav-c .side .brand{padding:4px 6px 14px;justify-content:center;flex-wrap:wrap;gap:8px}html.nav-c .side .brand i{display:none}html.nav-c .navtoggle{margin:0}html.nav-c .navtoggle svg{transform:rotate(180deg)}
html.nav-c .side a{justify-content:center;padding:9px 0}html.nav-c .side a .n{position:absolute;margin:0;top:2px;right:2px;font-size:9.5px;min-width:16px;padding:0 4px;line-height:15px}html.nav-c .side a{position:relative}
.side .brand{color:#fff;font-weight:700;font-size:15px;letter-spacing:.01em;padding:4px 10px 14px;display:flex;align-items:center;gap:10px}.side .brand i{width:26px;height:26px;border-radius:7px;background:var(--teal);display:inline-block}
.side .grp{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#6f8291;padding:12px 10px 4px}
.side a{display:flex;align-items:center;gap:10px;color:#c9d3dc;padding:8px 10px;border-radius:8px;font-size:13.5px;position:relative}.side a:hover{background:#1a2d3b;text-decoration:none;color:#fff}.side a.active{background:var(--teal);color:#fff}
.side a .n{margin-left:auto;background:#2b3f4d;color:#dbe4ea;border-radius:999px;font-size:11px;padding:0 7px;min-width:20px;text-align:center}.side a.active .n{background:rgba(255,255,255,.25)}
.side .menu{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px;scrollbar-width:thin;scrollbar-color:#2b3f4d transparent}
.side .foot{margin-top:4px;padding:10px 4px 0;border-top:1px solid #1e3140;display:flex;align-items:center;gap:8px;flex-shrink:0}
.side .foot .av{width:28px;height:28px;border-radius:50%;background:#2b3f4d;color:#fff;font-size:12px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.side .foot .who{flex:1;min-width:0;line-height:1.25}.side .foot .who b{display:block;color:#dbe4ea;font-weight:500;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side .foot .who span{font-size:11px;color:#6f8291}
.side .foot form{display:inline-flex}.side .foot .ib{width:28px;height:28px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;color:#8a9ba8;background:none;border:0;padding:0;cursor:pointer;flex-shrink:0}.side .foot .ib:hover{background:#1a2d3b;color:#fff;text-decoration:none}.side .foot .ib svg{width:16px;height:16px;opacity:1}
html.nav-c .side .foot{flex-direction:column;gap:6px;padding:10px 0 0}
.side .brand .lang{margin-left:auto;color:#8a9ba8;font-size:11.5px;font-weight:500;padding:2px 8px;border:1px solid #2b3f4d;border-radius:999px;line-height:16px}.side .brand .lang .short{display:none}html.nav-c .side .brand .lang .short{display:inline}.side .brand .lang:hover{color:#fff;border-color:#8a9ba8;background:none;text-decoration:none}.side .brand .navtoggle{margin-left:0}
html.nav-c .side .brand .lang{margin:0;padding:1px 6px}
main{flex:1;min-width:0;padding:26px 32px 60px;max-width:1400px}
.topbar{display:flex;align-items:center;gap:14px;margin-bottom:18px}.topbar h1{margin:0}.topbar .sp{flex:1}
h1{font-size:21px;font-weight:650;margin:0 0 14px;letter-spacing:-.01em}h1 .sub{font-size:13px;font-weight:400;color:var(--muted);margin-left:10px}
h2{font-size:12px;font-weight:600;margin:24px 0 10px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}
/* ---------- surfaces ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow)}
.card.tight{padding:0;overflow:auto}.card.tight table td,.card.tight table th{padding:10px 14px}.card.tight .empty{padding:26px}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line-2);vertical-align:top}th{font-weight:600;color:var(--muted);font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}tr:last-child td{border-bottom:0}tbody tr:hover td{background:#fafbfc}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;line-height:18px}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.s-exception,.s-cancelled,.s-void,.s-overdue{background:var(--red-bg);color:var(--red)}.s-clean,.s-parsed,.s-done,.s-active,.s-closed,.s-paid,.s-completed,.s-invoiced,.s-shipped,.s-arrived,.s-registered{background:var(--green-bg);color:var(--green)}
.s-processing,.s-new,.s-queued,.s-running,.s-pending,.s-open,.s-partial,.s-work,.s-booked,.s-si_submitted,.s-bl_draft,.s-planned,.s-loaded{background:var(--blue-bg);color:var(--blue)}.s-error,.s-failed,.s-disabled,.s-inactive,.s-archived{background:var(--amber-bg);color:var(--amber)}
/* presentation lifecycle and finding dispositions */
.s-ready,.s-complying,.s-accepted,.s-fixed{background:var(--green-bg);color:var(--green)}.s-expired{background:#eef0f3;color:#6b7280}.s-presented,.s-in_progress,.s-fixing{background:var(--blue-bg);color:var(--blue)}.s-refused{background:var(--red-bg);color:var(--red)}.s-waived,.s-returned{background:var(--amber-bg);color:var(--amber)}.s-dismissed{background:#eef1f5;color:var(--muted)}
.count{font-weight:700;font-variant-numeric:tabular-nums}.count.red{color:var(--red)}.count.amber{color:var(--amber)}
.finding{background:#fff;border:1px solid var(--line);border-left-width:4px;border-radius:var(--r-s);padding:12px 14px;margin-bottom:10px}
.finding.sev-discrepancy{border-left-color:var(--red)}.finding.sev-warning{border-left-color:#d97706}.finding.sev-info{border-left-color:#b8c1cb}.finding.done{opacity:.5}.finding.wip{border-left-style:dashed;background:#fbfcff}
.dispform{margin-top:8px;display:flex;flex-direction:column;gap:6px}.dispform .drow{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.dispform input[type=text]{max-width:220px}.dispform input[type=date]{width:auto;padding:5px 8px;font-size:12.5px}.dispform label.inl{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:12px;white-space:nowrap}
.finding .title{font-weight:600}.finding .meta{color:var(--muted);font-size:12px;margin-top:3px}.finding .detail{margin-top:6px;white-space:pre-wrap;color:var(--ink-2)}
.ev{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;background:#f1f3f6;border-radius:4px;padding:2px 6px;margin:4px 4px 0 0;display:inline-block}
/* ---------- controls ---------- */
form.inline{display:inline}button,.btn{background:var(--teal);color:#fff;border:0;border-radius:var(--r-s);padding:8px 14px;cursor:pointer;font-size:13.5px;font-weight:500;display:inline-flex;align-items:center;gap:6px;line-height:1.2;white-space:nowrap;flex-shrink:0}button:hover,.btn:hover{background:var(--teal-d);text-decoration:none}
button.ghost,.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}button.ghost:hover,.btn.ghost:hover{background:#f6f8fa}button.sm,.btn.sm{padding:5px 10px;font-size:12.5px}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=datetime-local],select,textarea{border:1px solid #d3d9e0;border-radius:var(--r-s);padding:8px 10px;font-size:13.5px;width:100%;background:#fff;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid var(--teal-l);border-color:var(--teal)}
label{font-size:12px;color:var(--muted);display:block;margin-bottom:4px}input[type=file]{max-width:100%;font-size:13px}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.filters{display:flex;gap:8px;align-items:center;flex:1;flex-wrap:wrap}.filters .fq{display:flex;gap:8px;align-items:center}.filters select{width:auto;max-width:260px}.filters input[type=text]{max-width:320px}.toolbar form{display:flex;gap:8px;align-items:center;flex:1}.toolbar input[type=text]{max-width:320px}.toolbar select{max-width:200px}
.grid{display:grid;gap:16px}.grid>*{min-width:0}.wb-grid{grid-template-columns:minmax(0,11fr) minmax(0,8fr)}.ellip{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g5{grid-template-columns:repeat(5,1fr)}.g31{grid-template-columns:2fr 1fr}
.thumbs{display:flex;flex-wrap:wrap;gap:10px}.thumbs a{display:block;width:100px;text-align:center;font-size:11px;color:var(--muted)}.thumbs img{width:100px;height:auto;border:1px solid var(--line);border-radius:6px;background:#fff}
.kv{display:grid;grid-template-columns:140px 1fr;gap:5px 12px;font-size:13.5px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}.kv2{grid-template-columns:140px 1fr 140px 1fr}
.nowrap{white-space:nowrap}.mo{display:none}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
pre{background:#f1f3f6;padding:12px;border-radius:var(--r-s);overflow:auto;font-size:12px}
.empty{color:var(--muted);padding:22px 0;text-align:center;font-size:13.5px}
/* ---------- workbench ---------- */
.stat{display:block;color:var(--ink);padding:14px 16px}.stat:hover{text-decoration:none;border-color:var(--teal)}.stat .num{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1}.stat .lbl{color:var(--muted);font-size:12.5px;margin-top:4px}.stat.warn .num{color:var(--red)}.stat.ok .num{color:var(--green)}
.drop{border:1.5px dashed #b9c3cd;border-radius:var(--r);background:#fff;padding:22px 20px;text-align:center;cursor:pointer;transition:.15s;display:block}.drop:hover,.drop.over{border-color:var(--teal);background:var(--teal-l)}
.drop h3{margin:0 0 4px;font-size:15px}.drop p{margin:0;color:var(--muted);font-size:12.5px}.drop input{display:none}.drop .busy{display:none;color:var(--teal-d);font-weight:600}
/* ---------- process stepper ---------- */
.steps{display:flex;gap:0;margin:6px 0 14px;counter-reset:s}.step{flex:1;position:relative;padding:10px 8px 6px 32px;font-size:12.5px;color:var(--muted);border-top:3px solid var(--line)}
.step::before{counter-increment:s;content:counter(s);position:absolute;left:6px;top:10px;width:20px;height:20px;border-radius:50%;background:var(--line);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.step.done{border-top-color:var(--green);color:var(--ink)}.step.done::before{background:var(--green);content:"✓"}.step.now{border-top-color:var(--teal);color:var(--teal-d);font-weight:600}.step.now::before{background:var(--teal)}.step.fail{border-top-color:var(--amber);color:var(--amber)}.step.fail::before{background:var(--amber);content:"!"}
.step i{display:block;font-style:normal;font-weight:400;color:var(--faint);font-size:11px;margin-top:1px}
.banner{border-radius:var(--r-s);padding:12px 16px;margin-bottom:16px;font-size:13.5px}.banner .steps.mini{margin:10px 0 0}.steps.mini .step{font-size:12px;padding-top:8px}.steps.mini .step::before{top:8px}
.act h3{margin:0 0 10px;font-size:14px;font-weight:600}.act .formrow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:8px}.act .formrow>div{flex:1;min-width:130px}.act input[type=file]{margin-bottom:8px}
.opts{display:flex;flex-direction:column;gap:4px;margin:4px 0 10px}label.chk{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--ink);margin:0}label.chk input{width:auto;margin:0}
details>summary{cursor:pointer;color:var(--teal-d);font-size:13px}details.card>summary{font-weight:500}
.cmp{display:flex;gap:18px;margin:8px 0;font-size:13px}.cmp .count{font-size:18px;margin-right:2px}.card ul{margin:4px 0 8px;padding-left:18px}.banner.red{background:var(--red-bg);color:#7c2d12}.banner.green{background:var(--green-bg);color:#14532d}.banner.blue{background:var(--blue-bg);color:#1e3a8a}.banner.amber{background:var(--amber-bg);color:#713f12}
.auth{max-width:420px;margin:56px auto}
.filepick{padding:12px 14px;text-align:left;display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted)}.filepick input{display:none}.filepick::before{content:'';width:18px;height:18px;flex-shrink:0;background:no-repeat center/18px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231599B3' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V4M7 9l5-5 5 5M4 20h16'/%3E%3C/svg%3E")}.filepick .fp-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.miss select,.miss input{border-color:var(--red);background:#fff8f6}.intake-src{white-space:pre-wrap;font-size:12.5px;max-height:320px;overflow:auto;background:#f8fafb;border:1px solid var(--line);border-radius:var(--r-s);padding:10px 12px}.intake-pages{display:flex;gap:8px;flex-wrap:wrap}.intake-pages img{height:140px;border:1px solid var(--line);border-radius:6px;background:#fff}
.subnav{display:flex;gap:4px;flex-wrap:wrap;margin:0 0 16px}.subnav a{padding:5px 12px;border-radius:999px;font-size:12.5px;color:var(--ink);background:#fff;border:1px solid var(--line)}.subnav a.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.section-h{display:flex;align-items:baseline;gap:10px}.section-h h2{margin:0}.section-h a{font-size:12px}
.pager{display:flex;gap:10px;align-items:center;justify-content:center;margin:4px 0 16px}
.tl{table-layout:fixed}.tl .c1{width:22%}.tl .c2{width:60%}.tl .c3{width:18%}.tl tr.grp td{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#fafbfc;padding:6px 10px}.kind{display:inline-block;font-size:11px;font-weight:600;line-height:18px;padding:0 6px;border-radius:4px;background:#eef2f5;color:#4a5b68;vertical-align:1px}.kind.k-lc_expiry,.kind.k-lsd{background:#fdf1e7;color:var(--red)}.kind.k-ar_due{background:#e8f4f7;color:#0e7490}.kind.k-present_by{background:#fdf1e7;color:var(--red)}.kind.k-bank_reply{background:var(--blue-bg);color:var(--blue)}.kind.k-maturity{background:var(--green-bg);color:var(--green)}.kind.k-fix_due{background:var(--amber-bg);color:var(--amber)}.kind.k-risk_lsd,.kind.k-risk_refused{background:#fdf1e7;color:var(--red)}.kind.k-risk_stuck{background:var(--amber-bg);color:var(--amber)}.kind.k-risk_ar60{background:#e8f4f7;color:#0e7490}.due{font-weight:600}.due.soon{color:var(--red)}.due.week{color:var(--amber)}
.side .grp{margin-top:6px}
@media(max-width:1500px){html:not(.nav-c) .wb-grid{grid-template-columns:1fr}}@media(max-width:1300px){.wb-grid{grid-template-columns:1fr}}
/* ---------- sign-in landing ---------- */
main:has(>.landing){max-width:none;padding:0}
.landing{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);min-height:100vh}
.hero{background:#0f1f2b;color:#c9d3dc;display:flex;align-items:center;padding:56px 64px;position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:auto -120px -160px auto;width:520px;height:520px;border-radius:50%;background:radial-gradient(closest-side,rgba(21,153,179,.35),rgba(21,153,179,0))}
.hero-in{position:relative;max-width:620px}
.hero .logo{display:flex;align-items:center;gap:14px;margin-bottom:40px}.hero .logo img{width:56px;height:auto;background:#fff;border-radius:12px;padding:4px}.hero .logo b{display:block;color:#fff;font-size:17px;letter-spacing:-.01em}.hero .logo span{font-size:12.5px;color:#8a9ba8}
.hero .kicker{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);font-weight:600;margin:0 0 10px}
.hero h1{color:#fff;font-size:34px;line-height:1.15;letter-spacing:-.02em;margin:0 0 16px;font-weight:700}
.hero .lead{font-size:15px;line-height:1.6;color:#aebbc6;margin:0 0 32px}
.feats{list-style:none;margin:0;padding:0;display:grid;gap:18px}.feats li{display:flex;gap:14px;align-items:flex-start}
.feats svg{width:22px;height:22px;flex-shrink:0;fill:none;stroke:var(--teal);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-top:2px}
.feats b{display:block;color:#fff;font-size:14px;margin-bottom:2px}.feats div{font-size:13px;line-height:1.5;color:#9fadb9}
.hero .foot{margin:40px 0 0;font-size:12px;color:#6f8291}
.signin{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--bg)}
.signin .auth{margin:0;width:100%;max-width:400px;padding:28px 30px}.signin .auth h1{font-size:24px;margin-bottom:18px}
@media(max-width:960px){.landing{grid-template-columns:1fr;min-height:0}.signin{order:-1}.hero{padding:36px 24px}.hero h1{font-size:27px}.hero .logo{margin-bottom:24px}.hero .lead{margin-bottom:22px}.signin{padding:28px 16px 48px}}

/* business dashboard: two-level report menu, inline SVG bars */
.repnav{margin:0 0 16px}.repnav .subnav{margin:0}.repnav .l2{margin-top:8px}.repnav .l2 a{border-color:transparent;background:transparent;color:var(--teal-d)}.repnav .l2 a.active{background:var(--teal-l);color:var(--teal-d);border-color:transparent}
.viz{width:100%;height:auto;display:block;--s1:#1599B3;--s2:#eb6834}.viz .s1{fill:var(--s1)}.viz .s2{fill:var(--s2)}.viz .grid{stroke:var(--line-2);stroke-width:1}.viz .base{stroke:var(--line);stroke-width:1}.viz .ax{font-size:10px;fill:var(--muted)}.viz .dl{font-size:10.5px;fill:var(--ink);font-weight:600}.viz path:hover{opacity:.8}
.legend{display:flex;gap:14px;font-size:12px;color:var(--muted);margin:6px 0 4px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.legend .s1{background:#1599B3}.legend .s2{background:#eb6834}
.stat .lbl .neg{color:var(--red);font-weight:600}.stat .lbl .pos{color:var(--green);font-weight:600}
.assignee{display:flex;gap:8px;align-items:center;margin:-10px 0 14px}.assignee select{width:auto;min-width:0;padding:4px 8px;font-size:12.5px}
table.bank td{vertical-align:top}table.bank .sugg{display:block;margin:0 0 4px}table.bank .sugg button{max-width:100%;white-space:normal;text-align:left}.num.pos{color:var(--green)}.num.neg{color:var(--red)}.stat .num.neg{color:var(--red)}
/* users page: one-line action cells and the per-user menu popover */
td.acts{white-space:nowrap;text-align:right}td.acts form{display:inline-flex;gap:6px;align-items:center;flex-wrap:nowrap}td.acts select{width:auto;min-width:0}table.users td{vertical-align:middle}table.users select{width:auto;min-width:0}
.card.hostpop{overflow:visible}details.pop{position:relative}details.pop>summary{list-style:none;white-space:nowrap;padding:4px 0}details.pop>summary::-webkit-details-marker{display:none}details.pop>summary::after{content:" ▾";font-size:11px}
details.pop .popbody{position:absolute;z-index:20;top:100%;left:0;min-width:250px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-s);box-shadow:0 8px 24px rgba(16,24,40,.12);padding:12px 14px;display:flex;flex-direction:column;gap:5px}
details.pop .popbody .row{display:flex;gap:6px;margin-top:8px}details.pop .popbody input[type=text],details.pop .popbody select{width:100%}table.users details.pop>summary{color:var(--muted);padding:0}table.users details.pop>summary:hover{color:var(--teal-d)}.desk-hints li{margin:2px 0}

#lb{position:fixed;inset:0;z-index:1000;background:rgba(15,23,42,.88);display:flex;align-items:center;justify-content:center}#lb[hidden]{display:none}#lb .lb-body{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:28px 70px;overflow:hidden;touch-action:none}#lb img{max-width:100%;max-height:100%;border-radius:4px;box-shadow:0 8px 40px rgba(0,0,0,.5);background:#fff;transform-origin:50% 50%;cursor:zoom-in;user-select:none;-webkit-user-drag:none}#lb.zoomed img{cursor:grab;border-radius:0}#lb.zoomed img:active{cursor:grabbing}#lb .lb-load{position:absolute;top:18px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;padding:8px 14px;border-radius:999px;background:rgba(15,23,42,.82);color:#fff;font-size:13px;white-space:nowrap;pointer-events:none;z-index:2}#lb .lb-load[hidden]{display:none}#lb .lb-spin{width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:lbspin .8s linear infinite}@keyframes lbspin{to{transform:rotate(360deg)}}#lb .lb-bar{position:absolute;top:0;left:0;right:0;height:3px;overflow:hidden;z-index:2}#lb .lb-bar[hidden]{display:none}#lb .lb-bar::after{content:'';position:absolute;top:0;bottom:0;left:-40%;width:40%;background:#38bdf8;animation:lbbar 1.1s ease-in-out infinite}@keyframes lbbar{to{left:100%}}@media(max-width:960px){#lb .lb-load{top:auto;bottom:52px;font-size:12px}}#lb .lb-z{position:absolute;bottom:8px;right:14px;display:flex;align-items:center;gap:4px;z-index:1}#lb .lb-z button{position:static;width:32px;height:32px;font-size:20px;border-radius:8px}#lb .lb-z .lb-zl{width:auto;min-width:52px;padding:0 6px;font-size:12.5px;font-variant-numeric:tabular-nums}#lb button{position:absolute;border:0;background:rgba(255,255,255,.12);color:#fff;font-size:28px;line-height:1;width:44px;height:44px;border-radius:999px;cursor:pointer}#lb button:hover{background:rgba(255,255,255,.28)}#lb .lb-x{top:16px;right:16px}#lb .lb-p{left:14px;top:50%;margin-top:-22px}#lb .lb-n{right:14px;top:50%;margin-top:-22px}#lb .lb-c{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:#cbd5e1;font-size:12.5px;pointer-events:none}@media(max-width:960px){#lb .lb-body{padding:56px 8px}}

/* 2026-10-26: global search box, help link, page hints, bulk bar, CSV button */
.side .gsearch{display:flex;align-items:center;gap:4px;background:#1a2d3b;border:1px solid #23394a;border-radius:8px;margin:0 2px 8px;padding:0 4px 0 2px}.side .gsearch button{background:none;border:0;color:#8a9ba8;padding:6px;display:inline-flex;cursor:pointer}.side .gsearch button:hover{color:#fff}
.side .gsearch input{background:transparent;border:0;color:#dbe4ea;padding:7px 4px;font-size:13px;width:100%;min-width:0}.side .gsearch input::placeholder{color:#6f8291}.side .gsearch input:focus{outline:none}.side .gsearch:focus-within{border-color:var(--teal)}
html.nav-c .side .gsearch{justify-content:center;padding:0;margin:0 0 8px}html.nav-c .side .gsearch input{display:none}
.side .helplink{margin-top:6px;color:#8a9ba8;font-size:13px}
.hint{position:relative;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:11.5px;font-weight:600;cursor:help;margin-left:8px;vertical-align:3px;letter-spacing:0}
.hint:hover,.hint:focus,.hint.open{color:var(--teal-d);border-color:var(--teal);outline:none}
.hint .tip{display:none;position:absolute;z-index:30;left:0;top:24px;width:340px;max-width:80vw;background:var(--ink);color:#f1f5f9;font-size:12.5px;font-weight:400;line-height:1.5;text-transform:none;padding:10px 12px;border-radius:var(--r-s);box-shadow:0 8px 24px rgba(16,24,40,.18);white-space:normal}
.hint:hover .tip,.hint:focus .tip,.hint.open .tip{display:block}
.chkcol{width:28px;padding-right:0}.chkcol input{width:auto;margin:0}
.bulkbar{position:sticky;bottom:0;z-index:15;display:none;align-items:center;gap:8px;flex-wrap:wrap;background:var(--ink);color:#e2e8f0;border-radius:var(--r);padding:10px 14px;margin:8px 0 16px;box-shadow:0 -4px 18px rgba(16,24,40,.15)}.bulkbar.on{display:flex}
.bulkbar select{width:auto;max-width:220px;padding:5px 8px;font-size:12.5px}.bulkbar b{color:#fff}.bulkbar .sp{flex:1}
.help h3{margin:18px 0 6px;font-size:15px}.help ol,.help ul{margin:4px 0 10px;padding-left:20px}.help li{margin:3px 0}.help p{margin:6px 0}
.dlist{font-size:12.5px}.dlist td{padding:5px 8px}

/* ---------- phone / tablet shell (<= 960px): white app bar, slide-in drawer, bottom tab bar ---------- */
.mbar,.tabbar,.scrim,.navclose{display:none}
@media(max-width:960px){
html{--mbar:52px;--tabbar:58px;--gut:16px}
.shell{display:block}main{max-width:none;padding:16px var(--gut) 40px;overflow-x:hidden}
.shell.app>main{padding-top:calc(var(--mbar) + 14px);padding-bottom:calc(var(--tabbar) + 28px + env(safe-area-inset-bottom))}
/* app bar */
.mbar{position:fixed;top:0;left:0;right:0;height:var(--mbar);z-index:50;display:flex;align-items:center;gap:2px;padding:0 6px 0 4px;background:#fff;border-bottom:1px solid var(--line)}
.mbar .ib{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;color:var(--ink-2);background:none;border:0;padding:0;cursor:pointer;flex-shrink:0}.mbar .ib:hover{text-decoration:none;background:#f3f5f8}
.mbar .ib svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mbar .ttl{flex:1;min-width:0;display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:650;font-size:16px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mbar .ttl:hover{text-decoration:none}.mbar .ttl i{width:22px;height:22px;border-radius:6px;background:var(--teal);flex-shrink:0}
.mbar .lang{width:auto;padding:0 10px;font-size:12.5px;font-weight:600;color:var(--muted)}
/* drawer: the desktop sidebar, slid in from the left */
.side{position:fixed;top:0;bottom:0;left:0;height:auto;width:min(300px,86vw);z-index:70;transform:translateX(-104%);transition:transform .22s ease;padding:12px 12px calc(12px + env(safe-area-inset-bottom));flex-direction:column;gap:4px}
html.nav-open .side{transform:none;box-shadow:12px 0 40px rgba(0,0,0,.28)}
.scrim{position:fixed;inset:0;z-index:60;background:rgba(15,31,43,.5);display:block;opacity:0;pointer-events:none;transition:opacity .2s}html.nav-open .scrim{opacity:1;pointer-events:auto}html.nav-open body{overflow:hidden}
.navtoggle{display:none}.navclose{display:inline-flex;margin-left:auto;background:none;border:0;color:#8a9ba8;padding:6px;border-radius:8px;cursor:pointer}.navclose svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.side .brand .lang{margin-left:0}
.side .brand{padding:6px 10px 12px}.side .gsearch{margin:0 0 8px}.side .gsearch input{font-size:15px;padding:9px 4px}
.side .grp{display:block;padding:14px 12px 4px}.side a{padding:11px 12px;font-size:15px;border-radius:10px}.side svg{display:inline-block;width:20px;height:20px}.side .helplink{margin-top:8px}
.side .menu{flex:1;min-height:0;overflow-y:auto;flex-direction:column;flex-wrap:nowrap;gap:2px}.side .foot{flex:none;margin-top:4px;padding:12px 4px 0;border-top:1px solid #1e3140;justify-content:flex-start}.side .foot .who{flex:1;display:block}.side .foot .ib{width:36px;height:36px}.side .foot .ib svg{display:block}
html.nav-c .side{width:min(300px,86vw);padding:12px 12px}html.nav-c .side .lbl{display:inline}html.nav-c .side .grp{display:block}html.nav-c .side a{justify-content:flex-start;padding:11px 12px}html.nav-c .side a .n{position:static;font-size:11px;min-width:20px;padding:0 7px;line-height:18px}html.nav-c .side .brand{justify-content:flex-start;padding:6px 10px 12px}html.nav-c .side .brand i{display:inline-block}html.nav-c .side .gsearch{justify-content:flex-start;padding:0 4px 0 2px}html.nav-c .side .gsearch input{display:block}html.nav-c .side .foot{flex-direction:row}
/* bottom tab bar: workbench + the desk's three main lists + more */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;background:#fff;border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
.tabbar a,.tabbar button{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px 4px;font:500 10.5px/1.2 inherit;font-family:inherit;color:var(--muted);background:none;border:0;border-radius:10px;position:relative;cursor:pointer}
.tabbar a:hover,.tabbar button:hover{text-decoration:none}.tabbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.tabbar svg.dots{fill:currentColor;stroke:none}.tabbar .active{color:var(--teal-d)}.tabbar .active svg{stroke-width:2.1}.tabbar .lbl{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tabbar .n{position:absolute;top:2px;left:calc(50% + 5px);background:var(--red);color:#fff;font-size:10px;line-height:16px;min-width:16px;padding:0 4px;border-radius:999px;text-align:center;font-weight:600}
/* page header: title on its own line, primary action first, the rest wrap after it */
h1{font-size:20px;margin:0 0 12px;line-height:1.25}h1 .sub{display:block;margin:3px 0 0;font-size:13px}h2{margin:18px 0 8px}
.topbar{flex-wrap:wrap;gap:8px;margin-bottom:14px}.topbar h1{flex-basis:100%;order:-2}.topbar .sp{display:none}.topbar .btn:not(.ghost){order:-1}.topbar .subnav{flex-basis:100%;margin:0}
.card{padding:14px 16px;margin-bottom:12px}.card.tight table td,.card.tight table th{padding:10px 12px}.grid{gap:10px}
.g2,.g3,.g4,.g5,.g31,.wb-grid,.grid[style*=grid-template-columns]{grid-template-columns:1fr!important}.grid:has(>.stat){grid-template-columns:1fr 1fr!important}
.stat{padding:12px 14px}.stat .num{font-size:22px}.stat .lbl{font-size:12px;margin-top:3px}
.kv,.kv2{grid-template-columns:minmax(92px,32%) 1fr;gap:7px 10px;font-size:13.5px}.kv dt{font-size:12.5px}
/* controls: 16px inputs stop the phone from zooming on focus; 40px tap targets */
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=datetime-local],input[type=search],select,textarea{font-size:16px;padding:9px 12px;border-radius:10px}textarea{max-width:100%}
button,.btn{padding:9px 14px;font-size:14px;min-height:40px;border-radius:10px}button.sm,.btn.sm{padding:6px 12px;font-size:13px;min-height:34px}
.toolbar form,.toolbar{flex-wrap:wrap}.toolbar input[type=text],.toolbar select{max-width:none}
.filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.filters>*{min-width:0}.filters .fq{grid-column:1/-1;display:flex;gap:8px;align-items:flex-end}.filters .fq>*{flex:1;min-width:0}.filters .fq button,.filters .fq>div:has(>button){flex:0 0 auto}.filters select,.filters input[type=text],.filters input[type=date],.filters input[type=search]{width:100%!important;max-width:none!important}.filters label.inl,.filters .subnav,.filters input[type=hidden]+.subnav{grid-column:1/-1;margin:0!important}.filters label.chk{grid-column:1/-1}
.toolbar select,.toolbar input[type=text]{width:100%!important;max-width:none!important}.topbar form{flex-wrap:wrap}
button,.btn{white-space:nowrap;flex-shrink:0}.dispform input[type=text]{max-width:none}
form[style*="grid-template-columns"]>div:last-child{grid-column:1/-1}form[style*="grid-template-columns"]>div:last-child button{width:100%;justify-content:center}
.kv dd form{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.kv dd form input[type=text]{flex:1;min-width:0;width:auto!important}.card[style*="max-width"]{max-width:none!important}
table.ml td.mono{font-size:13px}table.ml td form.inline{display:inline-flex;flex-wrap:wrap;gap:4px}table.ml td select{max-width:100%!important}.tabbar .lbl{font-size:10.5px}
.subnav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 calc(-1 * var(--gut)) 12px;padding:0 var(--gut)}.subnav::-webkit-scrollbar{display:none}.subnav a{flex-shrink:0;padding:7px 14px;font-size:13px}.repnav .l2{margin-top:6px}
.steps{flex-wrap:wrap}.step{min-width:50%}
.hint .tip{width:min(340px,calc(100vw - 2 * var(--gut)));left:auto;right:0}
.pager{margin:8px 0 16px}.pager .btn{min-height:36px}
.bulkbar{position:fixed;left:8px;right:8px;bottom:calc(var(--tabbar) + 8px + env(safe-area-inset-bottom));margin:0;z-index:55;padding:10px 12px}.bulkbar select{max-width:none;flex:1}#bulkdone{bottom:calc(var(--tabbar) + 76px)!important;right:12px!important;left:12px}
details.pop .popbody{min-width:0;width:calc(100vw - 2 * var(--gut) - 8px);max-width:320px;left:auto;right:0}
form[style*="grid-template-columns"]{grid-template-columns:1fr 1fr!important}
.tl .c1,.tl .c2,.tl .c3{width:auto}.thumbs a{width:84px}.thumbs img{width:84px}
.ellip{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.hm{display:none!important}.mo{display:block}
/* tables that are not marked .ml keep scrolling sideways inside their card */
.card{overflow-x:auto;max-width:100%}td,th{padding:9px 8px;font-size:13px}
/* .ml: list tables turn into a row per record; each cell is a small labelled field in a 2-column grid */
table.ml,table.ml tbody{display:block}table.ml tr:has(th){display:none}
table.ml tr{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px 12px;padding:12px 14px;border-bottom:1px solid var(--line-2);position:relative}table.ml tr:last-child{border-bottom:0}table.ml tr:hover td{background:none}
.card.tight table.ml td{padding:0}table.ml td{display:block;padding:0;border:0;font-size:13.5px;min-width:0;text-align:left;white-space:normal;overflow-wrap:anywhere}table.ml td.hm{display:none}
table.ml td[data-l]::before{content:attr(data-l);display:block;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--faint);margin-bottom:1px;font-weight:500}
table.ml td{flex:0 0 calc(50% - 6px)}table.ml td.t{flex:1 1 0;min-width:55%;order:-2;font-size:15px;line-height:1.3;padding-bottom:2px}table.ml td.t .small{font-size:12.5px;margin-top:2px}table.ml td.st{flex:0 1 auto;max-width:44%;margin-left:auto;order:-1;padding-bottom:2px;text-align:right}table.ml td.w{flex-basis:100%}
table.ml tr:has(.chkcol){padding-right:48px}table.ml td.chkcol{position:absolute;right:12px;top:12px;width:auto}table.ml td.chkcol input{width:20px;height:20px}
table.ml tr.tot{background:#fafbfc;font-size:12.5px}table.ml tr.tot td{flex:0 0 auto}table.ml tr.tot td[colspan]{flex-basis:100%}table.ml tr.tot td:empty,table.ml td.e{display:none}
table.ml td.num{font-variant-numeric:tabular-nums}
/* workbench risk / timeline rows: date and amount on one line, the subject beneath */
.card.tight table.tl td,.tl td{display:block;padding:0;border:0}.tl colgroup{display:none}.tl,.tl tbody{display:block}
.tl tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:10px 14px;border-bottom:1px solid var(--line-2)}.tl tr:last-child{border-bottom:0}.tl tr:hover td{background:none}
.tl td:nth-child(1){order:1;white-space:nowrap}.tl td:nth-child(1) div{display:inline;margin-left:6px}.tl td:nth-child(3){order:2;margin-left:auto;text-align:right}.tl td:nth-child(2){order:3;flex-basis:100%}
.tl tr.grp{display:block;padding:7px 14px 5px}.tl tr.grp td{display:block;padding:0;background:none}
#lb .lb-body{padding:56px 8px}
}
