From 7124ee354529adc521cd88c2636b303e4b06572b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Mon, 13 Jul 2026 22:10:51 +0800 Subject: [PATCH] feat: add Guanghu ice-lake visual layer --- src/App.css | 31 ++++++++++++++- src/components/Editor.css | 83 +++++++++++++++++++++++++++++++-------- src/index.css | 12 ++++++ 3 files changed, 107 insertions(+), 19 deletions(-) diff --git a/src/App.css b/src/App.css index 9567c88..6fda5f4 100644 --- a/src/App.css +++ b/src/App.css @@ -5,7 +5,11 @@ height: 100%; width: 100%; overflow: hidden; - box-shadow: inset 0 0 0 1px var(--border-primary); + background: + radial-gradient(58rem 35rem at 82% -16%, var(--guanghu-aurora), transparent 62%), + radial-gradient(42rem 30rem at -12% 112%, var(--guanghu-glow), transparent 65%), + var(--surface-app); + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--border-primary) 82%, var(--accent-blue)); } .app { @@ -20,6 +24,7 @@ min-width: 220px; display: flex; flex-direction: column; + background: linear-gradient(180deg, color-mix(in srgb, var(--surface-sidebar) 92%, var(--guanghu-glow)), var(--surface-sidebar)); } .app__sidebar > * { @@ -37,7 +42,9 @@ flex-direction: column; position: relative; z-index: 20; - background: var(--surface-sidebar); + background: + linear-gradient(180deg, color-mix(in srgb, var(--surface-sidebar) 94%, var(--guanghu-glow)), var(--surface-sidebar)); + box-shadow: 14px 0 30px color-mix(in srgb, var(--surface-app) 60%, transparent); } .app__note-list > * { @@ -54,6 +61,26 @@ flex-direction: column; container-type: inline-size; container-name: editor; + position: relative; + background: + linear-gradient(var(--guanghu-grid) 1px, transparent 1px), + linear-gradient(90deg, var(--guanghu-grid) 1px, transparent 1px), + color-mix(in srgb, var(--surface-editor) 94%, var(--guanghu-glow)); + background-size: 32px 32px, 32px 32px, auto; +} + +.app__editor::before { + content: ''; + position: absolute; + inset: 0; + pointer-events: none; + background: linear-gradient(180deg, color-mix(in srgb, var(--surface-editor) 28%, transparent), transparent 13rem); + z-index: 0; +} + +.app__editor > * { + position: relative; + z-index: 1; } .app__editor > * { diff --git a/src/components/Editor.css b/src/components/Editor.css index 499b72f..132fc3f 100644 --- a/src/components/Editor.css +++ b/src/components/Editor.css @@ -24,14 +24,36 @@ .guanghu-portal-card { width: 100%; - margin: 0.5rem 0; - padding: 1rem 1.1rem; - border: 1px solid color-mix(in srgb, var(--colors-accent) 38%, var(--colors-border)); - border-radius: 0.85rem; + margin: 1.1rem 0; + padding: 1.15rem 1.25rem 1.2rem; + border: 1px solid color-mix(in srgb, var(--colors-accent) 46%, var(--colors-border)); + border-radius: 1rem; background: - radial-gradient(circle at top right, color-mix(in srgb, var(--colors-accent) 16%, transparent), transparent 48%), - var(--colors-surface); - box-shadow: 0 0.35rem 1.25rem color-mix(in srgb, black 10%, transparent); + linear-gradient(135deg, color-mix(in srgb, var(--colors-accent) 16%, transparent), transparent 42%), + radial-gradient(circle at 92% 16%, color-mix(in srgb, var(--colors-accent) 25%, transparent), transparent 36%), + var(--guanghu-card-highlight, var(--colors-surface)); + box-shadow: + 0 0.8rem 2.2rem color-mix(in srgb, black 14%, transparent), + inset 0 1px 0 color-mix(in srgb, white 28%, transparent); + overflow: hidden; + position: relative; + transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; +} + +.guanghu-portal-card::before { + content: ''; + position: absolute; + inset: 0 auto 0 0; + width: 3px; + background: linear-gradient(var(--colors-accent), color-mix(in srgb, var(--colors-accent) 12%, transparent)); +} + +.guanghu-portal-card:hover { + border-color: color-mix(in srgb, var(--colors-accent) 72%, var(--colors-border)); + box-shadow: + 0 1rem 2.6rem color-mix(in srgb, var(--colors-accent) 18%, transparent), + inset 0 1px 0 color-mix(in srgb, white 32%, transparent); + transform: translateY(-1px); } .guanghu-portal-card__eyebrow { @@ -39,31 +61,36 @@ align-items: center; justify-content: space-between; gap: 0.75rem; - margin-bottom: 0.55rem; + margin-bottom: 0.7rem; color: var(--colors-text-muted); font-size: 0.72rem; - letter-spacing: 0.08em; + font-weight: 650; + letter-spacing: 0.1em; + text-transform: uppercase; } .guanghu-portal-card__status { - padding: 0.18rem 0.55rem; + padding: 0.22rem 0.6rem; border-radius: 999px; - background: color-mix(in srgb, var(--colors-accent) 18%, transparent); + border: 1px solid color-mix(in srgb, var(--colors-accent) 28%, transparent); + background: color-mix(in srgb, var(--colors-accent) 16%, transparent); color: var(--colors-text); letter-spacing: normal; } .guanghu-portal-card__title { display: inline-flex; - font-size: 1.08rem; - font-weight: 650; + font-size: 1.15rem; + font-weight: 720; + letter-spacing: -0.015em; } .guanghu-portal-card__description { - margin: 0.45rem 0 0; + max-width: 68ch; + margin: 0.55rem 0 0; color: var(--colors-text-muted); font-size: 0.9rem; - line-height: 1.55; + line-height: 1.65; } /* Breadcrumb bar: border can still react to the data attribute, but the @@ -116,6 +143,7 @@ body.mac-chrome .app:not(:has(.app__sidebar)):not(:has(.app__note-list)) .breadc overflow-anchor: none; display: flex; flex-direction: column; + scrollbar-color: color-mix(in srgb, var(--accent-blue) 42%, transparent) transparent; } .editor-scroll-area--sheet { @@ -165,7 +193,7 @@ body.mac-chrome .app:not(:has(.app__sidebar)):not(:has(.app__note-list)) .breadc .editor__blocknote-container .bn-container { width: 100%; height: 100%; - background: var(--bg-primary); + background: color-mix(in srgb, var(--bg-primary) 92%, transparent); color: var(--text-primary); font-size: 15px; /* Override BlockNote's internal color variables so .bn-editor background @@ -187,7 +215,28 @@ body.mac-chrome .app:not(:has(.app__sidebar)):not(:has(.app__note-list)) .breadc .editor__blocknote-container .bn-editor { width: 100%; - padding: 20px 0; + padding: 36px 0 72px; +} + +.editor__blocknote-container .bn-editor > .bn-block-group { + padding: 1.25rem clamp(1rem, 3vw, 2.25rem) 3rem; + border: 1px solid color-mix(in srgb, var(--border-primary) 82%, transparent); + border-radius: 1.25rem; + background: color-mix(in srgb, var(--surface-editor) 86%, transparent); + box-shadow: 0 1.3rem 3.5rem color-mix(in srgb, black 8%, transparent); + backdrop-filter: blur(16px); +} + +@media (max-width: 720px) { + .app__editor { + background-size: 22px 22px, 22px 22px, auto; + } + + .editor__blocknote-container .bn-editor > .bn-block-group { + border-inline: 0; + border-radius: 0; + box-shadow: none; + } } .editor__blocknote-container .bn-suggestion-menu { diff --git a/src/index.css b/src/index.css index 9cbf80a..7bbaa4c 100644 --- a/src/index.css +++ b/src/index.css @@ -179,6 +179,12 @@ --hover: var(--state-hover); --link-color: var(--accent-blue); --link-hover: var(--accent-blue-hover); + + /* Guanghu visual layer — an app-owned, ice-lake palette. */ + --guanghu-aurora: rgba(91, 181, 255, 0.2); + --guanghu-glow: rgba(38, 131, 235, 0.15); + --guanghu-grid: rgba(42, 113, 188, 0.06); + --guanghu-card-highlight: rgba(255, 255, 255, 0.76); } :root.dark, @@ -330,6 +336,12 @@ --hover: var(--state-hover); --link-color: var(--accent-blue); --link-hover: var(--accent-blue-hover); + + /* Guanghu visual layer — deep lake, not a flat black canvas. */ + --guanghu-aurora: rgba(76, 174, 255, 0.2); + --guanghu-glow: rgba(20, 118, 214, 0.24); + --guanghu-grid: rgba(126, 202, 255, 0.055); + --guanghu-card-highlight: rgba(28, 54, 80, 0.72); } /* --- Tailwind v4 theme inline: register colors + radii --- */