@font-face{
  font-family:'Geist';
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
  src:url('fonts/Geist.woff2') format('woff2');
}
@font-face{
  font-family:'Geist Mono';
  font-style:normal;
  font-weight:100 900;
  font-display:swap;
  src:url('fonts/GeistMono.woff2') format('woff2');
}
:root{
  --ink:#040705; --ink2:#070d0a; --line:#1a211d; --line2:#243029;
  --brand:#00b576; --brand-dim:#0a8f5e; --txt:#e8efe9; --dim:#8aa195;
  --amber:#fcbb00; --orange:#ff8b1a; --blue:#54a2ff;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background-color:var(--ink); color:var(--txt);
  background-image:
    radial-gradient(circle at 12% 8%, rgba(0,181,118,.06), transparent 42%),
    radial-gradient(circle at 88% 16%, rgba(0,181,118,.045), transparent 46%),
    radial-gradient(circle at 50% 92%, rgba(0,181,118,.035), transparent 52%);
  font-family:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased; line-height:1.72; margin:0;
}
.font-mono{font-family:'Geist Mono',ui-monospace,SFMono-Regular,monospace}
a{color:inherit;text-decoration:none}
::selection{background:rgba(0,181,118,.32);color:#fff}

/* ---------- glow ---------- */
.glow{position:relative;isolation:isolate}
.glow::before{
  content:""; position:absolute; left:50%; top:-12%;
  width:62rem; height:62rem; transform:translateX(-50%);
  background:radial-gradient(circle, rgba(0,181,118,.16), transparent 60%);
  filter:blur(40px); z-index:-1; pointer-events:none;
}
.glow-sm::before{width:34rem;height:34rem;opacity:.55}

/* ---------- glass / card ---------- */
.glass{background:rgba(255,255,255,.03);border:1px solid var(--line);backdrop-filter:blur(12px)}
.card{
  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.012));
  border:1px solid var(--line); border-radius:.75rem;
  transition:border-color .25s, transform .25s, box-shadow .25s;
}
/* 卡片标题默认中性白，仅 hover 时转绿 —— 克制用色，避免"全是重点" */
.card-title{color:var(--txt);font-weight:600;transition:color .2s}
.card.group:hover .card-title{color:var(--brand)}
.card p{line-height:1.72}
/* 全页仅 1–2 处允许常驻强调（对齐 OpenHack 的 2× border-accent 纪律） */
.card-accent{border-color:rgba(0,181,118,.4)}
.card:hover{border-color:rgba(0,181,118,.5);transform:translateY(-3px);
  box-shadow:0 10px 30px -6px rgba(0,181,118,.45),0 4px 12px -2px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.15)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.72rem 1.3rem;
  border-radius:.5rem;font-weight:600;font-size:.95rem;transition:all .2s;cursor:pointer;
  border:1px solid transparent;line-height:1}
.btn-brand{background:var(--brand);color:#02110b}
.btn-brand:hover{box-shadow:0 0 26px -4px rgba(0,181,118,.75);transform:translateY(-1px)}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--txt)}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}

/* ---------- chips ---------- */
.chip{display:inline-flex;align-items:center;padding:.32rem .75rem;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.02);font-size:.84rem;color:var(--dim)}
.chip-brand{border-color:rgba(0,181,118,.4);color:var(--brand);background:rgba(0,181,118,.06)}

/* ---------- eyebrow / 小标签（节区上方，区分层级，不用大绿字） ---------- */
.eyebrow{font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
/* ---------- 超大数字焦点（全站仅 1–2 处，制造"一眼看到重点"） ---------- */
.stat-num{font-size:clamp(2.4rem,4.6vw,3.4rem);font-weight:700;line-height:1;letter-spacing:-.02em}
.stat-label{font-size:.85rem;color:var(--dim);margin-top:.6rem;line-height:1.5}
.stat-sub{opacity:.65;font-size:.78rem}

/* ---------- terminal ---------- */
.term{background:#050a07;border:1px solid var(--line);border-radius:.8rem;overflow:hidden;
  font-family:'Geist Mono',monospace;font-size:.82rem}
.term-bar{display:flex;gap:.45rem;padding:.6rem .9rem;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02)}
.term-dot{width:.65rem;height:.65rem;border-radius:50%}
.term-body{padding:1.05rem 1.15rem;color:#bfe9d6;white-space:pre;overflow-x:auto;line-height:1.75}
.term-body .p{color:var(--brand)} .term-body .ok{color:var(--brand)}
.term-body .d{color:var(--dim)} .term-body .w{color:var(--amber)} .term-body .c{color:var(--blue)}

/* ---------- nav ---------- */
.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(12px);
  background:rgba(4,7,5,.72);border-bottom:1px solid var(--line)}

