:root{--line:#06c755;--line-dark:#05a648;--bg:#f5f6f8;--card:#fff;--text:#1f2328;--muted:#6b7280;--border:#e5e7eb;--normal:#16a34a;--warning:#f59e0b;--danger:#dc2626;--radius:14px;--shadow:0 1px 3px rgba(0,0,0,.08);--maxw:560px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Sarabun,Noto Sans Thai,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.app-shell{margin:0 auto;max-width:var(--maxw);min-height:100vh;padding-bottom:76px}.container{padding:16px}.topbar{align-items:center;background:var(--line);color:#fff;display:flex;font-weight:600;gap:10px;padding:14px 16px;position:sticky;top:0;z-index:20}.topbar .brand{font-size:18px}.topbar .spacer{flex:1}.topbar .avatar{background:#ffffff4d;border-radius:50%;height:30px;-o-object-fit:cover;object-fit:cover;width:30px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:14px;padding:16px}.card h3{font-size:15px;margin:0 0 12px}.stat-grid{display:grid;gap:12px;grid-template-columns:1fr 1fr}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.stat .label{color:var(--muted);font-size:12px}.stat .value{font-size:22px;font-weight:700;margin-top:4px}.progress{background:#eef0f3;border-radius:999px;height:10px;margin:6px 0;overflow:hidden}.progress>span{border-radius:999px;display:block;height:100%;transition:width .3s}.progress.normal>span{background:var(--normal)}.progress.warning>span{background:var(--warning)}.progress.danger>span{background:var(--danger)}.badge{border-radius:999px;display:inline-block;font-size:12px;font-weight:600;padding:2px 10px}.badge.normal{background:#dcfce7;color:#166534}.badge.warning{background:#fef3c7;color:#92400e}.badge.danger{background:#fee2e2;color:#991b1b}.badge.manual_review,.badge.pending{background:#e5e7eb;color:#374151}.badge.success{background:#dcfce7;color:#166534}.badge.failed{background:#fee2e2;color:#991b1b}.btn{align-items:center;background:var(--line);border:none;border-radius:10px;color:#fff;cursor:pointer;display:inline-flex;font-size:15px;font-weight:600;gap:6px;justify-content:center;padding:12px 16px;width:100%}.btn:disabled{cursor:not-allowed;opacity:.5}.btn.secondary{background:#eef0f3;color:var(--text)}.btn.danger{background:var(--danger)}.btn.small{font-size:13px;padding:8px 12px;width:auto}.field{margin-bottom:12px}.field label{color:var(--muted);display:block;font-size:13px;margin-bottom:4px}.field input,.field select{background:#fff;border:1px solid var(--border);border-radius:10px;font-family:inherit;font-size:15px;padding:11px 12px;width:100%}.list-row{align-items:center;border-bottom:1px solid var(--border);display:flex;gap:10px;padding:12px 0}.list-row:last-child{border-bottom:none}.list-row .grow{flex:1;min-width:0}.list-row .title{font-size:14px;font-weight:600}.list-row .sub{color:var(--muted);font-size:12px}.list-row .amount{font-weight:700;white-space:nowrap}.bottom-nav{background:#fff;border-top:1px solid var(--border);bottom:0;display:flex;justify-content:space-around;left:50%;max-width:var(--maxw);padding:6px 0 max(6px,env(safe-area-inset-bottom));position:fixed;transform:translate(-50%);width:100%;z-index:30}.bottom-nav a{color:var(--muted);flex:1;font-size:11px;padding:4px 0;text-align:center;text-decoration:none}.bottom-nav a.router-link-active{color:var(--line)}.bottom-nav .ic{display:block;font-size:20px}.muted{color:var(--muted)}.center{text-align:center}.spinner{animation:spin .8s linear infinite;border:3px solid #ddd;border-radius:50%;border-top:3px solid var(--line);height:34px;margin:40px auto;width:34px}@keyframes spin{to{transform:rotate(1turn)}}.state-msg{color:var(--muted);padding:60px 20px;text-align:center}a.link{color:var(--line);text-decoration:none}.row-between{align-items:center;display:flex;gap:10px;justify-content:space-between}.toast{background:#111;border-radius:10px;bottom:90px;color:#fff;font-size:14px;left:50%;max-width:90%;padding:10px 16px;position:fixed;transform:translate(-50%);z-index:50}
