/* ===== Tokens ===== */
:root{
  --bg: #060b17;
  --bg-alt: #0a1120;
  --panel: #0d1526;
  --panel-2: #101a2e;
  --border: rgba(255,255,255,0.08);
  --border-strong: rgba(120,180,255,0.25);
  --text: #eaf1fb;
  --text-dim: #93a3bd;
  --text-faint: #5b6b87;
  --cyan: #22d3ee;
  --blue: #3b82f6;
  --violet: #7c6df2;
  --grad: linear-gradient(120deg, var(--cyan), var(--blue));
  --grad-soft: linear-gradient(135deg, rgba(34,211,238,0.18), rgba(59,130,246,0.10));
  --radius: 18px;
  --radius-sm: 12px;
  --font-zh: 'Noto Sans TC', 'PingFang TC', 'Microsoft JhengHei', sans-serif;
  --font-en: 'Inter', 'Noto Sans TC', sans-serif;
  --shadow-glow: 0 0 0 1px var(--border-strong), 0 20px 60px -20px rgba(34,211,238,0.25);
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-zh);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body[data-lang="en"]{ font-family:var(--font-en); }

img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
ul{list-style:none;}
svg{width:1em; height:1em; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;}

.container{
  width:100%;
  max-width:1180px;
  margin:0 auto;
  padding:0 24px;
}

/* language visibility */
[data-lang="zh"] .lang-en{ display:none; }
[data-lang="en"] .lang-zh{ display:none; }
[data-lang="en"] body, [data-lang="en"]{ }

.reg{ font-size:0.55em; vertical-align:super; }

