SHA256
Связи: двухслойные линии-световоды, живой фон и стеклянные фильтры
- Сияющие связи — двухслойный неоновый «световод»: размытый glow (4px, blur 2px, opacity 0.4) + тонкий чёткий core (1.5px, #e0f7fc). Объёмное OLED-свечение, линия остаётся изящной. Оба слоя растут синхронно (общий dashoffset). - Обычные линии — тоньше (1.0–1.2px) и глубокий уход в прозрачность (0.42 → 0.07), чтобы матовые связи не спорили с сияющими. - Живой фон-«небула»: глубокое размытое сине-голубое облако под центром, медленная пульсация радиуса/яркости + переливы индиго↔ультрамарин (hue-rotate, 7с). - Стеклянные чипы фильтров (frosted glass): rgba(255,255,255,0.03) + backdrop blur(12px) + граница 0.5px solid rgba(255,255,255,0.1); активный подсвечен сине-голубым. - Бамп client.version → 1.2.138; документация фичи обновлена. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
3e4759a0c9
commit
41edd1423c
@@ -16,6 +16,29 @@
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
/* Живой фон-«небула»: глубокое размытое сине-голубое облако света строго под центральным узлом.
|
||||
Медленно «дышит» (радиус/яркость) и переливается индиго↔ультрамарин (hue-rotate) за 7с.
|
||||
Чистый CSS на компоновщике — создаёт ощущение живой светящейся среды, не будит rAF-цикл. */
|
||||
.fg-stage::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: radial-gradient(circle 320px at 50% 47%, rgba(80, 150, 255, 0.30) 0%, rgba(60, 100, 220, 0.15) 42%, rgba(40, 70, 170, 0) 72%);
|
||||
filter: blur(80px);
|
||||
pointer-events: none;
|
||||
z-index: 0; /* строго под линиями (z:0, но раньше по порядку) и узлами (z:1) */
|
||||
animation: fg-nebula 7s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes fg-nebula {
|
||||
0%, 100% { opacity: 0.70; filter: blur(80px) hue-rotate(-12deg); }
|
||||
50% { opacity: 1.00; filter: blur(96px) hue-rotate(16deg); }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.fg-stage::before { animation: none; }
|
||||
}
|
||||
|
||||
.fg-world {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
@@ -37,10 +60,20 @@
|
||||
transition: opacity 420ms ease; /* плавное появление линий при перестройке */
|
||||
}
|
||||
|
||||
/* Связь к «сияющему» узлу — МОНОЛИТНО светится мягким неоном (тот же приём, что у ободка аватарки):
|
||||
статичная двухслойная тень через drop-shadow. Никакой динамики, бегущих точек и пульсаций. */
|
||||
.fg-edge-shine {
|
||||
filter: drop-shadow(0 0 3px rgba(140, 235, 255, 0.75)) drop-shadow(0 0 6px rgba(110, 225, 255, 0.4));
|
||||
/* Сияющая связь = двухслойный неоновый «световод» (Neon Layering): изящно, но объёмно (как OLED).
|
||||
GLOW — широкий размытый ореол неонового оттенка под линией; CORE — тонкий чёткий светлый контур. */
|
||||
.fg-edge-glow {
|
||||
fill: none;
|
||||
stroke: rgba(110, 225, 255, 1);
|
||||
stroke-width: 4;
|
||||
stroke-linecap: round;
|
||||
filter: blur(2px); /* мягкое объёмное свечение вокруг нити */
|
||||
}
|
||||
.fg-edge-core {
|
||||
fill: none;
|
||||
stroke: #e0f7fc; /* ультра-светлый голубой — чёткий контур луча */
|
||||
stroke-width: 1.5;
|
||||
stroke-linecap: round;
|
||||
}
|
||||
|
||||
.fg-node {
|
||||
@@ -294,26 +327,30 @@
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* Стеклянные табы — тонкие пластины матового стекла (frosted glass) */
|
||||
.fg-filter-chip {
|
||||
pointer-events: auto;
|
||||
border: 1px solid rgba(166, 196, 245, 0.28);
|
||||
background: rgba(10, 20, 37, 0.6);
|
||||
backdrop-filter: blur(10px);
|
||||
-webkit-backdrop-filter: blur(10px);
|
||||
border: 0.5px solid rgba(255, 255, 255, 0.1);
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
backdrop-filter: blur(12px);
|
||||
-webkit-backdrop-filter: blur(12px);
|
||||
color: #cfe0ff;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
line-height: 1;
|
||||
padding: 7px 13px;
|
||||
padding: 7px 14px;
|
||||
border-radius: 999px;
|
||||
cursor: pointer;
|
||||
transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
|
||||
box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.08); /* лёгкий стеклянный блик сверху */
|
||||
transition: background 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
|
||||
}
|
||||
|
||||
/* Активный таб — то же стекло, но подсвеченное сине-голубым (в тон неону графа) */
|
||||
.fg-filter-chip.is-active {
|
||||
background: linear-gradient(130deg, rgba(61, 196, 223, 0.92), rgba(58, 95, 142, 0.92));
|
||||
border-color: rgba(180, 230, 255, 0.85);
|
||||
color: #061119;
|
||||
background: rgba(125, 215, 255, 0.16);
|
||||
border-color: rgba(160, 230, 255, 0.55);
|
||||
color: #eaf7ff;
|
||||
box-shadow: inset 0 0.5px 0 rgba(255, 255, 255, 0.12), 0 0 14px rgba(110, 210, 255, 0.28);
|
||||
}
|
||||
|
||||
/* Контекстное меню узла (долгое нажатие) — в #modal-root, поверх всего, не масштабируется */
|
||||
|
||||
Reference in New Issue
Block a user