/* 公开官网布局:导航、首屏、产品卡片、基础设施展示与联系页脚。 */ /* 导入方:app/layouts/official-site.vue。 */ .official-site { min-height: 100vh; color: var(--p-text-color, #334155); background: var(--console-page-bg, #f8fafc); --official-primary: var(--p-primary-color, #0052d9); --official-accent: #eff6ff; } .official-site a { color: inherit; text-decoration: none; } /* 滚动时保持此区域可见;定位偏移需与页面固定顶栏及父级滚动容器一起核对。 */ .official-header { z-index: 20; border-bottom: 1px solid var(--console-panel-border, #e2e8f0); background: color-mix( in srgb, var(--p-content-background, #fff) 92%, transparent ); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); position: sticky; top: 0; } .official-header-inner { align-items: center; gap: 32px; width: min(1200px, 100% - 36px); min-height: 66px; margin: 0 auto; display: flex; } .official-brand { align-items: center; gap: 10px; min-width: 0; display: inline-flex; } .official-brand-mark { background: color-mix( in srgb, var(--official-primary) 11%, var(--p-content-background) ); border-radius: 5px; justify-content: center; align-items: flex-end; gap: 2px; width: 30px; height: 30px; padding: 6px; display: inline-flex; } .official-brand-mark span { background: var(--official-primary); border-radius: 2px 2px 1px 1px; width: 4px; } .official-brand-mark span:first-child { opacity: 0.6; height: 8px; } .official-brand-mark span:nth-child(2) { height: 14px; } .official-brand-mark span:nth-child(3) { opacity: 0.8; height: 10px; } .official-brand-image { -o-object-fit: contain; object-fit: contain; width: auto; max-width: 136px; max-height: 36px; display: block; } .official-brand-copy { flex-direction: column; min-width: 0; line-height: 1.2; display: flex; } .official-brand-copy strong { color: var(--p-text-color); text-overflow: ellipsis; white-space: nowrap; font-size: 1rem; font-weight: 650; overflow: hidden; } .official-brand-copy small { color: var(--p-text-muted-color); white-space: nowrap; margin-top: 3px; font-size: 0.75rem; } .official-nav { flex: 1; justify-content: center; align-items: center; gap: 27px; display: flex; } .official-mobile-nav a, .official-nav a { color: var(--p-text-muted-color); font-size: 0.92rem; transition: color 0.18s; } .official-mobile-nav a:hover, .official-nav a:hover { color: var(--official-primary); } .official-header-actions { align-items: center; gap: 10px; display: flex; } .official-header-login { border: 1px solid var(--console-panel-border); background: var(--p-content-background); color: var(--p-text-color); white-space: nowrap; border-radius: 4px; align-items: center; gap: 7px; padding: 9px 13px; font-size: 0.88rem; transition: border-color 0.18s, color 0.18s; display: inline-flex; } .official-header-login i { color: var(--official-primary); font-size: 0.78rem; } .official-header-login:hover { border-color: var(--official-primary); color: var(--official-primary); } .official-menu-toggle { border: 1px solid var(--console-panel-border); background: var(--p-content-background); width: 38px; height: 38px; color: var(--p-text-color); cursor: pointer; border-radius: 4px; display: none; } .official-mobile-nav { display: none; } .official-main { width: min(1200px, 100% - 36px); margin: 0 auto; } .official-page { padding: 35px 0 50px; } .official-hero-top { grid-template-columns: 1.05fr 0.95fr; align-items: end; gap: 56px; padding: 36px 0 28px; display: grid; } .official-eyebrow, .official-section-eyebrow { color: var(--official-primary); align-items: center; gap: 8px; font-size: 0.85rem; font-weight: 600; display: inline-flex; } .official-eyebrow { border: 1px solid color-mix(in srgb, var(--official-primary) 18%, var(--console-panel-border)); background: color-mix( in srgb, var(--official-primary) 5%, var(--p-content-background) ); border-radius: 20px; padding: 6px 10px; } .official-eyebrow > span { background: var(--official-primary); width: 7px; height: 7px; box-shadow: 0 0 0 3px color-mix(in srgb, var(--official-primary) 13%, transparent); border-radius: 50%; } .official-hero-heading h1 { max-width: 700px; color: var(--p-text-color); letter-spacing: -0.055em; white-space: pre-line; margin: 21px 0 9px; font-size: clamp(2.15rem, 4.25vw, 3.7rem); font-weight: 700; line-height: 1.18; } .official-hero-heading h2 { color: var(--p-text-muted-color); margin: 0; font-size: clamp(1.1rem, 1.7vw, 1.42rem); font-weight: 500; } .official-hero-intro { padding: 0 0 3px; } .official-hero-intro > p { max-width: 500px; color: var(--p-text-muted-color); margin: 0 0 18px; font-size: 1rem; line-height: 1.8; } .official-hero-features { flex-wrap: wrap; gap: 9px 18px; margin-bottom: 22px; display: flex; } .official-hero-features span { color: var(--p-text-color); align-items: center; gap: 7px; font-size: 0.88rem; display: inline-flex; } .official-hero-features i { color: var(--official-primary); font-size: 0.82rem; } .official-contact-actions, .official-hero-actions { flex-wrap: wrap; align-items: center; gap: 10px; display: flex; } .official-button { border: 1px solid #0000; border-radius: 4px; justify-content: center; align-items: center; gap: 9px; min-height: 38px; padding: 8px 13px; font-size: 0.91rem; font-weight: 500; line-height: 1.3; transition: background 0.18s, border-color 0.18s, color 0.18s, transform 0.18s; display: inline-flex; } .official-button:hover { transform: translateY(-1px); } .official-button.primary { background: var(--official-primary); color: var(--p-primary-contrast-color, #fff); box-shadow: 0 2px 5px color-mix(in srgb, var(--official-primary) 20%, transparent); } .official-button.primary:hover { filter: brightness(0.96); } .official-button.secondary { border-color: var(--console-panel-border); background: var(--p-content-background); color: var(--p-text-color); } .official-button.secondary:hover { border-color: color-mix( in srgb, var(--official-primary) 40%, var(--console-panel-border) ); color: var(--official-primary); } .official-button i { font-size: 0.8rem; } /* 首屏装饰性网络图由CSS元素组成,与真实资源监控数据无关。 */ .official-hero-visual { border: 1px solid color-mix(in srgb, var(--official-primary) 17%, var(--console-panel-border)); background: linear-gradient( 122deg, color-mix(in srgb, var(--official-accent) 86%, var(--p-content-background)) 0, var(--p-content-background) 57%, color-mix(in srgb, var(--official-primary) 10%, var(--p-content-background)) 100% ); min-height: 315px; box-shadow: var(--console-panel-shadow); border-radius: 6px; position: relative; overflow: hidden; } .official-visual-grid { opacity: 0.48; background-image: linear-gradient( to right, color-mix(in srgb, var(--official-primary) 11%, transparent) 1px, transparent 1px ), linear-gradient( to bottom, color-mix(in srgb, var(--official-primary) 11%, transparent) 1px, transparent 1px ); background-size: 34px 34px; position: absolute; inset: 0; -webkit-mask-image: linear-gradient(110deg, #000 5%, #0000 83%); mask-image: linear-gradient(110deg, #000 5%, #0000 83%); } .official-visual-orbit { border: 1px solid color-mix(in srgb, var(--official-primary) 18%, transparent); border-radius: 50%; width: 290px; height: 290px; position: absolute; } .orbit-one { top: 11px; left: 8%; } .orbit-one, .orbit-two { transform: scaleX(1.45); } .orbit-two { top: 54px; left: 14%; } .official-visual-network { position: absolute; inset: 0; } .network-line { transform-origin: 0; background: linear-gradient( 90deg, transparent, color-mix(in srgb, var(--official-primary) 55%, #fff), transparent ); width: 47%; height: 1px; position: absolute; top: 50%; left: 14%; } .line-one { transform: rotate(-18deg); } .line-two { transform: rotate(19deg); } .network-node { border: 2px solid var(--p-content-background); background: var(--official-primary); width: 8px; height: 8px; box-shadow: 0 0 0 4px color-mix(in srgb, var(--official-primary) 14%, transparent); border-radius: 50%; position: absolute; } .node-one { top: 26%; left: 23%; } .node-two { top: 68%; left: 33%; } .node-three { top: 37%; left: 53%; } .node-four { top: 62%; left: 62%; } .official-art-caption { color: color-mix(in srgb, var(--p-text-color) 74%, transparent); align-items: center; gap: 9px; font-size: 0.84rem; display: inline-flex; position: absolute; bottom: 23px; left: 25px; } .official-art-pulse { background: var(--official-primary); border-radius: 50%; width: 7px; height: 7px; } .official-hero-stat { width: min(265px, 40%); min-height: 215px; padding: 20px; position: absolute; top: 28px; right: 28px; } .official-stat-kicker { color: var(--p-text-muted-color); font-size: 0.82rem; } .official-stat-value { color: var(--p-text-color); letter-spacing: -0.04em; margin-top: 18px; font-size: 1.9rem; font-weight: 700; line-height: 1.1; } .official-stat-value small { color: var(--p-text-muted-color); letter-spacing: 0; margin-left: 4px; font-size: 0.85rem; font-weight: 500; } .official-hero-stat strong { color: var(--p-text-color); margin-top: 11px; font-size: 0.95rem; font-weight: 600; display: block; } .official-hero-stat p { color: var(--p-text-muted-color); margin: 6px 0 0; font-size: 0.82rem; line-height: 1.55; } .official-floating-label { border: 1px solid var(--console-panel-border); background: var(--p-content-background); color: var(--p-text-color); box-shadow: var(--console-panel-shadow); border-radius: 4px; align-items: center; gap: 8px; padding: 9px 12px; font-size: 0.86rem; display: inline-flex; position: absolute; bottom: 66px; left: 7%; } .official-floating-label i { color: var(--official-primary); font-size: 0.82rem; } .official-section { margin-top: 52px; scroll-margin-top: 87px; } .official-section-head { justify-content: space-between; align-items: flex-end; gap: 25px; margin-bottom: 20px; display: flex; } .official-contact-panel h2, .official-infra-copy h2, .official-section-head h2 { color: var(--p-text-color); letter-spacing: -0.035em; margin: 7px 0 6px; font-size: clamp(1.45rem, 2.5vw, 2rem); font-weight: 650; line-height: 1.3; } .official-contact-panel p, .official-infra-copy > p, .official-section-head p { max-width: 690px; color: var(--p-text-muted-color); margin: 0; font-size: 0.96rem; line-height: 1.7; } .official-section-badges { flex-wrap: wrap; justify-content: flex-end; gap: 8px; display: flex; } .official-section-badges span { border: 1px solid var(--console-panel-border); background: var(--p-content-background); color: var(--p-text-muted-color); white-space: nowrap; border-radius: 4px; align-items: center; gap: 6px; padding: 6px 9px; font-size: 0.8rem; display: inline-flex; } .official-section-badges i { color: var(--official-primary); font-size: 0.72rem; } /* 官网产品卡片网格,不改变商品接口或库存判定。 */ .official-product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; display: grid; } .official-product-card { min-height: 315px; padding: 18px; transition: border-color 0.18s, box-shadow 0.18s, transform 0.18s; position: relative; } .official-product-card:hover { border-color: color-mix( in srgb, var(--official-primary) 30%, var(--console-panel-border) ); transform: translateY(-2px); box-shadow: 0 5px 14px #0f172a14; } .official-product-icon { border: 1px solid color-mix(in srgb, var(--official-primary) 15%, var(--console-panel-border)); background: color-mix( in srgb, var(--official-primary) 7%, var(--p-content-background) ); width: 38px; height: 38px; color: var(--official-primary); border-radius: 4px; place-items: center; font-size: 1.2rem; display: grid; } .official-product-title-row { justify-content: space-between; align-items: flex-start; gap: 10px; margin-top: 16px; display: flex; } .official-product-title-row h3 { color: var(--p-text-color); margin: 0; font-size: 1.1rem; font-weight: 600; } .official-product-title-row span { color: var(--p-text-muted-color); letter-spacing: 0.08em; margin-top: 3px; font-size: 0.72rem; display: block; } .official-product-title-row > i { color: var(--p-text-muted-color); margin-top: 3px; font-size: 0.88rem; } .official-product-description { min-height: 42px; color: var(--p-text-muted-color); margin: 12px 0 0; font-size: 0.87rem; line-height: 1.6; } .official-product-price { color: var(--p-text-color); align-items: baseline; gap: 7px; margin-top: 15px; font-size: 1.13rem; font-weight: 650; display: flex; } .official-product-price small { color: var(--p-text-muted-color); font-size: 0.79rem; font-weight: 400; } .official-product-features { border-top: 1px solid var(--console-panel-border); gap: 7px; margin: 14px 0; padding: 14px 0 0; list-style: none; display: grid; } .official-product-features li { color: var(--p-text-muted-color); justify-content: space-between; align-items: center; gap: 12px; font-size: 0.83rem; display: flex; } .official-product-features i { color: var(--official-primary); font-size: 0.72rem; } .official-product-link { align-items: center; gap: 7px; font-size: 0.88rem; font-weight: 600; display: inline-flex; color: var(--official-primary) !important; } .official-product-link i { font-size: 0.75rem; transition: transform 0.18s; } .official-product-link:hover i { transform: translate(3px); } .official-empty-card { min-height: 200px; color: var(--p-text-muted-color); justify-content: center; align-items: center; gap: 8px; display: flex; } .official-infra-panel { grid-template-columns: 0.9fr 1.1fr; min-height: 350px; padding: 25px; display: grid; overflow: hidden; } .official-infra-copy { flex-direction: column; align-items: flex-start; display: flex; } .official-infra-copy > p { max-width: 470px; } .official-infra-stats { flex-wrap: wrap; gap: 28px; margin: auto 0 0; padding-top: 30px; display: flex; } .official-infra-stats div { flex-direction: column-reverse; gap: 4px; display: flex; } .official-infra-stats dt { color: var(--p-text-muted-color); font-size: 0.8rem; } .official-infra-stats dd { color: var(--p-text-color); margin: 0; font-size: 1.2rem; font-weight: 650; } .official-infra-stats dd small { color: var(--p-text-muted-color); margin-left: 4px; font-size: 0.78rem; font-weight: 400; } .official-infra-visual { border: 1px solid color-mix(in srgb, var(--official-primary) 14%, var(--console-panel-border)); background: linear-gradient( 130deg, color-mix(in srgb, var(--official-accent) 70%, var(--p-content-background)), var(--p-content-background) ); border-radius: 5px; min-height: 285px; position: relative; overflow: hidden; } .official-infra-world { opacity: 0.55; place-items: center; display: grid; position: absolute; inset: 0; } .official-infra-world:after, .official-infra-world:before { content: ""; border: 1px solid color-mix(in srgb, var(--official-primary) 28%, transparent); border-radius: 50%; width: 205px; height: 205px; position: absolute; } .official-infra-world:after { width: 270px; height: 120px; transform: rotate(-27deg); } .official-infra-world span { background: var(--official-primary); width: 6px; height: 6px; box-shadow: 0 0 0 5px color-mix(in srgb, var(--official-primary) 13%, transparent); border-radius: 50%; position: absolute; } .official-infra-world span:first-child { top: 28%; left: 30%; } .official-infra-world span:nth-child(2) { top: 40%; right: 21%; } .official-infra-world span:nth-child(3) { bottom: 20%; left: 49%; } .official-infra-world span:nth-child(4) { bottom: 33%; left: 22%; } .official-infra-world span:nth-child(5) { top: 19%; right: 39%; } .official-infra-card { width: min(320px, 74%); padding: 15px; position: absolute; top: 22px; right: 22px; } .official-infra-card-kicker { color: var(--official-primary); letter-spacing: 0.09em; font-size: 0.72rem; font-weight: 600; display: block; } .official-infra-card > strong { color: var(--p-text-color); margin-top: 7px; font-size: 0.98rem; display: block; } .official-infra-card > p { color: var(--p-text-muted-color); margin: 4px 0 14px; font-size: 0.78rem; } .official-resource-row { color: var(--p-text-muted-color); grid-template-columns: 86px minmax(40px, 1fr) auto; align-items: center; gap: 8px; margin-top: 10px; font-size: 0.77rem; display: grid; } .official-resource-track { background: color-mix( in srgb, var(--official-primary) 10%, var(--console-panel-border) ); border-radius: 5px; height: 5px; overflow: hidden; } .official-resource-track i { border-radius: inherit; background: var(--official-primary); height: 100%; display: block; } .official-resource-row b { color: var(--p-text-color); white-space: nowrap; font-size: 0.74rem; font-weight: 500; } .official-reviews-head { justify-content: flex-start; } .official-review-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; display: grid; } .official-review-card { min-height: 190px; padding: 18px; } .official-review-mark { color: var(--official-primary); font-size: 2rem; font-weight: 700; line-height: 0.9; } .official-review-card > p { min-height: 52px; color: var(--p-text-color); margin: 10px 0 18px; font-size: 0.92rem; line-height: 1.65; } .official-review-person { border-top: 1px solid var(--console-panel-border); align-items: center; gap: 10px; padding-top: 13px; display: flex; } .official-review-avatar, .official-review-person img { -o-object-fit: cover; object-fit: cover; background: color-mix( in srgb, var(--official-primary) 11%, var(--p-content-background) ); width: 34px; height: 34px; color: var(--official-primary); border-radius: 50%; place-items: center; display: grid; } .official-review-person div { flex-direction: column; gap: 2px; display: flex; } .official-review-person strong { color: var(--p-text-color); font-size: 0.83rem; font-weight: 600; } .official-review-person small { color: var(--p-text-muted-color); font-size: 0.75rem; } .official-contact-section { margin-top: 50px; } .official-contact-panel { border-left: 3px solid var(--official-primary); justify-content: space-between; align-items: center; gap: 30px; padding: 25px; display: flex; } .official-contact-panel > div:first-child { max-width: 670px; } .official-contact-actions { flex-shrink: 0; justify-content: flex-end; } /* 官网联系信息和页脚链接区域,与会员控制台页脚分别维护。 */ .official-footer { border-top: 1px solid var(--console-panel-border); background: var(--p-content-background); } .official-footer-main { grid-template-columns: 1.15fr 1.4fr 0.9fr; gap: 42px; width: min(1200px, 100% - 36px); margin: 0 auto; padding: 35px 0 28px; display: grid; } .official-footer-brand > p { max-width: 300px; color: var(--p-text-muted-color); margin: 15px 0 0; font-size: 0.83rem; line-height: 1.65; } .official-footer-groups { flex-wrap: wrap; gap: 30px; display: flex; } .official-footer-contact, .official-footer-group { flex-direction: column; align-items: flex-start; gap: 10px; display: flex; } .official-footer-contact h2, .official-footer-group h2 { color: var(--p-text-color); margin: 2px 0 4px; font-size: 0.88rem; font-weight: 600; } .official-footer-contact a, .official-footer-contact p, .official-footer-group a { color: var(--p-text-muted-color); margin: 0; font-size: 0.82rem; line-height: 1.5; } .official-footer-contact a:hover, .official-footer-group a:hover { color: var(--official-primary); } .official-footer-contact a, .official-footer-contact p { align-items: flex-start; gap: 8px; display: flex; } .official-footer-contact i { color: var(--official-primary); margin-top: 2px; font-size: 0.78rem; } .official-footer-qr { color: var(--p-text-muted-color); align-items: center; gap: 10px; font-size: 0.76rem; display: flex; } .official-footer-qr img { border: 1px solid var(--console-panel-border); -o-object-fit: contain; object-fit: contain; border-radius: 4px; width: 56px; height: 56px; } .official-footer-bottom { border-top: 1px solid var(--console-panel-border); width: min(1200px, 100% - 36px); min-height: 50px; color: var(--p-text-muted-color); justify-content: space-between; align-items: center; gap: 12px; margin: 0 auto; font-size: 0.76rem; display: flex; } .official-footer-bottom > div { gap: 17px; display: flex; } .official-footer-bottom a:hover { color: var(--official-primary); } /* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .official-site a:focus-visible, .official-site button:focus-visible { outline: 2px solid var(--official-primary); outline-offset: 3px; } /* 视口条件 (width<=900px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=900px) { .official-header-inner { gap: 18px; } .official-nav { gap: 15px; } .official-hero-top { gap: 35px; } .official-section-head { flex-direction: column; align-items: flex-start; } .official-section-badges { justify-content: flex-start; } .official-infra-panel { grid-template-columns: 1fr; gap: 25px; } .official-infra-stats { margin-top: 26px; } .official-footer-main { grid-template-columns: 1fr 1.3fr; } .official-footer-contact { grid-column: 2; } } /* 视口条件 (width<=680px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=680px) { .official-footer-bottom, .official-footer-main, .official-header-inner, .official-main { width: min(100% - 24px, 560px); } .official-header-inner { justify-content: space-between; min-height: 58px; } .official-nav { display: none; } .official-header-login { padding: 8px 9px; font-size: 0.8rem; } .official-menu-toggle { place-items: center; display: inline-grid; } .official-mobile-nav { border-top: 1px solid var(--console-panel-border); background: var(--p-content-background); gap: 0; padding: 4px 12px 12px; display: grid; } .official-mobile-nav a { border-bottom: 1px solid var(--console-panel-border); padding: 11px 7px; } .official-page { padding: 20px 0 38px; } .official-hero-top { grid-template-columns: 1fr; gap: 19px; padding: 17px 0 20px; } .official-hero-heading h1 { margin-top: 16px; font-size: clamp(2rem, 8.5vw, 2.8rem); } .official-hero-intro > p { margin-bottom: 13px; font-size: 0.92rem; } .official-hero-features { margin-bottom: 16px; } .official-hero-visual { min-height: 270px; } .official-hero-stat { width: min(236px, 58%); min-height: 187px; padding: 14px; top: 16px; right: 14px; } .official-stat-value { margin-top: 13px; font-size: 1.55rem; } .official-floating-label { max-width: 48%; font-size: 0.76rem; bottom: 17px; left: 12px; } .official-art-caption { text-align: right; max-width: 49%; font-size: 0.73rem; bottom: 19px; left: auto; right: 14px; } .official-section { margin-top: 38px; } .official-product-grid { grid-template-columns: 1fr; } .official-product-card { min-height: 0; } .official-product-description { min-height: auto; } .official-infra-panel { padding: 16px; } .official-infra-visual { min-height: 265px; } .official-infra-card { width: min(310px, 82%); padding: 13px; top: 14px; right: 12px; } .official-infra-stats { gap: 18px; } .official-review-grid { grid-template-columns: 1fr; } .official-contact-panel { flex-direction: column; align-items: flex-start; gap: 18px; padding: 18px; } .official-contact-actions { justify-content: flex-start; } .official-footer-main { grid-template-columns: 1fr 1fr; gap: 23px 15px; padding: 26px 0 21px; } .official-footer-brand { grid-column: 1/-1; } .official-footer-brand > p { max-width: 460px; } .official-footer-groups { grid-column: 1/-1; gap: 26px; } .official-footer-contact { grid-column: 1/-1; } .official-footer-bottom { flex-direction: column; justify-content: center; align-items: flex-start; padding: 12px 0; } } /* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .official-site *, .official-site :after, .official-site :before { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; } }