ux
This commit is contained in:
parent
41e75fd0ce
commit
26d73600a5
@ -1,10 +1,5 @@
|
|||||||
{
|
{
|
||||||
"pages": {
|
"pages": {
|
||||||
"/chat/page": [
|
|
||||||
"static/chunks/webpack.js",
|
|
||||||
"static/chunks/main-app.js",
|
|
||||||
"static/chunks/app/chat/page.js"
|
|
||||||
],
|
|
||||||
"/layout": [
|
"/layout": [
|
||||||
"static/chunks/webpack.js",
|
"static/chunks/webpack.js",
|
||||||
"static/chunks/main-app.js",
|
"static/chunks/main-app.js",
|
||||||
@ -16,10 +11,20 @@
|
|||||||
"static/chunks/main-app.js",
|
"static/chunks/main-app.js",
|
||||||
"static/chunks/app/recommendations/page.js"
|
"static/chunks/app/recommendations/page.js"
|
||||||
],
|
],
|
||||||
"/stock/[code]/page": [
|
"/page": [
|
||||||
"static/chunks/webpack.js",
|
"static/chunks/webpack.js",
|
||||||
"static/chunks/main-app.js",
|
"static/chunks/main-app.js",
|
||||||
"static/chunks/app/stock/[code]/page.js"
|
"static/chunks/app/page.js"
|
||||||
|
],
|
||||||
|
"/sectors/page": [
|
||||||
|
"static/chunks/webpack.js",
|
||||||
|
"static/chunks/main-app.js",
|
||||||
|
"static/chunks/app/sectors/page.js"
|
||||||
|
],
|
||||||
|
"/chat/page": [
|
||||||
|
"static/chunks/webpack.js",
|
||||||
|
"static/chunks/main-app.js",
|
||||||
|
"static/chunks/app/chat/page.js"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
2
frontend/.next/cache/.tsbuildinfo
vendored
2
frontend/.next/cache/.tsbuildinfo
vendored
File diff suppressed because one or more lines are too long
@ -1,20 +1 @@
|
|||||||
{
|
{}
|
||||||
"components/capital-flow.tsx -> echarts": {
|
|
||||||
"id": "components/capital-flow.tsx -> echarts",
|
|
||||||
"files": [
|
|
||||||
"static/chunks/_app-pages-browser_node_modules_echarts_index_js.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"components/kline-chart.tsx -> echarts": {
|
|
||||||
"id": "components/kline-chart.tsx -> echarts",
|
|
||||||
"files": [
|
|
||||||
"static/chunks/_app-pages-browser_node_modules_echarts_index_js.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"components/score-radar.tsx -> echarts": {
|
|
||||||
"id": "components/score-radar.tsx -> echarts",
|
|
||||||
"files": [
|
|
||||||
"static/chunks/_app-pages-browser_node_modules_echarts_index_js.js"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"/chat/page": "app/chat/page.js",
|
"/page": "app/page.js",
|
||||||
|
"/sectors/page": "app/sectors/page.js",
|
||||||
"/recommendations/page": "app/recommendations/page.js",
|
"/recommendations/page": "app/recommendations/page.js",
|
||||||
"/api/chat/stream/route": "app/api/chat/stream/route.js",
|
"/chat/page": "app/chat/page.js"
|
||||||
"/stock/[code]/page": "app/stock/[code]/page.js"
|
|
||||||
}
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
self.__REACT_LOADABLE_MANIFEST="{\"components/capital-flow.tsx -> echarts\":{\"id\":\"components/capital-flow.tsx -> echarts\",\"files\":[\"static/chunks/_app-pages-browser_node_modules_echarts_index_js.js\"]},\"components/kline-chart.tsx -> echarts\":{\"id\":\"components/kline-chart.tsx -> echarts\",\"files\":[\"static/chunks/_app-pages-browser_node_modules_echarts_index_js.js\"]},\"components/score-radar.tsx -> echarts\":{\"id\":\"components/score-radar.tsx -> echarts\",\"files\":[\"static/chunks/_app-pages-browser_node_modules_echarts_index_js.js\"]}}"
|
self.__REACT_LOADABLE_MANIFEST="{}"
|
||||||
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"node": {},
|
"node": {},
|
||||||
"edge": {},
|
"edge": {},
|
||||||
"encryptionKey": "YesDqzwu7U3Zt5BbI/COWZPvCGzAI5FFxbDk16RGGxQ="
|
"encryptionKey": "2xwJVyON4j1nUVj9bt2cAd3iPAWZ77oTyEHOq3x+eQU="
|
||||||
}
|
}
|
||||||
@ -10,17 +10,6 @@ exports.id = "vendor-chunks/next";
|
|||||||
exports.ids = ["vendor-chunks/next"];
|
exports.ids = ["vendor-chunks/next"];
|
||||||
exports.modules = {
|
exports.modules = {
|
||||||
|
|
||||||
/***/ "(ssr)/./node_modules/next/dist/api/navigation.js":
|
|
||||||
/*!**************************************************!*\
|
|
||||||
!*** ./node_modules/next/dist/api/navigation.js ***!
|
|
||||||
\**************************************************/
|
|
||||||
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../client/components/navigation */ \"(ssr)/./node_modules/next/dist/client/components/navigation.js\");\n/* harmony import */ var _client_components_navigation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_client_components_navigation__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceMappingURL=navigation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2FwaS9uYXZpZ2F0aW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFnRDs7QUFFaEQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3RvY2stYWdlbnQtZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2FwaS9uYXZpZ2F0aW9uLmpzP2MyNzIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4uL2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb25cIjtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmF2aWdhdGlvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/api/navigation.js\n");
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ "(ssr)/./node_modules/next/dist/client/add-base-path.js":
|
/***/ "(ssr)/./node_modules/next/dist/client/add-base-path.js":
|
||||||
/*!********************************************************!*\
|
/*!********************************************************!*\
|
||||||
!*** ./node_modules/next/dist/client/add-base-path.js ***!
|
!*** ./node_modules/next/dist/client/add-base-path.js ***!
|
||||||
@ -2108,17 +2097,6 @@ eval("\nmodule.exports = __webpack_require__(/*! ../../module.compiled */ \"(ssr
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ "(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js":
|
|
||||||
/*!*****************************************************************************************!*\
|
|
||||||
!*** ./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js ***!
|
|
||||||
\*****************************************************************************************/
|
|
||||||
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
eval("\nif (false) {} else {\n if (false) {} else {\n if (true) {\n module.exports = __webpack_require__(/*! next/dist/compiled/next-server/app-route.runtime.dev.js */ \"next/dist/compiled/next-server/app-route.runtime.dev.js\");\n } else {}\n }\n}\n\n//# sourceMappingURL=module.compiled.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvbW9kdWxlLmNvbXBpbGVkLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsSUFBSSxLQUFtQyxFQUFFLEVBRXhDLENBQUM7QUFDRixRQUFRLEtBQXFDLEVBQUUsRUFRMUMsQ0FBQztBQUNOLFlBQVksSUFBc0M7QUFDbEQsWUFBWSw4SkFBbUY7QUFDL0YsVUFBVSxLQUFLLEVBSU47QUFDVDtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0b2NrLWFnZW50LWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLW1vZHVsZXMvYXBwLXJvdXRlL21vZHVsZS5jb21waWxlZC5qcz8zYmM3Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuaWYgKHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gXCJlZGdlXCIpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1yb3V0ZS9tb2R1bGUuanNcIik7XG59IGVsc2Uge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX1JFQUNUKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLWV4cGVyaW1lbnRhbC5ydW50aW1lLmRldi5qc1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcm91dGUtdHVyYm8tZXhwZXJpbWVudGFsLnJ1bnRpbWUucHJvZC5qc1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9uZXh0LXNlcnZlci9hcHAtcm91dGUtZXhwZXJpbWVudGFsLnJ1bnRpbWUucHJvZC5qc1wiKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLnJ1bnRpbWUuZGV2LmpzXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL25leHQtc2VydmVyL2FwcC1yb3V0ZS10dXJiby5ydW50aW1lLnByb2QuanNcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1zZXJ2ZXIvYXBwLXJvdXRlLnJ1bnRpbWUucHJvZC5qc1wiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmNvbXBpbGVkLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js\n");
|
|
||||||
|
|
||||||
/***/ }),
|
|
||||||
|
|
||||||
/***/ "(rsc)/./node_modules/next/dist/server/lib/clone-response.js":
|
/***/ "(rsc)/./node_modules/next/dist/server/lib/clone-response.js":
|
||||||
/*!*************************************************************!*\
|
/*!*************************************************************!*\
|
||||||
!*** ./node_modules/next/dist/server/lib/clone-response.js ***!
|
!*** ./node_modules/next/dist/server/lib/clone-response.js ***!
|
||||||
|
|||||||
@ -125,7 +125,7 @@
|
|||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/getFullHash */
|
/******/ /* webpack/runtime/getFullHash */
|
||||||
/******/ (() => {
|
/******/ (() => {
|
||||||
/******/ __webpack_require__.h = () => ("c8994b8599cfdbb2")
|
/******/ __webpack_require__.h = () => ("915ef4ca94558be7")
|
||||||
/******/ })();
|
/******/ })();
|
||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
||||||
|
|||||||
@ -25,7 +25,7 @@ eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpa
|
|||||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"41402df187ff\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6IjtBQUFBLCtEQUFlLGNBQWM7QUFDN0IsSUFBSSxJQUFVLElBQUksaUJBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9hcHAvZ2xvYmFscy5jc3M/OTc1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcIjQxNDAyZGYxODdmZlwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/globals.css\n"));
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"d5e60da35bc9\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6IjtBQUFBLCtEQUFlLGNBQWM7QUFDN0IsSUFBSSxJQUFVLElBQUksaUJBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9hcHAvZ2xvYmFscy5jc3M/OTc1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcImQ1ZTYwZGEzNWJjOVwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/globals.css\n"));
|
||||||
|
|
||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -163,7 +163,7 @@
|
|||||||
/******/ // This function allow to reference async chunks
|
/******/ // This function allow to reference async chunks
|
||||||
/******/ __webpack_require__.u = function(chunkId) {
|
/******/ __webpack_require__.u = function(chunkId) {
|
||||||
/******/ // return url for filenames based on template
|
/******/ // return url for filenames based on template
|
||||||
/******/ return "static/chunks/" + chunkId + ".js";
|
/******/ return undefined;
|
||||||
/******/ };
|
/******/ };
|
||||||
/******/ }();
|
/******/ }();
|
||||||
/******/
|
/******/
|
||||||
@ -192,7 +192,7 @@
|
|||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/getFullHash */
|
/******/ /* webpack/runtime/getFullHash */
|
||||||
/******/ !function() {
|
/******/ !function() {
|
||||||
/******/ __webpack_require__.h = function() { return "18bfcaa4d79c56aa"; }
|
/******/ __webpack_require__.h = function() { return "fde2b42f96686da5"; }
|
||||||
/******/ }();
|
/******/ }();
|
||||||
/******/
|
/******/
|
||||||
/******/ /* webpack/runtime/global */
|
/******/ /* webpack/runtime/global */
|
||||||
|
|||||||
@ -512,30 +512,32 @@ video {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.glass-card {
|
.glass-card {
|
||||||
background: linear-gradient(135deg, rgba(30, 41, 59, 0.8) 0%, rgba(15, 23, 42, 0.9) 100%);
|
background: linear-gradient(135deg, rgba(22, 22, 25, 0.85) 0%, rgba(10, 10, 12, 0.95) 100%);
|
||||||
backdrop-filter: blur(20px);
|
backdrop-filter: blur(20px);
|
||||||
-webkit-backdrop-filter: blur(20px);
|
-webkit-backdrop-filter: blur(20px);
|
||||||
border: 1px solid rgba(148, 163, 184, 0.08);
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
|
||||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
}
|
}
|
||||||
.glass-card:hover {
|
.glass-card:hover {
|
||||||
border-color: rgba(148, 163, 184, 0.15);
|
border-color: rgba(255, 255, 255, 0.10);
|
||||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(148, 163, 184, 0.05);
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
transform: translateY(-1px);
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
.glass-card-static {
|
.glass-card-static {
|
||||||
background: linear-gradient(135deg, rgba(30, 41, 59, 0.8) 0%, rgba(15, 23, 42, 0.9) 100%);
|
background: linear-gradient(135deg, rgba(22, 22, 25, 0.85) 0%, rgba(10, 10, 12, 0.95) 100%);
|
||||||
backdrop-filter: blur(20px);
|
backdrop-filter: blur(20px);
|
||||||
-webkit-backdrop-filter: blur(20px);
|
-webkit-backdrop-filter: blur(20px);
|
||||||
border: 1px solid rgba(148, 163, 184, 0.08);
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
|
||||||
}
|
}
|
||||||
.glass-sidebar {
|
.glass-sidebar {
|
||||||
background: linear-gradient(180deg, rgba(15, 23, 42, 0.97) 0%, rgba(10, 14, 26, 0.99) 100%);
|
background: linear-gradient(180deg, rgba(16, 16, 19, 0.97) 0%, rgba(10, 10, 12, 0.99) 100%);
|
||||||
backdrop-filter: blur(30px);
|
backdrop-filter: blur(30px);
|
||||||
-webkit-backdrop-filter: blur(30px);
|
-webkit-backdrop-filter: blur(30px);
|
||||||
border-right: 1px solid rgba(148, 163, 184, 0.06);
|
border-right: 1px solid rgba(255, 255, 255, 0.04);
|
||||||
}
|
}
|
||||||
.fixed{
|
.fixed{
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@ -954,17 +956,26 @@ video {
|
|||||||
.border-t{
|
.border-t{
|
||||||
border-top-width: 1px;
|
border-top-width: 1px;
|
||||||
}
|
}
|
||||||
.border-accent-indigo\/10{
|
.border-accent-cyan\/10{
|
||||||
border-color: rgb(129 140 248 / 0.1);
|
border-color: rgb(34 211 238 / 0.1);
|
||||||
}
|
}
|
||||||
.border-accent-indigo\/20{
|
.border-accent-cyan\/20{
|
||||||
border-color: rgb(129 140 248 / 0.2);
|
border-color: rgb(34 211 238 / 0.2);
|
||||||
}
|
}
|
||||||
.border-accent-indigo\/30{
|
.border-accent-cyan\/30{
|
||||||
border-color: rgb(129 140 248 / 0.3);
|
border-color: rgb(34 211 238 / 0.3);
|
||||||
}
|
}
|
||||||
.border-accent-indigo\/\[0\.12\]{
|
.border-accent-cyan\/\[0\.12\]{
|
||||||
border-color: rgb(129 140 248 / 0.12);
|
border-color: rgb(34 211 238 / 0.12);
|
||||||
|
}
|
||||||
|
.border-amber-400\/40{
|
||||||
|
border-color: rgb(251 191 36 / 0.4);
|
||||||
|
}
|
||||||
|
.border-amber-500\/10{
|
||||||
|
border-color: rgb(245 158 11 / 0.1);
|
||||||
|
}
|
||||||
|
.border-amber-500\/15{
|
||||||
|
border-color: rgb(245 158 11 / 0.15);
|
||||||
}
|
}
|
||||||
.border-amber-500\/20{
|
.border-amber-500\/20{
|
||||||
border-color: rgb(245 158 11 / 0.2);
|
border-color: rgb(245 158 11 / 0.2);
|
||||||
@ -972,27 +983,18 @@ video {
|
|||||||
.border-amber-500\/\[0\.08\]{
|
.border-amber-500\/\[0\.08\]{
|
||||||
border-color: rgb(245 158 11 / 0.08);
|
border-color: rgb(245 158 11 / 0.08);
|
||||||
}
|
}
|
||||||
.border-orange-400\/40{
|
.border-amber-600\/15{
|
||||||
border-color: rgb(251 146 60 / 0.4);
|
border-color: rgb(217 119 6 / 0.15);
|
||||||
}
|
}
|
||||||
.border-orange-500\/10{
|
.border-orange-500\/10{
|
||||||
border-color: rgb(249 115 22 / 0.1);
|
border-color: rgb(249 115 22 / 0.1);
|
||||||
}
|
}
|
||||||
.border-orange-500\/15{
|
|
||||||
border-color: rgb(249 115 22 / 0.15);
|
|
||||||
}
|
|
||||||
.border-orange-600\/15{
|
|
||||||
border-color: rgb(234 88 12 / 0.15);
|
|
||||||
}
|
|
||||||
.border-red-500\/10{
|
.border-red-500\/10{
|
||||||
border-color: rgb(239 68 68 / 0.1);
|
border-color: rgb(239 68 68 / 0.1);
|
||||||
}
|
}
|
||||||
.border-slate-400\/15{
|
.border-slate-400\/15{
|
||||||
border-color: rgb(148 163 184 / 0.15);
|
border-color: rgb(148 163 184 / 0.15);
|
||||||
}
|
}
|
||||||
.border-slate-800\/50{
|
|
||||||
border-color: rgb(30 41 59 / 0.5);
|
|
||||||
}
|
|
||||||
.border-transparent{
|
.border-transparent{
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
}
|
}
|
||||||
@ -1002,42 +1004,52 @@ video {
|
|||||||
.border-white\/\[0\.04\]{
|
.border-white\/\[0\.04\]{
|
||||||
border-color: rgb(255 255 255 / 0.04);
|
border-color: rgb(255 255 255 / 0.04);
|
||||||
}
|
}
|
||||||
.border-t-accent-indigo\/70{
|
.border-t-accent-cyan\/70{
|
||||||
border-top-color: rgb(129 140 248 / 0.7);
|
border-top-color: rgb(34 211 238 / 0.7);
|
||||||
}
|
}
|
||||||
.border-t-accent-indigo\/80{
|
.border-t-accent-cyan\/80{
|
||||||
border-top-color: rgb(129 140 248 / 0.8);
|
border-top-color: rgb(34 211 238 / 0.8);
|
||||||
}
|
}
|
||||||
.border-t-orange-400{
|
.border-t-amber-400{
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-top-color: rgb(251 146 60 / var(--tw-border-opacity, 1));
|
border-top-color: rgb(251 191 36 / var(--tw-border-opacity, 1));
|
||||||
}
|
}
|
||||||
.bg-accent-indigo{
|
.bg-accent-cyan{
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(129 140 248 / var(--tw-bg-opacity, 1));
|
background-color: rgb(34 211 238 / var(--tw-bg-opacity, 1));
|
||||||
}
|
}
|
||||||
.bg-accent-indigo\/60{
|
.bg-accent-cyan\/60{
|
||||||
background-color: rgb(129 140 248 / 0.6);
|
background-color: rgb(34 211 238 / 0.6);
|
||||||
}
|
}
|
||||||
.bg-accent-indigo\/\[0\.06\]{
|
.bg-accent-cyan\/\[0\.06\]{
|
||||||
background-color: rgb(129 140 248 / 0.06);
|
background-color: rgb(34 211 238 / 0.06);
|
||||||
|
}
|
||||||
|
.bg-amber-400{
|
||||||
|
--tw-bg-opacity: 1;
|
||||||
|
background-color: rgb(251 191 36 / var(--tw-bg-opacity, 1));
|
||||||
|
}
|
||||||
|
.bg-amber-500\/20{
|
||||||
|
background-color: rgb(245 158 11 / 0.2);
|
||||||
|
}
|
||||||
|
.bg-amber-500\/60{
|
||||||
|
background-color: rgb(245 158 11 / 0.6);
|
||||||
}
|
}
|
||||||
.bg-amber-500\/\[0\.04\]{
|
.bg-amber-500\/\[0\.04\]{
|
||||||
background-color: rgb(245 158 11 / 0.04);
|
background-color: rgb(245 158 11 / 0.04);
|
||||||
}
|
}
|
||||||
.bg-bg-card{
|
.bg-bg-card{
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(19 26 46 / var(--tw-bg-opacity, 1));
|
background-color: rgb(22 22 25 / var(--tw-bg-opacity, 1));
|
||||||
}
|
}
|
||||||
.bg-bg-primary{
|
.bg-bg-primary{
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(10 14 26 / var(--tw-bg-opacity, 1));
|
background-color: rgb(10 10 12 / var(--tw-bg-opacity, 1));
|
||||||
}
|
}
|
||||||
.bg-bg-primary\/80{
|
.bg-bg-primary\/80{
|
||||||
background-color: rgb(10 14 26 / 0.8);
|
background-color: rgb(10 10 12 / 0.8);
|
||||||
}
|
}
|
||||||
.bg-bg-secondary\/95{
|
.bg-bg-secondary\/95{
|
||||||
background-color: rgb(15 23 42 / 0.95);
|
background-color: rgb(16 16 19 / 0.95);
|
||||||
}
|
}
|
||||||
.bg-emerald-400{
|
.bg-emerald-400{
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
@ -1047,16 +1059,6 @@ video {
|
|||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
|
background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
|
||||||
}
|
}
|
||||||
.bg-orange-400{
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(251 146 60 / var(--tw-bg-opacity, 1));
|
|
||||||
}
|
|
||||||
.bg-orange-500\/20{
|
|
||||||
background-color: rgb(249 115 22 / 0.2);
|
|
||||||
}
|
|
||||||
.bg-orange-500\/60{
|
|
||||||
background-color: rgb(249 115 22 / 0.6);
|
|
||||||
}
|
|
||||||
.bg-red-400{
|
.bg-red-400{
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(248 113 113 / var(--tw-bg-opacity, 1));
|
background-color: rgb(248 113 113 / var(--tw-bg-opacity, 1));
|
||||||
@ -1065,7 +1067,7 @@ video {
|
|||||||
background-color: rgb(239 68 68 / 0.08);
|
background-color: rgb(239 68 68 / 0.08);
|
||||||
}
|
}
|
||||||
.bg-text-muted\/40{
|
.bg-text-muted\/40{
|
||||||
background-color: rgb(84 99 128 / 0.4);
|
background-color: rgb(88 88 95 / 0.4);
|
||||||
}
|
}
|
||||||
.bg-white\/\[0\.02\]{
|
.bg-white\/\[0\.02\]{
|
||||||
background-color: rgb(255 255 255 / 0.02);
|
background-color: rgb(255 255 255 / 0.02);
|
||||||
@ -1082,19 +1084,34 @@ video {
|
|||||||
.bg-gradient-to-r{
|
.bg-gradient-to-r{
|
||||||
background-image: linear-gradient(to right, var(--tw-gradient-stops));
|
background-image: linear-gradient(to right, var(--tw-gradient-stops));
|
||||||
}
|
}
|
||||||
.from-accent-indigo\/15{
|
.from-accent-cyan\/15{
|
||||||
--tw-gradient-from: rgb(129 140 248 / 0.15) var(--tw-gradient-from-position);
|
--tw-gradient-from: rgb(34 211 238 / 0.15) var(--tw-gradient-from-position);
|
||||||
--tw-gradient-to: rgb(129 140 248 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.from-accent-indigo\/20{
|
.from-accent-cyan\/20{
|
||||||
--tw-gradient-from: rgb(129 140 248 / 0.2) var(--tw-gradient-from-position);
|
--tw-gradient-from: rgb(34 211 238 / 0.2) var(--tw-gradient-from-position);
|
||||||
--tw-gradient-to: rgb(129 140 248 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.from-accent-indigo\/30{
|
.from-accent-cyan\/30{
|
||||||
--tw-gradient-from: rgb(129 140 248 / 0.3) var(--tw-gradient-from-position);
|
--tw-gradient-from: rgb(34 211 238 / 0.3) var(--tw-gradient-from-position);
|
||||||
--tw-gradient-to: rgb(129 140 248 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);
|
||||||
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
|
}
|
||||||
|
.from-amber-500{
|
||||||
|
--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);
|
||||||
|
--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);
|
||||||
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
|
}
|
||||||
|
.from-amber-500\/20{
|
||||||
|
--tw-gradient-from: rgb(245 158 11 / 0.2) var(--tw-gradient-from-position);
|
||||||
|
--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);
|
||||||
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
|
}
|
||||||
|
.from-amber-500\/25{
|
||||||
|
--tw-gradient-from: rgb(245 158 11 / 0.25) var(--tw-gradient-from-position);
|
||||||
|
--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.from-amber-500\/30{
|
.from-amber-500\/30{
|
||||||
@ -1102,9 +1119,9 @@ video {
|
|||||||
--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.from-orange-500{
|
.from-amber-700\/20{
|
||||||
--tw-gradient-from: #f97316 var(--tw-gradient-from-position);
|
--tw-gradient-from: rgb(180 83 9 / 0.2) var(--tw-gradient-from-position);
|
||||||
--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(180 83 9 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.from-orange-500\/20{
|
.from-orange-500\/20{
|
||||||
@ -1112,16 +1129,6 @@ video {
|
|||||||
--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.from-orange-500\/25{
|
|
||||||
--tw-gradient-from: rgb(249 115 22 / 0.25) var(--tw-gradient-from-position);
|
|
||||||
--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);
|
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
||||||
}
|
|
||||||
.from-orange-700\/20{
|
|
||||||
--tw-gradient-from: rgb(194 65 12 / 0.2) var(--tw-gradient-from-position);
|
|
||||||
--tw-gradient-to: rgb(194 65 12 / 0) var(--tw-gradient-to-position);
|
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
||||||
}
|
|
||||||
.from-slate-400\/20{
|
.from-slate-400\/20{
|
||||||
--tw-gradient-from: rgb(148 163 184 / 0.2) var(--tw-gradient-from-position);
|
--tw-gradient-from: rgb(148 163 184 / 0.2) var(--tw-gradient-from-position);
|
||||||
--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);
|
||||||
@ -1132,33 +1139,30 @@ video {
|
|||||||
--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.via-slate-700\/50{
|
.via-white\/\[0\.06\]{
|
||||||
--tw-gradient-to: rgb(51 65 85 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), rgb(51 65 85 / 0.5) var(--tw-gradient-via-position), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / 0.06) var(--tw-gradient-via-position), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.to-accent-indigo\/10{
|
.to-accent-cyan\/10{
|
||||||
--tw-gradient-to: rgb(129 140 248 / 0.1) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(34 211 238 / 0.1) var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
.to-accent-indigo\/5{
|
.to-accent-cyan\/5{
|
||||||
--tw-gradient-to: rgb(129 140 248 / 0.05) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(34 211 238 / 0.05) var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
.to-amber-500\/15{
|
.to-amber-500\/15{
|
||||||
--tw-gradient-to: rgb(245 158 11 / 0.15) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(245 158 11 / 0.15) var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
.to-amber-500\/20{
|
|
||||||
--tw-gradient-to: rgb(245 158 11 / 0.2) var(--tw-gradient-to-position);
|
|
||||||
}
|
|
||||||
.to-amber-500\/25{
|
|
||||||
--tw-gradient-to: rgb(245 158 11 / 0.25) var(--tw-gradient-to-position);
|
|
||||||
}
|
|
||||||
.to-amber-600{
|
.to-amber-600{
|
||||||
--tw-gradient-to: #d97706 var(--tw-gradient-to-position);
|
--tw-gradient-to: #d97706 var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
|
.to-amber-600\/15{
|
||||||
|
--tw-gradient-to: rgb(217 119 6 / 0.15) var(--tw-gradient-to-position);
|
||||||
|
}
|
||||||
.to-amber-600\/20{
|
.to-amber-600\/20{
|
||||||
--tw-gradient-to: rgb(217 119 6 / 0.2) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(217 119 6 / 0.2) var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
.to-orange-800\/15{
|
.to-amber-800\/15{
|
||||||
--tw-gradient-to: rgb(154 52 18 / 0.15) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(146 64 14 / 0.15) var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
.to-slate-500\/15{
|
.to-slate-500\/15{
|
||||||
--tw-gradient-to: rgb(100 116 139 / 0.15) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(100 116 139 / 0.15) var(--tw-gradient-to-position);
|
||||||
@ -1334,18 +1338,18 @@ video {
|
|||||||
.tracking-wider{
|
.tracking-wider{
|
||||||
letter-spacing: 0.05em;
|
letter-spacing: 0.05em;
|
||||||
}
|
}
|
||||||
.text-accent-indigo{
|
.text-accent-cyan{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(129 140 248 / var(--tw-text-opacity, 1));
|
color: rgb(34 211 238 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.text-accent-indigo\/50{
|
.text-accent-cyan\/50{
|
||||||
color: rgb(129 140 248 / 0.5);
|
color: rgb(34 211 238 / 0.5);
|
||||||
}
|
}
|
||||||
.text-accent-indigo\/70{
|
.text-accent-cyan\/70{
|
||||||
color: rgb(129 140 248 / 0.7);
|
color: rgb(34 211 238 / 0.7);
|
||||||
}
|
}
|
||||||
.text-accent-indigo\/80{
|
.text-accent-cyan\/80{
|
||||||
color: rgb(129 140 248 / 0.8);
|
color: rgb(34 211 238 / 0.8);
|
||||||
}
|
}
|
||||||
.text-amber-400{
|
.text-amber-400{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
@ -1382,37 +1386,37 @@ video {
|
|||||||
}
|
}
|
||||||
.text-text-muted{
|
.text-text-muted{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(84 99 128 / var(--tw-text-opacity, 1));
|
color: rgb(88 88 95 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.text-text-muted\/30{
|
.text-text-muted\/30{
|
||||||
color: rgb(84 99 128 / 0.3);
|
color: rgb(88 88 95 / 0.3);
|
||||||
}
|
}
|
||||||
.text-text-muted\/40{
|
.text-text-muted\/40{
|
||||||
color: rgb(84 99 128 / 0.4);
|
color: rgb(88 88 95 / 0.4);
|
||||||
}
|
}
|
||||||
.text-text-muted\/50{
|
.text-text-muted\/50{
|
||||||
color: rgb(84 99 128 / 0.5);
|
color: rgb(88 88 95 / 0.5);
|
||||||
}
|
}
|
||||||
.text-text-muted\/60{
|
.text-text-muted\/60{
|
||||||
color: rgb(84 99 128 / 0.6);
|
color: rgb(88 88 95 / 0.6);
|
||||||
}
|
}
|
||||||
.text-text-primary{
|
.text-text-primary{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(241 245 249 / var(--tw-text-opacity, 1));
|
color: rgb(245 245 247 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.text-text-secondary{
|
.text-text-secondary{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(136 150 179 / var(--tw-text-opacity, 1));
|
color: rgb(152 152 164 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.text-white{
|
.text-white{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.placeholder-text-muted\/40::-moz-placeholder{
|
.placeholder-text-muted\/40::-moz-placeholder{
|
||||||
color: rgb(84 99 128 / 0.4);
|
color: rgb(88 88 95 / 0.4);
|
||||||
}
|
}
|
||||||
.placeholder-text-muted\/40::placeholder{
|
.placeholder-text-muted\/40::placeholder{
|
||||||
color: rgb(84 99 128 / 0.4);
|
color: rgb(88 88 95 / 0.4);
|
||||||
}
|
}
|
||||||
.opacity-0{
|
.opacity-0{
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@ -1421,7 +1425,7 @@ video {
|
|||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
}
|
}
|
||||||
.shadow-glow-sm{
|
.shadow-glow-sm{
|
||||||
--tw-shadow: 0 0 10px rgba(249, 115, 22, 0.1);
|
--tw-shadow: 0 0 10px rgba(245, 158, 11, 0.08);
|
||||||
--tw-shadow-colored: 0 0 10px var(--tw-shadow-color);
|
--tw-shadow-colored: 0 0 10px var(--tw-shadow-color);
|
||||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||||
}
|
}
|
||||||
@ -1477,16 +1481,16 @@ video {
|
|||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--color-up: #ef4444;
|
--color-up: #ff6b6b;
|
||||||
--color-down: #22c55e;
|
--color-down: #34d399;
|
||||||
--font-display: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
--font-display: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
||||||
--font-body: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
--font-body: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
||||||
--font-mono: 'SF Mono', 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;
|
--font-mono: 'SF Mono', 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: #0a0e1a;
|
background-color: #0a0a0c;
|
||||||
color: #f1f5f9;
|
color: #f5f5f7;
|
||||||
font-family: var(--font-body);
|
font-family: var(--font-body);
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -1505,13 +1509,13 @@ body::before {
|
|||||||
content: '';
|
content: '';
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
opacity: 0.015;
|
opacity: 0.018;
|
||||||
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
|
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ambient glow effect - top right */
|
/* Ambient glow effect - top right (amber) */
|
||||||
body::after {
|
body::after {
|
||||||
content: '';
|
content: '';
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@ -1519,7 +1523,7 @@ body::after {
|
|||||||
right: -200px;
|
right: -200px;
|
||||||
width: 600px;
|
width: 600px;
|
||||||
height: 600px;
|
height: 600px;
|
||||||
background: radial-gradient(circle, rgba(249, 115, 22, 0.04) 0%, transparent 70%);
|
background: radial-gradient(circle, rgba(245, 158, 11, 0.035) 0%, transparent 70%);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
}
|
}
|
||||||
@ -1532,11 +1536,11 @@ body::after {
|
|||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
::-webkit-scrollbar-thumb {
|
::-webkit-scrollbar-thumb {
|
||||||
background: rgba(148, 163, 184, 0.2);
|
background: rgba(255, 255, 255, 0.10);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
::-webkit-scrollbar-thumb:hover {
|
::-webkit-scrollbar-thumb:hover {
|
||||||
background: rgba(148, 163, 184, 0.3);
|
background: rgba(255, 255, 255, 0.18);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Animations */
|
/* Animations */
|
||||||
@ -1580,7 +1584,7 @@ body::after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.animate-shimmer {
|
.animate-shimmer {
|
||||||
background: linear-gradient(90deg, transparent, rgba(148, 163, 184, 0.05), transparent);
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.04), transparent);
|
||||||
background-size: 200% 100%;
|
background-size: 200% 100%;
|
||||||
animation: shimmer 2s infinite;
|
animation: shimmer 2s infinite;
|
||||||
}
|
}
|
||||||
@ -1594,25 +1598,25 @@ body::after {
|
|||||||
|
|
||||||
/* Score bar gradient */
|
/* Score bar gradient */
|
||||||
.score-bar-gradient-high {
|
.score-bar-gradient-high {
|
||||||
background: linear-gradient(90deg, #ef4444, #f97316);
|
background: linear-gradient(90deg, #ff6b6b, #f59e0b);
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-bar-gradient-mid {
|
.score-bar-gradient-mid {
|
||||||
background: linear-gradient(90deg, #f97316, #eab308);
|
background: linear-gradient(90deg, #f59e0b, #fbbf24);
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-bar-gradient-low {
|
.score-bar-gradient-low {
|
||||||
background: linear-gradient(90deg, #64748b, #475569);
|
background: linear-gradient(90deg, #585860, #3a3a40);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selection color */
|
/* Selection color */
|
||||||
::-moz-selection {
|
::-moz-selection {
|
||||||
background: rgba(249, 115, 22, 0.3);
|
background: rgba(245, 158, 11, 0.25);
|
||||||
color: #f1f5f9;
|
color: #f5f5f7;
|
||||||
}
|
}
|
||||||
::selection {
|
::selection {
|
||||||
background: rgba(249, 115, 22, 0.3);
|
background: rgba(245, 158, 11, 0.25);
|
||||||
color: #f1f5f9;
|
color: #f5f5f7;
|
||||||
}
|
}
|
||||||
.hover\:bg-white\/\[0\.04\]:hover{
|
.hover\:bg-white\/\[0\.04\]:hover{
|
||||||
background-color: rgb(255 255 255 / 0.04);
|
background-color: rgb(255 255 255 / 0.04);
|
||||||
@ -1620,33 +1624,33 @@ body::after {
|
|||||||
.hover\:bg-white\/\[0\.06\]:hover{
|
.hover\:bg-white\/\[0\.06\]:hover{
|
||||||
background-color: rgb(255 255 255 / 0.06);
|
background-color: rgb(255 255 255 / 0.06);
|
||||||
}
|
}
|
||||||
.hover\:from-accent-indigo\/30:hover{
|
.hover\:from-accent-cyan\/30:hover{
|
||||||
--tw-gradient-from: rgb(129 140 248 / 0.3) var(--tw-gradient-from-position);
|
--tw-gradient-from: rgb(34 211 238 / 0.3) var(--tw-gradient-from-position);
|
||||||
--tw-gradient-to: rgb(129 140 248 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(34 211 238 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.hover\:from-orange-500\/30:hover{
|
.hover\:from-amber-500\/30:hover{
|
||||||
--tw-gradient-from: rgb(249 115 22 / 0.3) var(--tw-gradient-from-position);
|
--tw-gradient-from: rgb(245 158 11 / 0.3) var(--tw-gradient-from-position);
|
||||||
--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);
|
||||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||||
}
|
}
|
||||||
.hover\:to-accent-indigo\/20:hover{
|
.hover\:to-accent-cyan\/20:hover{
|
||||||
--tw-gradient-to: rgb(129 140 248 / 0.2) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(34 211 238 / 0.2) var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
.hover\:to-amber-500\/30:hover{
|
.hover\:to-amber-600\/25:hover{
|
||||||
--tw-gradient-to: rgb(245 158 11 / 0.3) var(--tw-gradient-to-position);
|
--tw-gradient-to: rgb(217 119 6 / 0.25) var(--tw-gradient-to-position);
|
||||||
}
|
}
|
||||||
.hover\:text-orange-400:hover{
|
.hover\:text-amber-400:hover{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(251 146 60 / var(--tw-text-opacity, 1));
|
color: rgb(251 191 36 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.hover\:text-text-primary:hover{
|
.hover\:text-text-primary:hover{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(241 245 249 / var(--tw-text-opacity, 1));
|
color: rgb(245 245 247 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.hover\:text-text-secondary:hover{
|
.hover\:text-text-secondary:hover{
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(136 150 179 / var(--tw-text-opacity, 1));
|
color: rgb(152 152 164 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
.focus\:outline-none:focus{
|
.focus\:outline-none:focus{
|
||||||
outline: 2px solid transparent;
|
outline: 2px solid transparent;
|
||||||
@ -1657,8 +1661,8 @@ body::after {
|
|||||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
||||||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
||||||
}
|
}
|
||||||
.focus\:ring-accent-indigo\/30:focus{
|
.focus\:ring-accent-cyan\/30:focus{
|
||||||
--tw-ring-color: rgb(129 140 248 / 0.3);
|
--tw-ring-color: rgb(34 211 238 / 0.3);
|
||||||
}
|
}
|
||||||
.active\:scale-95:active{
|
.active\:scale-95:active{
|
||||||
--tw-scale-x: .95;
|
--tw-scale-x: .95;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -89,8 +89,8 @@ export default function ChatPage() {
|
|||||||
{/* Header */}
|
{/* Header */}
|
||||||
<div className="flex items-center justify-between px-5 py-3.5 border-b border-white/[0.04] bg-bg-primary/80 backdrop-blur-xl">
|
<div className="flex items-center justify-between px-5 py-3.5 border-b border-white/[0.04] bg-bg-primary/80 backdrop-blur-xl">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<div className="w-7 h-7 rounded-lg bg-gradient-to-br from-accent-indigo/30 to-accent-indigo/10 flex items-center justify-center border border-accent-indigo/20">
|
<div className="w-7 h-7 rounded-lg bg-gradient-to-br from-accent-cyan/30 to-accent-cyan/10 flex items-center justify-center border border-accent-cyan/20">
|
||||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" className="text-accent-indigo/70">
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" className="text-accent-cyan/70">
|
||||||
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
@ -115,8 +115,8 @@ export default function ChatPage() {
|
|||||||
<div ref={scrollRef} className="flex-1 overflow-y-auto px-5 py-5 space-y-4">
|
<div ref={scrollRef} className="flex-1 overflow-y-auto px-5 py-5 space-y-4">
|
||||||
{messages.length === 0 ? (
|
{messages.length === 0 ? (
|
||||||
<div className="flex flex-col items-center justify-center h-full text-center animate-fade-in-up">
|
<div className="flex flex-col items-center justify-center h-full text-center animate-fade-in-up">
|
||||||
<div className="w-14 h-14 rounded-2xl bg-gradient-to-br from-accent-indigo/15 to-accent-indigo/5 flex items-center justify-center mb-5 border border-accent-indigo/10">
|
<div className="w-14 h-14 rounded-2xl bg-gradient-to-br from-accent-cyan/15 to-accent-cyan/5 flex items-center justify-center mb-5 border border-accent-cyan/10">
|
||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" className="text-accent-indigo/50">
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" className="text-accent-cyan/50">
|
||||||
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
@ -167,7 +167,7 @@ export default function ChatPage() {
|
|||||||
<span>{msg.content}</span>
|
<span>{msg.content}</span>
|
||||||
)}
|
)}
|
||||||
{streaming && i === messages.length - 1 && msg.role === "assistant" && msg.content && (
|
{streaming && i === messages.length - 1 && msg.role === "assistant" && msg.content && (
|
||||||
<span className="inline-block w-1.5 h-4 bg-accent-indigo/60 ml-0.5 animate-pulse rounded-full" />
|
<span className="inline-block w-1.5 h-4 bg-accent-cyan/60 ml-0.5 animate-pulse rounded-full" />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -175,8 +175,8 @@ export default function ChatPage() {
|
|||||||
{/* Status indicator during tool calls */}
|
{/* Status indicator during tool calls */}
|
||||||
{streaming && status && messages[messages.length - 1]?.content && (
|
{streaming && status && messages[messages.length - 1]?.content && (
|
||||||
<div className="flex justify-start">
|
<div className="flex justify-start">
|
||||||
<div className="text-xs text-accent-indigo/50 flex items-center gap-2 px-3">
|
<div className="text-xs text-accent-cyan/50 flex items-center gap-2 px-3">
|
||||||
<span className="inline-block w-2.5 h-2.5 border border-accent-indigo/30 border-t-accent-indigo/70 rounded-full animate-spin" />
|
<span className="inline-block w-2.5 h-2.5 border border-accent-cyan/30 border-t-accent-cyan/70 rounded-full animate-spin" />
|
||||||
{status}
|
{status}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -195,13 +195,13 @@ export default function ChatPage() {
|
|||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
placeholder="输入问题..."
|
placeholder="输入问题..."
|
||||||
rows={1}
|
rows={1}
|
||||||
className="flex-1 bg-white/[0.03] rounded-xl px-4 py-2.5 text-sm resize-none focus:outline-none focus:ring-1 focus:ring-accent-indigo/30 placeholder-text-muted/40 border border-white/[0.04] transition-all duration-200"
|
className="flex-1 bg-white/[0.03] rounded-xl px-4 py-2.5 text-sm resize-none focus:outline-none focus:ring-1 focus:ring-accent-cyan/30 placeholder-text-muted/40 border border-white/[0.04] transition-all duration-200"
|
||||||
disabled={streaming}
|
disabled={streaming}
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
onClick={() => sendMessage(input)}
|
onClick={() => sendMessage(input)}
|
||||||
disabled={!input.trim() || streaming}
|
disabled={!input.trim() || streaming}
|
||||||
className="px-4 py-2.5 bg-gradient-to-r from-accent-indigo/20 to-accent-indigo/10 text-accent-indigo rounded-xl text-sm hover:from-accent-indigo/30 hover:to-accent-indigo/20 disabled:opacity-20 transition-all duration-200 shrink-0 border border-accent-indigo/10 font-medium"
|
className="px-4 py-2.5 bg-gradient-to-r from-accent-cyan/20 to-accent-cyan/10 text-accent-cyan rounded-xl text-sm hover:from-accent-cyan/30 hover:to-accent-cyan/20 disabled:opacity-20 transition-all duration-200 shrink-0 border border-accent-cyan/10 font-medium"
|
||||||
>
|
>
|
||||||
发送
|
发送
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@ -5,16 +5,16 @@
|
|||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--color-up: #ef4444;
|
--color-up: #ff6b6b;
|
||||||
--color-down: #22c55e;
|
--color-down: #34d399;
|
||||||
--font-display: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
--font-display: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
||||||
--font-body: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
--font-body: 'Outfit', -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
||||||
--font-mono: 'SF Mono', 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;
|
--font-mono: 'SF Mono', 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: #0a0e1a;
|
background-color: #0a0a0c;
|
||||||
color: #f1f5f9;
|
color: #f5f5f7;
|
||||||
font-family: var(--font-body);
|
font-family: var(--font-body);
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
@ -29,37 +29,39 @@ body {
|
|||||||
/* Glass morphism card */
|
/* Glass morphism card */
|
||||||
@layer components {
|
@layer components {
|
||||||
.glass-card {
|
.glass-card {
|
||||||
background: linear-gradient(135deg, rgba(30, 41, 59, 0.8) 0%, rgba(15, 23, 42, 0.9) 100%);
|
background: linear-gradient(135deg, rgba(22, 22, 25, 0.85) 0%, rgba(10, 10, 12, 0.95) 100%);
|
||||||
backdrop-filter: blur(20px);
|
backdrop-filter: blur(20px);
|
||||||
-webkit-backdrop-filter: blur(20px);
|
-webkit-backdrop-filter: blur(20px);
|
||||||
border: 1px solid rgba(148, 163, 184, 0.08);
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
|
||||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.glass-card:hover {
|
.glass-card:hover {
|
||||||
border-color: rgba(148, 163, 184, 0.15);
|
border-color: rgba(255, 255, 255, 0.10);
|
||||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(148, 163, 184, 0.05);
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
||||||
transform: translateY(-1px);
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.glass-card-static {
|
.glass-card-static {
|
||||||
background: linear-gradient(135deg, rgba(30, 41, 59, 0.8) 0%, rgba(15, 23, 42, 0.9) 100%);
|
background: linear-gradient(135deg, rgba(22, 22, 25, 0.85) 0%, rgba(10, 10, 12, 0.95) 100%);
|
||||||
backdrop-filter: blur(20px);
|
backdrop-filter: blur(20px);
|
||||||
-webkit-backdrop-filter: blur(20px);
|
-webkit-backdrop-filter: blur(20px);
|
||||||
border: 1px solid rgba(148, 163, 184, 0.08);
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
|
||||||
}
|
}
|
||||||
|
|
||||||
.glass-sidebar {
|
.glass-sidebar {
|
||||||
background: linear-gradient(180deg, rgba(15, 23, 42, 0.97) 0%, rgba(10, 14, 26, 0.99) 100%);
|
background: linear-gradient(180deg, rgba(16, 16, 19, 0.97) 0%, rgba(10, 10, 12, 0.99) 100%);
|
||||||
backdrop-filter: blur(30px);
|
backdrop-filter: blur(30px);
|
||||||
-webkit-backdrop-filter: blur(30px);
|
-webkit-backdrop-filter: blur(30px);
|
||||||
border-right: 1px solid rgba(148, 163, 184, 0.06);
|
border-right: 1px solid rgba(255, 255, 255, 0.04);
|
||||||
}
|
}
|
||||||
|
|
||||||
.glow-accent {
|
.glow-accent {
|
||||||
box-shadow: 0 0 20px rgba(249, 115, 22, 0.15), 0 0 60px rgba(249, 115, 22, 0.05);
|
box-shadow: 0 0 20px rgba(245, 158, 11, 0.12), 0 0 60px rgba(245, 158, 11, 0.04);
|
||||||
}
|
}
|
||||||
|
|
||||||
.gradient-border {
|
.gradient-border {
|
||||||
@ -72,7 +74,7 @@ body {
|
|||||||
inset: 0;
|
inset: 0;
|
||||||
border-radius: inherit;
|
border-radius: inherit;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
background: linear-gradient(135deg, rgba(249, 115, 22, 0.3), rgba(99, 102, 241, 0.3), rgba(249, 115, 22, 0.1));
|
background: linear-gradient(135deg, rgba(245, 158, 11, 0.25), rgba(34, 211, 238, 0.25), rgba(245, 158, 11, 0.08));
|
||||||
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
||||||
-webkit-mask-composite: xor;
|
-webkit-mask-composite: xor;
|
||||||
mask-composite: exclude;
|
mask-composite: exclude;
|
||||||
@ -85,13 +87,13 @@ body::before {
|
|||||||
content: '';
|
content: '';
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
opacity: 0.015;
|
opacity: 0.018;
|
||||||
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
|
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ambient glow effect - top right */
|
/* Ambient glow effect - top right (amber) */
|
||||||
body::after {
|
body::after {
|
||||||
content: '';
|
content: '';
|
||||||
position: fixed;
|
position: fixed;
|
||||||
@ -99,7 +101,7 @@ body::after {
|
|||||||
right: -200px;
|
right: -200px;
|
||||||
width: 600px;
|
width: 600px;
|
||||||
height: 600px;
|
height: 600px;
|
||||||
background: radial-gradient(circle, rgba(249, 115, 22, 0.04) 0%, transparent 70%);
|
background: radial-gradient(circle, rgba(245, 158, 11, 0.035) 0%, transparent 70%);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
}
|
}
|
||||||
@ -112,11 +114,11 @@ body::after {
|
|||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
::-webkit-scrollbar-thumb {
|
::-webkit-scrollbar-thumb {
|
||||||
background: rgba(148, 163, 184, 0.2);
|
background: rgba(255, 255, 255, 0.10);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
::-webkit-scrollbar-thumb:hover {
|
::-webkit-scrollbar-thumb:hover {
|
||||||
background: rgba(148, 163, 184, 0.3);
|
background: rgba(255, 255, 255, 0.18);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Animations */
|
/* Animations */
|
||||||
@ -160,7 +162,7 @@ body::after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.animate-shimmer {
|
.animate-shimmer {
|
||||||
background: linear-gradient(90deg, transparent, rgba(148, 163, 184, 0.05), transparent);
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.04), transparent);
|
||||||
background-size: 200% 100%;
|
background-size: 200% 100%;
|
||||||
animation: shimmer 2s infinite;
|
animation: shimmer 2s infinite;
|
||||||
}
|
}
|
||||||
@ -174,19 +176,19 @@ body::after {
|
|||||||
|
|
||||||
/* Score bar gradient */
|
/* Score bar gradient */
|
||||||
.score-bar-gradient-high {
|
.score-bar-gradient-high {
|
||||||
background: linear-gradient(90deg, #ef4444, #f97316);
|
background: linear-gradient(90deg, #ff6b6b, #f59e0b);
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-bar-gradient-mid {
|
.score-bar-gradient-mid {
|
||||||
background: linear-gradient(90deg, #f97316, #eab308);
|
background: linear-gradient(90deg, #f59e0b, #fbbf24);
|
||||||
}
|
}
|
||||||
|
|
||||||
.score-bar-gradient-low {
|
.score-bar-gradient-low {
|
||||||
background: linear-gradient(90deg, #64748b, #475569);
|
background: linear-gradient(90deg, #585860, #3a3a40);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Selection color */
|
/* Selection color */
|
||||||
::selection {
|
::selection {
|
||||||
background: rgba(249, 115, 22, 0.3);
|
background: rgba(245, 158, 11, 0.25);
|
||||||
color: #f1f5f9;
|
color: #f5f5f7;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ export default function RootLayout({
|
|||||||
{/* Brand */}
|
{/* Brand */}
|
||||||
<div className="px-6 pt-7 pb-5">
|
<div className="px-6 pt-7 pb-5">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-orange-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm">
|
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-amber-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm">
|
||||||
D
|
D
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@ -39,7 +39,7 @@ export default function RootLayout({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Divider */}
|
{/* Divider */}
|
||||||
<div className="mx-5 h-px bg-gradient-to-r from-transparent via-slate-700/50 to-transparent" />
|
<div className="mx-5 h-px bg-gradient-to-r from-transparent via-white/[0.06] to-transparent" />
|
||||||
|
|
||||||
{/* Nav */}
|
{/* Nav */}
|
||||||
<nav className="flex-1 py-5 px-3 space-y-1">
|
<nav className="flex-1 py-5 px-3 space-y-1">
|
||||||
@ -50,14 +50,14 @@ export default function RootLayout({
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
{/* Footer */}
|
{/* Footer */}
|
||||||
<div className="px-6 py-5 border-t border-slate-800/50">
|
<div className="px-6 py-5 border-t border-white/[0.04]">
|
||||||
<div className="text-xs text-text-muted leading-relaxed">
|
<div className="text-xs text-text-muted leading-relaxed">
|
||||||
<div className="flex items-center gap-1.5 mb-1">
|
<div className="flex items-center gap-1.5 mb-1">
|
||||||
<span className="w-1 h-1 rounded-full bg-emerald-500" />
|
<span className="w-1 h-1 rounded-full bg-emerald-500" />
|
||||||
<span>Tushare Pro + 腾讯行情</span>
|
<span>Tushare Pro + 腾讯行情</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-1.5">
|
<div className="flex items-center gap-1.5">
|
||||||
<span className="w-1 h-1 rounded-full bg-accent-indigo" />
|
<span className="w-1 h-1 rounded-full bg-accent-cyan" />
|
||||||
<span>AI 引擎: DeepSeek</span>
|
<span>AI 引擎: DeepSeek</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -79,7 +79,7 @@ export default function RootLayout({
|
|||||||
|
|
||||||
function MobileNav() {
|
function MobileNav() {
|
||||||
return (
|
return (
|
||||||
<nav className="fixed bottom-0 left-0 right-0 md:hidden z-50 bg-bg-secondary/95 backdrop-blur-xl border-t border-slate-800/50">
|
<nav className="fixed bottom-0 left-0 right-0 md:hidden z-50 bg-bg-secondary/95 backdrop-blur-xl border-t border-white/[0.04]">
|
||||||
<div className="flex justify-around py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))]">
|
<div className="flex justify-around py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))]">
|
||||||
<MobileNavItem href="/" label="总览">
|
<MobileNavItem href="/" label="总览">
|
||||||
<DashboardIcon />
|
<DashboardIcon />
|
||||||
|
|||||||
@ -117,11 +117,11 @@ export default function DashboardPage() {
|
|||||||
<button
|
<button
|
||||||
onClick={handleRefresh}
|
onClick={handleRefresh}
|
||||||
disabled={refreshing}
|
disabled={refreshing}
|
||||||
className="text-xs px-4 py-2 bg-gradient-to-r from-orange-500/20 to-amber-500/20 text-orange-400 rounded-xl hover:from-orange-500/30 hover:to-amber-500/30 disabled:opacity-40 transition-all duration-200 border border-orange-500/10 font-medium"
|
className="text-xs px-4 py-2 bg-gradient-to-r from-amber-500/20 to-amber-600/15 text-amber-400 rounded-xl hover:from-amber-500/30 hover:to-amber-600/25 disabled:opacity-40 transition-all duration-200 border border-amber-500/10 font-medium"
|
||||||
>
|
>
|
||||||
{refreshing ? (
|
{refreshing ? (
|
||||||
<span className="inline-flex items-center gap-1.5">
|
<span className="inline-flex items-center gap-1.5">
|
||||||
<span className="w-3 h-3 border border-orange-400/40 border-t-orange-400 rounded-full animate-spin" />
|
<span className="w-3 h-3 border border-amber-400/40 border-t-amber-400 rounded-full animate-spin" />
|
||||||
分析中...
|
分析中...
|
||||||
</span>
|
</span>
|
||||||
) : scanStatus?.is_trading ? (
|
) : scanStatus?.is_trading ? (
|
||||||
@ -134,8 +134,8 @@ export default function DashboardPage() {
|
|||||||
|
|
||||||
{/* Scan result toast */}
|
{/* Scan result toast */}
|
||||||
{refreshResult && (
|
{refreshResult && (
|
||||||
<div className="glass-card-static border-orange-500/15 px-4 py-2.5 text-xs text-orange-400 animate-fade-in-up flex items-center gap-2">
|
<div className="glass-card-static border-amber-500/15 px-4 py-2.5 text-xs text-amber-400 animate-fade-in-up flex items-center gap-2">
|
||||||
<span className="w-1 h-1 rounded-full bg-orange-400" />
|
<span className="w-1 h-1 rounded-full bg-amber-400" />
|
||||||
{refreshResult}
|
{refreshResult}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@ -155,7 +155,7 @@ export default function DashboardPage() {
|
|||||||
<span className="text-text-primary ml-1.5 font-mono tabular-nums">{data.recommendations.length}</span>
|
<span className="text-text-primary ml-1.5 font-mono tabular-nums">{data.recommendations.length}</span>
|
||||||
) : ""}
|
) : ""}
|
||||||
</h2>
|
</h2>
|
||||||
<a href="/recommendations" className="text-xs text-text-muted hover:text-orange-400 transition-colors flex items-center gap-1">
|
<a href="/recommendations" className="text-xs text-text-muted hover:text-amber-400 transition-colors flex items-center gap-1">
|
||||||
查看全部
|
查看全部
|
||||||
<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
||||||
<path d="M5 12h14M12 5l7 7-7 7" />
|
<path d="M5 12h14M12 5l7 7-7 7" />
|
||||||
|
|||||||
@ -68,7 +68,7 @@ export default function RecommendationsPage() {
|
|||||||
onClick={() => setFilter(key)}
|
onClick={() => setFilter(key)}
|
||||||
className={`text-xs px-4 py-1.5 rounded-xl whitespace-nowrap transition-all duration-200 font-medium ${
|
className={`text-xs px-4 py-1.5 rounded-xl whitespace-nowrap transition-all duration-200 font-medium ${
|
||||||
filter === key
|
filter === key
|
||||||
? "bg-gradient-to-r from-orange-500/25 to-amber-500/25 text-orange-400 border border-orange-500/15"
|
? "bg-gradient-to-r from-amber-500/25 to-amber-600/20 text-amber-400 border border-amber-500/15"
|
||||||
: "bg-white/[0.03] text-text-muted hover:text-text-secondary hover:bg-white/[0.06] border border-transparent"
|
: "bg-white/[0.03] text-text-muted hover:text-text-secondary hover:bg-white/[0.06] border border-transparent"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
|
|||||||
@ -85,7 +85,7 @@ export default function MarketTemp({ data, indices }: MarketTempProps) {
|
|||||||
<span className="text-emerald-400 font-mono tabular-nums">{data.down_count}</span>
|
<span className="text-emerald-400 font-mono tabular-nums">{data.down_count}</span>
|
||||||
</StatCard>
|
</StatCard>
|
||||||
<StatCard label={hasMaxStreak ? "最高连板" : "连板"}>
|
<StatCard label={hasMaxStreak ? "最高连板" : "连板"}>
|
||||||
<span className="text-orange-400 font-mono tabular-nums font-semibold">
|
<span className="text-amber-400 font-mono tabular-nums font-semibold">
|
||||||
{hasMaxStreak ? `${data.max_streak}连板` : "-"}
|
{hasMaxStreak ? `${data.max_streak}连板` : "-"}
|
||||||
</span>
|
</span>
|
||||||
</StatCard>
|
</StatCard>
|
||||||
|
|||||||
@ -53,7 +53,7 @@ export default function SectorHeatmap({ sectors }: { sectors: SectorData[] }) {
|
|||||||
: index === 1
|
: index === 1
|
||||||
? "bg-gradient-to-br from-slate-400/20 to-slate-500/15 text-slate-300 border border-slate-400/15"
|
? "bg-gradient-to-br from-slate-400/20 to-slate-500/15 text-slate-300 border border-slate-400/15"
|
||||||
: index === 2
|
: index === 2
|
||||||
? "bg-gradient-to-br from-orange-700/20 to-orange-800/15 text-orange-400 border border-orange-600/15"
|
? "bg-gradient-to-br from-amber-700/20 to-amber-800/15 text-amber-400 border border-amber-600/15"
|
||||||
: "bg-white/[0.03] text-text-muted border border-white/[0.04]"
|
: "bg-white/[0.03] text-text-muted border border-white/[0.04]"
|
||||||
}`}>
|
}`}>
|
||||||
{index + 1}
|
{index + 1}
|
||||||
@ -81,7 +81,7 @@ export default function SectorHeatmap({ sectors }: { sectors: SectorData[] }) {
|
|||||||
{/* Heat score pill */}
|
{/* Heat score pill */}
|
||||||
<span className={`font-mono tabular-nums text-xs font-semibold px-2 py-1 rounded-lg min-w-[36px] text-center ${
|
<span className={`font-mono tabular-nums text-xs font-semibold px-2 py-1 rounded-lg min-w-[36px] text-center ${
|
||||||
isTop3
|
isTop3
|
||||||
? "bg-orange-500/20 text-orange-400 border border-orange-500/15"
|
? "bg-amber-500/20 text-amber-400 border border-amber-500/15"
|
||||||
: "bg-white/[0.04] text-text-muted border border-white/[0.04]"
|
: "bg-white/[0.04] text-text-muted border border-white/[0.04]"
|
||||||
}`}>
|
}`}>
|
||||||
{s.heat_score.toFixed(0)}
|
{s.heat_score.toFixed(0)}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ export default function StockCard({ rec, showLLMLoading = false }: { rec: Recomm
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span className="text-text-muted">目标 </span>
|
<span className="text-text-muted">目标 </span>
|
||||||
<span className="text-orange-400 font-mono tabular-nums">{rec.target_price}</span>
|
<span className="text-amber-400 font-mono tabular-nums">{rec.target_price}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span className="text-text-muted">止损 </span>
|
<span className="text-text-muted">止损 </span>
|
||||||
@ -64,7 +64,7 @@ export default function StockCard({ rec, showLLMLoading = false }: { rec: Recomm
|
|||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
{rec.reasons.map((r, i) => (
|
{rec.reasons.map((r, i) => (
|
||||||
<div key={i} className="text-xs text-text-secondary flex items-start gap-2">
|
<div key={i} className="text-xs text-text-secondary flex items-start gap-2">
|
||||||
<span className="w-1 h-1 rounded-full bg-orange-500/60 mt-[7px] shrink-0" />
|
<span className="w-1 h-1 rounded-full bg-amber-500/60 mt-[7px] shrink-0" />
|
||||||
<span className="leading-relaxed">{r}</span>
|
<span className="leading-relaxed">{r}</span>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
@ -72,15 +72,15 @@ export default function StockCard({ rec, showLLMLoading = false }: { rec: Recomm
|
|||||||
|
|
||||||
{/* AI Analysis */}
|
{/* AI Analysis */}
|
||||||
{rec.llm_analysis ? (
|
{rec.llm_analysis ? (
|
||||||
<div className="mt-3 bg-accent-indigo/[0.06] border border-accent-indigo/[0.12] rounded-xl px-4 py-3">
|
<div className="mt-3 bg-accent-cyan/[0.06] border border-accent-cyan/[0.12] rounded-xl px-4 py-3">
|
||||||
<div className="text-xs text-accent-indigo/80 font-semibold tracking-wider mb-1.5">AI 分析</div>
|
<div className="text-xs text-accent-cyan/80 font-semibold tracking-wider mb-1.5">AI 分析</div>
|
||||||
<div className="text-xs text-text-secondary leading-relaxed">
|
<div className="text-xs text-text-secondary leading-relaxed">
|
||||||
{rec.llm_analysis}
|
{rec.llm_analysis}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : showLLMLoading ? (
|
) : showLLMLoading ? (
|
||||||
<div className="mt-3 text-xs text-text-muted flex items-center gap-2">
|
<div className="mt-3 text-xs text-text-muted flex items-center gap-2">
|
||||||
<span className="inline-block w-3 h-3 border border-accent-indigo/30 border-t-accent-indigo/80 rounded-full animate-spin" />
|
<span className="inline-block w-3 h-3 border border-accent-cyan/30 border-t-accent-cyan/80 rounded-full animate-spin" />
|
||||||
AI 分析中...
|
AI 分析中...
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
@ -35,10 +35,10 @@ export function getSignalColor(signal: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getTempColor(temp: number): string {
|
export function getTempColor(temp: number): string {
|
||||||
if (temp >= 70) return "#ef4444";
|
if (temp >= 70) return "#ff6b6b";
|
||||||
if (temp >= 50) return "#f97316";
|
if (temp >= 50) return "#f59e0b";
|
||||||
if (temp >= 30) return "#eab308";
|
if (temp >= 30) return "#fbbf24";
|
||||||
return "#22c55e";
|
return "#34d399";
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getTempLabel(temp: number): string {
|
export function getTempLabel(temp: number): string {
|
||||||
|
|||||||
@ -7,23 +7,23 @@ module.exports = {
|
|||||||
theme: {
|
theme: {
|
||||||
extend: {
|
extend: {
|
||||||
colors: {
|
colors: {
|
||||||
up: "#ef4444",
|
up: "#ff6b6b",
|
||||||
down: "#22c55e",
|
down: "#34d399",
|
||||||
hot: "#f97316",
|
hot: "#f59e0b",
|
||||||
bg: {
|
bg: {
|
||||||
primary: "#0a0e1a",
|
primary: "#0a0a0c",
|
||||||
secondary: "#0f172a",
|
secondary: "#101013",
|
||||||
card: "#131a2e",
|
card: "#161619",
|
||||||
elevated: "#1a2340",
|
elevated: "#1e1e22",
|
||||||
},
|
},
|
||||||
text: {
|
text: {
|
||||||
primary: "#f1f5f9",
|
primary: "#f5f5f7",
|
||||||
secondary: "#8896b3",
|
secondary: "#9898a4",
|
||||||
muted: "#546380",
|
muted: "#58585f",
|
||||||
},
|
},
|
||||||
accent: {
|
accent: {
|
||||||
orange: "#f97316",
|
amber: "#f59e0b",
|
||||||
indigo: "#818cf8",
|
cyan: "#22d3ee",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
fontFamily: {
|
fontFamily: {
|
||||||
@ -35,9 +35,9 @@ module.exports = {
|
|||||||
"3xl": "20px",
|
"3xl": "20px",
|
||||||
},
|
},
|
||||||
boxShadow: {
|
boxShadow: {
|
||||||
card: "0 4px 24px rgba(0, 0, 0, 0.2)",
|
card: "0 4px 24px rgba(0, 0, 0, 0.3)",
|
||||||
glow: "0 0 20px rgba(249, 115, 22, 0.15)",
|
glow: "0 0 20px rgba(245, 158, 11, 0.12)",
|
||||||
"glow-sm": "0 0 10px rgba(249, 115, 22, 0.1)",
|
"glow-sm": "0 0 10px rgba(245, 158, 11, 0.08)",
|
||||||
},
|
},
|
||||||
animation: {
|
animation: {
|
||||||
"fade-in-up": "fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) both",
|
"fade-in-up": "fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) both",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user