/* ============================================================
   迅翼 SwiftWing — 深空科技风 (v2)
   参考: SpaceX · 工业光魔 · 星际穿越
   ============================================================ */

/* ---- CSS Variables ---- */
:root {
  /* Background */
  --bg-deep:    #030305;
  --bg-primary: #08080f;
  --bg-surface: #0d0d18;
  --bg-elevated:#141422;
  --bg-overlay: rgba(3,3,5,0.85);

  /* Borders */
  --border-subtle:  rgba(255,255,255,0.05);
  --border-default: rgba(255,255,255,0.08);
  --border-glow:    rgba(74,142,255,0.12);

  /* Text */
  --text-primary:   #e8e8f0;
  --text-secondary: #9090a8;
  --text-muted:     #585870;
  --text-white:     #ffffff;

  /* Accent */
  --accent:         #4a8eff;
  --accent-glow:    rgba(74,142,255,0.25);
  --accent-warm:    #d4a85c;
  --accent-warm-glow:rgba(212,168,92,0.18);

  /* Spacing */
  --space-xs:  0.5rem;
  --space-sm:  1rem;
  --space-md:  1.5rem;
  --space-lg:  2rem;
  --space-xl:  3rem;
  --space-2xl: 5rem;
  --space-3xl: 7rem;

  /* Radius */
  --radius-sm: 4px;
  --radius:    8px;
  --radius-lg: 14px;
  --radius-xl: 20px;

  /* Transitions */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --duration: 0.4s;
  --duration-slow: 0.7s;

  /* Typography */
  --font: "Noto Sans SC Variable", "Noto Sans SC", sans-serif;
  --font-mono: "JetBrains Mono Variable", "Noto Sans SC Variable", monospace;
  --display-line-height:1.1;
  --heading-line-height:1.16;
}

/* ---- Reset ---- */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; font-size:16px; -webkit-font-smoothing:antialiased; }
body {
  font-family:var(--font);
  color:var(--text-primary);
  background:#000000;
  line-height:1.7;
  overflow-x:hidden;
}
a { text-decoration:none; color:inherit; transition:color var(--duration) var(--ease-out); }
ul { list-style:none; }
img { max-width:100%; display:block; }
.container { max-width:1200px; margin:0 auto; padding:0 var(--space-md); }


/* ---- Typography ---- */
em { font-style:normal; color:var(--accent); }
.section { padding: var(--space-3xl) 0; }
.section-header { text-align:center; margin-bottom:var(--space-xl); }
.section-tag {
  display:inline-block;
  font-family:var(--font-mono);
  font-size:0.7rem;
  letter-spacing:0.25em;
  color:var(--accent);
  text-transform:uppercase;
  border:1px solid var(--border-glow);
  padding:0.3em 1em;
  border-radius:2px;
  margin-bottom:var(--space-sm);
}
.section-title {
  font-size:2.4rem;
  font-weight:300;
  letter-spacing:0.02em;
  color:var(--text-white);
  margin-bottom:var(--space-xs);
}
.section-subtitle {
  font-size:1rem;
  color:var(--text-secondary);
  font-weight:300;
}


/* ---- Navbar — Transparent over video, solid on scroll ---- */
.navbar {
  position:fixed; top:0; left:0; right:0; z-index:1000;
  padding:0 var(--space-md);
  height:64px;
  display:flex; align-items:center;
  background:transparent;
  transition:all 0.4s var(--ease-out);
}
.navbar.scrolled {
  background:#ffffff;
  border-bottom:1px solid #e5e5e5;
  box-shadow:0 1px 6px rgba(0,0,0,0.06);
}
.nav-container {
  max-width:1200px; width:100%; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between;
}
.nav-logo { display:flex; align-items:center; gap:10px; }
.nav-logo .logo-icon { font-size:1.4rem; color:var(--accent); transition:color 0.4s; }
.navbar.scrolled .logo-icon { color:var(--accent); }
.nav-logo .logo-text { display:flex; flex-direction:column; line-height:1.1; }
.nav-logo .logo-cn {
  font-size:1rem; font-weight:600; color:#fff; letter-spacing:0.15em;
  transition:color 0.4s;
}
.navbar.scrolled .logo-cn { color:#111; }
.nav-logo .logo-en {
  font-size:0.65rem; font-weight:400; color:rgba(255,255,255,0.6); letter-spacing:0.2em; text-transform:uppercase;
  transition:color 0.4s;
}
.navbar.scrolled .logo-en { color:#888; }
.nav-menu { display:flex; gap:2px; }
.nav-link {
  display:block;
  padding:0.5rem 1rem;
  font-size:0.82rem;
  font-weight:500;
  color:rgba(255,255,255,0.7);
  letter-spacing:0.04em;
  border-radius:var(--radius-sm);
  transition:all var(--duration) var(--ease-out);
  position:relative;
}
.navbar.scrolled .nav-link { color:#555; }
.nav-link:hover { color:#fff; background:rgba(255,255,255,0.1); }
.navbar.scrolled .nav-link:hover { color:#111; background:#f5f5f5; }
.nav-link.active { color:#fff; }
.navbar.scrolled .nav-link.active { color:#111; }
.nav-link.active::after {
  content:''; position:absolute; bottom:2px; left:50%; transform:translateX(-50%);
  width:20px; height:2px; background:var(--accent);
}
.nav-toggle { display:none; background:none; border:none; cursor:pointer; padding:8px; }
.hamburger-line { display:block; width:22px; height:2px; background:#fff; margin:5px 0; transition:all var(--duration) var(--ease-out); }
.navbar.scrolled .hamburger-line { background:#111; }


/* ---- Banner Video ---- */
.banner-video {
  position:absolute; inset:0; z-index:0;
  width:100%; height:100%; object-fit:cover;
}
/* ---- Banner (Home) ---- */
.banner {
  position:relative; min-height:100vh;
  display:flex; align-items:center; justify-content:center;
  background-color:#000;
  overflow:hidden;
  padding-top:64px;
}
.banner::before {
  content:''; position:absolute; inset:0;
  background:radial-gradient(ellipse at 50% 30%, rgba(0,0,0,0.2) 0%, transparent 60%),
             linear-gradient(180deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.6) 100%);
  z-index:1;
}
.banner-grid {
  position:absolute; inset:0; z-index:1;
  background-image:radial-gradient(rgba(255,255,255,0.06) 1px, transparent 1px);
  background-size:40px 40px;
  mask-image:radial-gradient(ellipse at center, black 30%, transparent 70%);
}
.banner-canvas { position:absolute; inset:0; z-index:1; pointer-events:none; }
.banner-overlay { display:none; }
.banner-content {
  position:absolute; z-index:2;
  bottom:12%; left:0; right:0;
  max-width:680px;
  padding:0 var(--space-xl);
  text-align:left;
}
.banner-badge {
  display:inline-block;
  font-size:0.72rem; font-weight:400; letter-spacing:0.2em;
  color:var(--accent);
  border:1px solid var(--border-glow);
  padding:0.5em 1.4em; border-radius:2px;
  margin-bottom:var(--space-xl);
  backdrop-filter:blur(10px);
  background:rgba(3,3,5,0.4);
}
.banner-title { margin-bottom:var(--space-lg); }
.title-main {
  display:block;
  font-size:clamp(2.4rem, 6vw, 4.2rem);
  font-weight:200; letter-spacing:0.06em;
  color:var(--text-white);
  line-height:1.2;
}
.title-sub {
  display:block;
  font-size:clamp(1rem, 2.5vw, 1.4rem);
  font-weight:300; letter-spacing:0.15em;
  color:var(--text-secondary);
  margin-top:var(--space-sm);
}
.banner-desc {
  font-size:0.95rem; color:var(--text-secondary); font-weight:300;
  line-height:1.8; max-width:560px; margin:0 auto var(--space-xl);
}
.banner-actions { display:flex; gap:var(--space-sm); justify-content:center; flex-wrap:wrap; }
.scroll-hint {
  position:absolute; bottom:36px; left:50%; transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:8px;
}
.scroll-text { font-size:0.65rem; letter-spacing:0.2em; color:var(--text-muted); text-transform:uppercase; }
.scroll-arrow {
  width:20px; height:20px; border-right:1px solid var(--text-muted); border-bottom:1px solid var(--text-muted);
  transform:rotate(45deg); animation:scrollBounce 1.5s ease-in-out infinite;
}
@keyframes scrollBounce { 0%,100%{transform:rotate(45deg) translateY(0);} 50%{transform:rotate(45deg) translateY(6px);} }


/* ---- Page Banner (sub-pages) ---- */
.page-banner {
  position:relative; min-height:36vh;
  display:flex; align-items:center; justify-content:center;
  background:var(--bg-deep);
  overflow:hidden;
  padding-top:80px; padding-bottom:var(--space-xl);
}
.page-banner::before {
  content:''; position:absolute; inset:0;
  background:radial-gradient(ellipse at 30% 50%, rgba(74,142,255,0.06) 0%, transparent 60%);
}
.page-banner .banner-grid {
  position:absolute; inset:0;
  background-image:radial-gradient(rgba(255,255,255,0.015) 1px, transparent 1px);
  background-size:50px 50px;
}
.page-banner .banner-overlay { display:none; }
.page-banner-content { position:relative; z-index:2; text-align:center; }
.page-banner-tag {
  font-family:var(--font-mono); font-size:0.7rem; letter-spacing:0.3em;
  color:var(--accent); margin-bottom:var(--space-sm);
}
.page-banner-title {
  font-size:clamp(2rem, 5vw, 3.2rem);
  font-weight:200; letter-spacing:0.08em;
  color:var(--text-white);
}
.page-banner-desc { font-size:0.95rem; color:var(--text-secondary); font-weight:300; margin-top:var(--space-sm); }


/* ---- Cards (Shared) ---- */
.feature-card, .opensource-card, .product-card, .news-card, .doc-card {
  background:var(--bg-surface);
  border:1px solid var(--border-subtle);
  border-radius:var(--radius-lg);
  transition:all var(--duration) var(--ease-out);
  overflow:hidden;
}
.feature-card:hover, .opensource-card:hover, .product-card:hover, .news-card:hover, .doc-card:hover {
  border-color:var(--border-glow);
  box-shadow:0 0 40px rgba(74,142,255,0.06), 0 0 0 1px var(--border-glow);
  transform:translateY(-2px);
}


/* ---- Feature Cards ---- */
.features-grid {
  display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-md);
}
.feature-card { padding:var(--space-xl) var(--space-lg); text-align:center; }
.feature-icon { font-size:2rem; margin-bottom:var(--space-md); filter:grayscale(0.2); }
.feature-title { font-size:1.1rem; font-weight:400; color:var(--text-white); margin-bottom:var(--space-sm); letter-spacing:0.04em; }
.feature-desc { font-size:0.88rem; color:var(--text-secondary); font-weight:300; line-height:1.7; }


/* ---- Product Hero (S7) ---- */
.product-hero {
  background:var(--bg-elevated);
  border:1px solid var(--border-subtle);
  border-radius:var(--radius-xl);
  padding:var(--space-2xl);
  position:relative;
  overflow:hidden;
}
.product-hero::before {
  content:''; position:absolute; inset:0;
  background:radial-gradient(ellipse at 70% 30%, rgba(74,142,255,0.06) 0%, transparent 60%);
  pointer-events:none;
}
.product-hero-badge {
  display:inline-block;
  font-family:var(--font-mono); font-size:0.68rem; letter-spacing:0.2em;
  color:var(--accent-warm);
  border:1px solid var(--accent-warm-glow);
  padding:0.3em 1em; border-radius:2px;
  margin-bottom:var(--space-lg);
}
.product-hero-content { display:flex; gap:var(--space-2xl); align-items:center; position:relative; z-index:1; }
.product-hero-text { flex:1; }
.product-hero-title { font-size:2rem; font-weight:200; letter-spacing:0.06em; color:var(--text-white); margin-bottom:var(--space-xs); }
.product-hero-subtitle { font-size:0.9rem; color:var(--accent); font-weight:300; letter-spacing:0.12em; margin-bottom:var(--space-lg); }
.product-hero-desc { font-size:0.9rem; color:var(--text-secondary); font-weight:300; line-height:1.8; margin-bottom:var(--space-lg); }
.product-hero-specs {
  display:grid; grid-template-columns:repeat(4,1fr); gap:var(--space-sm);
  margin-bottom:var(--space-xl);
}
.product-hero-specs li {
  font-size:0.8rem; color:var(--text-secondary);
  padding:var(--space-sm); border:1px solid var(--border-subtle); border-radius:var(--radius-sm);
  text-align:center;
}
.product-hero-specs strong { display:block; color:var(--text-white); font-weight:400; font-size:0.7rem; letter-spacing:0.08em; margin-bottom:4px; }
.product-hero-actions { display:flex; gap:var(--space-sm); }
.product-hero-image { flex:0 0 360px; }


/* ---- Product Cards ---- */
.products-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-md); }
.product-card { padding:0; }
.product-img { aspect-ratio:16/10; overflow:hidden; background:var(--bg-deep); }
.product-body { padding:var(--space-lg); }
.product-name { font-size:1.05rem; font-weight:400; color:var(--text-white); margin-bottom:var(--space-xs); }
.product-brief { font-size:0.82rem; color:var(--text-secondary); font-weight:300; margin-bottom:var(--space-md); }
.product-mini-specs { display:flex; gap:var(--space-md); margin-bottom:var(--space-sm); font-size:0.75rem; color:var(--text-muted); font-family:var(--font-mono); }
.product-tag {
  display:inline-block; font-size:0.65rem; letter-spacing:0.15em;
  color:var(--accent); border:1px solid var(--border-glow);
  padding:0.25em 0.8em; border-radius:2px;
}
.product-tag.tag-hot { color:var(--accent-warm); border-color:var(--accent-warm-glow); }


/* ---- Open Source Cards ---- */
.opensource-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-md); }
.opensource-card { padding:0; }
.opensource-img { aspect-ratio:16/11; overflow:hidden; background:var(--bg-deep); }
.opensource-body { padding:var(--space-lg); }
.opensource-title { font-size:1.1rem; font-weight:400; color:var(--text-white); margin-bottom:var(--space-sm); }
.opensource-desc { font-size:0.84rem; color:var(--text-secondary); font-weight:300; line-height:1.7; margin-bottom:var(--space-md); }
.opensource-meta { display:flex; gap:var(--space-sm); margin-bottom:var(--space-sm); }
.lang-tag {
  font-family:var(--font-mono); font-size:0.65rem;
  color:var(--text-muted); border:1px solid var(--border-default);
  padding:0.2em 0.6em; border-radius:var(--radius-sm);
}
.stars { font-family:var(--font-mono); font-size:0.7rem; color:var(--accent-warm); margin-left:auto; }
.opensource-link { font-size:0.78rem; color:var(--accent); font-weight:400; letter-spacing:0.04em; }


/* ---- Doc Cards ---- */
.docs-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:var(--space-md); }
.doc-card { display:block; padding:var(--space-xl) var(--space-lg); }
.doc-card-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:var(--space-lg); }
.doc-icon { font-size:2rem; line-height:1; }
.doc-arrow { font-size:1rem; color:var(--text-muted); transition:color var(--duration) var(--ease-out); }
.doc-card:hover .doc-arrow { color:var(--accent); }
.doc-title { font-size:1rem; font-weight:400; color:var(--text-white); margin-bottom:var(--space-sm); }
.doc-desc { font-size:0.8rem; color:var(--text-secondary); font-weight:300; line-height:1.6; margin-bottom:var(--space-lg); }
.doc-meta { display:flex; justify-content:space-between; align-items:center; }
.doc-tag { font-family:var(--font-mono); font-size:0.65rem; color:var(--text-muted); }
.doc-type {
  font-family:var(--font-mono); font-size:0.62rem; letter-spacing:0.12em;
  color:var(--accent); border:1px solid var(--border-glow);
  padding:0.2em 0.7em; border-radius:2px;
}


/* ---- News Cards ---- */
.news-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-md); }
.news-card.news-featured { grid-column:1/-1; display:grid; grid-template-columns:1fr 1fr; }
.news-card { padding:0; }
.news-img { overflow:hidden; background:var(--bg-deep); }
.news-featured .news-img { aspect-ratio:16/9; }
.news-card:not(.news-featured) .news-img { aspect-ratio:16/10; }
.news-body { padding:var(--space-lg); }
.news-date { font-family:var(--font-mono); font-size:0.68rem; color:var(--text-muted); margin-right:var(--space-sm); }
.news-cat {
  font-size:0.65rem; letter-spacing:0.1em;
  color:var(--accent); border:1px solid var(--border-glow);
  padding:0.15em 0.7em; border-radius:2px;
}
.news-title { font-size:1.1rem; font-weight:400; color:var(--text-white); margin:var(--space-sm) 0; line-height:1.4; }
.news-excerpt { font-size:0.84rem; color:var(--text-secondary); font-weight:300; line-height:1.7; margin-bottom:var(--space-sm); }
.news-link { font-size:0.78rem; color:var(--accent); font-weight:400; letter-spacing:0.04em; }


