/* ==========================================================================
   GEO智见Insight · Design Tokens & Shared Base
   所有页面共用。请勿在页面 CSS 中自造颜色，统一引用本文件变量。
   ========================================================================== */

@font-face {
  font-family: 'Anton';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/Anton-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('../fonts/SpaceGrotesk-var.woff2') format('woff2');
}

:root {
  /* ---- brand core ---- */
  --ink: #17110F;
  --ink-2: #241A17;
  --navy: #0E1020;
  --navy-2: #151731;
  --navy-3: #1E2145;

  --rose: #FF2E74;
  --rose-fill: #D91860;    /* 玫红填充底，配白字可达 4.5:1+ */
  --rose-deep: #A80E44;    /* 浅底上的玫红文字，保证对比度 */
  --coral: #FF6B3D;
  --orange: #FF9A3D;
  --violet: #6C4CFF;
  --blue: #0A4DFF;
  --mint: #6FF7C0;
  --mint-deep: #21D79A;
  --yellow: #FFD84D;

  --pink-50: #FFE7EA;
  --pink-100: #FFD3DA;
  --cream: #FFF4E8;
  --paper: #FBF6F0;
  --paper-2: #F4ECE3;
  --white: #FFFFFF;

  /* ---- text ---- */
  --text-on-dark: #FFFFFF;
  --text-on-dark-muted: #D9D2CE;   /* 实色亮灰，保证深底对比度 */
  --text-on-dark-soft: #BDB5B0;
  --text-on-light: #17110F;
  --text-on-light-muted: #5A4C47;
  --line-on-dark: rgba(255,255,255,.16);
  --line-on-light: rgba(23,17,15,.10);

  /* ---- gradients ---- */
  --grad-brand: linear-gradient(120deg, #FF6B3D 0%, #FF2E74 52%, #6C4CFF 100%);
  --grad-warm: linear-gradient(135deg, #FF9A3D 0%, #FF2E74 70%);
  --grad-fullcolor: linear-gradient(135deg, #4F2BFF 0%, #B53CFF 42%, #FF4D8D 100%);
  --grad-techblue: linear-gradient(135deg, #0A4DFF 0%, #061A5E 100%);
  --grad-mint: linear-gradient(120deg, #6FF7C0 0%, #21D79A 100%);

  /* ---- typography ---- */
  --font-sans: 'Noto Sans SC', 'Noto Sans CJK SC', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
  --font-display: 'Anton', 'Noto Sans SC', 'Noto Sans CJK SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-latin: 'Space Grotesk', 'Noto Sans SC', 'PingFang SC', sans-serif;

  /* ---- radius / shadow ---- */
  --r-sm: 12px;
  --r-md: 20px;
  --r-lg: 28px;
  --r-xl: 40px;
  --r-pill: 999px;
  --shadow-card: 0 24px 60px rgba(14,16,32,.14);
  --shadow-card-dark: 0 28px 70px rgba(0,0,0,.42);
  --shadow-float: 0 10px 30px rgba(14,16,32,.10);

  /* ---- layout ---- */
  --container: 1180px;
  --gutter: clamp(20px, 4.6vw, 56px);

  --ease-out: cubic-bezier(.22,.8,.28,1);
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  font-family: var(--font-sans);
  color: var(--text-on-light);
  background: var(--paper);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
button { font: inherit; border: 0; background: none; cursor: pointer; }
::selection { background: var(--rose); color: #fff; }
:focus-visible { outline: 3px solid var(--mint); outline-offset: 3px; border-radius: 4px; }
[id] { scroll-margin-top: 82px; }

/* ---------- shared layout ---------- */
.g-container { width: 100%; max-width: var(--container); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.g-section { padding: clamp(64px, 9vw, 132px) 0; position: relative; }
.g-eyebrow {
  font-family: var(--font-latin);
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: clamp(11px, 1.2vw, 13px);
}
.g-kicker { display: inline-flex; align-items: center; gap: 10px; font-weight: 700; font-size: 14px; letter-spacing: .06em; }
.g-display { font-family: var(--font-display); font-weight: 900; line-height: .98; letter-spacing: -.02em; }
.g-h1 { font-size: clamp(44px, 9.2vw, 108px); font-weight: 900; line-height: 1.02; letter-spacing: -.035em; }
.g-h2 { font-size: clamp(32px, 5.4vw, 62px); font-weight: 900; line-height: 1.08; letter-spacing: -.03em; }
.g-h3 { font-size: clamp(21px, 2.6vw, 30px); font-weight: 900; line-height: 1.25; letter-spacing: -.015em; }
.g-body { font-size: clamp(15px, 1.5vw, 17.5px); line-height: 1.85; }
.g-muted { color: var(--text-on-light-muted); }
.g-measure { max-width: 62ch; }
.g-latin { font-family: var(--font-latin); }

/* ---------- brand ---------- */
.g-brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-sans); font-weight: 900; letter-spacing: -.01em; white-space: nowrap; }
.g-brand__geo { font-family: var(--font-display); font-weight: 400; letter-spacing: .01em; }
.g-brand__cn { font-weight: 900; }
.g-brand__en { font-family: var(--font-latin); font-weight: 500; font-size: .72em; opacity: .78; letter-spacing: .02em; }
.g-hex {
  width: 22px; height: 22px; flex: 0 0 auto; position: relative;
  background: var(--grad-brand);
  clip-path: polygon(50% 0%, 95% 24%, 95% 76%, 50% 100%, 5% 76%, 5% 24%);
}
.g-hex::after {
  content: ''; position: absolute; inset: 6px;
  background: var(--ink);
  clip-path: polygon(50% 0%, 95% 24%, 95% 76%, 50% 100%, 5% 76%, 5% 24%);
}
.g-brand--light .g-hex::after { background: var(--paper); }

/* ---------- pills / tags ---------- */
.g-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 16px; border-radius: var(--r-pill);
  font-size: 13.5px; font-weight: 700; line-height: 1; letter-spacing: .01em;
  border: 1px solid var(--line-on-light);
}
.g-pill--dark { border-color: var(--line-on-dark); }
.g-pill--rose { background: var(--rose-fill); color: #fff; border-color: transparent; }
.g-pill--mint { background: var(--mint); color: var(--ink); border-color: transparent; }
.g-pill--outline-light { border-color: rgba(255,255,255,.32); color: #fff; }

/* ---------- buttons ---------- */
.g-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 15px 28px; border-radius: var(--r-pill);
  font-weight: 800; font-size: 15.5px; line-height: 1;
  transition: transform .28s var(--ease-out), box-shadow .28s var(--ease-out), background .28s;
  will-change: transform;
}
.g-btn:hover { transform: translateY(-2px); }
.g-btn--rose { background: var(--rose-fill); color: #fff; box-shadow: 0 10px 26px rgba(255,46,116,.34); }
.g-btn--rose:hover { box-shadow: 0 16px 40px rgba(255,46,116,.5); }
.g-btn--mint { background: var(--mint); color: var(--ink); box-shadow: 0 10px 26px rgba(111,247,192,.28); }
.g-btn--mint:hover { box-shadow: 0 16px 40px rgba(111,247,192,.42); }
.g-btn--ghost-dark { color: #fff; border: 1px solid rgba(255,255,255,.3); }
.g-btn--ghost-dark:hover { background: rgba(255,255,255,.08); }
.g-btn--ink { background: var(--ink); color: #fff; }
.g-btn--block { width: 100%; }
.g-btn--sm { padding: 11px 18px; font-size: 13.5px; }
.g-btn__arrow { transition: transform .28s var(--ease-out); }
.g-btn:hover .g-btn__arrow { transform: translateX(3px); }

/* ---------- cards ---------- */
.g-card {
  border-radius: var(--r-lg);
  background: var(--white);
  box-shadow: var(--shadow-card);
  padding: clamp(24px, 3vw, 38px);
}
.g-card--dark { background: var(--navy-2); color: var(--text-on-dark); box-shadow: var(--shadow-card-dark); }
.g-card--glass {
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.22);
  backdrop-filter: blur(18px) saturate(1.2);
  -webkit-backdrop-filter: blur(18px) saturate(1.2);
}
.g-card--glass-light {
  background: rgba(255,255,255,.68);
  border: 1px solid rgba(255,255,255,.85);
  backdrop-filter: blur(18px) saturate(1.2);
  -webkit-backdrop-filter: blur(18px) saturate(1.2);
  box-shadow: 0 24px 60px rgba(31,38,135,.12);
}

/* ---------- decorative ---------- */
.g-grid-bg {
  background-image: linear-gradient(rgba(255,255,255,.055) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(255,255,255,.055) 1px, transparent 1px);
  background-size: 64px 64px;
}
.g-noise::before {
  content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .05; z-index: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}
.g-glow { position: absolute; border-radius: 50%; filter: blur(90px); pointer-events: none; z-index: 0; }

/* ---------- reveal animations ---------- */
[data-reveal] { opacity: 0; transform: translateY(26px); transition: opacity .8s var(--ease-out), transform .8s var(--ease-out); }
[data-reveal].is-in { opacity: 1; transform: none; }
[data-reveal="left"] { transform: translateX(-28px); }
[data-reveal="right"] { transform: translateX(28px); }
[data-reveal="scale"] { transform: scale(.94); }
[data-reveal].is-in { transform: none; }
[data-reveal][data-delay="1"] { transition-delay: .08s; }
[data-reveal][data-delay="2"] { transition-delay: .16s; }
[data-reveal][data-delay="3"] { transition-delay: .24s; }
[data-reveal][data-delay="4"] { transition-delay: .32s; }
[data-reveal][data-delay="5"] { transition-delay: .40s; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  [data-reveal] { opacity: 1; transform: none; }
}

/* ---------- generic page nav (shared shell, not extracted to single-file) ---------- */
.site-nav {
  position: sticky; top: 0; z-index: 100;
  background: rgba(10,11,24,.94);
  border-bottom: 1px solid rgba(255,255,255,.09);
  color: #fff;
}
.site-nav__inner { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 66px; }
.site-nav__links { display: flex; align-items: center; gap: 6px; }
.site-nav__link { padding: 9px 15px; border-radius: var(--r-pill); font-size: 14px; font-weight: 700; opacity: .82; transition: .25s; white-space: nowrap; }
.site-nav__link:hover { opacity: 1; background: rgba(255,255,255,.09); }
.site-nav__link.is-active { background: #fff; color: var(--ink); opacity: 1; }
.site-nav__cta { margin-left: 6px; white-space: nowrap; }
@media (max-width: 760px) {
  .site-nav__inner { min-height: 58px; }
  .site-nav__brand { font-size: 14px; gap: 7px; }
  .site-nav__brand .g-hex { width: 16px; height: 16px; }
  .site-nav__brand .g-hex::after { inset: 4.5px; }
  .site-nav__links { gap: 4px; }
  .site-nav__link { padding: 7px 10px; font-size: 12.5px; }
  .site-nav__cta { padding: 9px 13px; font-size: 12.5px; margin-left: 2px; }
}
@media (max-width: 620px) {
  .site-nav__links .site-nav__link:not(.is-active) { display: none; }
}
@media (max-width: 420px) {
  .site-nav__links .site-nav__link.is-active { display: none; }
}

.site-footer { background: var(--ink); color: var(--text-on-dark); padding: 64px 0 48px; }
.site-footer__row { display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; justify-content: space-between; }
.site-footer__links { display: flex; flex-wrap: wrap; gap: 18px; }
.site-footer__links a { color: var(--text-on-dark-muted); font-size: 14px; }
.site-footer__links a:hover { color: #fff; }
.site-footer__meta { color: var(--text-on-dark-muted); font-size: 13px; line-height: 1.9; }
.site-footer__watermark { display: flex; align-items: center; gap: 10px; color: #fff; font-weight: 800; }

/* utility */
.g-sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
.g-tag-row { display: flex; flex-wrap: wrap; gap: 10px; }
