@jaimevalasek/aioson 1.5.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/README.md +729 -226
- package/docs/design-previews/aurora-command-ui-website.html +884 -0
- package/docs/design-previews/aurora-command-ui.html +682 -0
- package/docs/design-previews/bold-editorial-ui-website.html +658 -0
- package/docs/design-previews/bold-editorial-ui.html +717 -0
- package/docs/design-previews/clean-saas-ui-website.html +1202 -0
- package/docs/design-previews/clean-saas-ui.html +549 -0
- package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
- package/docs/design-previews/cognitive-core-ui.html +463 -0
- package/docs/design-previews/glassmorphism-ui-website.html +572 -0
- package/docs/design-previews/glassmorphism-ui.html +886 -0
- package/docs/design-previews/index.html +699 -0
- package/docs/design-previews/interface-design-website.html +1187 -0
- package/docs/design-previews/interface-design.html +513 -0
- package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
- package/docs/design-previews/neo-brutalist-ui.html +797 -0
- package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
- package/docs/design-previews/premium-command-center-ui.html +552 -0
- package/docs/design-previews/pt.squarespace.com-homepage.html +889 -0
- package/docs/design-previews/warm-craft-ui-website.html +684 -0
- package/docs/design-previews/warm-craft-ui.html +739 -0
- package/docs/en/cli-reference.md +20 -9
- package/docs/integrations/sdlc-genius-boundary.md +76 -0
- package/docs/integrations/sdlc-genius-eval-matrix.md +75 -0
- package/docs/integrations/sdlc-genius-install-checklist.md +93 -0
- package/docs/integrations/sdlc-genius-review-samples.md +86 -0
- package/docs/pt/README.md +10 -0
- package/docs/pt/agent-sharding.md +132 -0
- package/docs/pt/agentes.md +9 -2
- package/docs/pt/busca-de-contexto.md +129 -0
- package/docs/pt/cache-de-contexto.md +156 -0
- package/docs/pt/comandos-cli.md +915 -1
- package/docs/pt/design-hybrid-forge.md +356 -0
- package/docs/pt/devlog-pipeline.md +270 -0
- package/docs/pt/fluxo-artefatos.md +178 -0
- package/docs/pt/hooks-session-guard.md +454 -0
- package/docs/pt/inicio-rapido.md +54 -3
- package/docs/pt/inteligencia-adaptativa.md +324 -0
- package/docs/pt/monitor-de-contexto.md +158 -0
- package/docs/pt/recuperacao-de-sessao.md +125 -0
- package/docs/pt/sandbox.md +125 -0
- package/docs/pt/sdd-automation-scripts.md +557 -0
- package/docs/pt/site-forge.md +309 -0
- package/docs/pt/skills.md +98 -6
- package/docs/pt/spec-learnings-pipeline.md +265 -0
- package/package.json +1 -1
- package/src/a2a/client.js +165 -0
- package/src/a2a/server.js +223 -0
- package/src/agent-loader.js +280 -0
- package/src/cli.js +329 -1
- package/src/commands/agent-audit.js +397 -0
- package/src/commands/agent-export-skill.js +229 -0
- package/src/commands/agent-loader.js +85 -0
- package/src/commands/artifact-validate.js +189 -0
- package/src/commands/brief-gen.js +405 -0
- package/src/commands/brief-validate.js +65 -0
- package/src/commands/classify.js +256 -0
- package/src/commands/context-cache.js +90 -0
- package/src/commands/context-compact.js +49 -0
- package/src/commands/context-health.js +175 -0
- package/src/commands/context-monitor.js +163 -0
- package/src/commands/context-search.js +66 -0
- package/src/commands/context-trim.js +177 -0
- package/src/commands/design-hybrid-options.js +385 -0
- package/src/commands/detect-test-runner.js +55 -0
- package/src/commands/devlog-export-brains.js +27 -0
- package/src/commands/devlog-process.js +292 -0
- package/src/commands/devlog-watch.js +131 -0
- package/src/commands/feature-close.js +165 -0
- package/src/commands/gate-check.js +228 -0
- package/src/commands/health.js +214 -0
- package/src/commands/hooks-emit.js +253 -0
- package/src/commands/hooks-install.js +347 -0
- package/src/commands/init.js +54 -13
- package/src/commands/install.js +52 -13
- package/src/commands/learning-auto-promote.js +195 -0
- package/src/commands/learning-evolve.js +364 -0
- package/src/commands/learning-export.js +103 -0
- package/src/commands/learning-rollback.js +164 -0
- package/src/commands/live.js +59 -1
- package/src/commands/pattern-detect.js +33 -0
- package/src/commands/preflight-context.js +30 -0
- package/src/commands/preflight.js +208 -0
- package/src/commands/pulse-update.js +130 -0
- package/src/commands/recovery.js +43 -0
- package/src/commands/runner-daemon.js +274 -0
- package/src/commands/runner-plan.js +70 -0
- package/src/commands/runner-queue-from-plan.js +166 -0
- package/src/commands/runner-queue.js +189 -0
- package/src/commands/runner-run.js +129 -0
- package/src/commands/runtime.js +47 -1
- package/src/commands/sandbox.js +37 -0
- package/src/commands/self-implement-loop.js +256 -0
- package/src/commands/session-guard.js +218 -0
- package/src/commands/setup-context.js +22 -2
- package/src/commands/setup.js +178 -0
- package/src/commands/sizing.js +165 -0
- package/src/commands/skill.js +144 -32
- package/src/commands/spec-checkpoint.js +177 -0
- package/src/commands/spec-status.js +79 -0
- package/src/commands/spec-sync.js +190 -0
- package/src/commands/spec-tasks.js +288 -0
- package/src/commands/squad-autorun.js +1220 -0
- package/src/commands/squad-bus.js +217 -0
- package/src/commands/squad-card.js +149 -0
- package/src/commands/squad-daemon.js +134 -0
- package/src/commands/squad-dependency-graph.js +164 -0
- package/src/commands/squad-review.js +106 -0
- package/src/commands/squad-scaffold.js +55 -0
- package/src/commands/squad-tool-register.js +157 -0
- package/src/commands/state-save.js +122 -0
- package/src/commands/tool-registry-cmd.js +232 -0
- package/src/commands/update.js +9 -0
- package/src/commands/verify-gate.js +572 -0
- package/src/commands/workflow-execute.js +241 -0
- package/src/constants.js +18 -0
- package/src/context-cache.js +159 -0
- package/src/context-search.js +326 -0
- package/src/design-variation-catalog.js +503 -0
- package/src/i18n/messages/en.js +32 -2
- package/src/i18n/messages/es.js +30 -2
- package/src/i18n/messages/fr.js +30 -2
- package/src/i18n/messages/pt-BR.js +32 -2
- package/src/install-animation.js +260 -0
- package/src/install-profile.js +143 -0
- package/src/install-wizard.js +475 -0
- package/src/installer.js +44 -10
- package/src/lib/health-check.js +158 -0
- package/src/lib/hook-protocol.js +76 -0
- package/src/mcp/apps/squad-dashboard/app.js +163 -0
- package/src/mcp/apps/squad-dashboard/index.html +261 -0
- package/src/mcp/apps/squad-dashboard/mcp-manifest.json +23 -0
- package/src/mcp/resources/squad-state.js +130 -0
- package/src/parser.js +7 -1
- package/src/preflight-engine.js +443 -0
- package/src/recovery-context-session.js +154 -0
- package/src/runner/cascade.js +97 -0
- package/src/runner/cli-launcher.js +109 -0
- package/src/runner/plan-importer.js +63 -0
- package/src/runner/queue-store.js +159 -0
- package/src/runtime-store.js +158 -4
- package/src/sandbox.js +177 -0
- package/src/squad/agent-teams-adapter.js +264 -0
- package/src/squad/brief-validator.js +350 -0
- package/src/squad/bus-bridge.js +140 -0
- package/src/squad/context-compactor.js +265 -0
- package/src/squad/cross-ai-synthesizer.js +250 -0
- package/src/squad/hooks-generator.js +196 -0
- package/src/squad/inter-squad-events.js +175 -0
- package/src/squad/intra-bus.js +345 -0
- package/src/squad/learning-extractor.js +213 -0
- package/src/squad/pattern-detector.js +365 -0
- package/src/squad/preflight-context.js +296 -0
- package/src/squad/recovery-context.js +242 -71
- package/src/squad/reflection.js +365 -0
- package/src/squad/squad-scaffold.js +177 -0
- package/src/squad/state-manager.js +310 -0
- package/src/squad/task-decomposer.js +652 -0
- package/src/squad/verify-gate.js +303 -0
- package/src/tool-executor.js +94 -0
- package/src/updater.js +10 -3
- package/src/worker-runner.js +186 -1
- package/template/.aioson/agents/analyst.md +119 -3
- package/template/.aioson/agents/architect.md +98 -0
- package/template/.aioson/agents/design-hybrid-forge.md +141 -0
- package/template/.aioson/agents/dev.md +335 -14
- package/template/.aioson/agents/deyvin.md +117 -2
- package/template/.aioson/agents/discovery-design-doc.md +44 -0
- package/template/.aioson/agents/genome.md +14 -0
- package/template/.aioson/agents/neo.md +78 -1
- package/template/.aioson/agents/orache.md +50 -4
- package/template/.aioson/agents/orchestrator.md +197 -1
- package/template/.aioson/agents/pm.md +93 -0
- package/template/.aioson/agents/product.md +77 -4
- package/template/.aioson/agents/profiler-enricher.md +14 -0
- package/template/.aioson/agents/profiler-forge.md +14 -0
- package/template/.aioson/agents/profiler-researcher.md +14 -0
- package/template/.aioson/agents/qa.md +249 -19
- package/template/.aioson/agents/setup.md +144 -12
- package/template/.aioson/agents/sheldon.md +237 -11
- package/template/.aioson/agents/site-forge.md +1753 -0
- package/template/.aioson/agents/squad.md +162 -0
- package/template/.aioson/agents/tester.md +209 -0
- package/template/.aioson/agents/ux-ui.md +34 -1
- package/template/.aioson/brains/README.md +128 -0
- package/template/.aioson/brains/_index.json +16 -0
- package/template/.aioson/brains/scripts/query.js +103 -0
- package/template/.aioson/brains/site-forge/visual-patterns.brain.json +205 -0
- package/template/.aioson/config.md +158 -13
- package/template/.aioson/constitution.md +33 -0
- package/template/.aioson/context/forensics/.gitkeep +0 -0
- package/template/.aioson/context/project-pulse.md +34 -0
- package/template/.aioson/context/seeds/seed-example.md +27 -0
- package/template/.aioson/context/user-profile.md +42 -0
- package/template/.aioson/docs/LAYERS.md +79 -0
- package/template/.aioson/docs/README.md +76 -0
- package/template/.aioson/docs/example-external-api-context.md +72 -0
- package/template/.aioson/locales/en/agents/architect.md +17 -0
- package/template/.aioson/locales/en/agents/dev.md +79 -13
- package/template/.aioson/locales/en/agents/orache.md +6 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +24 -0
- package/template/.aioson/locales/en/agents/product.md +50 -0
- package/template/.aioson/locales/en/agents/setup.md +33 -1
- package/template/.aioson/locales/en/agents/sheldon.md +115 -0
- package/template/.aioson/locales/en/agents/squad.md +14 -0
- package/template/.aioson/locales/en/agents/tester.md +6 -0
- package/template/.aioson/locales/es/agents/analyst.md +2 -0
- package/template/.aioson/locales/es/agents/architect.md +19 -0
- package/template/.aioson/locales/es/agents/dev.md +64 -4
- package/template/.aioson/locales/es/agents/deyvin.md +2 -0
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +2 -0
- package/template/.aioson/locales/es/agents/genome.md +2 -0
- package/template/.aioson/locales/es/agents/neo.md +2 -0
- package/template/.aioson/locales/es/agents/orache.md +2 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/es/agents/pair.md +2 -0
- package/template/.aioson/locales/es/agents/pm.md +2 -0
- package/template/.aioson/locales/es/agents/product.md +52 -0
- package/template/.aioson/locales/es/agents/profiler-enricher.md +2 -0
- package/template/.aioson/locales/es/agents/profiler-forge.md +2 -0
- package/template/.aioson/locales/es/agents/profiler-researcher.md +2 -0
- package/template/.aioson/locales/es/agents/qa.md +2 -0
- package/template/.aioson/locales/es/agents/setup.md +35 -1
- package/template/.aioson/locales/es/agents/sheldon.md +117 -0
- package/template/.aioson/locales/es/agents/squad.md +16 -0
- package/template/.aioson/locales/es/agents/tester.md +9 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +2 -0
- package/template/.aioson/locales/fr/agents/analyst.md +2 -0
- package/template/.aioson/locales/fr/agents/architect.md +19 -0
- package/template/.aioson/locales/fr/agents/dev.md +64 -4
- package/template/.aioson/locales/fr/agents/deyvin.md +2 -0
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +2 -0
- package/template/.aioson/locales/fr/agents/genome.md +2 -0
- package/template/.aioson/locales/fr/agents/neo.md +2 -0
- package/template/.aioson/locales/fr/agents/orache.md +2 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/fr/agents/pair.md +2 -0
- package/template/.aioson/locales/fr/agents/pm.md +2 -0
- package/template/.aioson/locales/fr/agents/product.md +52 -0
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +2 -0
- package/template/.aioson/locales/fr/agents/profiler-forge.md +2 -0
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +2 -0
- package/template/.aioson/locales/fr/agents/qa.md +2 -0
- package/template/.aioson/locales/fr/agents/setup.md +35 -1
- package/template/.aioson/locales/fr/agents/sheldon.md +117 -0
- package/template/.aioson/locales/fr/agents/squad.md +16 -0
- package/template/.aioson/locales/fr/agents/tester.md +9 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +2 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +64 -3
- package/template/.aioson/locales/pt-BR/agents/architect.md +42 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +147 -14
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +47 -0
- package/template/.aioson/locales/pt-BR/agents/neo.md +62 -1
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +158 -2
- package/template/.aioson/locales/pt-BR/agents/pm.md +95 -1
- package/template/.aioson/locales/pt-BR/agents/product.md +145 -18
- package/template/.aioson/locales/pt-BR/agents/qa.md +16 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +134 -19
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +132 -1
- package/template/.aioson/locales/pt-BR/agents/squad.md +14 -0
- package/template/.aioson/locales/pt-BR/agents/tester.md +449 -0
- package/template/.aioson/rules/README.md +69 -0
- package/template/.aioson/rules/data-format-convention.md +136 -0
- package/template/.aioson/rules/example-monetary-values.md +30 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +124 -3
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
- package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -0
- package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +66 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +368 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +165 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +46 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/analyst.md +30 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/architect.md +23 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +47 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/deyvin.md +27 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +101 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/product.md +25 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/qa.md +30 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/sheldon.md +25 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +147 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +306 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +149 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +208 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
- package/template/.aioson/skills/process/simplify/SKILL.md +173 -0
- package/template/.aioson/skills/static/context-budget-guide.md +46 -0
- package/template/.aioson/skills/static/harness-sensors.md +74 -0
- package/template/.aioson/skills/static/multi-agent-patterns.md +43 -0
- package/template/.aioson/skills/static/react-motion-patterns.md +22 -0
- package/template/.aioson/skills/static/static-html-patterns/checklists.md +43 -0
- package/template/.aioson/skills/static/static-html-patterns/css-tokens.md +609 -0
- package/template/.aioson/skills/static/static-html-patterns/motion.md +193 -0
- package/template/.aioson/skills/static/static-html-patterns/premium.md +711 -0
- package/template/.aioson/skills/static/static-html-patterns/structure.md +209 -0
- package/template/.aioson/skills/static/static-html-patterns/utilities.md +190 -0
- package/template/.aioson/skills/static/static-html-patterns.md +58 -1913
- package/template/.aioson/skills/static/threejs-patterns.md +929 -0
- package/template/.aioson/skills/static/web-research-cache.md +112 -0
- package/template/.aioson/tasks/implementation-plan.md +21 -1
- package/template/.claude/commands/aioson/agent/design-hybrid-forge.md +5 -0
- package/template/.claude/commands/aioson/agent/orache.md +5 -0
- package/template/.claude/commands/aioson/agent/sheldon.md +5 -0
- package/template/.claude/commands/aioson/agent/site-forge.md +5 -0
- package/template/AGENTS.md +75 -1
- package/template/CLAUDE.md +31 -0
- package/template/OPENCODE.md +4 -0
- package/template/researchs/.gitkeep +0 -0
|
@@ -0,0 +1,585 @@
|
|
|
1
|
+
# Design Tokens — Aurora Command UI
|
|
2
|
+
|
|
3
|
+
This is the source of truth for all CSS custom properties. Apply shared tokens on `:root`, theme-specific tokens on `[data-theme]`. Never hardcode values in components.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Typography strategy
|
|
8
|
+
|
|
9
|
+
Default to **system fonts** first. Add Google Fonts when the agent determines the stack and context justifies them.
|
|
10
|
+
|
|
11
|
+
**System font stack (default — works everywhere, no CDN needed):**
|
|
12
|
+
```css
|
|
13
|
+
--font-display: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", system-ui, sans-serif;
|
|
14
|
+
--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", system-ui, sans-serif;
|
|
15
|
+
--font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Google Fonts (optional — use when building a polished product explicitly):**
|
|
19
|
+
```css
|
|
20
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');
|
|
21
|
+
|
|
22
|
+
--font-display: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
|
|
23
|
+
--font-body: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
|
|
24
|
+
--font-mono: 'JetBrains Mono', ui-monospace, monospace;
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Complete CSS Variables
|
|
30
|
+
|
|
31
|
+
Include this full block in every Aurora Command project.
|
|
32
|
+
|
|
33
|
+
```css
|
|
34
|
+
/* ═══════════════════════════════════════════
|
|
35
|
+
SHARED TOKENS — :root (non-theme-specific)
|
|
36
|
+
═══════════════════════════════════════════ */
|
|
37
|
+
:root {
|
|
38
|
+
/* Typography */
|
|
39
|
+
--font-display: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
|
|
40
|
+
--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
|
|
41
|
+
--font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
|
|
42
|
+
|
|
43
|
+
/* Font Sizes */
|
|
44
|
+
--text-xs: 0.72rem; /* 11.5px — mono labels, micro badges */
|
|
45
|
+
--text-sm: 0.82rem; /* 13px */
|
|
46
|
+
--text-base: 0.95rem; /* 15px — default body */
|
|
47
|
+
--text-lg: 1rem; /* 16px */
|
|
48
|
+
--text-xl: 1.25rem; /* 20px */
|
|
49
|
+
--text-2xl: 1.6rem; /* 25.6px */
|
|
50
|
+
--text-3xl: 2.2rem; /* 35px */
|
|
51
|
+
--text-4xl: 3rem; /* 48px — stat numbers */
|
|
52
|
+
--text-5xl: 4rem; /* 64px — hero headings */
|
|
53
|
+
|
|
54
|
+
/* Font Weights */
|
|
55
|
+
--weight-light: 300;
|
|
56
|
+
--weight-normal: 400;
|
|
57
|
+
--weight-medium: 500;
|
|
58
|
+
--weight-semibold: 600;
|
|
59
|
+
--weight-bold: 700;
|
|
60
|
+
--weight-black: 800;
|
|
61
|
+
|
|
62
|
+
/* Letter Spacing */
|
|
63
|
+
--tracking-tight: -0.025em;
|
|
64
|
+
--tracking-normal: 0;
|
|
65
|
+
--tracking-wide: 0.04em;
|
|
66
|
+
--tracking-wider: 0.08em;
|
|
67
|
+
--tracking-widest: 0.12em;
|
|
68
|
+
|
|
69
|
+
/* Line Height */
|
|
70
|
+
--leading-none: 1;
|
|
71
|
+
--leading-tight: 1.08;
|
|
72
|
+
--leading-snug: 1.24;
|
|
73
|
+
--leading-normal: 1.5;
|
|
74
|
+
--leading-relaxed: 1.68;
|
|
75
|
+
|
|
76
|
+
/* Spacing */
|
|
77
|
+
--space-0: 0;
|
|
78
|
+
--space-1: 0.25rem; /* 4px */
|
|
79
|
+
--space-2: 0.5rem; /* 8px */
|
|
80
|
+
--space-3: 0.75rem; /* 12px */
|
|
81
|
+
--space-4: 1rem; /* 16px */
|
|
82
|
+
--space-5: 1.25rem; /* 20px */
|
|
83
|
+
--space-6: 1.5rem; /* 24px */
|
|
84
|
+
--space-8: 2rem; /* 32px */
|
|
85
|
+
--space-10: 2.5rem; /* 40px */
|
|
86
|
+
--space-12: 3rem; /* 48px */
|
|
87
|
+
--space-16: 4rem; /* 64px */
|
|
88
|
+
--space-20: 5rem; /* 80px */
|
|
89
|
+
--space-24: 6rem; /* 96px */
|
|
90
|
+
--space-32: 8rem; /* 128px — hero sections */
|
|
91
|
+
|
|
92
|
+
/* Border Radius */
|
|
93
|
+
--radius-sm: 0.375rem; /* 6px — badges, chips */
|
|
94
|
+
--radius-md: 0.625rem; /* 10px — inputs, buttons */
|
|
95
|
+
--radius-lg: 0.875rem; /* 14px — small cards */
|
|
96
|
+
--radius-xl: 1.125rem; /* 18px — standard glass cards */
|
|
97
|
+
--radius-2xl: 1.5rem; /* 24px — large glass cards */
|
|
98
|
+
--radius-3xl: 2rem; /* 32px — hero glass cards */
|
|
99
|
+
--radius-full: 9999px; /* pills, avatars, toggles */
|
|
100
|
+
|
|
101
|
+
/* Interactive element heights */
|
|
102
|
+
--control-xs: 1.75rem; /* 28px — compact chips */
|
|
103
|
+
--control-sm: 2rem; /* 32px — compact controls */
|
|
104
|
+
--control-md: 2.5rem; /* 40px — standard inputs */
|
|
105
|
+
--control-lg: 2.75rem; /* 44px — primary buttons */
|
|
106
|
+
|
|
107
|
+
/* Layout */
|
|
108
|
+
--sidebar-width: 210px;
|
|
109
|
+
--content-sm: 480px;
|
|
110
|
+
--content-md: 640px;
|
|
111
|
+
--content-lg: 800px;
|
|
112
|
+
--content-xl: 1024px;
|
|
113
|
+
--content-max: 1280px;
|
|
114
|
+
--nav-height: 60px;
|
|
115
|
+
--nav-height-web: 68px;
|
|
116
|
+
|
|
117
|
+
/* Transitions */
|
|
118
|
+
--transition-fast: 140ms ease;
|
|
119
|
+
--transition-base: 200ms ease;
|
|
120
|
+
--transition-slow: 300ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
121
|
+
--transition-glass: backdrop-filter 300ms ease, background 300ms ease, border-color 300ms ease, box-shadow 300ms ease;
|
|
122
|
+
--transition-hero: 600ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
123
|
+
--transition-theme: background 240ms ease, color 240ms ease, border-color 240ms ease, box-shadow 240ms ease;
|
|
124
|
+
|
|
125
|
+
/* Focus */
|
|
126
|
+
--focus-ring-width: 2px;
|
|
127
|
+
--focus-ring-offset: 2px;
|
|
128
|
+
|
|
129
|
+
/* Z-index */
|
|
130
|
+
--z-base: 0;
|
|
131
|
+
--z-elevated: 10;
|
|
132
|
+
--z-dropdown: 20;
|
|
133
|
+
--z-sticky: 30;
|
|
134
|
+
--z-modal: 50;
|
|
135
|
+
--z-toast: 60;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* ═══════════════════════════════════════════
|
|
139
|
+
DARK THEME (default)
|
|
140
|
+
═══════════════════════════════════════════ */
|
|
141
|
+
[data-theme="dark"] {
|
|
142
|
+
/* ── Aurora Substrate ── */
|
|
143
|
+
--bg-void: #040609;
|
|
144
|
+
--bg-base: #060910;
|
|
145
|
+
--bg-gradient: linear-gradient(135deg, #060910 0%, #0A0818 30%, #060C1A 70%, #08060F 100%);
|
|
146
|
+
|
|
147
|
+
/* ── Dark Glass Surfaces ── */
|
|
148
|
+
/* These are DARK TINTED — aurora shows through, not bright/white */
|
|
149
|
+
--glass-shell: rgba(8, 12, 22, 0.75); /* top bar, sidebar */
|
|
150
|
+
--glass-surface: rgba(10, 14, 26, 0.65); /* standard cards */
|
|
151
|
+
--glass-elevated: rgba(14, 20, 36, 0.75); /* hover, nested cards */
|
|
152
|
+
--glass-overlay: rgba(6, 10, 18, 0.85); /* modals, drawers */
|
|
153
|
+
|
|
154
|
+
/* ── Glass System Tokens ── */
|
|
155
|
+
--glass-border: rgba(255, 255, 255, 0.10);
|
|
156
|
+
--glass-border-strong: rgba(255, 255, 255, 0.18);
|
|
157
|
+
--glass-border-accent: rgba(0, 200, 232, 0.30);
|
|
158
|
+
--glass-highlight: linear-gradient(180deg, rgba(255,255,255,0.07) 0%, transparent 50%);
|
|
159
|
+
|
|
160
|
+
/* Fallback (when backdrop-filter is unsupported) */
|
|
161
|
+
--glass-fallback: rgba(8, 12, 22, 0.95);
|
|
162
|
+
|
|
163
|
+
/* ── Blur Levels ── */
|
|
164
|
+
--glass-blur-sm: blur(8px); /* working surfaces, dense data panels */
|
|
165
|
+
--glass-blur-md: blur(16px); /* standard glass cards */
|
|
166
|
+
--glass-blur-lg: blur(24px); /* sidebar, top bar, elevated modals */
|
|
167
|
+
--glass-blur-xl: blur(40px); /* decorative orbs, extreme blur elements */
|
|
168
|
+
|
|
169
|
+
/* ── Accents ── */
|
|
170
|
+
--accent-primary: #00C8E8; /* teal-electric — operational, active states */
|
|
171
|
+
--accent-violet: #7C3AED; /* violet — highlights, CTAs */
|
|
172
|
+
--accent-gradient: linear-gradient(135deg, #00C8E8, #7C3AED);
|
|
173
|
+
--accent-primary-dim: rgba(0, 200, 232, 0.15);
|
|
174
|
+
--accent-violet-dim: rgba(124, 58, 237, 0.15);
|
|
175
|
+
--accent-glow: rgba(0, 200, 232, 0.12);
|
|
176
|
+
--accent-violet-glow: rgba(124, 58, 237, 0.18);
|
|
177
|
+
--accent-contrast: #04090F; /* text on accent background */
|
|
178
|
+
|
|
179
|
+
/* ── Text ── */
|
|
180
|
+
--text-heading: #F0F4FA;
|
|
181
|
+
--text-primary: #C8D4E8;
|
|
182
|
+
--text-secondary: #8898B0;
|
|
183
|
+
--text-muted: #556070;
|
|
184
|
+
--text-accent: #00C8E8;
|
|
185
|
+
--text-inverse: #04090F;
|
|
186
|
+
|
|
187
|
+
/* ── Semantic Colors ── */
|
|
188
|
+
--semantic-green: #00D68F;
|
|
189
|
+
--semantic-green-dim: rgba(0, 214, 143, 0.15);
|
|
190
|
+
--semantic-amber: #F4A91D;
|
|
191
|
+
--semantic-amber-dim: rgba(244, 169, 29, 0.15);
|
|
192
|
+
--semantic-red: #FF5A67;
|
|
193
|
+
--semantic-red-dim: rgba(255, 90, 103, 0.15);
|
|
194
|
+
--semantic-purple: #A78BFA;
|
|
195
|
+
--semantic-purple-dim: rgba(167, 139, 250, 0.15);
|
|
196
|
+
--semantic-blue: #38BDF8;
|
|
197
|
+
--semantic-blue-dim: rgba(56, 189, 248, 0.15);
|
|
198
|
+
|
|
199
|
+
/* ── Shadows — teal-electric tinted ── */
|
|
200
|
+
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.30);
|
|
201
|
+
--shadow-md: 0 8px 24px rgba(0, 0, 0, 0.40);
|
|
202
|
+
--shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.50);
|
|
203
|
+
--shadow-glow: 0 0 30px rgba(0, 200, 232, 0.12), 0 8px 24px rgba(0, 0, 0, 0.40);
|
|
204
|
+
--shadow-glow-strong: 0 0 50px rgba(0, 200, 232, 0.22), 0 0 20px rgba(0, 200, 232, 0.12);
|
|
205
|
+
--shadow-violet-glow: 0 0 30px rgba(124, 58, 237, 0.20), 0 8px 24px rgba(0, 0, 0, 0.40);
|
|
206
|
+
--shadow-inner: inset 0 1px 0 rgba(255, 255, 255, 0.07);
|
|
207
|
+
|
|
208
|
+
/* ── Borders (non-glass elements) ── */
|
|
209
|
+
--border-subtle: rgba(255, 255, 255, 0.06);
|
|
210
|
+
--border-medium: rgba(255, 255, 255, 0.10);
|
|
211
|
+
--border-strong: rgba(255, 255, 255, 0.16);
|
|
212
|
+
--border-accent: rgba(0, 200, 232, 0.26);
|
|
213
|
+
--border-accent-strong: rgba(0, 200, 232, 0.50);
|
|
214
|
+
|
|
215
|
+
/* Scrollbar */
|
|
216
|
+
--scrollbar-track: #060910;
|
|
217
|
+
--scrollbar-thumb: rgba(14, 20, 36, 0.90);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* ═══════════════════════════════════════════
|
|
221
|
+
LIGHT THEME (soft aurora — lavender-gray)
|
|
222
|
+
═══════════════════════════════════════════ */
|
|
223
|
+
[data-theme="light"] {
|
|
224
|
+
/* ── Light Aurora Substrate ── */
|
|
225
|
+
--bg-void: #E5E4EF;
|
|
226
|
+
--bg-base: #EDEEF6;
|
|
227
|
+
--bg-gradient: linear-gradient(135deg, #EDEEF6 0%, #E0DFEF 30%, #D8DEF0 70%, #EAE6F2 100%);
|
|
228
|
+
|
|
229
|
+
/* ── White Glass Surfaces ── */
|
|
230
|
+
--glass-shell: rgba(255, 255, 255, 0.70);
|
|
231
|
+
--glass-surface: rgba(255, 255, 255, 0.60);
|
|
232
|
+
--glass-elevated: rgba(255, 255, 255, 0.80);
|
|
233
|
+
--glass-overlay: rgba(255, 255, 255, 0.40);
|
|
234
|
+
|
|
235
|
+
--glass-border: rgba(255, 255, 255, 0.50);
|
|
236
|
+
--glass-border-strong: rgba(255, 255, 255, 0.70);
|
|
237
|
+
--glass-border-accent: rgba(0, 150, 180, 0.30);
|
|
238
|
+
--glass-highlight: linear-gradient(180deg, rgba(255,255,255,0.30) 0%, transparent 50%);
|
|
239
|
+
|
|
240
|
+
--glass-fallback: rgba(255, 255, 255, 0.95);
|
|
241
|
+
|
|
242
|
+
/* Blur levels same as dark */
|
|
243
|
+
--glass-blur-sm: blur(8px);
|
|
244
|
+
--glass-blur-md: blur(16px);
|
|
245
|
+
--glass-blur-lg: blur(24px);
|
|
246
|
+
--glass-blur-xl: blur(40px);
|
|
247
|
+
|
|
248
|
+
/* ── Accents (shifted for light legibility) ── */
|
|
249
|
+
--accent-primary: #0096B0;
|
|
250
|
+
--accent-violet: #6D28D9;
|
|
251
|
+
--accent-gradient: linear-gradient(135deg, #0096B0, #6D28D9);
|
|
252
|
+
--accent-primary-dim: rgba(0, 150, 176, 0.12);
|
|
253
|
+
--accent-violet-dim: rgba(109, 40, 217, 0.10);
|
|
254
|
+
--accent-glow: rgba(0, 150, 176, 0.10);
|
|
255
|
+
--accent-violet-glow: rgba(109, 40, 217, 0.12);
|
|
256
|
+
--accent-contrast: #FFFFFF;
|
|
257
|
+
|
|
258
|
+
/* ── Text ── */
|
|
259
|
+
--text-heading: #0F1520;
|
|
260
|
+
--text-primary: #2A3548;
|
|
261
|
+
--text-secondary: #5A6880;
|
|
262
|
+
--text-muted: #8898A8;
|
|
263
|
+
--text-accent: #0096B0;
|
|
264
|
+
--text-inverse: #FFFFFF;
|
|
265
|
+
|
|
266
|
+
/* ── Semantic Colors ── */
|
|
267
|
+
--semantic-green: #059669;
|
|
268
|
+
--semantic-green-dim: rgba(5, 150, 105, 0.10);
|
|
269
|
+
--semantic-amber: #D97706;
|
|
270
|
+
--semantic-amber-dim: rgba(217, 119, 6, 0.10);
|
|
271
|
+
--semantic-red: #DC2626;
|
|
272
|
+
--semantic-red-dim: rgba(220, 38, 38, 0.10);
|
|
273
|
+
--semantic-purple: #7C3AED;
|
|
274
|
+
--semantic-purple-dim: rgba(124, 58, 237, 0.10);
|
|
275
|
+
--semantic-blue: #2563EB;
|
|
276
|
+
--semantic-blue-dim: rgba(37, 99, 235, 0.10);
|
|
277
|
+
|
|
278
|
+
/* ── Shadows — tinted with light teal ── */
|
|
279
|
+
--shadow-sm: 0 1px 3px rgba(0, 150, 176, 0.06);
|
|
280
|
+
--shadow-md: 0 8px 24px rgba(0, 150, 176, 0.10);
|
|
281
|
+
--shadow-lg: 0 16px 48px rgba(0, 150, 176, 0.14);
|
|
282
|
+
--shadow-glow: 0 0 30px rgba(0, 150, 176, 0.12), 0 8px 24px rgba(15, 21, 32, 0.08);
|
|
283
|
+
--shadow-glow-strong: 0 0 50px rgba(0, 150, 176, 0.20), 0 0 20px rgba(0, 150, 176, 0.10);
|
|
284
|
+
--shadow-violet-glow: 0 0 30px rgba(109, 40, 217, 0.14), 0 8px 24px rgba(15, 21, 32, 0.08);
|
|
285
|
+
--shadow-inner: inset 0 1px 0 rgba(255, 255, 255, 0.50);
|
|
286
|
+
|
|
287
|
+
/* ── Borders ── */
|
|
288
|
+
--border-subtle: rgba(15, 21, 32, 0.07);
|
|
289
|
+
--border-medium: rgba(15, 21, 32, 0.12);
|
|
290
|
+
--border-strong: rgba(15, 21, 32, 0.18);
|
|
291
|
+
--border-accent: rgba(0, 150, 176, 0.22);
|
|
292
|
+
--border-accent-strong: rgba(0, 150, 176, 0.40);
|
|
293
|
+
|
|
294
|
+
/* Scrollbar */
|
|
295
|
+
--scrollbar-track: #EDEEF6;
|
|
296
|
+
--scrollbar-thumb: rgba(200, 210, 230, 0.80);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/* ═══════════════════════════════════════════
|
|
300
|
+
BASE STYLES
|
|
301
|
+
═══════════════════════════════════════════ */
|
|
302
|
+
html, body {
|
|
303
|
+
min-height: 100vh;
|
|
304
|
+
margin: 0;
|
|
305
|
+
-webkit-font-smoothing: antialiased;
|
|
306
|
+
-moz-osx-font-smoothing: grayscale;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/* Aurora substrate — must be on the root element */
|
|
310
|
+
body[data-theme], #app[data-theme], .aurora-shell[data-theme] {
|
|
311
|
+
background: var(--bg-gradient);
|
|
312
|
+
background-attachment: fixed;
|
|
313
|
+
font-family: var(--font-body);
|
|
314
|
+
color: var(--text-primary);
|
|
315
|
+
transition: var(--transition-theme);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
319
|
+
|
|
320
|
+
/* Custom scrollbar */
|
|
321
|
+
::-webkit-scrollbar { width: 6px; height: 6px; }
|
|
322
|
+
::-webkit-scrollbar-track { background: var(--scrollbar-track); }
|
|
323
|
+
::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: var(--radius-full); }
|
|
324
|
+
::-webkit-scrollbar-thumb:hover { background: var(--border-medium); }
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Glass Tokens — Usage Guide
|
|
330
|
+
|
|
331
|
+
### The three glass levels
|
|
332
|
+
|
|
333
|
+
```css
|
|
334
|
+
/* Level 1 — Shell (sidebar, top bar) */
|
|
335
|
+
.glass-shell {
|
|
336
|
+
background: var(--glass-shell); /* dark: rgba(8,12,22,0.75) */
|
|
337
|
+
backdrop-filter: var(--glass-blur-lg);
|
|
338
|
+
border-color: var(--glass-border);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/* Level 2 — Surface cards (standard content containers) */
|
|
342
|
+
.glass-surface {
|
|
343
|
+
background: var(--glass-surface); /* dark: rgba(10,14,26,0.65) */
|
|
344
|
+
backdrop-filter: var(--glass-blur-md);
|
|
345
|
+
border-color: var(--glass-border);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/* Level 3 — Elevated (hover state, nested cards, modals) */
|
|
349
|
+
.glass-elevated {
|
|
350
|
+
background: var(--glass-elevated); /* dark: rgba(14,20,36,0.75) */
|
|
351
|
+
backdrop-filter: var(--glass-blur-md);
|
|
352
|
+
border-color: var(--glass-border-strong);
|
|
353
|
+
}
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Mandatory @supports fallback
|
|
357
|
+
|
|
358
|
+
Every glass surface must have a fallback for browsers that do not support `backdrop-filter`:
|
|
359
|
+
|
|
360
|
+
```css
|
|
361
|
+
.glass-card {
|
|
362
|
+
background: var(--glass-fallback); /* solid fallback */
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
@supports (backdrop-filter: blur(1px)) {
|
|
366
|
+
.glass-card {
|
|
367
|
+
background: var(--glass-surface);
|
|
368
|
+
backdrop-filter: var(--glass-blur-md);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Top reflection pseudo-element
|
|
374
|
+
|
|
375
|
+
Every glass card must have the `::before` reflection. This is what makes the glass feel real.
|
|
376
|
+
|
|
377
|
+
```css
|
|
378
|
+
.glass-card {
|
|
379
|
+
position: relative;
|
|
380
|
+
overflow: hidden;
|
|
381
|
+
}
|
|
382
|
+
.glass-card::before {
|
|
383
|
+
content: '';
|
|
384
|
+
position: absolute;
|
|
385
|
+
top: 0; left: 0; right: 0;
|
|
386
|
+
height: 50%;
|
|
387
|
+
background: var(--glass-highlight);
|
|
388
|
+
pointer-events: none;
|
|
389
|
+
border-radius: inherit;
|
|
390
|
+
}
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## Typography Patterns
|
|
396
|
+
|
|
397
|
+
### Mono Rail — the command spine
|
|
398
|
+
|
|
399
|
+
The most distinctive element of this skill. Use it exclusively for section headers, stat labels, metadata rails, IDs, and timestamps.
|
|
400
|
+
|
|
401
|
+
```css
|
|
402
|
+
.mono-rail {
|
|
403
|
+
font-family: var(--font-mono);
|
|
404
|
+
font-size: var(--text-xs);
|
|
405
|
+
font-weight: var(--weight-semibold);
|
|
406
|
+
letter-spacing: var(--tracking-widest);
|
|
407
|
+
text-transform: uppercase;
|
|
408
|
+
color: var(--text-muted);
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
**Do not overuse** — if every text element is uppercase mono, the command rails lose their authority.
|
|
413
|
+
|
|
414
|
+
### Display Heading
|
|
415
|
+
|
|
416
|
+
```css
|
|
417
|
+
.display-heading {
|
|
418
|
+
font-family: var(--font-display);
|
|
419
|
+
font-weight: var(--weight-bold);
|
|
420
|
+
letter-spacing: var(--tracking-tight);
|
|
421
|
+
line-height: var(--leading-tight);
|
|
422
|
+
color: var(--text-heading);
|
|
423
|
+
}
|
|
424
|
+
/* Sizes: --text-5xl (hero) · --text-3xl (page title) · --text-2xl (section) · --text-xl (card title) */
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Stat Number (standard)
|
|
428
|
+
|
|
429
|
+
```css
|
|
430
|
+
.stat-number {
|
|
431
|
+
font-family: var(--font-display);
|
|
432
|
+
font-size: var(--text-4xl);
|
|
433
|
+
font-weight: var(--weight-bold);
|
|
434
|
+
line-height: var(--leading-none);
|
|
435
|
+
color: var(--text-heading);
|
|
436
|
+
font-variant-numeric: tabular-nums;
|
|
437
|
+
font-feature-settings: "tnum" 1;
|
|
438
|
+
}
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Gradient Stat Number (hero metric only)
|
|
442
|
+
|
|
443
|
+
Use for the single most important metric on the page — not all stats.
|
|
444
|
+
|
|
445
|
+
```css
|
|
446
|
+
.stat-number--gradient {
|
|
447
|
+
background: var(--accent-gradient);
|
|
448
|
+
-webkit-background-clip: text;
|
|
449
|
+
-webkit-text-fill-color: transparent;
|
|
450
|
+
background-clip: text;
|
|
451
|
+
font-size: var(--text-4xl);
|
|
452
|
+
font-weight: var(--weight-bold);
|
|
453
|
+
line-height: var(--leading-none);
|
|
454
|
+
font-variant-numeric: tabular-nums;
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### Body Text
|
|
459
|
+
|
|
460
|
+
```css
|
|
461
|
+
.body-text {
|
|
462
|
+
font-family: var(--font-body);
|
|
463
|
+
font-size: var(--text-base);
|
|
464
|
+
font-weight: var(--weight-normal);
|
|
465
|
+
line-height: var(--leading-relaxed);
|
|
466
|
+
color: var(--text-primary);
|
|
467
|
+
}
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
## Token Scope Guardrails
|
|
473
|
+
|
|
474
|
+
**Rule 1:** Typography, spacing, radius, and transition tokens belong in `:root` — NOT in `[data-theme]`.
|
|
475
|
+
|
|
476
|
+
**Rule 2:** Theme-specific colors and glass surfaces belong in `[data-theme]`.
|
|
477
|
+
|
|
478
|
+
**Rule 3:** If `body` consumes `var(--font-body)`, that variable must exist in `:root` or a scope `body` inherits.
|
|
479
|
+
|
|
480
|
+
**Rule 4:** If the theme lives on a container (`.shell[data-theme]`), either keep typography in `:root`, or apply `font-family` directly on that shell element.
|
|
481
|
+
|
|
482
|
+
**Unsafe (font breaks silently):**
|
|
483
|
+
```css
|
|
484
|
+
/* WRONG — body cannot inherit from .shell */
|
|
485
|
+
.shell[data-theme="dark"] { --font-body: 'Inter', sans-serif; }
|
|
486
|
+
body { font-family: var(--font-body); }
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
**Safe:**
|
|
490
|
+
```css
|
|
491
|
+
:root { --font-body: 'Inter', system-ui, sans-serif; }
|
|
492
|
+
body { font-family: var(--font-body); }
|
|
493
|
+
.shell[data-theme="dark"] { --bg-base: #060910; }
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## Compact Density Scale
|
|
499
|
+
|
|
500
|
+
For dashboards, admin panels, settings, and any dense operational UI.
|
|
501
|
+
|
|
502
|
+
### Card container scale
|
|
503
|
+
|
|
504
|
+
| Level | Use | Padding | Border Radius |
|
|
505
|
+
|---|---|---|---|
|
|
506
|
+
| L1 — page glass card | top-level section | `var(--space-5)` | `var(--radius-xl)` (18px) |
|
|
507
|
+
| L2 — nested glass card | card inside a card | `var(--space-4)` | `var(--radius-lg)` (14px) |
|
|
508
|
+
| L3 — inset block | disclosure body, info block | `10px` | `var(--radius-md)` (10px) |
|
|
509
|
+
|
|
510
|
+
Between L1 cards: `gap: var(--space-3)` (not `--space-6`).
|
|
511
|
+
|
|
512
|
+
### Form controls — operational context
|
|
513
|
+
|
|
514
|
+
```
|
|
515
|
+
Input : px-3 py-2 text-xs border-radius: var(--radius-md) (~32px height)
|
|
516
|
+
Select : px-3 py-2 text-xs border-radius: var(--radius-md)
|
|
517
|
+
Label : font-mono text-[0.65rem] mb: var(--space-1)
|
|
518
|
+
Button : px-3 py-2 text-xs border-radius: var(--radius-md)
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
### Badges — compact
|
|
522
|
+
|
|
523
|
+
```
|
|
524
|
+
Status : px-2 py-0.5 text-[0.6rem] rounded-full
|
|
525
|
+
Tag : px-2 py-0.5 text-[0.58rem] rounded-full
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### List rows
|
|
529
|
+
|
|
530
|
+
```
|
|
531
|
+
Row padding : py-2 (8px) — not py-3 or py-4
|
|
532
|
+
Row gap : gap-2.5 (10px)
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## Chart Palette
|
|
538
|
+
|
|
539
|
+
Consistent chart colors across all dashboards:
|
|
540
|
+
|
|
541
|
+
```css
|
|
542
|
+
--chart-1: var(--accent-primary); /* #00C8E8 teal — primary series */
|
|
543
|
+
--chart-2: var(--accent-violet); /* #7C3AED violet — secondary series */
|
|
544
|
+
--chart-3: var(--semantic-green); /* #00D68F emerald — positive metric */
|
|
545
|
+
--chart-4: var(--semantic-amber); /* #F4A91D amber — warning/neutral */
|
|
546
|
+
--chart-5: var(--semantic-purple); /* #A78BFA purple — tertiary series */
|
|
547
|
+
--chart-6: var(--semantic-blue); /* #38BDF8 blue — informational */
|
|
548
|
+
|
|
549
|
+
/* Area/gradient chart fills */
|
|
550
|
+
--chart-fill-1: linear-gradient(180deg, rgba(0, 200, 232, 0.25) 0%, rgba(0, 200, 232, 0) 100%);
|
|
551
|
+
--chart-fill-2: linear-gradient(180deg, rgba(124, 58, 237, 0.20) 0%, rgba(124, 58, 237, 0) 100%);
|
|
552
|
+
--chart-fill-3: linear-gradient(180deg, rgba(0, 214, 143, 0.20) 0%, rgba(0, 214, 143, 0) 100%);
|
|
553
|
+
--chart-fill-4: linear-gradient(180deg, rgba(244, 169, 29, 0.20) 0%, rgba(244, 169, 29, 0) 100%);
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
Chart rules:
|
|
557
|
+
- Area charts: always gradient fill (top color → transparent), never solid fill. The fade reveals the glass panel below.
|
|
558
|
+
- Grid lines: `rgba(255,255,255,0.06)` on dark, `rgba(0,0,0,0.06)` on light.
|
|
559
|
+
- Tooltips: glass card (glass-surface + blur-sm + luminous border) — never a solid white box.
|
|
560
|
+
- Axis labels: `var(--text-muted)`, `var(--text-xs)`.
|
|
561
|
+
|
|
562
|
+
---
|
|
563
|
+
|
|
564
|
+
## Interaction Guardrails
|
|
565
|
+
|
|
566
|
+
1. Primary actions on accent backgrounds must use `var(--accent-contrast)`.
|
|
567
|
+
2. Hover states must preserve or improve text contrast — never reduce it.
|
|
568
|
+
3. Focus styles must be visible on both themes: `outline: var(--focus-ring-width) solid var(--accent-primary)` with `outline-offset: var(--focus-ring-offset)`.
|
|
569
|
+
4. Glass hover: `var(--glass-surface)` → `var(--glass-elevated)`, `200ms`.
|
|
570
|
+
5. One accent gradient family and two neutral text tiers — do not add decorative colors.
|
|
571
|
+
|
|
572
|
+
---
|
|
573
|
+
|
|
574
|
+
## Non-Negotiable Rules
|
|
575
|
+
|
|
576
|
+
1. Aurora gradient substrate is mandatory. Never place glass panels over a solid background.
|
|
577
|
+
2. Dark glass opacity must reveal the aurora — keep alpha at or below 0.75.
|
|
578
|
+
3. Use the token system — never freestyle hex values.
|
|
579
|
+
4. Teal-electric and violet are the only accents — never introduce a third accent color.
|
|
580
|
+
5. Mono labels are structural rails — use them for section headers, stat labels, and metadata only.
|
|
581
|
+
6. Always include `@supports (backdrop-filter: blur(1px))` fallback for every glass surface.
|
|
582
|
+
7. One gradient stat number per viewport (the hero metric). Do not gradient-text all stats.
|
|
583
|
+
8. Compact density for operational UI — never carry marketing spacing into dense dashboards.
|
|
584
|
+
9. Shadows must be tinted with `rgba(0,200,232,...)` — never solid black shadows.
|
|
585
|
+
10. Every glass card must pass WCAG AA for body text over its dark glass surface.
|