/* ============================================================
   Lumina Global — Paper & Ink design system
   ============================================================ */
:root{
  /* palette */
  --paper:#F4F0E8;
  --surface:#FBF9F4;
  --surface2:#EEE9DE;
  --ink:#221E18;
  --ink2:#5C544A;
  --ink3:#928879;
  --line:#E3DCCE;
  --line2:#D2C8B6;
  --teal:#2C6B5D;
  --tealsoft:#E5ECE8;
  --teal-hover:#225449;
  --clay:#9A5A40;
  --claysoft:#F1E7DF;
  --tag:#6E7B6A;
  --gold:#8A7440;
  --violet:#6B6586;
  --mark:#F3E6C8;
  /* graph node colors */
  --n-topic:#2C6B5D;
  --n-org:#9A5A40;
  --n-doc:#5C544A;
  --n-tag:#6E7B6A;
  --n-series:#8A7440;
  --n-event:#6B6586;
  --n-person:#444444;
  /* fonts */
  --serif:'Spectral',Georgia,'Songti SC','Noto Serif CJK SC',serif;
  --sans:'IBM Plex Sans',system-ui,'PingFang SC','Microsoft YaHei','Noto Sans CJK SC',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,monospace;
  --container:1320px;
  --ease:.15s ease;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:14px;
  line-height:1.6;
  overflow-x:clip;   /* 兜底防宽内容撑出横向滚动;clip 不产生滚动容器,不破坏 sticky header */
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
a{color:var(--teal);text-decoration:none;transition:color var(--ease);}
a:hover{color:var(--teal-hover);}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;margin:0;color:var(--ink);}
button{font-family:inherit;cursor:pointer;}
mark{background:var(--mark);color:var(--ink);padding:0 1px;border-radius:2px;}

.container{max-width:var(--container);margin:0 auto;padding:0 36px;}

