/* td-index.css · 由 td-index/src/styles/global.css（= templates/assets/archives.D9NLPmNr.css）原样搬运，末尾追加各组件 scoped 样式 */
/* ============================================================
   TorchDigit 炬擎数原 · 设计系统
   来源：TorchDigit 官网.dc.html（Claude Design 设计稿）1:1 移植
   ============================================================ */

:root {
  /* 墨色阶 */
  --ink: #202226;
  --ink-800: #3a4250;
  --ink-700: #4a4e54;
  --ink-600: #61666e;
  --ink-500: #8a8f97;
  --ink-400: #a2a7ae;
  /* 品牌蓝 */
  --blue: #3568ff;
  --blue-deep: #1e4bd8;
  --blue-hover: #2a55d8;
  --navy: #1b2f6b;
  --navy-dark: #142660;
  --blue-soft: #7c9cff;
  /* 面色 */
  --bg-card: #f5f7fb;
  --bg-tint: #eef3ff;
  --bg-tint-2: #eef2fd;
  --bg-page: #f7f9fd;
  /* 线 */
  --line: rgba(32, 34, 38, 0.08);
  --line-9: rgba(32, 34, 38, 0.09);
  --line-10: rgba(32, 34, 38, 0.1);
}

* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  margin: 0;
  background: #ffffff;
  color: var(--ink);
  font-family: "Inter", "Noto Sans SC", "Source Han Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
  font-weight: 400;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-text-size-adjust: 100%;
  text-wrap: pretty;
}
a {
  color: var(--ink);
  text-decoration: none;
}
a:hover {
  color: var(--blue);
}
button {
  font-family: inherit;
  cursor: pointer;
}
input,
textarea,
select {
  font-family: inherit;
}
::selection {
  background: #cddbff;
}

/* ---------- 动画 ---------- */
@keyframes tdBlink { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0; } }
@keyframes tdFadeUp { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@keyframes tdFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes tdPageIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@keyframes tdBob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(6px); } }
@keyframes tdZoom { from { transform: scale(1.06); } to { transform: scale(1); } }
/* Hero 交错入场（设计稿 tdRise0–5） */
@keyframes tdRise0 { 0% { opacity: 0; transform: translateY(22px); } 100% { opacity: 1; transform: none; } }
@keyframes tdRise1 { 0%, 9% { opacity: 0; transform: translateY(22px); } 100% { opacity: 1; transform: none; } }
@keyframes tdRise2 { 0%, 18% { opacity: 0; transform: translateY(22px); } 100% { opacity: 1; transform: none; } }
@keyframes tdRise3 { 0%, 27% { opacity: 0; transform: translateY(22px); } 100% { opacity: 1; transform: none; } }
@keyframes tdRise4 { 0%, 36% { opacity: 0; transform: translateY(22px); } 100% { opacity: 1; transform: none; } }
@keyframes tdRise5 { 0%, 52% { opacity: 0; } 100% { opacity: 1; } }

/* 页面基础高度：内容不足一屏时 main 撑满，页脚固定在视口底部而不上浮 */
body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
main {
  flex: 1 0 auto;
  animation: tdPageIn 0.5s cubic-bezier(0.22, 0.68, 0, 1);
}

/* ---------- 滚动揭示 ---------- */
.reveal {
  opacity: 0;
  transform: translateY(24px);
}
.reveal.in {
  opacity: 1;
  transform: none;
  transition:
    opacity 0.85s cubic-bezier(0.22, 0.68, 0, 1),
    transform 0.85s cubic-bezier(0.22, 0.68, 0, 1);
}
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
  }
}

/* ---------- 布局 ---------- */
.td-wrap {
  max-width: 1280px;
  margin: 0 auto;
  padding-left: 32px;
  padding-right: 32px;
}
.td-sec {
  padding-top: 96px;
  padding-bottom: 96px;
}

/* 蓝色 kicker 条 */
.td-bar {
  width: 48px;
  height: 6px;
  border-radius: 3px;
  background: var(--blue);
}
.td-h2 {
  margin: 16px 0 0;
  font-size: clamp(28px, 3.3vw, 44px);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
}
.td-h1 {
  margin: 22px 0 0;
  font-size: clamp(34px, 4.4vw, 56px);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.14;
}
.td-lead {
  margin: 18px 0 0;
  font-size: 16.5px;
  line-height: 1.85;
  color: var(--ink-700);
  max-width: 44em;
}

