@use '@/style/iconfont.css'; @use './transition.scss'; @use './equipment-tech.scss'; :root { --tech-bg: #07111f; --tech-bg-deep: #020617; --tech-panel: rgba(8, 27, 54, 0.9); --tech-panel-soft: rgba(15, 23, 42, 0.78); --tech-panel-strong: rgba(2, 8, 23, 0.92); --tech-border: rgba(0, 212, 255, 0.22); --tech-border-strong: rgba(0, 212, 255, 0.48); --tech-text: #e0f7ff; --tech-text-strong: #f4fbff; --tech-text-muted: rgba(191, 226, 255, 0.72); --tech-cyan: #00d4ff; --tech-blue: #3b82f6; --tech-amber: #f59e0b; --tech-danger: #ef4444; --tech-success: #10b981; --tech-shadow: 0 18px 46px rgba(0, 0, 0, 0.34), 0 0 28px rgba(0, 212, 255, 0.12); --tech-radius: 16px; --tech-primary: var(--el-color-primary, #00d4ff); --tech-primary-soft: rgba(0, 212, 255, 0.16); --tech-primary-glow: rgba(0, 212, 255, 0.28); } html, body { width: 100%; min-height: 100%; } html.dark { --tech-bg: #07111f; --tech-bg-deep: #020617; --tech-panel: rgba(8, 27, 54, 0.92); --tech-panel-soft: rgba(15, 23, 42, 0.82); --tech-panel-strong: rgba(2, 8, 23, 0.94); --tech-border: rgba(0, 212, 255, 0.28); --tech-text: #e0f7ff; --tech-text-muted: rgba(191, 226, 255, 0.72); } .html-grey { filter: grayscale(100%); } .html-weakenss { filter: invert(80%); } #app.gva-tech-app, .gva-tech-app { color: var(--tech-text); background: radial-gradient(circle at 12% 10%, rgba(0, 212, 255, 0.16), transparent 28%), radial-gradient(circle at 86% 6%, rgba(245, 158, 11, 0.1), transparent 22%), radial-gradient(circle at 54% 96%, rgba(59, 130, 246, 0.16), transparent 34%), linear-gradient(135deg, var(--tech-bg-deep) 0%, var(--tech-bg) 52%, #0f172a 100%); } // 兼容旧页面中仍保留的 Uno/Tailwind 浅色背景类,避免局部白块破坏整体工业风。 .gva-tech-app, .gva-tech-layout { .bg-white, .bg-gray-50, .bg-gray-100, .bg-gray-200, .bg-blue-50, .bg-red-50, .bg-green-50, .bg-amber-50, .dark\:bg-slate-900, .dark\:bg-slate-800, .dark\:bg-slate-700, .dark\:bg-slate-600, .dark\:bg-slate-500, .dark\:bg-gray-900, .dark\:bg-gray-800, .dark\:bg-gray-700, .dark\:bg-gray-600 { color: var(--tech-text) !important; border-color: rgba(0, 212, 255, 0.18) !important; background: linear-gradient(135deg, rgba(9, 24, 48, 0.88), rgba(5, 16, 32, 0.76)), radial-gradient(circle at 100% 0%, rgba(0, 212, 255, 0.08), transparent 34%) !important; } .hover\:bg-gray-50:hover, .hover\:bg-gray-100:hover, .dark\:hover\:bg-gray-700:hover, .dark\:hover\:bg-gray-600:hover, .dark\:hover\:bg-blue-900:hover, .hover\:bg-blue-50:hover { color: var(--tech-text-strong) !important; background: rgba(0, 212, 255, 0.12) !important; } .border-gray-100, .border-gray-200, .border-gray-300, .border-gray-600, .border-gray-700, .border-blue-200, .border-red-200, .border-green-200, .border-red-800, .border-green-800, .border-blue-800, .dark\:border-gray-700, .dark\:border-gray-600, .dark\:border-slate-800, .dark\:border-slate-700 { border-color: rgba(0, 212, 255, 0.18) !important; } } .gva-tech-layout { position: relative; overflow: hidden; color: var(--tech-text); background: transparent !important; isolation: isolate; &::before, &::after { position: absolute; inset: 0; z-index: 0; pointer-events: none; content: ''; } &::before { opacity: 0.34; background-image: linear-gradient(rgba(0, 212, 255, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 212, 255, 0.1) 1px, transparent 1px); background-size: 36px 36px; -webkit-mask-image: radial-gradient(circle at center, #000 0%, transparent 78%); mask-image: radial-gradient(circle at center, #000 0%, transparent 78%); animation: equipmentGridDrift 24s linear infinite; } &::after { background: linear-gradient(110deg, transparent 0%, rgba(0, 212, 255, 0.06) 45%, rgba(255, 255, 255, 0.12) 50%, rgba(0, 212, 255, 0.06) 55%, transparent 100%); transform: translateX(-120%); animation: equipmentScanLine 9s ease-in-out infinite; } > * { position: relative; z-index: 1; } } .gva-tech-main, .gva-tech-scroll, .gva-tech-router-view { background: transparent !important; } .gva-tech-scroll { position: relative; padding-top: 10px; } .gva-tech-router-view { min-height: calc(100% - 3rem); padding: 0 8px 12px; } .gva-tech-header { color: var(--tech-text) !important; border-bottom: 1px solid rgba(0, 212, 255, 0.26); background: linear-gradient(90deg, rgba(2, 8, 23, 0.94), rgba(8, 27, 54, 0.86)), radial-gradient(circle at 18% 50%, rgba(0, 212, 255, 0.16), transparent 34%) !important; box-shadow: 0 12px 34px rgba(0, 0, 0, 0.34), 0 0 26px rgba(0, 212, 255, 0.1) !important; -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); &::after { position: absolute; right: 18px; bottom: 0; left: 18px; height: 1px; content: ''; background: linear-gradient(90deg, transparent, rgba(0, 212, 255, 0.78), rgba(245, 158, 11, 0.52), transparent); box-shadow: 0 0 18px rgba(0, 212, 255, 0.5); } .gva-tech-brand { color: var(--tech-text-strong); letter-spacing: 0.06em; text-shadow: 0 0 18px rgba(0, 212, 255, 0.42); } .el-breadcrumb__inner, .el-breadcrumb__separator, .el-dropdown, .el-dropdown * { color: var(--tech-text-muted) !important; } } .gva-tech-aside, .gva-tech-aside-head, .gva-tech-aside-rail, .gva-tech-aside-secondary { color: var(--tech-text) !important; border-color: rgba(0, 212, 255, 0.18) !important; background: linear-gradient(180deg, rgba(5, 16, 32, 0.94), rgba(2, 8, 23, 0.88)), radial-gradient(circle at 50% 0%, rgba(0, 212, 255, 0.12), transparent 34%) !important; box-shadow: inset -1px 0 0 rgba(0, 212, 255, 0.12), 10px 0 28px rgba(0, 0, 0, 0.22) !important; -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); .el-menu { border: 0 !important; background: transparent !important; } .el-menu-item, .el-sub-menu__title { position: relative; height: 44px; margin: 4px 0; color: var(--tech-text-muted) !important; border-radius: 12px; transition: color 0.22s ease, background 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease; &:hover { color: var(--tech-text-strong) !important; background: rgba(0, 212, 255, 0.1) !important; box-shadow: inset 0 0 18px rgba(0, 212, 255, 0.08); transform: translateX(2px); } } .el-menu-item.is-active, .el-sub-menu.is-active > .el-sub-menu__title { color: #ffffff !important; background: linear-gradient(90deg, rgba(0, 212, 255, 0.24), rgba(59, 130, 246, 0.13)) !important; box-shadow: inset 3px 0 0 var(--tech-primary), 0 0 18px rgba(0, 212, 255, 0.16); } } .gva-tech-collapse-btn { color: var(--tech-text) !important; border: 1px solid rgba(0, 212, 255, 0.22); background: rgba(15, 23, 42, 0.86) !important; box-shadow: 0 0 18px rgba(0, 212, 255, 0.14); transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease; &:hover { border-color: rgba(0, 212, 255, 0.56); box-shadow: 0 0 24px rgba(0, 212, 255, 0.24); transform: translateY(-2px); } } .gva-tech-tabs { border-bottom: 1px solid rgba(0, 212, 255, 0.14); background: rgba(2, 8, 23, 0.42); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); .el-tabs { background: transparent !important; } .el-tabs__nav { border: 0 !important; gap: 6px; } .el-tabs__item { height: 34px; margin: 4px 0; color: var(--tech-text-muted) !important; border: 1px solid rgba(0, 212, 255, 0.14) !important; border-radius: 999px !important; background: rgba(15, 23, 42, 0.72); transition: all 0.22s ease; &.is-active { color: #ffffff !important; border-color: rgba(0, 212, 255, 0.54) !important; background: linear-gradient(135deg, rgba(0, 212, 255, 0.2), rgba(59, 130, 246, 0.16)); box-shadow: 0 0 18px rgba(0, 212, 255, 0.18); } } .contextmenu { color: var(--tech-text); border: 1px solid rgba(0, 212, 255, 0.22); border-radius: 12px; background: rgba(5, 16, 32, 0.96); box-shadow: var(--tech-shadow); li:hover { color: #67e8f9; background: rgba(14, 165, 233, 0.16); } } } .gva-page-banner, .tech-page-header { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 92px; padding: 18px 24px; margin: 0 0 12px; overflow: hidden; color: var(--tech-text); border: 1px solid rgba(0, 212, 255, 0.28); border-radius: 18px; background: linear-gradient(90deg, rgba(8, 27, 54, 0.9), rgba(4, 15, 32, 0.76)), radial-gradient(circle at 22% 20%, rgba(0, 212, 255, 0.16), transparent 36%); box-shadow: var(--tech-shadow), inset 0 0 26px rgba(0, 212, 255, 0.08); &::before { position: absolute; top: 0; left: -36%; width: 36%; height: 100%; content: ''; pointer-events: none; background: linear-gradient(90deg, transparent, rgba(0, 212, 255, 0.18), transparent); animation: equipmentCardGlint 5.8s ease-in-out infinite; } &::after { flex: 1; min-width: 140px; height: 2px; content: ''; background: linear-gradient(90deg, rgba(0, 212, 255, 0.82), rgba(245, 158, 11, 0.72), transparent); box-shadow: 0 0 18px rgba(0, 212, 255, 0.44); } } .gva-page-kicker, .tech-page-kicker { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 12px; font-weight: 800; color: #67e8f9; letter-spacing: 0.18em; text-transform: uppercase; &::before { width: 8px; height: 8px; content: ''; border-radius: 50%; background: var(--tech-cyan); box-shadow: 0 0 14px var(--tech-cyan); animation: equipmentDotBreath 1.8s ease-in-out infinite; } } .gva-page-title, .tech-page-title { margin: 0; font-size: 28px; font-weight: 800; line-height: 1.18; color: var(--tech-text-strong); letter-spacing: 0.08em; text-shadow: 0 0 18px rgba(0, 212, 255, 0.42); } .gva-page-subtitle, .tech-page-subtitle { margin: 8px 0 0; font-size: 13px; color: var(--tech-text-muted); } .gva-table-box, .gva-search-box, .gva-form-box, .tech-card { position: relative; overflow: hidden; color: var(--tech-text) !important; border: 1px solid var(--tech-border); border-radius: var(--tech-radius); background: linear-gradient(135deg, rgba(9, 24, 48, 0.88), rgba(5, 16, 32, 0.76)), radial-gradient(circle at 100% 0%, rgba(0, 212, 255, 0.08), transparent 34%) !important; box-shadow: inset 0 0 24px rgba(0, 212, 255, 0.05), 0 14px 34px rgba(0, 0, 0, 0.24); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); &::before { position: absolute; top: 0; left: -34%; width: 34%; height: 100%; content: ''; pointer-events: none; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.09), transparent); animation: equipmentCardGlint 8s ease-in-out infinite; } > * { position: relative; z-index: 1; } } .gva-table-box { @apply p-4 rounded my-2; .el-table { @apply border-x border-t border-b-0 rounded border-table-border border-solid -mx-[1px]; } } .gva-btn-list { @apply mb-3 flex items-center flex-wrap gap-2; .el-button + .el-button { @apply ml-0 !important; } .el-upload { .el-button { @apply ml-0 !important; } } } #nprogress .bar { background: linear-gradient(90deg, var(--tech-cyan), var(--tech-blue), var(--tech-amber)) !important; box-shadow: 0 0 16px rgba(0, 212, 255, 0.7); } .gva-customer-icon { @apply w-4 h-4; } ::-webkit-scrollbar { @apply hidden; } * { scrollbar-width: none; -ms-overflow-style: none; } .gva-search-box { @apply p-4 rounded my-2; padding-bottom: 0; } .gva-form-box { @apply p-4 rounded my-2; } .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { background: var(--el-color-primary-bg) !important; } .el-dropdown { outline: none; * { outline: none; } } .tech-status-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--tech-cyan); box-shadow: 0 0 12px currentColor; animation: equipmentDotBreath 1.8s ease-in-out infinite; } .tech-status-dot--success, .tech-status-dot--online { color: var(--tech-success); background: var(--tech-success); } .tech-status-dot--warning { color: var(--tech-amber); background: var(--tech-amber); } .tech-status-dot--danger, .tech-status-dot--offline { color: var(--tech-danger); background: var(--tech-danger); } .tech-value-chip { display: inline-flex; align-items: center; gap: 6px; min-height: 26px; padding: 3px 10px; font-family: DIN Alternate, Arial, sans-serif; color: var(--tech-text); border: 1px solid rgba(0, 212, 255, 0.24); border-radius: 999px; background: rgba(2, 8, 23, 0.6); box-shadow: inset 0 0 12px rgba(0, 212, 255, 0.06); } @media (max-width: 768px) { .gva-page-banner, .tech-page-header { align-items: flex-start; flex-direction: column; min-height: auto; padding: 16px; &::after { width: 100%; min-width: 0; } } .gva-page-title, .tech-page-title { font-size: 22px; } } @supports not (gap: 1rem) { .gva-btn-list > * { margin-right: 8px; margin-bottom: 8px; } .gva-tech-tabs .el-tabs__nav > * + *, .gva-page-kicker > * + *, .tech-page-kicker > * + *, .tech-value-chip > * + * { margin-left: 6px; } .gva-page-banner > * + *, .tech-page-header > * + * { margin-left: 18px; } @media (max-width: 768px) { .gva-page-banner > * + *, .tech-page-header > * + * { margin-top: 12px; margin-left: 0; } } } @media (prefers-reduced-motion: reduce) { .gva-tech-layout::before, .gva-tech-layout::after, .gva-page-banner::before, .tech-page-header::before, .gva-table-box::before, .gva-search-box::before, .gva-form-box::before, .tech-card::before, .tech-status-dot, .gva-page-kicker::before, .tech-page-kicker::before, .equipment-tech-page::before, .equipment-tech-page::after, .equipment-tech-page .equipment-tech-header::before, .equipment-tech-page .tech-status-dot { animation: none !important; } }