:root{--ts-bg: #0e0e10;--ts-bg-deep: #09090b;--ts-panel: #141517;--ts-panel-2: #141416;--ts-panel-3: #1e1e20;--ts-line: #27272a;--ts-line-2: #2c2e33;--ts-line-3: #3f4148;--ts-ink: #ededf0;--ts-muted: #a1a1aa;--ts-faint: #71717a;--ts-accent: #f59e0b;--ts-accent-dim: rgba(245, 158, 11, .12);--ts-up: #179967;--ts-up-dim: rgba(23, 153, 103, .12);--ts-down: #ef4444;--ts-down-dim: rgba(239, 68, 68, .12);--ts-info: #2563eb;--ts-telegram: #25d366;--ts-twitter: #1da1f2;--ts-tg-blue: #0077b5;--ts-facebook: #4267b2;--ts-radius: 10px;--ts-radius-lg: 14px;--ts-sidebar-w: 248px;--ts-sidebar-collapsed-w: 64px;--ts-header-h: 56px;--ts-font: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ts-font-sans: "Sora", -apple-system, "PingFang SC", "Noto Sans SC", system-ui, sans-serif;--ts-transition: .15s cubic-bezier(.4, 0, .2, 1)}.dashboard-theme.light{--ts-bg: #fafafa;--ts-bg-deep: #f4f4f5;--ts-panel: #ffffff;--ts-panel-2: #fafafa;--ts-panel-3: #f4f4f5;--ts-line: #e4e4e7;--ts-line-2: #d4d4d8;--ts-line-3: #a1a1aa;--ts-ink: #18181b;--ts-muted: #52525b;--ts-faint: #a1a1aa}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{height:100%}body{background:var(--ts-bg);color:var(--ts-ink);font-family:var(--ts-font-sans);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;transition:background var(--ts-transition),color var(--ts-transition)}.mono{font-family:var(--ts-font)}::selection{background:var(--ts-accent);color:#0e0e10}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}.panel{background:var(--ts-panel);border:1px solid var(--ts-line);border-radius:var(--ts-radius-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 14px;border:1px solid transparent;border-radius:var(--ts-radius);font-family:var(--ts-font);font-size:13px;font-weight:500;cursor:pointer;transition:background var(--ts-transition),border-color var(--ts-transition),color var(--ts-transition);white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--ts-accent);color:#140f04}.btn-primary:hover:not(:disabled){background:#fbbf24}.btn-ghost{background:transparent;border-color:var(--ts-line-2);color:var(--ts-ink)}.btn-ghost:hover:not(:disabled){border-color:var(--ts-accent);color:var(--ts-accent)}.btn-danger{background:transparent;border-color:var(--ts-down);color:var(--ts-down)}.btn-danger:hover:not(:disabled){background:var(--ts-down-dim)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-family:var(--ts-font);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ts-faint)}.input{width:100%;background:var(--ts-bg-deep);border:1px solid var(--ts-line-2);border-radius:var(--ts-radius);color:var(--ts-ink);font-family:var(--ts-font);font-size:13px;padding:9px 11px;transition:border-color var(--ts-transition)}.input:focus{outline:none;border-color:var(--ts-accent)}.input::placeholder{color:var(--ts-faint)}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:99px;font-family:var(--ts-font);font-size:11px;border:1px solid var(--ts-line-2);color:var(--ts-muted)}.badge-up{color:var(--ts-up);border-color:var(--ts-up);background:var(--ts-up-dim)}.badge-down{color:var(--ts-down);border-color:var(--ts-down);background:var(--ts-down-dim)}.badge-accent{color:var(--ts-accent);border-color:var(--ts-accent);background:var(--ts-accent-dim)}.up{color:var(--ts-up)}.down{color:var(--ts-down)}.table{width:100%;border-collapse:collapse;font-family:var(--ts-font);font-size:13px}.table th{text-align:left;padding:9px 12px;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ts-faint);border-bottom:1px solid var(--ts-line);font-weight:500}.table td{padding:10px 12px;border-bottom:1px solid var(--ts-line)}.table tbody tr:hover{background:var(--ts-panel-2)}.empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:56px 20px;text-align:center;color:var(--ts-faint)}.empty h3{font-size:16px;color:var(--ts-ink);font-weight:600}.empty p{font-size:13px;max-width:380px}.skeleton{background:linear-gradient(90deg,var(--ts-panel-2) 25%,var(--ts-panel-3) 50%,var(--ts-panel-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:6px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
