:root{--gold:#c9a227;--ink:#14202b;--muted:#5b6b78;--bg:#f6f4ee;--card:#fff;--ok:#1d7a46;--bad:#b3261e;--line:#e4e0d4}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans Khmer",sans-serif;background:var(--bg);color:var(--ink);font-size:15px}
a{color:#7a5d00}header{background:var(--ink);color:#fff;padding:10px 18px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
header .brand{font-weight:700;letter-spacing:.5px;color:var(--gold);text-decoration:none;font-size:18px}
header nav{display:flex;gap:14px;flex-wrap:wrap;flex:1}header nav a{color:#e9e4d4;text-decoration:none}
header form{margin:0}main{max-width:1100px;margin:0 auto;padding:20px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px}.stat b{display:block;font-size:22px;margin-top:4px}
table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-weight:600}input,select,textarea{width:100%;padding:9px;border:1px solid #cfc9b8;border-radius:7px;font:inherit;background:#fff}
label{display:block;margin:10px 0 4px;font-weight:600}button,.btn{background:var(--gold);color:#1b1404;border:0;border-radius:7px;padding:9px 16px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block}
button.secondary{background:#e8e3d3}button.danger{background:var(--bad);color:#fff}
.inline{display:inline}.inline input{width:auto}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:end}
.msg{background:#e7f4ec;border:1px solid #b9dcc6;color:var(--ok);padding:10px;border-radius:8px;margin-bottom:14px}
.err{background:#fbeaea;border:1px solid #efc2bf;color:var(--bad);padding:10px;border-radius:8px;margin-bottom:14px}
.muted{color:var(--muted)}.pill{display:inline-block;padding:2px 8px;border-radius:20px;background:#eee;font-size:12px}
.pill.active,.pill.approved,.pill.verified,.pill.manual_verified,.pill.paid,.pill.filled,.pill.open{background:#dff1e6;color:var(--ok)}
.pill.paused,.pill.unpaid,.pill.pending_approval,.pill.pending_ea,.pill.pending_ib,.pill.accrued{background:#fff3d6;color:#7a5d00}
.pill.rejected,.pill.not_affiliated,.pill.error,.pill.disconnected,.pill.failed{background:#fbeaea;color:var(--bad)}
code.key{display:block;word-break:break-all;background:#14202b;color:#f3d27a;padding:12px;border-radius:8px;font-size:14px}
.narrow{max-width:460px;margin:30px auto}footer{text-align:center;color:var(--muted);font-size:12px;padding:30px}
/* ---- layout v2: navigation, tables, tiles ---- */
header{flex-wrap:nowrap;gap:14px;position:relative}
.navtoggle{display:none}.menubtn{display:none;margin:0 0 0 auto;color:#fff;border:1px solid #3a4a58;border-radius:7px;padding:6px 12px;font-weight:600;cursor:pointer}
.navpanel{display:flex;align-items:center;gap:14px;flex:1;min-width:0}
header nav{flex-wrap:nowrap;gap:12px;align-items:center;font-size:14px}header nav a{white-space:nowrap}header nav a:hover{color:var(--gold)}
.logout{display:flex;align-items:center;gap:10px;margin-left:auto}.who{color:#9fb0bd;font-size:13px;white-space:nowrap}
.more{position:relative}.more summary{list-style:none;cursor:pointer;color:#e9e4d4;white-space:nowrap}.more summary::-webkit-details-marker{display:none}
.more summary::after{content:" \25BE"}.more[open] summary{color:var(--gold)}
.dropdown{position:absolute;top:28px;left:-10px;background:var(--ink);border:1px solid #2c3b48;border-radius:8px;padding:6px 0;min-width:180px;z-index:20;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.dropdown a{display:block;padding:8px 14px}.mob-only{display:none}
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}
.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g5{grid-template-columns:repeat(5,1fr)}
.grid{margin-bottom:16px}.stat small{display:block;margin-top:4px;font-size:12px}.nowrap{white-space:nowrap}
.check{width:auto!important;margin:0}.check-row{display:flex;align-items:center;gap:8px;font-weight:400;margin:14px 0}
.grow{flex:1;min-width:200px}.w-sm{width:220px!important}label.plain{font-weight:400;display:flex;gap:8px;align-items:center}
.chip{display:inline-block;border:1px solid var(--line);border-radius:20px;padding:5px 12px;margin:0 6px 6px 0;text-decoration:none;background:#faf8f2}
.sys{display:grid;grid-template-columns:repeat(2,1fr);gap:0 24px}.sysrow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 2px;border-bottom:1px solid var(--line)}
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;text-align:right}
.badge.ok{background:#dff1e6;color:var(--ok)}.badge.warn{background:#fff3d6;color:#7a5d00}.badge.bad{background:#fbeaea;color:var(--bad)}.badge.info{background:#e8eef5;color:#2b4a66}
.pill.awaiting_payment,.pill.sent,.pill.pending,.pill.unverified{background:#fff3d6;color:#7a5d00}
.pill.overdue,.pill.expired,.pill.skipped,.pill.suspended{background:#fbeaea;color:var(--bad)}.pill.settled,.pill.closed,.pill.waived{background:#e8eef5;color:#2b4a66}
@media (max-width:1180px){header nav{gap:10px;font-size:13.5px}.who{display:none}}
@media (max-width:860px){
  header{flex-wrap:wrap}.menubtn{display:inline-block}
  .navpanel{display:none;flex-basis:100%;flex-direction:column;align-items:stretch;gap:0;padding-top:6px}
  .navtoggle:checked~.navpanel{display:flex}
  header nav{flex-direction:column;align-items:stretch;gap:0;font-size:16px}
  header nav a{padding:11px 4px;border-bottom:1px solid #26333f}
  .mob-only{display:contents}.desk-only{display:none}
  .logout{margin:12px 0 4px;justify-content:space-between}.who{display:inline}
  main{padding:14px}
  .grid,.g3,.g4,.g5{grid-template-columns:repeat(2,1fr);gap:10px}.stat{padding:11px}.stat b{font-size:18px}
  .tbl table{min-width:100%}.tbl th,.tbl td{white-space:nowrap}.tbl td.long{white-space:normal;min-width:220px}
  .sys{grid-template-columns:1fr}.w-sm{width:100%!important}
  h2{font-size:21px}
}
.kv{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 18px;margin:6px 0 4px}.kv div{border-bottom:1px solid var(--line);padding:6px 0}
.kv span{display:block;color:var(--muted);font-size:12.5px}.kv b{font-size:15px}p.small{font-size:12px;margin:6px 0 10px}
@media (max-width:860px){
  header.guest{flex-wrap:nowrap}header.guest .menubtn{display:none}
  header.guest .navpanel{display:flex;flex-basis:auto;flex-direction:row;padding:0;justify-content:flex-end}
  header.guest nav{flex-direction:row;gap:14px;font-size:15px}header.guest nav a{border:0;padding:0}
  .kv{grid-template-columns:repeat(2,1fr)}
  .tbl table.stack{min-width:0}.stack tr:has(th){display:none}
  .stack tr{display:block;border:1px solid var(--line);border-radius:9px;margin:0 0 10px;padding:4px 12px;background:#fff}
  .stack td,.tbl .stack td.long{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;border:0;border-bottom:1px dashed #eee6d6;padding:7px 0;white-space:normal;min-width:0;text-align:right}
  .stack td:last-child{border-bottom:0}.stack td::before{content:attr(data-label);color:var(--muted);font-weight:600;text-align:left;flex:0 0 auto;max-width:45%}
  .stack td[data-label=""]::before{display:none}.stack td[data-label=""]{justify-content:flex-start;flex-wrap:wrap;text-align:left}
  .stack td[colspan]{display:block;text-align:left}
  .stack form.inline{display:inline-flex;flex-wrap:wrap;gap:6px;margin:2px 6px 2px 0}
}
.nowrap-row{flex-wrap:nowrap;align-items:center}.w-xs{width:110px!important}td.nowrap{white-space:nowrap}
.iblink{border-color:#e6d49a;background:#fffbea}.iblink h3{margin-top:0}