/* ---------- buttons ---------- */
.btn-dark{background:var(--ink);color:#fff;border:none;border-radius:9px;padding:14px 26px;font-size:14px;font-weight:500;transition:background var(--ease);}
.btn-dark:hover{background:#000;}
.btn-teal{background:var(--teal);color:#fff;border:none;border-radius:9px;padding:14px 26px;font-size:14px;font-weight:500;transition:background var(--ease);display:inline-flex;align-items:center;}
.btn-teal:hover{background:var(--teal-hover);color:#fff;}
.btn-ghost{background:transparent;border:1px solid var(--line2);border-radius:9px;padding:13px 22px;font-size:14px;font-weight:500;color:var(--ink);transition:color var(--ease),border-color var(--ease);}
.btn-ghost:hover{border-color:var(--teal);color:var(--teal);}
.btn-sm{padding:8px 16px;font-size:14px;border-radius:8px;}
.btn-block{width:100%;justify-content:center;display:flex;}
.btn-clay{background:var(--clay);color:#fff;border:none;border-radius:9px;padding:12px 22px;font-size:14px;font-weight:500;transition:background var(--ease);}
.btn-clay:hover{background:#824b34;color:#fff;}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;height:66px;z-index:60;
  background:rgba(251,249,244,.9);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.header-inner{height:100%;display:flex;align-items:center;gap:34px;}   /* 高度跟随 .site-header,断点只改一处 */
.brand{display:inline-flex;align-items:baseline;gap:8px;color:var(--ink);}
.brand:hover{color:var(--ink);}
.brand-word{font-family:var(--serif);font-weight:500;font-size:25px;line-height:1;}
.brand-sub{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.28em;color:var(--ink3);}
.main-nav{display:flex;gap:26px;flex:1;}
.main-nav a{font-family:var(--sans);font-weight:500;font-size:14px;color:var(--ink2);transition:color var(--ease);}
.main-nav a:hover{color:var(--ink);}
.main-nav a.active{color:var(--teal);}
.header-right{display:flex;align-items:center;gap:14px;}
.lang-toggle{display:inline-flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden;}
.lang-toggle button{background:transparent;border:none;padding:6px 11px;font-family:var(--mono);font-size:12px;color:var(--ink2);transition:background var(--ease),color var(--ease);}
.lang-toggle button.active{background:var(--ink);color:#fff;}
.auth-slot{display:flex;align-items:center;gap:10px;}
.nav-burger{display:none;flex-direction:column;justify-content:center;gap:4px;width:40px;height:40px;padding:10px 9px;flex:none;}   /* 盒子外观(边框/圆角/hover)复用 .btn-ghost,见 index.html */
.nav-burger span{display:block;height:2px;background:var(--ink);border-radius:1px;transition:transform var(--ease),opacity var(--ease);}
.nav-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.nav-burger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.nav-burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
.auth-user{font-family:var(--mono);font-size:12px;color:var(--ink2);}
.auth-user b{font-family:var(--sans);font-weight:600;color:var(--ink);}
.role-badge{display:inline-block;font-family:var(--sans);font-size:10.5px;font-weight:600;line-height:1;padding:3px 7px;border-radius:6px;margin-left:6px;vertical-align:1px;border:1px solid transparent;}
.role-badge.role-superadmin{color:#fff;background:var(--teal);border-color:var(--teal);}
.role-badge.role-admin{color:var(--teal);background:var(--surface2);border-color:var(--line);}
.role-badge.role-user{color:var(--ink3);background:var(--surface2);border-color:var(--line);}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);margin-top:80px;padding:54px 0 40px;}
.footer-inner{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;}
.footer-tagline{color:var(--ink2);font-size:13px;margin:14px 0 0;max-width:320px;}
.footer-cols{display:flex;gap:64px;justify-content:flex-end;}
.footer-col{display:flex;flex-direction:column;gap:9px;}
.footer-col h4{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.2em;color:var(--ink3);margin-bottom:5px;}
.footer-col a,.footer-col span{font-size:13px;color:var(--ink2);}
.footer-legal{grid-column:1/-1;margin:34px 0 0;font-family:var(--mono);font-size:11px;color:var(--ink3);}

/* ---------- generic page ---------- */
.page{padding:48px 0 20px;}
.page-h1{font-family:var(--serif);font-weight:400;font-size:30px;line-height:1.1;}
.page-head{margin-bottom:28px;}
.eyebrow{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.2em;color:var(--clay);}
.eyebrow.muted{color:var(--ink3);}
.section-h2{font-family:var(--serif);font-weight:500;font-size:27px;}
.muted{color:var(--ink3);}
.loading,.empty,.errbox{padding:40px;text-align:center;color:var(--ink3);font-family:var(--mono);font-size:13px;}
.empty-card{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:48px 40px;text-align:center;}
.empty-card h3{font-size:20px;margin-bottom:8px;}
.empty-card p{color:var(--ink2);font-size:14px;margin:0 auto;max-width:420px;}

/* ---------- card ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:28px 30px;transition:border-color var(--ease);}
.card.hoverable:hover{border-color:var(--teal);}

/* ---------- badges / tags ---------- */
.tier{font-family:var(--mono);font-weight:500;font-size:10px;letter-spacing:.04em;padding:3px 7px;border-radius:5px;display:inline-block;}
.tier-1{color:var(--clay);background:var(--claysoft);}
.tier-2{color:var(--teal);background:var(--tealsoft);}
.tier-3{color:var(--ink2);background:var(--surface2);}
.tier-0{color:var(--ink3);background:var(--surface2);}
.lang-tag{font-family:var(--mono);font-weight:500;font-size:10px;padding:3px 7px;border-radius:5px;background:var(--surface2);color:var(--ink2);}
.tag{display:inline-block;background:var(--surface2);border-radius:5px;padding:5px 9px;font-family:var(--sans);font-size:12px;color:var(--ink2);}
.coll-tag{font-family:var(--mono);font-size:11px;color:var(--ink3);letter-spacing:.02em;}
.badge-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:9px;}

/* ============================================================
   HOME
   ============================================================ */
.hero{padding:64px 0 40px;}
.hero-kicker{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.2em;color:var(--clay);margin-bottom:18px;}
.hero h1{font-family:var(--serif);font-weight:400;font-size:60px;line-height:1.07;letter-spacing:-.01em;max-width:880px;}
.hero h1 .alt{display:block;color:var(--ink2);}
.hero h1 em{font-style:italic;color:var(--teal);}
.hero-intro{max-width:760px;margin:22px 0 0;}
.hero-intro p{font-size:15px;line-height:1.85;color:var(--ink2);margin:0 0 12px;}
.hero-intro .free{color:var(--clay);font-weight:500;margin-bottom:0;}

/* .pill:AI 工具页示例问题 chips 在用(首页检索已移除) */
.pill{display:inline-block;background:var(--surface2);border:1px solid var(--line);border-radius:20px;padding:6px 14px;font-size:13px;color:var(--ink2);transition:color var(--ease),border-color var(--ease);}
.pill:hover{border-color:var(--teal);color:var(--teal);}

/* .stat-cell/.stat-number/.stat-label 仅管理页 .admin-stats 在用(首页统计条已移除) */
.stat-cell{flex:1;padding:24px 28px;border-right:1px solid var(--line);}
.stat-cell:last-child{border-right:none;}
.stat-number{font-family:var(--serif);font-weight:400;font-size:34px;line-height:1;color:var(--ink);}
.stat-label{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink3);margin-top:8px;}

.home-section{margin:56px 0;}
.home-section > .section-h2{margin-bottom:22px;}

.feature-glyph{font-family:var(--mono);font-size:22px;color:var(--clay);margin-bottom:14px;}   /* AI 工具锁屏 .lock-card、图谱空态、首页产品序号在用 */

/* 三大产品(What we offer)——卡片底座复用 .card/.hoverable,按钮复用 .btn-teal.btn-sm */
.home-section > .eyebrow{margin-bottom:10px;}
.prod-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;}
.prod-card{display:flex;flex-direction:column;}
.prod-card h3{font-size:20px;margin-bottom:8px;}
.prod-card p{font-size:13px;color:var(--ink2);margin:0 0 18px;flex:1;}
.prod-btn{align-self:flex-start;}

/* 资助方与合作伙伴(分组标签在 .eyebrow.muted 上加金色下划线)*/
.org-block{margin-bottom:26px;}
.org-block:last-child{margin-bottom:0;}
.org-label{display:inline-block;padding-bottom:6px;border-bottom:2px solid var(--gold);margin-bottom:14px;}
.org-row{display:flex;gap:14px;flex-wrap:wrap;}
.org-card{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:16px 20px;font-family:var(--serif);font-weight:500;font-size:15px;max-width:420px;line-height:1.5;}
.org-more{font-size:13px;margin:14px 0 0;}

/* 运营团队(占位:在 .empty-card 上改虚线弱化)*/
.team-placeholder{border-style:dashed;border-color:var(--line2);color:var(--ink3);font-size:14px;}

/* Lumina Fellows(.card 底座 + 金色顶边呼应 .org-label 的分组下划线)*/
.fellow-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.fellow-card{border-top:2px solid var(--gold);padding:24px 16px;text-align:center;}
.fellow-card .fc-name{font-size:17px;line-height:1.35;}
.fellow-card .fc-en{display:block;font-family:var(--mono);font-size:10.5px;color:var(--ink3);letter-spacing:.05em;margin-top:8px;}

/* ============================================================
   SEARCH
   ============================================================ */
.search-top{padding:34px 0 22px;}
.search-compact{display:flex;border:1px solid var(--line2);border-radius:10px;overflow:hidden;background:var(--paper);max-width:680px;transition:border-color var(--ease);}
.search-compact:focus-within{border-color:var(--teal);}
.search-compact input{flex:1;border:none;background:transparent;padding:13px 16px;font-size:14px;outline:none;font-family:var(--sans);}
.search-compact button{border:none;background:var(--ink);color:#fff;padding:0 22px;font-weight:500;transition:background var(--ease);}
.search-compact button:hover{background:#000;}
.search-layout{display:grid;grid-template-columns:248px minmax(0,1fr);gap:34px;align-items:start;}
.facets{position:sticky;top:90px;}
.facet-group{margin-bottom:26px;}
.facet-group h4{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink3);margin-bottom:12px;}
.facet-item{display:flex;align-items:center;gap:9px;padding:5px 0;cursor:pointer;font-size:13px;color:var(--ink2);}
.facet-item:hover{color:var(--ink);}
.facet-item .cbox{width:15px;height:15px;border:1px solid var(--line2);border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;transition:border-color var(--ease),background var(--ease);}
.facet-item.checked .cbox{background:var(--teal);border-color:var(--teal);}
.facet-item.checked .cbox::after{content:"✓";color:#fff;font-size:10px;line-height:1;}
.facet-item .fname{flex:1;}
.facet-item .fcount{font-family:var(--mono);font-size:11px;color:var(--ink3);}

.active-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:18px;}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface2);border:1px solid var(--line);border-radius:6px;padding:4px 9px;font-size:12px;color:var(--ink2);}
.chip button{background:none;border:none;color:var(--ink3);font-size:13px;padding:0;line-height:1;}
.chip button:hover{color:var(--clay);}
.clear-all{font-family:var(--mono);font-size:12px;color:var(--teal);background:none;border:none;}

.results-count{font-family:var(--mono);font-size:12px;color:var(--ink3);margin-bottom:14px;}
.pagination{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center;margin:32px 0 8px;}
.page-btn{min-width:36px;height:36px;padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:var(--surface);color:var(--ink);font-family:var(--mono);font-size:13px;cursor:pointer;transition:border-color var(--ease),color var(--ease),background var(--ease);}
.page-btn:hover:not(:disabled):not(.current){border-color:var(--gold);color:var(--gold);}
.page-btn.current{background:var(--ink);color:#fff;border-color:var(--ink);cursor:default;}
.page-btn:disabled{opacity:.38;cursor:not-allowed;}
.page-ellipsis{color:var(--ink3);padding:0 2px;font-family:var(--mono);font-size:13px;}
.result{padding:20px 0;border-bottom:1px solid var(--line);cursor:pointer;}
.result:first-child{padding-top:0;}
.result h3{font-family:var(--serif);font-weight:500;font-size:19px;margin:0 0 7px;transition:color var(--ease);}
.result:hover h3{color:var(--teal);}
.result .snippet{font-size:13px;color:var(--ink2);line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;}
.result .result-meta{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-top:7px;}

/* ============================================================
   DOC
   ============================================================ */
.back-btn{font-family:var(--mono);font-size:12px;color:var(--ink2);background:none;border:none;padding:8px 0;display:inline-flex;gap:6px;align-items:center;}
.back-btn:hover{color:var(--teal);}
.doc-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:48px;align-items:start;margin-top:18px;}
.doc-title{font-family:var(--serif);font-weight:400;font-size:38px;line-height:1.15;margin-bottom:10px;}
.doc-subline{font-family:var(--mono);font-size:12px;color:var(--ink3);margin-bottom:30px;}
.chunk{display:grid;grid-template-columns:54px minmax(0,1fr);gap:18px;padding:14px 0;border-top:1px solid var(--line);}
.chunk:first-of-type{border-top:none;}
.chunk .gutter{font-family:var(--mono);font-size:11px;color:var(--ink3);padding-top:3px;}
.chunk .ctext{font-size:14.5px;line-height:1.72;color:var(--ink);font-family:var(--serif);font-weight:400;}
/* 排版好的文档正文(由源文件解析为 HTML) */
.doc-article{font-size:15.5px;line-height:1.85;color:var(--ink2);max-width:72ch;}
.doc-article p{margin:0 0 1.05em;}
.doc-article h1,.doc-article h2,.doc-article h3,.doc-article h4{font-family:var(--serif);font-weight:500;color:var(--ink);line-height:1.3;margin:1.5em 0 .5em;}
.doc-article h1{font-size:25px;} .doc-article h2{font-size:21px;} .doc-article h3{font-size:18px;} .doc-article h4{font-size:16px;}
.doc-article ul,.doc-article ol{margin:0 0 1.05em 1.4em;} .doc-article li{margin:.3em 0;}
.doc-article strong{color:var(--ink);font-weight:600;}
.doc-article em{font-style:italic;}
.doc-article a{color:var(--teal);}
.doc-article blockquote{border-left:3px solid var(--line2);margin:1em 0;padding:.2em 0 .2em 18px;color:var(--ink2);font-style:italic;}
.doc-article table{border-collapse:collapse;width:100%;margin:1.2em 0;font-size:14px;}
.doc-article td,.doc-article th{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top;}
.doc-article th{background:var(--surface2);font-weight:600;color:var(--ink);}
.doc-article img{max-width:100%;height:auto;}
.doc-figure{margin:1.5em 0;text-align:center;}
.doc-figure img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:8px;}
.doc-figure figcaption{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-top:8px;}
/* 正文内嵌 PDF 预览(原文 / docx·pptx 转换后):白页 + 细边 + 柔影,贴合 paper&ink */
.pdf-doc{display:flex;flex-direction:column;align-items:center;gap:20px;margin-top:6px;}
.pdf-page{width:100%;height:auto;display:block;background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:0 3px 14px rgba(34,30,24,.07);}
.meta-rail{position:sticky;top:90px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:24px 22px;}
.meta-rail .btn-teal{width:100%;justify-content:center;margin-bottom:10px;padding:12px;}
.meta-rail .rail-link{display:block;text-align:center;font-family:var(--mono);font-size:12px;padding:9px;border:1px solid var(--line2);border-radius:8px;margin-bottom:20px;transition:border-color var(--ease),color var(--ease);}
.meta-rail .rail-link:hover{border-color:var(--teal);}
.meta-list{display:flex;flex-direction:column;gap:11px;border-top:1px solid var(--line);padding-top:18px;}
.meta-row{display:flex;justify-content:space-between;gap:14px;font-size:13px;align-items:baseline;}
.meta-row .k{flex:none;white-space:nowrap;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink3);}
.meta-row .v{color:var(--ink);text-align:right;min-width:0;word-break:break-word;overflow-wrap:anywhere;}
.meta-tags{margin-top:18px;display:flex;flex-wrap:wrap;gap:6px;}

