:root{--bg:#f6f7f5;--surf:#fff;--ink:#1d2526;--mute:#5f6b6d;--line:#dfe3e1;--acc:#0f5f73;--accsoft:#e3f0f2;--ok:#2f7d4f;--warn:#a86a0a;--bad:#b23b3b;--info:#3d5fa8;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
[data-theme=dark]{--bg:#141819;--surf:#1d2324;--ink:#e6eaea;--mute:#9aa6a8;--line:#2e3638;--acc:#4fb3c8;--accsoft:#1f3438}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45}
.top{display:flex;align-items:center;gap:20px;padding:10px 22px;background:var(--surf);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;flex-wrap:wrap}
.brand{display:flex;gap:8px;align-items:center;color:var(--acc);font-size:17px}.brand b{color:var(--ink)}
nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}nav a{padding:6px 9px;font-size:14px;white-space:nowrap;border-radius:6px;color:var(--mute);text-decoration:none}nav a.on,nav a:hover{background:var(--accsoft);color:var(--acc)}
.role{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--mute)}
main{max-width:1180px;margin:0 auto;padding:24px 22px 60px}h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:0 0 12px}.sub{color:var(--mute);margin:0 0 20px}
.card{background:var(--surf);border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:16px}
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.kpi .n{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.kpi .l{color:var(--mute);font-size:13px}
label.f{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--mute)}
input,select,textarea{font:inherit;color:var(--ink);background:var(--surf);border:1px solid var(--line);border-radius:6px;padding:8px 10px}textarea{min-height:80px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--acc);outline-offset:-1px}
button{font:inherit;cursor:pointer;border:1px solid var(--acc);background:var(--acc);color:#fff;border-radius:6px;padding:8px 14px}button.ghost{background:transparent;color:var(--acc)}button.danger{background:var(--bad);border-color:var(--bad)}button:disabled{opacity:.5;cursor:not-allowed}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);font-size:14px}th{color:var(--mute);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}tr.row{cursor:pointer}tr.row:hover{background:var(--accsoft)}
.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;background:var(--accsoft);color:var(--acc)}
.s-Draft{background:#eceeed;color:#555}.s-SenttoPlan,.s-QuestionsPending{background:#e6ecf8;color:var(--info)}.s-UnderReview{background:#fbf0dc;color:var(--warn)}.s-Approved{background:#e2f2e8;color:var(--ok)}.s-Denied{background:#f8e3e3;color:var(--bad)}.s-Appeal{background:#f3e6f6;color:#7a3d8a}.s-Archived{background:#eee;color:#888}
.bar{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:14px}.bar>*{flex:0 0 auto}.sp{flex:1}
.steps{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}.steps span{padding:6px 12px;border-radius:99px;background:var(--surf);border:1px solid var(--line);font-size:13px;color:var(--mute)}.steps span.on{background:var(--acc);color:#fff;border-color:var(--acc)}
.tl{border-left:2px solid var(--line);margin-left:6px;padding-left:16px}.tl div{margin-bottom:12px;position:relative}.tl div:before{content:"";position:absolute;left:-22px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--acc)}.tl small{color:var(--mute);display:block}
.q{padding:12px 0;border-bottom:1px dashed var(--line)}.muted{color:var(--mute)}.right{text-align:right}
#toast{position:fixed;bottom:20px;right:20px;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:8px;opacity:0;transition:.25s;pointer-events:none}#toast.show{opacity:1}
.key{font-family:ui-monospace,monospace;letter-spacing:.08em;font-weight:700}
@media print{.top,.noprint{display:none}main{padding:0}.card{border:none}}
.auth{max-width:420px;margin:60px auto}.err{color:var(--bad);font-weight:600}.small{font-size:12.5px}.mb{margin-bottom:16px}.m0{margin:0}.span{grid-column:1/-1}.bad{color:var(--bad)}
.banner{background:var(--accsoft);border-color:var(--acc)}.okb{border-color:var(--ok)}.badb{border-color:var(--bad)}
.okbtn{background:var(--ok);border-color:var(--ok)}button.small,.btn.small{padding:4px 10px;font-size:13px}
.btn{display:inline-block;text-decoration:none;border:1px solid var(--acc);border-radius:6px;padding:8px 14px;color:var(--acc)}
.chk{display:flex;gap:8px;align-items:flex-start;font-size:13px;margin:10px 0}.chk input{margin-top:3px}
.sig{width:100%;max-width:560px;height:160px;background:#fff;border:1px dashed var(--mute);border-radius:8px;touch-action:none;display:block}
.sigimg{max-width:320px;background:#fff;border:1px solid var(--line);border-radius:6px}
pre{background:var(--bg);border:1px solid var(--line);padding:10px;border-radius:6px;overflow:auto;font-size:12.5px;white-space:pre-wrap;word-break:break-all}
.tw{overflow-x:auto}code{font-size:13px}
.s-AwaitingSignature{background:#fdecd8;color:#9a5208}.s-Signed{background:#e1eef8;color:#1f5f8f}
@media print{.sig{display:none}}
.pk{width:100%;padding:12px;font-size:15px}.or{text-align:center;margin:10px 0}
/* demo mode */
.demo-box{border:1px dashed var(--accent,#0f766e);border-radius:10px;padding:12px 14px;margin:6px 0 14px;display:grid;gap:8px;background:rgba(15,118,110,.06)}
.demo-btns{display:flex;flex-wrap:wrap;gap:6px}
.demo-btns button{font-size:13px;padding:6px 10px}
body.demo::before{content:"DEMO MODE \00B7  fictional test data only";display:block;text-align:center;font:600 12px/1.9 system-ui,sans-serif;letter-spacing:.04em;background:#b45309;color:#fff}
.ok{color:var(--ok)}#dxh{display:block;margin-top:4px;font-weight:500}
.rules{list-style:none;padding:0;margin:0 0 4px;font-size:13.5px;color:var(--mute)}.rules li{padding:2px 0 2px 22px;position:relative}.rules li::before{content:"\25CB";position:absolute;left:2px}.rules li.met{color:var(--ok)}.rules li.met::before{content:"\2713";font-weight:700}
.err.inbox{margin:0 0 10px;padding:8px 10px;background:#fbeaea;border-radius:6px}.err.inbox[hidden]{display:none}
.docs{list-style:none;padding:0;margin:4px 0 6px}.docs li{padding:5px 0;border-bottom:1px solid var(--line)}.docs li:last-child{border-bottom:0}
.upl{display:inline-block;margin:6px 10px 4px 0;padding:6px 12px;border:1px solid var(--acc);border-radius:6px;color:var(--acc);cursor:pointer;font-weight:600}.upl input{display:none}
.docreq{display:flex;flex-direction:column;gap:4px;margin:6px 0 8px;padding:10px 12px;border:1px solid var(--line);border-left:4px solid var(--info);border-radius:6px;background:var(--surf)}.docreq.badb{border-left-color:var(--warn)}.docreq.okb{border-left-color:var(--ok)}.docreq .chk{font-size:13.5px}.docreq[hidden]{display:none}

.viewbar{position:sticky;top:0;z-index:50;background:#fff3c4;border-bottom:2px solid #c99a00;color:#4a3800;padding:8px 16px;text-align:center}
.testpill{background:#fff3c4;color:#6b5200;border:1px solid #c99a00}
.testbar{background:#fff8dc;border-color:#c99a00}
.logbox{max-height:320px;overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px;font-size:12px;white-space:pre-wrap;word-break:break-word}
.kv td{padding:4px 12px 4px 0;border:0}
#pa-answer [hidden]{display:none}

/* alerts */
#bell{position:relative;display:inline-flex;align-items:center;gap:4px}
#bellc{position:absolute;top:-6px;right:-6px;background:#c62828;color:#fff;border-radius:10px;font-size:11px;font-weight:700;padding:1px 6px;line-height:16px}
#bellp{position:fixed;top:56px;right:16px;width:min(420px,92vw);max-height:70vh;overflow:auto;z-index:50;padding:12px;box-shadow:0 8px 28px rgba(0,0,0,.22)}
#bellp .al{display:block;padding:8px 6px;border-bottom:1px solid var(--line,#ddd);color:inherit;text-decoration:none}
#bellp .al.unread{font-weight:600;background:rgba(15,95,115,.07)}
#bellp .al small{display:block;font-weight:400;opacity:.7}
#alpop{position:fixed;right:20px;bottom:70px;max-width:380px;z-index:60;background:#0f5f73;color:#fff;padding:12px 16px;border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.25);cursor:pointer}
#alpop b{display:block;margin-bottom:2px}
