Maxim Dolgolyov
0b9685bc5e
feat(lab): phase 4 -- hash-router for sim deep-links
...
URL #sim/<name> deep-links: F5 restores sim, browser back/forward
switches between sims, click on sim-card updates URL.
34 sims mapped via _SIM_HASH_MAP (built dynamically from SIMS array).
Unknown hash -> console.warn fallback.
Recursion guard prevents double-activation on programmatic navigate.
closeSim clears hash via history.pushState (no hashchange loop).
Embed mode excluded from hash updates (?embed=1 workflow unaffected).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 22:56:18 +03:00
Maxim Dolgolyov
6792a4a5c7
refactor(lab): phase 3 — token purification across lab.html / lab.css / lab-glue.js
...
Replaced ~100 hardcoded brand colors with var() tokens across 3 files.
Kept: tinted-alpha colors (rgba(155,93,229,.x)), canvas fillStyle (vars
don't resolve there), curated SVG card-preview palettes (P_GRAPH, P_MAGNETIC,
etc.), physics-convention colors (#EF476F for positive charges, #4CC9F0 for
negative), slightly-different decorative shades (#EF476F ≠ #F15BB5).
lab.css: #9B5DE5→var(--violet), #06D6E0→var(--cyan), #F15BB5/nscene→var(--pink),
#0F172A (filter.active)→var(--text), fn-color defaults, trig btn defaults.
lab.html: stat bars, slider labels, info-fn-dot, toggle-dot, panel badges,
section-specific color coding (violet=wave1/param1, cyan=wave2/param2).
lab-glue.js: toggleTheory() JS style assignments, template-literal HTML headings.
Before: ~265 hardcodes After: ~60 (canvas+curated+rgba+physics-convention)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-22 22:51:28 +03:00