/* ---------- 按钮 ---------- */
.td-btn {
  display: inline-block;
  border-radius: 999px;
  font-weight: 500;
  border: none;
  transition:
    transform 0.28s cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 0.28s ease,
    background 0.28s ease,
    color 0.28s ease;
}
.td-btn-dark {
  background: var(--ink);
  color: #ffffff;
}
.td-btn-dark:hover {
  background: var(--blue);
  color: #ffffff;
  transform: translateY(-1px);
  box-shadow: 0 10px 22px -12px rgba(53, 104, 255, 0.7);
}
.td-btn-blue {
  background: var(--blue);
  color: #ffffff;
  font-weight: 600;
}
.td-btn-blue:hover {
  background: var(--blue-hover);
  color: #ffffff;
  transform: translateY(-2px);
  box-shadow: 0 16px 34px -16px rgba(20, 38, 96, 0.75);
}
.td-btn-white {
  background: rgba(255, 255, 255, 0.92);
  color: var(--navy);
  font-weight: 600;
}
.td-btn-white:hover {
  background: #ffffff;
  color: var(--navy);
  transform: translateY(-2px);
  box-shadow: 0 16px 34px -16px rgba(20, 38, 96, 0.6);
}

/* 筛选 chips（浅色页面） */
.td-chip {
  padding: 8px 17px;
  border-radius: 999px;
  font-size: 13px;
  background: transparent;
  color: var(--ink-700);
  border: 1px solid rgba(32, 34, 38, 0.16);
  transition:
    background 0.25s ease,
    color 0.25s ease,
    border-color 0.25s ease,
    transform 0.2s ease;
}
.td-chip:hover {
  transform: translateY(-1px);
  color: var(--ink-700);
}
.td-chip.active {
  background: var(--blue);
  color: #fff;
  border-color: var(--blue);
}
.td-chip.active:hover {
  color: #fff;
}

/* ---------- 卡片 ---------- */
.td-card {
  background: var(--bg-card);
  border-radius: 16px;
  padding: 32px;
}
.td-hover-up {
  transition:
    transform 0.4s cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 0.4s ease,
    background 0.3s ease;
}
.td-hover-up:hover {
  color: var(--ink);
  transform: translateY(-5px);
  box-shadow: 0 24px 46px -26px rgba(20, 38, 96, 0.5);
}

/* 图片占位（蓝图纹理） */
.td-ph {
  background: repeating-linear-gradient(122deg, #e9edf7 0 9px, #ffffff 9px 18px);
  display: grid;
  place-items: center;
  font-size: 11px;
  letter-spacing: 0.12em;
  color: var(--ink-500);
}

/* 分隔行列表（1px 缝隙） */
.td-rows {
  display: flex;
  flex-direction: column;
  gap: 1px;
  background: var(--line-9);
  border-top: 1px solid var(--line-9);
}
.td-rows > * {
  background: #ffffff;
}

/* ---------- 栅格 ---------- */
.td-g2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.td-g3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.td-g4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 1024px) {
  .td-g4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 820px) {
  .td-g3 { grid-template-columns: 1fr; }
  .td-g2 { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .td-g4 { grid-template-columns: 1fr; }
  .td-sec { padding-top: 64px; padding-bottom: 64px; }
}

/* ---------- 导航 ---------- */
.td-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
  transition:
    box-shadow 0.35s ease,
    border-color 0.35s ease;
}
.td-header.scrolled {
  box-shadow: 0 10px 30px -22px rgba(20, 38, 96, 0.55);
  border-bottom-color: rgba(32, 34, 38, 0.14);
}
.td-nav-a {
  padding: 8px 8px 6px;
  font-size: 15.5px;
  color: var(--ink-600);
  font-weight: 400;
  border-bottom: 2px solid transparent;
  transition:
    color 0.2s ease,
    border-color 0.3s ease;
}
.td-nav-a:hover {
  color: var(--blue);
  border-color: rgba(53, 104, 255, 0.45);
}
.td-nav-a.active {
  color: var(--ink);
  font-weight: 600;
  border-color: var(--blue);
}

/* ---------- 页脚 ---------- */
.td-footer a {
  color: rgba(255, 255, 255, 0.8);
}
.td-footer a:hover {
  color: var(--blue-soft);
}

