Spaces:
Sleeping
Sleeping
File size: 3,781 Bytes
f62a6a7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | @import url('https://fonts.googleapis.com/css2?family=Sora:wght@500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
/*
Two chrome themes (light default, dark grey alt) toggled via [data-theme]
on <html>. The visualization STAGE is intentionally always dark, like an
instrument screen — that's not theme-dependent, it's the canvas's own
background drawn in engine.js (#0A0E1A), independent of chrome theme.
*/
:root,
[data-theme="light"] {
--bg: #F5F6FA;
--surface: #FFFFFF;
--surface-2: #EEF0F7;
--surface-3: #E4E7F2;
--border: #DEE1EE;
--text: #1B1E2B;
--text-dim: #6B7086;
--text-faint: #9297AC;
--brand: #6D5EF0;
--brand-strong: #5B4CE0;
--brand-tint: #EEECFE;
--accent-teal: #16A3A3;
--good-bg: #E7F8EF; --good-fg: #157F4A;
--info-bg: #EAF1FF; --info-fg: #2557C7;
--bad-bg: #FDEBEB; --bad-fg: #C23B3B;
--shadow: 0 1px 2px rgba(20,22,40,0.04), 0 8px 24px rgba(20,22,40,0.06);
}
[data-theme="dark"] {
--bg: #1B1D22;
--surface: #232529;
--surface-2: #2A2D33;
--surface-3: #34373E;
--border: #3A3D45;
--text: #ECEDF2;
--text-dim: #A6A9B4;
--text-faint: #74777F;
--brand: #8A7CFF;
--brand-strong: #9D91FF;
--brand-tint: #2C2A45;
--accent-teal: #2FCFC4;
--good-bg: #16301F; --good-fg: #56D690;
--info-bg: #17233B; --info-fg: #7CAAFF;
--bad-bg: #351B1B; --bad-fg: #F08282;
--shadow: 0 1px 2px rgba(0,0,0,0.2), 0 8px 24px rgba(0,0,0,0.35);
}
* { box-sizing: border-box; }
html, body {
height: 100%;
margin: 0;
background: var(--bg);
color: var(--text);
}
body {
font-family: 'Plus Jakarta Sans', sans-serif;
-webkit-font-smoothing: antialiased;
}
.f-display { font-family: 'Sora', sans-serif; }
.f-mono { font-family: 'JetBrains Mono', monospace; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 6px; }
::-webkit-scrollbar-track { background: transparent; }
a { color: inherit; }
button {
font-family: inherit;
cursor: pointer;
border: none;
background: none;
color: inherit;
}
input[type="range"] { accent-color: var(--brand); width: 100%; }
select, input[type="text"], textarea {
font-family: 'JetBrains Mono', monospace;
background: var(--surface-2);
border: 1px solid var(--border);
color: var(--text);
border-radius: 8px;
padding: 6px 10px;
}
.pill {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 11px;
font-weight: 600;
padding: 4px 10px;
border-radius: 999px;
background: var(--surface-2);
color: var(--text-dim);
border: 1px solid var(--border);
}
.pill-brand { background: var(--brand-tint); color: var(--brand-strong); border-color: transparent; }
.pill-good { background: var(--good-bg); color: var(--good-fg); border-color: transparent; }
.pill-info { background: var(--info-bg); color: var(--info-fg); border-color: transparent; }
.pill-bad { background: var(--bad-bg); color: var(--bad-fg); border-color: transparent; }
.btn {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13px;
font-weight: 600;
padding: 8px 14px;
border-radius: 10px;
background: var(--surface-2);
color: var(--text);
border: 1px solid var(--border);
transition: background 0.15s ease, transform 0.1s ease;
}
.btn:hover { background: var(--surface-3); }
.btn:active { transform: scale(0.97); }
.btn-icon { padding: 8px; }
.btn-brand { background: var(--brand); color: #fff; border-color: transparent; }
.btn-brand:hover { background: var(--brand-strong); }
.btn.is-active { background: var(--brand); color: #fff; border-color: transparent; }
.card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 14px;
box-shadow: var(--shadow);
}
|