:root { --text: rgba(0, 0, 0, .9); --muted: rgba(0, 0, 0, .55); --nav-bg: #fff; --vip: #FFC107; --line: rgba(0, 0, 0, .08); --p1: #03A1EA; --p2: #205BAF; } * { box-sizing: border-box } html, body { height: 100% } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, "PingFang SC", "Microsoft YaHei", sans-serif; color: var(--text); background: #ffffff; background-image: url('../images/bg.png'); background-size: cover; background-position: center top; background-repeat: no-repeat; overflow-x: hidden; } .page { min-height: 100vh; display: flex; flex-direction: column; position: relative; overflow: hidden } .bg-decor { position: absolute; left: 0; top: 0; width: 100%; height: auto; pointer-events: none; user-select: none; z-index: 0; } /* 移除了之前的响应式 min-width 逻辑,因为现在是完全固定大小 */ .nav { display: none; /* 隐藏旧版导航栏 */ } /* 现代版导航栏样式 (同步自 welcome.ejs) */ .navbar-wrapper { position: fixed; top: 0; left: 0; width: 100%; background-color: #FFFFFF; height: 64px; display: flex; align-items: center; box-shadow: 0 1px 0 rgba(15, 23, 42, 0.06); z-index: 1000; } .navbar { height: 64px; display: flex; align-items: center; justify-content: space-between; max-width: 1440px; margin: 0 auto; width: 100%; padding: 0 24px; } .navbar-brand { display: flex; align-items: center; gap: 10px; } .navbar-logo { width: 227px; height: 56px; border-radius: 8px; background-image: url("../images/logo.svg"); background-size: contain; background-repeat: no-repeat; background-position: center; flex-shrink: 0; } .navbar-title { font-weight: 700; font-size: 24px; color: #0790D9; } .navbar-middle { display: flex; align-items: center; gap: 32px; margin-left: 32px; flex: 1; } .nav-link-group { display: flex; align-items: center; gap: 4px; font-size: 14px; } .nav-link { color: #0790D9; text-decoration: none; cursor: pointer; } .nav-label { color: #1E1A4C; } .nav-rank-icon { display: inline-block; width: 24px; height: 29px; background-image: url("./images/rank.png"); background-size: contain; background-repeat: no-repeat; vertical-align: middle; } .nav-rank-text { color: #1E1A4C; } .navbar-right { display: flex; align-items: center; gap: 16px; } .navbar-link { display: flex; align-items: center; gap: 4px; font-size: 14px; line-height: 1.43; color: #1E1A4C; text-decoration: none; cursor: pointer; white-space: nowrap; } .navbar-link-vip { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 0 4px; height: 22px; border-radius: 10px 0 10px 0; background-image: linear-gradient(90deg, rgba(3, 161, 234, 1) 0%, rgba(32, 91, 175, 1) 100%); font-family: "PingFang SC", system-ui, sans-serif; font-size: 9px; line-height: 1.56; color: #FFFFFF; } .navbar-link-vip-group:hover { transform: translateY(-3px) scale(1.08); box-shadow: 0 8px 25px rgba(3, 161, 234, 0.6); background: linear-gradient(90deg, #00B4FF, #205BAF); } .navbar-link-vip-group:active { transform: translateY(-1px) scale(0.95); } .navbar-link-vip-group .vip-text { font-size: 15px; letter-spacing: 0.8px; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } .navbar-link-vip-badge { background: #FFFFFF; color: #03A1EA; font-size: 11px; padding: 2px 8px; border-radius: 12px; font-weight: 900; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); } /* Activate Rights Button Style - Premium Gold Theme */ .navbar-btn-activate { background: linear-gradient(135deg, #FFC107 0%, #FF8F00 100%) !important; color: #FFFFFF !important; padding: 6px 12px 6px 16px; /* Adjusted padding for balance */ border-radius: 20px; box-shadow: 0 4px 12px rgba(255, 143, 0, 0.3); transition: all 0.3s ease; border: 1px solid rgba(255, 255, 255, 0.2); } .navbar-btn-activate:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(255, 143, 0, 0.4); } .navbar-btn-activate span { color: #FFFFFF; font-weight: 700; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } /* Inner VIP Badge - Clean White Pill */ .navbar-btn-activate .navbar-link-vip { background: #FFFFFF !important; color: #FF8F00 !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important; margin-left: 6px; border-radius: 10px; padding: 1px 8px; font-weight: 800; height: 18px; line-height: 16px; /* Center text vertically */ display: inline-flex; align-items: center; border: 0; } /* 呼吸灯效果 */ @keyframes breathing-pulse { 0% { box-shadow: 0 0 0 0 rgba(3, 161, 234, 0.6); } 70% { box-shadow: 0 0 0 12px rgba(3, 161, 234, 0); } 100% { box-shadow: 0 0 0 0 rgba(3, 161, 234, 0); } } /* 闪烁扫光效果 */ .navbar-link-vip-group::after { content: ''; position: absolute; top: -50%; left: -150%; width: 200%; height: 200%; background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.4), transparent); transform: rotate(45deg); animation: shine 4s infinite linear; } @keyframes shine { 0% { left: -150%; } 30% { left: 150%; } 100% { left: 150%; } } .navbar-account { display: flex; align-items: center; gap: 4px; } .navbar-avatar { width: 40px; height: 40px; border-radius: 50%; background-image: url("../images/avatar.png"); background-size: cover; } .navbar-logout { font-size: 14px; color: #1E1A4C; cursor: pointer; } .nav-inner { height: 64px; max-width: 1200px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 0 24px } .brand { display: flex; align-items: center; gap: 12px; min-width: 160px } .brand-icon { width: 32px; height: 32px; border-radius: 8px; display: block } .brand-text { font-size: 22px; font-weight: 700; letter-spacing: .2px } .nav-list { display: flex; align-items: center; gap: 28px; flex: 1; justify-content: center; min-width: 260px } .nav-actions { display: flex; align-items: center; gap: 20px; justify-content: flex-end; min-width: 320px; } /* ============================================================ MODAL SYSTEM (Synchronized from welcome.ejs) ============================================================ */ .modal-overlay { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; padding: 24px; background: rgba(0, 0, 0, 0.45); z-index: 9999; display: none; } /* Base Modal Container */ .modal-basic-info, .modal-password, .modal-activate, .modal-rank-intro { background: #FFFFFF; border-radius: 10px; box-shadow: 0px 34px 44px -20px rgba(185, 206, 234, 0.25); padding: 32px; display: flex; flex-direction: column; gap: 16px; max-width: calc(100vw - 48px); } .modal-basic-info { width: 720px; } .modal-password { width: 450px; align-items: center; gap: 32px; } .modal-activate { width: 705px; gap: 32px; align-items: flex-end; } .modal-rank-intro { width: 1128px; max-width: calc(100vw - 32px); align-items: center; gap: 24px; } .modal-header { display: flex; align-items: center; gap: 16px; width: 100%; } .modal-title { flex: 1; font-family: Nunito, system-ui, sans-serif; font-weight: 800; font-size: 36px; line-height: 49.1px; color: #020F30; text-align: center; } .modal-close { width: 32px; height: 32px; border: 0; background: transparent; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; } .modal-body { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 24px; } /* Form Styles */ .field { width: 100%; display: flex; flex-direction: column; gap: 15px; } .field-label { font-family: Inter, system-ui, sans-serif; font-weight: 500; font-size: 16px; color: #000000; } .input-gradient { width: 100%; border-radius: 8px; padding: 1px; background: linear-gradient(164deg, rgba(226, 230, 255, 1) 24%, rgba(255, 234, 227, 1) 95%); } .field-input { width: 100%; height: 44px; border-radius: 7px; border: 0; padding: 0 12px; background: #F5F6F9; font-family: "PingFang SC", system-ui, sans-serif; font-size: 14px; color: #0F172A; outline: none; } .modal-primary-btn { border: 0; cursor: pointer; border-radius: 32px; background: linear-gradient(90deg, #03a1ea 0%, #205baf 100%); color: #FFFFFF; padding: 10px 18px; height: 44px; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; white-space: nowrap; } /* Activation Page Specifics */ .modal-activate .modal-content { display: flex; gap: 32px; } .modal-left { width: 330px; display: flex; flex-direction: column; gap: 32px; } .modal-qr { width: 246px; height: 246px; display: block; } /* Rank Specifics */ .rank-row { width: 100%; display: flex; justify-content: center; flex-wrap: wrap; gap: 11px; } .rank-card { width: 200px; border-radius: 9px; background: #F2F2F5; display: flex; flex-direction: column; align-items: center; } .rank-icon { width: 128px; height: 155px; object-fit: contain; } .rank-content { width: 100%; display: flex; flex-direction: column; gap: 24px; padding: 12px 16px; } .nav-item { font-size: 14px; line-height: 22px; color: #1E1A4C; text-decoration: none; display: flex; align-items: center; gap: 8px; white-space: nowrap } .rank { display: flex; align-items: center; gap: 8px; color: #1E1A4C; font-size: 14px; line-height: 22px; white-space: nowrap } .rank-icon { width: 18px; height: 18px; display: block } .vip-badge { background: var(--vip); color: #fff; border-radius: 10px 0 10px 0; font-size: 12px; line-height: 18px; font-weight: 700; padding: 1px 6px } .logout { border: 0; background: #F2F3F5; border-radius: 32px; padding: 4px 12px 4px 4px; display: flex; align-items: center; gap: 10px; cursor: pointer } .logout-avatar { width: 32px; height: 32px; border-radius: 32px; display: block; object-fit: cover } .logout-text { font-size: 14px; line-height: 22px; color: var(--muted) } .main { position: relative; z-index: 1; flex: 1; display: flex; justify-content: center; align-items: flex-start; padding: 100px 24px 56px; /* 4vw top padding to clear the decoration visual slightly */ margin-top: 0; } /* Glassmorphism Container */ .glass-container { flex: 1; display: flex; flex-direction: column; /* Center the container and restrict width */ width: 94%; max-width: 1440px; margin: 64px auto 0; /* No extra gap top/bottom */ border: 1px solid rgba(255, 255, 255, 0.8); box-shadow: 0 16px 100px 30px rgba(31, 38, 135, 0.12); position: relative; z-index: 1; overflow: hidden; } /* Hide footer line in glass mode */ .footer-line { display: none; } .main-inner { max-width: 1200px; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 71px } .level-card { width: min(11500px, 100%); background: #fff; border-radius: 10px; box-shadow: 0 34px 44px -20px rgba(185, 206, 234, .25); padding: 32px; display: flex; flex-direction: column; gap: 48px } .level-card-top { display: flex; align-items: center; gap: 24px } /* Large Screen Enhancements (Balanced for Elegance) */ @media (min-width: 1440px) { .level-card { padding: 40px 64px; gap: 40px; box-shadow: 0 20px 60px -12px rgba(185, 206, 234, 0.3), 0 8px 30px -10px rgba(185, 206, 234, 0.15); transition: transform 0.3s ease, box-shadow 0.3s ease; } .level-card:hover { transform: translateY(-6px); box-shadow: 0 30px 80px -15px rgba(185, 206, 234, 0.4), 0 15px 40px -15px rgba(185, 206, 234, 0.2); } .level-card-top { gap: 32px; } .level-card-cover { width: 320px; height: 160px; border-radius: 12px; } .level-card-head { font-size: 48px; margin-bottom: 4px; letter-spacing: -1px; } .level-card-sub { font-size: 20px; opacity: 0.8; } /* Fix to prevent bottom content from "climbing up" too much */ .main-inner { gap: 100px; /* Increased from 71px */ } .pill { height: 56px; padding: 0 32px; font-size: 16px; border-radius: 32px; } .pill-active { font-size: 22px; font-weight: 700; padding: 0 48px; } /* Moderate grid scaling */ .levels-row { grid-template-columns: repeat(10, 88px); gap: 32px; } .level-item, .level-btn, .level-bg { width: 88px !important; } .level-btn { height: 88px !important; } .level-number { font-size: 34px; } .level-title { width: 88px; font-size: 15px; } } .level-card-cover { width: 100px; height: 142px; border-radius: 8px; display: block; object-fit: cover; flex: 0 0 auto } .level-card-text { flex: 1; display: flex; flex-direction: column; gap: 14px; min-width: 0 } .level-card-head { font-family: Nunito, "Segoe UI", Roboto, Helvetica, Arial, "PingFang SC", "Microsoft YaHei", sans-serif; font-weight: 800; font-size: 36px; line-height: 1.364; background: linear-gradient(90deg, var(--p1), var(--p2)); -webkit-background-clip: text; background-clip: text; color: transparent } .lang-name { display: inline-flex; align-items: center; gap: 6px; font-size: 16px; font-weight: 600; color: #03A1EA; font-family: "PingFang SC", system-ui, sans-serif; letter-spacing: 0.5px; margin-top: 0; } .lang-icon { width: 20px; height: 20px; object-fit: contain; } .level-card-sub { font-family: "PingFang SC", "Microsoft YaHei", sans-serif; font-weight: 400; font-size: 16px; line-height: 30px; color: rgba(131, 131, 131, .9) } .level-card-desc { font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif; font-weight: 500; font-size: 16px; line-height: 1.210227; color: #373360 } .level-card-actions { display: flex; align-items: center; justify-content: flex-start; gap: 4px; flex-wrap: wrap } .pill { height: 48px; padding: 8px 24px; border: 0; border-radius: 32px; background: #F2F2F5; color: #767392; font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; font-weight: 400; font-size: 16px; line-height: 24px; cursor: pointer } .pill-active { /* width: 108px; */ border-radius: 64px; background: linear-gradient(90deg, var(--p1), var(--p2)); color: #fff; font-size: 20px; line-height: 24px } .pill-more { height: 24px; padding: 6px 8px; border: 0; border-radius: 32px; background: transparent; color: #767392; display: flex; align-items: center; justify-content: center; cursor: pointer } .levels { display: flex; flex-direction: column; gap: 48px } .levels-row { display: grid; grid-template-columns: repeat(10, 80px); gap: 40px; justify-content: center } .level-item { width: 80px; display: flex; flex-direction: column; align-items: center; gap: 15px } .level-btn { width: 80px; height: 80px; border: 0; background: transparent; padding: 0; position: relative; cursor: pointer } .level-bg { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 80px; height: auto; display: block } .level-number { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); font-weight: 800; font-size: 32px; line-height: 1; color: #fff; text-shadow: 0 1px 4px rgba(0, 0, 0, .25) } .level-title { width: 80px; text-align: center; font-size: 14px; line-height: 22px; color: var(--text) } .footer { background: transparent; padding: 0 24px 22px } .footer-line { height: 1px; background: var(--line); max-width: 1200px; margin: 0 auto 12px } .footer-text { max-width: 1200px; margin: 0 auto; text-align: center; color: rgba(0, 0, 0, .45); font-size: 12px; line-height: 18px; white-space: normal; } @media (max-width:1280px) { .nav-inner { padding: 0 24px } } @media (max-width:1024px) { .nav-inner { height: auto; padding: 16px 16px; flex-wrap: wrap; justify-content: center } .brand { min-width: auto } .nav-list { justify-content: center; flex-wrap: wrap } .nav-actions { min-width: auto; flex-wrap: wrap; justify-content: center } .level-card { padding: 24px; gap: 28px } .level-card-top { flex-direction: column; align-items: flex-start } .level-card-cover { /* width: 100%; max-width: 360px; height: auto; */ aspect-ratio: 2/1 } .level-card-actions { justify-content: flex-start } .levels-row { grid-template-columns: repeat(5, 80px); gap: 28px } } @media (max-width:520px) { .levels-row { grid-template-columns: repeat(4, 80px); gap: 22px } .main { padding: 56px 16px 44px } } /* ============================================================ ACTIVATION MODAL REFINEMENTS (Synchronized from welcome.ejs) ============================================================ */ .modal-activate { width: 705px; max-width: calc(100vw - 48px); background: #FFFFFF; border-radius: 10px; box-shadow: 0px 34px 44px -20px rgba(185, 206, 234, 0.25); padding: 32px; display: flex; flex-direction: column; align-items: flex-end; gap: 32px; } .modal-header-spacer { width: 32px; height: 32px; flex-shrink: 0; } .modal-activate .modal-title { width: 572px; max-width: calc(100% - 32px); font-family: Nunito, system-ui, sans-serif; font-weight: 800; font-size: 36px; line-height: 49.1px; text-align: center; color: #020F30; } .modal-activate .modal-content { display: flex; gap: 32px; width: 100%; } .modal-left { width: 330px; display: flex; flex-direction: column; justify-content: space-between; gap: 32px; } .modal-left-top { display: flex; flex-direction: column; gap: 16px; } .modal-greeting { display: flex; flex-direction: column; align-items: center; gap: 19px; color: #475569; font-family: Inter, system-ui, sans-serif; font-weight: 500; font-size: 16px; line-height: 19.36px; text-align: center; white-space: pre-line; margin-bottom: 0; } .modal-field { display: flex; flex-direction: column; gap: 15px; width: 330px; } .field-input-wrap { position: relative; border-radius: 8px; padding: 1px; background: linear-gradient(164deg, rgba(226, 230, 255, 1) 24%, rgba(255, 234, 227, 1) 95%); } .modal-left-actions { display: flex; align-items: center; justify-content: center; gap: 32px; margin-top: 0; } .modal-submit { width: 280px; height: 48px; border: 0; border-radius: 32px; background: linear-gradient(90deg, rgba(3, 161, 234, 1) 0%, rgba(32, 91, 175, 1) 100%); color: #FFFFFF; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-family: "Noto Sans SC", system-ui, sans-serif; font-weight: 400; font-size: 14px; line-height: 20px; white-space: nowrap; } .modal-try { border: 0; background: transparent; padding: 0; cursor: pointer; font-family: Inter, system-ui, sans-serif; font-weight: 500; font-size: 16px; line-height: 19.36px; color: rgba(0, 0, 0, 0.7); white-space: nowrap; } .modal-divider { width: 1px; height: 281px; background: #E7E7E7; flex-shrink: 0; } .modal-right { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; } .modal-right-title { font-family: Inter, system-ui, sans-serif; font-weight: 500; font-size: 16px; line-height: 19.36px; color: #475569; white-space: nowrap; } .modal-qr { width: 246px; height: 246px; display: block; } @media (max-width: 768px) { .modal-activate { width: auto; max-width: calc(100vw - 32px); align-items: stretch; padding: 20px 16px; gap: 20px; } .modal-activate .modal-title { width: auto; flex: 1; font-size: 28px; line-height: 38px; } .modal-activate .modal-content { flex-direction: column; align-items: center; gap: 20px; } .modal-divider { width: 100%; height: 1px; } .modal-left { width: 100%; max-width: 330px; } } /* Update footer styles to match welcome.ejs structure */ .footer-inner { max-width: 1040px; margin: 0 auto; border-top: 1px solid rgba(148, 163, 184, 0.5); padding-top: 10px; } .footer-text span { margin: 0 16px; display: inline-block; color: rgba(0, 0, 0, .45); } /* Toast 容器 */ #toast-container { position: fixed; top: 10%; left: 50%; transform: translate(-50%, -50%); z-index: 100002; /* 确保在最上层 */ display: flex; flex-direction: column; align-items: center; gap: 10px; pointer-events: none; /* 允许点击穿透 */ } /* 单个 Toast */ .toast { min-width: 250px; max-width: 350px; padding: 15px 20px; border-radius: 50px; color: #fff; font-family: Arial, sans-serif; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); opacity: 0.9; transition: opacity 0.5s ease, transform 0.5s ease; display: flex; align-items: center; justify-content: center; /* 居中文本 */ text-align: center; /* 居中文本 */ pointer-events: auto; /* 允许 Toast 接收事件 */ } /* 成功 Toast */ .toast.success { box-shadow: 5px 5px 20px 0 rgba(0, 0, 0, 0.4); background-image: linear-gradient(#00ff00, #009245); } /* 错误 Toast */ .toast.error { background-image: linear-gradient(#ff6474, #e01c4c); box-shadow: 5px 5px 20px 0 rgba(0, 0, 0, 0.4); } /* 信息 Toast */ .toast.info { background-image: linear-gradient(#31cdee, #0962a4); box-shadow: 5px 5px 20px 0 rgba(0, 0, 0, 0.4); } /* 淡出效果 */ .toast.fade-out { opacity: 0; transform: translateY(-20px); transition: opacity 0.5s ease, transform 0.5s ease; }