/* ============================================================================
   首页（index.html）专属样式 · 基理设计规范 v2.1 Token 化
   ============================================================================ */

/* ===== Banner ===== */
.banner{position:relative;color:#fff;text-align:center;overflow:hidden;background:var(--brand-800);}
.banner::before{
  content:"";position:absolute;left:-120px;top:-160px;width:520px;height:520px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.08),transparent 65%);
}
.banner::after{
  content:"";position:absolute;right:-100px;bottom:-200px;width:560px;height:560px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.06),transparent 62%);
}
.banner .wave{position:absolute;left:0;right:0;bottom:-2px;width:100%;}
.banner-inner{position:relative;padding:var(--sp-16) 0 calc(var(--sp-16) * 2);z-index:2;}
.banner h1{
  font-size:var(--text-3xl);font-weight:700;
  letter-spacing:4px;margin-bottom:var(--sp-4);
  text-shadow:0 2px 8px rgba(0,0,0,.2);
}
.banner h1 em{font-style:normal;color:var(--brand-accent-light);}
.banner .sub{
  font-size:var(--text-sm);color:rgba(255,255,255,.85);
  letter-spacing:2px;margin-bottom:var(--sp-10);line-height:1.8;
}
.banner .search-box{width:640px;max-width:86%;}
.search-tips{margin-top:var(--sp-4);font-size:var(--text-xs);color:rgba(255,255,255,.75);}
.search-tips b{color:var(--brand-accent-light);font-weight:400;margin:0 var(--sp-1);cursor:pointer;}
.search-tips b:hover{text-decoration:underline;}

/* Banner 装饰（中性白 + 品牌浅色点缀） */
.tech-grid{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse 75% 85% at 50% 45%,#000 25%,transparent 78%);
  mask-image:radial-gradient(ellipse 75% 85% at 50% 45%,#000 25%,transparent 78%);
}
.banner .scan{
  position:absolute;left:0;right:0;height:130px;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(255,255,255,.08),transparent);
  animation:scan 7s linear infinite;
}
@keyframes scan{0%{top:-150px;}100%{top:110%;}}
@keyframes float{0%,100%{transform:translateY(0);opacity:.35;}50%{transform:translateY(-28px);opacity:1;}}
.banner .orbit{position:absolute;border:1px dashed rgba(255,255,255,.16);border-radius:50%;z-index:1;pointer-events:none;}
.orbit.o1{width:360px;height:360px;right:-90px;top:-130px;}
.orbit.o2{width:230px;height:230px;right:30px;top:56px;border-color:rgba(255,255,255,.24);}
.orbit .dot{
  position:absolute;top:-4px;left:50%;width:8px;height:8px;border-radius:50%;
  background:var(--brand-accent);box-shadow:0 0 12px var(--brand-accent);
}
.banner .spark{
  position:absolute;width:6px;height:6px;border-radius:50%;
  background:rgba(255,255,255,.75);box-shadow:0 0 10px rgba(255,255,255,.55);
  animation:float 7s ease-in-out infinite;z-index:1;pointer-events:none;
}

/* ===== 通用区块标题（模块标题：20px / 600） ===== */
.sec-head{text-align:center;margin-bottom:var(--sp-10);}
.sec-head h2{
  font-size:var(--text-xl);font-weight:600;color:var(--text-1);
  letter-spacing:2px;position:relative;display:inline-block;padding-bottom:var(--sp-3);
}
.sec-head h2::after{
  content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:0;
  width:48px;height:4px;background:var(--brand-accent);border-radius:var(--r-sm);
}
.sec-head .en{
  font-size:var(--text-xs);color:var(--text-2);
  letter-spacing:4px;text-transform:uppercase;margin-top:var(--sp-2);
}