/* ---------- 博客列表行（archives / category 共用） ---------- */
.blog-row {
  display: grid;
  grid-template-columns: 120px 1fr 180px;
  gap: 24px;
  padding: 24px 4px;
  align-items: baseline;
  transition:
    background 0.3s ease,
    padding-left 0.3s ease;
}
.blog-row:hover {
  background: var(--bg-card);
  color: var(--ink);
  padding-left: 16px;
}
@media (max-width: 820px) {
  .blog-row {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .blog-row > span:last-child {
    text-align: left;
  }
}

/* ---------- 文章正文（post.html th:utext 注入） ---------- */
.td-article {
  font-size: 15.5px;
  line-height: 1.95;
  color: var(--ink-800);
}
.td-article h2 {
  margin: 2.2em 0 0.8em;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ink);
}
.td-article h3 {
  margin: 1.8em 0 0.7em;
  font-size: 19px;
  font-weight: 600;
  color: var(--ink);
}
.td-article p {
  margin: 1.1em 0;
}
.td-article a {
  color: var(--blue);
  border-bottom: 1px solid rgba(53, 104, 255, 0.3);
}
.td-article img {
  max-width: 100%;
  border-radius: 12px;
}
.td-article blockquote {
  margin: 1.4em 0;
  padding: 4px 22px;
  border-left: 3px solid var(--blue);
  background: var(--bg-card);
  border-radius: 0 10px 10px 0;
  color: var(--ink-600);
}
.td-article pre {
  background: #17181b;
  color: rgba(255, 255, 255, 0.9);
  border-radius: 11px;
  padding: 18px 20px;
  overflow-x: auto;
  font-size: 13.5px;
  line-height: 1.75;
}
.td-article code {
  font-family: ui-monospace, "Cascadia Code", Consolas, monospace;
  font-size: 0.92em;
}
.td-article :not(pre) > code {
  background: var(--bg-tint);
  color: var(--blue-deep);
  border-radius: 5px;
  padding: 2px 6px;
}
.td-article table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.td-article th,
.td-article td {
  border: 1px solid var(--line-10);
  padding: 10px 14px;
  text-align: left;
}
.td-article th {
  background: var(--bg-tint-2);
}

/* ============================================================
   以下为原 Astro 组件 / Vue island 的 scoped 样式，去掉了
   [data-astro-cid-*] / [data-v-*] 属性选择器，改为普通类名。
   来源：td-index/templates/*.html 内联 <style>
   ============================================================ */

