/* 异度星球 - 温暖自然风格 */ .root { min-height: 100vh; background: linear-gradient(180deg, #faf9f7 0%, #f5f3f0 50%, #ebe8e4 100%); color: #292524; } @media (max-width: 640px) { .root { background: linear-gradient(180deg, #faf9f7 0%, #f5f3f0 100%); color: #292524; } } /* Header */ .header { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.5rem; max-width: 1200px; margin: 0 auto; } @media (max-width: 640px) { .header { padding: 0.75rem 1rem; } .logo { font-size: 1.1rem; } } .logo { font-size: 1.25rem; font-weight: 700; color: #292524; text-decoration: none; } .logo:hover { color: var(--accent); } .nav { display: flex; align-items: center; gap: 0.75rem; } .nav a { font-size: 0.9rem; color: #78716c; text-decoration: none; } .nav a:hover { color: var(--accent); } /* Loading */ .loading { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; background: #faf9f7; } .loadingSpinner { width: 40px; height: 40px; border: 3px solid #e7e5e4; border-top-color: var(--accent); border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Main */ .main { max-width: 1200px; margin: 0 auto; padding: 0 1.5rem 2rem; } @media (max-width: 640px) { .main { padding: 0 1rem 1.5rem; } } /* Hero */ .hero { text-align: center; padding: 2rem 0 0.5rem; } @media (max-width: 640px) { .hero { padding: 1.5rem 0 0.5rem; } } .heroBadge { display: inline-block; font-size: 0.875rem; color: #78716c; background: rgba(255, 255, 255, 0.9); padding: 0.35rem 0.85rem; border-radius: 9999px; margin-bottom: 1rem; border: 1px solid #e7e5e4; } .heroTitle { font-size: clamp(2.5rem, 6vw, 4rem); font-weight: 700; color: #292524; margin: 0 0 0.5rem; letter-spacing: -0.01em; line-height: 1.2; } @media (max-width: 640px) { .heroTitle { font-size: clamp(2rem, 10vw, 2.5rem); color: #292524; } .heroBadge { background: rgba(255, 255, 255, 0.95); border-color: #e7e5e4; color: #78716c; } .heroSubtitle { color: #57534e; } } .heroSubtitle { font-size: 1.125rem; color: #57534e; max-width: 540px; margin: 0 auto 0.25rem; line-height: 1.6; } .heroCta { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; align-items: center; } /* Buttons */ .btnPrimary { display: inline-flex; align-items: center; justify-content: center; padding: 0.75rem 1.75rem; font-size: 1rem; font-weight: 600; color: var(--accent-foreground); background: var(--accent); border: none; border-radius: 12px; cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); transition: opacity 0.2s, transform 0.15s; } .btnPrimary:hover { opacity: 0.95; transform: translateY(-1px); } .btnSecondary { display: inline-flex; align-items: center; padding: 0.75rem 1.5rem; font-size: 0.95rem; font-weight: 500; color: #57534e; background: white; border: 1px solid #e7e5e4; border-radius: 12px; text-decoration: none; transition: border-color 0.15s, color 0.15s; } .btnSecondary:hover { border-color: var(--accent); color: var(--accent); } .btnLarge { padding: 1rem 2.5rem; font-size: 1.1rem; } /* Stats */ .stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; padding: 2rem 0; } @media (min-width: 640px) { .stats { grid-template-columns: repeat(4, 1fr); } } .stat { text-align: center; padding: 1.25rem; background: white; border-radius: 12px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); border: 1px solid #e7e5e4; } .statValue { display: block; font-size: 1.5rem; font-weight: 700; color: var(--accent); margin-bottom: 0.25rem; } .statLabel { font-size: 0.875rem; color: #78716c; } /* Sections */ .section { padding: 1.5rem 0; } @media (max-width: 640px) { .section { padding: 1rem 0; } } .sectionTightTop { padding-top: 0.5rem; } .section h2 { font-size: 1.75rem; font-weight: 700; color: #292524; margin: 0 0 0.5rem; text-align: center; } @media (max-width: 640px) { .section h2 { font-size: 1.35rem; color: #292524; } .sectionDesc { color: #57534e; } } .sectionDesc { text-align: center; color: #78716c; max-width: 600px; margin: 0 auto 1rem; line-height: 1.6; } /* Features */ .features { display: grid; grid-template-columns: 1fr; gap: 1rem; margin-top: 0; } @media (min-width: 768px) { .features { grid-template-columns: repeat(3, 1fr); } } .featureCard { padding: 1.25rem; background: white; border-radius: 12px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); border: 1px solid #e7e5e4; transition: box-shadow 0.2s, transform 0.2s; } .featureCard:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); transform: translateY(-2px); } @media (max-width: 640px) { .featureCard { background: white; border-color: #e7e5e4; border-radius: 12px; padding: 1rem; } .featureCard h3 { color: #292524; font-size: 1rem; } .featureCard p { color: #57534e; font-size: 0.85rem; } } .featureIcon { font-size: 2rem; display: block; margin-bottom: 0.75rem; } .featureCard h3 { font-size: 1.1rem; font-weight: 600; color: #292524; margin: 0 0 0.5rem; } .featureCard p { font-size: 0.9rem; color: #57534e; margin: 0; line-height: 1.5; } /* Unlock 内容 - 6 项可视化 */ .unlockGrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; margin-bottom: 0; } @media (min-width: 640px) { .unlockGrid { grid-template-columns: repeat(3, 1fr); } } @media (min-width: 900px) { .unlockGrid { grid-template-columns: repeat(6, 1fr); } } @media (max-width: 640px) { .unlockGrid { grid-template-columns: repeat(2, 1fr); gap: 0.5rem; } } .unlockCard { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; padding: 1rem 0.75rem; background: white; border-radius: 14px; border: 2px dashed #d6d3d1; text-decoration: none; color: inherit; cursor: pointer; transition: all 0.25s ease; font-family: inherit; text-align: center; } .unlockCard:hover { border-color: var(--accent); border-style: solid; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); transform: translateY(-2px); } .unlockCardDisabled { pointer-events: none; cursor: default; } .unlockCardDisabled:hover { border-color: #d6d3d1; border-style: dashed; box-shadow: none; transform: none; } .unlockIcon { font-size: 2.25rem; line-height: 1; } .unlockTitle { font-size: 1rem; font-weight: 700; color: #292524; } .unlockDesc { font-size: 0.8rem; color: #57534e; line-height: 1.3; } @media (max-width: 640px) { .unlockCard { background: white; border-color: #d6d3d1; border-style: dashed; padding: 0.75rem 0.5rem; border-radius: 10px; transition: all 0.3s ease; } .unlockCard:hover { border-color: var(--accent); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); } .unlockIcon { font-size: 1.75rem; } .unlockTitle { font-size: 0.9rem; color: #292524; } .unlockDesc { font-size: 0.7rem; color: #57534e; } } .unlockCta { text-align: center; } .unlockCta .btnPrimary { padding: 1rem 2rem; font-size: 1.1rem; } /* CTA Section */ .sectionCta { padding: 1rem 0 2rem; } @media (max-width: 640px) { .sectionCta { padding: 0.75rem 0 1.5rem; } } .ctaCard { max-width: 560px; margin: 0 auto; padding: 1.5rem; background: white; border-radius: 16px; text-align: center; color: #292524; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06); border: 1px solid #e7e5e4; } .ctaCard h2 { color: #292524; font-size: 1.35rem; margin-bottom: 0.5rem; } .ctaCard p { font-size: 0.9rem; color: #57534e; margin: 0 0 1rem; } .ctaNote { font-size: 0.8rem !important; color: #78716c !important; margin-bottom: 1.5rem !important; } .ctaCard .btnPrimary { background: #059669; color: white; } .ctaCard .btnPrimary:hover { background: #047857; } @media (max-width: 640px) { .ctaCard { padding: 1.25rem 1rem; border-radius: 14px; } .ctaCard h2 { font-size: 1.15rem; } .ctaCard p { font-size: 0.85rem; } } /* Tools */ .tools { padding: 2rem 0; } .tools h2 { font-size: 1.25rem; font-weight: 600; color: #292524; text-align: center; margin: 0 0 1.5rem; } .toolsGrid { display: flex; flex-wrap: wrap; gap: 1.5rem; justify-content: center; } .toolItem { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; padding: 1rem 1.5rem; background: white; border-radius: 12px; border: 1px solid #e7e5e4; font-size: 0.9rem; color: #57534e; } /* VIP Success */ .vipSuccess { min-height: 60vh; display: flex; align-items: center; justify-content: center; padding: 3rem 1.5rem; } @media (max-width: 640px) { .vipSuccess { min-height: calc(100vh - 60px); padding: 1.5rem 1rem; align-items: flex-start; padding-top: 2rem; } } .vipSuccessCard { max-width: 420px; width: 100%; padding: 2.5rem; background: white; border-radius: 16px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08); text-align: center; } @media (max-width: 640px) { .vipSuccessCard { max-width: 100%; padding: 1.5rem 1.25rem; background: white; border: 1px solid #e7e5e4; border-radius: 16px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06); } } .vipSuccessIcon { font-size: 3rem; margin-bottom: 1rem; } @media (max-width: 640px) { .vipSuccessIcon { font-size: 2.5rem; } } .vipSuccessCard h1 { font-size: 1.5rem; font-weight: 700; color: #292524; margin: 0 0 0.5rem; } @media (max-width: 640px) { .vipSuccessCard h1 { font-size: 1.35rem; color: #292524; } } .vipSuccessDesc { font-size: 0.95rem; color: #57534e; margin: 0 0 1.5rem; } @media (max-width: 640px) { .vipSuccessDesc { color: #57534e; font-size: 0.9rem; margin-bottom: 1.25rem; } } .vipCode { text-align: left; padding: 1.25rem; background: #faf9f7; border-radius: 12px; border: 1px solid #e7e5e4; } @media (max-width: 640px) { .vipCode { padding: 1rem; background: #faf9f7; border: 1px solid #e7e5e4; border-radius: 12px; } } .vipCodeRow { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; font-size: 0.9rem; } .vipCodeRow:last-of-type { margin-bottom: 1rem; } @media (max-width: 640px) { .vipCodeRow { flex-wrap: wrap; gap: 0.5rem; margin-bottom: 0.6rem; font-size: 0.85rem; } } .vipCodeRow span { color: #57534e; min-width: 4rem; } @media (max-width: 640px) { .vipCodeRow span { color: #57534e; min-width: 3.5rem; width: 100%; font-size: 0.8rem; } } .vipCodeRow code { flex: 1; font-family: ui-sans-serif, system-ui, sans-serif; background: white; padding: 0.25rem 0.5rem; border-radius: 6px; font-size: 0.85rem; border: 1px solid #e7e5e4; } @media (max-width: 640px) { .vipCodeRow code { flex: 1 1 100%; background: white; color: #292524; padding: 0.4rem 0.6rem; font-size: 0.8rem; border: 1px solid #e7e5e4; } } .vipCodeRow button { padding: 0.25rem 0.75rem; font-size: 0.8rem; background: var(--accent); color: var(--accent-foreground); border: none; border-radius: 8px; cursor: pointer; } .vipCodeRow button:hover { opacity: 0.9; } @media (max-width: 640px) { .vipCodeRow button { padding: 0.35rem 0.85rem; background: var(--accent); border-radius: 8px; } } .vipCta { display: block; text-align: center; margin-top: 1rem; padding: 0.75rem; background: var(--accent); color: var(--accent-foreground); text-decoration: none; font-weight: 600; border-radius: 10px; transition: opacity 0.15s; } .vipCta:hover { opacity: 0.95; } @media (max-width: 640px) { .vipCta { margin-top: 1rem; padding: 0.9rem 1rem; background: var(--accent); border-radius: 12px; font-size: 1rem; } .vipCta:hover { opacity: 0.95; } } .vipTip { font-size: 0.8rem; color: #78716c; margin: 1rem 0 0 !important; } @media (max-width: 640px) { .vipTip { font-size: 0.75rem; color: #78716c; margin-top: 0.75rem !important; } } /* Footer */ .footer { text-align: center; padding: 1.25rem 0; border-top: 1px solid #e7e5e4; } .footer p { font-size: 0.9rem; color: #78716c; margin: 0 0 0.5rem; } .footer a { font-size: 0.85rem; color: var(--accent); text-decoration: none; } .footer a:hover { text-decoration: underline; } /* 夜间模式 - :global(.dark) 匹配 html 上的 class */ :global(.dark) .root { background: var(--background); color: var(--foreground); } :global(.dark) .logo { color: var(--foreground); } :global(.dark) .logo:hover { color: var(--accent); } :global(.dark) .nav a { color: var(--muted-foreground); } :global(.dark) .nav a:hover { color: var(--accent); } :global(.dark) .loading { background: var(--background); color: var(--foreground); } :global(.dark) .loadingSpinner { border-color: var(--border); border-top-color: var(--accent); } :global(.dark) .heroBadge { color: var(--muted-foreground); background: var(--card); border-color: var(--border); } :global(.dark) .heroTitle { color: var(--foreground); } :global(.dark) .heroSubtitle { color: var(--muted-foreground); } :global(.dark) .section h2 { color: var(--foreground); } :global(.dark) .sectionDesc { color: var(--muted-foreground); } :global(.dark) .stat { background: var(--card); border-color: var(--border); } :global(.dark) .statValue { color: var(--accent); } :global(.dark) .statLabel { color: var(--muted-foreground); } :global(.dark) .featureCard { background: var(--card); border-color: var(--border); } :global(.dark) .featureCard h3 { color: var(--foreground); } :global(.dark) .featureCard p { color: var(--muted-foreground); } :global(.dark) .unlockCard { background: var(--card); border-color: var(--border); } :global(.dark) .unlockCard:hover { border-color: var(--accent); } :global(.dark) .unlockTitle { color: var(--foreground); } :global(.dark) .unlockDesc { color: var(--muted-foreground); } :global(.dark) .toolItem { background: var(--card); border-color: var(--border); color: var(--muted-foreground); } :global(.dark) .tools h2 { color: var(--foreground); } :global(.dark) .vipSuccessCard { background: var(--card); } :global(.dark) .vipSuccessCard h1 { color: var(--foreground); } :global(.dark) .vipSuccessDesc { color: var(--muted-foreground); } :global(.dark) .vipCode { background: var(--muted); border-color: var(--border); } :global(.dark) .vipCodeRow span { color: var(--muted-foreground); } :global(.dark) .vipCodeRow code { background: var(--background); } :global(.dark) .vipTip { color: var(--muted-foreground); } :global(.dark) .footer { border-color: var(--border); } :global(.dark) .footer p { color: var(--muted-foreground); } :global(.dark) .footer a { color: var(--accent); }