بنقرة واحدة
qveris-visual-system
// QVeris dark visual system for public pages and overlays. Tokens, surfaces, typography, motion, responsive, SEO-by-page-type, and dark-mode adaptations for qveris.ai / qveris.cn.
// QVeris dark visual system for public pages and overlays. Tokens, surfaces, typography, motion, responsive, SEO-by-page-type, and dark-mode adaptations for qveris.ai / qveris.cn.
| name | qveris-visual-system |
| description | QVeris dark visual system for public pages and overlays. Tokens, surfaces, typography, motion, responsive, SEO-by-page-type, and dark-mode adaptations for qveris.ai / qveris.cn. |
Exact CSS values and copy-paste recipes → references/tokens.md.
Apply to: homepage, pricing, about, security, ecosystem, docs landing, campaign pages, for-agents, playground (/playground/*), etc.
Do not blindly apply to: dashboards, settings, admin, forms-heavy flows, legal pages. Reuse tokens selectively.
#38D39F, Inspect #FFC24B, Call #2AA8FF"use client" only for hooks/events/browser APIst() — no hardcoded Englishnext/image for images, Metadata / generateMetadata for SEOmulti-region skillFull :root block in tokens.md. Key values:
| Category | Values |
|---|---|
| Backgrounds | --qv-bg: #05070B, --qv-bg-2: #08111C, --qv-panel: rgba(10,14,22,0.88) |
| Text | --qv-text-1 0.97, --qv-text-2 0.74, --qv-text-3 0.48, --qv-text-4 0.36 (all rgba(255,255,255,N)) |
| Brand | aqua #34E3F4, sky #25B8FF, blue #1E6BFF, indigo #2F43FF |
| Border | --qv-line: rgba(255,255,255,0.08) min; active rgba(42,168,255,0.32) |
| Fonts | sans: Plus Jakarta Sans, mono: JetBrains Mono. Banned: Inter, Roboto, Arial, Open Sans |
| Weights | Headlines 350, section titles 400, content titles 550, mono stats 600 |
| Spacing | Section: 92 / 76 / 64 px (desktop / ≤960 / ≤700). Cards: 22 / 18 px. Grid gap: 16 px |
Full CSS in tokens.md:
#0A0F18, 0.08 border, hover lift + aqua glow, active/ghost statestranslateY(-1px); primary = dark-on-gradient; secondary = glass + aqua border::before) → title → desc → content → dividerz-100, blur backdrop. Active: font-550 + aqua underline (desktop) / vertical bar (mobile)12px / 650 / --qv-text-1. Links: 13.5px / 400 / --qv-text-3background-clip: textgetUserAvatarInitials() + getAvatarGradientStyle() from @/lib/user-avatar. No silhouette placeholdersnavigator.clipboard.writeText() + execCommand("copy") fallback + 1.8s visual feedbackDark tokens, not marketing section shells:
--qv-bg / --qv-font-sans. Input: glass container. Chat: variant="dark"MarketingNav. No eyebrows, dividers, or scroll-revealDo not use on other pages: interactive routing canvas, orbital rings, route-dash animation, halo pulse, provider node viz, staggered hero reveal.
isModelIconMono(modelId) → mono: brightness(0) invert(1), colored: no filter. Never blanket-invert_transparent.png. Multi-color SVGs with black text → edit fill to #FFFFFF (not CSS filter)#0A0E16 — no translucent rgba + backdrop-filterz-[110] (above nav z-100), max-h-[calc(100dvh_-_32px)] + overflow-y-auto. Class: qv-auth-modal-panelrgba(10,14,22,0.96) + blur — acceptable (overlay darkens page)<select>: explicit background: #1a1f2e; color: #e0e0e0 on <select> and <option>theme="dark" + explicit dark styles. No useTheme()Autofill applies light !important background. Override with opaque box-shadow: 0 0 0 1000px #0f1420 inset !important (not rgba). Class: qv-auth-field. Full CSS in tokens.md.
getSocialPlatforms(i18n.language) in useMemo([i18n.language]) — never module-level. ZH: WeChat, 小红书, 抖音, B站. EN: Xiaohongshu, X, WeChat, YouTube, TikTok.
Allowed: hero fade-slide, scroll reveal, protocol animation, hover lift. Forbidden: decorative blobs, particles.
Reduced motion: always prefers-reduced-motion: reduce → disable all animation/transition; reveals appear immediately. See tokens.md.
Pages with a left sidebar (/providers, /account) align the content area's edges with MarketingNav (qv-container 1180px). See tokens.md for the full CSS recipe.
w-[260px], flush left, p-5, no borders. hidden md:block or hidden lg:blockflex-1 min-w-0, dynamic padding-left/right via calc() — no max-width, no mx-automax-w-* / mx-auto (width is controlled by the layout)px-4 sm:px-6| Breakpoint | Intent |
|---|---|
<=1100px | tighten layout |
<=960px | hamburger nav, collapse grids |
<=700px | compact spacing, single column |
hidden min-[700px]:blockheader.switchToOtherLang i18n key — never hardcodeisCnRegion gatepx-1 -mx-1 pt-1 -mt-1 for translateY(-3px) hover spacemin-w-0 on grid + children. No overflow-hidden on cards (clips shadows)transform: scale() on ≤700px + outer overflow: hidden (see tokens.md)max-h + overflow-y-auto for short screens; close button inside scrollable areah1–h6: color: inherit in globals.css (not var(--text-primary))::selection: background: rgba(37,184,255,0.24); color: #fffrouter.refresh() (stay on page) when no auth-intent| Page type | Schema |
|---|---|
| Homepage | SoftwareApplication, opt. Organization |
| Pricing | SoftwareApplication, opt. offer metadata |
| Docs / article | TechArticle or none |
| About | Organization |
| Security | WebPage or Organization |
| Privacy / Terms | none |
All pages: title, description, canonical, OG, Twitter card, theme-color: #05070B. Region-aware → multi-region skill.
:focus-visible: 2px solid --qv-brand-aqua, offset 3pxaria-label on interactive elements, aria-hidden on decorative--qv-text-3 / --qv-text-4 within accessible contrastopenAuthModal(), never silent no-opmulti-region skill if neededt() + Metadata APIsvariant="dark", no isReady gates on inputs::selection readable on dark bgmonoIcon filter — no blanket inversiontheme="dark" with explicit styles<select>: dark bg/color on element and <option>i18n.language (not module-level)box-shadow: inset — not rgbaz-[110] > nav; scrolls on short mobile screenstransform: scale() + overflow: hidden on mobilemin-w-0 on container + childrencalc() pattern; sidebar flush left; no border lines