/* ===== 面板卡片通用（带品牌角饰） ===== */
.notice-card,.book-panel,.bene-chart,.ov-panel{
  background:var(--bg-card);border:1px solid var(--line-1);
  border-radius:var(--r-lg);box-shadow:var(--sh-1);position:relative;
}
.notice-card::before,.book-panel::before,.bene-chart::before,.ov-panel::before{
  content:"";position:absolute;top:-1px;left:-1px;width:20px;height:20px;
  border-top:2px solid var(--brand-accent);border-left:2px solid var(--brand-accent);
  border-top-left-radius:var(--r-lg);pointer-events:none;
}
.notice-card::after,.book-panel::after,.bene-chart::after,.ov-panel::after{
  content:"";position:absolute;bottom:-1px;right:-1px;width:20px;height:20px;
  border-bottom:2px solid var(--brand-accent);border-right:2px solid var(--brand-accent);
  border-bottom-right-radius:var(--r-lg);pointer-events:none;
}
/* 面板内小标题（16px / 500 + 品牌竖线锚点） */
.book-panel h3,.bene-chart h3,.ov-panel h3{
  font-size:var(--text-base);font-weight:500;color:var(--text-1);
  margin-bottom:var(--sp-4);padding-left:var(--sp-3);
  border-left:4px solid var(--brand-accent);
}

/* ===== 通知公告 + 预约使用 ===== */
.notice-sec{padding:var(--sp-16) 0;}
.notice-grid{display:grid;grid-template-columns:2fr 1fr;gap:var(--sp-6);align-items:stretch;}
.notice-card{padding:var(--sp-6) var(--sp-8);}
.notice-card .tab-bar{display:flex;gap:var(--sp-2);border-bottom:2px solid var(--line-1);margin-bottom:var(--sp-2);}
.notice-card .tab-bar span{
  padding:var(--sp-2) var(--sp-5);font-size:var(--text-sm);
  color:var(--text-2);cursor:pointer;position:relative;transition:.25s;
}
.notice-card .tab-bar span.active{color:var(--brand-text);font-weight:500;}
.notice-card .tab-bar span.active::after{
  content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--brand-figure);
}
.notice-card .more{float:right;font-size:var(--text-xs);color:var(--text-2);cursor:pointer;line-height:44px;}
.notice-card .more:hover{color:var(--brand-text);}

