/* GlasMate 官网 - 白色浅色 B2B 风 */
* { margin:0; padding:0; box-sizing:border-box; }
:root {
  --primary:#4f5bd5; --primary-dark:#3a45b0; --accent:#7c6cf0;
  --ink:#1c2333; --muted:#6b7280; --line:#e5e7eb; --bg:#ffffff; --bg-soft:#f7f8fc;
}
body { font-family:"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif; color:var(--ink); background:var(--bg); line-height:1.7; }
a { color:inherit; text-decoration:none; }
.container { max-width:1120px; margin:0 auto; padding:0 24px; }
.muted { color:var(--muted); }

/* nav */
.nav { position:sticky; top:0; z-index:50; background:rgba(255,255,255,.92); backdrop-filter:blur(8px); border-bottom:1px solid var(--line); }
.nav-inner { display:flex; align-items:center; justify-content:space-between; height:64px; }
.logo { font-size:22px; font-weight:800; letter-spacing:-.5px; }
.logo span { color:var(--primary); }
.nav-links { display:flex; align-items:center; gap:28px; font-size:15px; }
.nav-links a:hover { color:var(--primary); }

/* buttons */
.btn { display:inline-block; padding:12px 28px; border-radius:10px; font-size:15px; font-weight:600; transition:.2s; cursor:pointer; border:none; }
.btn-sm { padding:8px 18px; font-size:14px; border-radius:8px; }
.btn-primary { background:var(--primary); color:#fff; }
.btn-primary:hover { background:var(--primary-dark); }
.btn-ghost { border:1.5px solid var(--line); color:var(--ink); background:#fff; }
.btn-ghost:hover { border-color:var(--primary); color:var(--primary); }
.btn-disabled { background:#e5e7eb; color:#9ca3af; cursor:not-allowed; }

/* hero */
.hero { padding:88px 0 72px; background:linear-gradient(180deg,#f4f6ff 0%,#ffffff 100%); text-align:center; }
.hero h1 { font-size:48px; font-weight:800; letter-spacing:-1px; margin-bottom:18px; }
.hero h1 em { font-style:normal; background:linear-gradient(90deg,var(--primary),var(--accent)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.hero p.sub { font-size:18px; color:var(--muted); max-width:640px; margin:0 auto 36px; }
.hero .cta-row { display:flex; gap:16px; justify-content:center; }
.hero-badges { margin-top:34px; display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
.badge { background:#fff; border:1px solid var(--line); border-radius:999px; padding:7px 18px; font-size:13px; color:var(--muted); }

/* section */
.section { padding:72px 0; }
.section.soft { background:var(--bg-soft); }
.section-head { text-align:center; margin-bottom:48px; }
.section-head h2 { font-size:40px; font-weight:800; margin-bottom:14px; letter-spacing:-0.5px; }
.section-head p { color:var(--muted); font-size:17px; }

/* version cards */
.ver-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.ver-card { background:#fff; border:2px solid var(--line); border-radius:18px; padding:34px 28px; position:relative; cursor:pointer; transition:.25s;
  display:flex; flex-direction:column; }
.ver-card h3 { font-size:27px; margin-bottom:8px; min-height:68px; display:flex; align-items:center; }
.ver-card .ver-sub { color:var(--muted); font-size:13.5px; margin-bottom:18px; min-height:40px; line-height:1.5; }
.ver-card .ver-list { flex:1 1 auto; }
.ver-card .btn { margin-top:auto; }
.ver-card:hover { box-shadow:0 12px 36px rgba(79,91,213,.10); transform:translateY(-3px); }
.ver-card.featured { border-color:var(--primary); box-shadow:0 12px 36px rgba(79,91,213,.14); }
.ver-tag { display:inline-block; background:var(--primary); color:#fff; font-size:16px; font-weight:700; padding:6px 18px; border-radius:999px; margin-bottom:14px; white-space:nowrap; }
.ver-tag.presale { background:#9ca3af; }
.ver-price { font-size:40px; font-weight:800; margin-bottom:4px; }
.ver-price small { font-size:15px; color:var(--muted); font-weight:400; }
.ver-list { list-style:none; margin:22px 0 28px; }
.ver-list li { padding:7px 0 7px 28px; position:relative; font-size:15px; }
.ver-list li::before { content:"✓"; position:absolute; left:0; color:var(--primary); font-weight:700; }
.ver-card .btn { width:100%; text-align:center; }

/* features */
.feat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.feat { background:#fff; border:1px solid var(--line); border-radius:14px; padding:28px 22px; }
.feat .ico { width:44px; height:44px; border-radius:11px; background:linear-gradient(135deg,#eef0ff,#e4e9ff); display:flex; align-items:center; justify-content:center; font-size:22px; margin-bottom:16px; }
.feat h4 { font-size:16px; margin-bottom:8px; }
.feat p { font-size:13.5px; color:var(--muted); }

/* steps */
.steps { display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.step { text-align:center; padding:24px 16px; }
.step .num { width:44px; height:44px; margin:0 auto 14px; border-radius:50%; background:var(--primary); color:#fff; font-weight:800; font-size:18px; display:flex; align-items:center; justify-content:center; }
.step h4 { font-size:16px; margin-bottom:6px; }
.step p { font-size:13.5px; color:var(--muted); }

/* pricing table */
.price-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
.price-card { background:#fff; border:2px solid var(--line); border-radius:18px; padding:30px 20px; text-align:center; cursor:pointer; transition:border-color .25s, box-shadow .25s;
  display:flex; flex-direction:column; }
.price-card h3 { font-size:24px; margin-bottom:12px; min-height:60px; display:flex; align-items:center; justify-content:center; line-height:1.35; }
.price-card .tag-chip { display:inline-block; font-size:16px; font-weight:700; padding:6px 18px; border-radius:999px; margin-bottom:14px; white-space:nowrap; }
.price-card .p { font-size:42px; font-weight:800; min-height:52px; display:flex; align-items:baseline; justify-content:center; gap:2px; }
.price-card .p small { font-size:13px; color:var(--muted); font-weight:400; }
.price-card ul { flex:1 1 auto; }
.price-card .btn { margin-top:auto; }
.price-card.hot { border-color:var(--primary); box-shadow:0 12px 36px rgba(79,91,213,.14); position:relative; }
.price-card ul { list-style:none; margin:24px 0 28px; text-align:left; }
.price-card ul li { padding:8px 0 8px 26px; position:relative; font-size:14.5px; border-bottom:1px dashed var(--line); }
.price-card ul li:last-child { border-bottom:none; }
.price-card ul li::before { content:"✓"; position:absolute; left:0; color:var(--primary); font-weight:700; }

/* news */
.news-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
.news-item { background:#fff; border:1px solid var(--line); border-radius:14px; padding:24px 26px; transition:.2s; }
.news-item:hover { border-color:var(--primary); box-shadow:0 8px 24px rgba(79,91,213,.08); }
.news-item .date { font-size:12.5px; color:var(--muted); margin-bottom:8px; }
.news-item h3 { font-size:17px; margin-bottom:8px; line-height:1.5; }
.news-item p { font-size:13.5px; color:var(--muted); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.pager { display:flex; gap:10px; justify-content:center; margin-top:36px; }
.pager a, .pager span { padding:8px 15px; border:1px solid var(--line); border-radius:8px; font-size:14px; }
.pager .cur { background:var(--primary); color:#fff; border-color:var(--primary); }

/* article */
.article { max-width:820px; margin:0 auto; padding:56px 24px; }
.article h1 { font-size:30px; line-height:1.45; margin-bottom:14px; }
.article .meta { color:var(--muted); font-size:13.5px; padding-bottom:22px; border-bottom:1px solid var(--line); margin-bottom:30px; }
.article .ai-note { background:#f4f6ff; border:1px solid #dfe4ff; color:#4a55a8; font-size:12.5px; border-radius:8px; padding:8px 14px; margin-bottom:26px; }
.article-body h2 { font-size:22px; margin:30px 0 14px; }
.article-body h3 { font-size:18px; margin:24px 0 12px; }
.article-body p { margin-bottom:14px; font-size:15.5px; color:#333; }
.article-body ul, .article-body ol { margin:0 0 16px 24px; font-size:15.5px; color:#333; }
.article-body li { margin-bottom:6px; }
.related { margin-top:48px; padding-top:26px; border-top:1px solid var(--line); }
.related h4 { font-size:16px; margin-bottom:14px; }
.related a { display:block; padding:8px 0; font-size:14.5px; color:var(--muted); }
.related a:hover { color:var(--primary); }

/* faq */
.faq-list { max-width:820px; margin:0 auto; }
.faq-item { background:#fff; border:1px solid var(--line); border-radius:12px; padding:22px 26px; margin-bottom:14px; }
.faq-item h4 { font-size:16px; margin-bottom:8px; }
.faq-item p { font-size:14px; color:var(--muted); }

/* footer */
.footer { background:#141824; color:#c6cbd8; padding:56px 0 28px; margin-top:40px; }
.footer-cols { display:grid; grid-template-columns:2fr 1fr 1fr; gap:36px; padding-bottom:34px; border-bottom:1px solid #262b3a; }
.footer-logo { color:#fff; margin-bottom:14px; }
.footer h4 { color:#fff; font-size:15px; margin-bottom:14px; }
.footer a { display:block; font-size:14px; padding:4px 0; color:#c6cbd8; }
.footer a:hover { color:#fff; }
.footer .muted { color:#8a90a2; }
.footer-bottom { padding-top:22px; font-size:12.5px; text-align:center; }
.footer-bottom p { margin-bottom:4px; }

/* admin */
.admin-body { background:var(--bg-soft); }
.admin-wrap { max-width:1200px; margin:0 auto; padding:32px 24px; }
.admin-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:26px; }
.admin-head h1 { font-size:24px; }
.stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; margin-bottom:28px; }
.stat { background:#fff; border:1px solid var(--line); border-radius:12px; padding:20px 22px; }
.stat .v { font-size:28px; font-weight:800; color:var(--primary); }
.stat .k { font-size:13px; color:var(--muted); margin-top:4px; }
.panel { background:#fff; border:1px solid var(--line); border-radius:12px; padding:24px; margin-bottom:22px; }
.panel h3 { font-size:17px; margin-bottom:16px; }
.tabs { display:flex; gap:6px; margin-bottom:20px; flex-wrap:wrap; }
.tab { padding:9px 20px; border-radius:8px; font-size:14px; cursor:pointer; border:1px solid var(--line); background:#fff; }
.tab.on { background:var(--primary); color:#fff; border-color:var(--primary); }
table.tbl { width:100%; border-collapse:collapse; font-size:13.5px; }
.tbl th { text-align:left; padding:10px 12px; background:var(--bg-soft); border-bottom:1px solid var(--line); color:var(--muted); font-weight:600; }
.tbl td { padding:10px 12px; border-bottom:1px solid var(--line); }
.pill { display:inline-block; padding:2px 10px; border-radius:999px; font-size:12px; }
.pill.green { background:#e7f7ee; color:#1a7f45; }
.pill.gray { background:#f0f1f4; color:#6b7280; }
.pill.red { background:#fdecec; color:#c0392b; }
.pill.blue { background:#e8ecff; color:#3a45b0; }
input[type=text], input[type=password], input[type=number], select, textarea {
  padding:9px 13px; border:1px solid var(--line); border-radius:8px; font-size:14px; width:100%; font-family:inherit; }
textarea { resize:vertical; }
.row-form { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:16px; }
.row-form > * { flex:0 0 auto; }
.row-form input, .row-form select { width:auto; }
.btn-xs { padding:5px 12px; font-size:12.5px; border-radius:6px; }
.login-box { max-width:380px; margin:14vh auto; background:#fff; border:1px solid var(--line); border-radius:16px; padding:40px 36px; }
.login-box h1 { font-size:22px; margin-bottom:6px; text-align:center; }
.login-box .sub { text-align:center; color:var(--muted); font-size:13.5px; margin-bottom:26px; }
.login-box input { margin-bottom:14px; }
.login-box .btn { width:100%; }
.err { background:#fdecec; color:#c0392b; font-size:13px; padding:9px 13px; border-radius:8px; margin-bottom:14px; }
.ok-msg { background:#e7f7ee; color:#1a7f45; font-size:13px; padding:9px 13px; border-radius:8px; margin-bottom:14px; }


/* ═══════════ v2 增强: 更丰富的首页组件 ═══════════ */

/* hero 双栏布局 */
.hero2 { padding:76px 0 64px; background:
  radial-gradient(900px 420px at 85% -10%, #e8ebff 0%, transparent 60%),
  radial-gradient(700px 380px at -10% 30%, #f0ecff 0%, transparent 55%),
  linear-gradient(180deg,#fafbff 0%,#ffffff 100%);
  overflow:hidden; }
.hero2-inner { display:grid; grid-template-columns:1.15fr .85fr; gap:40px; align-items:center; }
.hero2 h1 { font-size:46px; font-weight:800; letter-spacing:-1px; line-height:1.25; margin-bottom:20px; text-align:left; }
.hero2 h1 em { font-style:normal; background:linear-gradient(90deg,var(--primary),var(--accent)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.hero2 p.sub { font-size:17px; color:var(--muted); margin:0 0 30px; text-align:left; max-width:520px; }
.hero2 .cta-row { justify-content:flex-start; }
/* hero 右侧: 形象展示卡(替代丑的手机框截图) */
.hero-visual { position:relative; display:flex; justify-content:center; }
.show-card { position:relative; width:360px; height:520px; border-radius:26px; overflow:visible;
  background:linear-gradient(165deg,#eef0ff 0%,#f8f7ff 45%,#fdf6ff 100%);
  border:1px solid #e6e8ff; box-shadow:0 30px 70px rgba(60,70,150,.16); }
.show-card::before { content:""; position:absolute; inset:0; border-radius:26px;
  background:radial-gradient(420px 260px at 50% 108%, rgba(124,108,240,.16), transparent 70%); }
.show-card .glow { position:absolute; width:260px; height:260px; border-radius:50%;
  background:radial-gradient(circle, rgba(255,255,255,.9), rgba(255,255,255,0) 70%);
  top:96px; left:50%; transform:translateX(-50%); }
.show-card .char { position:absolute; bottom:0; left:50%; transform:translateX(-50%);
  height:430px; filter:drop-shadow(0 18px 26px rgba(40,50,110,.18)); }
.show-card .name-chip { position:absolute; top:22px; left:50%; transform:translateX(-50%);
  background:#fff; border:1px solid var(--line); border-radius:999px; padding:7px 20px;
  font-size:13px; font-weight:700; color:var(--ink); box-shadow:0 6px 18px rgba(40,50,110,.10); }
.bubble { position:absolute; background:#fff; border:1px solid #e8eaff; border-radius:16px;
  padding:11px 16px; font-size:13px; line-height:1.55; color:#333;
  box-shadow:0 12px 30px rgba(50,60,130,.14); max-width:210px; }
.bubble .who { font-size:11px; font-weight:700; color:var(--primary); margin-bottom:3px; }
.bubble.her { left:-84px; top:120px; border-bottom-left-radius:4px; }
.bubble.you { right:-70px; top:264px; border-bottom-right-radius:4px; background:linear-gradient(120deg,var(--primary),var(--accent)); color:#fff; border:none; }
.bubble.you .who { color:rgba(255,255,255,.8); }
.bubble.memo { left:-58px; bottom:46px; border-bottom-left-radius:4px; }
.float { animation:floaty 5s ease-in-out infinite; }
.float.d2 { animation-delay:1.4s; }
.float.d3 { animation-delay:2.6s; }
@keyframes floaty { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-9px)} }


/* 通用 section 头 */
.tag-line { letter-spacing:3px; display:inline-block; font-size:13px; font-weight:700; letter-spacing:2px; color:var(--primary); background:#eef0ff; border-radius:999px; padding:5px 16px; margin-bottom:14px; }

/* 形象库卡片 */
.av-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:18px; }
.av-card { background:#fff; border:1px solid var(--line); border-radius:16px; padding:14px 12px 16px; text-align:center; transition:.25s; cursor:default; }
.av-card:hover { transform:translateY(-5px); box-shadow:0 16px 40px rgba(79,91,213,.14); border-color:#c7ccff; }
.av-card .ph { background:linear-gradient(180deg,#f3f5ff,#ecefff); border-radius:12px; height:220px; display:flex; align-items:flex-end; justify-content:center; overflow:hidden; margin-bottom:12px; }
.av-card .ph img { height:210px; object-fit:contain; object-position:bottom; }
.av-card h4 { font-size:15px; margin-bottom:3px; }
.av-card p { font-size:12px; color:var(--muted); }

/* 换装展示 */
.dress-wrap { display:grid; grid-template-columns:.9fr 1.1fr; gap:44px; align-items:center; }
.dress-figs { display:flex; gap:14px; justify-content:center; align-items:flex-end; }
.dress-fig { background:#fff; border:1px solid var(--line); border-radius:16px; padding:10px; box-shadow:0 10px 30px rgba(40,50,120,.08); }
.dress-fig.mid { transform:translateY(-16px); border:2px solid var(--primary); }
.dress-fig img { height:250px; object-fit:contain; display:block; }
.dress-fig figcaption { text-align:center; font-size:12px; color:var(--muted); padding-top:6px; }
.dress-copy h2 { font-size:30px; margin-bottom:14px; }
.dress-copy p { color:var(--muted); margin-bottom:18px; font-size:15px; }
.check-list { list-style:none; }
.check-list li { padding:8px 0 8px 32px; position:relative; font-size:15px; }
.check-list li::before { content:"✓"; position:absolute; left:0; top:8px; width:20px; height:20px; background:#eef0ff; color:var(--primary); border-radius:50%; font-size:12px; font-weight:800; display:flex; align-items:center; justify-content:center; }

/* 功能大卡(6格) */
.feat6 { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.feat-big { background:#fff; border:1px solid var(--line); border-radius:16px; padding:30px 26px; transition:.25s; }
.feat-big:hover { box-shadow:0 14px 36px rgba(79,91,213,.10); transform:translateY(-3px); }
.feat-big .ico { width:50px; height:50px; border-radius:13px; background:linear-gradient(135deg,#eef0ff,#e2e7ff); display:flex; align-items:center; justify-content:center; font-size:24px; margin-bottom:18px; }
.feat-big h4 { font-size:17px; margin-bottom:9px; }
.feat-big p { font-size:13.5px; color:var(--muted); }

/* 数据带 */
.statband { background:linear-gradient(120deg,#232840,#2e3560); border-radius:20px; padding:44px 40px; display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
.statband .it { text-align:center; color:#fff; }
.statband .v { font-size:38px; font-weight:800; background:linear-gradient(90deg,#a8b4ff,#d8d0ff); -webkit-background-clip:text; background-clip:text; color:transparent; }
.statband .k { font-size:13.5px; color:#aab2d5; margin-top:6px; }

/* 硬件要求 */
.hw-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.hw-card { background:#fff; border:1px solid var(--line); border-radius:14px; padding:26px; }
.hw-card h4 { font-size:16px; margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.hw-card ul { list-style:none; }
.hw-card li { font-size:13.5px; color:var(--muted); padding:6px 0 6px 18px; position:relative; border-bottom:1px dashed var(--line); }
.hw-card li:last-child { border-bottom:none; }
.hw-card li::before { content:"·"; position:absolute; left:4px; color:var(--primary); font-weight:800; }
.hw-card li b { color:var(--ink); }

/* CTA大横幅 */
.cta-band { background:linear-gradient(120deg,var(--primary),var(--accent)); border-radius:22px; padding:56px 48px; text-align:center; color:#fff; position:relative; overflow:hidden; }
.cta-band::before { content:""; position:absolute; width:340px; height:340px; border-radius:50%; background:rgba(255,255,255,.09); top:-140px; right:-90px; }
.cta-band::after { content:""; position:absolute; width:240px; height:240px; border-radius:50%; background:rgba(255,255,255,.07); bottom:-110px; left:-60px; }
.cta-band h2 { font-size:32px; margin-bottom:12px; position:relative; }
.cta-band p { opacity:.92; margin-bottom:28px; position:relative; }
.cta-band .btn-white { background:#fff; color:var(--primary); font-weight:700; position:relative; }
.cta-band .btn-white:hover { transform:translateY(-2px); box-shadow:0 12px 30px rgba(0,0,0,.18); }

@media (max-width: 960px) {
  .hero2-inner { grid-template-columns:1fr; }
  .hero2 h1 { font-size:34px; text-align:center; }
  .hero2 p.sub { text-align:center; margin-left:auto; margin-right:auto; }
  .hero2 .cta-row { justify-content:center; }
  .av-grid { grid-template-columns:repeat(3,1fr); }
  .dress-wrap { grid-template-columns:1fr; }
  .feat6 { grid-template-columns:1fr; }
  .statband { grid-template-columns:repeat(2,1fr); }
  .hw-grid { grid-template-columns:1fr; }
  .bubble.her,.bubble.memo { left:-20px; } .bubble.you { right:-16px; }
  .show-card { width:300px; height:460px; } .show-card .char { height:370px; }
}


/* ═══ 衣橱28套网格 ═══ */
.dress-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:14px; }
.dress-card { background:#fff; border:1px solid var(--line); border-radius:14px; padding:10px 8px 12px; text-align:center; transition:.22s; }
.dress-card:hover { transform:translateY(-4px); box-shadow:0 14px 32px rgba(79,91,213,.14); border-color:#c7ccff; }
.dress-card .ph { height:180px; display:flex; align-items:flex-end; justify-content:center;
  background:linear-gradient(180deg,#f6f7ff,#eff1ff); border-radius:10px; overflow:hidden; margin-bottom:9px; }
.dress-card .ph img { height:172px; object-fit:contain; object-position:bottom; }
.dress-card p { font-size:12.5px; color:#444; font-weight:600; }

/* ═══ GitHub/开源介绍区 ═══ */
.gh-wrap { display:grid; grid-template-columns:1fr 1fr; gap:44px; align-items:start; }
.gh-quote { font-size:24px; font-weight:800; line-height:1.5; margin-bottom:16px; }
.gh-quote em { font-style:normal; color:var(--primary); }
.gh-copy p { color:var(--muted); font-size:15px; margin-bottom:14px; }
.gh-scenes { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:18px; }
.gh-scene { background:#fff; border:1px solid var(--line); border-radius:12px; padding:14px 16px; font-size:13.5px; }
.gh-scene b { display:block; margin-bottom:4px; font-size:14px; }
.gh-code { background:#1b2030; border-radius:14px; padding:26px 28px; color:#c9d4f5; font-size:13.5px;
  font-family:Consolas,Menlo,monospace; line-height:1.9; overflow-x:auto; }
.gh-code .cm { color:#6b7aa8; }
.gh-code .ar { color:#8f9dff; }
.gh-links { margin-top:18px; display:flex; gap:12px; }

/* ═══ 联系我们 ═══ */
.contact-wrap { display:grid; grid-template-columns:1fr 1fr; gap:30px; max-width:760px; margin:0 auto; }
.qr-card { background:#fff; border:1px solid var(--line); border-radius:18px; padding:34px 28px; text-align:center; transition:.22s; }
.qr-card:hover { box-shadow:0 14px 36px rgba(79,91,213,.12); }
.qr-card img { width:210px; height:210px; object-fit:contain; border-radius:10px; border:1px solid var(--line); background:#fff; padding:6px; }
.qr-card h4 { font-size:17px; margin:18px 0 6px; }
.qr-card p { font-size:13px; color:var(--muted); }
.disclaim { max-width:860px; margin:44px auto 0; background:#f8f8fc; border:1px solid var(--line);
  border-radius:12px; padding:18px 24px; font-size:12.5px; color:var(--muted); line-height:1.8; }

@media (max-width: 960px) {
  .gh-wrap, .contact-wrap { grid-template-columns:1fr; }
  .gh-scenes { grid-template-columns:1fr; }
  .dress-grid { grid-template-columns:repeat(4,1fr); }
}


/* ═══════════ 动效 FX ═══════════ */
/* 滚动渐入 */
.reveal { opacity:0; transform:translateY(28px); transition:opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1); }
.reveal.in { opacity:1; transform:none; }
.reveal.d1 { transition-delay:.08s } .reveal.d2 { transition-delay:.16s }
.reveal.d3 { transition-delay:.24s } .reveal.d4 { transition-delay:.32s }

/* hero 标题逐字上浮 */
.hero2 h1 .ln { display:inline-block; overflow:hidden; vertical-align:bottom; }
.hero2 h1 .ln > span { display:inline-block; transform:translateY(110%); animation:lineUp .8s cubic-bezier(.22,.61,.36,1) forwards; }
.hero2 h1 .ln:nth-child(2) > span { animation-delay:.14s; }
@keyframes lineUp { to { transform:translateY(0); } }
/* hero 副标题+CTA 淡入 */
.hero2 .sub, .hero2 .cta-row, .hero2 .hero-badges { opacity:0; animation:fadeUp .8s ease forwards; }
.hero2 .sub { animation-delay:.42s } .hero2 .cta-row { animation-delay:.54s } .hero2 .hero-badges { animation-delay:.66s }
@keyframes fadeUp { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:none} }

/* 打字机光标 */
.type-cursor { display:inline-block; width:2px; height:1em; background:var(--primary); margin-left:2px; vertical-align:-2px; animation:blink 1s step-end infinite; }
@keyframes blink { 50%{opacity:0} }

/* 卡片悬停光泽扫过 */
.ver-card, .feat-big, .dress-card, .qr-card, .hw-card { position:relative; overflow:hidden; }
.ver-card::after, .feat-big::after, .qr-card::after {
  content:""; position:absolute; top:0; left:-120%; width:60%; height:100%;
  background:linear-gradient(120deg, transparent, rgba(255,255,255,.55), transparent);
  transform:skewX(-18deg); transition:left .7s ease; pointer-events:none; }
.ver-card:hover::after, .feat-big:hover::after, .qr-card:hover::after { left:130%; }

/* 形象卡悬停微缩放 */
.dress-card .ph img { transition:transform .35s ease; }
.dress-card:hover .ph img { transform:scale(1.06); }

/* 数据带数字弹跳 */
.statband .v { display:inline-block; }
.statband.in .v { animation:pop .6s cubic-bezier(.2,1.4,.5,1) backwards; }
.statband.in .it:nth-child(2) .v { animation-delay:.1s }
.statband.in .it:nth-child(3) .v { animation-delay:.2s }
.statband.in .it:nth-child(4) .v { animation-delay:.3s }
@keyframes pop { from{transform:scale(.6);opacity:0} to{transform:scale(1);opacity:1} }

/* CTA横幅光晕呼吸 */
.cta-band::before { animation:breathe 7s ease-in-out infinite; }
@keyframes breathe { 0%,100%{transform:scale(1);opacity:.9} 50%{transform:scale(1.15);opacity:1} }

/* 展示卡轻微3D视差 */
.show-card { transform-style:preserve-3d; transition:transform .25s ease-out; }

/* 徽章入场错落 */
.hero-badges .badge { opacity:0; animation:fadeUp .5s ease forwards; }
.hero-badges .badge:nth-child(1){animation-delay:.7s} .hero-badges .badge:nth-child(2){animation-delay:.8s}
.hero-badges .badge:nth-child(3){animation-delay:.9s} .hero-badges .badge:nth-child(4){animation-delay:1s}

/* 返回顶部按钮 */
.to-top { position:fixed; right:26px; bottom:26px; width:46px; height:46px; border-radius:50%;
  background:var(--primary); color:#fff; border:none; font-size:20px; cursor:pointer; z-index:60;
  box-shadow:0 8px 24px rgba(79,91,213,.35); opacity:0; pointer-events:none; transition:.3s; }
.to-top.show { opacity:1; pointer-events:auto; }
.to-top:hover { background:var(--primary-dark); transform:translateY(-3px); }

/* 减少动态偏好 */
@media (prefers-reduced-motion: reduce) {
  * { animation:none !important; transition:none !important; }
  .reveal { opacity:1; transform:none; }
}

@media (max-width: 1100px) {
  .price-grid { grid-template-columns:repeat(2,1fr); }
}

@media (max-width: 860px) {
  .ver-grid, .news-grid { grid-template-columns:1fr; }
  .dress-grid { grid-template-columns:repeat(3,1fr) !important; }
  .feat-grid, .steps { grid-template-columns:repeat(2,1fr); }
  .price-grid { grid-template-columns:1fr; }
  .footer-cols { grid-template-columns:1fr; }
  .stat-grid { grid-template-columns:repeat(2,1fr); }
  .hero h1 { font-size:32px; }
  .nav-links a:not(.btn) { display:none; }
}
