133 lines
3.9 KiB
CSS
133 lines
3.9 KiB
CSS
: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; }
|