.book-panel{padding:var(--sp-6);display:flex;flex-direction:column;}
.login-entry{
  flex:1;border-radius:var(--r-lg);padding:var(--sp-5);
  color:#fff;margin-bottom:var(--sp-4);cursor:pointer;
  position:relative;overflow:hidden;transition:.3s;box-shadow:var(--sh-2);
}
.login-entry:last-of-type{margin-bottom:0;}
.login-entry:hover{transform:translateY(-4px);box-shadow:var(--sh-3);}
.login-entry h4{font-size:var(--text-base);font-weight:500;margin-bottom:var(--sp-1);}
.login-entry p{font-size:var(--text-xs);opacity:.85;margin-bottom:var(--sp-4);}
.login-entry .go{
  display:inline-block;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.6);
  padding:var(--sp-1) var(--sp-5);border-radius:var(--r-full);font-size:var(--text-xs);transition:.25s;
}
.login-entry:hover .go{background:#fff;color:var(--brand-text);}
.login-entry .ico{position:absolute;right:var(--sp-4);top:50%;transform:translateY(-50%);font-size:48px;opacity:.3;}
.le-in{background:var(--brand-solid);}
.le-out{background:var(--brand-700);}
.book-tip{
  margin-top:var(--sp-4);font-size:var(--text-xs);color:var(--text-2);
  line-height:1.8;background:var(--bg-sunken);border-radius:var(--r-md);
  padding:var(--sp-3) var(--sp-4);
}

/* ===== 运行效益 + 平台概况 ===== */
.bene-sec{background:var(--bg-page);padding:var(--sp-16) 0;}
.bene-grid{display:grid;grid-template-columns:2.1fr 1fr;gap:var(--sp-6);align-items:stretch;}
.bene-chart{padding:var(--sp-6) var(--sp-8);}
.bene-tabs{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-4);}
.bene-tabs span{
  padding:var(--sp-2) var(--sp-4);font-size:var(--text-xs);border-radius:var(--r-sm);
  background:var(--gray-2);color:var(--text-2);cursor:pointer;transition:.25s;
}
.bene-tabs span.active{background:var(--brand-solid);color:#fff;}
#beneChart{width:100%;height:380px;}

/* ===== 仪器实时情况（圆饼图 + 状态汇总，参考老前台 dygx.swu.edu.cn） ===== */
.status-view{display:flex;align-items:center;gap:var(--sp-6);height:380px;}
.status-chart-wrap{position:relative;flex:1.2;height:100%;}
#statusChart{width:100%;height:100%;}
.status-center{
  position:absolute;left:38%;top:50%;transform:translate(-50%,-50%);
  width:72px;height:72px;border-radius:50%;background:var(--gray-2);
  display:flex;align-items:center;justify-content:center;font-size:var(--text-xl);
  pointer-events:none;
}
.status-total-badge{
  position:absolute;left:0;top:0;width:64px;height:64px;border-radius:50%;
  background:var(--bg-card);border:2px solid var(--brand-cyan);box-shadow:var(--sh-2);
  display:flex;align-items:center;justify-content:center;pointer-events:none;
}
.status-total-badge b{
  font-size:var(--text-xl);color:var(--brand-text);
  font-family:var(--font-mono);font-variant-numeric:tabular-nums;
}
.status-side{flex:1;}
.st-total{font-size:var(--text-xl);color:var(--text-2);margin-bottom:var(--sp-5);}
.st-total b{
  font-size:var(--text-3xl);color:var(--text-1);font-weight:600;
  font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin:0 var(--sp-1);
}
.st-row{
  display:flex;align-items:center;gap:var(--sp-3);
  font-size:var(--text-base);color:var(--text-2);
  padding:var(--sp-2) 0;border-bottom:1px dashed var(--line-1);
}
.st-row:last-child{border-bottom:none;}
.st-row b{
  font-size:var(--text-xl);color:var(--text-1);font-weight:600;
  font-family:var(--font-mono);font-variant-numeric:tabular-nums;
  min-width:56px;text-align:right;
}
.st-row .dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;}
.dot-use{background:var(--brand-cyan);}
.dot-wait{background:var(--color-warning);}
.dot-down{background:var(--color-error);}
.bene-chart .cap{font-size:var(--text-xs);color:var(--text-2);text-align:center;margin-top:var(--sp-2);}

