/* PI 大脑 · 共用样式（系统字体，不引外部字体）；两个版本共用 */
:root{
  --bg:#f5f7f9; --paper:#ffffff; --ink:#172029; --ink2:#4a5564; --ink3:#8a94a3; --line:#e3e8ee; --line2:#eef1f5;
  --brand:#0e7490; --brand-d:#155e75; --brand-soft:#e6f5f8; --brand-line:#bfe3ea;
  --amber:#b45309; --amber-soft:#fff5e6; --amber-line:#f6dfb4;
  --violet:#5048c9; --violet-soft:#eeedfb; --violet-line:#d3d0f5;
  --ok:#15803d; --ok-soft:#eaf6ee; --rose:#be123c; --rose-soft:#fdeef2;
  --radius:14px; --wide:1240px;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
  --serif:"Source Han Serif SC","Noto Serif CJK SC","Songti SC","STSong",Georgia,"Times New Roman",serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg); color:var(--ink); font:15px/1.7 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif; -webkit-text-size-adjust:100%}
a{color:var(--brand); text-decoration:none} a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.3; margin:0}
.wrap{max-width:var(--wide); margin:0 auto; padding:0 16px}
.hide{display:none !important}
.muted{color:var(--ink3)} .small{font-size:12.5px} .mono{font-family:var(--mono)}
.serif{font-family:var(--serif)}

