*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f7fb;color:#1a1a2e}a{color:#2563eb;text-decoration:none}.layout{min-height:100vh}.header{background:#1e293b;color:#fff;padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between}.header h1{font-size:18px;margin:0;font-weight:600}.header nav a{color:#cbd5e1;margin-left:16px}.header nav a:hover{color:#fff}.container{max-width:1100px;margin:24px auto;padding:0 16px}.card{background:#fff;border-radius:8px;padding:24px;box-shadow:0 1px 3px #00000014;margin-bottom:16px}.card h2{margin:0 0 16px;font-size:18px}.form-group{margin-bottom:12px}.form-group label{display:block;font-size:13px;color:#64748b;margin-bottom:4px}input,select,textarea{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}button{padding:8px 16px;border:none;border-radius:6px;font-size:14px;cursor:pointer;background:#2563eb;color:#fff}button:hover{background:#1d4ed8}button.secondary{background:#e2e8f0;color:#334155}button.secondary:hover{background:#cbd5e1}button.danger{background:#dc2626}button.danger:hover{background:#b91c1c}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #e2e8f0;font-size:14px}th{color:#64748b;font-weight:500}.error{color:#dc2626;font-size:14px;margin-bottom:12px}.success{color:#16a34a;font-size:14px;margin-bottom:12px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:360px}.row{display:flex;gap:8px;align-items:center}.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.badge.active{background:#dcfce7;color:#166534}.badge.disabled{background:#fee2e2;color:#991b1b}.badge.prepaid{background:#dbeafe;color:#1e40af}.badge.postpaid{background:#fef3c7;color:#92400e}.plain-key{background:#f1f5f9;padding:12px;border-radius:6px;font-family:monospace;word-break:break-all;margin:8px 0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 640px){.grid-2{grid-template-columns:1fr}}
