* { margin: 0; padding: 0; box-sizing: border-box; } html, body { width: 100%; height: 100%; overflow: hidden; background: radial-gradient(ellipse 1400px 700px at 10% 0%, rgba(50,140,255,0.15), transparent 65%), radial-gradient(ellipse 1000px 500px at 90% 100%, rgba(0,200,255,0.1), transparent 60%), linear-gradient(150deg, $bg-0, $bg-1 45%, $bg-2); color: $text-primary; font-family: "DIN Alternate","Alibaba PuHuiTi","PingFang SC","Microsoft YaHei",sans-serif; } #app { width: 100%; height: 100%; position: relative; } // 滚动条样式 ::-webkit-scrollbar { width: 4px; height: 4px; } ::-webkit-scrollbar-thumb { background: $border-color; border-radius: 2px; &:hover { background: $accent; box-shadow: 0 0 8px rgba(72,215,255,0.4); } } ::-webkit-scrollbar-track { background: transparent; } // ======================== 视口缩放容器 ======================== .viewport { width: 100%; height: 100%; position: relative; } .screen { width: 1920px; height: 1080px; position: absolute; left: 50%; top: 50%; transform-origin: center center; overflow: hidden; } // 科技网格叠加 .screen::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; z-index: 0; background-image: linear-gradient(rgba(72,180,255,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(72,180,255,0.04) 1px, transparent 1px); background-size: 60px 60px; mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, rgba(0,0,0,0.5) 0%, transparent 100%); } // 环境浮动粒子 .screen::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; z-index: 1; background: radial-gradient(1.5px 1.5px at 15% 25%, rgba(72,215,255,0.5), transparent), radial-gradient(1px 1px at 85% 15%, rgba(72,215,255,0.4), transparent), radial-gradient(1.5px 1.5px at 45% 80%, rgba(58,123,255,0.4), transparent), radial-gradient(1px 1px at 70% 55%, rgba(72,215,255,0.3), transparent), radial-gradient(1.5px 1.5px at 25% 60%, rgba(100,200,255,0.35), transparent), radial-gradient(1px 1px at 90% 75%, rgba(72,215,255,0.3), transparent); animation: particleDrift 20s ease-in-out infinite alternate; } @keyframes particleDrift { 0% { transform: translate(0, 0); opacity: 0.6; } 50% { transform: translate(-8px, 6px); opacity: 1; } 100% { transform: translate(5px, -4px); opacity: 0.7; } } // ======================== 面板通用样式 ======================== .panel-box { background: transparent; border: 1px solid rgba(72, 180, 255, 0.12); border-radius: 6px; padding: 14px 16px; position: relative; overflow: hidden; transition: box-shadow 0.4s ease; display: flex; flex-direction: column; // 面板内背景遮罩(遮挡旋转锥形渐变) &::before { content: ''; position: absolute; inset: 2px; background: #061638; border-radius: 4px; z-index: 1; } // 旋转边框流光 &::after { content: ''; position: absolute; top: 50%; left: 50%; width: 200%; aspect-ratio: 1; background: conic-gradient( from 0deg at 50% 50%, #3BAFD6 0%, transparent 8%, transparent 92%, #3BAFD6 100% ); transform: translate(-50%, -50%); animation: borderGlowRotate 4s linear infinite; z-index: 0; pointer-events: none; will-change: transform; } &:hover { box-shadow: 0 0 24px rgba(59, 175, 214, 0.2) !important; } .panel-title { font-size: 15px; font-weight: 600; letter-spacing: 2px; color: #fff; margin-bottom: 12px; padding-left: 12px; position: relative; z-index: 2; display: flex; align-items: center; flex-shrink: 0; &::before { content: ''; position: absolute; left: 0; top: 2px; width: 3px; height: 14px; background: $accent; border-radius: 2px; box-shadow: 0 0 8px $accent; animation: titleBarGlow 2.5s ease-in-out infinite; } } .panel-content { padding: 0; position: relative; z-index: 2; flex: 1; min-height: 0; display: flex; flex-direction: column; } } // 面板四角装饰 .corner-deco { position: absolute; width: 14px; height: 14px; border-color: $accent; border-style: solid; opacity: 0.7; z-index: 4; animation: cornerBreathe 3s ease-in-out infinite; &.tl { top: -1px; left: -1px; border-width: 2px 0 0 2px; } &.tr { top: -1px; right: -1px; border-width: 2px 2px 0 0; animation-delay: 0.5s; } &.bl { bottom: -1px; left: -1px; border-width: 0 0 2px 2px; animation-delay: 1s; } &.br { bottom: -1px; right: -1px; border-width: 0 2px 2px 0; animation-delay: 1.5s; } } @keyframes cornerBreathe { 0%, 100% { opacity: 0.4; box-shadow: 0 0 4px rgba(72,215,255,0.2); } 50% { opacity: 1; box-shadow: 0 0 12px rgba(72,215,255,0.6), 0 0 24px rgba(72,215,255,0.2); } } @keyframes borderGlowRotate { from { transform: translate(-50%, -50%) rotate(0deg); } to { transform: translate(-50%, -50%) rotate(360deg); } } @keyframes titleBarGlow { 0%, 100% { box-shadow: 0 0 6px $accent; opacity: 0.7; } 50% { box-shadow: 0 0 14px $accent, 0 0 24px rgba(72,215,255,0.3); opacity: 1; } }