:root{--green:#128c7e;--green-d:#075e54;--green-l:#25d366;--bg:#eef1f4;--card:#fff;--text:#111b21;--muted:#667781;--border:#e3e8ec;--danger:#e11d48;--danger-bg:#fef2f2;--ok:#0f9d58;--ok-bg:#ecfdf3;--warn:#b45309;--warn-bg:#fffbeb;--radius:14px;--shadow:0 1px 3px #00000014, 0 8px 24px #0000000d;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:15px/1.5 var(--sans);color:var(--text)}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--green);text-decoration:none}h1,h2,h3{color:var(--text);margin:0}.topbar{background:linear-gradient(135deg, var(--green-d), var(--green));color:#fff;justify-content:space-between;align-items:center;height:58px;padding:0 20px;display:flex;box-shadow:0 2px 10px #075e5440}.brand{letter-spacing:.2px;align-items:center;gap:8px;font-size:1.05rem;font-weight:800;display:flex}.brand-logo{font-size:1.25rem}.nav{align-items:center;gap:4px;display:flex}.nav a{color:#ffffffd9;cursor:pointer;border-radius:9px;padding:8px 14px;font-size:.9rem;font-weight:600;transition:background .15s,color .15s}.nav a:hover{color:#fff;background:#ffffff1f}.nav a.active{color:#fff;background:#fff3}.nav-logout{opacity:.9}.container{max-width:760px;margin:28px auto;padding:0 16px}.page-head{margin-bottom:16px}.page-head h2{font-size:1.4rem;font-weight:800}.page-head p{color:var(--muted);margin-top:4px;font-size:.9rem}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.card+.card{margin-top:16px}.field{gap:5px;margin-bottom:14px;display:grid}.field label{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:.78rem;font-weight:700}.field .hint{color:var(--muted);text-transform:none;letter-spacing:0;font-size:.76rem;font-weight:400}input,select{border:1px solid var(--border);background:#fff;border-radius:10px;outline:none;width:100%;padding:11px 13px;font-family:inherit;font-size:.95rem;transition:border .15s,box-shadow .15s}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #128c7e1f}.btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:7px;padding:11px 18px;font-size:.92rem;font-weight:700;transition:all .15s;display:inline-flex}.btn:hover{background:#f6f8f9}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--green);border-color:var(--green);color:#fff}.btn-primary:hover{background:var(--green-d)}.btn-block{width:100%}.btn-sm{border-radius:8px;padding:7px 12px;font-size:.82rem}.steps{gap:8px;margin-bottom:18px;display:flex}.step{text-align:center;color:var(--muted);background:#f3f6f7;border-radius:9px;flex:1;padding:8px;font-size:.8rem;font-weight:700}.step.active{color:var(--green-d);background:#128c7e1f}.step.done{background:var(--ok-bg);color:var(--ok)}.alert{border:1px solid #0000;border-radius:10px;margin-bottom:14px;padding:11px 14px;font-size:.88rem}.alert-error{background:var(--danger-bg);color:var(--danger);border-color:#fecaca}.alert-ok{background:var(--ok-bg);color:var(--ok);border-color:#bbf7d0}.alert-info{background:var(--warn-bg);color:var(--warn);border-color:#fde68a}.badge{text-transform:uppercase;letter-spacing:.3px;border-radius:10px;padding:2px 9px;font-size:.72rem;font-weight:800;display:inline-block}.badge.active{background:var(--ok-bg);color:var(--ok)}.badge.pending{background:var(--warn-bg);color:var(--warn)}.badge.disabled{color:#64748b;background:#f1f5f9}table.tbl{border-collapse:collapse;width:100%;font-size:.88rem}table.tbl th{text-align:left;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);border-bottom:1px solid var(--border);padding:8px 10px;font-size:.72rem}table.tbl td{border-bottom:1px solid #f1f4f6;padding:10px}.kv{grid-template-columns:160px 1fr;gap:6px 12px;font-size:.9rem;display:grid}.kv .k{color:var(--muted);font-weight:600}.codebox{color:#c7f9e9;font-family:var(--mono);background:#0b141a;border-radius:10px;max-height:320px;margin:0;padding:14px;font-size:.8rem;overflow:auto}.muted{color:var(--muted)}
