:root{--bg: #0a0b0f;--surface: #101219;--surface-2: #171a23;--surface-3: #1f232e;--border: rgba(255, 255, 255, .07);--border-2: rgba(255, 255, 255, .12);--text: #e9ebf2;--text-2: #a7aebf;--muted: #6b7386;--accent: #2bd98c;--accent-hover: #4fe3a2;--accent-dim: rgba(43, 217, 140, .12);--accent-ink: #05180e;--iris: #7c8cff;--amber: #f0b429;--danger: #ff6b6b;--danger-dim: rgba(255, 107, 107, .11);--amber-dim: rgba(240, 180, 41, .11);--iris-dim: rgba(124, 140, 255, .12);--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-xl: 20px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -14px rgba(0, 0, 0, .9);--shadow-lg: 0 1px 3px rgba(0, 0, 0, .5), 0 24px 48px -20px rgba(0, 0, 0, .95);--ring: 0 0 0 3px rgba(43, 217, 140, .22);--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--display: "Inter Tight", "Inter", -apple-system, "Segoe UI", sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--sidebar-w: 244px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:0 0 auto;height:420px;pointer-events:none;z-index:0;background:radial-gradient(900px 320px at 18% -8%,rgba(43,217,140,.07),transparent 70%),radial-gradient(700px 280px at 82% -12%,rgba(124,140,255,.06),transparent 70%)}a{color:var(--accent);text-decoration:none;transition:color .15s ease}a:hover{color:var(--accent-hover)}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.021em;color:var(--text);margin:0}h1{font-size:1.6rem;font-weight:650;line-height:1.2}h2{font-size:1.06rem;font-weight:600;line-height:1.3;margin-bottom:14px}h3{font-size:.94rem;font-weight:600;margin-bottom:8px}p{margin:0 0 12px}p:last-child{margin-bottom:0}code,pre,.mono{font-family:var(--mono);font-size:.86em}code{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:1px 5px}.muted{color:var(--muted)}.text-2{color:var(--text-2)}.sm{font-size:.82rem}.hint{font-size:.79rem;color:var(--muted);margin-top:6px;line-height:1.45}.num{font-variant-numeric:tabular-nums}.page{position:relative;z-index:1;padding:34px 36px 64px;max-width:1200px}.page-head{margin-bottom:26px}.page-head.row{align-items:flex-start;gap:16px}.page-head>div:first-child{min-width:0}.page-head p{color:var(--muted);margin:5px 0 0;font-size:.92rem;max-width:62ch}.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.card:before{content:"";position:absolute;inset:0 0 auto;height:1px;border-radius:var(--r-lg) var(--r-lg) 0 0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.09),transparent)}.card>:last-child{margin-bottom:0}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 15px;border-radius:var(--r-md);border:1px solid var(--border-2);background:var(--surface-2);color:var(--text);cursor:pointer;font-family:inherit;font-size:.885rem;font-weight:500;line-height:1.2;white-space:nowrap;transition:background .15s ease,border-color .15s ease,transform .06s ease,box-shadow .15s ease}button:hover:not(:disabled),.btn:hover{background:var(--surface-3);border-color:#fff3}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;box-shadow:var(--ring)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 6px 20px -8px #2bd98c99}button.ghost{background:transparent;border-color:var(--border-2);color:var(--text-2)}button.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}button.danger{background:transparent;color:var(--danger);border-color:#ff6b6b47}button.danger:hover:not(:disabled){background:var(--danger-dim);border-color:var(--danger)}button.sm{padding:6px 11px;font-size:.82rem}label{display:block;font-size:.82rem;color:var(--text-2);margin-bottom:6px;font-weight:500}input,textarea,select{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--border-2);border-radius:var(--r-md);color:var(--text);font-family:inherit;font-size:.92rem;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}input::placeholder,textarea::placeholder{color:var(--muted)}input:hover,textarea:hover,select:hover{border-color:#ffffff2e}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring);background:var(--surface)}textarea{resize:vertical;min-height:84px;line-height:1.55}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' stroke='%236b7386' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:34px}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent);cursor:pointer}input[type=file]{padding:9px;cursor:pointer;color:var(--text-2);font-size:.86rem}input[type=file]::file-selector-button{margin-right:12px;padding:6px 13px;border-radius:var(--r-sm);border:1px solid var(--border-2);background:var(--surface-2);color:var(--text);font:inherit;font-size:.84rem;cursor:pointer}.field{margin-bottom:16px}table{width:100%;border-collapse:collapse;font-size:.9rem}th{text-align:left;padding:0 12px 10px;color:var(--muted);font-weight:500;font-size:.79rem;border-bottom:1px solid var(--border)}td{padding:12px;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr{transition:background .12s ease}tbody tr:hover td{background:#ffffff06}.r{text-align:right}.pos{color:var(--accent)}.neg{color:var(--danger)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--r-pill);font-size:.75rem;font-weight:500;background:var(--surface-2);border:1px solid var(--border-2);color:var(--text-2);white-space:nowrap}.badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.9}.badge.ok{color:var(--accent);border-color:#2bd98c4d;background:var(--accent-dim)}.badge.warn{color:var(--amber);border-color:#f0b4294d;background:var(--amber-dim)}.badge.err{color:var(--danger);border-color:#ff6b6b4d;background:var(--danger-dim)}.error,.notice,.success{display:flex;gap:10px;padding:12px 14px;border-radius:var(--r-md);margin-bottom:14px;font-size:.88rem;line-height:1.5;border:1px solid}.error{background:var(--danger-dim);border-color:#ff6b6b4d;color:#ffb3b3}.notice{background:var(--amber-dim);border-color:#f0b42947;color:#f3d08a}.success{background:var(--accent-dim);border-color:#2bd98c4d;color:#9df0c6}.notice.err{background:var(--danger-dim);border-color:#ff6b6b4d;color:#ffb3b3}.notice a,.error a,.success a{color:inherit;text-decoration:underline}.stat{font-family:var(--display);font-size:2rem;font-weight:650;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}.stat-label{color:var(--muted);font-size:.82rem;margin-top:3px}.empty{color:var(--muted);text-align:center;padding:44px 24px;font-size:.92rem}*{scrollbar-width:thin;scrollbar-color:var(--surface-3) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:var(--r-pill);border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#2b3040}@media (max-width: 720px){.page{padding:22px 18px 56px}h1{font-size:1.36rem}.stat{font-size:1.7rem}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
