diff --git a/frontend/css/lab.css b/frontend/css/lab.css index f23272f..c1b5ad9 100644 --- a/frontend/css/lab.css +++ b/frontend/css/lab.css @@ -17,7 +17,7 @@ border: 1.5px solid rgba(255,255,255,.12); display: flex; align-items: center; justify-content: center; } - .lab-hero-icon svg { width: 30px; height: 30px; stroke: #9B5DE5; stroke-width: 1.5; } + .lab-hero-icon svg { width: 30px; height: 30px; stroke: var(--violet); stroke-width: 1.5; } .lab-hero-title { font-family: 'Unbounded', sans-serif; font-size: 1.55rem; font-weight: 800; letter-spacing: -0.02em; margin-bottom: 5px; @@ -36,7 +36,7 @@ cursor: pointer; transition: all .16s; } .lab-filter:hover { border-color: rgba(155,93,229,.4); color: var(--violet); } - .lab-filter.active { background: #0F172A; color: #fff; border-color: #0F172A; } + .lab-filter.active { background: var(--text); color: #fff; border-color: var(--text); } /* sim grid */ .sim-grid { @@ -74,7 +74,7 @@ padding: 3px 10px; border-radius: 99px; margin-bottom: 10px; } .sim-cat.math { background: rgba(155,93,229,.12); color: var(--violet); } - .sim-cat.phys { background: rgba(6,214,224,.1); color: #06D6E0; } + .sim-cat.phys { background: rgba(6,214,224,.1); color: var(--cyan); } .sim-title { font-family: 'Unbounded', sans-serif; font-size: 0.9rem; font-weight: 800; @@ -171,15 +171,15 @@ } .fn-label { font-family: 'Manrope', monospace; font-size: 0.85rem; font-weight: 700; - color: var(--fn-color, #9B5DE5); flex-shrink: 0; letter-spacing: .01em; + color: var(--fn-color, var(--violet)); flex-shrink: 0; letter-spacing: .01em; } - .fn-row:focus-within { border-color: var(--fn-color, #9B5DE5); } + .fn-row:focus-within { border-color: var(--fn-color, var(--violet)); } .fn-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; - background: var(--fn-color, #9B5DE5); - box-shadow: 0 0 6px var(--fn-color, #9B5DE5); + background: var(--fn-color, var(--violet)); + box-shadow: 0 0 6px var(--fn-color, var(--violet)); } .fn-input { flex: 1; border: none; outline: none; background: transparent; @@ -493,10 +493,10 @@ /* speed slider — cyan thumb */ #sl-speed::-webkit-slider-thumb { - background: #06D6E0; + background: var(--cyan); box-shadow: 0 0 6px rgba(6,214,224,.5); } - #sl-speed::-moz-range-thumb { background: #06D6E0; } + #sl-speed::-moz-range-thumb { background: var(--cyan); } /* magnetic canvas */ #mag-canvas { @@ -592,8 +592,8 @@ color: #aaa; font-size: 13px; font-weight: 700; cursor: pointer; font-family: 'Manrope', sans-serif; transition: .15s; } - .trig-fn-btn:hover { background: rgba(var(--fc-rgb,155,93,229),0.15); border-color: var(--fc,#9B5DE5); color: var(--fc,#9B5DE5); } - .trig-fn-btn.active { background: rgba(var(--fc-rgb,155,93,229),0.18); border-color: var(--fc,#9B5DE5); color: var(--fc,#9B5DE5); box-shadow: 0 0 8px rgba(var(--fc-rgb,155,93,229),0.3); } + .trig-fn-btn:hover { background: rgba(var(--fc-rgb,155,93,229),0.15); border-color: var(--fc,var(--violet)); color: var(--fc,var(--violet)); } + .trig-fn-btn.active { background: rgba(var(--fc-rgb,155,93,229),0.18); border-color: var(--fc,var(--violet)); color: var(--fc,var(--violet)); box-shadow: 0 0 8px rgba(var(--fc-rgb,155,93,229),0.3); } /* ── responsive ── */ @media (max-width: 768px) { @@ -614,7 +614,7 @@ /* Circuit tool buttons */ .circ-tool-btn.active { background: rgba(155,93,229,0.25) !important; - border-color: #9B5DE5 !important; + border-color: var(--violet) !important; color: #c4b5fd !important; } .circ-top-btn.active { background: rgba(155,93,229,0.35) !important; color: #c4b5fd !important; } @@ -629,20 +629,20 @@ /* Reaction mode buttons */ .reac-mode-btn.active { background: rgba(6,214,224,0.18) !important; - border-color: #06D6E0 !important; - color: #06D6E0 !important; + border-color: var(--cyan) !important; + color: var(--cyan) !important; } /* Newton law/scene buttons */ .nlaw-btn.active { background: rgba(6,214,224,0.18) !important; - border-color: #06D6E0 !important; - color: #06D6E0 !important; + border-color: var(--cyan) !important; + color: var(--cyan) !important; } .nscene-btn.active { background: rgba(241,91,181,0.15) !important; - border-color: #F15BB5 !important; - color: #F15BB5 !important; + border-color: var(--pink) !important; + color: var(--pink) !important; } /* ── wave mode buttons ── */ @@ -660,7 +660,7 @@ } .wave-n-btn.active { background: rgba(255,209,102,.15) !important; - border-color: #FFD166 !important; color: #FFD166 !important; + border-color: #FFD166 !important; color: #FFD166 !important; /* amber — wave harmonic, intentional palette */ } /* ── theory panel (overlay right sidebar) ── */ diff --git a/frontend/js/labs/lab-glue.js b/frontend/js/labs/lab-glue.js index d6d5ae6..7400516 100644 --- a/frontend/js/labs/lab-glue.js +++ b/frontend/js/labs/lab-glue.js @@ -689,8 +689,8 @@ document.getElementById('theory-panel').classList.toggle('open', _theoryOpen); const btn = document.getElementById('theory-toggle'); btn.style.background = _theoryOpen ? 'rgba(155,93,229,0.15)' : ''; - btn.style.borderColor = _theoryOpen ? '#9B5DE5' : ''; - btn.style.color = _theoryOpen ? '#9B5DE5' : ''; + btn.style.borderColor = _theoryOpen ? 'var(--violet)' : ''; + btn.style.color = _theoryOpen ? 'var(--violet)' : ''; } function loadTheory(simId) { @@ -796,7 +796,7 @@ document.getElementById('sim-grid').innerHTML = `
-
Доступ к симуляциям закрыт
+
Доступ к симуляциям закрыт
Администратор ограничил доступ к лаборатории
`; return; @@ -812,7 +812,7 @@ document.getElementById('sim-grid').innerHTML = `
-
Модуль симуляций отключён
+
Модуль симуляций отключён
Администратор временно отключил лабораторию
`; } else { diff --git a/frontend/lab.html b/frontend/lab.html index 9b71a4b..7285d95 100644 --- a/frontend/lab.html +++ b/frontend/lab.html @@ -24,7 +24,7 @@
- +
Лаборатория
@@ -319,8 +319,8 @@
@@ -339,7 +339,7 @@
Функции
-
+
y = @@ -350,7 +350,7 @@
-
+
y = @@ -361,7 +361,7 @@
-
+
y = @@ -436,17 +436,17 @@
-
+
y₁ =
-
+
y₂ =
-
+
y₃ =
@@ -494,13 +494,13 @@
Концентрации
-
Лево A
-
-
Лево B
-
-
Право A
-
-
Право B
-
+
Лево A
+
+
Лево B
+
+
Право A
+
+
Право B
+
Смешивание
@@ -1034,9 +1034,9 @@
-
+
-
+
@@ -1063,9 +1063,9 @@
Слои
y = a · f(k·x + b) + c
- +
- +
@@ -2239,9 +2239,9 @@
-
f(x)
sin(x)
-
a
1
-
k
1
+
f(x)
sin(x)
+
a
1
+
k
1
b
0
c
0
@@ -2253,11 +2253,11 @@
Параметры
- +
- +
@@ -2283,8 +2283,8 @@
-
Угол
45°
-
ω
0
+
Угол
45°
+
ω
0
Период T
Энергия
@@ -2324,8 +2324,8 @@
Keq
Q
-
Направление
-
A|B|C|D
+
Направление
+
A|B|C|D
@@ -2335,11 +2335,11 @@
Параметры
- +
- +
@@ -2361,10 +2361,10 @@
-
f
100
+
f
100
d'
M
-
Тип
+
Тип
@@ -2380,11 +2380,11 @@
Параметры
- +
- +
@@ -2392,7 +2392,7 @@
- +
скорость
- +
Конечное состояние
@@ -2485,8 +2485,8 @@
-
T₁, K
-
T₂, K
+
T₁, K
+
T₂, K
W, Дж
Q, Дж
ΔU, Дж
@@ -2503,11 +2503,11 @@
- +
- +
@@ -2532,8 +2532,8 @@
pH
-
Добавлено
0.0 мл
-
Точка экв.
+
Добавлено
0.0 мл
+
Точка экв.
Тип
@@ -2544,11 +2544,11 @@
Параметры
- +
- +
@@ -2570,8 +2570,8 @@
-
θ₁
30°
-
θ₂
+
θ₁
30°
+
θ₂
Крит. угол
ПВО
Нет
@@ -2601,9 +2601,9 @@
-
Бросков
0
+
Бросков
0
Макс. отклон.
-
χ²
+
χ²
Режим
Монета
@@ -2636,8 +2636,8 @@
-
Уровень n
1
-
E (эВ)
-13.6
+
Уровень n
1
+
E (эВ)
-13.6
λ (нм)
Серия
@@ -2668,8 +2668,8 @@
I (А)
-
Масса
-
Газ (мл)
+
Масса
+
Газ (мл)
Время
0 с
@@ -2693,21 +2693,21 @@
Амплитуда A₁ - 50 + 50
Частота f₁ - 1.0 Гц + 1.0 Гц
Фаза φ₁ - 0 + 0
@@ -2718,21 +2718,21 @@
Амплитуда A₂ - 40 + 40
Частота f₂ - 1.5 Гц + 1.5 Гц
Фаза φ₂ - 0 + 0
@@ -2775,10 +2775,10 @@
-
T (с)
-
λ (px)
+
T (с)
+
λ (px)
v (px/с)
-
f (Гц)
+
f (Гц)
@@ -2934,7 +2934,7 @@ Длины рёбер
- + @@ -3110,9 +3110,9 @@