/* ---- Wiki Banner ---- */
.wiki-banner {
  background:var(--bg-elevated);
  border:1px solid var(--border-subtle);
  border-radius:var(--radius-xl);
  padding:var(--space-2xl);
  display:flex; gap:var(--space-2xl); align-items:center;
  position:relative; overflow:hidden;
}
.wiki-banner::before {
  content:''; position:absolute; inset:0;
  background:radial-gradient(ellipse at 20% 50%, rgba(212,168,92,0.04) 0%, transparent 50%);
  pointer-events:none;
}
.wiki-content { flex:1; position:relative; z-index:1; }
.wiki-title { font-size:1.8rem; font-weight:200; color:var(--text-white); margin-bottom:var(--space-md); letter-spacing:0.04em; }
.wiki-desc { font-size:0.9rem; color:var(--text-secondary); font-weight:300; line-height:1.7; margin-bottom:var(--space-lg); }
.wiki-links { display:grid; grid-template-columns:repeat(2,1fr); gap:var(--space-sm); margin-bottom:var(--space-xl); }
.wiki-links li { font-size:0.82rem; color:var(--text-secondary); font-weight:300; padding:var(--space-xs) 0; }
.wiki-visual { flex:0 0 320px; position:relative; z-index:1; }


/* ---- Contact ---- */
.contact-content { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-2xl); align-items:start; }
.contact-heading { font-size:1.4rem; font-weight:300; color:var(--text-white); margin-bottom:var(--space-sm); letter-spacing:0.04em; }
.contact-desc { font-size:0.9rem; color:var(--text-secondary); font-weight:300; line-height:1.7; margin-bottom:var(--space-xl); }
.contact-list { display:flex; flex-direction:column; gap:var(--space-md); }
.contact-item { display:flex; gap:var(--space-md); align-items:flex-start; }
.contact-icon { font-size:1.2rem; flex-shrink:0; width:36px; text-align:center; }
.contact-detail strong { display:block; font-size:0.75rem; font-weight:400; color:var(--text-muted); letter-spacing:0.1em; margin-bottom:2px; }
.contact-detail span { font-size:0.9rem; color:var(--text-primary); }
.contact-form-wrapper {
  background:var(--bg-surface);
  border:1px solid var(--border-subtle);
  border-radius:var(--radius-xl);
  padding:var(--space-2xl);
}
.contact-form { display:flex; flex-direction:column; gap:var(--space-md); }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-md); }
.form-group { display:flex; flex-direction:column; gap:var(--space-xs); }
.form-group label { font-size:0.72rem; font-weight:400; color:var(--text-muted); letter-spacing:0.1em; }
.form-group input, .form-group select, .form-group textarea {
  background:var(--bg-elevated);
  border:1px solid var(--border-default);
  border-radius:var(--radius-sm);
  padding:0.7rem 1rem;
  font-family:var(--font); font-size:0.88rem; color:var(--text-primary);
  transition:border-color var(--duration) var(--ease-out);
  outline:none;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(74,142,255,0.08);
}
.form-group textarea { resize:vertical; min-height:120px; }
.form-group select { appearance:none; cursor:pointer; }

.form-honeypot {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
}

.form-consent {
  display:flex;
  align-items:flex-start;
  gap:10px;
  color:var(--text-secondary);
  font-size:0.76rem;
  line-height:1.65;
  cursor:pointer;
}

.form-consent input {
  width:16px;
  height:16px;
  margin:3px 0 0;
  flex:0 0 auto;
  accent-color:#fff;
}

.contact-form .btn-submit:disabled {
  cursor:wait;
  opacity:0.62;
}

.form-status {
  min-height:1.6em;
  margin:0;
  color:var(--text-secondary);
  font-size:0.78rem;
  line-height:1.6;
}

