@sleep2agi/agent-network-dashboard 0.5.7-preview.25 → 0.5.7-preview.27
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +0 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +40 -40
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +0 -6
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +13 -13
- package/.next/server/app/_not-found.segments/_full.segment.rsc +13 -13
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +8 -8
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin/page.js.nft.json +1 -1
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +15 -15
- package/.next/server/app/admin.segments/_full.segment.rsc +15 -15
- package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
- package/.next/server/app/admin.segments/_index.segment.rsc +8 -8
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/admin.segments/admin.segment.rsc +3 -3
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +15 -15
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +8 -8
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +15 -15
- package/.next/server/app/login.segments/_full.segment.rsc +15 -15
- package/.next/server/app/login.segments/_head.segment.rsc +4 -4
- package/.next/server/app/login.segments/_index.segment.rsc +8 -8
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/login.segments/login.segment.rsc +3 -3
- package/.next/server/app/logs/page.js.nft.json +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +15 -15
- package/.next/server/app/logs.segments/_full.segment.rsc +15 -15
- package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/logs.segments/_index.segment.rsc +8 -8
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/logs.segments/logs.segment.rsc +3 -3
- package/.next/server/app/messages/page.js.nft.json +1 -1
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +15 -15
- package/.next/server/app/messages.segments/_full.segment.rsc +15 -15
- package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
- package/.next/server/app/messages.segments/_index.segment.rsc +8 -8
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/messages.segments/messages.segment.rsc +3 -3
- package/.next/server/app/node/page.js.nft.json +1 -1
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +15 -15
- package/.next/server/app/node.segments/_full.segment.rsc +15 -15
- package/.next/server/app/node.segments/_head.segment.rsc +4 -4
- package/.next/server/app/node.segments/_index.segment.rsc +8 -8
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/node.segments/node.segment.rsc +3 -3
- package/.next/server/app/nodes/page.js.nft.json +1 -1
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +15 -15
- package/.next/server/app/nodes.segments/_full.segment.rsc +15 -15
- package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/_index.segment.rsc +8 -8
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/nodes.segment.rsc +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs/page.js.nft.json +1 -1
- package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +15 -15
- package/.next/server/app/server-logs.segments/_full.segment.rsc +15 -15
- package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/_index.segment.rsc +8 -8
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +3 -3
- package/.next/server/app/servers/page.js.nft.json +1 -1
- package/.next/server/app/servers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/servers.html +2 -2
- package/.next/server/app/servers.rsc +15 -15
- package/.next/server/app/servers.segments/_full.segment.rsc +15 -15
- package/.next/server/app/servers.segments/_head.segment.rsc +4 -4
- package/.next/server/app/servers.segments/_index.segment.rsc +8 -8
- package/.next/server/app/servers.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/servers.segments/servers/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/servers.segments/servers.segment.rsc +3 -3
- package/.next/server/app/settings/networks/page.js.nft.json +1 -1
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +15 -15
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +3 -3
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page.js.nft.json +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +15 -15
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +3 -3
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +15 -15
- package/.next/server/app/settings.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page.js.nft.json +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +15 -15
- package/.next/server/app/tasks.segments/_full.segment.rsc +15 -15
- package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/_index.segment.rsc +8 -8
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/tasks.segment.rsc +3 -3
- package/.next/server/app-paths-manifest.json +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0lu1wok._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0lu1wok._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0nw~zhp._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0nw~zhp._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +3 -3
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_0i3759l._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_0i3759l._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_1153xeb._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_1153xeb._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0r7kb.o._.js +9 -0
- package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0r7kb.o._.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{0htz_k0~gd-wb.js → 03g.reu.n2vy-.js} +3 -3
- package/.next/static/chunks/{0ca8xsuirxtp_.js → 056dhk~rkn7~c.js} +1 -1
- package/.next/static/chunks/088exwd92o3ko.js +7 -0
- package/.next/static/chunks/09zjqown8w_eo.css +1 -0
- package/.next/static/chunks/0fkd-56.k2ts..js +1 -0
- package/.next/static/chunks/0wurs-zl_0shu.js +1 -0
- package/.next/static/chunks/{05wpkysi1s2zn.js → 0ymogrg8t82.8.js} +1 -1
- package/.next/static/chunks/{11i~5rdecfel1.js → 0~4x7j1t~_biu.js} +1 -1
- package/.next/static/chunks/{15yjjo1fv.muz.js → 0~eyvw9.ips4y.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/.next/types/routes.d.ts +1 -2
- package/.next/types/validator.ts +0 -9
- package/app/components/HelpOverlay.tsx +0 -3
- package/app/components/Sidebar.tsx +6 -7
- package/app/components/ThemeSwitcher.tsx +10 -79
- package/app/globals.css +76 -707
- package/app/lib/hooks.ts +0 -5
- package/app/page.tsx +0 -24
- package/app/settings/page.tsx +1 -77
- package/package.json +1 -1
- package/.next/server/app/api/hub/license/route/app-paths-manifest.json +0 -3
- package/.next/server/app/api/hub/license/route/build-manifest.json +0 -9
- package/.next/server/app/api/hub/license/route/server-reference-manifest.json +0 -4
- package/.next/server/app/api/hub/license/route.js +0 -7
- package/.next/server/app/api/hub/license/route.js.map +0 -5
- package/.next/server/app/api/hub/license/route.js.nft.json +0 -1
- package/.next/server/app/api/hub/license/route_client-reference-manifest.js +0 -3
- package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_license_route_actions_0a4.fuh.js +0 -3
- package/.next/server/chunks/0ykm__next-internal_server_app_api_hub_license_route_actions_0a4.fuh.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0rovr5-._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0rovr5-._.js.map +0 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0s5uqlp._.js +0 -9
- package/.next/server/chunks/ssr/agent-network-dashboard_app_components_0s5uqlp._.js.map +0 -1
- package/.next/static/chunks/0f8p97tmyqvm5.js +0 -7
- package/.next/static/chunks/0fzfrj9t-fbn_.js +0 -1
- package/.next/static/chunks/0qn1xzhihji7a.css +0 -1
- package/.next/static/chunks/0usnl7ffq88dg.js +0 -1
- package/app/api/hub/license/route.ts +0 -33
- package/app/components/BroadcastBar.tsx +0 -84
- package/app/components/InboxPanel.tsx +0 -36
- /package/.next/static/{z68cVBEzcBzq8iEOD2ChR → 9g4BcmiytsH2z-zDmAf8f}/_buildManifest.js +0 -0
- /package/.next/static/{z68cVBEzcBzq8iEOD2ChR → 9g4BcmiytsH2z-zDmAf8f}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{z68cVBEzcBzq8iEOD2ChR → 9g4BcmiytsH2z-zDmAf8f}/_ssgManifest.js +0 -0
package/app/globals.css
CHANGED
|
@@ -4,13 +4,9 @@ html,
|
|
|
4
4
|
body {
|
|
5
5
|
max-width: 100%;
|
|
6
6
|
overflow-x: hidden;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
* {
|
|
7
|
+
}* {
|
|
10
8
|
box-sizing: border-box;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/* ────────────────────────────────────────────────────
|
|
9
|
+
}/* ────────────────────────────────────────────────────
|
|
14
10
|
Design tokens — switch via [data-theme="..."] on <html>
|
|
15
11
|
See ThemeProvider for runtime selection.
|
|
16
12
|
──────────────────────────────────────────────────── */
|
|
@@ -35,504 +31,50 @@ body {
|
|
|
35
31
|
--scrollbar-hover: #3a3a5a;
|
|
36
32
|
--code-bg: #1a1a3a;
|
|
37
33
|
color-scheme: dark;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
[data-theme="light"] {
|
|
41
|
-
--bg: #f6f7f9;
|
|
42
|
-
--bg-secondary: #ffffff;
|
|
43
|
-
--bg-elevated: #eef0f4;
|
|
44
|
-
--fg: #0f1419;
|
|
45
|
-
--fg-muted: #525a66;
|
|
46
|
-
--fg-dim: #8a94a3;
|
|
47
|
-
--border: #e3e6eb;
|
|
48
|
-
--border-hover: #c8cdd6;
|
|
49
|
-
--accent: #009e7e;
|
|
50
|
-
--accent-fg: #ffffff;
|
|
51
|
-
--success: #059669;
|
|
52
|
-
--warning: #d97706;
|
|
53
|
-
--danger: #dc2626;
|
|
54
|
-
--info: #0284c7;
|
|
55
|
-
--scrollbar: #d4d8df;
|
|
56
|
-
--scrollbar-hover: #a1a8b5;
|
|
57
|
-
--code-bg: #eef0f4;
|
|
58
|
-
color-scheme: light;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
[data-theme="mint"] {
|
|
62
|
-
--bg: #f0fdf4;
|
|
63
|
-
--bg-secondary: #ffffff;
|
|
64
|
-
--bg-elevated: #dcfce7;
|
|
65
|
-
--fg: #052e16;
|
|
66
|
-
--fg-muted: #166534;
|
|
67
|
-
--fg-dim: #4ade80;
|
|
68
|
-
--border: #bbf7d0;
|
|
69
|
-
--border-hover: #86efac;
|
|
70
|
-
--accent: #16a34a;
|
|
71
|
-
--accent-fg: #ffffff;
|
|
72
|
-
--success: #16a34a;
|
|
73
|
-
--warning: #ca8a04;
|
|
74
|
-
--danger: #dc2626;
|
|
75
|
-
--info: #0891b2;
|
|
76
|
-
--scrollbar: #bbf7d0;
|
|
77
|
-
--scrollbar-hover: #86efac;
|
|
78
|
-
--code-bg: #dcfce7;
|
|
79
|
-
color-scheme: light;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
[data-theme="sunset"] {
|
|
83
|
-
--bg: #1a0f1f;
|
|
84
|
-
--bg-secondary: #2d1633;
|
|
85
|
-
--bg-elevated: #3f1d47;
|
|
86
|
-
--fg: #fde68a;
|
|
87
|
-
--fg-muted: #fbbf24;
|
|
88
|
-
--fg-dim: #b45309;
|
|
89
|
-
--border: #581c87;
|
|
90
|
-
--border-hover: #7e22ce;
|
|
91
|
-
--accent: #f97316;
|
|
92
|
-
--accent-fg: #ffffff;
|
|
93
|
-
--success: #84cc16;
|
|
94
|
-
--warning: #facc15;
|
|
95
|
-
--danger: #f43f5e;
|
|
96
|
-
--info: #ec4899;
|
|
97
|
-
--scrollbar: #581c87;
|
|
98
|
-
--scrollbar-hover: #7e22ce;
|
|
99
|
-
--code-bg: #2d1633;
|
|
100
|
-
color-scheme: dark;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
@theme inline {
|
|
34
|
+
}@theme inline {
|
|
104
35
|
--color-background: var(--bg);
|
|
105
36
|
--color-foreground: var(--fg);
|
|
106
37
|
--font-mono: var(--font-geist-mono);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
html, body {
|
|
38
|
+
}html,
|
|
39
|
+
body {
|
|
110
40
|
background: var(--bg);
|
|
111
41
|
color: var(--fg);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
body {
|
|
42
|
+
}body {
|
|
115
43
|
font-family: var(--font-mono), ui-monospace, monospace;
|
|
116
44
|
transition: background-color 0.2s ease, color 0.2s ease;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* Smooth scrollbar — themed */
|
|
120
|
-
.scrollbar-thin::-webkit-scrollbar { width: 4px; height: 4px; }
|
|
121
|
-
.scrollbar-thin::-webkit-scrollbar-track { background: transparent; }
|
|
122
|
-
.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
45
|
+
}/* Smooth scrollbar — themed */
|
|
46
|
+
.scrollbar-thin::-webkit-scrollbar { width: 4px; height: 4px; }.scrollbar-thin::-webkit-scrollbar-track { background: transparent; }.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
123
47
|
background: var(--scrollbar);
|
|
124
48
|
border-radius: 4px;
|
|
125
|
-
}
|
|
126
|
-
.scrollbar-thin::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-hover); }
|
|
127
|
-
|
|
128
|
-
/* Fade in animation */
|
|
49
|
+
}.scrollbar-thin::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-hover); }/* Fade in animation */
|
|
129
50
|
@keyframes fade-in {
|
|
130
51
|
from { opacity: 0; transform: translateY(-4px); }
|
|
131
52
|
to { opacity: 1; transform: translateY(0); }
|
|
132
|
-
}
|
|
133
|
-
.animate-fade-in {
|
|
53
|
+
}.animate-fade-in {
|
|
134
54
|
animation: fade-in 0.3s ease-out;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/* Mobile touch targets */
|
|
55
|
+
}/* Mobile touch targets */
|
|
138
56
|
@media (max-width: 640px) {
|
|
139
57
|
select, input[type="text"], button {
|
|
140
58
|
min-height: 44px;
|
|
141
59
|
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/* Safe area for notched devices */
|
|
60
|
+
}/* Safe area for notched devices */
|
|
145
61
|
@supports (padding-bottom: env(safe-area-inset-bottom)) {
|
|
146
62
|
body {
|
|
147
63
|
padding-bottom: env(safe-area-inset-bottom);
|
|
148
64
|
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/* ────────────────────────────────────────────────────
|
|
152
|
-
Compatibility shims — gradually replace hard-coded
|
|
153
|
-
#0a0a1a / zinc-9xx / etc. in components with var()
|
|
154
|
-
over time. These rules let the existing components
|
|
155
|
-
pick up the active theme even before they are
|
|
156
|
-
migrated.
|
|
157
|
-
──────────────────────────────────────────────────── */
|
|
158
|
-
|
|
159
|
-
/* page-level dark backgrounds → use --bg */
|
|
160
|
-
[data-theme="light"] .bg-\[\#050510\],
|
|
161
|
-
[data-theme="light"] .bg-\[\#080814\],
|
|
162
|
-
[data-theme="light"] .bg-\[\#0a0a14\],
|
|
163
|
-
[data-theme="light"] .bg-\[\#0a0a15\],
|
|
164
|
-
[data-theme="light"] .bg-\[\#0a0a1a\],
|
|
165
|
-
[data-theme="light"] .bg-\[\#0d0d1a\],
|
|
166
|
-
[data-theme="light"] .bg-\[\#11112a\],
|
|
167
|
-
[data-theme="light"] .bg-\[\#11111c\],
|
|
168
|
-
[data-theme="light"] .bg-\[\#161630\],
|
|
169
|
-
[data-theme="light"] .bg-\[\#161640\],
|
|
170
|
-
[data-theme="mint"] .bg-\[\#050510\],
|
|
171
|
-
[data-theme="mint"] .bg-\[\#080814\],
|
|
172
|
-
[data-theme="mint"] .bg-\[\#0a0a14\],
|
|
173
|
-
[data-theme="mint"] .bg-\[\#0a0a15\],
|
|
174
|
-
[data-theme="mint"] .bg-\[\#0a0a1a\],
|
|
175
|
-
[data-theme="mint"] .bg-\[\#0d0d1a\],
|
|
176
|
-
[data-theme="mint"] .bg-\[\#11112a\],
|
|
177
|
-
[data-theme="mint"] .bg-\[\#11111c\],
|
|
178
|
-
[data-theme="mint"] .bg-\[\#161630\],
|
|
179
|
-
[data-theme="mint"] .bg-\[\#161640\] {
|
|
180
|
-
background-color: var(--bg) !important;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/* card / elevated backgrounds (incl. opacity variants) */
|
|
184
|
-
[data-theme="light"] .bg-\[\#111128\],
|
|
185
|
-
[data-theme="light"] .bg-\[\#111128\]\/80,
|
|
186
|
-
[data-theme="light"] .bg-\[\#1a1a2a\],
|
|
187
|
-
[data-theme="light"] .bg-\[\#1a1a3a\],
|
|
188
|
-
[data-theme="mint"] .bg-\[\#111128\],
|
|
189
|
-
[data-theme="mint"] .bg-\[\#111128\]\/80,
|
|
190
|
-
[data-theme="mint"] .bg-\[\#1a1a2a\],
|
|
191
|
-
[data-theme="mint"] .bg-\[\#1a1a3a\] {
|
|
192
|
-
background-color: var(--bg-secondary) !important;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/* hover / input field backgrounds */
|
|
196
|
-
[data-theme="light"] .bg-\[\#2a2a4a\],
|
|
197
|
-
[data-theme="mint"] .bg-\[\#2a2a4a\] {
|
|
198
|
-
background-color: var(--bg-elevated) !important;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/* hardcoded borders */
|
|
202
|
-
[data-theme="light"] .border-\[\#111128\],
|
|
203
|
-
[data-theme="light"] .border-\[\#1a1a2a\],
|
|
204
|
-
[data-theme="light"] .border-\[\#2a2a4a\],
|
|
205
|
-
[data-theme="light"] .border-\[\#3a3a5a\],
|
|
206
|
-
[data-theme="mint"] .border-\[\#111128\],
|
|
207
|
-
[data-theme="mint"] .border-\[\#1a1a2a\],
|
|
208
|
-
[data-theme="mint"] .border-\[\#2a2a4a\],
|
|
209
|
-
[data-theme="mint"] .border-\[\#3a3a5a\] {
|
|
210
|
-
border-color: var(--border) !important;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/* dark-tuned gradient buttons → flat brand color in light themes */
|
|
214
|
-
[data-theme="light"] [class*="from-cyan-"][class*="to-blue-"],
|
|
215
|
-
[data-theme="light"] [class*="from-cyan-"][class*="to-emerald-"],
|
|
216
|
-
[data-theme="light"] [class*="from-emerald-"][class*="to-cyan-"],
|
|
217
|
-
[data-theme="light"] [class*="from-blue-"][class*="to-cyan-"] {
|
|
218
|
-
background: var(--accent) !important;
|
|
219
|
-
color: var(--accent-fg) !important;
|
|
220
|
-
}
|
|
221
|
-
[data-theme="light"] [class*="from-cyan-"][class*="to-blue-"]:hover,
|
|
222
|
-
[data-theme="light"] [class*="from-cyan-"][class*="to-emerald-"]:hover,
|
|
223
|
-
[data-theme="light"] [class*="from-emerald-"][class*="to-cyan-"]:hover,
|
|
224
|
-
[data-theme="light"] [class*="from-blue-"][class*="to-cyan-"]:hover {
|
|
225
|
-
background: #00b894 !important;
|
|
226
|
-
filter: brightness(1.05);
|
|
227
|
-
}
|
|
228
|
-
[data-theme="light"] .text-gray-100,
|
|
229
|
-
[data-theme="light"] .text-gray-200,
|
|
230
|
-
[data-theme="light"] .text-gray-300,
|
|
231
|
-
[data-theme="light"] .text-gray-100\/90,
|
|
232
|
-
[data-theme="mint"] .text-gray-100,
|
|
233
|
-
[data-theme="mint"] .text-gray-200,
|
|
234
|
-
[data-theme="mint"] .text-gray-300,
|
|
235
|
-
[data-theme="mint"] .text-gray-100\/90 {
|
|
236
|
-
color: var(--fg) !important;
|
|
237
|
-
}
|
|
238
|
-
[data-theme="light"] .text-gray-400,
|
|
239
|
-
[data-theme="light"] .text-gray-500,
|
|
240
|
-
[data-theme="light"] .text-gray-600,
|
|
241
|
-
[data-theme="light"] .placeholder-gray-600::placeholder,
|
|
242
|
-
[data-theme="mint"] .text-gray-400,
|
|
243
|
-
[data-theme="mint"] .text-gray-500,
|
|
244
|
-
[data-theme="mint"] .text-gray-600,
|
|
245
|
-
[data-theme="mint"] .placeholder-gray-600::placeholder {
|
|
246
|
-
color: var(--fg-muted) !important;
|
|
247
|
-
}
|
|
248
|
-
[data-theme="light"] .text-white,
|
|
249
|
-
[data-theme="mint"] .text-white {
|
|
250
|
-
color: var(--fg) !important;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
[data-theme="light"] .text-zinc-100,
|
|
254
|
-
[data-theme="light"] .text-zinc-200,
|
|
255
|
-
[data-theme="light"] .text-white,
|
|
256
|
-
[data-theme="mint"] .text-zinc-100,
|
|
257
|
-
[data-theme="mint"] .text-zinc-200,
|
|
258
|
-
[data-theme="mint"] .text-white {
|
|
259
|
-
color: var(--fg) !important;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
[data-theme="light"] .text-zinc-400,
|
|
263
|
-
[data-theme="light"] .text-zinc-500,
|
|
264
|
-
[data-theme="mint"] .text-zinc-400,
|
|
265
|
-
[data-theme="mint"] .text-zinc-500 {
|
|
266
|
-
color: var(--fg-muted) !important;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
[data-theme="light"] .bg-zinc-900,
|
|
270
|
-
[data-theme="light"] .bg-zinc-950,
|
|
271
|
-
[data-theme="light"] .bg-black,
|
|
272
|
-
[data-theme="mint"] .bg-zinc-900,
|
|
273
|
-
[data-theme="mint"] .bg-zinc-950,
|
|
274
|
-
[data-theme="mint"] .bg-black {
|
|
275
|
-
background-color: var(--bg-secondary) !important;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
[data-theme="light"] .bg-zinc-800,
|
|
279
|
-
[data-theme="mint"] .bg-zinc-800 {
|
|
280
|
-
background-color: var(--bg-elevated) !important;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
[data-theme="light"] .border-zinc-700,
|
|
284
|
-
[data-theme="light"] .border-zinc-800,
|
|
285
|
-
[data-theme="light"] .border-white\/10,
|
|
286
|
-
[data-theme="light"] .border-white\/5,
|
|
287
|
-
[data-theme="mint"] .border-zinc-700,
|
|
288
|
-
[data-theme="mint"] .border-zinc-800,
|
|
289
|
-
[data-theme="mint"] .border-white\/10,
|
|
290
|
-
[data-theme="mint"] .border-white\/5 {
|
|
291
|
-
border-color: var(--border) !important;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/* Light theme: additional zinc shades + accent colors override */
|
|
295
|
-
[data-theme="light"] .bg-zinc-700,
|
|
296
|
-
[data-theme="light"] .bg-zinc-600,
|
|
297
|
-
[data-theme="mint"] .bg-zinc-700,
|
|
298
|
-
[data-theme="mint"] .bg-zinc-600 {
|
|
299
|
-
background-color: var(--bg-elevated) !important;
|
|
300
|
-
}
|
|
301
|
-
[data-theme="light"] .text-zinc-300,
|
|
302
|
-
[data-theme="light"] .text-zinc-600,
|
|
303
|
-
[data-theme="mint"] .text-zinc-300,
|
|
304
|
-
[data-theme="mint"] .text-zinc-600 {
|
|
305
|
-
color: var(--fg-muted) !important;
|
|
306
|
-
}
|
|
307
|
-
[data-theme="light"] .text-zinc-700,
|
|
308
|
-
[data-theme="light"] .text-zinc-800,
|
|
309
|
-
[data-theme="mint"] .text-zinc-700,
|
|
310
|
-
[data-theme="mint"] .text-zinc-800 {
|
|
311
|
-
color: var(--fg) !important;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
/* Light theme: emerald / cyan / indigo accents → unified brand emerald */
|
|
315
|
-
[data-theme="light"] .text-emerald-400,
|
|
316
|
-
[data-theme="light"] .text-emerald-300,
|
|
317
|
-
[data-theme="light"] .text-cyan-400,
|
|
318
|
-
[data-theme="light"] .text-cyan-300,
|
|
319
|
-
[data-theme="light"] .text-indigo-400 {
|
|
320
|
-
color: var(--accent) !important;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/* Light theme: every "-300/400" accent text color needs a darker mid-tone
|
|
324
|
-
variant. The default Tailwind `-300/-400` shades are designed for dark
|
|
325
|
-
backgrounds — putting them on white gives "barely visible" text (the
|
|
326
|
-
problem Vincent flagged: "浅色下很多字体看不见"). Map each family to its
|
|
327
|
-
`-700` equivalent so contrast against white card is ≥ AA. */
|
|
328
|
-
[data-theme="light"] .text-green-400,
|
|
329
|
-
[data-theme="light"] .text-green-300,
|
|
330
|
-
[data-theme="mint"] .text-green-400,
|
|
331
|
-
[data-theme="mint"] .text-green-300 { color: #047857 !important; }
|
|
332
|
-
|
|
333
|
-
[data-theme="light"] .text-yellow-400,
|
|
334
|
-
[data-theme="light"] .text-yellow-300,
|
|
335
|
-
[data-theme="mint"] .text-yellow-400,
|
|
336
|
-
[data-theme="mint"] .text-yellow-300 { color: #92400e !important; }
|
|
337
|
-
|
|
338
|
-
[data-theme="light"] .text-amber-400,
|
|
339
|
-
[data-theme="light"] .text-amber-300,
|
|
340
|
-
[data-theme="mint"] .text-amber-400,
|
|
341
|
-
[data-theme="mint"] .text-amber-300 { color: #92400e !important; }
|
|
342
|
-
|
|
343
|
-
[data-theme="light"] .text-red-400,
|
|
344
|
-
[data-theme="light"] .text-red-300,
|
|
345
|
-
[data-theme="mint"] .text-red-400,
|
|
346
|
-
[data-theme="mint"] .text-red-300 { color: #b91c1c !important; }
|
|
347
|
-
|
|
348
|
-
[data-theme="light"] .text-purple-400,
|
|
349
|
-
[data-theme="light"] .text-purple-300,
|
|
350
|
-
[data-theme="mint"] .text-purple-400,
|
|
351
|
-
[data-theme="mint"] .text-purple-300 { color: #6d28d9 !important; }
|
|
352
|
-
|
|
353
|
-
[data-theme="light"] .text-orange-400,
|
|
354
|
-
[data-theme="light"] .text-orange-300,
|
|
355
|
-
[data-theme="mint"] .text-orange-400,
|
|
356
|
-
[data-theme="mint"] .text-orange-300 { color: #c2410c !important; }
|
|
357
|
-
|
|
358
|
-
[data-theme="light"] .text-blue-400,
|
|
359
|
-
[data-theme="light"] .text-blue-300,
|
|
360
|
-
[data-theme="mint"] .text-blue-400,
|
|
361
|
-
[data-theme="mint"] .text-blue-300 { color: #1d4ed8 !important; }
|
|
362
|
-
|
|
363
|
-
[data-theme="light"] .text-pink-400,
|
|
364
|
-
[data-theme="light"] .text-pink-300,
|
|
365
|
-
[data-theme="mint"] .text-pink-400,
|
|
366
|
-
[data-theme="mint"] .text-pink-300 { color: #be185d !important; }
|
|
367
|
-
|
|
368
|
-
[data-theme="light"] .text-violet-400,
|
|
369
|
-
[data-theme="light"] .text-violet-300,
|
|
370
|
-
[data-theme="mint"] .text-violet-400,
|
|
371
|
-
[data-theme="mint"] .text-violet-300 { color: #6d28d9 !important; }
|
|
372
|
-
|
|
373
|
-
[data-theme="light"] .text-teal-400,
|
|
374
|
-
[data-theme="light"] .text-teal-300,
|
|
375
|
-
[data-theme="mint"] .text-teal-400,
|
|
376
|
-
[data-theme="mint"] .text-teal-300 { color: #0f766e !important; }
|
|
377
|
-
|
|
378
|
-
/* Light theme: text-gray-700 (used in footers / muted body) is too pale
|
|
379
|
-
when sitting on slightly-grey page bg. Bump to fg-muted. */
|
|
380
|
-
[data-theme="light"] .text-gray-700,
|
|
381
|
-
[data-theme="mint"] .text-gray-700 { color: var(--fg-muted) !important; }
|
|
382
|
-
[data-theme="light"] .bg-emerald-500\/10,
|
|
383
|
-
[data-theme="light"] .bg-emerald-500\/20,
|
|
384
|
-
[data-theme="light"] .bg-cyan-500\/10,
|
|
385
|
-
[data-theme="light"] .bg-cyan-500\/20 {
|
|
386
|
-
background-color: rgba(0, 158, 126, 0.08) !important;
|
|
387
|
-
}
|
|
388
|
-
[data-theme="light"] .border-emerald-500\/30,
|
|
389
|
-
[data-theme="light"] .border-emerald-500\/40,
|
|
390
|
-
[data-theme="light"] .border-cyan-500\/30 {
|
|
391
|
-
border-color: rgba(0, 158, 126, 0.32) !important;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/* Light theme: card-like containers get a subtle elevation shadow
|
|
395
|
-
(cards in dark mode lean on glow; in light mode they need a real shadow
|
|
396
|
-
to read as a layer rather than blending into the page background) */
|
|
397
|
-
[data-theme="light"] .bg-zinc-900,
|
|
398
|
-
[data-theme="light"] .bg-zinc-950,
|
|
399
|
-
[data-theme="light"] .bg-\[\#0a0a1a\],
|
|
400
|
-
[data-theme="light"] .bg-\[\#11112a\],
|
|
401
|
-
[data-theme="light"] .bg-\[\#161640\] {
|
|
402
|
-
box-shadow: 0 1px 0 rgba(15, 23, 42, 0.04), 0 6px 18px -8px rgba(15, 23, 42, 0.08);
|
|
403
|
-
}
|
|
404
|
-
[data-theme="light"] .bg-zinc-800 {
|
|
405
|
-
box-shadow: inset 0 0 0 1px var(--border);
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
/* Light theme: kill any leftover ring / shadow-glow that was tuned for dark bg */
|
|
409
|
-
[data-theme="light"] [class*="shadow-emerald"],
|
|
410
|
-
[data-theme="light"] [class*="shadow-cyan"],
|
|
411
|
-
[data-theme="light"] [class*="shadow-indigo"] {
|
|
412
|
-
--tw-shadow-color: rgba(0, 158, 126, 0.18);
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
/* Solid-color action buttons (bg-blue-600 / bg-cyan-600 / bg-green-600 / …)
|
|
416
|
-
stay dark navy in light themes because the gradient-button shim above only
|
|
417
|
-
matches `from-…-to-…` gradient buttons. Map every primary solid background
|
|
418
|
-
to the active accent so Broadcast / Send Task / Register / Change Password
|
|
419
|
-
etc. read as the brand color instead of black-on-white. */
|
|
420
|
-
[data-theme="light"] .bg-blue-600,
|
|
421
|
-
[data-theme="light"] .bg-blue-500,
|
|
422
|
-
[data-theme="light"] .bg-cyan-600,
|
|
423
|
-
[data-theme="light"] .bg-cyan-500,
|
|
424
|
-
[data-theme="light"] .bg-emerald-600,
|
|
425
|
-
[data-theme="light"] .bg-emerald-500,
|
|
426
|
-
[data-theme="light"] .bg-green-600,
|
|
427
|
-
[data-theme="light"] .bg-green-500,
|
|
428
|
-
[data-theme="light"] .bg-indigo-600,
|
|
429
|
-
[data-theme="light"] .bg-indigo-500,
|
|
430
|
-
[data-theme="light"] .bg-purple-600,
|
|
431
|
-
[data-theme="light"] .bg-purple-500,
|
|
432
|
-
[data-theme="mint"] .bg-blue-600,
|
|
433
|
-
[data-theme="mint"] .bg-blue-500,
|
|
434
|
-
[data-theme="mint"] .bg-cyan-600,
|
|
435
|
-
[data-theme="mint"] .bg-cyan-500,
|
|
436
|
-
[data-theme="mint"] .bg-emerald-600,
|
|
437
|
-
[data-theme="mint"] .bg-emerald-500,
|
|
438
|
-
[data-theme="mint"] .bg-green-600,
|
|
439
|
-
[data-theme="mint"] .bg-green-500,
|
|
440
|
-
[data-theme="mint"] .bg-indigo-600,
|
|
441
|
-
[data-theme="mint"] .bg-indigo-500,
|
|
442
|
-
[data-theme="mint"] .bg-purple-600,
|
|
443
|
-
[data-theme="mint"] .bg-purple-500 {
|
|
444
|
-
background-color: var(--accent) !important;
|
|
445
|
-
color: var(--accent-fg) !important;
|
|
446
|
-
}
|
|
447
|
-
[data-theme="light"] .hover\:bg-blue-500:hover,
|
|
448
|
-
[data-theme="light"] .hover\:bg-cyan-500:hover,
|
|
449
|
-
[data-theme="light"] .hover\:bg-emerald-500:hover,
|
|
450
|
-
[data-theme="light"] .hover\:bg-green-500:hover,
|
|
451
|
-
[data-theme="light"] .hover\:bg-indigo-500:hover,
|
|
452
|
-
[data-theme="light"] .hover\:bg-purple-500:hover,
|
|
453
|
-
[data-theme="mint"] .hover\:bg-blue-500:hover,
|
|
454
|
-
[data-theme="mint"] .hover\:bg-cyan-500:hover,
|
|
455
|
-
[data-theme="mint"] .hover\:bg-emerald-500:hover,
|
|
456
|
-
[data-theme="mint"] .hover\:bg-green-500:hover,
|
|
457
|
-
[data-theme="mint"] .hover\:bg-indigo-500:hover,
|
|
458
|
-
[data-theme="mint"] .hover\:bg-purple-500:hover {
|
|
459
|
-
background-color: #00b894 !important;
|
|
460
|
-
filter: brightness(1.05);
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/* Disabled state for the same family — keep contrast against the page bg
|
|
464
|
-
so disabled buttons don't read as "dark and active" in light mode */
|
|
465
|
-
[data-theme="light"] .disabled\:bg-gray-800:disabled,
|
|
466
|
-
[data-theme="light"] .disabled\:bg-zinc-800:disabled,
|
|
467
|
-
[data-theme="mint"] .disabled\:bg-gray-800:disabled,
|
|
468
|
-
[data-theme="mint"] .disabled\:bg-zinc-800:disabled {
|
|
469
|
-
background-color: var(--bg-elevated) !important;
|
|
470
|
-
color: var(--fg-muted) !important;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
/* ─────────────────────────────────────────────────────────────────────
|
|
474
|
-
v0.4.3 light-theme polish — Phase 3 P0 fixes
|
|
475
|
-
─────────────────────────────────────────────────────────────────── */
|
|
476
|
-
|
|
477
|
-
/* P0-1: Sidebar gets its own surface in light themes (not page-colored).
|
|
478
|
-
In Cyber (dark) the sidebar already feels separate via depth; in
|
|
479
|
-
light/mint the page bg == sidebar bg so only the right border separates
|
|
480
|
-
them. Switch sidebar to bg-secondary (white) + a hairline shadow. */
|
|
481
|
-
[data-theme="light"] aside[data-anet-sidebar="true"],
|
|
482
|
-
[data-theme="mint"] aside[data-anet-sidebar="true"] {
|
|
483
|
-
background-color: var(--bg-secondary) !important;
|
|
484
|
-
/* Right edge: solid hairline border + a soft 16px halo so the sidebar
|
|
485
|
-
reads as a card hovering over the page, not "part of the page". */
|
|
486
|
-
box-shadow:
|
|
487
|
-
1px 0 0 var(--border),
|
|
488
|
-
8px 0 20px -10px rgba(15, 23, 42, 0.10),
|
|
489
|
-
0 0 0 1px rgba(15, 23, 42, 0.02);
|
|
490
|
-
border-right-color: transparent !important;
|
|
491
|
-
}
|
|
492
|
-
/* Also tint page bg slightly cooler so the white sidebar pops more */
|
|
493
|
-
[data-theme="light"] {
|
|
494
|
-
--bg: #f3f5f8; /* was #f6f7f9 — bumped 3pt cooler for sidebar contrast */
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
/* P0-2: Active nav — collapse the 4-emerald stack (bg + border + text + ring)
|
|
498
|
-
to a single accent cue: 3px left bar + medium-weight text. Dark themes
|
|
499
|
-
keep the existing tinted-pill look. */
|
|
500
|
-
[data-theme="light"] .anet-nav-active,
|
|
501
|
-
[data-theme="mint"] .anet-nav-active {
|
|
502
|
-
/* 通信龙 final spec (Q1 + 3-piece lockdown): active nav = ONE cue.
|
|
503
|
-
4px left bar emerald, text in --fg (NOT emerald), NO bg tint.
|
|
504
|
-
Reads as a calm "current page" indicator without competing emerald
|
|
505
|
-
surfaces. (Earlier 0.4.3 had 3px + faint tint + emerald text.) */
|
|
506
|
-
background-color: transparent !important;
|
|
507
|
-
border-color: transparent !important;
|
|
508
|
-
border-left: 4px solid var(--accent) !important;
|
|
509
|
-
border-radius: 0 8px 8px 0 !important;
|
|
510
|
-
padding-left: calc(0.75rem - 4px) !important;
|
|
511
|
-
color: var(--fg) !important;
|
|
512
|
-
font-weight: 600;
|
|
513
|
-
}
|
|
514
|
-
[data-theme="light"] .anet-nav-active:hover,
|
|
515
|
-
[data-theme="mint"] .anet-nav-active:hover {
|
|
516
|
-
background-color: var(--bg-elevated) !important;
|
|
517
|
-
}
|
|
518
|
-
/* When sidebar is collapsed (w-16, justify-center) the left bar would look
|
|
519
|
-
weird against a centered icon — switch to a left-bg accent instead. */
|
|
520
|
-
[data-theme="light"] aside.w-16 .anet-nav-active,
|
|
521
|
-
[data-theme="mint"] aside.w-16 .anet-nav-active {
|
|
65
|
+
}/* When sidebar is collapsed (w-16 {
|
|
522
66
|
border-radius: 8px !important;
|
|
523
67
|
padding-left: 0 !important;
|
|
524
68
|
border-left: 0 !important;
|
|
525
69
|
background-color: var(--bg-elevated) !important;
|
|
526
70
|
color: var(--accent) !important;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
[data-theme="light"] select,
|
|
535
|
-
[data-theme="mint"] select {
|
|
71
|
+
}/* Q6: native <select> theming for light/mint.
|
|
72
|
+
Without this,
|
|
73
|
+
dropdowns on Nodes / Messages / Logs / Settings render with
|
|
74
|
+
the OS default chrome (heavy chevron,
|
|
75
|
+
off-spec font weight,
|
|
76
|
+
no border
|
|
77
|
+
radius). We strip the native chrome with appearance-none {
|
|
536
78
|
-webkit-appearance: none !important;
|
|
537
79
|
-moz-appearance: none !important;
|
|
538
80
|
appearance: none !important;
|
|
@@ -543,159 +85,58 @@ body {
|
|
|
543
85
|
padding-right: 2rem !important;
|
|
544
86
|
background-color: var(--bg-secondary) !important;
|
|
545
87
|
border-radius: 8px;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
[data-theme="mint"] select:focus {
|
|
549
|
-
outline: 2px solid rgba(0, 158, 126, 0.2);
|
|
550
|
-
outline-offset: -1px;
|
|
551
|
-
border-color: var(--accent) !important;
|
|
552
|
-
}
|
|
553
|
-
/* Mint reuses the same chevron — color picker would need its own gray, but
|
|
88
|
+
}/* Mint reuses the same chevron — color picker would need its own gray,
|
|
89
|
+
but
|
|
554
90
|
accent is similar enough that the default chevron color reads OK. */
|
|
555
91
|
|
|
556
92
|
/* KPI stat cards in light mode: kill the gradient wash (which reads as
|
|
557
|
-
pale-mud on white)
|
|
558
|
-
family + real elevation shadow. Dark themes keep the gradient. */
|
|
559
|
-
[data-theme="light"] .anet-stat-card,
|
|
560
|
-
[data-theme="mint"] .anet-stat-card {
|
|
93
|
+
pale-mud on white) {
|
|
561
94
|
border-top-width: 2px;
|
|
562
95
|
box-shadow: 0 1px 0 rgba(15, 23, 42, 0.04), 0 4px 12px -8px rgba(15, 23, 42, 0.08);
|
|
563
|
-
}
|
|
564
|
-
[data-theme="light"] .anet-stat-card:hover,
|
|
565
|
-
[data-theme="mint"] .anet-stat-card:hover {
|
|
566
|
-
box-shadow: 0 1px 0 rgba(15, 23, 42, 0.06), 0 12px 24px -12px rgba(15, 23, 42, 0.16);
|
|
567
|
-
}
|
|
568
|
-
/* Top-strip colors per stat family */
|
|
569
|
-
[data-theme="light"] .anet-stat-card[data-anet-stat-card="green"] { border-top-color: #10b981; }
|
|
570
|
-
[data-theme="light"] .anet-stat-card[data-anet-stat-card="cyan"] { border-top-color: var(--accent); }
|
|
571
|
-
[data-theme="light"] .anet-stat-card[data-anet-stat-card="gray"] { border-top-color: #94a3b8; }
|
|
572
|
-
[data-theme="light"] .anet-stat-card[data-anet-stat-card="white"] { border-top-color: #3b82f6; }
|
|
573
|
-
[data-theme="mint"] .anet-stat-card[data-anet-stat-card="green"] { border-top-color: #16a34a; }
|
|
574
|
-
[data-theme="mint"] .anet-stat-card[data-anet-stat-card="cyan"] { border-top-color: var(--accent); }
|
|
575
|
-
[data-theme="mint"] .anet-stat-card[data-anet-stat-card="gray"] { border-top-color: #4ade80; }
|
|
576
|
-
[data-theme="mint"] .anet-stat-card[data-anet-stat-card="white"] { border-top-color: #0891b2; }
|
|
577
|
-
/* Drop the gradient wash in light themes — looks like dust on white. */
|
|
578
|
-
[data-theme="light"] .anet-stat-card > .pointer-events-none,
|
|
579
|
-
[data-theme="mint"] .anet-stat-card > .pointer-events-none {
|
|
580
|
-
display: none;
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
/* Generic card hover elevation — every white card on light bg gets a
|
|
584
|
-
subtle lift on hover so clickability is obvious. */
|
|
585
|
-
[data-theme="light"] .bg-\[\#111128\]:hover,
|
|
586
|
-
[data-theme="mint"] .bg-\[\#111128\]:hover {
|
|
587
|
-
box-shadow: 0 6px 18px -10px rgba(15, 23, 42, 0.12);
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
/* Task row hover bg (round 19) — dark hex would land on a white card and
|
|
591
|
-
look like a stripe. Re-map to a faint accent tint per theme. */
|
|
592
|
-
[data-theme="light"] .anet-task-row:hover {
|
|
593
|
-
background-color: #f5f7fb !important;
|
|
594
|
-
}
|
|
595
|
-
[data-theme="mint"] .anet-task-row:hover {
|
|
596
|
-
background-color: #ecf6f1 !important;
|
|
597
|
-
}
|
|
598
|
-
[data-theme="sunset"] .anet-task-row:hover {
|
|
599
|
-
background-color: #fff4ec !important;
|
|
600
|
-
}
|
|
601
|
-
/* Open state — slightly stronger fill so users can see "this one is the
|
|
602
|
-
open row" while scrolling. */
|
|
603
|
-
[data-theme="light"] .anet-task-row[aria-expanded="true"] {
|
|
604
|
-
background-color: #fafbfd !important;
|
|
605
|
-
box-shadow: 0 4px 14px -10px rgba(15, 23, 42, 0.14) !important;
|
|
606
|
-
}
|
|
607
|
-
[data-theme="mint"] .anet-task-row[aria-expanded="true"] {
|
|
608
|
-
background-color: #f3faf6 !important;
|
|
609
|
-
}
|
|
610
|
-
[data-theme="sunset"] .anet-task-row[aria-expanded="true"] {
|
|
611
|
-
background-color: #fff8f1 !important;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
/* ─────────────────────────────────────────────────────────────────────
|
|
96
|
+
}/* ─────────────────────────────────────────────────────────────────────
|
|
615
97
|
Login surface (round 1 polish)
|
|
616
|
-
Restrained,
|
|
98
|
+
Restrained,
|
|
99
|
+
minimal — first impression for new Agent Network users.
|
|
617
100
|
─────────────────────────────────────────────────────────────────── */
|
|
618
101
|
.anet-login-bg {
|
|
619
102
|
background:
|
|
620
103
|
radial-gradient(circle at 50% 30%, rgba(34, 211, 238, 0.05), transparent 55%),
|
|
621
104
|
radial-gradient(circle at 33% 75%, rgba(59, 130, 246, 0.045), transparent 55%);
|
|
622
|
-
}
|
|
623
|
-
[data-theme="light"] .anet-login-bg,
|
|
624
|
-
[data-theme="mint"] .anet-login-bg {
|
|
625
|
-
background-image:
|
|
626
|
-
radial-gradient(circle at 50% 35%, rgba(0, 158, 126, 0.06), transparent 60%),
|
|
627
|
-
radial-gradient(circle, rgba(15, 23, 42, 0.05) 1px, transparent 1px);
|
|
628
|
-
background-size: 100% 100%, 24px 24px;
|
|
629
|
-
}
|
|
630
|
-
[data-theme="light"] .anet-login-mark,
|
|
631
|
-
[data-theme="mint"] .anet-login-mark {
|
|
632
|
-
background: var(--bg-secondary) !important;
|
|
633
|
-
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06), 0 0 0 1px var(--border);
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
/* Health banner — sticky thin strip above content, with theme-aware
|
|
637
|
-
green/amber/red tints. Dark themes use the lower-opacity bg+border
|
|
638
|
-
that come from the component classes directly. Light/mint need
|
|
639
|
-
slightly more saturation so the tint reads on a white surface. */
|
|
640
|
-
[data-theme="light"] .anet-health-banner.bg-emerald-500\/6,
|
|
641
|
-
[data-theme="mint"] .anet-health-banner.bg-emerald-500\/6 {
|
|
105
|
+
}/* Health banner — sticky thin strip above content {
|
|
642
106
|
background-color: rgba(16, 185, 129, 0.08) !important;
|
|
643
107
|
color: #047857 !important;
|
|
644
108
|
border-color: rgba(16, 185, 129, 0.25) !important;
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
border-color: rgba(245, 158, 11, 0.30) !important;
|
|
651
|
-
}
|
|
652
|
-
[data-theme="light"] .anet-health-banner.bg-red-500\/8,
|
|
653
|
-
[data-theme="mint"] .anet-health-banner.bg-red-500\/8 {
|
|
654
|
-
background-color: rgba(220, 38, 38, 0.10) !important;
|
|
655
|
-
color: #b91c1c !important;
|
|
656
|
-
border-color: rgba(220, 38, 38, 0.30) !important;
|
|
657
|
-
}
|
|
658
|
-
|
|
659
|
-
/* Sidebar brand "online" pulse — slow, restrained, NO glow.
|
|
660
|
-
1.6s opacity drift between 1.0 and 0.5; nothing scales, nothing blurs. */
|
|
109
|
+
}/* Sidebar brand "online" pulse — slow,
|
|
110
|
+
restrained,
|
|
111
|
+
NO glow.
|
|
112
|
+
1.6s opacity drift between 1.0 and 0.5; nothing scales,
|
|
113
|
+
nothing blurs. */
|
|
661
114
|
@keyframes anet-brand-pulse-kf {
|
|
662
115
|
0%, 100% { opacity: 1; }
|
|
663
116
|
50% { opacity: 0.4; }
|
|
664
|
-
}
|
|
665
|
-
.anet-brand-pulse {
|
|
117
|
+
}.anet-brand-pulse {
|
|
666
118
|
animation: anet-brand-pulse-kf 1.6s ease-in-out infinite;
|
|
667
119
|
}
|
|
668
120
|
@media (prefers-reduced-motion: reduce) {
|
|
669
121
|
.anet-brand-pulse { animation: none; }
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
/* Skeleton pulse — same 1.6s rhythm as the brand pulse but applied to a
|
|
122
|
+
}/* Skeleton pulse — same 1.6s rhythm as the brand pulse but applied to a
|
|
673
123
|
container so all bars inside breathe together. Drifts between full
|
|
674
124
|
token value and 60% so light themes show a calm grey-to-bg-elevated
|
|
675
125
|
fade and dark themes show a calm navy-to-elevated fade. */
|
|
676
126
|
@keyframes anet-skeleton-kf {
|
|
677
127
|
0%, 100% { opacity: 1; }
|
|
678
128
|
50% { opacity: 0.55; }
|
|
679
|
-
}
|
|
680
|
-
.anet-skeleton-pulse {
|
|
129
|
+
}.anet-skeleton-pulse {
|
|
681
130
|
animation: anet-skeleton-kf 1.6s ease-in-out infinite;
|
|
682
131
|
}
|
|
683
132
|
@media (prefers-reduced-motion: reduce) {
|
|
684
133
|
.anet-skeleton-pulse { animation: none; }
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
/* Skeleton bar fill — different per theme so it's visible against the
|
|
134
|
+
}/* Skeleton bar fill — different per theme so it's visible against the
|
|
688
135
|
card bg without being loud. Dark: lighter navy block on dark card.
|
|
689
136
|
Light: mid-grey on white card (not too light or it disappears). */
|
|
690
137
|
.anet-skeleton-bar {
|
|
691
138
|
background-color: #1a1a2a;
|
|
692
|
-
}
|
|
693
|
-
[data-theme="light"] .anet-skeleton-bar,
|
|
694
|
-
[data-theme="mint"] .anet-skeleton-bar {
|
|
695
|
-
background-color: #d4d8df;
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
/* Command palette modal surface — bumped depth so it sits clearly above
|
|
139
|
+
}/* Command palette modal surface — bumped depth so it sits clearly above
|
|
699
140
|
the page content in both themes. Light/mint: white shell with a real
|
|
700
141
|
shadow (not the dark navy that the CSS shim would normally translate
|
|
701
142
|
`bg-[#0d0d1a]` into). */
|
|
@@ -706,22 +147,11 @@ body {
|
|
|
706
147
|
border: 1px solid currentColor;
|
|
707
148
|
border-radius: 3px;
|
|
708
149
|
opacity: 0.6;
|
|
709
|
-
}
|
|
710
|
-
[data-theme="light"] .anet-cmdk > div:not([aria-hidden]),
|
|
711
|
-
[data-theme="mint"] .anet-cmdk > div:not([aria-hidden]) {
|
|
712
|
-
background-color: var(--bg-secondary) !important;
|
|
713
|
-
box-shadow: 0 10px 30px -8px rgba(15, 23, 42, 0.18),
|
|
714
|
-
0 2px 6px -2px rgba(15, 23, 42, 0.10);
|
|
715
|
-
}
|
|
716
|
-
[data-theme="light"] .anet-cmdk-row.bg-cyan-500\/10,
|
|
717
|
-
[data-theme="mint"] .anet-cmdk-row.bg-cyan-500\/10 {
|
|
718
|
-
background-color: rgba(0, 158, 126, 0.08) !important;
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
/* Round 20 — matched-char highlight inside cmdk titles/hints. Inherits
|
|
150
|
+
}/* Round 20 — matched-char highlight inside cmdk titles/hints. Inherits
|
|
722
151
|
line color (`color`) instead of forcing one — keeps text readable on
|
|
723
152
|
both inactive (gray) and active (cyan-300) rows. <mark> default is a
|
|
724
|
-
garish yellow block,
|
|
153
|
+
garish yellow block,
|
|
154
|
+
which we override. */
|
|
725
155
|
.anet-cmdk-mark {
|
|
726
156
|
background: transparent;
|
|
727
157
|
color: inherit;
|
|
@@ -733,46 +163,23 @@ body {
|
|
|
733
163
|
text-decoration-thickness: 1px;
|
|
734
164
|
text-underline-offset: 2px;
|
|
735
165
|
text-decoration-skip-ink: none;
|
|
736
|
-
}
|
|
737
|
-
/* Cyber: accent the matched glyph color so it pops on the dark bg. */
|
|
166
|
+
}/* Cyber: accent the matched glyph color so it pops on the dark bg. */
|
|
738
167
|
[data-theme="cyber"] .anet-cmdk-mark,
|
|
739
168
|
:root:not([data-theme]) .anet-cmdk-mark {
|
|
740
169
|
color: #22d3ee;
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
color: #0d9488;
|
|
746
|
-
}
|
|
747
|
-
[data-theme="sunset"] .anet-cmdk-mark {
|
|
748
|
-
color: #ea580c;
|
|
749
|
-
}
|
|
750
|
-
/* On the active (cyan-tinted) row, the title is already cyan-300 — use
|
|
751
|
-
white-with-underline so the highlight reads as emphasis, not redundancy. */
|
|
170
|
+
}/* On the active (cyan-tinted) row,
|
|
171
|
+
the title is already cyan-300 — use
|
|
172
|
+
white-with-underline so the highlight reads as emphasis,
|
|
173
|
+
not redundancy. */
|
|
752
174
|
.anet-cmdk-row.bg-cyan-500\/10 .anet-cmdk-mark {
|
|
753
175
|
color: #f0fdff;
|
|
754
|
-
}
|
|
755
|
-
[data-theme="light"] .anet-cmdk-row.bg-cyan-500\/10 .anet-cmdk-mark,
|
|
756
|
-
[data-theme="mint"] .anet-cmdk-row.bg-cyan-500\/10 .anet-cmdk-mark {
|
|
757
|
-
color: #064e3b;
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
/* Help overlay — same white-card-with-shadow treatment as cmdk on light */
|
|
761
|
-
[data-theme="light"] .anet-help > div:not([aria-hidden]),
|
|
762
|
-
[data-theme="mint"] .anet-help > div:not([aria-hidden]) {
|
|
763
|
-
background-color: var(--bg-secondary) !important;
|
|
764
|
-
box-shadow: 0 10px 30px -8px rgba(15, 23, 42, 0.18),
|
|
765
|
-
0 2px 6px -2px rgba(15, 23, 42, 0.10);
|
|
766
|
-
}
|
|
767
|
-
|
|
768
|
-
/* Tasks tab strip horizontal scroll fade — gradient overlays at left/right
|
|
176
|
+
}/* Tasks tab strip horizontal scroll fade — gradient overlays at left/right
|
|
769
177
|
edges hint that there's more content when the row overflows. Only
|
|
770
178
|
applied on <sm (where the strip actually scrolls). The wrapper is
|
|
771
179
|
`position: relative` and the fades are absolute siblings. */
|
|
772
180
|
.anet-tabstrip-wrap {
|
|
773
181
|
position: relative;
|
|
774
|
-
}
|
|
775
|
-
.anet-tabstrip-wrap::before,
|
|
182
|
+
}.anet-tabstrip-wrap::before,
|
|
776
183
|
.anet-tabstrip-wrap::after {
|
|
777
184
|
content: '';
|
|
778
185
|
position: absolute;
|
|
@@ -781,13 +188,11 @@ body {
|
|
|
781
188
|
width: 20px;
|
|
782
189
|
pointer-events: none;
|
|
783
190
|
z-index: 1;
|
|
784
|
-
}
|
|
785
|
-
.anet-tabstrip-wrap::before {
|
|
191
|
+
}.anet-tabstrip-wrap::before {
|
|
786
192
|
left: 0;
|
|
787
193
|
background: linear-gradient(to right, #111128, transparent);
|
|
788
194
|
border-radius: 8px 0 0 8px;
|
|
789
|
-
}
|
|
790
|
-
.anet-tabstrip-wrap::after {
|
|
195
|
+
}.anet-tabstrip-wrap::after {
|
|
791
196
|
right: 0;
|
|
792
197
|
background: linear-gradient(to left, #111128, transparent);
|
|
793
198
|
border-radius: 0 8px 8px 0;
|
|
@@ -796,68 +201,40 @@ body {
|
|
|
796
201
|
/* sm: stops scrolling, hide the fades */
|
|
797
202
|
.anet-tabstrip-wrap::before,
|
|
798
203
|
.anet-tabstrip-wrap::after { display: none; }
|
|
799
|
-
}
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
background: linear-gradient(to right, var(--bg-secondary), transparent);
|
|
803
|
-
}
|
|
804
|
-
[data-theme="light"] .anet-tabstrip-wrap::after,
|
|
805
|
-
[data-theme="mint"] .anet-tabstrip-wrap::after {
|
|
806
|
-
background: linear-gradient(to left, var(--bg-secondary), transparent);
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
/* P0-3 baseline: error / warning chip colors for light themes.
|
|
810
|
-
The component-level copy (replacing raw JSON with human text) is fixed
|
|
811
|
-
in the Logs / Server-Logs page components separately. */
|
|
812
|
-
[data-theme="light"] .anet-error-chip,
|
|
813
|
-
[data-theme="mint"] .anet-error-chip {
|
|
814
|
-
background-color: rgba(220, 38, 38, 0.06) !important;
|
|
815
|
-
color: #b91c1c !important;
|
|
816
|
-
border-color: rgba(220, 38, 38, 0.25) !important;
|
|
817
|
-
}
|
|
818
|
-
[data-theme="light"] .anet-warn-chip,
|
|
819
|
-
[data-theme="mint"] .anet-warn-chip {
|
|
820
|
-
background-color: rgba(217, 119, 6, 0.08) !important;
|
|
821
|
-
color: #92400e !important;
|
|
822
|
-
border-color: rgba(217, 119, 6, 0.28) !important;
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
/* Round 30 — global drawer entrance keyframes so TaskDrawer, TaskChatPanel,
|
|
826
|
-
and any future right-side panel share one source. Previously the
|
|
204
|
+
}/* Round 30 — global drawer entrance keyframes so TaskDrawer,
|
|
205
|
+
TaskChatPanel,
|
|
206
|
+
and any future right-side panel share one source. Previously the
|
|
827
207
|
keyframe lived inside TaskChatPanel's <style jsx global>; if that
|
|
828
|
-
component never mounted,
|
|
208
|
+
component never mounted,
|
|
209
|
+
the keyframe was missing for TaskDrawer. */
|
|
829
210
|
@keyframes anet-slide-in {
|
|
830
211
|
from { transform: translateX(100%); }
|
|
831
212
|
to { transform: translateX(0); }
|
|
832
|
-
}
|
|
833
|
-
.animate-slide-in { animation: anet-slide-in 0.2s ease-out; }
|
|
213
|
+
}.animate-slide-in { animation: anet-slide-in 0.2s ease-out; }
|
|
834
214
|
|
|
835
215
|
@keyframes anet-fade-in {
|
|
836
216
|
from { opacity: 0; }
|
|
837
217
|
to { opacity: 1; }
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
/* Round 184 — chrome reset button click-spin. The reset button's
|
|
842
|
-
onClick triggers R168 smoothView crossfade on the canvas, but the
|
|
218
|
+
}.anet-fade-in { animation: anet-fade-in 0.15s ease-out; }/* Round 184 — chrome reset button click-spin. The reset button's
|
|
219
|
+
onClick triggers R168 smoothView crossfade on the canvas,
|
|
220
|
+
but the
|
|
843
221
|
BUTTON itself had no visual feedback that the click registered. A
|
|
844
222
|
single 360° rotation on the refresh-arrow icon (450ms ease-out) is
|
|
845
|
-
a quick "yes,
|
|
223
|
+
a quick "yes,
|
|
224
|
+
I heard you" confirmation. Counter-clockwise (-360°)
|
|
846
225
|
reads as "rewind" / "undo" — natural for a reset gesture. Mirror
|
|
847
226
|
to R52's hub click ripple at the chrome scope. */
|
|
848
227
|
@keyframes anet-reset-spin {
|
|
849
228
|
from { transform: rotate(0deg); }
|
|
850
229
|
to { transform: rotate(-360deg); }
|
|
851
|
-
}
|
|
852
|
-
.anet-reset-spin {
|
|
230
|
+
}.anet-reset-spin {
|
|
853
231
|
animation: anet-reset-spin 0.45s cubic-bezier(0.4, 0, 0.2, 1);
|
|
854
232
|
transform-origin: center;
|
|
855
233
|
transform-box: fill-box;
|
|
856
|
-
}
|
|
857
|
-
|
|
858
|
-
/* Round 186 — chrome zoom-in / zoom-out buttons get a brief icon pop
|
|
234
|
+
}/* Round 186 — chrome zoom-in / zoom-out buttons get a brief icon pop
|
|
859
235
|
on click. Same click-feel idiom R184 added for the reset button —
|
|
860
|
-
the canvas already smoothes via R168/R169 smoothView,
|
|
236
|
+
the canvas already smoothes via R168/R169 smoothView,
|
|
237
|
+
but the
|
|
861
238
|
chrome BUTTON itself needs its own confirmation. A quick scale
|
|
862
239
|
up-then-back (1 → 1.18 → 1 over 220ms) reads as "tapped". Same
|
|
863
240
|
transform-box: fill-box anchoring as R184 keeps the icon
|
|
@@ -866,16 +243,14 @@ body {
|
|
|
866
243
|
0% { transform: scale(1); }
|
|
867
244
|
50% { transform: scale(1.18); }
|
|
868
245
|
100% { transform: scale(1); }
|
|
869
|
-
}
|
|
870
|
-
.anet-chrome-pop {
|
|
246
|
+
}.anet-chrome-pop {
|
|
871
247
|
animation: anet-chrome-pop 0.22s ease-out;
|
|
872
248
|
transform-origin: center;
|
|
873
249
|
transform-box: fill-box;
|
|
874
|
-
}
|
|
875
|
-
|
|
876
|
-
/* Round 498 — recent-signal row hot-count subtle pulse (信息密度 +
|
|
250
|
+
}/* Round 498 — recent-signal row hot-count subtle pulse (信息密度 +
|
|
877
251
|
呼吸感 themes). When a row's edge count crosses the hot threshold
|
|
878
|
-
(≥ 10),
|
|
252
|
+
(≥ 10),
|
|
253
|
+
the existing R127/R320/R445 amber-fill + fw-700 typography
|
|
879
254
|
already calls attention; R498 adds a slow 3s opacity breath (0.85 ↔
|
|
880
255
|
1.0) on the digit so the hot tspans gently pulse — at-a-glance scan
|
|
881
256
|
of the panel reads "high-traffic lane right here" with motion in
|
|
@@ -887,37 +262,31 @@ body {
|
|
|
887
262
|
(animation-duration: 0.001ms !important) — no per-class guard
|
|
888
263
|
needed. The component-side gate (`!reducedMotion && isHot`)
|
|
889
264
|
ensures the className is only applied when both conditions hold,
|
|
890
|
-
|
|
265
|
+
so even without the blanket the no-motion preference is respected. */
|
|
891
266
|
@keyframes anet-recent-hot-pulse-kf {
|
|
892
267
|
0%, 100% { opacity: 0.85; }
|
|
893
268
|
50% { opacity: 1; }
|
|
894
|
-
}
|
|
895
|
-
.anet-recent-hot-pulse {
|
|
269
|
+
}.anet-recent-hot-pulse {
|
|
896
270
|
animation: anet-recent-hot-pulse-kf 3s ease-in-out infinite;
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
/* Round 36 — current-step ring pulse on TaskDrawer timeline. Halo gently
|
|
271
|
+
}/* Round 36 — current-step ring pulse on TaskDrawer timeline. Halo gently
|
|
900
272
|
breathes around the active step's dot so users can spot "task is here". */
|
|
901
273
|
@keyframes anet-current-step-pulse-kf {
|
|
902
274
|
0%, 100% { transform: scale(1); opacity: 0.6; }
|
|
903
275
|
50% { transform: scale(1.25); opacity: 0.0; }
|
|
904
|
-
}
|
|
905
|
-
.anet-current-step-pulse {
|
|
276
|
+
}.anet-current-step-pulse {
|
|
906
277
|
animation: anet-current-step-pulse-kf 1.6s ease-in-out infinite;
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
/* Round 45 — TopoGraph rotating radar sweep wedge. 6s slow rotation
|
|
278
|
+
}/* Round 45 — TopoGraph rotating radar sweep wedge. 6s slow rotation
|
|
910
279
|
gives the topology canvas a real "radar scan" feel without distracting
|
|
911
280
|
from the agent nodes.
|
|
912
281
|
R146: split shorthand into longhand so per-render inline style can
|
|
913
|
-
override animation-duration via --sweep-dur,
|
|
282
|
+
override animation-duration via --sweep-dur,
|
|
283
|
+
joining the R145
|
|
914
284
|
--spoke-dur / R132 --march-dur pattern. Default 6s preserves R45's
|
|
915
285
|
original cadence for any caller that forgets the var. */
|
|
916
286
|
@keyframes anet-topo-sweep-kf {
|
|
917
287
|
0% { transform: rotate(0deg); }
|
|
918
288
|
100% { transform: rotate(360deg); }
|
|
919
|
-
}
|
|
920
|
-
.anet-topo-sweep {
|
|
289
|
+
}.anet-topo-sweep {
|
|
921
290
|
animation-name: anet-topo-sweep-kf;
|
|
922
291
|
animation-duration: var(--sweep-dur, 6s);
|
|
923
292
|
animation-timing-function: linear;
|