/* ===== background grid ===== */
.bg-grid{
  position:fixed; inset:0; z-index:0; pointer-events:none;
  background-image:
    linear-gradient(rgba(120,170,255,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(120,170,255,0.05) 1px, transparent 1px);
  background-size:44px 44px;
  mask-image: radial-gradient(ellipse 90% 60% at 50% 0%, black 40%, transparent 100%);
}

/* ===== buttons ===== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:14px 26px;
  border-radius:999px;
  font-weight:600;
  font-size:15px;
  border:1px solid transparent;
  cursor:pointer;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
  white-space:nowrap;
}
.btn-primary{
  background:var(--grad);
  color:#03121c;
  box-shadow:0 10px 30px -10px rgba(34,211,238,0.55);
}
.btn-primary:hover{ transform:translateY(-2px); box-shadow:0 16px 36px -12px rgba(34,211,238,0.7); }
.btn-ghost{
  background:transparent;
  color:var(--text);
  border-color:var(--border-strong);
}
.btn-ghost:hover{ background:rgba(255,255,255,0.05); border-color:var(--cyan); }
.btn-sm{ padding:10px 18px; font-size:13.5px; }

/* ===== header ===== */
.site-header{
  position:sticky; top:0; z-index:100;
  background:rgba(6,11,23,0.75);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  height:76px;
  gap:20px;
}
.brand{ display:flex; align-items:center; gap:14px; flex-shrink:0; }
.brand-logo-img{ height:34px; width:auto; flex-shrink:0; }
.brand-text{ display:flex; flex-direction:column; line-height:1.25; }
.brand-zh{ font-weight:700; font-size:16.5px; letter-spacing:0.02em; }
.brand-sub{
  font-size:11px; font-weight:600; letter-spacing:0.08em;
  color:var(--cyan);
  display:flex; gap:5px; align-items:baseline;
}
.brand-sub .lang-zh, .brand-sub .lang-en{ color:var(--text-dim); font-weight:500; }

.main-nav{ display:flex; align-items:center; gap:30px; font-size:14.5px; }
.main-nav a{ color:var(--text-dim); transition:color .2s ease; position:relative; white-space:nowrap; }
.main-nav a:hover{ color:var(--text); }

.header-actions{ display:flex; align-items:center; gap:14px; }
.lang-toggle{
  display:flex; align-items:center; gap:4px;
  background:var(--panel-2);
  border:1px solid var(--border);
  border-radius:999px;
  padding:7px 12px;
  font-size:13px; font-weight:600;
  cursor:pointer;
  color:var(--text-dim);
  white-space:nowrap;
  flex-shrink:0;
}
.lang-toggle .lang-opt{ padding:2px 4px; border-radius:6px; white-space:nowrap; flex-shrink:0; }
.lang-toggle .lang-div{ opacity:0.4; flex-shrink:0; }
body[data-lang="zh"] .lang-toggle [data-set="zh"],
body[data-lang="en"] .lang-toggle [data-set="en"]{
  color:var(--bg); background:var(--cyan);
}

.nav-burger{
  display:none; flex-direction:column; justify-content:center; gap:5px;
  width:38px; height:38px; background:none; border:none; cursor:pointer;
}
.nav-burger span{ display:block; width:20px; height:2px; background:var(--text); margin:0 auto; transition:.25s; }

/* ===== hero ===== */
.hero{
  position:relative;
  padding-top:64px;
  overflow:hidden;
}
.mesh-canvas{
  position:absolute; inset:0; width:100%; height:100%;
  opacity:0.55;
}
.hero-inner{
  position:relative; z-index:2;
  display:grid;
  grid-template-columns:1.1fr 0.9fr;
  align-items:center;
  gap:40px;
  padding-top:60px;
  padding-bottom:70px;
  min-height:560px;
}
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-size:13px; font-weight:600; letter-spacing:0.04em;
  color:var(--cyan);
  margin-bottom:22px;
  padding:6px 14px 6px 10px;
  border:1px solid var(--border-strong);
  border-radius:999px;
  background:rgba(34,211,238,0.06);
}
.eyebrow .dot{
  width:7px; height:7px; border-radius:50%;
  background:var(--cyan);
  box-shadow:0 0 10px 2px rgba(34,211,238,0.8);
}
.hero h1{
  font-size:clamp(34px, 4.4vw, 56px);
  line-height:1.18;
  font-weight:900;
  letter-spacing:-0.01em;
  margin-bottom:22px;
}
.grad{
  background:var(--grad);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.hero-lead{
  font-size:17px;
  color:var(--text-dim);
  max-width:560px;
  margin-bottom:34px;
}
.hero-actions{ display:flex; gap:16px; flex-wrap:wrap; }

/* hero visual: core + orbit */
.hero-visual{
  position:relative;
  height:480px;
  display:flex; align-items:center; justify-content:center;
}
.core-orbit{ position:relative; width:340px; height:340px; }
.core-ring{
  position:absolute; inset:0; border-radius:50%;
  border:1px solid var(--border-strong);
}
.core-ring.r1{ inset:0; animation:spin 26s linear infinite; }
.core-ring.r2{ inset:38px; border-color:rgba(59,130,246,0.25); animation:spin 20s linear infinite reverse; }
.core-ring.r3{ inset:76px; border-color:rgba(124,109,242,0.25); border-style:dashed; animation:spin 34s linear infinite; }
.core-center{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:112px; height:112px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #2be7ff, #1a5fe0 60%, #0c2a63 100%);
  box-shadow:0 0 60px 10px rgba(34,211,238,0.45), inset 0 0 30px rgba(255,255,255,0.25);
  display:flex; align-items:center; justify-content:center;
  animation:pulse 3.2s ease-in-out infinite;
}
.core-label{ font-family:var(--font-en); font-weight:800; font-size:26px; color:#03121c; letter-spacing:0.05em; }
.satellite{
  position:absolute; width:44px; height:44px; border-radius:14px;
  background:var(--panel-2); border:1px solid var(--border-strong);
  display:flex; align-items:center; justify-content:center;
  color:var(--cyan);
  box-shadow:0 8px 24px -8px rgba(0,0,0,0.6);
}
.satellite svg{ width:20px; height:20px; }
.satellite.s1{ top:-6px; left:50%; transform:translateX(-50%); animation:float 5s ease-in-out infinite; }
.satellite.s2{ bottom:20px; right:-14px; animation:float 5.6s ease-in-out infinite 0.4s; }
.satellite.s3{ bottom:20px; left:-14px; animation:float 4.8s ease-in-out infinite 0.8s; }
.satellite.s4{ top:40px; right:-20px; animation:float 6s ease-in-out infinite 0.2s; }

@keyframes spin{ to{ transform:rotate(360deg); } }
@keyframes pulse{ 0%,100%{ box-shadow:0 0 60px 10px rgba(34,211,238,0.45), inset 0 0 30px rgba(255,255,255,0.25);} 50%{ box-shadow:0 0 80px 18px rgba(34,211,238,0.65), inset 0 0 30px rgba(255,255,255,0.35);} }
@keyframes float{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-10px); } }