/* 顶栏 */
.topbar{position:sticky; top:0; z-index:40; background:rgba(255,255,255,.92); backdrop-filter:saturate(1.4) blur(8px); border-bottom:1px solid var(--line)}
.topbar .in{max-width:var(--wide); margin:0 auto; padding:0 16px; display:flex; align-items:center; gap:14px; min-height:54px}
.brand{display:flex; align-items:center; gap:10px; color:var(--ink); font-weight:700; white-space:nowrap}
.brand svg{width:26px; height:26px}
.brand .sub{font-weight:500; color:var(--ink3); font-size:12.5px; margin-left:2px}
.topnav{display:flex; gap:2px; flex-wrap:wrap; margin-left:auto}
.topnav a{padding:7px 11px; border-radius:9px; font-weight:600; font-size:14px; color:var(--ink2)}
.topnav a:hover{background:var(--line2); text-decoration:none; color:var(--ink)}
.topnav a.on{background:var(--brand-soft); color:var(--brand-d)}
.aistat{display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--ink3); padding:4px 9px; border:1px solid var(--line); border-radius:999px; white-space:nowrap}
.aistat i{width:8px; height:8px; border-radius:50%; background:#cbd5e1; display:inline-block}
.aistat.on i{background:#16a34a} .aistat.off i{background:#ef4444}

/* 版面元素 */
.hero{padding:34px 0 22px}
.hero h1{font-family:var(--serif); font-size:34px; font-weight:700; letter-spacing:.01em}
.hero .lead{font-size:16.5px; color:var(--ink2); max-width:820px; margin:12px 0 0}
.kicker{font-family:var(--mono); font-size:12px; letter-spacing:.08em; color:var(--brand); text-transform:uppercase}
.card{background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; box-shadow:0 1px 2px rgba(15,23,42,.03)}
.card h2{font-size:19px; margin-bottom:10px} .card h3{font-size:15.5px; margin-bottom:6px}
.sec{margin:18px 0}
.sec > h2{font-size:21px; font-family:var(--serif); margin-bottom:12px; display:flex; align-items:baseline; gap:10px}
.sec > h2 .n{font-family:var(--mono); font-size:12px; color:var(--brand); border:1px solid var(--brand-line); background:var(--brand-soft); border-radius:6px; padding:1px 7px}
.grid2{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px}
.grid3{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px}
.grid4{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px}
.kpis{display:flex; flex-wrap:wrap; gap:10px}
.kpi{flex:1 1 150px; background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:12px 14px}
.kpi .v{font-size:24px; font-weight:800; font-family:var(--mono); letter-spacing:-.02em; color:var(--ink)}
.kpi .l{font-size:12.5px; color:var(--ink3); margin-top:2px}
.chips{display:flex; flex-wrap:wrap; gap:6px}
.chip{display:inline-flex; align-items:center; gap:5px; padding:3px 10px; border-radius:999px; font-size:12.5px; border:1px solid var(--line); background:var(--line2); color:var(--ink2); white-space:nowrap; max-width:100%}
.chip.b{background:var(--brand-soft); border-color:var(--brand-line); color:var(--brand-d)}
.chip.a{background:var(--amber-soft); border-color:var(--amber-line); color:var(--amber)}
.chip.v{background:var(--violet-soft); border-color:var(--violet-line); color:var(--violet)}
.chip.ok{background:var(--ok-soft); border-color:#bfe3cb; color:var(--ok)}
.chip.rose{background:var(--rose-soft); border-color:#f5c2cf; color:var(--rose)}
.chip .zh{color:inherit} .chip .en{opacity:.75; font-size:11.5px}
.btn{display:inline-flex; align-items:center; gap:7px; padding:8px 14px; border-radius:10px; border:1px solid var(--line); background:var(--paper); color:var(--ink); font:inherit; font-size:14px; font-weight:600; cursor:pointer; text-decoration:none; line-height:1.3}
.btn:hover{background:var(--line2); text-decoration:none}
.btn.primary{background:var(--brand); border-color:var(--brand); color:#fff} .btn.primary:hover{background:var(--brand-d)}
.btn.amber{background:var(--amber); border-color:var(--amber); color:#fff}
.btn.violet{background:var(--violet); border-color:var(--violet); color:#fff}
.btn.sm{padding:5px 10px; font-size:13px; border-radius:8px}
.btn[disabled]{opacity:.55; cursor:default}
.btn .spin{width:12px; height:12px; border:2px solid rgba(255,255,255,.5); border-top-color:#fff; border-radius:50%; animation:sp .8s linear infinite}
.btn.ghost .spin{border-color:#cbd5e1; border-top-color:var(--brand)}
@keyframes sp{to{transform:rotate(360deg)}}
.notice{background:var(--amber-soft); border:1px solid var(--amber-line); color:#7c3f05; border-radius:10px; padding:10px 14px; font-size:13.5px}
.notice.blue{background:var(--brand-soft); border-color:var(--brand-line); color:var(--brand-d)}
.notice.violet{background:var(--violet-soft); border-color:var(--violet-line); color:#3b35a3}
.empty{color:var(--ink3); padding:22px; text-align:center; border:1px dashed var(--line); border-radius:12px}
.src{font-size:12px; color:var(--ink3)}
.tag-ai{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:700; color:var(--violet); background:var(--violet-soft); border:1px solid var(--violet-line); border-radius:6px; padding:1px 7px; vertical-align:middle}
.tag-rule{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:700; color:var(--ink2); background:var(--line2); border:1px solid var(--line); border-radius:6px; padding:1px 7px; vertical-align:middle}
.tag-data{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:700; color:var(--brand-d); background:var(--brand-soft); border:1px solid var(--brand-line); border-radius:6px; padding:1px 7px; vertical-align:middle}

/* 搜索 */
.search{position:relative}
.search input{width:100%; padding:13px 16px 13px 44px; border:1px solid var(--line); border-radius:12px; font:inherit; font-size:15.5px; background:var(--paper); color:var(--ink); outline:none}
.search input:focus{border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-soft)}
.search .ico{position:absolute; left:14px; top:50%; transform:translateY(-50%); color:var(--ink3)}
.sugg{position:absolute; left:0; right:0; top:calc(100% + 6px); background:var(--paper); border:1px solid var(--line); border-radius:12px; box-shadow:0 10px 30px rgba(15,23,42,.12); z-index:30; max-height:380px; overflow:auto}
.sugg a{display:flex; justify-content:space-between; gap:10px; padding:9px 14px; border-bottom:1px solid var(--line2); color:var(--ink)}
.sugg a:hover{background:var(--line2); text-decoration:none}
.sugg a .i{color:var(--ink3); font-size:12.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:55%}

/* 过滤器 */
.filters{display:flex; flex-wrap:wrap; gap:8px; align-items:center}
.filters select,.filters input{font:inherit; font-size:14px; padding:7px 10px; border:1px solid var(--line); border-radius:9px; background:var(--paper); color:var(--ink)}
.filters input{min-width:220px}

/* 列表 */
.rows .row{display:grid; grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto; gap:12px; padding:12px 14px; border-top:1px solid var(--line2); align-items:center}
.rows .row:first-child{border-top:0}
.rows .row .nm{font-weight:700; font-size:15px} .rows .row .nm a{color:var(--ink)}
.rows .row .it{color:var(--ink3); font-size:12.5px}
.rows .row .meta{text-align:right; font-size:12.5px; color:var(--ink3); white-space:nowrap}
.rows .row .meta b{color:var(--ink); font-family:var(--mono)}

/* 关键词权重条 */
.bars .b{display:grid; grid-template-columns:minmax(0,1fr) 110px 40px; gap:10px; align-items:center; padding:4px 0}
.bars .b .t{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.bars .b .t .en{color:var(--ink3); font-size:12px}
.bars .b .bar{height:8px; background:var(--line2); border-radius:6px; overflow:hidden}
.bars .b .bar i{display:block; height:100%; background:linear-gradient(90deg,var(--brand),#38bdf8); border-radius:6px}
.bars .b .w{font-family:var(--mono); font-size:11.5px; color:var(--ink3); text-align:right}

/* 论文列表 */
.papers .p{padding:9px 0; border-top:1px solid var(--line2)}
.papers .p:first-child{border-top:0}
.papers .p .j{font-size:12.5px; color:var(--ink3)} .papers .p .j b{color:var(--amber); font-family:var(--mono); font-weight:600}
.papers .p .t a{color:var(--ink)} .papers .p .t a:hover{color:var(--brand)}

/* 标签页 */
.tabs{display:flex; gap:4px; border-bottom:1px solid var(--line); margin-bottom:14px; overflow-x:auto}
.tabs button{font:inherit; font-size:14px; font-weight:600; padding:9px 14px; border:0; background:none; color:var(--ink2); cursor:pointer; border-bottom:2px solid transparent; white-space:nowrap}
.tabs button.on{color:var(--brand-d); border-bottom-color:var(--brand)}

/* 伙伴卡 */
.partner{border:1px solid var(--line); border-radius:12px; padding:14px 16px; background:var(--paper); display:flex; flex-direction:column; gap:8px}
.partner .hd{display:flex; justify-content:space-between; gap:10px; align-items:flex-start}
.partner .hd .nm{font-weight:700; font-size:16px} .partner .hd .nm a{color:var(--ink)}
.partner .hd .sc{font-family:var(--mono); font-size:12px; color:var(--ink3); white-space:nowrap}
.partner .kv{display:grid; grid-template-columns:72px 1fr; gap:4px 10px; font-size:13.5px}
.partner .kv .k{color:var(--ink3)}
.partner .acts{display:flex; gap:8px; flex-wrap:wrap; margin-top:4px}
.proposal{background:var(--violet-soft); border:1px solid var(--violet-line); border-radius:10px; padding:12px 14px; font-size:13.5px}
.proposal h4{margin:0 0 6px; font-size:15px; color:#3b35a3}
.proposal .kv{display:grid; grid-template-columns:70px 1fr; gap:4px 10px}
.proposal .kv .k{color:#6b66c9}

/* 层级方案 */
.layers .ly{display:grid; grid-template-columns:96px 1fr; gap:12px; padding:10px 0; border-top:1px solid var(--line2)}
.layers .ly:first-child{border-top:0}
.layers .ly .k{font-weight:700; color:var(--brand-d)}
.step0{background:var(--brand-soft); border:1px solid var(--brand-line); border-radius:12px; padding:14px 16px}
.step0 h3{color:var(--brand-d)}

/* 问大脑 */
.chat{display:flex; flex-direction:column; gap:10px}
.chat .msgs{display:flex; flex-direction:column; gap:10px; max-height:520px; overflow:auto; padding:4px}
.chat .m{max-width:88%; padding:10px 14px; border-radius:14px; font-size:14.5px; white-space:pre-wrap; word-break:break-word}
.chat .m.u{align-self:flex-end; background:var(--brand); color:#fff; border-bottom-right-radius:4px}
.chat .m.a{align-self:flex-start; background:var(--paper); border:1px solid var(--line); border-bottom-left-radius:4px}
.chat .m.a .md{font-size:11.5px; color:var(--ink3); margin-top:6px}
.chat form{display:flex; gap:8px}
.chat textarea{flex:1; font:inherit; font-size:14.5px; padding:10px 12px; border:1px solid var(--line); border-radius:10px; resize:vertical; min-height:46px; background:var(--paper); color:var(--ink)}
.quick{display:flex; flex-wrap:wrap; gap:6px}
.quick button{font:inherit; font-size:12.5px; padding:4px 10px; border-radius:999px; border:1px solid var(--line); background:var(--paper); color:var(--ink2); cursor:pointer}
.quick button:hover{border-color:var(--brand); color:var(--brand-d)}

/* 资讯 */
.news .it{padding:10px 0; border-top:1px solid var(--line2)}
.news .it:first-child{border-top:0}
.news .it .d{font-family:var(--mono); font-size:12px; color:var(--amber); margin-right:8px}
.news .it .s{font-size:12px; color:var(--ink3)}
.news .it .t a{color:var(--ink)} .news .it .t a:hover{color:var(--brand)}

/* 趋势 */
.trend .tr{display:grid; grid-template-columns:minmax(0,1fr) 180px 70px; gap:12px; align-items:center; padding:7px 0; border-top:1px solid var(--line2)}
.trend .tr:first-child{border-top:0}
.trend .tr .g{font-family:var(--mono); font-size:12px; text-align:right}
.trend svg{width:180px; height:36px; display:block}

/* 表格 */
.tbl{width:100%; border-collapse:collapse; font-size:14px}
.tbl th,.tbl td{padding:8px 10px; border-bottom:1px solid var(--line2); text-align:left; vertical-align:top}
.tbl th{font-size:12.5px; color:var(--ink3); font-weight:600; background:var(--line2)}

/* 社区地图 */
.mapwrap{position:relative; background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden}
.mapwrap canvas{display:block; width:100%; height:560px}
.mapwrap .tip{position:absolute; pointer-events:none; background:#172029; color:#fff; font-size:12.5px; padding:6px 10px; border-radius:8px; transform:translate(-50%,-120%); white-space:nowrap; display:none}

/* 抽屉 */
.drawer{position:fixed; top:0; right:0; bottom:0; width:min(560px,100%); background:var(--paper); border-left:1px solid var(--line); box-shadow:-10px 0 40px rgba(15,23,42,.15); z-index:60; transform:translateX(100%); transition:transform .25s; overflow:auto; padding:20px}
.drawer.open{transform:none}
.drawer .close{position:absolute; top:12px; right:12px}
.backdrop{position:fixed; inset:0; background:rgba(15,23,42,.35); z-index:55; display:none}
.backdrop.open{display:block}

/* 故事板（原理页） */
.story .st{display:grid; grid-template-columns:44px 1fr; gap:14px; padding:14px 0; border-top:1px solid var(--line2)}
.story .st:first-child{border-top:0}
.story .st .no{width:36px; height:36px; border-radius:50%; background:var(--brand); color:#fff; font-family:var(--mono); font-weight:700; display:flex; align-items:center; justify-content:center}
.story .st h3{margin-bottom:4px}
.story .st .who{color:var(--amber); font-weight:600}
.term{border-bottom:1px dotted var(--ink3); cursor:help}

footer.pf{margin:40px 0 30px; color:var(--ink3); font-size:12.5px; text-align:center; line-height:1.9}

@media (max-width:900px){
  .grid3,.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
  .hero{padding:22px 0 14px} .hero h1{font-size:26px} .hero .lead{font-size:15px}
  .grid2,.grid3,.grid4{grid-template-columns:1fr}
  .topbar .in{min-height:50px; gap:8px} .brand .sub{display:none}
  .topnav{margin-left:auto; gap:0} .topnav a{padding:6px 7px; font-size:13px} .aistat{display:none}
  .rows .row{grid-template-columns:1fr; gap:4px} .rows .row .meta{text-align:left}
  .bars .b{grid-template-columns:minmax(0,1fr) 80px 34px}
  .layers .ly{grid-template-columns:1fr; gap:4px}
  .trend .tr{grid-template-columns:minmax(0,1fr) 120px 56px} .trend svg{width:120px}
  .mapwrap canvas{height:420px}
  .card{padding:14px 14px}
  .filters input{min-width:0; flex:1 1 100%}
}

/* 「这是我」反馈表单 */
.fb label{display:block; font-size:13px; color:var(--ink2); margin-top:10px}
.fb select,.fb input,.fb textarea{display:block; width:100%; margin-top:4px; font:inherit; font-size:14px; padding:8px 10px; border:1px solid var(--line); border-radius:10px; background:var(--paper); color:var(--ink)}
.fb textarea{min-height:96px; resize:vertical}
.fb .row2{display:grid; grid-template-columns:1fr 1fr; gap:12px}
.fb .acts{display:flex; align-items:center; gap:12px; margin-top:12px; flex-wrap:wrap}
.notice.ok{background:var(--ok-soft); border-color:#bfe3c9; color:var(--ok)}
/* 对外版首页「内容从哪来」信息条 */
.strip{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px}
.strip .s{background:var(--paper); border:1px solid var(--line); border-radius:12px; padding:12px 14px; font-size:13.5px; color:var(--ink2)}
.strip .s b{display:block; color:var(--ink); margin-bottom:2px}
@media (max-width:720px){ .fb .row2{grid-template-columns:1fr} .strip{grid-template-columns:1fr} }
