:root{--bg: #f6f7fb;--surface: #ffffff;--sunken: #f0f2f8;--line: #e3e6ee;--line-strong: #cfd4e0;--text: #1b1e2b;--muted: #626a80;--faint: #8a91a5;--accent: #4f46e5;--accent-hover: #4338ca;--accent-soft: #eef0ff;--ok: #12805c;--warn: #a15c00;--bad: #c2352b;--ok-soft: #e6f6ef;--warn-soft: #fff4e0;--bad-soft: #fdecea;--info-soft: #eaf2ff;--shadow: 0 1px 2px rgba(20, 24, 40, .06), 0 4px 16px rgba(20, 24, 40, .05);--radius: 12px;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #111320;--surface: #1a1d2e;--sunken: #151827;--line: #2a2e44;--line-strong: #3a3f5a;--text: #e8e9f2;--muted: #a1a6bd;--faint: #7a809a;--accent: #8b85ff;--accent-hover: #a39eff;--accent-soft: #252847;--ok: #4fd1a1;--warn: #f5b454;--bad: #ff7a70;--ok-soft: #173229;--warn-soft: #36291a;--bad-soft: #3a1f22;--info-soft: #1d2745;--shadow: none;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}body{font:15px/1.55 var(--font);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--mono);font-size:13px}.muted{color:var(--muted)}.faint{color:var(--faint)}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:16px}.grow{flex:1}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.header{background:var(--surface);border-bottom:1px solid var(--line)}.header-inner{max-width:1040px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;color:var(--text)}.logo:hover{text-decoration:none}.logo .logo-mark{width:28px;height:28px;flex:none}.nav{display:flex;gap:4px;flex-wrap:wrap}.nav a{padding:6px 12px;border-radius:999px;color:var(--muted);font-weight:500}.nav a:hover{background:var(--sunken);color:var(--text);text-decoration:none}.nav a.active{background:var(--accent-soft);color:var(--accent)}.main{max-width:1040px;margin:0 auto;padding:28px 20px 60px}.main h1{font-size:26px;margin:0 0 4px;letter-spacing:-.3px}.main h2{font-size:18px;margin:0 0 12px}.lead{color:var(--muted);margin:0 0 24px}.offline{background:var(--warn);color:#fff;text-align:center;padding:8px;font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 18px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font-weight:600;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:var(--sunken)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-hover)}.btn.danger{color:var(--bad);border-color:var(--bad-soft);background:var(--bad-soft)}.btn.link{border:0;background:none;color:var(--accent);padding:0 4px;min-height:0;font-weight:500}.btn.small{min-height:32px;padding:0 12px;font-size:14px}.btn svg{width:18px;height:18px}.input,.select{width:100%;min-height:44px;padding:0 14px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);outline:none}.textarea{width:100%;min-height:90px;padding:10px 14px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text)}.input:focus,.select:focus,.textarea:focus,.btn:focus-visible{outline:3px solid var(--accent-soft);border-color:var(--accent)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-weight:600;font-size:14px}.field .hint{color:var(--muted);font-size:13px}.check{display:inline-flex;gap:8px;align-items:center;cursor:pointer}.check input{width:18px;height:18px;accent-color:var(--accent)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-body{padding:20px}.card+.card{margin-top:16px}.license{display:grid;grid-template-columns:1fr auto;gap:16px;padding:20px}.license h3{margin:0;font-size:18px}.license .meta{display:flex;gap:20px;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:14px}.license .meta strong{color:var(--text);font-weight:600}.license .actions{display:flex;flex-direction:column;gap:8px;align-items:stretch;min-width:190px}.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;font-size:13px;font-weight:600;background:var(--sunken);color:var(--muted)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.info{background:var(--info-soft);color:var(--accent)}.key{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;background:var(--sunken)}.notice{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;border-radius:10px;margin-bottom:10px;border:1px solid transparent}.notice.DANGER{background:var(--bad-soft);color:var(--bad)}.notice.WARNING{background:var(--warn-soft);color:var(--warn)}.notice.INFO{background:var(--info-soft);color:var(--accent)}.notice.ok{background:var(--ok-soft);color:var(--ok)}.list{width:100%;border-collapse:collapse}.list th{text-align:left;font-size:13px;color:var(--muted);font-weight:600;padding:10px 16px;border-bottom:1px solid var(--line)}.list td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}.list tr:last-child td{border-bottom:0}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;background:var(--faint)}.dot.on{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.overlay{position:fixed;inset:0;background:#0f121e73;z-index:50}.modal{position:fixed;left:50%;top:12vh;transform:translate(-50%);z-index:51;width:min(520px,calc(100vw - 24px));background:var(--surface);border-radius:16px;box-shadow:0 24px 64px #0a0c1e4d;max-height:76vh;display:flex;flex-direction:column}.modal-head{padding:20px 24px 0;font-size:18px;font-weight:700}.modal-body{padding:16px 24px;overflow:auto;display:flex;flex-direction:column;gap:14px}.modal-foot{padding:0 24px 20px;display:flex;gap:10px;justify-content:flex-end}.state{text-align:center;padding:48px 20px;color:var(--muted)}.state strong{display:block;color:var(--text);font-size:17px;margin-bottom:6px}.skeleton{height:96px;border-radius:var(--radius);background:linear-gradient(90deg,var(--surface),var(--sunken),var(--surface));background-size:200% 100%;animation:shimmer 1.2s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.toasts{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{padding:12px 18px;border-radius:12px;background:var(--text);color:var(--surface);box-shadow:var(--shadow);max-width:min(480px,calc(100vw - 32px))}.toast.bad{background:var(--bad);color:#fff}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.auth{width:min(420px,100%)}.auth .card-body{padding:28px}.auth h1{font-size:22px;margin:12px 0 4px}@media(max-width:720px){body{font-size:15px}.main{padding:20px 14px 48px}.license{grid-template-columns:1fr}.header-inner{gap:10px;padding:10px 14px}.header-inner .nav{order:3;flex:1 0 100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.header-inner .customer{display:none}.header-inner .me-link{margin-left:auto}.license .actions{min-width:0}.hide-sm{display:none}.list th,.list td{padding:10px 12px}}.avatar{display:inline-block;flex:none;border-radius:6px;object-fit:cover;background:var(--sunken);vertical-align:middle}.avatar.pixel{image-rendering:pixelated}.avatar.initials{display:inline-grid;place-items:center;color:var(--muted);font-weight:600;border:1px solid var(--line);-webkit-user-select:none;user-select:none}.me-link{display:inline-flex;border-radius:8px}.me-link:hover .avatar,.me-link.active .avatar{outline:2px solid var(--accent-soft);outline-offset:1px}.profile-photo{display:flex;align-items:center;gap:14px}.update-banner{position:fixed;left:50%;bottom:16px;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:12px;max-width:calc(100% - 32px);padding:8px 8px 8px 16px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--shadow);font-weight:600}