.form-status.is-pending { color:rgba(255,255,255,0.7); }
.form-status.is-success { color:#7ee2a8; }
.form-status.is-error { color:#ff9d9d; }


/* ---- Footer ---- */
.footer {
  background:var(--bg-deep);
  border-top:1px solid var(--border-subtle);
  padding:var(--space-2xl) 0 var(--space-lg);
}
.footer-content { display:grid; grid-template-columns:auto 1fr; gap:var(--space-2xl); margin-bottom:var(--space-2xl); }
.footer-brand { max-width:260px; }
.footer-logo { display:flex; align-items:center; gap:10px; margin-bottom:var(--space-md); }
.footer-logo .logo-icon { font-size:1.4rem; color:var(--accent); }
.footer-logo .logo-cn { font-size:1rem; font-weight:500; color:var(--text-white); letter-spacing:0.15em; }
.footer-logo .logo-en { font-size:0.65rem; font-weight:300; color:var(--text-secondary); letter-spacing:0.2em; }
.footer-slogan { font-size:0.78rem; color:var(--text-muted); font-weight:300; line-height:1.7; }
.footer-links { display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-xl); }
.footer-col h4 { font-size:0.72rem; font-weight:400; color:var(--text-white); letter-spacing:0.15em; margin-bottom:var(--space-md); }
.footer-col ul { display:flex; flex-direction:column; gap:var(--space-sm); }
.footer-col a { font-size:0.8rem; color:var(--text-muted); font-weight:300; transition:color var(--duration) var(--ease-out); }
.footer-col a:hover { color:var(--text-white); }
.footer-bottom { display:flex; justify-content:space-between; align-items:center; padding-top:var(--space-lg); border-top:1px solid var(--border-subtle); }
.footer-copyright { font-size:0.7rem; color:var(--text-muted); }
.footer-beian { margin-top:4px; }
.footer-beian a { color:var(--text-muted); }
.footer-beian span { margin:0 6px; color:var(--border-default); }
.footer-social { display:flex; gap:var(--space-md); }
.footer-social a { font-size:0.72rem; color:var(--text-muted); letter-spacing:0.04em; transition:color var(--duration) var(--ease-out); }
.footer-social a:hover { color:var(--accent); }


/* ---- Buttons ---- */
.btn {
  display:inline-block;
  font-family:var(--font); font-size:0.84rem; font-weight:400; letter-spacing:0.06em;
  padding:0.75em 1.8em;
  border-radius:2px;
  border:1px solid transparent;
  cursor:pointer;
  transition:all var(--duration) var(--ease-out);
  text-align:center;
}
.btn-primary {
  background:var(--accent);
  color:#fff;
  border-color:var(--accent);
  box-shadow:0 0 24px rgba(74,142,255,0.2);
}
.btn-primary:hover { background:#5a9aff; box-shadow:0 0 36px rgba(74,142,255,0.35); transform:translateY(-1px); }
.btn-outline {
  background:transparent;
  color:var(--text-white);
  border-color:rgba(255,255,255,0.2);
}
.btn-outline:hover { border-color:rgba(255,255,255,0.5); background:rgba(255,255,255,0.04); }
.btn-wiki {
  background:transparent;
  color:var(--accent-warm);
  border-color:var(--accent-warm-glow);
}
.btn-wiki:hover { background:rgba(212,168,92,0.08); border-color:var(--accent-warm); }
.btn-submit {
  background:var(--accent);
  color:#fff;
  border-color:var(--accent);
  padding:0.9em 2.4em;
}
.btn-submit:hover { background:#5a9aff; box-shadow:0 0 30px rgba(74,142,255,0.3); }


/* ---- Back to Top ---- */
.back-to-top {
  position:fixed; bottom:28px; right:28px; z-index:999;
  width:44px; height:44px;
  background:var(--bg-elevated);
  border:1px solid var(--border-default);
  border-radius:50%;
  color:var(--text-secondary);
  font-size:1.2rem;
  cursor:pointer;
  opacity:0; visibility:hidden;
  transition:all var(--duration) var(--ease-out);
}
.back-to-top.visible { opacity:1; visibility:visible; }
.back-to-top:hover { border-color:var(--accent); color:var(--accent); }


/* ---- Placeholder Image ---- */
.placeholder-img {
  width:var(--ph-w,100%); height:var(--ph-h,100%);
  background:var(--bg-elevated);
  border:1px dashed var(--border-default);
  border-radius:var(--radius-sm);
  display:flex; align-items:center; justify-content:center;
  font-size:0.72rem; color:var(--text-muted);
  text-align:center; line-height:1.6;
  min-height:100px;
}


/* ---- Full-Screen Sections ---- */
.section-full {
  min-height:100vh;
  display:flex; align-items:center;
  background:var(--bg-primary);
  padding:80px var(--space-xl) var(--space-2xl);
}
.section-full.section-product { background:var(--bg-deep); }
.section-full-inner {
  max-width:1200px; width:100%; margin:0 auto;
  display:grid; grid-template-columns:1fr 1fr; gap:var(--space-3xl); align-items:center;
}
.section-full-image {
  aspect-ratio:3/4; overflow:hidden;
  border:1px solid var(--border-subtle);
}
.section-full-image .placeholder-img { height:100%; }
.section-full-text { max-width:480px; }
.section-full-title {
  font-size:2.4rem; font-weight:300; color:var(--text-white);
  line-height:1.2; margin-bottom:var(--space-md); letter-spacing:0.02em;
}
.section-full-subtitle {
  font-size:0.85rem; color:var(--accent); letter-spacing:0.12em;
  margin-bottom:var(--space-md); font-weight:400;
}
.section-full-text p {
  font-size:0.95rem; color:var(--text-secondary); line-height:1.8; margin-bottom:var(--space-lg);
}
.section-full-actions { display:flex; gap:var(--space-sm); margin-top:var(--space-lg); }

/* ---- About Section (legacy, now unused on homepage) ---- */
.about-content { display:grid; grid-template-columns:1fr 1fr; gap:var(--space-2xl); align-items:center; }
.about-heading { font-size:1.4rem; font-weight:300; color:var(--text-white); margin-bottom:var(--space-md); letter-spacing:0.04em; }
.about-para { font-size:0.9rem; color:var(--text-secondary); font-weight:300; line-height:1.8; margin-bottom:var(--space-md); }
.about-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:var(--space-md); margin-top:var(--space-lg); }
.stat-item { text-align:center; padding:var(--space-md); border:1px solid var(--border-subtle); border-radius:var(--radius-sm); }
.stat-num {
  display:block; font-size:1.8rem; font-weight:200;
  color:var(--text-white); letter-spacing:0.04em;
  font-family:var(--font-mono);
}
.stat-label { display:block; font-size:0.72rem; color:var(--text-muted); margin-top:4px; letter-spacing:0.08em; }
.about-image { border-radius:var(--radius-lg); overflow:hidden; }


/* ---- Section alternation ---- */
.section:nth-child(even) { background:var(--bg-deep); }


/* ---- Responsive ---- */
@media (max-width: 1024px) {
  .features-grid { grid-template-columns:repeat(2,1fr); }
  .products-grid, .opensource-grid { grid-template-columns:repeat(2,1fr); }
  .docs-grid { grid-template-columns:repeat(2,1fr); }
  .news-grid { grid-template-columns:repeat(2,1fr); }
  .product-hero-content { flex-direction:column; }
  .product-hero-image { flex:0 0 auto; width:100%; }
  .product-hero-specs { grid-template-columns:repeat(2,1fr); }
  .about-content { grid-template-columns:1fr; }
  .contact-content { grid-template-columns:1fr; }
  .footer-content { grid-template-columns:1fr; }
  .footer-links { grid-template-columns:repeat(2,1fr); }
  .section-full-inner { grid-template-columns:1fr; gap:var(--space-xl); }
  .section-full-image { aspect-ratio:16/9; }
  .section-full { padding:80px var(--space-lg) var(--space-xl); }
}

@media (max-width: 768px) {
  .nav-menu {
    position:fixed; top:64px; left:0; right:0;
    background:rgba(0,0,0,0.92); backdrop-filter:blur(20px);
    flex-direction:column; gap:0;
    padding:var(--space-sm);
    border-bottom:1px solid var(--border-subtle);
    display:none;
  }
  .navbar.scrolled .nav-menu { background:#fff; box-shadow:0 4px 20px rgba(0,0,0,0.1); border-bottom:1px solid #e5e5e5; }
  .navbar.scrolled .nav-menu .nav-link { color:#555; }
  .navbar.scrolled .nav-menu .nav-link:hover { color:#111; background:#f5f5f5; }
  .nav-menu.open { display:flex; }
  .nav-toggle { display:block; }
  .nav-link { padding:0.8rem 1rem; }
  .section-title { font-size:1.8rem; }
  .features-grid, .products-grid, .opensource-grid, .docs-grid { grid-template-columns:1fr; }
  .news-grid { grid-template-columns:1fr; }
  .news-card.news-featured { grid-template-columns:1fr; }
  .product-hero { padding:var(--space-xl); }
  .product-hero-specs { grid-template-columns:repeat(2,1fr); }
  .about-stats { grid-template-columns:repeat(2,1fr); }
  .wiki-banner { flex-direction:column; padding:var(--space-xl); }
  .wiki-visual { flex:0 0 auto; width:100%; }
  .form-row { grid-template-columns:1fr; }
  .footer-links { grid-template-columns:1fr; }
  .footer-bottom { flex-direction:column; gap:var(--space-md); text-align:center; }
}

@media (max-width: 480px) {
  .container { padding:0 var(--space-sm); }
  .banner-content { padding:var(--space-lg) var(--space-sm); }
  .banner-actions { flex-direction:column; align-items:center; }
  .btn { width:100%; }
}

/* ============================================================
   Homepage SpaceX-style refresh
   ============================================================ */
.home-page {
  background:#000;
}

.home-page .navbar {
  background:linear-gradient(180deg, rgba(0,0,0,0.62), rgba(0,0,0,0));
}

.home-page .navbar.scrolled {
  background:rgba(3,5,9,0.86);
  backdrop-filter:blur(18px) saturate(140%);
  border-bottom:1px solid rgba(255,255,255,0.08);
  box-shadow:0 12px 36px rgba(0,0,0,0.28);
}

.home-page .nav-link {
  color:rgba(255,255,255,0.76);
  text-transform:uppercase;
}

.home-page .nav-link:hover,
.home-page .nav-link.active {
  color:#fff;
  background:rgba(255,255,255,0.06);
}

.home-page .logo-mark {
  position:relative;
  width:34px;
  height:34px;
  flex:0 0 34px;
  overflow:hidden;
  border-radius:50%;
  background:rgba(255,255,255,0.94);
  box-shadow:0 0 0 1px rgba(255,255,255,0.18);
}

.home-page .logo-mark img {
  position:absolute;
  top:50%;
  left:50%;
  width:34px;
  height:auto;
  max-width:none;
  transform:translate(-50%, -50%) scale(4.25);
  transform-origin:center;
  filter:none;
}

.home-page .nav-menu.active,
.home-page .nav-menu.open {
  display:flex;
}

.home-hero {
  min-height:100svh;
  align-items:flex-end;
  justify-content:flex-start;
  padding:64px clamp(20px, 5vw, 72px) clamp(96px, 12vh, 136px);
  background:#000;
}

.home-hero .banner-video {
  filter:saturate(0.86) contrast(1.12) brightness(0.72);
  object-position:center 42%;
}

.home-hero::before {
  background:
    linear-gradient(90deg, rgba(0,0,0,0.78) 0%, rgba(0,0,0,0.42) 38%, rgba(0,0,0,0.12) 66%, rgba(0,0,0,0.58) 100%),
    linear-gradient(180deg, rgba(0,0,0,0.64) 0%, rgba(0,0,0,0.12) 40%, rgba(0,0,0,0.9) 100%);
}

.home-hero .banner-grid {
  z-index:1;
  opacity:0.36;
  background-image:
    linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
  background-size:72px 72px;
  mask-image:linear-gradient(90deg, black, transparent 72%);
}

.home-hero .banner-canvas {
  z-index:1;
  opacity:0.48;
}

.home-hero-content {
  position:relative;
  left:auto;
  right:auto;
  bottom:auto;
  max-width:760px;
  padding:0;
  text-align:left;
}

.home-hero .banner-badge {
  border-color:rgba(255,255,255,0.22);
  color:rgba(255,255,255,0.82);
  background:rgba(255,255,255,0.04);
  margin-bottom:1.4rem;
}

.home-hero .title-main {
  font-size:clamp(3.2rem, 9vw, 6.9rem);
  font-weight:700;
  line-height:0.92;
  letter-spacing:0;
  text-transform:uppercase;
}

.home-hero .title-main em {
  color:#fff;
}

.home-hero .title-sub {
  color:#fff;
  font-size:clamp(1.2rem, 2.3vw, 1.85rem);
  font-weight:500;
  letter-spacing:0.04em;
  margin-top:1.1rem;
}

.home-hero .banner-desc {
  margin:1.5rem 0 2rem;
  max-width:640px;
  color:rgba(255,255,255,0.78);
  font-size:1rem;
}

.home-hero .banner-actions {
  justify-content:flex-start;
}

.home-page .btn {
  min-width:156px;
  padding:0.92em 2.1em;
  border-radius:2px;
  font-weight:700;
  text-transform:uppercase;
}

.home-page .btn-primary {
  background:#fff;
  color:#050505;
  border-color:#fff;
  box-shadow:none;
}

.home-page .btn-primary:hover {
  background:transparent;
  color:#fff;
  border-color:#fff;
  box-shadow:none;
}

.home-page .btn-outline {
  border-color:rgba(255,255,255,0.72);
  color:#fff;
}

.hero-telemetry {
  position:absolute;
  top:92px;
  right:clamp(20px, 5vw, 72px);
  z-index:2;
  display:flex;
  flex-direction:column;
  gap:10px;
  align-items:flex-end;
  font-family:var(--font-mono);
  font-size:0.68rem;
  letter-spacing:0.18em;
  color:rgba(255,255,255,0.58);
}

.hero-telemetry span {
  padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,0.16);
}

.home-hero .scroll-hint {
  left:auto;
  right:clamp(20px, 5vw, 72px);
  bottom:34px;
  transform:none;
  align-items:flex-end;
}

.home-page .section-full {
  position:relative;
  min-height:auto;
  padding:clamp(96px, 12vw, 150px) clamp(20px, 5vw, 72px);
  background:#05070b;
}

.home-page .section-full::before {
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0) 22%),
    radial-gradient(ellipse at 80% 20%, rgba(255,255,255,0.07), transparent 42%);
}

.home-page .section-full-inner {
  position:relative;
  z-index:1;
  gap:clamp(40px, 7vw, 96px);
}

.home-page .section-full-text {
  max-width:560px;
}

.home-page .section-tag {
  border:0;
  padding:0;
  color:rgba(255,255,255,0.62);
}

.home-page .section-full-title,
.home-page .section-title {
  color:#fff;
  font-weight:700;
  letter-spacing:0;
}

.home-page .section-full-title {
  font-size:clamp(2.2rem, 5.2vw, 4.8rem);
}

.home-page .section-full-text p,
.home-page .section-subtitle {
  color:rgba(255,255,255,0.68);
}

.mission-visual,
.product-visual {
  border:0;
  aspect-ratio:4/3;
  background:#0b0f16;
}

.mission-visual img,
.product-visual img,
.product-img img {
  width:100%;
  height:100%;
  object-fit:cover;
}

.mission-visual {
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.08), 0 40px 90px rgba(0,0,0,0.45);
}

.home-page .about-stats {
  grid-template-columns:repeat(2, minmax(0, 1fr));
}

.home-page .stat-item {
  text-align:left;
  background:rgba(255,255,255,0.035);
  border-color:rgba(255,255,255,0.08);
}

.section-product {
  background:#000;
}

.product-command {
  align-items:center;
}

.product-metrics {
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:1px;
  margin:2rem 0 0;
  background:rgba(255,255,255,0.1);
  border:1px solid rgba(255,255,255,0.1);
}

.product-metrics div {
  background:#05070b;
  padding:18px;
}

.product-metrics strong {
  display:block;
  color:#fff;
  font-family:var(--font-mono);
  font-size:1.15rem;
}

.product-metrics span {
  color:rgba(255,255,255,0.56);
  font-size:0.76rem;
}

.airframe-card {
  position:relative;
  width:100%;
  height:100%;
  overflow:hidden;
  background:#080b10;
}

.airframe-card::before {
  content:'';
  position:absolute;
  inset:16px;
  z-index:2;
  border:1px solid rgba(255,255,255,0.2);
  pointer-events:none;
}

.airframe-readout {
  position:absolute;
  left:32px;
  right:32px;
  bottom:32px;
  z-index:3;
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:end;
  color:#fff;
  border-top:1px solid rgba(255,255,255,0.28);
  padding-top:14px;
}

.airframe-readout span {
  font-family:var(--font-mono);
  font-size:0.74rem;
  letter-spacing:0.2em;
  color:rgba(255,255,255,0.66);
}

.airframe-readout strong {
  font-size:1rem;
  text-transform:uppercase;
}

.product-lineup {
  background:#07090d;
  padding:clamp(88px, 11vw, 140px) 0;
}

.product-lineup .section-header {
  text-align:left;
  max-width:760px;
}

.home-products-grid {
  align-items:stretch;
}

.featured-product-card {
  position:relative;
  background:#0c1017;
  border-color:rgba(255,255,255,0.09);
  border-radius:0;
}

.featured-product-card::after {
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  border:1px solid transparent;
  transition:border-color var(--duration) var(--ease-out);
}

.featured-product-card:hover::after,
.featured-product-card.is-primary::after {
  border-color:rgba(255,255,255,0.22);
}

.featured-product-card .product-img {
  aspect-ratio:16/12;
  filter:saturate(0.86) contrast(1.05);
}

.featured-product-card .product-body {
  padding:28px;
}

.featured-product-card .product-name {
  color:#fff;
  font-size:1.35rem;
  font-weight:700;
}

.featured-product-card .product-brief {
  color:rgba(255,255,255,0.62);
}

.featured-product-card .product-mini-specs {
  color:rgba(255,255,255,0.5);
}

/* Homepage narrative redesign */
.home-section {
  position:relative;
  padding:128px 0;
  background:#05070a;
  color:#fff;
  border-top:1px solid rgba(255,255,255,0.07);
}

.home-section::before {
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:0.28;
  background-image:
    linear-gradient(rgba(255,255,255,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.03) 1px, transparent 1px);
  background-size:72px 72px;
  mask-image:linear-gradient(180deg, black, transparent 72%);
}

.home-section > .container {
  position:relative;
  z-index:1;
}

.home-problem,
.home-paths {
  background:#030507;
}

.home-loop,
.home-trust {
  background:#080b10;
}

.home-s7 {
  background:#000;
}

.home-editorial {
  display:grid;
  grid-template-columns:minmax(240px, 0.76fr) minmax(0, 1.24fr);
  gap:72px;
  align-items:end;
  margin-bottom:64px;
}

.home-editorial.is-wide {
  grid-template-columns:minmax(0, 0.95fr) minmax(0, 1.05fr);
}

.home-editorial h2,
.s7-copy h2,
.cta-line h2 {
  color:#fff;
  font-size:4rem;
  line-height:1.02;
  letter-spacing:0;
}

.home-editorial p,
.s7-copy p,
.cta-line p {
  max-width:680px;
  color:rgba(255,255,255,0.64);
  font-size:1rem;
  line-height:1.9;
}

.pain-grid {
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  border-top:1px solid rgba(255,255,255,0.16);
}

.pain-item {
  min-height:300px;
  padding:34px 28px;
  border-right:1px solid rgba(255,255,255,0.1);
  border-bottom:1px solid rgba(255,255,255,0.1);
}

.pain-item:last-child {
  border-right:0;
}

.pain-item span,
.loop-step span,
.path-tile > span,
.trust-item > span,
.s7-readout span {
  display:block;
  color:rgba(255,255,255,0.46);
  font:0.68rem/1.4 var(--font-mono);
  letter-spacing:0.16em;
  text-transform:uppercase;
}

.pain-item h3,
.loop-step h3,
.path-tile h3,
.trust-item h3 {
  color:#fff;
  font-size:1.45rem;
  line-height:1.2;
  margin:72px 0 16px;
  letter-spacing:0;
}

.pain-item p,
.loop-step p,
.path-tile p,
.trust-item p {
  color:rgba(255,255,255,0.58);
  font-size:0.9rem;
  line-height:1.85;
}

.loop-track {
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));
  gap:1px;
  background:rgba(255,255,255,0.12);
  border:1px solid rgba(255,255,255,0.12);
}

.loop-step {
  position:relative;
  min-height:330px;
  padding:30px;
  background:#080b10;
  transition:background var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
}

.loop-step::after {
  content:'';
  position:absolute;
  right:24px;
  top:32px;
  width:28px;
  height:1px;
  background:rgba(255,255,255,0.35);
}

