:root{--ink: #1a1d23;--muted: #6b7280;--brand: #0f4c81;--bg: #f5f6f8;--card: #ffffff;--line: #e5e7eb;--ok: #127a4b;--err: #b42318;--warn: #b54708}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 -apple-system,Segoe UI,Roboto,Helvetica Neue,PingFang TC,Microsoft JhengHei,sans-serif}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:1.4rem;margin:0 0 4px}h2{font-size:1.05rem;margin:0 0 10px}.app{display:flex;min-height:100vh}.sidebar{width:210px;flex:0 0 210px;background:var(--card);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:2px}.sidebar .logo{font-weight:700;color:var(--brand);font-size:1.1rem;padding:4px 10px 14px}.sidebar a{padding:8px 10px;border-radius:8px;color:var(--ink);font-weight:500}.sidebar a:hover{background:var(--bg);text-decoration:none}.sidebar a.active{background:var(--brand);color:#fff}.sidebar .spacer{flex:1}.sidebar .whoami{font-size:.8rem;color:var(--muted);padding:8px 10px;border-top:1px solid var(--line)}.main{flex:1;padding:24px 28px;max-width:1100px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:16px}.muted{color:var(--muted);font-size:.9rem}.error-box{background:#fef3f2;border:1px solid #fecdca;color:var(--err);padding:10px 14px;border-radius:8px;margin:10px 0;font-size:.92rem}.ok-box{background:#edfcf3;border:1px solid #b7e4c7;color:var(--ok);padding:10px 14px;border-radius:8px;margin:10px 0;font-size:.92rem}table.list{width:100%;border-collapse:collapse}table.list th{text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}table.list td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}table.list tr:last-child td{border-bottom:0}table.list tr.clickable:hover{background:var(--bg);cursor:pointer}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.76rem;font-weight:600;background:var(--bg);color:var(--muted)}.badge.completed,.badge.clean,.badge.delivered,.badge.ready,.badge.active-good{background:#edfcf3;color:var(--ok)}.badge.sent,.badge.in_progress,.badge.pending,.badge.pending_scan{background:#eff6ff;color:var(--brand)}.badge.declined,.badge.voided,.badge.expired,.badge.rejected,.badge.failed,.badge.revoked{background:#fef3f2;color:var(--err)}button,.btn{font:inherit;font-weight:600;padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;display:inline-block}button.primary,.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.danger{color:var(--err)}button:disabled{opacity:.5;cursor:default}button+button,.btn+button,button+.btn{margin-left:8px}label{display:block;font-weight:600;font-size:.85rem;margin:12px 0 4px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],select,textarea{width:100%;padding:9px 11px;font:inherit;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.row{display:flex;gap:12px}.row>*{flex:1}.form-actions{margin-top:16px}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:20px}.auth-card{width:100%;max-width:400px}.auth-card .logo{text-align:center;font-weight:700;color:var(--brand);font-size:1.3rem;margin-bottom:14px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}.tabs button{border:0;background:none;border-radius:8px 8px 0 0;font-weight:500;color:var(--muted)}.tabs button.active{color:var(--brand);font-weight:700;box-shadow:inset 0 -2px 0 var(--brand)}.stat-row{display:flex;gap:14px;flex-wrap:wrap}.stat{flex:1;min-width:140px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.stat .n{font-size:1.5rem;font-weight:700}.stat .l{color:var(--muted);font-size:.82rem}.steps{display:flex;gap:8px;margin-bottom:16px}.steps .step{flex:1;text-align:center;padding:8px;border-radius:8px;background:var(--card);border:1px solid var(--line);color:var(--muted);font-size:.85rem;font-weight:600}.steps .step.on{border-color:var(--brand);color:var(--brand)}.pdf-stage{position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.pdf-stage canvas{display:block;width:100%;height:auto}.field-box{position:absolute;border:2px dashed var(--brand);background:#0f4c8114;border-radius:4px;font-size:.7rem;color:var(--brand);font-weight:700;display:flex;align-items:center;justify-content:center;cursor:move;-webkit-user-select:none;user-select:none}.field-box .del{position:absolute;top:-10px;right:-10px;width:20px;height:20px;border-radius:50%;background:var(--err);color:#fff;border:0;font-size:.7rem;line-height:1;padding:0}code.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;background:var(--bg);padding:2px 6px;border-radius:6px;word-break:break-all}.spinner{color:var(--muted);padding:24px;text-align:center}