/* stat bar */
.stat-bar{
  position:relative; z-index:2;
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:1px;
  background:var(--border);
  border:1px solid var(--border);
  border-radius:var(--radius);
  overflow:hidden;
  margin-bottom:-1px;
}
.stat{
  background:rgba(10,17,32,0.9);
  padding:26px 20px;
  text-align:center;
}
.stat-num{
  font-family:var(--font-en);
  font-size:32px; font-weight:800;
  background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.stat-num .plus{ font-size:0.6em; }
.stat-label{ display:block; margin-top:6px; font-size:13px; color:var(--text-dim); }

/* ===== sections ===== */
.section{ padding:110px 0; position:relative; z-index:1; }
.section-alt{ background:linear-gradient(180deg, transparent, rgba(255,255,255,0.02) 12%, rgba(255,255,255,0.02) 88%, transparent); }
.section-head{ max-width:720px; margin-bottom:56px; }
.tag{
  display:inline-block;
  font-size:13px; font-weight:700; letter-spacing:0.06em;
  color:var(--cyan);
  margin-bottom:14px;
  text-transform:uppercase;
}
.tag-light{ color:var(--cyan); }
.section-head h2{
  font-size:clamp(26px, 3vw, 38px);
  font-weight:800;
  line-height:1.32;
}
.section-desc{ margin-top:14px; color:var(--text-dim); font-size:15.5px; max-width:640px; }

/* about */
.about-grid{
  display:grid;
  grid-template-columns:1.3fr 0.9fr;
  gap:56px;
  align-items:start;
}
.about-copy p{ color:var(--text-dim); margin-bottom:18px; font-size:15.5px; }
.about-copy strong{ color:var(--text); }

.about-flow{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:36px 26px;
  position:sticky; top:110px;
}
.flow-heading{
  font-size:12px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--text-faint); margin-bottom:20px;
}
.flow-list{ display:flex; flex-direction:column; }
.flow-step{ display:flex; align-items:stretch; gap:18px; }
.flow-node{ display:flex; flex-direction:column; align-items:center; flex-shrink:0; }
.flow-icon{
  width:48px; height:48px; border-radius:50%;
  background:var(--panel-2); border:1px solid var(--border-strong);
  display:flex; align-items:center; justify-content:center;
  color:var(--blue);
  flex-shrink:0;
}
.flow-icon svg{ width:21px; height:21px; }
.flow-connector{
  width:2px; flex:1 1 auto;
  min-height:26px;
  margin:6px 0;
  background:linear-gradient(180deg, rgba(120,170,255,0.35), rgba(34,211,238,0.35));
}
.flow-step.is-core .flow-icon{ color:var(--bg); background:var(--grad); border-color:transparent; box-shadow:0 0 24px rgba(34,211,238,0.5); }
.flow-info{ padding:6px 0 28px; display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 10px; }
.flow-step:last-child .flow-info{ padding-bottom:6px; }
.flow-index{
  font-family:var(--font-en); font-size:11.5px; font-weight:700;
  color:var(--text-faint); letter-spacing:0.04em;
}
.flow-text{ font-size:15px; font-weight:700; color:var(--text); }
.flow-step.is-core .flow-text{ color:var(--cyan); }
.flow-step.is-core .flow-index{ color:var(--cyan); }
.flow-desc{ flex-basis:100%; font-size:12.5px; color:var(--text-dim); }
.flow-caption{
  margin-top:6px; padding-top:22px; border-top:1px solid var(--border);
  font-size:13.5px; color:var(--text-dim); text-align:center; line-height:1.6;
}

