:root { --color-bg: #0b0c10; --color-panel: #111318; --color-fg: #e7e9ee; --color-ink: #2a2e37; --color-accent: #5dd6b2; --radius-xl: 12px; --radius-lg: 10px; --radius-md: 8px; --shadow-1: 0 6px 20px rgba(0,0,0,0.25); } * { box-sizing: border-box; } html, body, #root { height: 100%; } body { margin: 0; background: var(--color-bg); color: var(--color-fg); font: 14px/1.35 system-ui, -apple-system, Segoe UI, Roboto, sans-serif; } a { color: inherit; text-decoration: none; } .container { width: min(1100px, 100vww); margin-inline: auto; padding: 0 16px; } .muted { opacity: 0.7; } .card { background: var(--color-panel); border: 1px solid var(--color-ink); border-radius: var(--radius-xl); padding: 16px; box-shadow: var(--shadow-1); } .row { display: flex; align-items: center; } .stack { display: grid; gap: 12px; } .section-title { font-weight: 700; font-size: 16px; margin-bottom: 10px; } .input { background: #0f1116; color: var(--color-fg); border: 1px solid var(--color-ink); border-radius: var(--radius-lg); padding: 8px 10px; outline: none; } .input:focus { border-color: var(--color-accent); } .btn { background: var(--color-accent); color: #062016; border: none; border-radius: var(--radius-lg); padding: 8px 12px; font-weight: 700; cursor: pointer; } .btn[disabled] { opacity: 0.5; cursor: default; } .badge { background: var(--color-ink); border-radius: var(--radius-lg); padding: 4px 8px; font-size: 12px; } .table { width: 100%; border-collapse: separate; border-spacing: 0 8px; } .table thead th { text-align: left; font-size: 12px; opacity: 0.7; padding: 0 8px; } .table tbody tr { background: var(--color-panel); border: 1px solid var(--color-ink); border-radius: var(--radius-xl); } .table td { padding: 8px; } .toast-err { background: #b21d2a; color: white; border-radius: var(--radius-lg); padding: 10px 12px; } .border { border: 1px solid var(--color-ink); } .rounded-xl { border-radius: var(--radius-xl); } .divide-y > * + * { border-top: 1px solid var(--color-ink); } /* utility-ish */ .w-44 { width: 11rem; } .w-56 { width: 14rem; } .w-40 { width: 10rem; } .ml-auto { margin-left: auto; } .mt-2 { margin-top: 0.5rem; } .mt-3 { margin-top: 0.75rem; } .mt-4 { margin-top: 1rem; } .mb-3 { margin-bottom: 0.75rem; } .gap-2 { gap: 0.5rem; } .gap-4 { gap: 1rem; } .flex-wrap { flex-wrap: wrap; } .text-sm { font-size: 0.875rem; } .text-xl { font-size: 1.25rem; } .font-semibold { font-weight: 600; } .font-bold { font-weight: 700; } .font-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; } .bg-\[--color-ink\] { background: var(--color-ink); } .bg-\[--color-ink\]\/60 { background: color-mix(in oklab, var(--color-ink), transparent 40%); } .bg-\[--color-panel\] { background: var(--color-panel); } .text-\[--color-fg\] { color: var(--color-fg); } .border-\[--color-ink\] { border-color: var(--color-ink); } .rounded-\[--radius-xl\] { border-radius: var(--radius-xl); } .p-2 { padding: 0.5rem; } .p-3 { padding: 0.75rem; } .p-4 { padding: 1rem; } .p-6 { padding: 1.5rem; } .py-8 { padding-block: 2rem; } .h-14 { height: 3.5rem; } .text-center { text-align: center; } .text-right { text-align: right; } .opacity-70 { opacity: .7; } .grid { display: grid; } .md\:grid-cols-2 { grid-template-columns: 1fr; } .md\:grid-cols-3 { grid-template-columns: 1fr; } @media (min-width: 768px) { .md\:grid-cols-2 { grid-template-columns: 1fr 1fr; } .md\:grid-cols-3 { grid-template-columns: 1fr 1fr 1fr; } } .shadow-sm { box-shadow: 0 2px 12px rgba(0,0,0,0.2); } .underline { text-decoration: underline; } .fixed { position: fixed; } .bottom-4 { bottom: 1rem; } .left-1\/2 { left: 50%; } .-translate-x-1\/2 { transform: translateX(-50%); } .z-50 { z-index: 50; } .space-y-2 > * + * { margin-top: .5rem; } .space-y-8 > * + * { margin-top: 2rem; } .space-y-6 > * + * { margin-top: 1.5rem; } .overflow-x-auto { overflow-x: auto; }