.loop-step:hover,
.loop-step:focus-visible {
  background:#10151d;
  transform:translateY(-4px);
}

.loop-step h3 {
  margin-top:110px;
}

.s7-layout {
  display:grid;
  grid-template-columns:minmax(0, 0.9fr) minmax(420px, 1.1fr);
  gap:72px;
  align-items:center;
}

.s7-copy {
  max-width:600px;
}

.s7-copy h2 {
  margin:18px 0 24px;
}

.s7-metrics {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:1px;
  margin:34px 0;
  border:1px solid rgba(255,255,255,0.12);
  background:rgba(255,255,255,0.1);
}

.s7-metrics div {
  min-height:104px;
  padding:20px;
  background:#05070a;
}

.s7-metrics strong {
  display:block;
  color:#fff;
  font:700 1.5rem/1.1 var(--font-mono);
}

.s7-metrics span {
  display:block;
  margin-top:10px;
  color:rgba(255,255,255,0.54);
  font-size:0.78rem;
}

.home-actions {
  display:flex;
  flex-wrap:wrap;
  gap:14px;
}

.s7-visual {
  position:relative;
  min-height:560px;
  overflow:hidden;
  background:#080b10;
  border:1px solid rgba(255,255,255,0.12);
  box-shadow:0 42px 100px rgba(0,0,0,0.45);
}

.s7-visual img {
  width:100%;
  height:100%;
  min-height:560px;
  object-fit:cover;
  filter:saturate(0.82) contrast(1.08);
}

.s7-visual::after {
  content:'';
  position:absolute;
  inset:0;
  border:18px solid rgba(0,0,0,0.34);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.24);
  pointer-events:none;
}

.s7-readout {
  position:absolute;
  left:34px;
  right:34px;
  bottom:34px;
  z-index:1;
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:24px;
  padding-top:16px;
  border-top:1px solid rgba(255,255,255,0.26);
}

.s7-readout strong {
  color:#fff;
  font-size:1.08rem;
  letter-spacing:0;
}

.path-grid,
.trust-grid {
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:24px;
}

.path-tile {
  position:relative;
  min-height:420px;
  aspect-ratio:1/1;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  overflow:hidden;
  border:1px solid rgba(255,255,255,0.14);
  border-radius:8px;
  padding:30px;
  background:
    linear-gradient(180deg, rgba(0,0,0,0.24), rgba(0,0,0,0.82)),
    var(--tile-image) center / cover no-repeat;
  box-shadow:0 24px 70px rgba(0,0,0,0.32);
  transition:transform var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
}

.path-tile::before {
  content:'';
  position:absolute;
  inset:0;
  background:rgba(0,0,0,0.12);
  transition:background var(--duration) var(--ease-out);
}

.path-tile > * {
  position:relative;
  z-index:1;
}

.path-tile h3 {
  margin:118px 0 16px;
  max-width:320px;
  font-size:1.55rem;
}

.path-tile strong,
.trust-item strong {
  display:inline-block;
  margin-top:24px;
  color:#fff;
  font:0.72rem/1 var(--font-mono);
  letter-spacing:0.1em;
}

.path-tile strong::after,
.trust-item strong::after {
  content:'  →';
}

.path-tile:hover,
.path-tile:focus-visible {
  transform:translateY(-6px);
  border-color:rgba(255,255,255,0.34);
  box-shadow:0 34px 90px rgba(0,0,0,0.42);
}

.path-tile:hover::before,
.path-tile:focus-visible::before {
  background:rgba(0,0,0,0.34);
}

.trust-item {
  min-height:320px;
  padding:34px;
  border:1px solid rgba(255,255,255,0.12);
  border-radius:8px;
  background:#080b10;
  transition:background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
}

.trust-item h3 {
  margin-top:86px;
}

.trust-item:hover,
.trust-item:focus-visible {
  transform:translateY(-4px);
  background:#10151d;
  border-color:rgba(255,255,255,0.26);
}

.home-final-cta {
  padding:90px 0;
  background:#fff;
  color:#050505;
}

.home-final-cta .section-tag,
.home-final-cta .cta-line p {
  color:rgba(0,0,0,0.62);
}

.home-final-cta .cta-line h2 {
  color:#050505;
}

.cta-line {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:56px;
}

.cta-line p {
  margin-top:18px;
}

.home-final-cta .btn-primary {
  background:#050505;
  color:#fff;
  border-color:#050505;
}

.home-final-cta .btn-primary:hover {
  background:#fff;
  color:#050505;
  border-color:#050505;
}

.home-final-cta .btn-outline {
  border-color:rgba(0,0,0,0.44);
  color:#050505;
}

@media (max-width: 900px) {
  .hero-telemetry {
    display:none;
  }

  .home-hero {
    padding-bottom:110px;
  }

  .home-hero .scroll-hint {
    display:none;
  }

  .home-editorial,
  .home-editorial.is-wide,
  .s7-layout {
    grid-template-columns:1fr;
    gap:34px;
  }

  .pain-grid,
  .path-grid,
  .trust-grid {
    grid-template-columns:1fr 1fr;
  }

  .loop-track {
    grid-template-columns:1fr;
  }

  .loop-step {
    min-height:auto;
  }

  .loop-step h3 {
    margin-top:56px;
  }

  .cta-line {
    align-items:flex-start;
    flex-direction:column;
  }
}

@media (max-width: 768px) {
  .home-page .nav-menu.active {
    display:flex;
  }

  .home-hero {
    min-height:100svh;
    padding:84px 20px 100px;
  }

  .home-hero .title-main {
    font-size:clamp(3rem, 16vw, 4.8rem);
  }

  .home-page .section-full {
    padding:84px 20px;
  }

  .product-metrics,
  .home-page .about-stats {
    grid-template-columns:1fr;
  }

  .airframe-readout {
    left:24px;
    right:24px;
    bottom:24px;
    flex-direction:column;
    align-items:flex-start;
  }

  .home-section {
    padding:84px 0;
  }

  .home-editorial {
    margin-bottom:42px;
  }

  .home-editorial h2,
  .s7-copy h2,
  .cta-line h2 {
    font-size:2.45rem;
    line-height:1.08;
  }

  .pain-grid,
  .path-grid,
  .trust-grid {
    grid-template-columns:1fr;
  }

  .pain-item {
    min-height:auto;
    padding:28px 0;
    border-right:0;
  }

  .pain-item h3,
  .path-tile h3,
  .trust-item h3 {
    margin-top:44px;
  }

  .s7-metrics {
    grid-template-columns:1fr;
  }

  .s7-visual,
  .s7-visual img {
    min-height:390px;
  }

  .path-tile {
    min-height:360px;
    aspect-ratio:auto;
  }

  .home-final-cta {
    padding:72px 0;
  }
}

@media (max-width: 480px) {
  .home-page .btn {
    width:100%;
  }

  .home-hero .banner-actions {
    width:100%;
  }

}

/* ============================================================
   Unified SwiftWing visual system
   ============================================================ */
.site-page { background:#05070a; }

.site-page .navbar,
.site-page .navbar.scrolled {
  background:rgba(2,4,7,0.9);
  border-bottom:1px solid rgba(255,255,255,0.09);
  box-shadow:none;
  backdrop-filter:blur(18px) saturate(130%);
}

.site-page .logo-cn,
.site-page .navbar.scrolled .logo-cn,
.site-page .nav-link,
.site-page .navbar.scrolled .nav-link { color:rgba(255,255,255,0.76); }

.site-page .logo-en,
.site-page .navbar.scrolled .logo-en { color:rgba(255,255,255,0.48); }

.site-page .nav-link:hover,
.site-page .navbar.scrolled .nav-link:hover,
.site-page .nav-link.active,
.site-page .navbar.scrolled .nav-link.active {
  color:#fff;
  background:rgba(255,255,255,0.06);
}

.logo-mark {
  position:relative;
  width:34px;
  height:34px;
  flex:0 0 34px;
  overflow:hidden;
  border-radius:50%;
  background:rgba(255,255,255,0.94);
  box-shadow:0 0 0 1px rgba(255,255,255,0.18);
}

.logo-mark img {
  position:absolute;
  top:50%;
  left:50%;
  width:34px;
  height:auto;
  max-width:none;
  transform:translate(-50%, -50%) scale(4.25);
}

.site-page .hamburger-line,
.site-page .navbar.scrolled .hamburger-line { background:#fff; }

.nav-toggle.active .hamburger-line:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.nav-toggle.active .hamburger-line:nth-child(2) { opacity:0; }
.nav-toggle.active .hamburger-line:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }

.page-hero {
  position:relative;
  min-height:clamp(520px, 72vh, 760px);
  display:flex;
  align-items:flex-end;
  overflow:hidden;
  padding:140px clamp(20px, 5vw, 72px) clamp(64px, 8vw, 104px);
  background:#06090d;
}

.page-hero::before {
  content:'';
  position:absolute;
  inset:0;
  background:
    linear-gradient(90deg, rgba(0,0,0,0.9), rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.2)),
    linear-gradient(180deg, rgba(0,0,0,0.15), #05070a 100%),
    url('../images/hero-banner.png') center 42% / cover no-repeat;
  filter:saturate(0.58) contrast(1.16);
}

.page-hero::after {
  content:'';
  position:absolute;
  inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
  background-size:72px 72px;
  mask-image:linear-gradient(90deg, black, transparent 80%);
  opacity:0.36;
}

.page-hero-inner {
  position:relative;
  z-index:1;
  width:min(1200px, 100%);
  margin:0 auto;
}

.page-kicker,
.eyebrow {
  display:block;
  font:0.68rem/1 var(--font-mono);
  letter-spacing:0.22em;
  color:rgba(255,255,255,0.48);
}

.page-kicker { margin-bottom:20px; color:rgba(255,255,255,0.62); }
.eyebrow { margin-bottom:16px; }

.page-hero h1 {
  max-width:900px;
  color:#fff;
  font-size:clamp(3.2rem, 8vw, 7rem);
  line-height:0.92;
  letter-spacing:-0.045em;
  text-transform:uppercase;
}

.page-hero p {
  max-width:650px;
  margin-top:26px;
  color:rgba(255,255,255,0.7);
  font-size:clamp(1rem, 1.6vw, 1.15rem);
}

.page-index {
  display:flex;
  gap:28px;
  margin-top:38px;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,0.24);
  font:0.68rem/1.5 var(--font-mono);
  letter-spacing:0.12em;
  color:rgba(255,255,255,0.55);
}

.content-section {
  padding:clamp(82px, 10vw, 132px) 0;
  background:#05070a;
}

.content-section.alt {
  background:#090c11;
  border-top:1px solid rgba(255,255,255,0.06);
  border-bottom:1px solid rgba(255,255,255,0.06);
}

.editorial-head {
  display:grid;
  grid-template-columns:minmax(220px, 0.75fr) minmax(0, 1.25fr);
  gap:clamp(36px, 8vw, 110px);
  align-items:end;
  margin-bottom:clamp(46px, 7vw, 82px);
}

.editorial-head h2 {
  color:#fff;
  font-size:clamp(2.15rem, 4.4vw, 4.4rem);
  line-height:1;
  letter-spacing:-0.035em;
}

.editorial-head p {
  max-width:620px;
  color:rgba(255,255,255,0.62);
  font-size:1rem;
}

.feature-panel {
  display:grid;
  grid-template-columns:minmax(0, 1.08fr) minmax(320px, 0.92fr);
  min-height:560px;
  background:#0a0e14;
  border:1px solid rgba(255,255,255,0.1);
}

.feature-panel-media { position:relative; min-height:420px; overflow:hidden; }

.feature-panel-media img {
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(0.65) contrast(1.1);
}

.feature-panel-media::after {
  content:'';
  position:absolute;
  inset:0;
  border:16px solid rgba(3,5,8,0.34);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.2);
}

.feature-panel-copy {
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:clamp(34px, 5vw, 72px);
}

.feature-panel-copy h3 {
  color:#fff;
  font-size:clamp(2rem, 3.7vw, 3.8rem);
  line-height:1;
  margin-bottom:24px;
}

.feature-panel-copy > p { color:rgba(255,255,255,0.62); margin-bottom:30px; }

.data-grid {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  margin:8px 0 32px;
  border-top:1px solid rgba(255,255,255,0.14);
}