/* locnavi brand section */
.section-locnavi{ padding:0 0 110px; }
.locnavi-panel{
  display:grid;
  grid-template-columns:1.2fr 0.8fr;
  gap:40px;
  align-items:center;
  background:
    radial-gradient(ellipse 80% 100% at 100% 0%, rgba(34,211,238,0.14), transparent 60%),
    linear-gradient(135deg, #0c1a33, #0a1120 60%);
  border:1px solid var(--border-strong);
  border-radius:28px;
  padding:56px;
  box-shadow:var(--shadow-glow);
}
.locnavi-title{
  display:flex;
  align-items:flex-start;
  gap:4px;
  margin-bottom:20px;
}
.locnavi-title .reg{
  font-family:var(--font-en);
  font-size:20px;
  font-weight:800;
  color:var(--cyan);
}
.locnavi-logo-img{
  display:block;
  height:clamp(34px, 4.6vw, 54px);
  width:auto;
  filter:drop-shadow(0 0 18px rgba(34,211,238,0.35));
}
.locnavi-copy p{ color:var(--text-dim); margin-bottom:16px; font-size:15.5px; max-width:560px; }
.locnavi-copy strong{ color:var(--text); }
.locnavi-badges{ display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.badge{
  font-size:12.5px; font-weight:600;
  padding:9px 16px;
  border-radius:999px;
  border:1px solid var(--border-strong);
  color:var(--text);
  background:rgba(34,211,238,0.06);
}
.locnavi-mark{ display:flex; align-items:center; justify-content:center; }
.locnavi-mark svg{ width:100%; max-width:280px; height:auto; }
.l-ring-outer{ fill:none; stroke:rgba(120,170,255,0.2); stroke-width:1; }
.l-node{ fill:var(--blue); stroke:rgba(6,11,23,0.8); stroke-width:2; }
.l-line{ stroke:rgba(120,170,255,0.4); stroke-width:1; stroke-dasharray:3 4; }
.l-pin{ fill:#f4faff; filter:drop-shadow(0 0 14px rgba(34,211,238,0.55)); }
.l-pin-dot{ fill:var(--blue); stroke:#f4faff; stroke-width:2.5; }
.l-pulse-ring{ fill:none; stroke:var(--cyan); stroke-width:2; opacity:0.6; transform-origin:100px 150px; animation:pulse-ring 2.6s ease-out infinite; }
.l-pulse-ring-delay{ animation-delay:1.3s; }
@keyframes pulse-ring{ 0%{ transform:scale(0.6); opacity:0.7; } 100%{ transform:scale(2.4); opacity:0; } }

/* tech grid */
.tech-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; }
.tech-card{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:34px 28px;
  transition:border-color .2s ease, transform .2s ease;
}
.tech-card:hover{ border-color:var(--border-strong); transform:translateY(-4px); }
.tech-icon{
  width:52px; height:52px; border-radius:14px;
  background:var(--grad-soft); border:1px solid var(--border-strong);
  display:flex; align-items:center; justify-content:center;
  color:var(--cyan); margin-bottom:20px;
}
.tech-icon svg{ width:24px; height:24px; }
.tech-card h3{ font-size:18px; font-weight:700; margin-bottom:12px; line-height:1.4; }
.tech-card p{ color:var(--text-dim); font-size:14.5px; }

.tech-card.is-clickable{ cursor:pointer; display:flex; flex-direction:column; }
.tech-card.is-clickable:focus-visible{ outline:2px solid var(--cyan); outline-offset:2px; }
.tech-card-cta{
  display:flex; align-items:center; gap:6px;
  margin-top:20px; padding-top:18px; border-top:1px solid var(--border);
  font-size:13px; font-weight:600; color:var(--cyan);
}
.tech-card-cta-chev{ width:14px; height:14px; transition:transform .25s ease; }
.tech-card.is-active{ border-color:var(--cyan); box-shadow:0 0 0 1px rgba(34,211,238,0.25), 0 20px 40px -20px rgba(34,211,238,0.35); }
.tech-card.is-active .tech-card-cta{ color:var(--text); }
.tech-card.is-active .tech-card-cta-chev{ transform:rotate(180deg); color:var(--cyan); }

/* technology comparison table */
.tech-compare-panels{ margin-top:56px; }
.tech-compare{ margin-top:0; }
.tech-compare-title{ font-size:17px; font-weight:700; margin-bottom:12px; }
.tech-compare-desc{ font-size:14px; color:var(--text-dim); margin-bottom:20px; max-width:640px; }
.video-frame{
  border-radius:var(--radius); overflow:hidden;
  border:1px solid var(--border-strong);
  box-shadow:var(--shadow-glow);
  background:#000;
  max-width:820px;
}
.tech-video{ width:100%; height:auto; display:block; aspect-ratio:1280/792; background:#000; }
.compare-table-wrap{
  overflow-x:auto; -webkit-overflow-scrolling:touch;
  border:1px solid var(--border); border-radius:var(--radius);
  background:var(--panel);
}
.compare-table{ width:100%; border-collapse:collapse; min-width:640px; }
.compare-table th, .compare-table td{
  text-align:left; padding:16px 20px; font-size:13.5px; line-height:1.6;
  border-bottom:1px solid var(--border); vertical-align:top;
}
.compare-table thead th{
  font-size:12.5px; font-weight:700; letter-spacing:0.03em;
  color:var(--text-faint); text-transform:uppercase;
  background:var(--panel-2); white-space:nowrap;
}
.compare-table tbody th{
  font-weight:700; color:var(--text); white-space:nowrap; background:var(--panel);
}
.compare-table td{ color:var(--text-dim); }
.compare-table tbody tr:last-child th, .compare-table tbody tr:last-child td{ border-bottom:none; }
.compare-table td.is-highlight, .compare-table th.is-highlight{
  background:rgba(34,211,238,0.06);
  color:var(--text);
  position:relative;
}
.compare-table th.is-highlight{ color:var(--cyan); }
.compare-table td.is-highlight::before{
  content:''; position:absolute; left:0; top:0; bottom:0; width:2px;
  background:var(--grad);
}
.compare-star{ color:#facc15; margin-right:6px; font-size:12px; }

/* applications */
.app-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:20px; }
.app-card{
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  padding:26px;
}
.app-icon{
  width:44px; height:44px; border-radius:12px;
  background:var(--panel-2); border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  color:var(--blue); margin-bottom:16px;
}
.app-icon svg{ width:20px; height:20px; }
.app-card h3{ font-size:16px; font-weight:700; margin-bottom:8px; }
.app-card p{ font-size:13.5px; color:var(--text-dim); }
.app-card-more{ background:var(--grad-soft); border-style:dashed; border-color:var(--border-strong); }

/* cases */
.case-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:22px; }
.case-card{
  border-radius:var(--radius-sm);
  overflow:hidden;
  border:1px solid var(--border);
  background:var(--panel);
}
.case-frame{ position:relative; aspect-ratio:16/11; overflow:hidden; background:#0a1424; }
.case-frame img{ width:100%; height:100%; object-fit:cover; filter:saturate(0.85) brightness(0.92) contrast(1.05); transition:transform .4s ease; }
.case-card:hover .case-frame img{ transform:scale(1.05); }
.case-card figcaption{ padding:14px 18px; font-size:13.5px; font-weight:600; color:var(--text-dim); display:flex; flex-direction:column; }
.case-card-cta{
  display:flex; align-items:center; justify-content:center;
  background:var(--grad-soft);
  border-style:dashed; border-color:var(--border-strong);
  padding:26px;
}
.case-cta-inner{ text-align:center; }
.case-cta-inner p{ font-size:15px; font-weight:600; margin-bottom:16px; }

/* awards */
.award-panel{
  display:grid; grid-template-columns:auto 1fr; gap:36px;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:44px;
  align-items:start;
}
.award-badge{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  width:110px; height:110px; border-radius:50%;
  background:var(--grad);
  color:#03121c;
  flex-shrink:0;
}
.award-badge svg{ width:34px; height:34px; }
.award-badge span{ font-family:var(--font-en); font-weight:800; font-size:15px; }
.award-copy h3{ font-size:19px; font-weight:700; margin-bottom:14px; }
.award-copy p{ color:var(--text-dim); font-size:14.5px; margin-bottom:12px; }

/* contact */
.contact-panel{
  display:grid; grid-template-columns:1.1fr 0.9fr; gap:50px; align-items:center;
  background:var(--panel);
  border:1px solid var(--border);
  border-radius:28px;
  padding:56px;
}
.contact-copy p{ color:var(--text-dim); margin-bottom:10px; font-size:15px; }
.contact-list{ margin:26px 0; display:flex; flex-direction:column; gap:16px; }
.contact-list li{ display:flex; align-items:flex-start; gap:12px; font-size:14.5px; color:var(--text-dim); }
.contact-list a{ color:var(--text); font-weight:600; }
.contact-icon{
  width:34px; height:34px; border-radius:10px; flex-shrink:0;
  background:var(--panel-2); border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center; color:var(--cyan);
}
.contact-icon svg{ width:16px; height:16px; }
.contact-visual{ display:flex; flex-direction:column; gap:14px; width:100%; }
.map-embed-wrap{
  position:relative; width:100%; aspect-ratio:1/1;
  border-radius:var(--radius); overflow:hidden;
  border:1px solid var(--border-strong);
  box-shadow:var(--shadow-glow);
  background:var(--panel-2);
}
.map-embed{
  width:100%; height:100%; border:0; display:block;
  filter:invert(92%) hue-rotate(180deg) contrast(90%) brightness(0.95);
}
.map-open-link{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  align-self:center;
  font-size:13.5px; font-weight:600; color:var(--cyan);
  padding:10px 18px; border-radius:999px;
  border:1px solid var(--border-strong);
  transition:background .2s ease, border-color .2s ease;
}
.map-open-link:hover{ background:rgba(34,211,238,0.08); border-color:var(--cyan); }
.map-open-link svg{ width:14px; height:14px; }

/* ===== footer ===== */
.site-footer{ border-top:1px solid var(--border); padding:56px 0 34px; position:relative; z-index:1; }
.footer-inner{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:28px; align-items:flex-start; margin-bottom:30px; }
.footer-logo-img{ height:28px; width:auto; margin-bottom:12px; }
.footer-brand .brand-zh{ font-weight:700; font-size:16px; display:block; }
.footer-trademark{ font-size:12.5px; color:var(--text-faint); margin-top:10px; max-width:340px; }
.footer-nav{ display:flex; gap:24px; flex-wrap:wrap; font-size:13.5px; color:var(--text-dim); }
.footer-nav a:hover{ color:var(--text); }
.footer-copy{ font-size:12.5px; color:var(--text-faint); border-top:1px solid var(--border); padding-top:22px; }

/* ===== responsive ===== */
@media (max-width: 980px){
  .main-nav{ display:none; }
  .nav-burger{ display:flex; }
  .hero-inner{ grid-template-columns:1fr; }
  .hero-visual{ height:340px; order:-1; }
  .core-orbit{ width:260px; height:260px; }
  .about-grid{ grid-template-columns:1fr; }
  .about-flow{ position:static; }
  .locnavi-panel{ grid-template-columns:1fr; padding:36px; }
  .locnavi-mark{ order:-1; max-width:220px; margin:0 auto; }
  .tech-grid{ grid-template-columns:1fr; }
  .app-grid{ grid-template-columns:repeat(2, 1fr); }
  .case-grid{ grid-template-columns:repeat(2, 1fr); }
  .award-panel{ grid-template-columns:1fr; text-align:left; padding:32px; }
  .contact-panel{ grid-template-columns:1fr; padding:36px; }
  .contact-visual{ order:-1; max-width:360px; margin:0 auto; }
  .stat-bar{ grid-template-columns:repeat(2, 1fr); }
}
@media (max-width: 640px){
  .header-inner{ height:68px; }
  .brand-logo-img{ height:26px; }
  .brand-zh{ font-size:15px; }
  .btn-sm{ display:none; }
  .app-grid{ grid-template-columns:1fr; }
  .case-grid{ grid-template-columns:1fr; }
  .section{ padding:70px 0; }
  .hero-inner{ padding-top:30px; padding-bottom:44px; }
  .lang-toggle{ padding:6px 9px; font-size:12px; }
}

/* mobile nav drawer */
@media (max-width: 980px){
  .main-nav.open{
    display:flex; flex-direction:column;
    position:absolute; top:76px; left:0; right:0;
    background:rgba(6,11,23,0.98);
    backdrop-filter:blur(14px);
    border-bottom:1px solid var(--border);
    padding:20px 24px 28px;
    gap:18px;
    font-size:16px;
  }
}
