/* about.css - Aurora Nexus v2.0 */ /* ========================================= 1. Design Tokens (Variables) ========================================= */ :root { --font-main: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif; --font-serif: "Georgia", "Times New Roman", "Songti SC", serif; --font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace; --bg-base: #f3f4f6; --bg-grad-1: #a1c4fd; --bg-grad-2: #c2e9fb; --glass-bg: rgba(255, 255, 255, 0.75); --glass-border: 1px solid rgba(255, 255, 255, 0.9); --glass-shadow: 0 12px 36px rgba(0, 0, 0, 0.12); --glass-blur: 28px; --text-primary: #1f2937; --text-secondary: #4b5563; --text-tertiary: #6b7280; --accent: #6c5ce7; --accent-glow: rgba(108, 92, 231, 0.2); --dock-bg: rgba(255, 255, 255, 0.85); --radius: 24px; --gradient-1: linear-gradient(135deg, #a1c4fd, #6c5ce7); --gradient-2: linear-gradient(135deg, #c2e9fb, #00cec9); --gradient-3: linear-gradient(135deg, #ff9a9e, #f093fb); --gradient-4: linear-gradient(135deg, #a8edea, #4facfe); --gradient-5: linear-gradient(135deg, #d299c2, #fef9d7); --gradient-6: linear-gradient(135deg, #f6d365, #fda085); --gradient-7: linear-gradient(135deg, #84fab0, #8fd3f4); --gradient-8: linear-gradient(135deg, #fccb90, #d57eeb); --gradient-9: linear-gradient(135deg, #ffecd2, #fcb69f); --gradient-10: linear-gradient(135deg, #cfd9df, #e2ebf0); --gradient-11: linear-gradient(135deg, #74ebd5, #ACB6E5); /* 薄荷绿+浅紫蓝 */ --gradient-12: linear-gradient(135deg, #ff7e5f, #feb47b); /* 珊瑚橙+浅橙 */ --gradient-13: linear-gradient(135deg, #667eea, #764ba2); /* 深紫蓝+紫罗兰 */ --gradient-14: linear-gradient(135deg, #ff8080, #92fe9d); /* 柔粉+嫩绿 */ --gradient-15: linear-gradient(135deg, #a18cd1, #fbc2eb); /* 淡紫+粉紫 */ --gradient-16: linear-gradient(135deg, #2af598, #009efd); /* 荧光绿+天蓝 */ --gradient-17: linear-gradient(135deg, #ffd1ff, #fa8bff); /* 浅粉紫+亮粉 */ --gradient-18: linear-gradient(135deg, #89f7fe, #66a6ff); /* 冰蓝+浅蓝 */ --gradient-19: linear-gradient(135deg, #ff9a9e, #fad0c4); /* 蜜桃粉+浅桃色 */ --gradient-20: linear-gradient(135deg, #642b73, #c6426e); /* 深紫+玫红 */ --gradient-21: linear-gradient(135deg, #43e97b, #38f9d7); /* 青柠绿+青蓝 */ --gradient-22: linear-gradient(135deg, #f12711, #f5af19); /* 猩红+金黄 */ --gradient-23: linear-gradient(135deg, #4158d0, #c850c0); /* 蓝紫+玫紫 */ --gradient-24: linear-gradient(135deg, #ffffff, #ddd6fe); /* 纯白+淡紫 */ --gradient-25: linear-gradient(135deg, #00dbde, #fc00ff); /* 青蓝+霓虹粉 */ } [data-theme="night"] { --bg-base: #0f0f12; --bg-grad-1: #2d3436; --bg-grad-2: #000000; --glass-bg: rgba(30, 30, 35, 0.55); --glass-border: 1px solid rgba(255, 255, 255, 0.15); --glass-shadow: 0 18px 60px rgba(0, 0, 0, 0.65); --text-primary: #ffffff; --text-secondary: #e0e0e0; --text-tertiary: #b0b0b0; --accent: #00cec9; --accent-glow: rgba(0, 206, 201, 0.4); --dock-bg: rgba(30, 30, 35, 0.95); } /* ========================================= 2. Global Reset & Base Styles ========================================= */ * { box-sizing: border-box; margin: 0; padding: 0; outline: none; -webkit-tap-highlight-color: transparent; } html { font-size: 16px; } body { font-family: var(--font-main); background: var(--bg-base); color: var(--text-primary); line-height: 1.6; overflow-x: hidden; transition: background 0.5s, color 0.3s; min-height: 100vh; -webkit-font-smoothing: antialiased; color-scheme: light; } /* Ambient Background */ .aurora-canvas { position: fixed; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; } .glow-spot { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.5; animation: float 20s infinite alternate; } .spot-1 { top: -10%; left: -10%; width: 50vw; height: 50vw; background: var(--bg-grad-1); } .spot-2 { bottom: -10%; right: -10%; width: 60vw; height: 60vw; background: var(--bg-grad-2); animation-delay: -5s; } .noise-layer { position: absolute; inset: 0; opacity: 0.03; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg '%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); } /* ========================================= 3. Universal Glass Components ========================================= */ .glass-nav, .bento-card, .glass-panel, .modal-glass { background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur)) saturate(130%); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(130%); border: var(--glass-border); box-shadow: var(--glass-shadow); border-radius: var(--radius); transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s; } .bento-card:hover, .glass-panel:hover { transform: translateY(-4px); box-shadow: 0 28px 60px rgba(0, 0, 0, 0.15); border-color: var(--accent); } /* Typography Effects & Animations */ .gradient-text { background: linear-gradient(135deg, var(--text-primary), var(--accent)); -webkit-background-clip: text; background-clip: text; color: transparent; } .neon-font { font-family: var(--font-mono); font-weight: 700; color: var(--text-primary); } .grad-text-1 { background: var(--gradient-1); -webkit-background-clip: text; background-clip: text; color: transparent; } .grad-text-2 { background: var(--gradient-2); -webkit-background-clip: text; background-clip: text; color: transparent; } .grad-text-3 { background: var(--gradient-3); -webkit-background-clip: text; background-clip: text; color: transparent; } .night-glow { text-shadow: 0 0 10px var(--accent-glow); } .glow-cycle { animation: hueCycle 8s linear infinite; } .animated-gradient { background-image: linear-gradient(90deg, var(--text-primary), var(--accent), var(--text-primary)); -webkit-background-clip: text; background-clip: text; color: transparent; animation: gradientShift 6s linear infinite; text-shadow: 0 0 8px rgba(108, 92, 231, 0.2); } /* Animation Definitions */ @keyframes float { 0% { transform: translate(0, 0); } 100% { transform: translate(30px, 50px); } } @keyframes hueCycle { 0% { filter: hue-rotate(0deg); } 100% { filter: hue-rotate(360deg); } } @keyframes gradientShift { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } } @keyframes waveGlow { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } } @keyframes breatheGlowAdvanced { 0% { box-shadow: 0 0 15px rgba(100, 200, 255, 0.4), 0 0 30px rgba(100, 200, 255, 0.2), inset 0 0 10px rgba(60, 180, 255, 0.15); } 25% { box-shadow: 0 0 25px rgba(130, 220, 255, 0.6), 0 0 45px rgba(70, 190, 255, 0.35), inset 0 0 15px rgba(50, 170, 255, 0.25); } 50% { box-shadow: 0 0 35px rgba(180, 100, 255, 0.7), 0 0 60px rgba(150, 80, 255, 0.5), inset 0 0 20px rgba(120, 60, 220, 0.3); } 75% { box-shadow: 0 0 25px rgba(100, 255, 200, 0.6), 0 0 50px rgba(80, 230, 180, 0.4), inset 0 0 15px rgba(60, 200, 160, 0.25); } 100% { box-shadow: 0 0 15px rgba(100, 200, 255, 0.4), 0 0 30px rgba(100, 200, 255, 0.2), inset 0 0 10px rgba(60, 180, 255, 0.15); } } @keyframes pulse { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } } @keyframes fadeIn { from { opacity: 0; transform: translateY(2px); } to { opacity: 1; transform: none; } } @keyframes rowMarquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } .icon-moon { transition: opacity 3s ease; } /* Theme-Specific Typography Styles */ [data-theme="night"] .gradient-text { text-shadow: 0 0 20px var(--accent-glow); } [data-theme="night"] .tech-tag-3d, [data-theme="night"] .tech-tag-mobile { text-shadow: 0 0 6px rgba(255, 255, 255, 0.12), 0 0 12px var(--accent-glow); } [data-theme="night"] .neon-font { color: #ffffff; text-shadow: 0 0 15px var(--accent), 0 0 25px var(--accent); font-weight: bold; } [data-theme="day"] .icon-sun { color: #ffa500; font-size: 1.3rem; } [data-theme="night"] .icon-moon { color: #8b5cf6; font-size: 1.3rem; } .nav-menu .action-btn.is-active .icon-sun { opacity: 0; } .nav-menu .action-btn.is-active .icon-moon { opacity: 1; } .nav-menu .action-btn:not(.is-active) .icon-sun { opacity: 1; } .nav-menu .action-btn:not(.is-active) .icon-moon { opacity: 0; } /* ========================================= 4. Navigation ========================================= */ /* Desktop Nav (≥769px) */ @media (min-width: 769px) { .glass-nav { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); width: 90%; max-width: 1200px; height: 68px; padding: 0 30px; z-index: 1000; border-radius: 100px; } .nav-inner { display: flex; justify-content: space-between; align-items: center; height: 100%; } .logo-brand { font-family: var(--font-serif); font-size: 1.5rem; font-weight: 700; color: var(--text-primary); text-decoration: none; } .logo-accent { color: var(--accent); font-size: 2rem; line-height: 0; } .nav-menu { display: flex; align-items: center; gap: 24px; } .nav-item { display: flex; align-items: center; gap: 6px; color: var(--text-secondary); text-decoration: none; font-weight: 500; font-size: 0.95rem; transition: color 0.3s; padding: 8px 16px; border-radius: 20px; } .nav-item:hover, .nav-item.active { color: var(--text-primary); background: rgba(108, 92, 231, 0.1); } .nav-item i { font-size: 1.2rem; } .nav-divider { width: 1px; height: 20px; background: var(--text-tertiary); opacity: 0.3; } /* Action Buttons (Theme/Language) */ .action-btn { display: flex; align-items: center; gap: 4px; color: var(--text-primary); font-size: 0.9rem; opacity: 0.8; transition: all 0.3s; padding: 8px 16px; border-radius: 20px; background: rgba(128, 128, 128, 0.1); border: none; cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .action-btn:hover { opacity: 1; background: var(--accent); color: white; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(108, 92, 231, 0.3); } .action-btn:active { transform: translateY(0); } } /* Mobile Nav (<=768px) */ @media (max-width: 768px) { .glass-nav { position: fixed; top: auto; bottom: 0; left: 0; width: 100%; height: auto; border-radius: 0; background: var(--dock-bg); backdrop-filter: blur(12px) saturate(120%); -webkit-backdrop-filter: blur(12px) saturate(120%); border-top: 1px solid rgba(128, 128, 128, 0.1); padding-bottom: env(safe-area-inset-bottom); z-index: 1000; } .logo-brand, .nav-divider { display: none; } .nav-menu { position: fixed; bottom: 10px; left: 50%; transform: translateX(-50%); z-index: 1000; display: flex; align-items: center; gap: 8px; padding: 3px; border-radius: 32px; background: var(--glass-bg); border: var(--glass-border); box-shadow: var(--glass-shadow); backdrop-filter: blur(12px); width: calc(100% - 40px); max-width: 400px; } .nav-menu .nav-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 12px 8px; border-radius: 20px; color: var(--text-secondary); text-decoration: none; transition: all 0.3s ease; position: relative; overflow: hidden; } /* Active状态高亮 */ .nav-menu .nav-item.active { background: var(--accent-light); color: var(--accent); box-shadow: 0 4px 12px rgba(var(--accent-rgb), 0.2); } /* 图标+文字适配 */ .nav-menu .nav-item i { font-size: 1.2rem; margin-bottom: 4px; } .nav-menu .nav-label { font-size: 0.7rem; font-weight: 500; } /* 分割线适配 */ .nav-menu .nav-divider { width: 1px; height: 30px; background: var(--text-tertiary); opacity: 0.3; margin: 0 4px; } .action-btn { display: none; } .action-btn .btn-text { display: none; } [data-theme="night"] .nav-menu { background: rgba(20, 20, 30, 0.85); border-color: rgba(255, 255, 255, 0.1); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3); } [data-theme="night"] .nav-menu .nav-item.active, [data-theme="night"] .nav-menu .action-btn.is-active { text-shadow: 0 0 6px rgba(161, 196, 253, 0.4); } [data-theme="night"] .nav-menu .nav-item:hover:not(.active) { color: #fff; background: rgba(255, 255, 255, 0.1); } } /* ========================================= 5. Layout: Bento Grid (Responsive) ========================================= */ .main-container { max-width: 1200px; margin: 120px auto 60px; padding: 0 30px; } /* Desktop Grid (≥1025px) */ .bento-grid { display: grid; gap: 24px; grid-template-columns: 320px 1fr 260px; grid-template-rows: 240px 220px auto; grid-template-areas: "profile bio stats" "profile bio mbti" "tech tech interests"; } /* Tablet Grid (769px-1024px) */ @media (min-width: 769px) and (max-width: 1024px) { .bento-grid { grid-template-columns: 1fr 1fr; grid-template-areas: "profile stats" "profile mbti" "bio bio" "tech tech" "interests interests"; grid-template-rows: auto; } } /* Mobile Grid (<=768px) */ @media (max-width: 768px) { .main-container { margin: 20px auto 100px; padding: 0 16px; } .bento-grid { display: flex; flex-direction: column; gap: 16px; } } /* Grid Areas Definition */ .area-profile { grid-area: profile; } .area-bio { grid-area: bio; } .area-stats { grid-area: stats; } .area-mbti { grid-area: mbti; } .area-tech { grid-area: tech; } .area-interests { grid-area: interests; } /* ========================================= 6. Section Styles ========================================= */ /* Profile Card */ .area-profile { padding: 30px; display: flex; flex-direction: column; justify-content: space-between; align-items: center; text-align: center; isolation: isolate; contain: layout style; } .avatar-ring { position: relative; width: 120px; height: 120px; border-radius: 50%; padding: 4px; border: 1px solid var(--text-tertiary); } .avatar-img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; } .status-dot { position: absolute; bottom: 0; right: 0; background: #2ecc71; color: #fff; font-size: 0.65rem; padding: 2px 8px; border-radius: 10px; border: 2px solid var(--bg-base); } .hero-name { font-size: 2rem; font-family: var(--font-serif); margin: 15px 0 5px; font-weight: 800; color: var(--text-primary); isolation: isolate; } .hero-role { font-size: 0.9rem; color: var(--text-secondary); margin-bottom: 10px; isolation: isolate; } .location-tag { font-size: 0.85rem; color: var(--text-tertiary); display: flex; align-items: center; justify-content: center; gap: 4px; } /* Social Links */ .social-dock { display: flex; gap: 12px; margin-top: 20px; } .s-icon { width: 46px; height: 46px; border-radius: 50%; background: rgba(128, 128, 128, 0.1); display: flex; align-items: center; justify-content: center; color: var(--text-secondary); transition: all 0.3s; text-decoration: none; } .s-icon:hover { background: var(--accent); color: #fff; transform: translateY(-3px); } .s-icon:hover i { color: transparent !important; -webkit-text-fill-color: transparent; } .s-icon i { -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; } .s-icon[href*="github.com"] i { background: var(--gradient-7); } .s-icon[href^="mailto:"] i { background: var(--gradient-6); } .s-icon[href*="blog.hehouhui.cn"] i { background: var(--gradient-3); } .s-icon[href*="zhihu.com"] i { background: var(--gradient-4); } .s-icon[href*="juejin.cn"] i { background: var(--gradient-1); } .s-icon[onclick*="toggleWechat"] i { background: var(--gradient-5); } /* Tablet Profile Layout */ @media (min-width: 769px) and (max-width: 1024px) { .area-profile { flex-direction: row; gap: 20px; } } /* Mobile Profile Layout */ @media (max-width: 768px) { .area-profile { padding: 20px; flex-direction: row; gap: 15px; align-items: center; text-align: left; } .avatar-ring { width: 80px; height: 80px; padding: 2px; margin: 0; } .status-dot { right: 0; bottom: 0; width: 12px; height: 12px; font-size: 0; padding: 0; } .hero-name { margin: 0 0 4px; font-size: 1.5rem; } .hero-role { font-size: 0.8rem; margin-bottom: 6px; } .location-tag { justify-content: flex-start; } .desktop-social { display: none; } /* 移动端推荐分享模块调整 */ .recommend-share-module { right: 15px; bottom: 15px; opacity: 0; transform: translateY(10px); animation: shareModuleFadeIn 0.5s ease-out 0.5s forwards; } @keyframes shareModuleFadeIn { to { opacity: 1; transform: translateY(0); } } .share-link { width: 36px; height: 36px; } .share-icon { width: 16px; height: 16px; } .badge-dot { width: 6px; height: 6px; top: 1px; right: 1px; border-width: 1px; } } /* Night Theme Profile Styles */ [data-theme="night"] .area-profile { position: relative; z-index: 2; transform: translateZ(0); animation: breatheGlowAdvanced 6s ease-in-out infinite alternate; } [data-theme="night"] .hero-name { background: linear-gradient(90deg, #ff7eb3, #ff758c, #ff6b6b, #ff9a8b) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; text-shadow: 0 0 2px rgba(255, 126, 179, 0.3), 0 0 6px rgba(255, 117, 140, 0.1), 0 0 32px rgba(255, 107, 107, 0.4), 0 0 10px rgba(255, 154, 139, 0.5); transform: translateZ(0); -webkit-text-stroke: 0.3px rgba(0, 0, 0, 0.3); } [data-theme="night"] .hero-role { background: linear-gradient(90deg, #4facfe, #00f2fe, #43e97b, #38f9d7) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; text-shadow: 0 0 8px rgba(79, 172, 254, 0.7), 0 0 16px rgba(0, 242, 254, 0.6), 0 0 24px rgba(67, 233, 123, 0.5), 0 0 32px rgba(56, 249, 215, 0.4); transform: translateZ(0); -webkit-text-stroke: 0.2px rgba(0, 0, 0, 0.2); } /* 推荐分享模块 */ .recommend-share-module { position: absolute; right: 20px; bottom: 20px; opacity: 0; transform: translateY(10px); animation: shareModuleFadeIn 0.5s ease-out 0.5s forwards; } @keyframes shareModuleFadeIn { to { opacity: 1; transform: translateY(0); } } .share-link { position: relative; width: 42px; height: 42px; border-radius: 50%; background: rgba(128, 128, 128, 0.1); display: flex; align-items: center; justify-content: center; color: var(--text-secondary); transition: all 0.3s; text-decoration: none; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); } .share-link:hover { background: var(--accent); color: #fff; transform: translateY(-3px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .share-icon { width: 18px; height: 18px; } .share-icon path { stroke: #32F08C; } .badge-dot { position: absolute; top: 2px; right: 2px; width: 8px; height: 8px; background: #ff4757; border-radius: 50%; border: 2px solid var(--bg-base); } /* 夜间模式下的推荐分享模块 */ [data-theme="night"] .share-link { background: rgba(255, 255, 255, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } [data-theme="night"] .share-link:hover { box-shadow: 0 4px 15px rgba(108, 92, 231, 0.4); } /* 夜间模式下的SVG图标 */ [data-theme="night"] .share-icon path { stroke: #32F08C; filter: drop-shadow(0 0 4px rgba(50, 240, 140, 0.4)); } /* Night Theme Social Styles */ [data-theme="night"] .s-icon { box-shadow: 0 0 10px var(--accent-glow); } [data-theme="night"] .s-icon i { text-shadow: 0 0 25px var(--accent-glow); } [data-theme="night"] .social-dock .s-icon { filter: hue-rotate(0deg); animation: hueCycle 10s linear infinite; } /* Desktop Social Layout */ @media (min-width: 769px) { .mobile-social { display: none !important; } .social-dock { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; justify-items: center; } .s-icon { width: 42px; height: 42px; } .s-icon i { font-size: 1.6rem; } } /* Mobile Social Layout */ .mobile-social { display: none; } @media (max-width: 768px) { .mobile-social { display: flex; justify-content: space-around; padding: 20px; } .ms-btn { width: 40px; height: 40px; border-radius: 50%; background: rgba(128, 128, 128, 0.1); display: flex; align-items: center; justify-content: center; color: var(--text-secondary); font-size: 1.4rem; } /* Night Theme Mobile Social Glow */ [data-theme="night"] .ms-btn:nth-child(1) { box-shadow: 0 0 20px rgba(132, 250, 176, 0.8); } [data-theme="night"] .ms-btn:nth-child(2) { box-shadow: 0 0 20px rgba(246, 211, 101, 0.8); } [data-theme="night"] .ms-btn:nth-child(3) { box-shadow: 0 0 20px rgba(255, 154, 158, 0.8); } [data-theme="night"] .ms-btn:nth-child(4) { box-shadow: 0 0 20px rgba(168, 237, 234, 0.8); } [data-theme="night"] .ms-btn:nth-child(5) { box-shadow: 0 0 20px rgba(210, 153, 194, 0.8); } [data-theme="night"] .ms-btn:nth-child(6) { box-shadow: 0 0 20px rgba(161, 196, 253, 0.8); } } /* Social Icon Color Reset */ .social-dock .s-icon { color: var(--text-primary); } .social-dock .s-icon i { background: none !important; -webkit-background-clip: initial !important; background-clip: initial !important; -webkit-text-fill-color: initial !important; color: currentColor !important; text-shadow: none !important; } /* Bio Card */ .area-bio { padding: 35px; display: flex; flex-direction: column; justify-content: center; position: relative; } .card-label { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 2px; color: var(--text-tertiary); margin-bottom: 15px; } .bio-text { display: -webkit-box; -webkit-line-clamp: 7; -webkit-box-orient: vertical; overflow: hidden; font-size: 1rem; color: var(--text-primary); margin-bottom: 20px; text-align: justify; } .quote-box { border-left: 3px solid var(--accent); padding-left: 15px; font-style: italic; color: var(--text-secondary); font-size: 0.9rem; } .link-btn { background: none; border: none; color: var(--accent); cursor: pointer; font-size: 0.85rem; } /* Language-Specific Bio Styles */ [data-lang="en"] .bio-text { font-size: 1rem; line-height: 1.5; font-family: 'Noto Serif', serif; font-style: oblique; } /* Night Theme Bio Styles */ [data-theme="night"] .card-label { background: linear-gradient(90deg, #4facfe 0%, #6c5ce7 50%, #4facfe 100%); -webkit-background-clip: text; background-clip: text; color: transparent; } [data-theme="night"] .bio-text { background: linear-gradient(90deg, #4facfe 0%, #6c5ce7 50%, #4facfe 100%); -webkit-background-clip: text; background-clip: text; color: transparent; background-size: 200% auto; animation: waveGlow 3s linear infinite; } /* 引用文本(技术追求描述)- 黑夜模式渐变 */ [data-theme="night"] .area-bio .quote-box p { background: linear-gradient(120deg, #a1c4fd, #6c5ce7) !important; -webkit-background-clip: text !important; background-clip: text !important; -webkit-text-fill-color: transparent !important; color: transparent !important; text-shadow: 0 0 2px rgba(161, 196, 253, 0.3) !important; /* 轻微发光不模糊 */ } /* Mobile Quote Collapse */ @media (max-width: 768px) { .quote-box p.quote-collapsed { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } } /* Stats Card */ .area-stats { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; padding: 20px; border-radius: 16px; background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(128, 128, 128, 0.1); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); } .stat-item { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 12px; border-radius: 12px; background: rgba(255, 255, 255, 0.9); transition: all 0.3s ease; min-width: 0; text-align: center; } .stat-item:hover { background: rgba(108, 92, 231, 0.1); transform: translateY(-3px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .stat-val { font-size: 1.5rem; margin-bottom: 5px; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: bold; } .stat-key { font-size: 0.75rem; color: var(--text-tertiary); text-transform: uppercase; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Night Theme Stats Styles */ [data-theme="night"] .area-stats { background: rgba(30, 30, 35, 0.85); border: 1px solid rgba(255, 255, 255, 0.15); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); } [data-theme="night"] .area-stats:hover { border-color: var(--accent); box-shadow: 0 0 15px var(--accent-glow); } [data-theme="night"] .stat-item { background: rgba(255, 255, 255, 0.15); } [data-theme="night"] .stat-item:hover { background: rgba(108, 92, 231, 0.3); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } [data-theme="night"] .stat-val { color: #fff; text-shadow: 0 0 10px var(--accent-glow); } [data-theme="night"] .stat-key { color: var(--text-secondary); text-shadow: 0 0 5px rgba(255, 255, 255, 0.1); } @media (min-width: 769px) and (max-width: 1445px){ [data-lang="en"] .stat-key { font-size: 0.5rem !important; } } @media (min-width: 1030px) and (max-width: 1445px) { [data-lang="en"] .mbti-tags .tag { font-size: 0.5rem !important; } } /* Responsive Stats Layout */ @media (min-width: 1025px) and (max-width: 1445px), (min-width: 1201px) { .area-stats { grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); gap: 12px; } } @media (min-width: 769px) and (max-width: 1024px) { .area-stats { grid-template-columns: repeat(5, 1fr); gap: 6px; } .stat-item { padding: 10px 5px; } .stat-val { font-size: 1.3rem; } .stat-key { font-size: 0.7rem; } } @media (max-width: 768px) { .area-stats { grid-template-columns: repeat(5, 1fr); padding: 15px 10px; gap: 4px; } .stat-item { padding: 8px 2px; } .stat-val { font-size: 1.1rem; margin-bottom: 3px; } [data-lang="en"] .stat-key { font-size: 6px !important; } } @media (min-width: 1446px) { .area-stats { grid-template-columns: repeat(5, 1fr); gap: 8px; } } /* MBTI Card */ .area-mbti { padding: 3px; display: flex; align-items: center; } .mbti-inner { width: 100%; } .mbti-head { margin-left: 20px; display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; } .mbti-code { font-size: 2.2rem; font-weight: 900; font-family: var(--font-mono); } .mbti-name { font-weight: 600; color: var(--text-secondary); } .mbti-icon { font-size: 1.5rem; } .mbti-desc { margin-left: 15px; font-size: 0.7rem; color: var(--text-secondary); margin-bottom: 15px; line-height: 1.3; font-style: italic; } .mbti-tags { display: grid; gap: 1px; grid-template-columns: 1fr 1fr; flex-wrap: wrap; flex-direction: row; justify-content: flex-start; } @media (max-width: 768px) { .mbti-tags { margin-left: 20px; } } .mbti-tags .tag { font-size: 0.75rem; padding: 4px 10px; border-radius: 6px; background: none !important; border: none !important; background-color: transparent !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; -webkit-text-fill-color: transparent !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; } .mbti-tags .tag.tag-color-1 { background: var(--gradient-1) !important; -webkit-background-clip: text !important; background-clip: text !important; } .mbti-tags .tag.tag-color-2 { background: var(--gradient-2) !important; -webkit-background-clip: text !important; background-clip: text !important; } .mbti-tags .tag.tag-color-3 { background: var(--gradient-3) !important; -webkit-background-clip: text !important; background-clip: text !important; } .mbti-tags .tag.tag-color-4 { background: var(--gradient-4) !important; -webkit-background-clip: text !important; background-clip: text !important; } /* Theme-Specific MBTI Styles */ [data-theme="day"] .mbti-desc { background: linear-gradient(90deg, #6c5ce7 0%, #3b82f6 50%, #0ea5e9 100%); -webkit-background-clip: text; background-clip: text; color: transparent; } [data-theme="night"] .mbti-desc { background: linear-gradient(90deg, #a162e8 0%, #8b5cf6 50%, #6c5ce7 100%); -webkit-background-clip: text; background-clip: text; color: transparent; border-radius: 8px; padding: 8px 12px; } /* Tech Stack Card */ .area-tech { display: flex; flex-direction: column; position: relative; overflow: hidden; contain: layout style; } .card-header { padding: 20px 25px; border-bottom: 1px solid rgba(128, 128, 128, 0.1); display: flex; justify-content: space-between; align-items: center; } .card-header h3 { font-size: 1.1rem; color: var(--text-primary); margin: 0; background: var(--gradient-2); -webkit-background-clip: text; background-clip: text; color: transparent; font-style: inherit; font-weight: 700; } .card-subtitle { font-size: 0.8rem; background: var(--gradient-3); -webkit-background-clip: text; background-clip: text; color: transparent; } /* Desktop Tech 3D Layout */ .tech-wrapper { flex: 1; position: relative; min-height: 280px; width: 100%; overflow: hidden; } .tech-tag-3d { position: absolute; font-size: 0.85rem; font-weight: 600; color: var(--text-primary); padding: 6px 12px; border-radius: 6px; user-select: none; white-space: nowrap; backface-visibility: hidden; will-change: transform; border: none; outline: none; box-shadow: none; background-color: transparent !important; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; text-decoration: none; pointer-events: none; z-index: 10; contain: layout style; } /* Mobile Tech Scroll Layout */ @media (max-width: 768px) { .area-tech { height: auto; } .tech-wrapper { display: none; } .tech-wrapper.mobile-scroll { display: grid; height: auto; min-height: 120px; grid-template-rows: repeat(3, 30px); grid-auto-flow: column; gap: 10px; overflow-x: auto; padding: 10px 0 20px; scroll-snap-type: x mandatory; mask-image: linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%); -webkit-mask-image: linear-gradient(to right, transparent 0%, black 20%, black 80%, transparent 100%); } .tech-row { display: flex; gap: 10px; align-items: center; white-space: nowrap; will-change: transform; animation: rowMarquee var(--row-speed) linear infinite; } .row-1 { --row-speed: 24s; } .row-2 { --row-speed: 28s; } .row-3 { --row-speed: 32s; } .tech-tag-mobile { scroll-snap-align: start; padding: 6px 12px; border-radius: 20px; font-size: 0.8rem; font-family: var(--font-mono); white-space: nowrap; border: none; outline: none; box-shadow: none; background-color: transparent !important; font-weight: bold; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; text-decoration: none; pointer-events: none; z-index: 10; contain: layout style; } } /* Tech Tag Color Definitions */ /* Day Theme */ [data-theme="day"] .tech-tag-3d.tag-color-1, [data-theme="day"] .tech-tag-mobile.tag-color-1 { background: none !important; -webkit-background-clip: initial !important; background-clip: initial !important; color: #0ea5e9 !important; -webkit-text-fill-color: #0ea5e9 !important; } [data-theme="day"] .tech-tag-3d.tag-color-2, [data-theme="day"] .tech-tag-mobile.tag-color-2 { color: #ef4444 !important; -webkit-text-fill-color: #ef4444 !important; } [data-theme="day"] .tech-tag-3d.tag-color-3, [data-theme="day"] .tech-tag-mobile.tag-color-3 { color: #10b981 !important; -webkit-text-fill-color: #10b981 !important; } [data-theme="day"] .tech-tag-3d.tag-color-4, [data-theme="day"] .tech-tag-mobile.tag-color-4 { color: #f59e0b !important; -webkit-text-fill-color: #f59e0b !important; } [data-theme="day"] .tech-tag-3d.tag-color-5, [data-theme="day"] .tech-tag-mobile.tag-color-5 { color: #8b5cf6 !important; -webkit-text-fill-color: #8b5cf6 !important; } [data-theme="day"] .tech-tag-3d.tag-color-6, [data-theme="day"] .tech-tag-mobile.tag-color-6 { color: #ec4899 !important; -webkit-text-fill-color: #ec4899 !important; } [data-theme="day"] .tech-tag-3d.tag-color-7, [data-theme="day"] .tech-tag-mobile.tag-color-7 { color: #06b6d4 !important; -webkit-text-fill-color: #06b6d4 !important; } [data-theme="day"] .tech-tag-3d.tag-color-8, [data-theme="day"] .tech-tag-mobile.tag-color-8 { color: #f97316 !important; -webkit-text-fill-color: #f97316 !important; } [data-theme="day"] .tech-tag-3d.tag-color-9, [data-theme="day"] .tech-tag-mobile.tag-color-9 { color: #6b7280 !important; -webkit-text-fill-color: #6b7280 !important; } [data-theme="day"] .tech-tag-3d.tag-color-10, [data-theme="day"] .tech-tag-mobile.tag-color-10 { color: #1f2937 !important; -webkit-text-fill-color: #1f2937 !important; } [data-theme="day"] .tech-tag-3d.tag-color-11, [data-theme="day"] .tech-tag-mobile.tag-color-11 { color: #ACB6E5 !important; -webkit-text-fill-color: #ACB6E5 !important; } [data-theme="day"] .tech-tag-3d.tag-color-12, [data-theme="day"] .tech-tag-mobile.tag-color-12 { color: #ff7e5f !important; -webkit-text-fill-color: #ff7e5f !important; } [data-theme="day"] .tech-tag-3d.tag-color-13, [data-theme="day"] .tech-tag-mobile.tag-color-13 { color: #764ba2 !important; -webkit-text-fill-color: #764ba2 !important; } [data-theme="day"] .tech-tag-3d.tag-color-14, [data-theme="day"] .tech-tag-mobile.tag-color-14 { color: #ff8080 !important; -webkit-text-fill-color: #ff8080 !important; } [data-theme="day"] .tech-tag-3d.tag-color-15, [data-theme="day"] .tech-tag-mobile.tag-color-15 { color: #2af598 !important; -webkit-text-fill-color: #2af598 !important; } [data-theme="day"] .tech-tag-3d.tag-color-16, [data-theme="day"] .tech-tag-mobile.tag-color-16 { color: #ffd1ff !important; -webkit-text-fill-color: #ffd1ff !important; } [data-theme="day"] .tech-tag-3d.tag-color-17, [data-theme="day"] .tech-tag-mobile.tag-color-17 { color: #89f7fe !important; -webkit-text-fill-color: #89f7fe !important; } [data-theme="day"] .tech-tag-3d.tag-color-18, [data-theme="night"] .tech-tag-mobile.tag-color-18 { color: #ff9a9e !important; -webkit-text-fill-color: #ff9a9e !important; } [data-theme="day"] .tech-tag-3d.tag-color-19, [data-theme="day"] .tech-tag-mobile.tag-color-19 { color: #642b73 !important; -webkit-text-fill-color: #642b73 !important; } [data-theme="day"] .tech-tag-3d.tag-color-20, [data-theme="day"] .tech-tag-mobile.tag-color-20 { color: #38f9d7 !important; -webkit-text-fill-color: #38f9d7 !important; } [data-theme="day"] .tech-tag-3d.tag-color-21, [data-theme="day"] .tech-tag-mobile.tag-color-21 { color: #f5af19 !important; -webkit-text-fill-color: #f5af19 !important; } [data-theme="day"] .tech-tag-3d.tag-color-22, [data-theme="day"] .tech-tag-mobile.tag-color-22 { color: #c850c0 !important; -webkit-text-fill-color: #c850c0 !important; } [data-theme="day"] .tech-tag-3d.tag-color-23, [data-theme="day"] .tech-tag-mobile.tag-color-23 { color: #d57eeb !important; -webkit-text-fill-color: #d57eeb !important; } [data-theme="day"] .tech-tag-3d.tag-color-24, [data-theme="day"] .tech-tag-mobile.tag-color-24 { color: #fc00ff !important; -webkit-text-fill-color: #fc00ff !important; } [data-theme="day"] .tech-tag-3d.tag-color-25, [data-theme="day"] .tech-tag-mobile.tag-color-25 { color: #fad0c4 !important; -webkit-text-fill-color: #fad0c4 !important; } /* Night Theme */ [data-theme="night"] .tech-tag-3d.tag-color-1, [data-theme="night"] .tech-tag-mobile.tag-color-1 { background: var(--gradient-1) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-2, [data-theme="night"] .tech-tag-mobile.tag-color-2 { background: var(--gradient-2) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-3, [data-theme="night"] .tech-tag-mobile.tag-color-3 { background: var(--gradient-3) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-4, [data-theme="night"] .tech-tag-mobile.tag-color-4 { background: var(--gradient-4) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-5, [data-theme="night"] .tech-tag-mobile.tag-color-5 { background: var(--gradient-5) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-6, [data-theme="night"] .tech-tag-mobile.tag-color-6 { background: var(--gradient-6) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-7, [data-theme="night"] .tech-tag-mobile.tag-color-7 { background: var(--gradient-7) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-8, [data-theme="night"] .tech-tag-mobile.tag-color-8 { background: var(--gradient-8) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-9, [data-theme="night"] .tech-tag-mobile.tag-color-9 { background: var(--gradient-9) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-10, [data-theme="night"] .tech-tag-mobile.tag-color-10 { background: var(--gradient-10) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-11, [data-theme="night"] .tech-tag-mobile.tag-color-11 { background: var(--gradient-11) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-12, [data-theme="night"] .tech-tag-mobile.tag-color-12 { background: var(--gradient-12) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-13, [data-theme="night"] .tech-tag-mobile.tag-color-13 { background: var(--gradient-13) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-14, [data-theme="night"] .tech-tag-mobile.tag-color-14 { background: var(--gradient-14) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-15, [data-theme="night"] .tech-tag-mobile.tag-color-15 { background: var(--gradient-15) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-16, [data-theme="night"] .tech-tag-mobile.tag-color-16 { background: var(--gradient-16) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-17, [data-theme="night"] .tech-tag-mobile.tag-color-17 { background: var(--gradient-17) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-18, [data-theme="night"] .tech-tag-mobile.tag-color-18 { background: var(--gradient-18) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-19, [data-theme="night"] .tech-tag-mobile.tag-color-19 { background: var(--gradient-19) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-20, [data-theme="night"] .tech-tag-mobile.tag-color-20 { background: var(--gradient-20) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-21, [data-theme="night"] .tech-tag-mobile.tag-color-21 { background: var(--gradient-21) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-22, [data-theme="night"] .tech-tag-mobile.tag-color-22 { background: var(--gradient-22) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-23, [data-theme="night"] .tech-tag-mobile.tag-color-23 { background: var(--gradient-23) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-24, [data-theme="night"] .tech-tag-mobile.tag-color-24 { background: var(--gradient-24) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } [data-theme="night"] .tech-tag-3d.tag-color-25, [data-theme="night"] .tech-tag-mobile.tag-color-25 { background: var(--gradient-25) !important; -webkit-background-clip: text !important; background-clip: text !important; color: transparent !important; background-color: transparent !important; -webkit-text-fill-color: transparent !important; } /* Gradient Fallback for Unsupported Browsers */ @supports not ((-webkit-background-clip: text) or (background-clip: text)) { .tech-tag-3d, .tech-tag-mobile { background: none !important; color: var(--text-primary) !important; } .tech-tag-3d[class*="tag-color-"], .tech-tag-mobile[class*="tag-color-"] { background: none !important; color: var(--text-primary) !important; } } /* Theme-Specific Card Header Styles */ [data-theme="night"] .card-header h3 { text-shadow: 0 0 10px var(--accent-glow); } :not([data-theme="night"]) .glow-title, :not([data-theme="night"]) .card-header h3 { background: linear-gradient(90deg, var(--text-primary), var(--accent), var(--text-primary)); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; } /* Interests Card */ .area-interests { padding: 20px; contain: layout style; } .interest-list { display: grid; grid-template-columns: repeat(2, 1fr); /* 关键:2列布局 */ gap: 15px; margin-top: 1rem; align-content: center; } .interest-item { padding: 15px; border-radius: 12px; display: flex; flex-direction: column; /* 关键:垂直排列(原错误是row) */ align-items: center; /* 内容居中 */ gap: 10px; /* emoji与文字的间距 */ transition: background 0.25s; } .interest-item:hover { background: rgba(255, 255, 255, 0.9); box-shadow: 0 10px 24px rgba(0, 0, 0, 0.10); border-color: rgba(108, 92, 231, 0.25); } .i-emoji { font-size: 2rem; color: var(--text-primary); -webkit-text-fill-color: initial; flex-shrink: 0; } .i-text { display: flex; text-align: center; min-width: 0; gap: 4px; } .i-text strong { font-size: 0.9rem; font-weight: 600; white-space: nowrap; background: var(--gradient-1); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; } .i-text span:not(.i-emoji) { font-size: 0.75rem; line-height: 1.6; } /* Night Theme Interests Styles */ /* 修复黑夜模式下Interest模块模糊问题 */ [data-theme="night"] .interest-item { background: rgba(30, 30, 35, 0.5); /* 提高背景不透明度,增强对比度 */ border-color: rgba(255, 255, 255, 0.2); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.4); /* 降低阴影模糊,减少干扰 */ isolation: isolate; /* 避免父容器模糊影响内部内容 */ } [data-theme="night"] .interest-item:hover { background: rgba(30, 30, 35, 0.7); border-color: var(--accent); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); } /* 简化文字阴影,降低模糊程度,提高对比度 */ [data-theme="night"] .i-text strong { background: var(--gradient-1) !important; -webkit-background-clip: text !important; background-clip: text !important; -webkit-text-fill-color: transparent !important; color: transparent !important; /* 减少阴影层数+降低模糊半径,只保留轻微发光 */ text-shadow: 0 0 4px var(--accent-glow); } [data-theme="night"] .i-text span:not(.i-emoji) { background: var(--gradient-2) !important; -webkit-background-clip: text !important; background-clip: text !important; -webkit-text-fill-color: transparent !important; color: transparent !important; text-shadow: 0 0 3px var(--accent-glow); } /* Responsive Interests Layout */ @media (min-width: 1025px) { .interest-list { grid-template-columns: 1fr 1fr; gap: 15px; } } @media (min-width: 769px) and (max-width: 1024px) { .interest-list { grid-template-columns: 1fr 1fr; overflow: hidden; } .interest-item { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; min-width: 0; padding: 15px; } .i-emoji { margin-bottom: 6px; } .i-text { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-width: 0; width: 100%; } .i-text strong, .i-text span { white-space: normal; word-break: break-word; overflow-wrap: break-word; } } @media (max-width: 768px) { .interest-list { grid-template-columns: 1fr; max-height: none; } .interest-item { min-width: 0; padding: 12px; } .i-text { min-width: 0; flex-direction: row; align-items: center; gap: 8px; overflow: hidden; word-break: break-all; text-overflow: ellipsis; white-space: nowrap; flex-wrap: wrap; } .i-text strong, .i-text span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .i-text strong { flex: 0 1 auto; } .i-text span:not(.i-emoji) { flex: 1 1 100%; white-space: normal; } } /* ========================================= 7. Content Sections (Blog/Github) ========================================= */ .content-section { display: flex; flex-direction: column; gap: 24px; margin-top: 40px; } .col-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .glow-title { font-size: 1.3rem; font-weight: 700; display: flex; align-items: center; gap: 8px; color: var(--text-primary); font-style: normal; -webkit-font-smoothing: antialiased; } .more-link { font-size: 0.9rem; color: var(--accent); font-weight: 600; text-decoration: none; } .glass-panel { padding: 20px; min-height: 300px; } /* Github Projects List */ .projects-list { margin-top: 15px; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; } .repo-card { padding: 14px; background: rgba(128, 128, 128, 0.05); border-radius: 12px; cursor: pointer; border: 1px solid transparent; transition: border 0.3s, transform 0.2s ease; } .repo-card:hover { border-color: var(--accent); transform: translateY(-2px); } .repo-head { display: flex; justify-content: space-between; font-weight: 700; color: var(--text-primary); font-size: 0.95rem; } .repo-desc { font-size: 0.8rem; color: var(--text-secondary); margin-top: 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } /* Blog List */ .blog-list { display: flex; flex-direction: column; gap: 12px; } .blog-item { padding: 12px 16px; border-radius: 12px; background: rgba(128, 128, 128, 0.03); display: flex; justify-content: space-between; align-items: center; cursor: pointer; transition: background 0.3s; } .blog-item:hover { background: rgba(128, 128, 128, 0.08); } .b-info { flex: 1; min-width: 0; margin-right: 15px; } .b-title { font-weight: 600; font-size: 0.95rem; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: var(--gradient-3); -webkit-background-clip: text; background-clip: text; color: transparent; } .b-date { font-size: 0.75rem; color: var(--text-tertiary); background: var(--gradient-5); -webkit-background-clip: text; background-clip: text; color: transparent; } .b-cat { font-size: 0.75rem; color: var(--accent); background: var(--gradient-4); -webkit-background-clip: text; background-clip: text; color: transparent; background: none; padding: 0; border-radius: 0; white-space: nowrap; } /* Blog Container Readability Fix */ #blog-container .b-title { background: none !important; -webkit-background-clip: initial; background-clip: initial; color: var(--text-primary) !important; -webkit-text-fill-color: initial; } #blog-container .b-cat { background: none !important; -webkit-background-clip: initial; background-clip: initial; color: var(--text-secondary) !important; -webkit-text-fill-color: initial; } #blog-container .b-date { background: none !important; -webkit-background-clip: initial; background-clip: initial; color: var(--text-tertiary) !important; -webkit-text-fill-color: initial; } /* Night Theme Blog Styles */ [data-theme="night"] .b-title, [data-theme="night"] .b-cat, [data-theme="night"] .b-date { text-shadow: 0 0 8px var(--accent-glow); } /* Loading Skeleton */ .skeleton-card { height: 60px; background: rgba(128, 128, 128, 0.1); border-radius: 10px; animation: pulse 1.5s infinite; } /* Comments Section */ .comments-wrapper { margin: 40px 0 80px; } .comment-box { padding: 30px; } /* Responsive Comment Box */ @media (min-width: 769px) and (max-width: 1024px) { .comment-box { padding: 24px; } } @media (max-width: 768px) { .comment-box { padding: 16px; } } /* ========================================= 8. Floating Action Button (FAB) ========================================= */ .mobile-fab { position: fixed; right: 16px; bottom: 33vh; z-index: 1100; cursor: move; user-select: none; display: block !important; } .fab-main { display: flex; align-items: center; gap: 6px; background: var(--accent); color: #fff; border: none; border-radius: 22px; padding: 10px 14px; box-shadow: 0 8px 18px rgba(0, 0, 0, 0.25); opacity: 0.9; transition: all 0.3s ease; } .fab-main:hover { opacity: 1; transform: scale(1.05); } .fab-main:active { transform: scale(0.95); } .fab-label { font-size: 12px; font-weight: 500; } .fab-menu { display: none; flex-direction: column; gap: 10px; margin-top: 10px; } .fab-item { display: flex; align-items: center; gap: 6px; background: var(--glass-bg); color: var(--text-primary); border-radius: 18px; padding: 8px 12px; border: var(--glass-border); box-shadow: var(--glass-shadow); opacity: 0.8; } .fab-menu.open { display: flex; animation: fadeIn 0.3s ease both; } /* FAB Global Base Styles (Day/Night Common) */ .fab-main { display: flex; align-items: center; gap: 6px; color: var(--text-primary); border: none; border-radius: 22px; padding: 10px 14px; box-shadow: 0 8px 18px rgba(0, 0, 0, 0.25); opacity: 0.95; transition: opacity 0.2s, transform 0.2s; } .fab-label { font-size: 12px; font-weight: 500; } .fab-menu { display: none; flex-direction: column; gap: 10px; margin-top: 10px; } .fab-item { display: flex; align-items: center; gap: 6px; background: var(--glass-bg); color: var(--text-primary); border-radius: 18px; padding: 8px 12px; border: var(--glass-border); box-shadow: var(--glass-shadow); } /* Night Theme FAB Styles */ [data-theme="night"] .fab-main { background: linear-gradient(135deg, #a1c4fd, #6c5ce7); color: white; text-shadow: 0 0 8px rgba(255, 255, 255, 0.6), 0 0 16px rgba(108, 92, 231, 0.5); box-shadow: 0 8px 18px rgba(0, 0, 0, 0.3), 0 0 15px rgba(108, 92, 231, 0.4); opacity: 1; } [data-theme="night"] .fab-item { color: white; text-shadow: 0 0 6px rgba(255, 255, 255, 0.5); opacity: 1; } [data-theme="night"] #fab-lang { background: linear-gradient(135deg, #a1c4fd, #6c5ce7); box-shadow: var(--glass-shadow), 0 0 12px rgba(108, 92, 231, 0.4); } [data-theme="night"] #fab-theme { background: linear-gradient(135deg, #c2e9fb, #00cec9); box-shadow: var(--glass-shadow), 0 0 12px rgba(0, 206, 201, 0.4); } [data-theme="night"] #fab-music { background: linear-gradient(135deg, #ff9a9e, #f093fb); box-shadow: var(--glass-shadow), 0 0 12px rgba(240, 147, 251, 0.4); } /* Music Module Hidden (As Per Original Comment) */ .site-audio { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; display: none; } /* ========================================= 9. Modal & Footer ========================================= */ .modal-overlay { position: fixed; inset: 0; z-index: 2000; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(8px); display: none; align-items: center; justify-content: center; } .modal-glass { width: 300px; padding: 30px; text-align: center; position: relative; } .modal-close { position: absolute; top: 15px; right: 15px; font-size: 1.5rem; color: var(--text-secondary); cursor: pointer; transition: color 0.3s; } .modal-close:hover { color: var(--accent); } .qr-box { margin: 20px 0; } .qr-box img { width: 100%; border-radius: 12px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); } .qr-fallback { padding: 40px; background: #eee; border-radius: 12px; font-size: 0.8rem; color: var(--text-tertiary); } .site-footer { text-align: center; color: var(--text-tertiary); font-size: 0.75rem; padding-bottom: 100px; margin-top: 40px; } .site-footer a { color: var(--text-tertiary); text-decoration: none; transition: color 0.3s; } .site-footer a:hover { color: var(--accent); text-decoration: underline; } /* ========================================= 10. Responsive Adjustments (Final Tweaks) ========================================= */ /* Ensure Mobile Social Stays Hidden on Desktop */ @media (min-width: 769px) { .mobile-social { display: none !important; } } /* Fade-In Animation for Dynamic Content */ .fade-in { animation: fadeIn 0.3s ease both; } /* Fix Tech Tag Marquee on Mobile */ @media (max-width: 768px) { .tech-wrapper.mobile-scroll { mask-image: linear-gradient( to right, transparent 0%, black 10%, black 90%, transparent 100% ); -webkit-mask-image: linear-gradient( to right, transparent 0%, black 10%, black 90%, transparent 100% ); } } /* Ensure Consistent Font Smoothing */ * { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Prevent Horizontal Scroll on Small Screens */ html, body { overflow-x: hidden; } /* Final Theme Consistency Checks */ [data-theme="night"] { color-scheme: dark; } /* Ensure Glass Effects Work on All Browsers */ @supports not (backdrop-filter: blur(8px)) { .glass-nav, .bento-card, .glass-panel, .modal-glass, .fab-main, .fab-item { background: var(--bg-base); opacity: 0.98; } [data-theme="night"] .glass-nav, [data-theme="night"] .bento-card, [data-theme="night"] .glass-panel, [data-theme="night"] .modal-glass, [data-theme="night"] .fab-main, [data-theme="night"] .fab-item { background: var(--bg-base); opacity: 0.95; } }