/* ============================================================
   GRAPH
   ============================================================ */
.legend{display:flex;flex-wrap:wrap;gap:18px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:22px 26px;margin-bottom:14px;}
.legend-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2);}
.legend-dot{width:11px;height:11px;border-radius:50%;flex:none;}
.legend-item .lc{font-family:var(--mono);font-size:11px;color:var(--ink3);}
.rel-legend{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:34px;}
.rel-chip{font-family:var(--mono);font-size:11px;color:var(--ink2);background:var(--surface2);border-radius:5px;padding:4px 9px;}
.graph-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:22px;}
.graph-tab{background:none;border:none;padding:10px 16px;font-family:var(--sans);font-weight:500;font-size:14px;color:var(--ink2);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--ease),border-color var(--ease);}
.graph-tab.active{color:var(--teal);border-bottom-color:var(--teal);}
.cat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.cat-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px 18px;cursor:pointer;transition:border-color var(--ease);display:flex;align-items:center;gap:11px;}
.cat-card:hover{border-color:var(--teal);}
.cat-dot{width:9px;height:9px;border-radius:50%;flex:none;}
.cat-name{font-family:var(--serif);font-weight:500;font-size:16px;flex:1;}
.cat-count{font-family:var(--mono);font-size:11px;color:var(--ink3);}
.cat-detail-head{display:flex;align-items:center;gap:12px;margin-bottom:18px;}
.cat-detail-head .back-btn{padding:0;}
.doc-list .doc-item{display:flex;align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid var(--line);cursor:pointer;}
.doc-list .doc-item:hover .di-name{color:var(--teal);}
.di-name{font-family:var(--serif);font-weight:500;font-size:16px;flex:1;transition:color var(--ease);}

/* ============================================================
   AGENT
   ============================================================ */