/* ===== 排行榜列表（参考老前台：前 3 名彩色徽章 + 浅底高亮行） ===== */
.rank-title{
  font-size:var(--text-base);font-weight:600;color:var(--brand-text);
  text-align:center;margin-bottom:var(--sp-4);
}
.rank-list{display:flex;flex-direction:column;gap:var(--sp-1);}
.rank-list li{
  display:grid;grid-template-columns:48px 1fr 220px 140px;align-items:center;
  padding:10px var(--sp-4);border-radius:var(--r-md);font-size:var(--text-sm);
}
.rank-list li:not(.t1):not(.t2):not(.t3){border-bottom:1px solid var(--line-1);border-radius:0;}
.rank-no{
  width:24px;height:24px;border-radius:50%;display:inline-flex;
  align-items:center;justify-content:center;font-size:var(--text-xs);color:var(--text-2);
  font-family:var(--font-mono);font-variant-numeric:tabular-nums;
}
.rank-list .t1 .rank-no,.rank-list .t2 .rank-no,.rank-list .t3 .rank-no{color:#fff;}
.rank-list .t1 .rank-no{background:var(--color-error-text);}
.rank-list .t2 .rank-no{background:var(--color-success-text);}
.rank-list .t3 .rank-no{background:var(--color-warning-text);}
.rank-list .t1{background:var(--color-error-bg);}
.rank-list .t2{background:var(--color-success-bg);}
.rank-list .t3{background:var(--color-info-bg);}
.rank-name{color:var(--text-1);}
.rank-list .t1 .rank-name,.rank-list .t2 .rank-name,.rank-list .t3 .rank-name{font-weight:500;}
.rank-org{font-size:var(--text-xs);color:var(--text-2);}
.rank-val{text-align:right;font-weight:500;color:var(--text-1);}
.rank-val em{font-style:normal;font-size:var(--text-xs);color:var(--text-2);margin-left:2px;}
.rank-list .t1 .rank-val{color:var(--color-error-text);}
.rank-list .t2 .rank-val{color:var(--color-success-text);}
.rank-list .t3 .rank-val{color:var(--color-warning-text);}
@media (max-width:1024px){
  .rank-list li{grid-template-columns:40px 1fr 120px;}
  .rank-org{display:none;}
}

.ov-panel{padding:var(--sp-6);}
.ov-card{
  border-radius:var(--r-lg);padding:var(--sp-4);margin-bottom:var(--sp-3);
  display:flex;align-items:center;gap:var(--sp-3);color:#fff;
  transition:.3s;box-shadow:var(--sh-1);
}
.ov-card:last-child{margin-bottom:0;}
.ov-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2);}
.ov-card .info{flex:1;}
.ov-card .num{
  font-size:var(--text-3xl);font-weight:600;
  font-family:var(--font-mono);font-variant-numeric:tabular-nums;line-height:var(--lh-data);
}
.ov-card .num i{font-style:normal;font-size:var(--text-xs);font-weight:400;margin-left:var(--sp-1);opacity:.75;}
.ov-card .lbl{font-size:var(--text-xs);opacity:.85;margin-top:var(--sp-1);}
.ov-card .cir{
  order:-1;margin:0;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;font-size:var(--text-xl);flex-shrink:0;
}
/* 统计卡配色：品牌实心 + 语义文字色（白字对比度均 ≥4.5:1） */
.ov1{background:var(--brand-solid);}
.ov2{background:var(--color-success-text);}
.ov3{background:var(--color-warning-text);}
.ov4{background:var(--color-error-text);}
.ov5{background:var(--color-info-text);}

/* ===== 特色平台 ===== */
.plat-sec{padding:var(--sp-16) 0;}
.plat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);}
.plat-card{
  background:var(--bg-card);border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--line-1);cursor:pointer;transition:.3s;
}
.plat-card:hover{transform:translateY(-4px);box-shadow:var(--sh-3);border-color:var(--line-2);}
.plat-card .pic{height:150px;overflow:hidden;}
.plat-card .pic img{width:100%;height:100%;object-fit:cover;transition:.5s;}
.plat-card:hover .pic img{transform:scale(1.06);}
.plat-card .txt{padding:var(--sp-3) var(--sp-4) var(--sp-4);}
.plat-card .txt h4{font-size:var(--text-sm);font-weight:500;color:var(--text-1);margin-bottom:var(--sp-1);}
.plat-card .txt p{font-size:var(--text-xs);color:var(--text-2);line-height:1.6;}

/* ===== 仪器分布 ===== */
.dist-sec{background:var(--bg-page);padding:var(--sp-16) 0;}
.dist-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-5);}
.dist-card{
  background:var(--bg-card);border-radius:var(--r-lg);
  padding:var(--sp-8) var(--sp-4);text-align:center;cursor:pointer;transition:.3s;
  border:1px solid var(--line-1);border-bottom:4px solid transparent;
}
.dist-card:hover{border-bottom-color:var(--brand-accent);transform:translateY(-4px);box-shadow:var(--sh-2);}
.dist-card .cir{
  width:72px;height:72px;border-radius:50%;margin:0 auto var(--sp-4);
  display:flex;align-items:center;justify-content:center;font-size:32px;
  background:var(--brand-50);color:var(--brand-text);
}
.dist-card h4{font-size:var(--text-sm);font-weight:500;color:var(--text-1);margin-bottom:var(--sp-2);}
.dist-card .n{
  font-size:var(--text-xl);font-weight:600;color:var(--brand-text);
  font-family:var(--font-mono);font-variant-numeric:tabular-nums;
}
.dist-card .n i{font-style:normal;font-size:var(--text-xs);color:var(--text-2);font-weight:400;margin-left:var(--sp-1);}

