feat: overhaul Duriin autonomy console

This commit is contained in:
ImBenji
2026-08-04 21:05:47 +01:00
parent 0724f5dc36
commit 5037e1e192
10 changed files with 793 additions and 374 deletions
+109 -104
View File
@@ -1,117 +1,122 @@
/* design tokens + resets + element defaults shared across every admin page */
:root {
--bg: #020817;
--bg-card: #0f172a;
--bg-subtle: #0b1120;
--border: #1e293b;
--border-light: #162032;
--foreground: #f8fafc;
--muted: #94a3b8;
--muted-dark: #475569;
--primary: #f8fafc;
--primary-bg: #1e293b;
--accent: #3b82f6;
--accent-hover: #2563eb;
--destructive: #7f1d1d;
--destructive-fg: #fca5a5;
--radius: 6px;
--radius-lg: 10px;
--bg: #090b0a;
--bg-card: #111411;
--bg-elevated: #171a17;
--bg-subtle: #0d100e;
--border: #293029;
--border-light: #1d231e;
--foreground: #f2f0e8;
--muted: #9ca398;
--muted-dark: #687066;
--primary: #dfff4f;
--primary-bg: #dfff4f;
--accent: #dfff4f;
--accent-hover: #edff93;
--positive: #8ee6a8;
--negative: #ff8d7d;
--warning: #f3c969;
--destructive: #8a3029;
--destructive-fg: #ffaaa0;
--radius: 4px;
--radius-lg: 8px;
--rail: 224px;
--sans: "Avenir Next", "Helvetica Neue", Helvetica, Arial, sans-serif;
--mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { background: var(--bg); }
body {
font-family: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", sans-serif;
background: var(--bg);
font-family: var(--sans);
background:
radial-gradient(circle at 85% -10%, rgba(223, 255, 79, .055), transparent 34rem),
var(--bg);
color: var(--foreground);
font-size: 14px;
line-height: 1.45;
min-height: 100vh;
padding-left: var(--rail);
-webkit-font-smoothing: antialiased;
}
/* ── inputs / selects ── */
input[type="text"], input[type="date"], select {
background: var(--bg-subtle);
border: 1px solid var(--border);
color: var(--foreground);
padding: 7px 10px;
border-radius: var(--radius);
font-size: 13px;
outline: none;
min-width: 140px;
transition: border-color .15s, box-shadow .15s;
}
input[type="text"]:focus, input[type="date"]:focus, select:focus {
border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(59, 130, 246, .15);
}
select option { background: #0f172a; }
/* ── buttons ── */
button {
background: var(--primary-bg);
border: 1px solid var(--border);
color: var(--foreground);
padding: 7px 14px;
border-radius: var(--radius);
cursor: pointer;
font-size: 13px;
font-weight: 500;
transition: background .15s, opacity .1s;
line-height: 1;
}
button:hover { background: #263347; }
button.primary {
background: var(--foreground);
color: #0f172a;
border-color: transparent;
font-weight: 600;
}
button.primary:hover { background: #e2e8f0; }
button.danger {
background: transparent;
border-color: var(--destructive);
color: var(--destructive-fg);
}
button.danger:hover { background: rgba(127, 29, 29, .3); }
button:disabled { opacity: .4; cursor: not-allowed; }
/* textarea — shared across article modal and sql console */
textarea {
background: var(--bg-subtle);
border: 1px solid var(--border);
color: var(--foreground);
padding: 8px 10px;
border-radius: var(--radius);
font-size: 13px;
resize: vertical;
font-family: inherit;
outline: none;
min-height: 120px;
transition: border-color .15s, box-shadow .15s;
}
textarea:focus {
border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(59, 130, 246, .15);
}
.url-link { color: #60a5fa; text-decoration: none; }
.url-link:hover { text-decoration: underline; }
::selection { background: var(--accent); color: #0b0d0b; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
input[type="text"], input[type="date"], input[type="search"], input[type="number"], select {
min-width: 140px;
height: 38px;
padding: 0 11px;
color: var(--foreground);
background: #0b0e0c;
border: 1px solid var(--border);
border-radius: var(--radius);
outline: none;
transition: border-color 140ms, box-shadow 140ms, background 140ms;
}
input::placeholder { color: #596057; }
select option { background: #111411; }
input:focus, select:focus, textarea:focus {
border-color: rgba(223,255,79,.75);
box-shadow: 0 0 0 3px rgba(223,255,79,.09);
background: #0f130f;
}
button {
min-height: 36px;
padding: 0 14px;
color: var(--foreground);
background: var(--bg-elevated);
border: 1px solid var(--border);
border-radius: var(--radius);
cursor: pointer;
font-size: 12px;
font-weight: 650;
letter-spacing: .02em;
transition: transform 100ms, background 140ms, border-color 140ms;
}
button:hover { background: #20251f; border-color: #414a40; }
button:active { transform: translateY(1px); }
button.primary {
color: #0c0e0c;
background: var(--primary-bg);
border-color: var(--primary-bg);
}
button.primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
button.danger { background: transparent; border-color: #69332e; color: var(--destructive-fg); }
button.danger:hover { background: rgba(138,48,41,.22); }
button:disabled { opacity: .38; cursor: not-allowed; transform: none; }
textarea {
min-height: 120px;
padding: 10px 11px;
resize: vertical;
color: var(--foreground);
background: var(--bg-subtle);
border: 1px solid var(--border);
border-radius: var(--radius);
outline: none;
}
.url-link { color: var(--accent); text-decoration: none; }
.url-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.mono { font-family: var(--mono); }
.positive { color: var(--positive); }
.negative { color: var(--negative); }
.muted { color: var(--muted); }
@media (max-width: 820px) {
:root { --rail: 0px; }
body { padding-left: 0; padding-top: 68px; }
}