.data-grid div { padding:16px 10px 16px 0; border-bottom:1px solid rgba(255,255,255,0.1); }
.data-grid strong { display:block; color:#fff; font:1rem/1.2 var(--font-mono); }
.data-grid span { font-size:0.72rem; color:rgba(255,255,255,0.45); }

.system-grid,
.resource-grid,
.story-grid {
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:1px;
  background:rgba(255,255,255,0.11);
  border:1px solid rgba(255,255,255,0.11);
}

.system-card,
.resource-card,
.story-card {
  position:relative;
  min-height:310px;
  padding:34px;
  background:#090c11;
  transition:background var(--duration) var(--ease-out);
}

.system-card:hover,
.resource-card:hover,
.story-card:hover { background:#10151d; }

.card-number {
  display:block;
  margin-bottom:70px;
  font:0.68rem/1 var(--font-mono);
  letter-spacing:0.16em;
  color:rgba(255,255,255,0.38);
}

.system-card h3,
.resource-card h3,
.story-card h3 { color:#fff; font-size:1.3rem; margin-bottom:14px; }

.system-card p,
.resource-card p,
.story-card p { color:rgba(255,255,255,0.55); font-size:0.88rem; }

.card-link {
  display:inline-block;
  margin-top:24px;
  color:#fff;
  font:0.72rem/1 var(--font-mono);
  letter-spacing:0.12em;
  text-transform:uppercase;
}

.card-link::after { content:'  →'; }

.cta-band {
  display:flex;
  justify-content:space-between;
  gap:40px;
  align-items:center;
  padding:clamp(38px, 6vw, 70px);
  background:#fff;
  color:#050505;
}

.cta-band h2 { max-width:720px; font-size:clamp(2rem, 4vw, 4rem); line-height:1; }
.cta-band .btn { flex:0 0 auto; background:#050505; color:#fff; border-color:#050505; }

.project-list,
.news-list { border-top:1px solid rgba(255,255,255,0.14); }

.project-row,
.news-row {
  display:grid;
  grid-template-columns:100px minmax(180px, 0.55fr) minmax(0, 1fr) auto;
  gap:28px;
  align-items:start;
  padding:30px 0;
  border-bottom:1px solid rgba(255,255,255,0.1);
}

.row-code,
.row-meta {
  color:rgba(255,255,255,0.4);
  font:0.68rem/1.5 var(--font-mono);
  letter-spacing:0.1em;
}

.project-row h3,
.news-row h3 { color:#fff; font-size:1.2rem; }

.project-row p,
.news-row p { color:rgba(255,255,255,0.56); font-size:0.88rem; }

/* Technical articles page */
.articles-page .articles-hero::before {
  background:
    linear-gradient(90deg, rgba(2,4,7,0.96) 0%, rgba(2,4,7,0.76) 52%, rgba(2,4,7,0.34) 100%),
    linear-gradient(180deg, rgba(2,4,7,0.12) 0%, #05070a 100%),
    url('../images/hero-banner.png') center 45% / cover no-repeat;
  filter:saturate(0.48) contrast(1.18);
}

.articles-page .articles-hero::after { opacity:0.18; }

.articles-page .page-kicker,
.articles-page .page-index,
.articles-page .eyebrow {
  letter-spacing:0;
}

.articles-page .page-hero h1 {
  max-width:760px;
  font-size:7rem;
  line-height:0.94;
  letter-spacing:0;
  text-transform:none;
}

.articles-page .page-hero p { max-width:720px; }

.article-library-section {
  background:#05070a;
}

.article-library-container {
  max-width:1280px;
}

.article-library-head {
  display:grid;
  grid-template-columns:minmax(280px, 0.78fr) minmax(0, 1.22fr);
  gap:clamp(48px, 8vw, 116px);
  align-items:end;
  margin-bottom:72px;
  padding-bottom:54px;
  border-bottom:1px solid rgba(255,255,255,0.14);
}

.article-library-head h2 {
  color:#fff;
  font-size:4rem;
  line-height:1;
  letter-spacing:0;
}

.article-library-summary {
  max-width:660px;
}

.article-library-summary > p {
  color:rgba(255,255,255,0.64);
  font-size:1rem;
}

.article-library-stats {
  display:flex;
  flex-wrap:wrap;
  gap:28px;
  margin-top:28px;
  padding-top:20px;
  border-top:1px solid rgba(255,255,255,0.1);
  color:rgba(255,255,255,0.48);
  font:0.72rem/1.4 var(--font-mono);
}

.article-library-stats strong {
  margin-right:5px;
  color:#fff;
  font-size:1rem;
  font-weight:500;
}

.article-layout {
  display:grid;
  grid-template-columns:248px minmax(0, 1fr);
  gap:clamp(42px, 6vw, 88px);
  align-items:start;
}

.article-controls {
  position:sticky;
  top:96px;
  min-width:0;
}

.article-search {
  margin-bottom:30px;
}

.article-search label {
  display:block;
  margin-bottom:10px;
  color:rgba(255,255,255,0.46);
  font:0.68rem/1.4 var(--font-mono);
}

.article-search-field {
  position:relative;
}

.article-search-field input {
  width:100%;
  height:46px;
  border:1px solid rgba(255,255,255,0.16);
  border-radius:4px;
  outline:none;
  padding:0 44px 0 14px;
  background:#05070a;
  color:#fff;
  font:0.86rem/1 var(--font);
  transition:border-color 180ms ease, background 180ms ease;
}

.article-search-field input::placeholder {
  color:rgba(255,255,255,0.34);
}

.article-search-field input:focus {
  border-color:rgba(255,255,255,0.48);
  background:#080b0f;
}

.article-search-field button {
  position:absolute;
  top:6px;
  right:6px;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border:0;
  background:transparent;
  color:rgba(255,255,255,0.46);
  font:1.15rem/1 var(--font);
  cursor:pointer;
  opacity:0;
  pointer-events:none;
  transition:color 180ms ease, opacity 180ms ease;
}

.article-search-field button.is-visible {
  opacity:1;
  pointer-events:auto;
}

.article-search-field button[hidden] { display:none; }

.article-search-field button:hover,
.article-search-field button:focus-visible {
  color:#fff;
}

.article-topic-nav {
  display:flex;
  flex-direction:column;
  max-width:100%;
  border-top:1px solid rgba(255,255,255,0.16);
}

.article-topic-nav button {
  width:100%;
  min-height:46px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  border:0;
  border-bottom:1px solid rgba(255,255,255,0.08);
  padding:0;
  background:transparent;
  color:rgba(255,255,255,0.52);
  font:0.76rem/1.25 var(--font);
  text-align:left;
  cursor:pointer;
  transition:color 180ms ease, padding 180ms ease;
}

.article-topic-nav button strong {
  color:rgba(255,255,255,0.28);
  font:0.68rem/1 var(--font-mono);
  font-weight:400;
}

.article-topic-nav button:hover,
.article-topic-nav button:focus-visible,
.article-topic-nav button.is-active {
  color:#fff;
}

.article-topic-nav button.is-active {
  padding-left:12px;
  box-shadow:inset 2px 0 0 var(--accent);
}

.article-topic-nav button.is-active strong {
  color:rgba(255,255,255,0.7);
}

.article-results {
  min-width:0;
}

.article-results-head {
  min-height:52px;
  display:flex;
  justify-content:space-between;
  gap:24px;
  align-items:center;
  color:rgba(255,255,255,0.42);
  font:0.68rem/1.5 var(--font-mono);
}

.article-sort {
  flex:0 0 auto;
  display:inline-flex;
  padding:2px;
  border:1px solid rgba(255,255,255,0.16);
  border-radius:4px;
  background:#05070a;
}

.article-sort button {
  min-height:34px;
  border:0;
  padding:0 13px;
  background:transparent;
  color:rgba(255,255,255,0.5);
  font:0.68rem/1 var(--font-mono);
  cursor:pointer;
}

.article-sort button:hover,
.article-sort button:focus-visible {
  color:#fff;
}

.article-sort button.is-active {
  background:#fff;
  color:#050505;
}

.article-list {
  border-top:1px solid rgba(255,255,255,0.16);
}

.article-row {
  position:relative;
  display:grid;
  grid-template-columns:94px minmax(0, 1fr) minmax(148px, auto);
  gap:clamp(24px, 4vw, 52px);
  align-items:start;
  padding:36px 18px 36px 0;
  border-bottom:1px solid rgba(255,255,255,0.1);
  transition:background 220ms ease, border-color 220ms ease, padding 220ms ease;
}

.article-row:hover {
  padding-left:14px;
  background:rgba(255,255,255,0.028);
  border-bottom-color:rgba(255,255,255,0.2);
}

.article-index {
  display:flex;
  flex-direction:column;
  gap:8px;
}

.article-index time {
  color:#fff;
  font:0.76rem/1 var(--font-mono);
  font-weight:500;
}

.article-index span,
.article-series {
  color:rgba(255,255,255,0.42);
  font:0.68rem/1.55 var(--font-mono);
  letter-spacing:0;
}

.article-series {
  display:block;
  margin-bottom:10px;
}

.article-main h3 {
  max-width:780px;
  color:#fff;
  font-size:1.75rem;
  line-height:1.22;
  letter-spacing:0;
  overflow-wrap:anywhere;
  transition:color 180ms ease;
}

.article-row:hover .article-main h3 {
  color:#f5f8ff;
}

.article-main p {
  max-width:780px;
  margin-top:12px;
  color:rgba(255,255,255,0.58);
  font-size:0.95rem;
}

.article-tags {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:18px;
}

.article-tags span {
  display:inline-flex;
  align-items:center;
  min-height:28px;
  border:1px solid rgba(255,255,255,0.16);
  border-radius:999px;
  padding:0 10px;
  color:rgba(255,255,255,0.58);
  font-size:0.72rem;
  white-space:nowrap;
}

.article-actions {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:flex-start;
}

.article-row > .article-actions {
  justify-content:flex-end;
}

.article-action {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-height:38px;
  border:1px solid rgba(255,255,255,0.68);
  border-radius:4px;
  padding:0 14px;
  color:#fff;
  background:transparent;
  font:0.72rem/1 var(--font-mono);
  letter-spacing:0;
  white-space:nowrap;
}

.article-action:hover,
.article-action:focus-visible {
  background:#fff;
  color:#050505;
}

.article-action-arrow {
  font-size:0.92rem;
}

.article-status {
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:38px;
  color:rgba(255,255,255,0.38);
  font:0.7rem/1.3 var(--font-mono);
  white-space:nowrap;
}

.article-status::before {
  content:'';
  width:6px;
  height:6px;
  border-radius:50%;
  background:#d4a85c;
  box-shadow:0 0 10px rgba(212,168,92,0.38);
}

.article-empty,
.article-load-error {
  padding:72px 0;
  border-bottom:1px solid rgba(255,255,255,0.1);
  color:rgba(255,255,255,0.5);
}

.article-empty strong {
  display:block;
  margin-bottom:8px;
  color:#fff;
  font-size:1.1rem;
}

.contact-layout {
  display:grid;
  grid-template-columns:minmax(0, 0.75fr) minmax(420px, 1.25fr);
  gap:clamp(50px, 9vw, 130px);
}

.contact-layout .contact-heading {
  font-size:clamp(2rem, 4vw, 3.8rem);
  line-height:1.05;
  font-weight:700;
}

.contact-layout .contact-item {
  padding:20px 0;
  border-top:1px solid rgba(255,255,255,0.12);
}

.contact-layout .contact-icon {
  color:rgba(255,255,255,0.42);
  font:0.68rem/1.5 var(--font-mono);
}

.site-page .contact-form-wrapper {
  align-self:start;
  border-radius:0;
  background:#0a0e14;
  border-color:rgba(255,255,255,0.1);
}

.site-page .form-group input,
.site-page .form-group select,
.site-page .form-group textarea { border-radius:0; background:#05070a; }

.site-page .btn,
.site-page .btn-primary,
.site-page .btn-submit {
  border-radius:0;
  background:#fff;
  border-color:#fff;
  color:#050505;
  box-shadow:none;
  font-weight:700;
}

.site-page .btn-outline {
  background:transparent;
  color:#fff;
  border-color:rgba(255,255,255,0.58);
}

.site-page .footer { background:#020304; }

.site-page .nav-menu.active,
.site-page .nav-menu.open { display:flex; }

@media (max-width: 900px) {
  .feature-panel,
  .editorial-head,
  .contact-layout { grid-template-columns:1fr; }

  .system-grid,
  .resource-grid,
  .story-grid { grid-template-columns:1fr 1fr; }

  .project-row,
  .news-row { grid-template-columns:70px minmax(160px, 0.7fr) minmax(0, 1fr); }

  .project-row .card-link,
  .news-row .card-link { grid-column:2 / -1; margin-top:0; }

  .article-library-head,
  .article-layout { grid-template-columns:1fr; }

  .article-library-head {
    gap:34px;
    margin-bottom:52px;
  }

  .article-controls { position:static; }

  .article-search {
    max-width:480px;
    margin-bottom:22px;
  }

  .article-topic-nav {
    flex-direction:row;
    overflow-x:auto;
    border-bottom:1px solid rgba(255,255,255,0.12);
    scrollbar-width:none;
  }

  .article-topic-nav::-webkit-scrollbar { display:none; }

  .article-topic-nav button {
    flex:0 0 auto;
    width:auto;
    min-height:48px;
    padding:0 18px;
    border-bottom:0;
  }

  .article-topic-nav button.is-active {
    padding:0 18px;
    box-shadow:inset 0 -2px 0 var(--accent);
  }

  .article-row {
    grid-template-columns:82px minmax(0, 1fr);
  }

  .article-row > .article-actions {
    grid-column:2 / -1;
    justify-content:flex-start;
  }
}

@media (max-width: 768px) {
  .site-page .nav-menu {
    background:rgba(2,4,7,0.97);
    border-bottom-color:rgba(255,255,255,0.1);
  }

  .site-page .navbar.scrolled .nav-menu .nav-link { color:rgba(255,255,255,0.76); }

  .page-hero { min-height:620px; padding:120px 20px 68px; }
  .page-hero h1 { font-size:clamp(3rem, 16vw, 5rem); }
  .page-index { flex-wrap:wrap; gap:12px 22px; }

  .articles-page .page-hero h1 {
    font-size:4.5rem;
    line-height:0.96;
  }

  .article-library-head h2 {
    font-size:3rem;
  }

  .article-library-head {
    padding-bottom:38px;
  }

  .system-grid,
  .resource-grid,
  .story-grid { grid-template-columns:1fr; }

  .system-card,
  .resource-card,
  .story-card { min-height:260px; }

  .card-number { margin-bottom:46px; }

  .project-row,
  .news-row { grid-template-columns:1fr; gap:10px; }

  .project-row .card-link,
  .news-row .card-link { grid-column:auto; }

  .article-row {
    grid-template-columns:1fr;
    gap:14px;
    padding:28px 0;
  }

  .article-row:hover {
    padding-left:0;
    background:transparent;
  }

  .article-index {
    flex-direction:row;
    align-items:center;
    gap:12px;
  }

  .article-main h3 {
    font-size:1.45rem;
  }

  .article-row > .article-actions {
    grid-column:auto;
    margin-top:6px;
  }

  .cta-band { align-items:flex-start; flex-direction:column; }
  .contact-layout { grid-template-columns:minmax(0, 1fr); }
}

@media (max-width: 480px) {
  .home-hero { padding:96px 20px; }
  .home-hero-content {
    width:auto;
    min-width:0;
    max-width:calc(100vw - 40px);
  }

  .home-hero .banner-badge {
    margin-bottom:1rem;
    font-size:0.6rem;
    letter-spacing:0.13em;
  }

  .home-hero .title-main {
    max-width:100%;
    font-size:clamp(2.75rem, 14.2vw, 3.6rem);
    line-height:0.94;
    overflow-wrap:anywhere;
  }

  .home-hero .title-main em {
    display:block;
    font-size:0.82em;
    margin-top:4px;
  }

  .home-hero .title-sub { font-size:1.05rem; }

  .home-hero .banner-desc {
    margin:1rem 0 1.35rem;
    font-size:0.86rem;
    line-height:1.65;
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
  }

  .feature-panel-copy,
  .system-card,
  .resource-card,
  .story-card,
  .site-page .contact-form-wrapper { padding:26px; }

  .articles-page .page-hero h1 {
    font-size:3.6rem;
  }

  .articles-page .page-index {
    gap:9px 18px;
  }

  .article-library-head h2 {
    font-size:2.55rem;
  }

  .article-library-stats {
    gap:14px 22px;
  }

  .article-results-head {
    gap:12px;
    flex-direction:column;
    align-items:flex-start;
    margin-bottom:12px;
  }

  .article-sort {
    width:100%;
  }

  .article-sort button {
    flex:1 1 50%;
  }
}

/* ============================================================
   Open source project page
   ============================================================ */
.opensource-page .opensource-hero::before {
  background:
    linear-gradient(90deg, rgba(0,0,0,0.92), rgba(0,0,0,0.52) 52%, rgba(0,0,0,0.18)),
    linear-gradient(180deg, rgba(0,0,0,0.16), #05070a 100%),
    url('../images/hero-banner.png') center 44% / cover no-repeat;
}

.open-projects-section {
  background:#05070a;
}

.open-projects-head {
  margin-bottom:clamp(42px, 6vw, 72px);
}

.open-projects-head h2 {
  font-size:clamp(2.15rem, 4vw, 3.8rem);
}

.open-projects-head h2 span {
  display:block;
  white-space:nowrap;
}

.open-project-grid {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:clamp(22px, 2.6vw, 36px);
  align-items:stretch;
}

.open-project-card {
  min-width:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:#080b10;
  border:1px solid rgba(255,255,255,0.14);
  border-radius:8px;
  box-shadow:0 24px 68px rgba(0,0,0,0.32);
  transform:translateY(0);
  transition:
    transform 240ms var(--ease-out),
    border-color 240ms var(--ease-out),
    box-shadow 240ms var(--ease-out);
}

.open-project-card:hover,
.open-project-card:focus-within {
  transform:translateY(-5px);
  border-color:rgba(255,255,255,0.28);
  box-shadow:0 34px 86px rgba(0,0,0,0.46);
}

.open-project-card.is-coming {
  background:#090b0f;
}

.open-project-visual {
  position:relative;
  aspect-ratio:16 / 10;
  display:block;
  overflow:hidden;
  background:#0b0e13;
  border-bottom:1px solid rgba(255,255,255,0.12);
}

.open-project-visual::after {
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(180deg, rgba(0,0,0,0.12), transparent 42%, rgba(0,0,0,0.74)),
    linear-gradient(90deg, rgba(0,0,0,0.26), transparent 45%);
}

.open-project-visual img {
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(0.72) contrast(1.08);
  transform:scale(1);
  transition:transform 500ms var(--ease-out), filter 300ms var(--ease-out);
}

.open-project-card:hover .open-project-visual img,
.open-project-card:focus-within .open-project-visual img {
  transform:scale(1.025);
  filter:saturate(0.86) contrast(1.1);
}

.open-project-state,
.open-project-visual-label {
  position:absolute;
  z-index:2;
  color:rgba(255,255,255,0.78);
  font:0.66rem/1 var(--font-mono);
  letter-spacing:0.14em;
}

.open-project-state {
  top:24px;
  left:24px;
  display:flex;
  align-items:center;
  gap:9px;
}

.open-project-state i {
  width:7px;
  height:7px;
  flex:0 0 auto;
  border-radius:50%;
  background:#6fe0c5;
  box-shadow:0 0 14px rgba(111,224,197,0.54);
}

.is-coming .open-project-state i {
  background:#e7bd65;
  box-shadow:0 0 14px rgba(231,189,101,0.48);
}

.open-project-visual-label {
  right:24px;
  bottom:22px;
  color:rgba(255,255,255,0.48);
  text-align:right;
}

.open-project-visual.is-ros2 {
  display:flex;
  align-items:center;
  justify-content:center;
  background-color:#080b10;
  background-image:
    linear-gradient(rgba(255,255,255,0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.045) 1px, transparent 1px);
  background-size:52px 52px;
}

.open-project-visual.is-ros2::before {
  content:'';
  position:absolute;
  width:64%;
  height:1px;
  background:#e7bd65;
  opacity:0.58;
  transform:rotate(-18deg);
  box-shadow:0 0 28px rgba(231,189,101,0.18);
}

.open-project-wordmark {
  position:relative;
  z-index:1;
  display:grid;
  justify-items:start;
  min-width:48%;
}

.open-project-wordmark span,
.open-project-wordmark small {
  color:rgba(255,255,255,0.48);
  font:0.67rem/1 var(--font-mono);
  letter-spacing:0.2em;
}

.open-project-wordmark strong {
  margin:12px 0 14px;
  color:#fff;
  font:700 clamp(3.5rem, 7vw, 6.7rem)/0.85 var(--font);
  letter-spacing:0;
}

.open-project-body {
  flex:1;
  display:flex;
  flex-direction:column;
  padding:clamp(26px, 3vw, 38px);
}

.open-project-meta {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  color:rgba(255,255,255,0.4);
  font:0.64rem/1.4 var(--font-mono);
  letter-spacing:0.12em;
}

.open-project-body h3 {
  margin:28px 0 14px;
  color:#fff;
  font-size:clamp(1.75rem, 3vw, 2.8rem);
  line-height:1.05;
  letter-spacing:0;
  overflow-wrap:anywhere;
}

.open-project-body > p {
  max-width:620px;
  color:rgba(255,255,255,0.62);
  font-size:0.94rem;
  line-height:1.82;
}

.open-project-tags {
  display:flex;
  flex-wrap:wrap;
  gap:8px 18px;
  margin:28px 0 34px;
  padding:20px 0;
  border-top:1px solid rgba(255,255,255,0.1);
  border-bottom:1px solid rgba(255,255,255,0.1);
}

.open-project-tags li {
  color:rgba(255,255,255,0.68);
  font:0.68rem/1.4 var(--font-mono);
  letter-spacing:0.09em;
}

.open-project-tags li::before {
  content:'+';
  margin-right:6px;
  color:rgba(255,255,255,0.34);
}

.open-project-actions {
  min-height:46px;
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:auto;
}

.open-project-link {
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 18px;
  color:#fff;
  font-size:0.76rem;
  line-height:1.3;
  border:1px solid rgba(255,255,255,0.22);
  border-radius:6px;
  transition:background 200ms var(--ease-out), color 200ms var(--ease-out), border-color 200ms var(--ease-out);
}

.open-project-link::after {
  content:'  \2197';
  margin-left:8px;
}

.open-project-link.is-primary,
.open-project-link:hover,
.open-project-link:focus-visible {
  background:#fff;
  color:#05070a;
  border-color:#fff;
}

.open-project-link.is-primary:hover,
.open-project-link.is-primary:focus-visible {
  background:rgba(255,255,255,0.82);
}

.open-project-link.is-disabled {
  color:rgba(255,255,255,0.38);
  background:transparent;
  border-color:rgba(255,255,255,0.12);
  cursor:not-allowed;
}

.open-project-link.is-disabled::after {
  content:'';
}

.open-source-access-section {
  padding-top:clamp(72px, 9vw, 128px);
  padding-bottom:clamp(72px, 9vw, 128px);
}

.open-source-access {
  display:grid;
  grid-template-columns:minmax(0, 1.2fr) minmax(280px, 0.8fr);
  gap:clamp(40px, 8vw, 110px);
  align-items:end;
  padding:clamp(42px, 6vw, 76px) 0;
  border-top:1px solid rgba(255,255,255,0.16);
  border-bottom:1px solid rgba(255,255,255,0.16);
}

.open-source-access h2 {
  max-width:760px;
  margin:18px 0 20px;
  color:#fff;
  font-size:clamp(2.25rem, 4.8vw, 4.9rem);
  line-height:1;
  letter-spacing:0;
}

.open-source-access p {
  max-width:660px;
  color:rgba(255,255,255,0.58);
  font-size:0.95rem;
  line-height:1.8;
}

.open-source-access-actions {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:14px;
}

@media (max-width: 900px) {
  .open-project-grid,
  .open-source-access {
    grid-template-columns:1fr;
  }

  .open-source-access-actions {
    justify-content:flex-start;
  }
}

@media (max-width: 560px) {
  .open-project-meta {
    align-items:flex-start;
    flex-direction:column;
    gap:7px;
  }

  .open-project-state {
    top:18px;
    left:18px;
  }

  .open-project-visual-label {
    right:18px;
    bottom:17px;
  }

  .open-project-wordmark {
    min-width:58%;
  }

  .open-project-wordmark strong {
    font-size:clamp(3.2rem, 19vw, 5.2rem);
  }

  .open-project-actions,
  .open-project-link {
    width:100%;
  }
}

/* Products center refresh */
.products-page .products-hero {
  background:
    linear-gradient(180deg, rgba(2,4,8,0.08), #05070a 100%),
    #05070a;
}

.products-page .products-hero::before {
  background:
    linear-gradient(90deg, rgba(0,0,0,0.92), rgba(0,0,0,0.54) 58%, rgba(0,0,0,0.2)),
    linear-gradient(135deg, rgba(255,255,255,0.12) 0 1px, transparent 1px 42px),
    linear-gradient(180deg, #080c12, #020304);
  filter:none;
}

.products-page .products-hero::after {
  background-image:
    linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.04) 1px, transparent 1px);
  background-size:84px 84px;
  mask-image:linear-gradient(90deg, black, transparent 82%);
  opacity:0.44;
}

.product-family-grid {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:1px;
  background:rgba(255,255,255,0.12);
  border:1px solid rgba(255,255,255,0.12);
}

.product-family-card {
  position:relative;
  min-height:340px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:clamp(28px, 4vw, 48px);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.035), transparent 44%),
    #090c11;
  overflow:hidden;
}

.product-family-card::after {
  content:'';
  position:absolute;
  right:30px;
  bottom:30px;
  width:116px;
  height:116px;
  border:1px solid rgba(255,255,255,0.14);
  transform:rotate(45deg);
  opacity:0.42;
}

.product-family-card:hover {
  background:#10151d;
}

.family-code,
.airframe-topline,
.module-type {
  color:rgba(255,255,255,0.42);
  font:0.68rem/1 var(--font-mono);
  letter-spacing:0.16em;
}

.product-family-card h3 {
  max-width:520px;
  color:#fff;
  font-size:clamp(2rem, 4vw, 4rem);
  line-height:1;
  margin:54px 0 18px;
}

.product-family-card p {
  max-width:560px;
  color:rgba(255,255,255,0.58);
}

.product-family-card strong {
  position:relative;
  z-index:1;
  display:block;
  margin-top:42px;
  color:#fff;
  font:0.82rem/1.4 var(--font-mono);
  letter-spacing:0.1em;
}

.airframe-grid {
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:1px;
  background:rgba(255,255,255,0.12);
  border:1px solid rgba(255,255,255,0.12);
}

.airframe-card {
  position:relative;
  min-height:520px;
  display:flex;
  flex-direction:column;
  padding:32px;
  background:#090c11;
  overflow:hidden;
}

.airframe-card::before {
  content:'VTOL';
  position:absolute;
  right:24px;
  top:92px;
  color:rgba(255,255,255,0.035);
  font:700 4.4rem/1 var(--font-mono);
  letter-spacing:0;
  writing-mode:vertical-rl;
}

.airframe-card.is-featured {
  background:
    linear-gradient(180deg, rgba(74,142,255,0.16), transparent 42%),
    #0a1018;
}

.airframe-card.is-coming {
  background:
    linear-gradient(180deg, rgba(212,168,92,0.14), transparent 46%),
    #0d0d10;
}

.airframe-card:hover {
  background-color:#111721;
}

.airframe-topline {
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:center;
  margin-bottom:74px;
}

.airframe-topline span {
  color:rgba(255,255,255,0.72);
}

.airframe-topline em {
  color:rgba(255,255,255,0.38);
  font-style:normal;
}

.airframe-card h3 {
  position:relative;
  z-index:1;
  color:#fff;
  font-size:clamp(2rem, 3.3vw, 3.15rem);
  line-height:1;
  margin-bottom:18px;
}

.airframe-card p {
  position:relative;
  z-index:1;
  color:rgba(255,255,255,0.6);
  font-size:0.92rem;
}

.airframe-card dl {
  position:relative;
  z-index:1;
  margin:30px 0 28px;
  border-top:1px solid rgba(255,255,255,0.13);
}

.airframe-card dl div {
  display:grid;
  grid-template-columns:72px minmax(0, 1fr);
  gap:14px;
  padding:13px 0;
  border-bottom:1px solid rgba(255,255,255,0.09);
}

.airframe-card dt {
  color:rgba(255,255,255,0.38);
  font:0.68rem/1.5 var(--font-mono);
  letter-spacing:0.1em;
}

.airframe-card dd {
  color:rgba(255,255,255,0.78);
  font-size:0.82rem;
}

.airframe-card .card-link {
  position:relative;
  z-index:1;
  margin-top:auto;
}

.module-grid {
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));
  gap:1px;
  background:rgba(255,255,255,0.12);
  border:1px solid rgba(255,255,255,0.12);
}

.module-card {
  min-height:390px;
  display:flex;
  flex-direction:column;
  padding:30px;
  background:#090c11;
}

.module-card:hover {
  background:#10151d;
}

.module-card h3 {
  color:#fff;
  font-size:clamp(1.25rem, 2vw, 1.85rem);
  line-height:1.18;
  margin:58px 0 16px;
}

.module-card p {
  color:rgba(255,255,255,0.58);
  font-size:0.88rem;
}

.module-card ul {
  display:grid;
  gap:10px;
  margin-top:auto;
  padding-top:28px;
}

.module-card li {
  color:rgba(255,255,255,0.66);
  font:0.72rem/1.4 var(--font-mono);
  letter-spacing:0.08em;
  padding-top:10px;
  border-top:1px solid rgba(255,255,255,0.1);
}

.selection-panel {
  display:grid;
  grid-template-columns:minmax(0, 1fr) auto;
  gap:clamp(28px, 6vw, 76px);
  align-items:end;
  padding:clamp(38px, 6vw, 72px);
  background:#fff;
  color:#050505;
}

.selection-panel h2 {
  max-width:760px;
  color:#050505;
  font-size:clamp(2rem, 4vw, 4rem);
  line-height:1;
  margin-bottom:20px;
}

.selection-panel p {
  max-width:760px;
  color:rgba(5,5,5,0.68);
}

.selection-panel .eyebrow {
  color:rgba(5,5,5,0.52);
}

.selection-actions {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:14px;
}

.selection-panel .btn-outline {
  color:#050505;
  border-color:rgba(5,5,5,0.42);
}

.selection-panel .btn-outline:hover {
  background:#050505;
  color:#fff;
  border-color:#050505;
}

@media (max-width: 1100px) {
  .airframe-grid,
  .module-grid {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .product-family-grid,
  .selection-panel {
    grid-template-columns:1fr;
  }

  .selection-actions {
    justify-content:flex-start;
  }
}

@media (max-width: 768px) {
  .airframe-grid,
  .module-grid {
    grid-template-columns:1fr;
  }

  .product-family-card,
  .airframe-card,
  .module-card {
    min-height:auto;
  }

  .product-family-card::after {
    width:82px;
    height:82px;
  }

  .airframe-card::before {
    top:84px;
    font-size:3.4rem;
  }

  .airframe-topline {
    margin-bottom:54px;
  }

  .module-card h3 {
    margin-top:42px;
  }
}

@media (max-width: 480px) {
  .product-family-card,
  .airframe-card,
  .module-card,
  .selection-panel {
    padding:26px;
  }

  .airframe-card dl div {
    grid-template-columns:1fr;
    gap:4px;
  }

  .selection-actions .btn {
    width:100%;
    justify-content:center;
  }
}

/* Products center catalog rows */
.products-page .content-section {
  scroll-margin-top:80px;
}

.product-catalog {
  display:grid;
  gap:0;
  border-top:1px solid rgba(255,255,255,0.14);
}

.catalog-row {
  display:grid;
  grid-template-columns:minmax(280px, 0.36fr) minmax(0, 1fr);
  gap:clamp(36px, 5vw, 70px);
  padding:clamp(34px, 5vw, 58px) 0;
  border-bottom:1px solid rgba(255,255,255,0.12);
}

.catalog-row-head {
  min-width:0;
}

.catalog-row-head .row-code {
  display:block;
  margin-bottom:22px;
  color:rgba(255,255,255,0.42);
  font:0.68rem/1 var(--font-mono);
  letter-spacing:0.16em;
}

.catalog-row-head h3 {
  color:#fff;
  font-size:clamp(1.85rem, 2.6vw, 2.8rem);
  line-height:1.04;
  letter-spacing:0;
  max-width:100%;
  text-wrap:balance;
  overflow-wrap:normal;
  margin-bottom:18px;
}

.catalog-row-head p {
  max-width:330px;
  color:rgba(255,255,255,0.58);
  font-size:0.92rem;
}

.product-tile-grid {
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(190px, 216px));
  gap:clamp(18px, 2vw, 28px);
  align-content:start;
  justify-content:start;
  background:transparent;
  border:0;
}

.product-tile {
  position:relative;
  --tile-image:url('../images/hero-banner.png');
  --status-color:rgba(255,255,255,0.72);
  aspect-ratio:1 / 1;
  min-height:0;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:0;
  background:
    linear-gradient(180deg, rgba(0,0,0,0.16), rgba(0,0,0,0.42)),
    var(--tile-image) center / cover no-repeat;
  border:1px solid rgba(255,255,255,0.18);
  border-radius:10px;
  box-shadow:
    0 18px 38px rgba(0,0,0,0.28),
    inset 0 1px 0 rgba(255,255,255,0.08);
  overflow:hidden;
  transform:translateY(0);
  transition:
    transform 240ms var(--ease-out),
    border-color 240ms var(--ease-out),
    box-shadow 240ms var(--ease-out);
  will-change:transform;
}

.product-tile::before {
  content:'';
  position:absolute;
  inset:0;
  z-index:0;
  border-radius:inherit;
  pointer-events:none;
  background:
    linear-gradient(180deg, rgba(0,0,0,0.2), rgba(0,0,0,0.78)),
    rgba(0,0,0,0.18);
  opacity:0.16;
  transition:opacity 300ms var(--ease-out);
}

.product-tile::after {
  content:'';
  position:absolute;
  inset:0;
  z-index:1;
  border-radius:inherit;
  pointer-events:none;
  background:
    linear-gradient(90deg, rgba(255,255,255,0.22), transparent 28%, transparent 72%, rgba(255,255,255,0.12)),
    linear-gradient(180deg, rgba(255,255,255,0.18), transparent 34%, transparent 76%, rgba(255,255,255,0.12));
  opacity:0.18;
  transition:opacity 240ms var(--ease-out);
}

.product-tile:hover,
.product-tile.is-active {
  transform:translateY(-4px);
  border-color:rgba(255,255,255,0.3);
  box-shadow:
    0 24px 56px rgba(0,0,0,0.42),
    0 0 32px rgba(255,255,255,0.08),
    inset 0 1px 0 rgba(255,255,255,0.1);
}

.product-tile:hover::before,
.product-tile:focus-visible::before,
.product-tile.is-active::before {
  opacity:0.78;
}

.product-tile:hover::after,
.product-tile:focus-visible::after,
.product-tile.is-active::after {
  opacity:0.34;
}

.product-tile:focus-visible {
  outline:0;
  border-color:rgba(255,255,255,0.42);
  box-shadow:
    0 24px 48px rgba(0,0,0,0.32),
    0 0 0 2px rgba(255,255,255,0.18);
}

.product-tile.is-featured {
  border-color:rgba(255,255,255,0.28);
}

.product-tile.is-coming {
  border-color:rgba(255,255,255,0.24);
}

.product-tile[data-state="available"],
.product-tile[data-state="online"],
.product-tile[data-state="resource"] {
  --status-color:#74dfc4;
}

.product-tile[data-state="coming"] {
  --status-color:#e9be66;
}

.product-tile[data-state="support"] {
  --status-color:#8fb8ff;
}

.product-tile-cover,
.product-tile-detail {
  position:absolute;
  inset:0;
  z-index:2;
  display:flex;
  flex-direction:column;
  padding:22px;
  transition:
    opacity 300ms var(--ease-out),
    transform 300ms var(--ease-out);
}

.product-tile-cover {
  display:grid;
  grid-template-columns:minmax(0, 1fr) max-content;
  column-gap:12px;
  align-content:start;
  align-items:start;
  justify-content:flex-start;
  padding:18px 20px;
}

.product-tile[data-status] .product-tile-cover::before {
  content:'';
  position:static;
  grid-column:2;
  grid-row:1;
  justify-self:end;
  margin-top:2px;
  color:var(--status-color);
  font:0.62rem/1 var(--font-mono);
  letter-spacing:0.1em;
  text-shadow:0 2px 12px rgba(0,0,0,0.8);
}

.product-tile[data-state="available"] .product-tile-cover::before {
  content:'可咨询';
}

.product-tile[data-state="coming"] .product-tile-cover::before {
  content:'即将发布';
}

.product-tile[data-state="online"] .product-tile-cover::before {
  content:'在线文档';
}

.product-tile[data-state="resource"] .product-tile-cover::before {
  content:'开放资源';
}

.product-tile[data-state="support"] .product-tile-cover::before {
  content:'技术支持';
}

.product-tile-detail {
  justify-content:flex-start;
  background:rgba(0,0,0,0.18);
  opacity:0;
  transform:translateX(34px);
}

.product-tile:hover .product-tile-cover,
.product-tile:focus-visible .product-tile-cover,
.product-tile.is-active .product-tile-cover {
  opacity:0;
  transform:translateX(-34px);
}

.product-tile:hover .product-tile-detail,
.product-tile:focus-visible .product-tile-detail,
.product-tile.is-active .product-tile-detail {
  opacity:1;
  transform:translateX(0);
}

.product-tile-detail span {
  position:relative;
  color:rgba(255,255,255,0.42);
  font:0.66rem/1 var(--font-mono);
  letter-spacing:0.14em;
}

.product-tile h4 {
  position:relative;
  color:#fff;
  text-shadow:0 2px 16px rgba(0,0,0,0.55);
}

.product-tile-cover h4 {
  grid-column:1;
  grid-row:1;
  min-width:0;
  max-width:none;
  font-size:clamp(1.1rem, 1.65vw, 1.35rem);
  line-height:1.1;
  letter-spacing:0;
  margin:0;
  text-wrap:balance;
}

.product-tile-detail h4 {
  font-size:clamp(1.35rem, 2.05vw, 1.82rem);
  line-height:1.05;
  letter-spacing:-0.035em;
  margin:14px 0 10px;
}

.product-tile-detail p {
  position:relative;
  color:rgba(255,255,255,0.74);
  font-size:0.8rem;
  line-height:1.62;
}

.product-tile-detail strong {
  position:relative;
  display:block;
  margin-top:auto;
  color:#fff;
  font:0.7rem/1 var(--font-mono);
  letter-spacing:0.1em;
}

.product-tile-detail strong::after {
  content:'  →';
}

.accessory-catalog .product-tile-cover h4 {
  font-size:clamp(1rem, 1.55vw, 1.25rem);
}

.accessory-catalog .product-tile-detail h4 {
  font-size:clamp(1.2rem, 1.82vw, 1.58rem);
}

@media (max-width: 900px) {
  .catalog-row {
    grid-template-columns:1fr;
    gap:24px;
  }

  .catalog-row-head p {
    max-width:640px;
  }

  .product-tile-grid {
    grid-template-columns:repeat(auto-fill, minmax(170px, 1fr));
  }
}

@media (max-width: 560px) {
  .product-tile-grid {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }

  .product-tile-cover,
  .product-tile-detail {
    padding:18px;
  }

  .product-tile-cover {
    column-gap:8px;
    padding:14px;
  }

  .product-tile[data-status] .product-tile-cover::before {
    margin-top:1px;
    font-size:0.58rem;
  }

  .product-tile-cover h4 {
    max-width:none;
    font-size:0.84rem;
    white-space:nowrap;
    text-wrap:nowrap;
  }

  .product-tile-detail h4 {
    margin:10px 0 8px;
    font-size:1.1rem;
  }

  .product-tile-detail p {
    display:-webkit-box;
    overflow:hidden;
    font-size:0.72rem;
    line-height:1.5;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:3;
  }

  .product-tile-detail strong {
    font-size:0.62rem;
  }
}

@media (max-width: 390px) {
  .product-tile-grid {
    grid-template-columns:1fr;
  }
}

/* Documentation catalog refresh */
.docs-page .content-section {
  scroll-margin-top:80px;
}

.docs-catalog .product-tile-grid {
  grid-template-columns:repeat(auto-fill, minmax(210px, 230px));
}

.docs-catalog .doc-tile {
  --tile-image:url('../images/hero-banner.png');
}

.docs-catalog .product-tile-cover h4 {
  max-width:none;
  font-size:clamp(0.92rem, 1.25vw, 1.05rem);
  line-height:1.25;
}

.docs-catalog .product-tile-detail h4 {
  font-size:clamp(1.18rem, 1.8vw, 1.52rem);
  line-height:1.18;
}

.docs-catalog .product-tile-detail p {
  font-size:0.78rem;
}

@media (max-width: 900px) {
  .docs-catalog .product-tile-grid {
    grid-template-columns:repeat(auto-fill, minmax(180px, 1fr));
  }
}

@media (max-width: 560px) {
  .docs-catalog .product-tile-grid {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }

  .docs-catalog .product-tile-cover {
    column-gap:6px;
    padding:12px;
  }

  .docs-catalog .product-tile-cover h4 {
    max-width:none;
    font-size:0.78rem;
    line-height:1.2;
    white-space:nowrap;
    text-wrap:nowrap;
  }

  .docs-catalog .product-tile[data-status] .product-tile-cover::before {
    margin-top:1px;
    font-size:0.54rem;
    letter-spacing:0.02em;
  }
}

/* Supplied media integration */
.home-partners {
  background:#05070a;
  border-top:1px solid rgba(255,255,255,0.08);
}

.partner-marquee {
  --partner-gap:clamp(38px, 5vw, 72px);
  margin-top:50px;
  overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
  mask-image:linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

.partner-track {
  width:max-content;
  display:flex;
  will-change:transform;
  animation:partner-scroll 34s linear infinite;
}

.partner-marquee:hover .partner-track {
  animation-play-state:paused;
}

.partner-list {
  flex:none;
  display:flex;
  align-items:center;
  gap:var(--partner-gap);
  margin:0;
  padding:10px var(--partner-gap) 10px 0;
  list-style:none;
}

.partner-logo {
  flex:0 0 clamp(112px, 10vw, 144px);
  width:clamp(112px, 10vw, 144px);
  height:clamp(104px, 9vw, 128px);
  display:flex;
  align-items:center;
  justify-content:center;
  background:transparent;
}

.partner-logo img {
  width:clamp(88px, 8vw, 112px);
  height:clamp(88px, 8vw, 112px);
  display:block;
  object-fit:contain;
}

@keyframes partner-scroll {
  to {
    transform:translate3d(-50%, 0, 0);
  }
}

.contact-qr-grid {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:18px;
  margin-top:38px;
}

.contact-qr-item {
  min-width:0;
  margin:0;
  padding:12px;
  background:#0a0e14;
  border:1px solid rgba(255,255,255,0.12);
  border-radius:6px;
}

.contact-qr-item img {
  width:100%;
  height:auto;
  aspect-ratio:1 / 1;
  display:block;
  object-fit:contain;
  background:#fff;
}

.contact-qr-item figcaption {
  padding:14px 2px 2px;
}

.contact-qr-item figcaption strong,
.contact-qr-item figcaption span {
  display:block;
}

.contact-qr-item figcaption strong {
  color:#fff;
  font-size:0.82rem;
}

.contact-qr-item figcaption span {
  margin-top:5px;
  color:rgba(255,255,255,0.5);
  font-size:0.68rem;
  line-height:1.5;
}

@media (max-width: 640px) {
  .partner-marquee {
    --partner-gap:26px;
    margin-top:34px;
  }

  .partner-track {
    animation-duration:28s;
  }

  .partner-logo {
    flex-basis:100px;
    width:100px;
    height:100px;
  }

  .partner-logo img {
    width:84px;
    height:84px;
  }

  .contact-qr-grid {
    gap:12px;
  }
}

@media (max-width: 390px) {
  .contact-qr-grid {
    grid-template-columns:1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  .partner-marquee {
    overflow-x:auto;
    -webkit-mask-image:none;
    mask-image:none;
    scrollbar-width:thin;
  }

  .partner-track {
    animation:none;
  }

  .partner-list[aria-hidden="true"] {
    display:none;
  }
}

/* Homepage direct business layout */
.home-section {
  min-height:clamp(720px, 84svh, 900px);
  display:flex;
  align-items:center;
  padding:112px 0;
}

.home-section > .container {
  width:100%;
  min-width:0;
}

.home-products,
.home-customization {
  background:#030507;
}

.home-simulation {
  background:#080b10;
}

.business-layout {
  display:grid;
  grid-template-columns:minmax(0, 0.9fr) minmax(460px, 1.1fr);
  gap:clamp(56px, 7vw, 108px);
  align-items:center;
}

.business-copy {
  max-width:620px;
}

.business-index {
  display:block;
  margin-bottom:38px;
  padding-bottom:16px;
  color:rgba(255,255,255,0.4);
  border-bottom:1px solid rgba(255,255,255,0.14);
  font:0.68rem/1.4 var(--font-mono);
  letter-spacing:0.14em;
}

.business-copy .section-tag {
  display:block;
  margin-bottom:18px;
}

.business-copy h2 {
  max-width:760px;
  margin:0;
  color:#fff;
  font-size:clamp(3rem, 4.4vw, 4.6rem);
  line-height:1.03;
  letter-spacing:0;
}

.business-copy > p {
  max-width:610px;
  margin-top:26px;
  color:rgba(255,255,255,0.64);
  font-size:1rem;
  line-height:1.9;
}

.business-points {
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  margin:34px 0;
  padding:0;
  list-style:none;
  border-top:1px solid rgba(255,255,255,0.14);
  border-bottom:1px solid rgba(255,255,255,0.14);
}

.business-points li {
  min-width:0;
  padding:18px 16px 18px 0;
  border-right:1px solid rgba(255,255,255,0.1);
}

.business-points li + li {
  padding-left:16px;
}

.business-points li:last-child {
  border-right:0;
}

.business-points strong,
.business-points span {
  display:block;
}

.business-points strong {
  color:#fff;
  font:700 0.8rem/1.3 var(--font-mono);
}

.business-points span {
  margin-top:8px;
  color:rgba(255,255,255,0.48);
  font-size:0.72rem;
}

.business-visual {
  position:relative;
  min-height:0;
  aspect-ratio:4 / 3;
  margin:0;
  overflow:hidden;
  background:#05070a;
  border:1px solid rgba(255,255,255,0.14);
  box-shadow:0 34px 90px rgba(0,0,0,0.38);
}

.business-visual > img {
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  filter:saturate(0.84) contrast(1.08);
}

.business-visual::after {
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.76));
}

.business-visual figcaption,
.simulation-readout {
  position:absolute;
  left:28px;
  right:28px;
  bottom:26px;
  z-index:1;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  padding-top:14px;
  border-top:1px solid rgba(255,255,255,0.28);
}

.business-visual figcaption span,
.simulation-readout span {
  color:rgba(255,255,255,0.56);
  font:0.66rem/1.4 var(--font-mono);
  letter-spacing:0.12em;
}

.business-visual figcaption strong,
.simulation-readout strong {
  color:#fff;
  font:700 0.82rem/1.3 var(--font-mono);
}

.product-stage > img {
  object-position:center;
}

.product-visual-stack {
  min-width:0;
  display:grid;
  gap:14px;
}

.simulation-stage {
  background:#020304;
}

.simulation-stage > img {
  object-position:center;
}

.simulation-stage::before {
  content:'';
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background-image:
    linear-gradient(rgba(113,156,214,0.12) 1px, transparent 1px),
    linear-gradient(90deg, rgba(113,156,214,0.12) 1px, transparent 1px);
  background-size:54px 54px;
  opacity:0.55;
}

.simulation-readout {
  z-index:2;
}

.customization-stage > img {
  object-fit:contain;
  background:#05070a;
}

.s9-teaser {
  display:grid;
  grid-template-columns:96px minmax(0, 1fr) auto;
  gap:20px;
  align-items:center;
  width:100%;
  min-height:106px;
  padding:14px 18px;
  color:#fff;
  background:#05070a;
  border:1px solid rgba(255,255,255,0.16);
  border-radius:4px;
  box-shadow:0 18px 44px rgba(0,0,0,0.22);
  transition:border-color 180ms ease, background-color 180ms ease, transform 180ms ease;
}

.s9-teaser:hover,
.s9-teaser:focus-visible {
  color:#fff;
  background:rgba(8,11,16,0.94);
  border-color:rgba(233,190,102,0.5);
  transform:translateY(-2px);
}

.s9-teaser img {
  width:96px;
  height:70px;
  display:block;
  object-fit:cover;
  background:#080b10;
}

.s9-teaser small,
.s9-teaser strong,
.s9-teaser em {
  display:block;
}

.s9-teaser small {
  color:#e9be66;
  font:0.62rem/1.4 var(--font-mono);
  letter-spacing:0.12em;
}

.s9-teaser strong {
  margin-top:5px;
  font-size:0.96rem;
}

.s9-teaser em {
  margin-top:4px;
  color:rgba(255,255,255,0.48);
  font-size:0.72rem;
  font-style:normal;
  line-height:1.45;
}

.s9-teaser-action {
  color:rgba(255,255,255,0.72);
  font:0.66rem/1.4 var(--font-mono);
  white-space:nowrap;
}

.s9-teaser-action b {
  margin-left:8px;
  color:#e9be66;
  font-weight:400;
}

.delivery-list {
  margin:34px 0;
  padding:0;
  list-style:none;
  border-top:1px solid rgba(255,255,255,0.14);
}

.delivery-list li {
  display:grid;
  grid-template-columns:42px minmax(0, 1fr);
  gap:16px;
  padding:18px 0;
  border-bottom:1px solid rgba(255,255,255,0.1);
}

.delivery-list > li > span {
  color:rgba(255,255,255,0.36);
  font:0.66rem/1.6 var(--font-mono);
}

.delivery-list strong {
  display:block;
  color:#fff;
  font-size:0.9rem;
}

.delivery-list p {
  margin-top:5px;
  color:rgba(255,255,255,0.48);
  font-size:0.76rem;
  line-height:1.6;
}

.home-partners {
  min-height:auto;
  padding:96px 0;
}

.home-partners .home-editorial {
  grid-template-columns:minmax(260px, 0.8fr) minmax(0, 1.2fr);
  gap:64px;
  align-items:end;
  margin-bottom:46px;
}

.home-partners .home-editorial h2 {
  color:#fff;
  font-size:clamp(3rem, 4vw, 4rem);
  line-height:1.04;
}

.home-partners .home-editorial p {
  color:rgba(255,255,255,0.6);
  font-size:0.96rem;
  line-height:1.8;
}

@media (max-width: 1000px) {
  .home-section {
    min-height:auto;
    padding:92px 0;
  }

  .business-layout {
    grid-template-columns:1fr;
    gap:48px;
  }

  .business-layout.is-reversed .business-copy {
    order:1;
  }

  .business-layout.is-reversed .business-visual {
    order:2;
  }

  .business-copy {
    max-width:760px;
  }

  .business-visual {
    width:100%;
    min-height:0;
    aspect-ratio:16 / 10;
  }
}

@media (max-width: 768px) {
  .home-section {
    padding:76px 0;
  }

  .business-index {
    margin-bottom:28px;
  }

  .business-copy h2 {
    font-size:2.5rem;
    line-height:1.08;
  }

  .business-copy > p {
    font-size:0.92rem;
    line-height:1.8;
  }

  .business-points {
    margin:28px 0;
  }

  .business-points li {
    padding:16px 10px 16px 0;
  }

  .business-points li + li {
    padding-left:10px;
  }

  .business-points strong {
    font-size:0.68rem;
  }

  .business-points span {
    font-size:0.66rem;
  }

  .business-visual {
    aspect-ratio:1 / 1;
  }

  .business-visual figcaption,
  .simulation-readout {
    left:18px;
    right:18px;
    bottom:18px;
  }

  .s9-teaser {
    grid-template-columns:72px minmax(0, 1fr);
    gap:13px;
    min-height:94px;
    padding:11px;
  }

  .s9-teaser img {
    width:72px;
    height:58px;
  }

  .s9-teaser-action {
    display:none;
  }

  .delivery-list {
    margin:28px 0;
  }

  .home-partners {
    padding:76px 0;
  }

  .home-partners .home-editorial {
    grid-template-columns:1fr;
    gap:20px;
    margin-bottom:34px;
  }

  .home-partners .home-editorial h2 {
    font-size:2.5rem;
  }
}

/* ---- Open-font typography and shared heading rhythm ---- */
.home-page h1,
.home-page h2,
.home-page h3,
.site-page h1,
.site-page h2,
.site-page h3 {
  font-family:var(--font);
  letter-spacing:0;
}

.home-hero .title-main,
.site-page .page-hero h1,
.site-page .editorial-head h2,
.articles-page .article-library-head h2,
.opensource-page .open-source-access h2,
.products-page .selection-panel h2,
.home-page .business-copy h2,
.home-page .home-partners .home-editorial h2 {
  line-height:var(--display-line-height);
  letter-spacing:0;
  text-wrap:balance;
}

.site-page .catalog-row-head h3,
.site-page .contact-layout .contact-heading,
.site-page .product-family-card h3,
.site-page .airframe-card h3,
.site-page .module-card h3,
.site-page .open-project-body h3 {
  line-height:var(--heading-line-height);
  letter-spacing:0;
  text-wrap:balance;
}

.opensource-page .open-project-wordmark strong {
  line-height:1.08;
  letter-spacing:0;
}

@media (max-width: 560px) {
  .site-page .page-hero h1 {
    font-size:clamp(3rem, 14vw, 3.5rem);
  }
}

/* Production 404 page */
.error-page {
  background:#020304;
}

.error-main {
  min-height:70vh;
}

.error-hero {
  min-height:clamp(680px, 88vh, 900px);
  align-items:center;
  padding-top:clamp(130px, 14vh, 180px);
}

.error-hero::before {
  background:
    radial-gradient(circle at 78% 32%, rgba(75,115,166,0.2), transparent 32%),
    linear-gradient(90deg, rgba(0,0,0,0.96), rgba(0,0,0,0.58) 58%, rgba(0,0,0,0.34)),
    linear-gradient(180deg, rgba(0,0,0,0.08), #05070a 100%),
    url('../images/hero-banner.png') center 42% / cover no-repeat;
}

.error-hero-inner {
  display:grid;
  grid-template-columns:minmax(0, 1.25fr) minmax(240px, 0.55fr);
  gap:clamp(64px, 10vw, 150px);
  align-items:end;
}

.error-code {
  margin:0 0 12px;
  color:rgba(255,255,255,0.2) !important;
  font:700 clamp(5.5rem, 12vw, 10rem)/0.78 var(--font-mono) !important;
  letter-spacing:-0.08em;
}

.error-hero h1 {
  max-width:760px;
  font-size:clamp(3.2rem, 7vw, 6.5rem);
}

.error-actions {
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-top:34px;
}

.error-actions .btn {
  min-width:148px;
  justify-content:center;
}

.error-route {
  display:flex;
  flex-direction:column;
  border-top:1px solid rgba(255,255,255,0.22);
}

.error-route > span {
  padding:18px 0;
  color:rgba(255,255,255,0.45);
  font:0.66rem/1 var(--font-mono);
  letter-spacing:0.16em;
}

.error-route a {
  display:grid;
  grid-template-columns:34px 1fr;
  gap:14px;
  align-items:center;
  padding:18px 0;
  border-top:1px solid rgba(255,255,255,0.12);
  color:rgba(255,255,255,0.76);
  font-size:0.9rem;
  transition:color 180ms ease, padding 180ms ease;
}

.error-route a strong {
  color:rgba(255,255,255,0.34);
  font:0.66rem/1 var(--font-mono);
}

.error-route a:hover,
.error-route a:focus-visible {
  padding-left:8px;
  color:#fff;
}

@media (max-width: 768px) {
  .error-hero {
    min-height:760px;
    align-items:flex-end;
  }

  .error-hero-inner {
    grid-template-columns:1fr;
    gap:54px;
  }

  .error-code {
    font-size:clamp(5rem, 28vw, 7rem) !important;
  }

  .error-hero h1 {
    font-size:clamp(2.8rem, 13vw, 3.6rem);
  }

  .error-route {
    max-width:460px;
  }
}