/* ===== 推荐仪器 ===== */
.ins-sec{padding:var(--sp-16) 0;}
.filter-bar{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:var(--sp-6);flex-wrap:wrap;gap:var(--sp-3);
}
.filter-tabs{display:flex;gap:var(--sp-2);flex-wrap:wrap;}
.filter-tabs span{
  padding:var(--sp-2) var(--sp-5);font-size:var(--text-xs);
  background:var(--bg-card);border:1px solid var(--line-2);
  border-radius:var(--r-full);cursor:pointer;transition:.25s;color:var(--text-2);
}
.filter-tabs span.active,.filter-tabs span:hover{
  background:var(--brand-solid);color:#fff;border-color:transparent;
}

/* ===== 联系我们 ===== */
.contact-sec{padding:var(--sp-16) 0;background:var(--bg-page);}
.contact-wrap{display:grid;grid-template-columns:280px 1fr;gap:var(--sp-10);align-items:center;}
.contact-title h3{font-size:var(--text-xl);font-weight:600;color:var(--text-1);margin-bottom:var(--sp-3);}
.contact-title h3 span{color:var(--brand-text);}
.contact-title p{font-size:var(--text-sm);color:var(--text-2);line-height:1.8;}
.contact-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5);}
.contact-card{
  background:var(--bg-card);border:1px solid var(--line-1);border-radius:var(--r-lg);
  padding:var(--sp-8) var(--sp-5);text-align:center;box-shadow:var(--sh-1);transition:.3s;
}
/* 悬浮高亮：整卡反转为品牌实心（地址 / 电话 / 邮箱三卡统一交互） */
.contact-card:hover,.contact-card.hl{
  transform:translateY(-4px);box-shadow:var(--sh-2);
  background:var(--brand-solid);border-color:var(--brand-solid);
}
.contact-card .ico{
  width:56px;height:56px;border-radius:50%;margin:0 auto var(--sp-3);
  display:flex;align-items:center;justify-content:center;font-size:var(--text-xl);
  background:var(--brand-50);color:var(--brand-text);transition:.3s;
}
.contact-card h4{font-size:var(--text-base);font-weight:500;color:var(--text-1);margin-bottom:var(--sp-2);transition:.3s;}
.contact-card p{font-size:var(--text-xs);color:var(--text-2);line-height:1.6;transition:.3s;}
.contact-card:hover h4,.contact-card.hl h4{color:#fff;}
.contact-card:hover p,.contact-card.hl p{color:rgba(255,255,255,.85);}
.contact-card:hover .ico,.contact-card.hl .ico{background:rgba(255,255,255,.2);color:#fff;}

/* ===== 响应式 ===== */
@media (max-width:960px){
  .notice-grid,.bene-grid,.contact-wrap{grid-template-columns:1fr;}
  .plat-cards,.contact-cards{grid-template-columns:1fr 1fr;}
  .dist-grid{grid-template-columns:1fr 1fr;}
  .banner h1{letter-spacing:2px;}
}
@media (max-width:640px){
  .plat-cards,.contact-cards,.dist-grid{grid-template-columns:1fr;}
}

/* 推荐仪器：更多按钮 */
.filter-bar-right{display:flex;align-items:center;gap:var(--sp-3);}
.more-link{display:inline-flex;align-items:center;gap:2px;font-size:var(--text-sm);color:var(--brand-text);text-decoration:none;cursor:pointer;transition:.2s;}
.more-link:hover{color:var(--brand-solid);}
.more-link svg{width:16px;height:16px;}