.agent-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:34px;align-items:start;}
.skill-cards{display:flex;flex-direction:column;gap:12px;margin-bottom:24px;}
.skill-card{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:18px 20px;cursor:pointer;transition:border-color var(--ease);}
.skill-card:hover{border-color:var(--teal);}
.skill-card{border-left:3px solid transparent;}
.skill-card.active{border-color:var(--teal);border-left-color:var(--teal);background:var(--tealsoft);}
.skill-glyph{font-size:22px;line-height:1;margin-bottom:10px;}
.skill-card.g-teal .skill-glyph{color:var(--teal);}
.skill-card.g-clay .skill-glyph{color:var(--clay);}
.skill-card.g-gold .skill-glyph{color:var(--gold);}
.skill-card h3{font-family:var(--serif);font-weight:500;font-size:18px;margin-bottom:3px;}
.skill-card .skill-en{font-family:var(--mono);font-size:11px;color:var(--ink3);}
.aside-title{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink3);margin:0 0 12px;}
.config-panel{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:20px;}
.config-panel h4{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink3);margin-bottom:10px;}
.seg{display:flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden;margin-bottom:18px;}
.seg button{flex:1;background:transparent;border:none;padding:8px 6px;font-size:12px;color:var(--ink2);transition:background var(--ease),color var(--ease);border-right:1px solid var(--line2);}
.seg button:last-child{border-right:none;}
.seg button.active{background:var(--teal);color:#fff;}
.seg button{cursor:pointer;}
/* 搜索模式两态:纵向分段(选项文案较长,横排放不下) */
.seg.vert{flex-direction:column;}
.seg.vert button{border-right:none;border-bottom:1px solid var(--line2);text-align:left;padding:9px 12px;}
.seg.vert button:last-child{border-bottom:none;}
.seg-hint{font-size:11px;line-height:1.6;color:var(--ink3);margin:-8px 0 0;}

.workspace{min-height:400px;}
.ws-input-row{display:flex;flex-direction:column;gap:12px;margin-bottom:18px;}
.ws-input{width:100%;border:1px solid var(--line2);background:var(--paper);border-radius:10px;padding:15px 16px;font-family:var(--sans);font-size:15px;resize:vertical;min-height:64px;outline:none;transition:border-color var(--ease);}
.ws-input:focus{border-color:var(--teal);}
.ws-actions{display:flex;align-items:center;gap:10px;}
.ws-chips{display:flex;gap:8px;flex-wrap:wrap;flex:1;}
/* 多轮对话线程 */
.ws-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.ws-tt{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink3);}
.ws-tt-actions{display:flex;gap:8px;}
.agent-thread{display:flex;flex-direction:column;gap:24px;max-height:62vh;overflow-y:auto;padding:4px 2px 14px;margin-bottom:16px;}
.thread-empty{padding:52px 10px;text-align:center;font-size:13px;}
.turn-user{display:flex;justify-content:flex-end;}
.bubble-u{max-width:82%;background:var(--ink);color:#fff;border-radius:13px 13px 4px 13px;padding:12px 16px;font-size:14.5px;line-height:1.6;white-space:pre-wrap;}
.turn-ai{display:flex;flex-direction:column;}
/* 历史对话列表 */
.conv-list-head{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink3);margin:4px 0 14px;}
.conv-list{display:flex;flex-direction:column;gap:8px;}
.conv-item{display:flex;align-items:center;gap:10px;min-width:0;border:1px solid var(--line);border-radius:10px;background:var(--surface);transition:border-color var(--ease);}   /* min-width:0:长标题(nowrap)否则会把纵向 stretch 的下限顶到全文宽 */
.conv-item:hover{border-color:var(--teal);}
.conv-main{flex:1;padding:13px 16px;cursor:pointer;min-width:0;}
.conv-title{font-size:14.5px;color:var(--ink);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.conv-meta{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-top:4px;}
.conv-del{border:none;background:none;color:var(--ink3);font-size:20px;line-height:1;padding:0 14px;cursor:pointer;align-self:stretch;transition:color var(--ease);}
.conv-del:hover{color:var(--clay);}
.conv-item.active{border-color:var(--teal);background:var(--tealsoft);}
/* 技能行(对话框上方)+ 当前技能标签(输入区内)*/
.skill-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;}
.skill-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line2);background:var(--surface);border-radius:10px;padding:9px 15px;font-family:var(--sans);font-size:14px;color:var(--ink2);cursor:pointer;transition:border-color var(--ease),color var(--ease),background var(--ease);}
.skill-chip:hover{border-color:var(--teal);color:var(--teal);}
.skill-chip.active{background:var(--ink);color:#fff;border-color:var(--ink);}
/* 对话进行中:技能锁定 — 非当前项淡化、整体禁点(当前项保持高亮可读)*/
.skill-row.locked .skill-chip{cursor:not-allowed;}
.skill-row.locked .skill-chip:hover{border-color:var(--line2);color:var(--ink2);}
.skill-row.locked .skill-chip:not(.active){opacity:.45;}
.skill-chip .sc-glyph{font-size:15px;}
.cur-skill-tag{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-family:var(--mono);font-size:11px;color:var(--teal);background:var(--tealsoft);border-radius:6px;padding:5px 11px;}
.cur-skill-tag .cs-glyph{font-size:12px;}
/* 历史对话侧栏 */
.history-panel{margin-top:26px;}
.history-panel>h4{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink3);margin:0 0 12px;}
.history-list{display:flex;flex-direction:column;gap:6px;max-height:44vh;overflow-y:auto;}
.history-list .conv-main{padding:10px 12px;}
.history-list .conv-title{font-size:13.5px;}
.history-list .conv-del{padding:0 10px;font-size:18px;}
.hp-empty{font-size:12px;color:var(--ink3);padding:10px 2px;line-height:1.5;}
.coverage{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;padding:5px 10px;border-radius:6px;margin-bottom:16px;}
.coverage.ok{background:var(--tealsoft);color:var(--teal);}
.coverage.low{background:var(--claysoft);color:var(--clay);}
.coverage .cdot{width:7px;height:7px;border-radius:50%;background:currentColor;}
.answer{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:28px 30px;font-family:var(--serif);font-weight:400;font-size:15.5px;line-height:1.75;color:var(--ink);}
.md-stream{white-space:pre-wrap;}
.answer h1,.answer h2,.answer h3,.answer h4{font-family:var(--serif);font-weight:600;color:var(--ink);line-height:1.3;margin:1.2em 0 .5em;}
.answer h1{font-size:23px;} .answer h2{font-size:20px;} .answer h3{font-size:17px;} .answer h4{font-size:15.5px;}
.answer>h1:first-child,.answer>h2:first-child,.answer>h3:first-child,.answer>h4:first-child,.answer>p:first-child{margin-top:0;}
.answer p{margin:0 0 .9em;} .answer p:last-child{margin-bottom:0;}
.answer ul,.answer ol{margin:0 0 .9em 1.4em;padding:0;} .answer li{margin:.32em 0;}
.answer strong{font-weight:600;color:var(--ink);} .answer em{font-style:italic;}
.answer code{font-family:var(--mono);font-size:.92em;background:var(--surface2);padding:1px 5px;border-radius:4px;}
.answer hr{border:none;border-top:1px solid var(--line);margin:1.2em 0;}
.answer a{color:var(--accent,#3a6ea5);text-decoration:underline;text-underline-offset:2px;}
.answer blockquote{border-left:3px solid var(--line2);margin:1em 0;padding:.2em 0 .2em 16px;color:var(--ink2);font-style:italic;}
.answer .md-table{border-collapse:collapse;width:100%;margin:1em 0;font-size:14.5px;line-height:1.55;}
.answer .md-table th,.answer .md-table td{border:1px solid var(--line);padding:7px 12px;text-align:left;vertical-align:top;}
.answer .md-table thead th{background:var(--surface2);font-weight:600;color:var(--ink);}
.answer .md-table tbody tr:nth-child(even){background:rgba(0,0,0,.018);}
/* 思考过程(流式展示,正文开始后自动隐藏)*/
.think-slot:empty{display:none;}
.thinking{background:var(--surface2);border:1px dashed var(--line2);border-radius:10px;padding:12px 14px;margin-bottom:12px;}
.think-label{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:.1em;}
.think-dot{width:7px;height:7px;border-radius:50%;background:var(--gold);animation:lumblink 1s steps(1) infinite;}
.think-text{margin-top:8px;font-size:12.5px;line-height:1.6;color:var(--ink3);white-space:pre-wrap;max-height:160px;overflow-y:auto;}
.cursor{display:inline-block;width:8px;height:17px;background:var(--teal);vertical-align:text-bottom;margin-left:1px;animation:lumblink 1s steps(1) infinite;}
@keyframes lumblink{50%{opacity:0;}}
.sources-list{margin-top:22px;}
.sources-list h4{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--ink3);margin-bottom:12px;}
.source-item{display:flex;gap:12px;padding:11px 0;border-top:1px solid var(--line);cursor:pointer;align-items:baseline;}
.source-item .sn{font-family:var(--mono);font-size:12px;color:var(--teal);flex:none;}
.source-item .sname{font-family:var(--serif);font-weight:500;font-size:15px;transition:color var(--ease);}
.source-item:hover .sname{color:var(--teal);}
.source-item .smeta{font-family:var(--mono);font-size:11px;color:var(--ink3);margin-top:2px;}
.source-item{border-radius:7px;transition:background var(--ease);}
.source-item.flash{animation:cite-flash 1.4s ease-out;}
.source-item.source-ext{text-decoration:none;color:inherit;}
.source-item.source-ext .smeta{color:var(--teal);}
@keyframes cite-flash{0%{background:rgba(44,107,93,.16);}100%{background:transparent;}}
/* 正文引用角标 [n] */
.answer .cite{display:inline-flex;align-items:center;justify-content:center;min-width:15px;height:15px;padding:0 4px;margin:0 1.5px;font-family:var(--mono);font-size:10.5px;font-weight:600;line-height:1;color:var(--teal);background:var(--surface2);border:1px solid var(--line);border-radius:5px;vertical-align:1px;text-decoration:none;cursor:pointer;transition:background var(--ease),color var(--ease),border-color var(--ease);}
.answer .cite:hover{background:var(--teal);color:#fff;border-color:var(--teal);}
.answer .cite .cite-cont{font-style:normal;font-size:8.5px;margin-left:1px;opacity:.7;}
.lock-card{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:48px 40px;text-align:center;}
.lock-card .feature-glyph{font-size:28px;margin-bottom:14px;}

/* ============================================================
   ADMIN
   ============================================================ */
.admin-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--clay);background:var(--claysoft);border-radius:6px;padding:5px 10px;margin-bottom:18px;}
.admin-stats{display:flex;border:1px solid var(--line);border-radius:13px;background:var(--surface);overflow:hidden;margin-bottom:34px;}
.admin-stats .stat-cell{padding:20px 24px;}
.data-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:13px;overflow:hidden;}
.data-table th{font-family:var(--mono);font-weight:500;font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink3);text-align:left;padding:13px 16px;border-bottom:1px solid var(--line);background:var(--surface2);}
.data-table td{padding:13px 16px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle;}
.data-table tr:last-child td{border-bottom:none;}
.data-table .dt-name{font-family:var(--serif);font-weight:500;font-size:15px;}
.data-table .dt-title-cell{min-width:260px;}
.dt-title-input{width:100%;font-family:var(--serif);font-weight:500;font-size:15px;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:7px;padding:5px 8px;transition:border-color var(--ease),background var(--ease);}
.dt-title-input:hover{border-color:var(--line);}
.dt-title-input:focus{outline:none;border-color:var(--teal);background:var(--surface2);}
.dt-title-input:disabled{opacity:.5;}
.admin-docs-head{font-family:var(--mono);font-size:11px;margin-bottom:12px;}
/* 嵌入进度条 */
.prog{display:flex;align-items:center;gap:7px;min-width:88px;}
.prog-bar{flex:1;height:6px;border-radius:3px;background:var(--surface2);overflow:hidden;}
.prog-bar i{display:block;height:100%;border-radius:3px;}
.prog-bar i.pf{background:var(--teal);}
.prog-bar i.pp{background:var(--gold);}
.prog-txt{font-family:var(--mono);font-size:11px;color:var(--ink2);flex:none;}
.prog-none{font-family:var(--mono);font-size:12px;color:var(--ink3);}
/* 建图状态徽章 */
.gtag{font-family:var(--mono);font-size:10.5px;font-weight:600;padding:3px 8px;border-radius:6px;white-space:nowrap;}
.gtag.g-done{color:#fff;background:var(--teal);}
.gtag.g-run{color:var(--gold);background:#F1ECDC;}
.gtag.g-wait{color:var(--ink3);background:var(--surface2);}
.gtag.g-fail{color:var(--clay);background:var(--claysoft);}
.gtag.g-none{color:var(--ink3);background:var(--surface2);}
.status-pill{font-family:var(--mono);font-size:10px;padding:3px 7px;border-radius:5px;}
.status-live{color:var(--teal);background:var(--tealsoft);}
.status-draft{color:var(--gold);background:#F1ECDC;}
.status-withdrawn{color:var(--ink2);background:var(--surface2);}
.toggle{width:38px;height:21px;border-radius:11px;background:var(--surface2);border:1px solid var(--line2);position:relative;transition:background var(--ease),border-color var(--ease);padding:0;}
.toggle::after{content:"";position:absolute;top:1px;left:1px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform var(--ease);box-shadow:0 1px 1px rgba(0,0,0,.12);}
.toggle.on{background:var(--teal);border-color:var(--teal);}
.toggle.on::after{transform:translateX(17px);}
.dt-review{font-family:var(--mono);font-size:11px;color:var(--teal);background:none;border:none;}

.skill-train{margin-top:48px;}
.train-card{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:26px 28px;margin-bottom:18px;}
.train-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.train-head h3{font-family:var(--serif);font-weight:500;font-size:20px;flex:1;}
.train-meta{display:flex;gap:10px;font-family:var(--mono);font-size:11px;color:var(--ink3);flex-wrap:wrap;}
.train-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;}
.train-col h4{font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink3);margin-bottom:9px;}
.train-textarea{width:100%;border:1px solid var(--line2);background:var(--paper);border-radius:9px;padding:12px 14px;font-family:var(--mono);font-size:12.5px;line-height:1.55;resize:vertical;min-height:150px;outline:none;transition:border-color var(--ease);}
.train-textarea:focus{border-color:var(--teal);}
.train-field{margin-bottom:12px;}
.train-field label{display:block;font-family:var(--mono);font-size:11px;color:var(--ink3);margin-bottom:6px;}
.train-field input,.train-field select{width:100%;border:1px solid var(--line2);background:var(--paper);border-radius:8px;padding:9px 12px;font-family:var(--sans);font-size:13px;outline:none;}
.train-actions{display:flex;gap:10px;align-items:center;margin-top:14px;flex-wrap:wrap;}
.train-test{margin-top:18px;border-top:1px solid var(--line);padding-top:18px;}
.train-test .ws-input{min-height:48px;}
.train-out{margin-top:14px;background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:16px;font-family:var(--serif);font-size:14px;line-height:1.7;white-space:pre-wrap;min-height:40px;color:var(--ink);}
.published-tag{font-family:var(--mono);font-size:10px;color:var(--teal);background:var(--tealsoft);padding:3px 7px;border-radius:5px;}
.draft-tag{font-family:var(--mono);font-size:10px;color:var(--gold);background:#F1ECDC;padding:3px 7px;border-radius:5px;}
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 22px;border-radius:9px;font-size:13px;z-index:200;font-family:var(--sans);}

/* ---------- modal ---------- */
.modal-backdrop{position:fixed;inset:0;background:rgba(34,30,24,.42);backdrop-filter:blur(2px);z-index:100;display:flex;align-items:center;justify-content:center;}
.modal-backdrop[hidden]{display:none;}
.modal{background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:34px 36px;width:380px;max-width:92vw;position:relative;}
.modal-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:22px;color:var(--ink3);line-height:1;}
.modal-close:hover{color:var(--ink);}
.modal-eyebrow{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.2em;color:var(--clay);margin-bottom:10px;}
.modal h2{font-family:var(--serif);font-weight:500;font-size:24px;margin-bottom:6px;}
.modal-sub{font-size:13px;color:var(--ink2);margin:0 0 22px;}
/* 技能版本管理弹窗 */
.modal-wide{width:620px;max-width:94vw;}
.sv-editrow{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--surface2);border:1px solid var(--line);border-radius:11px;padding:14px 16px;margin-bottom:18px;}
.sv-editrow b{font-size:14px;}
.sv-hint{font-size:11.5px;color:var(--ink3);margin-top:4px;max-width:430px;line-height:1.5;}
.sv-body{max-height:56vh;overflow:auto;display:flex;flex-direction:column;gap:20px;}
.sv-skill{border:1px solid var(--line);border-radius:11px;padding:14px 16px;}
.sv-shead{display:flex;align-items:center;gap:9px;margin-bottom:10px;font-size:15px;}
.sv-shead .sc-glyph{font-size:15px;}
.sv-cur{font-family:var(--mono);font-size:10px;color:var(--teal);border:1px solid var(--teal);border-radius:5px;padding:1px 6px;margin-left:2px;}
.sv-ver{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:9px 11px;border-radius:8px;border:1px solid transparent;}
.sv-ver+.sv-ver{margin-top:3px;}
.sv-ver.live{background:rgba(44,107,93,.07);border-color:rgba(44,107,93,.28);}
.sv-vmain{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;}
.sv-vtag{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ink);flex:none;}
.sv-vnote{font-size:13.5px;color:var(--ink);}
.sv-vmeta{font-family:var(--mono);font-size:10.5px;color:var(--ink3);width:100%;}
.sv-vside{flex:none;}
.sv-livebadge{font-family:var(--mono);font-size:10px;font-weight:600;color:#fff;background:var(--teal);border-radius:5px;padding:2px 7px;}
.btn-xs{font-size:11px;padding:3px 9px;border-radius:6px;}
/* 技能编辑模式横幅 + 围栏代码块 */
.edit-banner{background:var(--claysoft,#f3ece0);border:1px solid var(--clay,#b07a4a);color:var(--clay,#8a5a30);border-radius:9px;padding:9px 13px;font-size:12.5px;margin-bottom:12px;}
/* 管理端文献删除:后台清理失败横幅(形制同 edit-banner,danger 配色)+ 删除按钮 */
.del-fail-banner{display:flex;gap:10px;align-items:center;border:1px solid var(--line,#e5e5e5);border-left:3px solid #c0392b;border-radius:9px;padding:8px 12px;font-size:13px;margin:8px 0;}
.del-fail-banner span{flex:1;}
.dt-del{color:#c0392b;}
/* 技能优化总结(编辑模式下的总结消息,与普通回答区分)*/
.turn-optimize{border:1px solid rgba(44,107,93,.32);border-radius:13px;background:rgba(44,107,93,.05);padding:6px 14px 4px;}
.turn-optimize .opt-head{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--teal);margin:6px 2px 2px;}
.turn-optimize .answer{background:transparent;border:none;padding:14px 4px;}
.answer .code-block{margin:1em 0;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--surface2);}
.answer .code-block pre{margin:0;padding:13px 15px;font-family:var(--mono);font-size:12.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--ink);}
.answer .code-block.cb-skill{border-color:rgba(44,107,93,.4);}
.answer .cb-label{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--teal);background:rgba(44,107,93,.1);padding:6px 14px;border-bottom:1px solid rgba(44,107,93,.2);}
.login-form{display:flex;flex-direction:column;gap:14px;}
.field{display:flex;flex-direction:column;gap:6px;}
.field span{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink3);}
.field input{border:1px solid var(--line2);background:var(--paper);border-radius:9px;padding:13px 16px;font-size:14px;font-family:var(--sans);outline:none;transition:border-color var(--ease);}
.field input:focus{border-color:var(--teal);}
.login-error{color:var(--clay);font-size:12px;font-family:var(--mono);}

/* ---------- responsive ---------- */
@media(max-width:1080px){
  .doc-layout,.agent-layout,.search-layout{grid-template-columns:minmax(0,1fr);}
  .agent-layout aside{order:2;}   /* 窄屏单列后会话区优先,检索范围/历史沉到下方 */
  .facets,.meta-rail{position:static;}
  .train-grid{grid-template-columns:minmax(0,1fr);}
  .cat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
/* 720px 及以下的窄屏规则统一在文件末尾的 RESPONSIVE-MOBILE 段 */

/* ── Graph entity browser ── */
.page-sub{font-family:var(--mono);font-size:12px;color:var(--ink3);margin-top:8px;}
.graph-types{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 22px;}
.gtype-chip{display:inline-flex;align-items:center;gap:7px;background:var(--surface2);border:1px solid var(--line);border-radius:20px;padding:7px 14px;font-family:var(--sans);font-size:13px;color:var(--ink2);cursor:pointer;transition:border-color .15s,color .15s,background .15s;}
.gtype-chip:hover{border-color:var(--teal);color:var(--teal);}
.gtype-chip.active{background:var(--ink);color:#fff;border-color:var(--ink);}
.gtype-chip.active .lc{color:#fff;}
.gtype-chip .lc{font-family:var(--mono);font-size:11px;color:var(--ink3);}
.graph-docbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:-6px 0 18px;padding:9px 14px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:8px;font-size:13px;color:var(--ink2);}
.graph-docbar .gdoc-all{color:var(--teal);font-weight:500;}
.ent-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.ent-card{display:flex;align-items:center;gap:10px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:14px 16px;cursor:pointer;transition:border-color .15s;font-family:var(--sans);}
.ent-card:hover{border-color:var(--teal);}
.ent-dot{width:10px;height:10px;border-radius:50%;flex:none;}
.ent-dot.lg{width:14px;height:14px;}
.ent-name{font-size:14px;color:var(--ink);font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ent-meta{font-family:var(--mono);font-size:11px;color:var(--ink3);flex:none;}
.ent-detail{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:22px 28px;}
.ent-head{display:flex;align-items:center;gap:12px;margin:14px 0 10px;}
.ent-type-label{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--ink3);}
.ent-title{font-family:var(--serif);font-weight:500;font-size:24px;color:var(--ink);margin:2px 0 0;line-height:1.2;}
.ent-desc{font-size:14px;line-height:1.7;color:var(--ink2);margin:0 0 18px;}
.ent-rel-head{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink3);margin:18px 0 10px;border-top:1px solid var(--line);padding-top:16px;}
.ent-rel-head .lc{color:var(--teal);}
.ent-neighbors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.nb-item{display:flex;align-items:center;gap:9px;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:10px 12px;cursor:pointer;transition:border-color .15s;}
.nb-item:hover{border-color:var(--teal);}
.nb-name{font-size:13px;color:var(--ink);font-weight:500;flex:none;max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nb-rel{font-family:var(--mono);font-size:11px;color:var(--ink3);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
@media(max-width:900px){ .ent-grid{grid-template-columns:minmax(0,1fr);} .ent-neighbors{grid-template-columns:minmax(0,1fr);} }

/* ── Force-directed graph stage ── */
.graph-stage{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start;}
.graph-canvas-wrap{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:13px;overflow:hidden;}
.graph-svg{display:block;width:100%;height:560px;touch-action:pan-y;}   /* 单指滑动交还页面滚动;双指手势由 d3.zoom 处理(见 forceGraph 的 filter) */
.graph-hint{position:absolute;left:14px;bottom:10px;font-family:var(--mono);font-size:11px;color:var(--ink3);background:rgba(251,249,244,.85);padding:4px 9px;border-radius:6px;pointer-events:none;}
.graph-panel{position:sticky;top:90px;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:20px 22px;max-height:600px;overflow:auto;}
.graph-panel .back-btn{margin-bottom:4px;}
.graph-panel .ent-detail{background:none;border:none;border-radius:0;padding:0;}
.gp-empty{text-align:center;color:var(--ink3);padding:48px 12px;}
.gp-empty p{font-size:13px;line-height:1.6;margin-top:12px;}
.ent-neighbors.col{grid-template-columns:minmax(0,1fr);}
@media(max-width:900px){ .graph-stage{grid-template-columns:minmax(0,1fr);} .graph-panel{position:static;max-height:none;} }

/* ── Entity → source documents ── */
.ent-docs{display:flex;flex-direction:column;gap:8px;}
.ent-doc-item{display:flex;align-items:center;gap:9px;text-decoration:none;background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:11px 13px;transition:border-color .15s;}
.ent-doc-item:hover{border-color:var(--teal);}
.ed-title{flex:1;font-size:13px;line-height:1.45;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.ed-go{font-family:var(--mono);color:var(--ink3);flex:none;}
.ent-doc-item:hover .ed-go{color:var(--teal);}

/* ── Skill tuning studio(管理员)── */
.studio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;align-items:stretch;min-height:calc(100vh - 250px);}
.studio-left{display:flex;flex-direction:column;}
.studio-right{display:flex;flex-direction:column;border-left:1px solid var(--line2);padding-left:28px;}
@media(max-width:1080px){
  .studio-grid{grid-template-columns:minmax(0,1fr);min-height:0;}
  .studio-right{border-left:none;padding-left:0;border-top:1px solid var(--line2);padding-top:22px;}
}

/* ============================================================
   RESPONSIVE-MOBILE — 手机端适配总段(汉堡导航/表格滚动/触摸目标)
   放在文件末尾,同优先级规则按级联覆盖前文桌面样式
   ============================================================ */
.table-scroll{overflow-x:auto;}

@media(max-width:720px){
  /* — header:压缩高度,导航折进汉堡下拉 — */
  .site-header{height:56px;}
  .header-inner{gap:12px;}
  .brand-word{font-size:21px;}
  .brand-sub{display:none;}
  .header-right{margin-left:auto;gap:8px;}
  .auth-user{display:none;}   /* 用户名+徽章放不下,保留登录/登出按钮 */
  .nav-burger{display:flex;}
  .main-nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:0 14px 28px rgba(34,30,24,.10);padding:4px 20px 8px;}
  .site-header.nav-open .main-nav{display:flex;}
  .main-nav a{padding:13px 2px;font-size:15px;border-bottom:1px solid var(--line);}
  .main-nav a:last-child{border-bottom:none;}

  /* — iOS 聚焦缩放:输入类控件字号必须 ≥16px — */
  input,textarea,select{font-size:16px !important;}

  /* — 版式:间距与字号 — */
  .container{padding:0 20px;}
  .page{padding:32px 0 16px;}
  .page-h1{font-size:26px;}
  .section-h2{font-size:22px;}
  .hero{padding:40px 0 28px;}
  .hero h1{font-size:42px;}
  .hero-intro p{font-size:14.5px;}
  .prod-grid{grid-template-columns:minmax(0,1fr);}
  .fellow-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .cat-grid{grid-template-columns:minmax(0,1fr);}
  .site-footer{margin-top:56px;padding:40px 0 32px;}
  .footer-inner{grid-template-columns:minmax(0,1fr);gap:28px;}
  .footer-cols{justify-content:flex-start;gap:40px;}

  /* — 管理页统计条 .admin-stats:flex 单行改 2×2 栅格。分隔线放上/左侧,首行首列位置恒定,单元格数量任意都不用推算末行 — */
  .admin-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
  .admin-stats .stat-cell{border:none;border-top:1px solid var(--line);padding:18px 20px;}
  .admin-stats .stat-cell:nth-child(2n){border-left:1px solid var(--line);}
  .admin-stats .stat-cell:nth-child(-n+2){border-top:none;}
  .stat-number{font-size:28px;}

  /* — 内容表格:横向滚动而非撑破页面 — */
  .doc-article table,.answer .md-table{display:block;overflow-x:auto;}   /* 渲染器生成的表包不了 .table-scroll 容器,用 display:block 就地滚动 */

  /* — 触摸目标 ≥40px — */
  .page-btn{min-width:40px;height:40px;}
  .lang-toggle button{padding:10px 12px;}
  .gtype-chip{padding:9px 14px;}
  .pill{padding:8px 14px;}

  /* — 文档/图谱/AI 页微调 — */
  .chunk{grid-template-columns:40px minmax(0,1fr);gap:12px;}
  .graph-svg{height:min(560px,68vh);}
  .graph-panel{padding:16px;}
  .ent-detail{padding:18px;}
  .legend{padding:16px 18px;gap:12px;}
  .bubble-u{max-width:92%;}
  .ws-toolbar{flex-wrap:wrap;row-gap:8px;}   /* 「对话」+ 技能优化/导出/新对话 三按钮放不进一行时折行 */
  .answer .cite{min-width:18px;height:18px;font-size:11px;}   /* 引用角标可点跳转,触摸目标加大 */
  .sv-editrow{flex-wrap:wrap;}
  .modal{padding:24px 20px;}
}

@media(max-width:480px){
  .container{padding:0 16px;}
  .hero h1{font-size:34px;}
}

/* ---------- timeline(时间线 tab)---------- */
.tl-head{margin-bottom:22px;}
.tl-head h1{font-size:30px;}
.tl-head .muted{font-size:14px;margin:6px 0 0;}
.tl-chips{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;}
.tl-chip-row{display:flex;flex-wrap:wrap;gap:8px;}
.tl-chip{background:var(--surface2);border:1px solid var(--line);border-radius:20px;padding:6px 14px;font-size:13px;color:var(--ink2);transition:color var(--ease),border-color var(--ease),background var(--ease);}
.tl-chip:hover{border-color:var(--teal);color:var(--teal);}
.tl-chip.active{background:var(--teal);border-color:var(--teal);color:#fff;}
.tl-chip-cat{font-size:12px;padding:5px 12px;}
.tl-day{position:sticky;top:66px;z-index:2;background:var(--paper);font-family:var(--mono);font-size:12px;color:var(--ink3);padding:12px 0 8px;border-bottom:1px solid var(--line2);margin:16px 0 12px;}
/* 一行 = 左时间轴(时间+圆点+竖线) + 右卡片 */
.tl-row{display:flex;position:relative;padding-bottom:16px;}
.tl-rail{flex:none;width:62px;position:relative;}
.tl-rail::before{content:'';position:absolute;top:0;bottom:0;right:12px;width:1px;background:var(--line2);}
/* 竖线跨过行间距接到下一张卡片 → 同日内连续;末行(后接日期头或结尾)不延伸,自然断在日界 */
.tl-row:has(+ .tl-row) .tl-rail::before{bottom:-16px;}
.tl-time{display:block;text-align:right;padding:15px 24px 0 0;font-family:var(--mono);font-size:12px;color:var(--ink3);}
.tl-dot{position:absolute;top:19px;right:8px;width:9px;height:9px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 3px var(--paper);}
.tl-card{flex:1;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:15px 20px;text-decoration:none;color:inherit;cursor:pointer;transition:border-color var(--ease),box-shadow var(--ease);}
.tl-card:hover{border-color:var(--line2);box-shadow:0 2px 14px rgba(34,30,24,.06);}
.tl-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px;}
.tl-source{font-family:var(--mono);font-size:12px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tl-badges{flex:none;display:flex;align-items:center;gap:8px;}
.tl-via{font-family:var(--mono);font-weight:500;font-size:10px;letter-spacing:.02em;padding:3px 7px;border-radius:5px;color:var(--teal);background:var(--tealsoft);}
.tl-arrow{font-family:var(--mono);font-size:13px;color:var(--ink3);}
.tl-card:hover .tl-arrow{color:var(--teal);}
.tl-title{font-family:var(--serif);font-weight:500;font-size:18px;line-height:1.35;color:var(--ink);margin:0;transition:color var(--ease);}
.tl-card:hover .tl-title{color:var(--teal);}
.tl-sub{font-size:13.5px;color:var(--ink2);line-height:1.65;margin:8px 0 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
@media(max-width:720px){
  .tl-day{top:56px;}
  .tl-head h1{font-size:24px;}
  .tl-rail{width:46px;}
  .tl-time{padding:13px 12px 0 0;font-size:11px;}
  .tl-rail::before{right:6px;}
  .tl-dot{right:2px;top:17px;}
  .tl-card{padding:13px 15px;}
  .tl-title{font-size:16px;}
}

/* ── auth modal:注册/找回视图(登录弹窗三视图共用 .login-form)── */
.login-form[hidden],.auth-view[hidden]{display:none;}   /* .login-form 的 display:flex 会盖掉 hidden 属性的 UA 样式 */
.auth-links{display:flex;justify-content:space-between;gap:12px;margin-top:16px;}
.auth-links a{font-family:var(--mono);font-size:12px;color:var(--ink2);text-decoration:none;border-bottom:1px solid var(--line2);padding-bottom:1px;transition:color var(--ease);}
.auth-links a:hover{color:var(--teal);border-color:var(--teal);}
.auth-links a:only-child{margin-left:auto;}
.altcha-slot{min-height:38px;}
.altcha-slot altcha-widget{--altcha-border-radius:9px;--altcha-color-border:var(--line2);--altcha-color-base:var(--paper);--altcha-color-text:var(--ink);--altcha-max-width:100%;}
#registerVerifyForm .modal-sub,#forgotResetForm .modal-sub{margin-bottom:4px;}

/* ── 我的文档(个人文库:页内上传卡 / AI 页 mine 复选 / 来源徽标)── */
.updrop{border:1.5px dashed var(--line2);border-radius:11px;padding:30px 20px;text-align:center;cursor:pointer;transition:border-color var(--ease),background var(--ease);}
.updrop:hover,.updrop.dragover{border-color:var(--teal);background:var(--tealsoft);}
.updrop p{margin:0 0 6px;font-size:14px;color:var(--ink2);}
.updrop .updrop-hint{font-size:12px;color:var(--ink3);margin:0;}
.myq-row{display:flex;align-items:center;gap:14px;margin-top:14px;flex-wrap:wrap;min-height:18px;}
.mine-check{margin-top:14px;border-top:1px solid var(--line2);padding-top:14px;}   /* 复选交互/勾选样式复用 .facet-item */
.mine-tag{font-family:var(--mono);font-weight:500;font-size:10px;letter-spacing:.02em;padding:2px 7px;border-radius:5px;color:var(--teal);background:var(--tealsoft);}