/* ---------- layout ---------- */
.section{padding:6.5rem 1.5rem}
.wrap{max-width:1200px;margin:0 auto}
.rule{height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent)}
/* 定价对比表：分组标题行 */
.cmp-group td{padding:.7rem 1rem;font-weight:700;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--branddim);background:rgba(0,181,118,.06);border-top:1px solid var(--line)}
:root[data-theme="light"] .cmp-group td{color:#0a8f5e;background:rgba(0,138,92,.06)}
/* 定价对比表：差异单元格状态 — yes=品牌绿✓ / no=暗灰— / mid=暗灰小字(部分差异) */
.cmp-yes{color:var(--brand);font-weight:700}
.cmp-no{color:var(--dim);font-weight:600}
.cmp-mid{color:var(--dim);font-size:.82rem;line-height:1.35}
.cmp-diff th{border-bottom:1px solid var(--line)}
.cmp-diff tbody tr:not(.cmp-group) td{border-top:1px solid var(--line)}
:root[data-theme="light"] .cmp-yes{color:#008a5c}
:root[data-theme="light"] .cmp-no{color:#6b7280}
:root[data-theme="light"] .cmp-mid{color:#6b7280}

/* ---------- faq ---------- */
.faq-item{border:1px solid var(--line);border-radius:.75rem;background:rgba(255,255,255,.02);overflow:hidden}
.faq-q{width:100%;text-align:left;background:none;border:0;color:var(--txt);
  padding:1.1rem 1.25rem;font-size:1.02rem;font-weight:600;cursor:pointer;
  display:flex;justify-content:space-between;gap:1rem;align-items:center;font-family:inherit}
.faq-a{max-height:0;overflow:hidden;transition:max-height .3s ease;color:var(--dim);padding:0 1.25rem}
.faq-item.open .faq-a{max-height:420px;padding-bottom:1.1rem}
.faq-item.open .faq-icon{transform:rotate(45deg)}
.faq-icon{transition:transform .25s;color:var(--brand);font-size:1.4rem;line-height:1;flex:none}

/* ---------- motion ---------- */
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- docs 文档页（VitePress 式：左栏贴边 sticky 全高 + 右内容铺满） ---------- */

/* 文档体：去掉默认 section 内边距，让左右到边 */
.doc-body{padding:0!important}

/* 全宽 flex 布局容器 —— 左栏脱离版心、右内容独占剩余宽度 */
.doc-layout{
  display:flex;align-items:flex-start;width:100%
}

/* 左侧导航 —— 贴左边、sticky 全高、固定宽（对齐 NexIoT / VitePress） */
.doc-nav{
  position:sticky;top:64px;
  display:flex;flex-direction:column;gap:0;font-size:.865rem;
  width:260px;flex-shrink:0;height:calc(100vh - 64px);overflow-y:auto;
  padding:1.4rem .9rem 2rem .9rem;
  background:linear-gradient(180deg, rgba(255,255,255,.025), rgba(255,255,255,.008));
  border-right:1px solid var(--line);
  scrollbar-width:thin;scrollbar-color:var(--line) transparent
}
/* 组标题 —— 粗体小字，视觉分隔 */
.doc-nav-group{
  font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--dim);padding:1.1rem .7rem .45rem;margin-top:.2rem;
  opacity:.65
}
.doc-nav-group:first-child{margin-top:0}
/* 导航子项 —— active 用左边框 + 背景色块高亮 */
.doc-nav a{
  padding:.4rem .7rem .4rem .85rem;border-radius:.35rem;color:var(--dim);
  transition:all .14s;text-decoration:none;display:block;
  font-size:.84rem;border-left:2px solid transparent;margin-left:-.15rem
}
.doc-nav a:hover{color:var(--txt);background:rgba(255,255,255,.035)}
.doc-nav a.active{
  color:var(--brand);background:rgba(0,181,118,.1);
  border-left-color:var(--brand);font-weight:600;
  box-shadow:inset 3px 0 0 rgba(0,181,118,.25)
}

/* 右侧主内容区 —— 独占剩余宽度，最佳阅读宽度约束 */
.doc-main{
  flex:1;min-width:0;max-width:860px;
  padding:2rem 2.5rem 4rem 2.5rem;
  margin:0 auto
}

/* 移动端：左栏变为水平标签栏（保留） */
@media(max-width:1023px){
  .doc-layout{flex-direction:column}
  .doc-nav{position:static;width:100%;height:auto;flex-shrink:0;
    flex-direction:row;flex-wrap:wrap;gap:.3rem;
    border-right:none;border-bottom:1px solid var(--line);
    padding:.7rem 1rem .8rem;margin:0;border-radius:0;
    overflow-y:visible;scrollbar-width:none
  }
  .doc-nav-group{display:none}
  .doc-nav a{padding:.28rem .65rem;font-size:.8rem;margin-left:0}
  .doc-main{max-width:100%;padding:1.5rem 1rem 3rem 1rem}
}
.doc-section{scroll-margin-top:88px;padding-bottom:2.8rem;
  border-bottom:1px solid rgba(26,33,29,.45)}
.doc-section:last-of-type{border-bottom:none;padding-bottom:0}
.doc-h{font-size:1.5rem;font-weight:700;margin-top:2.6rem;margin-bottom:.85rem;color:var(--txt)}
.doc-section:first-of-type .doc-h{margin-top:.2rem}
.doc-sub{color:var(--dim);margin:.2rem 0 1.1rem;line-height:1.7}
.doc-code{background:#050a07;border:1px solid var(--line);border-radius:.7rem;padding:1rem 1.15rem;
  font-family:'Geist Mono',ui-monospace,monospace;font-size:.82rem;color:#bfe9d6;overflow-x:auto;line-height:1.72;white-space:pre}
.doc-code .c{color:var(--dim)}
.doc-note{border-left:2px solid var(--brand);background:rgba(0,181,118,.05);padding:.7rem 1rem;
  border-radius:0 .5rem .5rem 0;font-size:.84rem;color:var(--dim);margin:1.1rem 0;line-height:1.7}
.doc-note b{color:var(--brand);font-weight:600}
.doc-table{width:100%;border-collapse:collapse;font-size:.88rem;margin:1rem 0}
.doc-table th,.doc-table td{border:1px solid var(--line);padding:.6rem .8rem;text-align:left;vertical-align:top}
.doc-table th{color:var(--txt);background:rgba(255,255,255,.03);font-weight:600}
.doc-table td{color:var(--dim)}

/* 核心引擎列表 */
.doc-list{list-style:none;margin:1rem 0 1.2rem;padding:0;display:grid;gap:.55rem}
.doc-list li{display:flex;gap:.9rem;align-items:baseline;font-size:.92rem;color:var(--dim);
  border:1px solid var(--line);border-radius:.6rem;padding:.6rem .85rem;background:rgba(255,255,255,.015)}
.doc-list-k{font-family:'Geist Mono',ui-monospace,monospace;color:var(--txt);font-weight:600;flex:none;min-width:7.5rem}
.doc-list li span:last-child{line-height:1.6}

/* 底部建议阅读顺序面包屑（对齐 zhishi.help 模式） */
.doc-breadcrumb{
  display:flex;flex-wrap:wrap;align-items:center;gap:.2rem;font-size:.82rem;
  color:var(--dim);margin-top:3rem;padding-top:1.5rem;
  border-top:1px solid var(--line)
}
.doc-breadcrumb a{color:var(--dim);transition:color .14s}
.doc-breadcrumb a:hover{color:var(--brand)}
.doc-breadcrumb .bc-sep{margin:0 .25rem;opacity:.4}

/* 文档 Hero 底部分隔线 */
.doc-hero{padding-bottom:2rem;border-bottom:1px solid var(--line);margin-bottom:-.5rem}

/* ============================================================
   主题切换：亮色 token + 组件覆盖（暗色为默认，详见 <head> 内联初始化）
   对齐 OpenHack：用 data-theme 挂在 <html> 上，CSS 变量驱动全站换肤
   ============================================================ */
:root[data-theme="light"]{
  --ink:#f4f7f5; --ink2:#e9efeb; --line:#d3dcdb; --line2:#c1cec8;
  --brand:#008a5c; --brand-dim:#006b46; --txt:#0d1612; --dim:#4f6358;
}
/* 亮色下各组件背景/边框覆盖（暗色块如代码框 .doc-code/.term 故意保留暗色，符合文档站惯例） */
:root[data-theme="light"] body{background-image:
    radial-gradient(circle at 12% 8%, rgba(0,138,92,.07), transparent 42%),
    radial-gradient(circle at 88% 16%, rgba(0,138,92,.05), transparent 46%),
    radial-gradient(circle at 50% 92%, rgba(0,138,92,.04), transparent 52%)}
:root[data-theme="light"] .glass{background:rgba(255,255,255,.6)}
:root[data-theme="light"] .card{background:linear-gradient(180deg, rgba(0,0,0,.018), rgba(0,0,0,.04))}
:root[data-theme="light"] .chip{background:rgba(0,0,0,.03)}
:root[data-theme="light"] .nav{background:rgba(244,247,245,.82)}
:root[data-theme="light"] .doc-nav{background:linear-gradient(180deg, rgba(0,0,0,.022), rgba(0,0,0,.006));border-right-color:rgba(0,0,0,.1)}
:root[data-theme="light"] .doc-nav a:hover{background:rgba(0,0,0,.045)}
:root[data-theme="light"] .doc-nav a.active{background:rgba(0,138,92,.12)}
:root[data-theme="light"] .doc-section{border-bottom-color:rgba(0,0,0,.09)}
:root[data-theme="light"] .doc-note{background:rgba(0,138,92,.07)}
:root[data-theme="light"] .doc-table th{background:rgba(0,0,0,.022)}
:root[data-theme="light"] .doc-list li{background:rgba(0,0,0,.018)}
:root[data-theme="light"] .faq-item{background:rgba(0,0,0,.018)}
:root[data-theme="light"] .doc-breadcrumb,.doc-hero{border-top-color:var(--line)}
:root[data-theme="light"] ::selection{background:rgba(0,138,92,.28);color:#02110b}
:root[data-theme="light"] footer{background:rgba(0,0,0,.02)}

/* 切换按钮（日/月图标，按 data-theme 显隐） */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:32px;
  border-radius:.5rem;border:1px solid var(--line);background:transparent;color:var(--dim);
  cursor:pointer;padding:0;transition:all .18s}
.theme-toggle:hover{color:var(--brand);border-color:var(--brand)}
.theme-toggle svg{width:16px;height:16px}
.theme-toggle .ic-sun{display:block}
.theme-toggle .ic-moon{display:none}
:root[data-theme="light"] .theme-toggle .ic-sun{display:none}
:root[data-theme="light"] .theme-toggle .ic-moon{display:block}

/* 标题悬停 # 锚点（VitePress 式，i18n 安全；标题本身带 id 可深链） */
.doc-h{position:relative}
.doc-h::after{content:"#";position:absolute;left:-1.15em;top:.14em;
  color:var(--brand);opacity:0;transition:opacity .15s;font-weight:400;font-size:.78em;pointer-events:none}
.doc-h:hover::after,.doc-h:focus-within::after{opacity:.65}
@media(max-width:767px){.doc-h::after{display:none}}

/* 文档底部 上一节/下一节 导航（VitePress 式） */
.doc-prevnext{display:flex;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.pn{display:flex;flex-direction:column;gap:.25rem;max-width:48%;padding:.85rem 1.1rem;
  border:1px solid var(--line);border-radius:.6rem;text-decoration:none;transition:all .16s}
.pn-prev{text-align:left;align-items:flex-start}
.pn-next{text-align:right;align-items:flex-end;margin-left:auto}
.pn:hover{border-color:var(--brand);background:rgba(0,181,118,.05)}
.pn-dir{font-size:.74rem;color:var(--dim);letter-spacing:.04em}
.pn-name{font-size:.98rem;font-weight:600;color:var(--txt)}
.pn.disabled{pointer-events:none;opacity:.35}
@media(max-width:640px){.doc-prevnext{flex-direction:column}.pn{max-width:100%}.pn-next{margin-left:0;align-items:flex-start;text-align:left}}
