/* 四图谱共用样式 · 深色主题，与学生站风格一致 */
*{box-sizing:border-box;margin:0;padding:0}
body{font:15px/1.6 -apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:#e8ecf5;
     background:radial-gradient(1200px 800px at 70% -10%,#1b2a52 0%,#0d1330 45%,#070b1d 100%);min-height:100vh;overflow-x:hidden}
header{position:relative;z-index:5;display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 22px}
header h1{font-size:20px;font-weight:700;letter-spacing:1px}
header h1 small{font-size:13px;color:#8fa0c8;font-weight:400;margin-left:8px}
.back{color:#8fa0c8;text-decoration:none;font-size:13px;border:1px solid rgba(255,255,255,.15);
      padding:6px 12px;border-radius:10px;white-space:nowrap}
.back:hover{color:#fff;border-color:#fff}
.gtabs{display:flex;gap:6px;flex-wrap:wrap}
.gtabs a{color:#aab6d8;text-decoration:none;font-size:13.5px;padding:6px 14px;border-radius:999px;
         border:1px solid rgba(255,255,255,.14);transition:.15s}
.gtabs a:hover{color:#fff;border-color:#2f6df6}
.gtabs a.on{background:linear-gradient(135deg,#2f6df6,#7c3aed);color:#fff;border-color:transparent;font-weight:600}
.hstats{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}
.hstat{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:12px;
       padding:6px 14px;font-size:13px;color:#c6d0e8}
.hstat b{color:#fff;font-size:16px;margin-right:4px}
#stage{position:relative}
#chart{position:relative;z-index:1;width:100%;height:calc(100vh - 118px);min-height:480px}
#loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#8fa0c8;z-index:2}
#toolbar{position:absolute;z-index:6;top:14px;left:18px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;max-width:60vw}
#toolbar input{background:rgba(10,16,38,.8);border:1px solid rgba(255,255,255,.2);border-radius:10px;
               color:#e8ecf5;font-size:13px;padding:7px 12px;width:180px;outline:none}
#toolbar input:focus{border-color:#2f6df6}
.tbtn{background:rgba(10,16,38,.8);border:1px solid rgba(255,255,255,.18);border-radius:10px;color:#c6d0e8;
      font-size:12.5px;padding:7px 12px;cursor:pointer;user-select:none}
.tbtn:hover{color:#fff;border-color:#2f6df6}
.tbtn.on{background:rgba(47,109,246,.35);border-color:#2f6df6;color:#fff}
#legend{position:absolute;z-index:6;left:18px;bottom:14px;background:rgba(10,16,38,.72);backdrop-filter:blur(8px);
        border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:10px 16px;font-size:12px;color:#aab6d8;max-width:min(92vw,560px)}
#legend b{color:#e8ecf5}
#panel{position:fixed;z-index:10;top:96px;right:18px;width:min(380px,92vw);max-height:calc(100vh - 130px);overflow:auto;
       background:rgba(13,20,45,.92);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.14);
       border-radius:18px;padding:18px;box-shadow:0 12px 40px rgba(0,0,0,.5);transition:transform .3s,opacity .3s}
#panel.hide{transform:translateX(110%);opacity:0;pointer-events:none}
#panel h2{font-size:17px;margin-bottom:2px;line-height:1.4}
#panel .sub{font-size:12px;color:#8fa0c8;margin-bottom:10px}
#panel .desc{font-size:13px;color:#c6d0e8;background:rgba(255,255,255,.05);border-radius:10px;padding:10px 12px;margin-bottom:12px;white-space:pre-wrap}
#panel .stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
#panel .stat{flex:1;min-width:64px;background:rgba(255,255,255,.06);border-radius:10px;padding:8px;text-align:center}
#panel .stat b{display:block;font-size:17px;color:#fff}
#panel .stat span{font-size:11px;color:#8fa0c8}
.pbtns{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.pbtns a{flex:1;min-width:100px;text-align:center;text-decoration:none;font-size:13px;padding:9px 0;border-radius:10px}
.btn-ask{background:linear-gradient(135deg,#2f6df6,#7c3aed);color:#fff}
.btn-kg{background:rgba(255,255,255,.1);color:#dbe4f8;border:1px solid rgba(255,255,255,.18)}
#videos{display:flex;flex-direction:column;gap:10px}
.vcard{display:flex;gap:10px;cursor:pointer;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);
       border-radius:12px;padding:8px;align-items:center}
.vcard:hover{border-color:#2f6df6}
.vcard img{width:96px;height:60px;object-fit:cover;border-radius:8px;background:#000}
.vcard .t{font-size:13px;color:#e8ecf5}
.vempty{font-size:13px;color:#8fa0c8;padding:4px 0}
#pclose{position:absolute;top:10px;right:12px;background:none;border:none;color:#8fa0c8;font-size:18px;cursor:pointer}
#vmodal{position:fixed;inset:0;z-index:20;background:rgba(3,6,18,.9);display:flex;align-items:center;justify-content:center;padding:16px}
#vmodal.hide{display:none}
#vmodal video{width:min(960px,100%);max-height:82vh;border-radius:14px;background:#000}
#vclose{position:absolute;top:18px;right:24px;background:rgba(255,255,255,.12);border:none;color:#fff;font-size:15px;
        border-radius:10px;padding:8px 14px;cursor:pointer}
@media (max-width:820px){
  header h1{font-size:16px}
  .hstats{display:none}
  #chart{height:calc(100vh - 150px)}
  #toolbar{max-width:92vw}
  #panel{top:auto;bottom:0;left:0;right:0;width:100%;max-height:56vh;border-radius:20px 20px 0 0}
  #panel.hide{transform:translateY(110%)}
  #legend{display:none}
}