/* ---------- 首页：RailNav 右侧悬浮锚点 ---------- */
.td-rail{position:fixed;right:16px;top:50%;transform:translateY(-50%);z-index:40;display:flex;flex-direction:column;gap:9px;align-items:flex-end}
.td-rail a{display:flex;align-items:center;gap:10px;height:44px;padding:0 13px;border-radius:999px;background:rgba(255,255,255,.95);border:1px solid rgba(32,34,38,.1);box-shadow:0 10px 26px -18px rgba(20,38,96,.55);color:#61666e;overflow:hidden;transition:color .25s ease,border-color .25s ease,box-shadow .25s ease}
.td-rail a:hover,.td-rail a.active{color:#3568ff;border-color:rgba(53,104,255,.45);box-shadow:0 14px 30px -18px rgba(20,38,96,.7)}
.td-rail a.active{font-weight:600}
.td-rail-label{white-space:nowrap;font-size:13.5px;max-width:0;opacity:0;transition:max-width .32s cubic-bezier(.2,.7,.2,1),opacity .25s ease}
.td-rail a:hover .td-rail-label{max-width:110px;opacity:1}
@media (max-width:1200px){.td-rail{display:none}}

/* ---------- 首页：Pillar 三大板块 ---------- */
.pillar-cols{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
#p-edge .pillar-cols,#p-sec .pillar-cols{grid-template-columns:minmax(0,1fr)}
#p-edge .pillar-cols p,#p-sec .pillar-cols p{max-width:52em!important;text-align:center;margin-inline:auto!important}
#p-novi .pillar-cols{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}
#p-novi .pillar-feature-grid{grid-template-columns:1fr}
#p-novi .pillar-actions{justify-content:flex-start}
.pillar-feature-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.pillar-actions{justify-content:center}
.td-home-art{max-width:100%;overflow:hidden;border-radius:16px;background:#fff}
.td-home-art img{display:block;width:100%;max-width:100%;height:auto}
@media (max-width:700px){.pillar-feature-grid{grid-template-columns:1fr}}
.pillar-btn-dark:hover{background:#3568ff;color:#fff;transform:translateY(-2px)}
.pillar-btn-light:hover{color:#3568ff;border-color:rgba(53,104,255,.4)}
@media (max-width:900px){.pillar-cols{grid-template-columns:1fr;gap:32px}.pillar-cols>*{order:initial!important}.pillar-art{order:2!important;height:260px!important}}
@media (max-width:900px){#p-novi .pillar-cols{grid-template-columns:minmax(0,1fr)}}

/* ---------- 首页：NoviMatrix 分组 ---------- */
.novi-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
@media (max-width:820px){.novi-groups{grid-template-columns:1fr}.novi-groups>[style*=grid-column]{grid-column:auto!important}}

/* ---------- 首页：ModelsGrid 旗舰卡 ---------- */
.model-card{transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.model-card:hover{transform:translateY(-5px)}

/* ---------- 首页：LiveDemo 端侧推理实测台（原 Vue scoped） ---------- */
.demo-k{font-size:11px;letter-spacing:.18em;color:rgba(255,255,255,.5);margin-bottom:11px}
.demo-opt{text-align:left;padding:11px 13px;border-radius:9px;border:1px solid;transition:all .25s ease}
.demo-pill{border:1px solid;transition:all .25s ease;background:transparent;color:rgba(255,255,255,.72);border-color:rgba(255,255,255,.16)}
.demo-pill.active{background:rgba(124,156,255,.16);color:#fff;border-color:#7c9cff}
.metric{background:rgba(255,255,255,.05);border-radius:10px;padding:14px}
.metric-v{font-size:25px;font-weight:700;letter-spacing:-.02em;color:#fff}
.metric-k{margin-top:6px;font-size:12.5px;color:rgba(255,255,255,.58)}
.demo-cursor{display:inline-block;width:7px;height:14px;background:#7c9cff;vertical-align:-2px;animation:tdBlink 1s steps(1) infinite}
@media (max-width:900px){.demo-grid{grid-template-columns:1fr!important}.metric-grid{grid-template-columns:repeat(2,1fr)!important}}

/* ---------- 首页：SecDetail 安全能力 ---------- */
.sec-cap{transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease}
.sec-cap:hover{transform:translateY(-4px);box-shadow:0 20px 40px -24px rgba(20,38,96,.45)}
.sec-loop{display:grid;grid-template-columns:200px 1fr;gap:32px}
@media (max-width:820px){.sec-loop{grid-template-columns:1fr;gap:10px}}

/* ---------- 首页：Industries 行业卡 ---------- */
.industry-card:hover{background:#eef3ff!important;transform:translateY(-4px);box-shadow:0 20px 40px -24px rgba(20,38,96,.5)}

/* ---------- 首页：Partners 合作伙伴 ---------- */
.partner-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
@media (max-width:1024px){.partner-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:600px){.partner-grid{grid-template-columns:repeat(2,1fr)}}

/* ---------- 关于我们：发展历程 ---------- */
.milestone-row{display:grid;grid-template-columns:120px 1fr;gap:24px;padding:24px 0;align-items:baseline}
@media (max-width:600px){.milestone-row{grid-template-columns:1fr;gap:6px}}

/* ---------- 联系我们：表单 ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-label{display:flex;flex-direction:column;gap:7px;font-size:12.5px;color:#61666e}
.form-input{padding:11px 13px;border-radius:9px;background:#fff;border:1px solid transparent;font-size:14px;transition:border-color .2s ease,box-shadow .2s ease}
.form-input:focus{border-color:#3568ff;box-shadow:0 0 0 3px rgba(53,104,255,.16);outline:none}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr;gap:40px}}
@media (max-width:600px){.form-grid{grid-template-columns:1fr}}

/* ---------- 加入我们：职位行 ---------- */
.job-row{display:grid;grid-template-columns:1.6fr 1fr 1fr 120px;gap:20px;padding:24px 4px;align-items:center}
@media (max-width:820px){.job-row{grid-template-columns:1fr;gap:8px}.job-cta{text-align:left!important}}

/* ---------- 模型 / 产品矩阵：规格表行 ---------- */
.model-tr{display:grid;grid-template-columns:1.5fr 1fr 1fr 2.4fr;gap:16px}
@media (max-width:820px){.model-tr{grid-template-columns:1fr;gap:6px}}

/* ---------- 新闻动态 ---------- */
.news-row:hover{background:#f5f7fb!important;color:#202226;padding-left:24px}
.news-side-card{transition:transform .35s cubic-bezier(.2,.7,.2,1),background .3s ease}
.news-side-card:hover{color:#202226;background:#eef3ff!important;transform:translate(4px)}
.news-top{display:grid;grid-template-columns:1.4fr 1fr;gap:20px}
.news-row{display:grid;grid-template-columns:110px 1fr 120px;gap:24px;padding:24px 12px;align-items:baseline;transition:background .3s ease,padding-left .3s ease}
@media (max-width:900px){.news-top{grid-template-columns:1fr}.news-row{grid-template-columns:1fr;gap:8px}.news-row>span:last-child{text-align:left}}

/* ---------- 开源社区：仓库行 ---------- */
.repo-row{display:grid;grid-template-columns:1fr 2fr 130px 110px;gap:20px}
@media (max-width:820px){.repo-row{grid-template-columns:1fr;gap:8px}.repo-row>span:last-child{text-align:left}}

/* ---------- 解决方案：场景 Tab ---------- */
.scene-cols{display:grid;grid-template-columns:1.1fr 1fr}
.scene-kpis{display:grid;grid-template-columns:repeat(3,1fr)}
@media (max-width:900px){.scene-cols{grid-template-columns:1fr}.scene-art{height:280px!important}.scene-kpis{grid-template-columns:1fr}}


/* Global supporting descriptions: +1px */
main p[style*="font-size:11.5px"], main p[style*="font-size: 11.5px"] { font-size: 12.5px !important; }
main p[style*="font-size:13px"], main p[style*="font-size: 13px"] { font-size: 14px !important; }
main p[style*="font-size:13.5px"], main p[style*="font-size: 13.5px"] { font-size: 14.5px !important; }
main p[style*="font-size:14px"], main p[style*="font-size: 14px"] { font-size: 15px !important; }
main p[style*="font-size:14.5px"], main p[style*="font-size: 14.5px"] { font-size: 15.5px !important; }
main p[style*="font-size:15px"], main p[style*="font-size: 15px"] { font-size: 16px !important; }
main p[style*="font-size:15.5px"], main p[style*="font-size: 15.5px"] { font-size: 16.5px !important; }
main p[style*="font-size:16px"], main p[style*="font-size: 16px"] { font-size: 17px !important; }
main .td-lead { font-size: 17.5px !important; }
main .td-rail-label { font-size: 13.5px !important; }
main .pm-page .hero-copy p { font-size: 14px !important; }
main .pm-page .visual-main p { font-size: 12px !important; }
main .pm-page .stat span { font-size: 13px !important; }
main .pm-page .anchor-nav a { font-size: 13px !important; }
main .pm-page .section-head p { font-size: 15px !important; }
main .pm-page .card-meta { font-size: 11px !important; }
main .pm-page .card-foot span { font-size: 12px !important; }
main .pm-page .note { font-size: 12px !important; }
main .pm-page .spec-table td { font-size: 13.5px !important; }
main .pm-page .platform-card p { font-size: 14px !important; }
main .pm-page .platform-card li { font-size: 13px !important; }
main .pm-page .deploy-header p, main .pm-page .deploy-grid p { font-size: 13px !important; }
main .pm-page .closing p { font-size: 13.5px !important; }
main .news-intro p { font-size: 17px !important; }
main .news-intro-meta { font-size: 13px !important; }
main .news-feature-desc { font-size: 14.5px !important; }
main .news-feature-foot { font-size: 12px !important; }
main .news-side-top { font-size: 11px !important; }
main .news-side-date { font-size: 11px !important; }
main .news-feature-tag, main .news-row-category { font-size: 12px !important; }
main .news-feed-head p { font-size: 14px !important; }
main .news-row-desc { font-size: 14px !important; }
main .news-row-meta { font-size: 12px !important; }
main .news-media p { font-size: 13px !important; }
@media (max-width: 720px) { main .pm-page .stat span { font-size: 11px !important; } main .pm-page .anchor-nav a { font-size: 12px !important; } main .pm-page .section-head p { font-size: 13px !important; } }
@media (max-width: 760px) { main .news-intro p { font-size: 14px !important; } main .news-feature-desc { font-size: 13px !important; } main .news-feed-head p { font-size: 13px !important; } main .news-row-desc { font-size: 13px !important; } }

#edge-detail .model-card>div:first-child{isolation:isolate}
#edge-detail .model-banner-image{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:right center;pointer-events:none}
#edge-detail .model-card>div:first-child::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(to right,#eef3ff 0%,rgba(238,243,255,.98) 35%,rgba(238,243,255,.88) 50%,rgba(238,243,255,.48) 68%,rgba(238,243,255,.04) 100%);pointer-events:none}
#edge-detail .model-card>div:first-child>span{position:relative;z-index:2;text-shadow:0 1px 5px #eef3ff}
