*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:#f4f5f7;color:#222;font-size:14px}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.layout{display:flex;min-height:100vh}.sidebar{width:220px;background:#1f2937;color:#e5e7eb;padding:20px 0}.sidebar h2{margin:0 20px 16px;font-size:16px;color:#fff}.sidebar nav a{display:block;padding:10px 20px;color:#d1d5db;border-left:3px solid transparent}.sidebar nav a:hover{background:#111827;text-decoration:none}.sidebar nav a.active{background:#111827;border-left-color:#3b82f6;color:#fff}.sidebar .logout{margin:20px;padding:8px 12px;background:#374151;color:#fff;border:none;border-radius:4px;cursor:pointer;width:calc(100% - 40px)}.main{flex:1;padding:24px 32px;overflow:auto}.main h1{margin-top:0}.card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:20px;margin-bottom:16px;color:#222}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px}.stat-card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:16px 20px;color:#222}.stat-card .label{color:#6b7280;font-size:12px}.stat-card .value{font-size:22px;font-weight:600;margin-top:4px}table{width:100%;border-collapse:collapse;background:#fff}table th,table td{padding:10px 12px;border-bottom:1px solid #e5e7eb;text-align:left;color:#222}table th{background:#f9fafb;font-weight:600}table tr:hover td{background:#fafbfc}.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.badge.active,.badge.captured,.badge.confirmed{background:#dcfce7;color:#166534}.badge.pending,.badge.created,.badge.approved{background:#fef3c7;color:#92400e}.badge.frozen,.badge.failed,.badge.rejected,.badge.disabled,.badge.expired{background:#fee2e2;color:#991b1b}button,.btn{padding:8px 16px;border:1px solid #d1d5db;background:#fff;color:#222;border-radius:4px;cursor:pointer;font-size:13px}button:hover,.btn:hover{background:#f3f4f6}button.primary,.btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}button.primary:hover{background:#1d4ed8}button.danger{background:#dc2626;border-color:#dc2626;color:#fff}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{width:100%;padding:8px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:13px;color:#222;background:#fff}.form-row{margin-bottom:12px}.form-row label{display:block;font-size:12px;color:#6b7280;margin-bottom:4px}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#f4f5f7}.login-box{width:360px;background:#fff;padding:28px;border-radius:8px;box-shadow:0 4px 12px #0000000d;color:#222}.login-box h2{margin-top:0}.error-msg{color:#dc2626;font-size:13px;margin:8px 0}.ok-msg{color:#16a34a;font-size:13px;margin:8px 0}.row-actions button{margin-right:6px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:8px;padding:24px;width:480px;max-width:90vw;color:#222}.modal h3{margin-top:0}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}code,.mono{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:#f3f4f6;padding:1px 6px;border-radius:3px;color:#222}
