:root{--bg: #F6F7F9;--surface: #FFFFFF;--surface-2: #FAFBFC;--hover: #F3F4F6;--border: #E3E6EB;--border-soft: #EEF0F3;--border-strong: #D5D9E0;--text: #14171C;--text-2: #3A4250;--muted: #5B6472;--accent: #2D5BD8;--accent-hover: #2449B5;--accent-soft: #E8EEFC;--accent-text: #1F3FA3;--link: #2346B0;--ok-bg: #E3F2E9;--ok: #1B6340;--warn-bg: #FCEFD6;--warn: #714400;--err-bg: #FCE8E6;--err: #A3221A;--err-border: #E9B4AE;--switch-off: #B9BFC9;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Inter,system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--link)}h1{margin:0;font-size:26px;font-weight:600;letter-spacing:-.01em}h2{margin:0;font-size:17px;font-weight:600}h3{margin:0;font-size:14px;font-weight:600}p{margin:0}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:13px}.nowrap{white-space:nowrap}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:16px}.spread{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.grid-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.shell{display:flex;min-height:100vh}.nav{width:232px;flex:none;background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}.nav .brand{display:flex;align-items:center;gap:10px;padding:4px 12px 20px;font-weight:600;font-size:15px}.nav a{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 12px;border-radius:8px;color:var(--text-2);text-decoration:none;font-weight:500}.nav a:hover{background:var(--border-soft);color:var(--text)}.nav a.active{background:var(--accent-soft);color:var(--accent-text)}.nav a .badge{margin-left:auto}.nav .me{margin-top:auto;padding:16px 12px 4px;border-top:1px solid var(--border-soft);display:flex;align-items:center;gap:10px;font-size:13px}.avatar{width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:var(--accent-text);display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex:none}main{flex:1;min-width:0;padding:28px 40px 64px;display:flex;flex-direction:column;gap:20px;max-width:1400px}.crumbs{font-size:13px;color:var(--muted)}.crumbs a{color:var(--muted)}@media (max-width: 860px){.shell{flex-direction:column}.nav{width:auto;height:auto;position:static;flex-direction:row;flex-wrap:wrap;padding:10px}.nav .brand{padding:4px 8px;width:100%}.nav .me{display:none}main{padding:20px 16px 48px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px}.card-pad{padding:20px}.card-head{padding:16px 20px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.tile{padding:16px 18px}.tile .n{font-size:26px;font-weight:600;margin-top:4px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap}.b-ok{background:var(--ok-bg);color:var(--ok)}.b-warn{background:var(--warn-bg);color:var(--warn)}.b-err{background:var(--err-bg);color:var(--err)}.b-neutral{background:var(--border-soft);color:var(--text-2)}.b-info{background:var(--accent-soft);color:var(--accent-text)}.dot{width:7px;height:7px;border-radius:50%;background:currentColor}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:0 14px;border-radius:8px;font:500 14px inherit;font-family:inherit;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover:not(:disabled){background:var(--hover)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-danger{border-color:var(--err-border);color:var(--err)}.btn-danger:hover:not(:disabled){background:var(--err-bg)}.btn-danger-solid{background:var(--err);border-color:var(--err);color:#fff}.btn-danger-solid:hover:not(:disabled){background:#8a1c15}.btn-sm{min-height:30px;padding:0 10px;font-size:13px}.btn-link{border:0;background:none;color:var(--link);padding:0;min-height:0;cursor:pointer;font:inherit;text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tbl-wrap{overflow-x:auto}.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface-2);white-space:nowrap}.tbl td{padding:10px 16px;border-bottom:1px solid var(--border-soft);vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.tbl tr.click{cursor:pointer}.tbl tr.click:hover td{background:var(--surface-2)}.num{text-align:right;font-variant-numeric:tabular-nums}.sw{display:inline-flex;align-items:center;gap:8px;border:0;background:none;cursor:pointer;padding:6px 0;font:inherit;color:inherit}.sw:disabled{cursor:default;opacity:.5}.sw .tr{position:relative;width:36px;height:22px;border-radius:999px;background:var(--switch-off);transition:background .15s;flex:none}.sw .kn{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:left .15s}.sw[aria-checked=true] .tr{background:var(--accent)}.sw[aria-checked=true] .kn{left:17px}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--border);overflow-x:auto}.tab{min-height:42px;padding:0 2px;border:0;background:none;font:500 14px inherit;font-family:inherit;color:var(--muted);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:6px}.tab.on{color:var(--text);border-bottom-color:var(--accent)}label.field{display:flex;flex-direction:column;gap:6px;font-weight:500;font-size:13px}label.field .hint{font-weight:400;color:var(--muted);font-size:12px}label.field .err{font-weight:400;color:var(--err);font-size:12px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;padding:8px 10px;min-height:38px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}input[aria-invalid=true]{border-color:var(--err)}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.filters>*{width:auto}.filters select,.filters input{width:auto;min-width:150px}.alert{border-radius:10px;padding:12px 16px;display:flex;gap:10px;align-items:flex-start}.alert-err{background:var(--err-bg);color:var(--err)}.alert-warn{background:var(--warn-bg);color:var(--warn)}.alert-ok{background:var(--ok-bg);color:var(--ok)}.alert-info{background:var(--accent-soft);color:var(--accent-text)}.empty{padding:32px 20px;text-align:center;color:var(--muted)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#14171c73;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;z-index:50;overflow-y:auto}.modal{background:var(--surface);border-radius:14px;width:100%;max-width:560px;box-shadow:0 20px 50px #0003}.modal-head{padding:18px 22px 0}.modal-body{padding:16px 22px;display:flex;flex-direction:column;gap:14px}.modal-foot{padding:14px 22px 18px;display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--border-soft)}.toast-wrap{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:60}.toast{background:var(--text);color:#fff;border-radius:10px;padding:12px 16px;max-width:420px;box-shadow:0 8px 24px #0003}.toast.err{background:var(--err)}pre.json{margin:0;font-family:var(--mono);font-size:12px;line-height:1.5;background:#0f1419;color:#d6deeb;border-radius:10px;padding:16px;overflow:auto;max-height:70vh;white-space:pre}.json .k{color:#82aaff}.json .s{color:#c3e88d}.json .n{color:#f78c6c}.json .b{color:#c792ea}.json .hl{background:#ffcb6b2e;display:inline}.kv{display:grid;grid-template-columns:minmax(130px,max-content) 1fr;gap:6px 16px}.kv dt{color:var(--muted)}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}.steps{display:flex;gap:8px;flex-wrap:wrap}.step{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--muted);font-weight:500;font-size:13px}.step .i{width:24px;height:24px;border-radius:50%;background:var(--border-soft);display:inline-flex;align-items:center;justify-content:center;font-size:12px}.step.on{color:var(--accent-text);border-color:var(--accent)}.step.on .i{background:var(--accent);color:#fff}.step.done .i{background:var(--ok-bg);color:var(--ok)}.thumb{width:56px;height:40px;border-radius:6px;object-fit:cover;background:var(--border-soft);display:block}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login .card{width:100%;max-width:400px}details.raw>summary{cursor:pointer;color:var(--link)}
