/* ════════════════════════════════════════════════════════════════
   Official layout for the homepage (index.html) and news (news.html).
   Loaded after styles.css; guide pages do not use this file.
   ════════════════════════════════════════════════════════════════ */

.site{
  --g:#0e6b37; --g-d:#0a5029; --g-dd:#073a1d; --g-l:#eaf4ed; --g-line:#cfe3d5;
  --tan:#b5835c; --red:#b3141c; --red-d:#8e0e14; --gold:#e0b44a;
  --line:#e2e5e0; --text:#222; --muted:#6a706a; --bg:#f5f6f3;
  --f-serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif;
  --gut:clamp(16px, 3vw, 32px);
  background:var(--bg); color:var(--text);
  font-family:var(--f-cn);
}
.site a{ text-decoration:none }
.wrap{ max-width:1200px; margin:0 auto; padding:0 var(--gut) }

/* ── top utility bar ── */
.topbar{ background:var(--g-dd); color:rgba(255,255,255,.72); font-size:12.5px }
.topbar__inner{ display:flex; justify-content:space-between; align-items:center; gap:1rem; min-height:34px }
.topbar__links{ display:flex; flex-wrap:wrap; gap:.25rem 1.2rem }
.topbar__links a{ color:rgba(255,255,255,.82); transition:color .15s }
.topbar__links a:hover{ color:var(--gold) }
@media (max-width:700px){
  .topbar__welcome{ display:none }
  .topbar__inner{ justify-content:center; padding:6px 0 }
  .topbar__links{ justify-content:center; gap:.2rem .9rem }
}

/* ── green brand band ── */
.brandbar{
  position:relative; overflow:hidden; color:#fff;
  background:
    radial-gradient(60% 140% at 85% 50%, rgba(255,255,255,.10), transparent 60%),
    linear-gradient(90deg, #0a5229 0%, #0f733a 52%, #148a45 100%);
}
.brandbar::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.07;
  background:repeating-linear-gradient(115deg, #fff 0 1px, transparent 1px 14px);
}
.brandbar__inner{ position:relative; z-index:1; display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:26px var(--gut) }
.brandbar__home{ display:flex; align-items:center; gap:18px; color:#fff; min-width:0 }
.brandbar__logo{
  flex:0 0 auto; width:84px; height:84px; border-radius:50%;
  background:#fff; padding:3px; object-fit:contain;
  box-shadow:0 0 0 3px rgba(255,255,255,.28), 0 6px 18px rgba(0,0,0,.18);
}
.brandbar__text{ min-width:0 }
.brandbar__cn{
  display:block; font-family:var(--f-serif); font-weight:900;
  font-size:clamp(1.3rem, 3.2vw, 2.35rem); letter-spacing:.12em; line-height:1.25;
  text-shadow:0 2px 8px rgba(0,0,0,.2);
}
.brandbar__en{
  display:block; margin-top:6px;
  font-family:var(--f-body); font-weight:500;
  font-size:clamp(.7rem, 1.3vw, .95rem); letter-spacing:.08em; opacity:.9;
}
.brandbar__motto{
  flex:0 0 auto; display:grid; gap:.35rem; text-align:right;
  padding-left:1.3rem; border-left:1px solid rgba(255,255,255,.35);
  font-family:var(--f-serif); font-weight:600; font-size:1.02rem; letter-spacing:.22em;
}
@media (max-width:760px){
  .brandbar__inner{ padding:18px var(--gut) }
  .brandbar__motto{ display:none }
  .brandbar__home{ gap:12px }
  .brandbar__logo{ width:56px; height:56px }
  .brandbar__cn{ letter-spacing:.05em }
}

/* ── main nav ── */
.gnav{ position:sticky; top:0; z-index:60; background:#fff; border-bottom:1px solid var(--line); box-shadow:0 2px 10px rgba(0,0,0,.05) }
.gnav__menu{ list-style:none; display:flex; justify-content:space-between }
.gnav__menu a{
  position:relative; display:block; padding:15px 4px;
  font-family:var(--f-serif); font-weight:600; font-size:1.06rem; letter-spacing:.06em;
  color:#333; transition:color .15s;
}
.gnav__menu a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:var(--g); transform:scaleX(0); transition:transform .2s;
}
.gnav__menu a:hover, .gnav__menu a[aria-current="page"]{ color:var(--g) }
.gnav__menu a:hover::after, .gnav__menu a[aria-current="page"]::after{ transform:scaleX(1) }
.gnav__toggle{
  display:none; align-items:center; gap:10px;
  padding:12px 0; background:none; border:0; cursor:pointer;
  font-family:var(--f-serif); font-weight:700; font-size:1rem; color:var(--g);
}
.gnav__toggle i{ display:grid; gap:4px }
.gnav__toggle i span{ display:block; width:20px; height:2px; background:var(--g) }
@media (max-width:900px){
  .gnav__toggle{ display:inline-flex }
  .gnav__menu{ display:none }
  .gnav.is-open .gnav__menu{ display:grid; grid-template-columns:1fr 1fr; padding-bottom:10px }
  .gnav__menu a{ padding:11px 4px; border-top:1px solid var(--line); font-size:1rem }
  .gnav__menu a::after{ display:none }
}

/* ── 通知公告 ticker ── */
.notice{ background:#fff; border-bottom:1px solid var(--line) }
.notice__inner{ display:flex; align-items:center; gap:14px; min-height:44px }
.notice__label{
  flex:0 0 auto; padding:4px 10px;
  background:var(--red); color:#fff;
  font-weight:700; font-size:13px; letter-spacing:.1em;
}
.site .notice .notice-bar__track{ font-size:14px }
.site .notice .notice-bar__track a{ color:#333; font-weight:500; text-decoration:none }
.site .notice .notice-bar__track a:hover{ color:var(--red); text-decoration:underline; text-underline-offset:3px }
.site .notice .notice-bar__track a b{ color:var(--red) }

/* ── banner carousel ── */
.banner{ position:relative; overflow:hidden; background:#10241a }
.banner__track{ position:relative; height:clamp(230px, 40vw, 500px) }
.banner__slide{
  position:absolute; inset:0; display:block; color:#fff;
  opacity:0; visibility:hidden; transition:opacity .8s ease, visibility .8s;
  background:#10241a;
}
.banner__slide.is-active{ opacity:1; visibility:visible }
.banner__slide img{ width:100%; height:100%; object-fit:cover }
.banner__slide:not(.banner__slide--notice)::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,0) 42%, rgba(0,0,0,.66) 100%);
}
.banner__caption{ position:absolute; left:0; right:0; bottom:clamp(30px, 5vw, 58px); z-index:2 }
.banner__tag{ display:inline-block; padding:3px 10px; background:var(--g); font-size:12px; letter-spacing:.12em }
.banner__title{
  margin-top:10px; max-width:820px;
  font-family:var(--f-serif); font-weight:700; line-height:1.35;
  font-size:clamp(1.1rem, 2.8vw, 2.1rem); text-shadow:0 2px 10px rgba(0,0,0,.35);
}
.banner__sub{ margin-top:6px; font-size:clamp(.78rem, 1.2vw, .95rem); opacity:.9 }
.banner__slide--notice{
  display:grid; place-items:center; text-align:center;
  background:
    radial-gradient(50% 80% at 50% 0%, rgba(255,200,90,.22), transparent 70%),
    linear-gradient(135deg, #8f0c13 0%, #c91d27 50%, #8f0c13 100%);
}
.banner__notice{ padding:0 var(--gut) 18px }
.banner__notice-kicker{ font-size:clamp(.8rem, 1.3vw, 1rem); letter-spacing:.3em; color:rgba(255,255,255,.85) }
.banner__notice-title{
  margin:.6em 0 .45em;
  font-family:var(--f-serif); font-weight:900; line-height:1.35; letter-spacing:.06em;
  font-size:clamp(1.25rem, 3.6vw, 3rem); color:#ffd84d;
  text-shadow:0 3px 14px rgba(80,0,0,.4);
}
.banner__notice-sub{ font-size:clamp(.85rem, 1.6vw, 1.2rem); color:#fff; letter-spacing:.06em }
.banner__notice-btn{
  display:inline-block; margin-top:1.1em; padding:.45em 1.3em;
  border:1px solid rgba(255,216,77,.8); color:#ffd84d; font-size:clamp(.8rem, 1.2vw, .95rem); letter-spacing:.12em;
}
.banner__arrow{
  position:absolute; top:50%; z-index:3; transform:translateY(-50%);
  width:46px; height:46px; border-radius:50%; border:0; cursor:pointer;
  background:rgba(0,0,0,.28); color:#fff; font-size:28px; line-height:1;
  transition:background .2s;
}
.banner__arrow:hover{ background:rgba(0,0,0,.5) }
.banner__arrow--prev{ left:18px }
.banner__arrow--next{ right:18px }
.banner__dots{ position:absolute; z-index:3; right:clamp(16px, 4vw, 40px); bottom:14px; display:flex; gap:8px }
.banner__dots button, .feature__dots button{
  width:10px; height:10px; padding:0; border:0; border-radius:5px; cursor:pointer;
  background:rgba(255,255,255,.55); transition:width .25s, background .25s;
}
.banner__dots button[aria-current="true"], .feature__dots button[aria-current="true"]{ width:26px; background:var(--gold) }
@media (max-width:700px){ .banner__arrow{ display:none } }

/* ── sections & headings ── */
.sec{ padding:clamp(40px, 6vw, 64px) 0 }
.sec--white{ background:#fff }
.sec-head{
  position:relative; display:flex; align-items:flex-end; justify-content:space-between; gap:1rem;
  margin-bottom:22px; border-bottom:1px solid var(--line);
}
.sec-head::after{ content:""; position:absolute; left:0; bottom:-1px; width:72px; height:3px; background:var(--g) }
.sec-head__title{
  padding-bottom:10px;
  font-family:var(--f-serif); font-weight:900; letter-spacing:.06em;
  font-size:clamp(1.3rem, 2.2vw, 1.65rem); color:var(--g);
}
.sec-head__title small{
  margin-left:.7rem; vertical-align:.15em;
  font-family:var(--f-body); font-weight:600; font-size:.72rem;
  letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
}
.sec-head__more{ flex:0 0 auto; padding-bottom:12px; font-size:14px; color:var(--muted); transition:color .15s }
.sec-head__more:hover{ color:var(--g) }
.sec-lead{ margin:-6px 0 22px; font-size:.95rem; line-height:1.8; color:var(--muted) }

/* ── news ── */
.news-grid{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:clamp(20px, 3vw, 40px); align-items:start }
.feature{ position:relative; aspect-ratio:16 / 10.5; overflow:hidden; background:#dfe3dd }
.feature__item{ position:absolute; inset:0; opacity:0; visibility:hidden; transition:opacity .7s, visibility .7s; color:var(--text) }
.feature__item.is-active{ opacity:1; visibility:visible }
.feature__item img{ width:100%; height:100%; object-fit:cover; transition:transform .6s }
.feature__item:hover img{ transform:scale(1.03) }
.feature__cap{
  position:absolute; left:6%; right:6%; bottom:0;
  display:grid; grid-template-columns:minmax(0, 1fr) auto; align-items:center; gap:.2rem 1rem;
  padding:14px 20px 16px; background:#fff; box-shadow:0 -4px 16px rgba(0,0,0,.08);
}
.feature__title{ font-size:1.02rem; font-weight:600; line-height:1.5; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical }
.feature__date{ grid-column:1; font-family:var(--f-body); font-size:.86rem; color:var(--muted) }
.feature__arrow{ grid-row:1 / span 2; grid-column:2; font-size:1.5rem; color:var(--g) }
.feature__dots{ position:absolute; z-index:2; top:14px; right:14px; display:flex; gap:6px }

.news-list{ list-style:none }
.news-list li{ border-bottom:1px solid var(--line) }
.news-list a{ display:flex; align-items:center; gap:16px; padding:13px 0; color:var(--text) }
.news-date{
  flex:0 0 auto; min-width:98px; padding:6px 8px; text-align:center;
  background:var(--tan); color:#fff;
  font-family:var(--f-body); font-size:13px; font-weight:600; transition:background .15s;
}
.news-title{ flex:1; min-width:0; font-size:1rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; transition:color .15s }
.news-tag{ color:var(--red); font-weight:700 }
.news-list a:hover .news-title{ color:var(--g) }
.news-list a:hover .news-date{ background:var(--g) }

.news-sub{ display:grid; grid-template-columns:minmax(0, 1.1fr) minmax(0, .9fr); gap:clamp(20px, 3vw, 40px); margin-top:clamp(32px, 5vw, 48px) }
.notice-list{ list-style:none }
.notice-list li{ border-bottom:1px dashed var(--line) }
.notice-list a{ display:flex; align-items:baseline; gap:12px; padding:11px 0; color:var(--text) }
.notice-list a::before{ content:""; flex:0 0 6px; height:6px; margin-bottom:.15em; background:var(--g) }
.notice-list .t{ flex:1; min-width:0; transition:color .15s }
.notice-list time{ flex:0 0 auto; font-family:var(--f-body); font-size:.86rem; color:var(--muted) }
.notice-list a:hover .t{ color:var(--g) }
.notice-list .t b{ color:var(--red) }

.quick-grid{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:10px }
.quick-grid a{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  min-height:96px; padding:14px 8px; text-align:center;
  background:var(--g-l); border:1px solid var(--g-line); color:var(--g-d);
  font-weight:700; font-size:.92rem; transition:background .2s, color .2s, transform .2s;
}
.quick-grid a:hover{ background:var(--g); color:#fff; transform:translateY(-2px) }
.quick-grid svg{ width:28px; height:28px }
.quick-grid a.is-alert{ background:#fdeceb; border-color:#f3c8c5; color:var(--red) }
.quick-grid a.is-alert:hover{ background:var(--red); color:#fff }

@media (max-width:900px){
  .news-grid, .news-sub{ grid-template-columns:1fr }
}
@media (max-width:600px){
  .news-list a{ align-items:flex-start; gap:12px }
  .news-date{ min-width:0; font-size:12px; padding:4px 6px }
  .news-title{ white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical }
  .feature__cap{ left:0; right:0; padding:10px 14px 12px }
  .feature__title{ font-size:.95rem }
  .quick-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)) }
}

/* ── 学生会概况 ── */
.about{ display:grid; grid-template-columns:minmax(0, 1.1fr) minmax(0, .9fr); gap:clamp(24px, 4vw, 48px); align-items:start }
.about__text p{ margin-bottom:1rem; font-size:1rem; line-height:1.95; color:#333; text-indent:2em }
.about__text strong{ color:var(--g-d) }
.about-stats{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); margin-top:1.4rem; border-top:1px solid var(--line); border-bottom:1px solid var(--line) }
.about-stats > div{ padding:16px 8px; text-align:center; border-left:1px solid var(--line) }
.about-stats > div:first-child{ border-left:0 }
.site .about-stats .score__num{ font-family:var(--f-body); font-weight:800; font-size:clamp(1.8rem, 3.4vw, 2.4rem); color:var(--g); letter-spacing:0; line-height:1.1 }
.about-stats span{ display:block; margin-top:4px; font-size:.85rem; color:var(--muted) }
.about__letter{ padding:26px clamp(20px, 3vw, 30px); background:var(--bg); border-top:4px solid var(--g) }
.about__letter h3{ font-family:var(--f-serif); font-weight:900; font-size:1.2rem; color:var(--g-d); letter-spacing:.06em }
.about__letter .to{ margin:14px 0 10px; font-weight:700; color:var(--red) }
.about__letter p{ font-size:.96rem; line-height:1.9; color:#333; margin-bottom:.8rem }
.about__letter em{ font-style:normal; font-weight:700; color:var(--g-d) }
.about__sign{ margin-top:16px; padding-top:12px; border-top:1px solid var(--line); text-align:right; font-family:var(--f-serif); color:var(--g-d) }
.about__sign small{ display:block; font-family:var(--f-body); font-size:.8rem; color:var(--muted); margin-top:2px }
@media (max-width:900px){ .about{ grid-template-columns:1fr } }

/* ── 组织机构: restyle the existing roster markup ── */
.site .people{ background:var(--bg); padding:clamp(40px, 6vw, 64px) 0; border:0 }
.site .people > .president,
.site .people > .committees,
.site .people > .people__more{ width:min(100% - 2 * var(--gut), 1136px); margin-left:auto; margin-right:auto }
.site .people > .president{ margin-top:0; margin-bottom:2rem; border-radius:4px }
.site .people .president__inner{ max-width:none }
.site .people .president__name{ font-family:var(--f-serif); font-weight:900; text-transform:none; letter-spacing:.02em; font-size:clamp(1.45rem, 2.3vw, 1.8rem); margin-bottom:.35rem }
.site .people .president__name-cn{ font-size:1.05rem }
/* one portrait size for 张老师、马老师、杨明凯 */
.site .people{ --pw:min(150px, 38vw) }
.site .people .leader > .president__portrait,
.site .people .coach .president__portrait{ width:var(--pw); margin:.2rem 0 1.1rem }
.coach{ display:grid; grid-template-columns:var(--pw) minmax(0, 1fr); gap:0 1.4rem; align-items:start }
.site .people .coach .president__portrait{ margin:0 }
.coach + .coach{ margin-top:1.6rem; padding-top:1.6rem; border-top:2px dashed rgba(255,216,77,.4) }
.coach__role{
  display:inline-block; margin:.55rem 0 .7rem; padding:.3rem .7rem;
  font-family:var(--f-mono); font-size:11.5px; letter-spacing:.04em; color:var(--paper);
  background:rgba(255,255,255,.08); border-left:3px solid var(--gold);
}
.coach .president__bio{ font-size:.93rem; line-height:1.75 }
@media (max-width:600px){
  .coach{ grid-template-columns:1fr }
  .site .people .coach .president__portrait{ margin-bottom:1rem }
}
.site .people .leader{ padding-top:2.5rem; padding-bottom:2.5rem }
.site .people .president__bio{ font-size:.96rem }
.site .people .president__note-opener{ font-family:var(--f-serif); text-transform:none; font-size:1.45rem }
/* 主席寄语 as a full-width row under both columns */
.site .people .president__note--wide{
  grid-column:1 / -1; max-width:none; margin:0;
  display:grid; grid-template-columns:minmax(0, 200px) minmax(0, 1fr); gap:.5rem 3rem; align-items:start;
  padding:2.25rem var(--pad) 2.5rem;
  border-top:1px dashed rgba(255,255,255,.15);
}
.site .people .president__note--wide .president__note-body{ max-width:48em }
@media (max-width:800px){
  .site .people .president__note--wide{ grid-template-columns:1fr; padding-top:2rem }
}
.site .people .committees{ padding:0; max-width:none; gap:1.5rem }
.site .people .committee{ border-radius:4px; border-color:var(--line) }
.site .people .committee__head{ padding:1rem 1.5rem; gap:1rem }
.site .people .committee__no{ font-size:1rem; padding:.3rem .65rem }
.site .people .committee__cn{ order:1; margin-left:0; font-family:var(--f-serif); font-weight:900; font-size:1.2rem; color:#fff; letter-spacing:.06em }
.site .people .committee__title{ order:2; margin-left:auto; font-family:var(--f-body); font-weight:600; font-size:.8rem; letter-spacing:.12em; opacity:.85 }
.site .people .member__name{ font-family:var(--f-serif); font-size:1.4rem }
@media (max-width:520px){ .site .people .committee__title{ margin-left:0 } }

/* ── 活动回顾 cards ── */
.event-grid{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:24px }
.event-card{ display:flex; flex-direction:column; background:#fff; border:1px solid var(--line); color:var(--text); transition:box-shadow .2s, transform .2s }
.event-card:hover{ transform:translateY(-3px); box-shadow:0 10px 24px rgba(0,0,0,.08) }
.event-card__media{ aspect-ratio:16 / 10; overflow:hidden; background:#dfe3dd }
.event-card__media img{ width:100%; height:100%; object-fit:cover; transition:transform .6s }
.event-card:hover .event-card__media img{ transform:scale(1.04) }
.event-card__body{ flex:1; display:flex; flex-direction:column; gap:8px; padding:18px 20px 20px }
.event-card__meta{ display:flex; flex-wrap:wrap; gap:.4rem .8rem; font-family:var(--f-body); font-size:.82rem; color:var(--muted) }
.event-card__meta b{ color:var(--g); font-weight:700 }
.event-card__title{ font-family:var(--f-serif); font-weight:700; font-size:1.1rem; line-height:1.5 }
.event-card__text{ font-size:.92rem; line-height:1.75; color:var(--muted); overflow:hidden; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical }
.event-card__more{ margin-top:auto; padding-top:6px; font-size:.9rem; font-weight:700; color:var(--g) }
@media (max-width:900px){ .event-grid{ grid-template-columns:1fr 1fr } }
@media (max-width:600px){ .event-grid{ grid-template-columns:1fr } }

/* ── guides & tools: existing tool cards on the new grid ── */
.site .tool-grid{ gap:1rem }
.site .tool{ border-radius:4px; box-shadow:none; border-color:var(--line) }
.site .tool__title{ font-family:var(--f-serif) }
.site .tool--arrival{ background:#fff }

/* ── 联系我们 (dark band; contact cards are styled for dark) ── */
.sec--contact{ background:var(--g-dd); color:#fff }
.sec--contact .sec-head{ border-bottom-color:rgba(255,255,255,.18) }
.sec--contact .sec-head::after{ background:var(--gold) }
.sec--contact .sec-head__title{ color:#fff }
.sec--contact .sec-head__title small{ color:rgba(255,255,255,.6) }
.contact-grid{ display:grid; grid-template-columns:minmax(0, 1.1fr) minmax(0, .9fr); gap:clamp(24px, 4vw, 48px); align-items:start }
.contact-grid__lead{ margin-bottom:1.25rem; font-size:1rem; line-height:1.9; color:rgba(255,255,255,.85) }
.site .contact__cards{ display:grid; gap:.75rem }
.contact-help{ padding:22px 24px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.16) }
.contact-help h3{ font-family:var(--f-serif); font-weight:700; font-size:1.1rem; color:var(--gold); margin-bottom:.8rem }
.contact-help ul{ list-style:none; display:grid; gap:.55rem }
.contact-help li{ position:relative; padding-left:1.1rem; font-size:.95rem; line-height:1.7; color:rgba(255,255,255,.88) }
.contact-help li::before{ content:""; position:absolute; left:0; top:.65em; width:6px; height:6px; background:var(--gold) }
.contact-help a{ color:#fff; border-bottom:1px solid rgba(255,255,255,.4) }
.contact-help a:hover{ color:var(--gold); border-color:var(--gold) }
.contact-help p{ margin-top:1rem; font-size:.88rem; line-height:1.7; color:rgba(255,255,255,.65) }
@media (max-width:900px){ .contact-grid{ grid-template-columns:1fr } }

/* ── footer ── */
.gfoot{ background:#052914; color:rgba(255,255,255,.7); font-size:.9rem }
.gfoot__inner{ display:grid; grid-template-columns:minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap:clamp(20px, 3vw, 40px); padding:40px var(--gut) 32px }
.gfoot__brand{ display:flex; gap:14px; align-items:center }
.gfoot__brand img{ flex:0 0 auto; width:58px; height:58px; border-radius:50%; background:#fff; padding:2px }
.gfoot__brand b{ display:block; font-family:var(--f-serif); font-size:1.1rem; color:#fff; letter-spacing:.06em }
.gfoot__brand span{ display:block; margin-top:4px; font-size:.78rem; letter-spacing:.04em }
.gfoot h3{ margin-bottom:.8rem; font-family:var(--f-serif); font-size:1rem; color:#fff; letter-spacing:.08em }
.gfoot ul{ list-style:none; display:grid; gap:.45rem }
.gfoot a{ color:rgba(255,255,255,.75); transition:color .15s }
.gfoot a:hover{ color:var(--gold) }
.gfoot p{ line-height:1.8 }
.gfoot__bot{ border-top:1px solid rgba(255,255,255,.1); padding:14px 0; font-size:.8rem; text-align:center; color:rgba(255,255,255,.5) }
@media (max-width:900px){ .gfoot__inner{ grid-template-columns:1fr 1fr } .gfoot__brand{ grid-column:1 / -1 } }
@media (max-width:520px){ .gfoot__inner{ grid-template-columns:1fr } }

/* ── news page ── */
.crumb{ padding:14px 0; font-size:.88rem; color:var(--muted); border-bottom:1px solid var(--line); background:#fff }
.crumb a{ color:var(--muted) }
.crumb a:hover{ color:var(--g) }
.newspage{ display:grid; grid-template-columns:220px minmax(0, 1fr); gap:clamp(20px, 3vw, 40px); align-items:start }
.side-nav{ background:#fff; border:1px solid var(--line) }
.side-nav h2{ padding:16px 20px; background:var(--g); color:#fff; font-family:var(--f-serif); font-size:1.2rem; letter-spacing:.1em }
.side-nav ul{ list-style:none }
.side-nav button{
  display:block; width:100%; padding:13px 20px; text-align:left; cursor:pointer;
  background:none; border:0; border-bottom:1px solid var(--line);
  font-family:var(--f-cn); font-size:.98rem; color:var(--text); transition:background .15s, color .15s;
}
.side-nav button:hover{ background:var(--g-l); color:var(--g) }
.side-nav button[aria-pressed="true"]{ background:var(--g-l); color:var(--g); font-weight:700; box-shadow:inset 3px 0 0 var(--g) }
.newsbox{ background:#fff; border:1px solid var(--line); padding:clamp(18px, 3vw, 30px) }
.news-items{ list-style:none }
.news-item{ border-bottom:1px solid var(--line) }
.news-item > a{ display:grid; grid-template-columns:auto minmax(0, 1fr); gap:6px 18px; padding:18px 0; color:var(--text) }
.news-item .news-date{ grid-row:1 / span 2; align-self:start }
.news-item h3{ font-size:1.05rem; font-weight:700; line-height:1.55; transition:color .15s }
.news-item p{ font-size:.92rem; line-height:1.75; color:var(--muted) }
.news-item .cat{ display:inline-block; margin-right:.5rem; padding:0 .4rem; font-size:.75rem; font-weight:700; color:var(--g); border:1px solid var(--g-line); vertical-align:.12em }
.news-item > a:hover h3{ color:var(--g) }
.news-item[hidden]{ display:none }
.article{ margin-top:28px; background:#fff; border:1px solid var(--line); padding:clamp(20px, 4vw, 40px); scroll-margin-top:70px }
.article h2{ font-family:var(--f-serif); font-weight:900; font-size:clamp(1.3rem, 2.6vw, 1.75rem); line-height:1.45; color:#1a1a1a; text-align:center }
.article__meta{ margin:12px 0 22px; padding-bottom:14px; border-bottom:1px solid var(--line); text-align:center; font-size:.86rem; color:var(--muted) }
.article__meta span + span::before{ content:" · " }
.article p{ font-size:1rem; line-height:2; color:#333; text-indent:2em; margin-bottom:1rem }
.article figure{ margin:1.4rem 0 }
.article figure img{ width:100%; height:auto }
.article figcaption{ margin-top:.5rem; text-align:center; font-size:.86rem; color:var(--muted) }
.article__links{ margin-top:1.4rem; padding:14px 18px; background:var(--g-l); border-left:3px solid var(--g); font-size:.92rem; line-height:1.9 }
.article__links a{ color:var(--g-d); font-weight:700; text-decoration:underline; text-underline-offset:3px }
.article__back{ display:inline-block; margin-top:1.2rem; font-size:.9rem; color:var(--g) }
@media (max-width:900px){
  .newspage{ grid-template-columns:1fr }
  .side-nav ul{ display:flex; flex-wrap:wrap }
  .side-nav li{ flex:1 1 50% }
  .side-nav h2{ display:none }
  .news-item > a{ grid-template-columns:1fr }
  .news-item .news-date{ grid-row:auto; justify-self:start }
}

/* ── inner pages: green title band ── */
.pagehead{
  position:relative; overflow:hidden; color:#fff;
  padding:clamp(28px, 5vw, 52px) 0;
  background:
    radial-gradient(50% 120% at 90% 50%, rgba(255,255,255,.10), transparent 60%),
    linear-gradient(90deg, #0b5a2d 0%, #0f733a 55%, #148a45 100%);
}
.pagehead::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.06;
  background:repeating-linear-gradient(115deg, #fff 0 1px, transparent 1px 14px);
}
.pagehead .wrap{ position:relative; z-index:1 }
.pagehead__title{ font-family:var(--f-serif); font-weight:900; font-size:clamp(1.6rem, 3.2vw, 2.4rem); letter-spacing:.12em; line-height:1.2 }
.pagehead__en{ display:block; margin-top:8px; font-family:var(--f-body); font-weight:600; font-size:clamp(.72rem, 1.2vw, .9rem); letter-spacing:.2em; text-transform:uppercase; opacity:.8 }
.pagehead__lead{ max-width:46em; margin-top:14px; font-size:clamp(.9rem, 1.4vw, 1rem); line-height:1.8; color:rgba(255,255,255,.88) }

/* ── homepage: 走进学生会 ── */
.intro{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.05fr); gap:clamp(24px, 4vw, 48px); align-items:start }
.intro__text p{ font-size:1rem; line-height:1.95; color:#333; text-indent:2em }
.intro__text strong{ color:var(--g-d) }
.btn-more{
  display:inline-flex; align-items:center; gap:.5rem; margin-top:1.4rem;
  padding:.65rem 1.4rem; background:var(--g); color:#fff;
  font-size:.95rem; font-weight:700; letter-spacing:.06em; transition:background .2s;
}
.btn-more:hover{ background:var(--g-d) }
.entry-grid{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px }
.entry{
  position:relative; display:grid; grid-template-columns:48px minmax(0, 1fr); align-items:center; gap:4px 14px;
  min-height:104px; padding:18px 40px 18px 18px;
  background:#fff; border:1px solid var(--line); border-left:4px solid var(--g);
  color:var(--text); transition:box-shadow .2s, transform .2s, border-color .2s;
}
.entry:hover{ transform:translateY(-2px); box-shadow:0 10px 22px rgba(0,0,0,.07); border-left-color:var(--gold) }
.entry__icon{ grid-row:1 / span 2; width:48px; height:48px; display:grid; place-items:center; background:var(--g-l); color:var(--g) }
.entry__icon svg{ width:26px; height:26px }
.entry b{ font-family:var(--f-serif); font-weight:900; font-size:1.12rem; color:var(--g-d); letter-spacing:.06em }
.entry span:last-child{ font-size:.86rem; line-height:1.6; color:var(--muted) }
.entry::after{ content:"→"; position:absolute; right:16px; top:50%; transform:translateY(-50%); color:var(--g); font-size:1.1rem; transition:transform .2s }
.entry:hover::after{ transform:translate(3px, -50%) }
@media (max-width:900px){ .intro{ grid-template-columns:1fr } }
@media (max-width:480px){ .entry-grid{ grid-template-columns:1fr } }

/* ── 历届学生干部 page on the site template ── */
.site .letter{ background:#fff; padding:0 0 clamp(36px, 5vw, 56px); border:0 }
.site .letter__strip{ display:none }
.site .letter__opener{ margin-top:clamp(28px, 5vw, 44px); font-family:var(--f-serif); font-weight:900; text-transform:none; letter-spacing:.04em; font-size:clamp(1.6rem, 3vw, 2.2rem); color:var(--g-d) }
.site .letter__opener-cn{ font-size:1.15rem; margin-bottom:1.6rem }
.site .letter__body{ font-size:1.02rem; line-height:1.95 }
.site .letter__sign{ border-top:1px solid var(--line) }

/* ── 学生会概况 page ── */
.about-fig{ margin:0 }
.about-fig img{ width:100%; height:auto; aspect-ratio:16 / 9; object-fit:cover }
.about-fig figcaption{ margin-top:.55rem; font-size:.85rem; color:var(--muted); text-align:center }
.about-stats--5{ grid-template-columns:repeat(5, minmax(0, 1fr)); margin-top:clamp(24px, 4vw, 36px) }
@media (max-width:700px){
  .about-stats--5{ grid-template-columns:repeat(3, minmax(0, 1fr)) }
  .about-stats--5 > div:nth-child(4){ border-left:0 }
  .about-stats--5 > div:nth-child(n+4){ border-top:1px solid var(--line) }
}

.mission__motto{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:.5rem 1.4rem;
  margin:6px 0 28px; padding:22px 16px;
  background:var(--g-l); border:1px solid var(--g-line);
  font-family:var(--f-serif); font-weight:900; font-size:clamp(1.15rem, 2.4vw, 1.6rem); letter-spacing:.16em; color:var(--g-d);
}
.mission__motto i{ width:8px; height:8px; transform:rotate(45deg); background:var(--gold) }
.value-grid{ list-style:none; display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:16px }
.value-grid li{ padding:22px 20px; background:#fff; border:1px solid var(--line); border-top:3px solid var(--g) }
.value-grid b{ display:block; font-family:var(--f-body); font-size:1.6rem; font-weight:800; color:var(--g-line); line-height:1 }
.value-grid h3{ margin:10px 0 8px; font-family:var(--f-serif); font-weight:900; font-size:1.12rem; color:var(--g-d); letter-spacing:.04em }
.value-grid p{ font-size:.92rem; line-height:1.75; color:var(--muted) }
@media (max-width:900px){ .value-grid{ grid-template-columns:1fr 1fr } }
@media (max-width:480px){ .value-grid{ grid-template-columns:1fr } }

.orgchart{ display:grid; justify-items:center; gap:28px }
.orgchart__node{
  position:relative; display:grid; gap:4px; justify-items:center; text-align:center;
  min-width:220px; padding:14px 22px; background:#fff; border:1px solid var(--g-line); color:var(--text);
}
.orgchart__node small{ font-size:.78rem; font-weight:700; letter-spacing:.12em; color:var(--g) }
.orgchart__node b{ font-family:var(--f-serif); font-weight:900; font-size:1.1rem; color:var(--g-d) }
.orgchart__node span{ font-size:.8rem; color:var(--muted) }
.orgchart__node--top{ background:var(--g-dd); border-color:var(--g-dd) }
.orgchart__node--top small{ color:var(--gold) }
.orgchart__node--top b{ color:#fff }
.orgchart__node--top span{ color:rgba(255,255,255,.7) }
.orgchart__node--mid{ background:var(--g); border-color:var(--g) }
.orgchart__node--mid small{ color:#ffe9a6 }
.orgchart__node--mid b{ color:#fff; font-size:1.25rem }
.orgchart__node--top::after, .orgchart__node--mid::after{
  content:""; position:absolute; left:50%; top:100%; width:2px; height:28px; background:var(--g-line);
}
.orgchart__row{
  position:relative; width:100%; display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:14px; padding-top:22px;
}
.orgchart__row::before{ content:""; position:absolute; top:0; height:2px; left:calc((100% - 42px) / 8); right:calc((100% - 42px) / 8); background:var(--g-line) }
.orgchart__row .orgchart__node{ min-width:0; width:100%; padding:16px 12px; border-top:3px solid var(--g); transition:box-shadow .2s, transform .2s }
.orgchart__row .orgchart__node:hover{ transform:translateY(-2px); box-shadow:0 8px 18px rgba(0,0,0,.07) }
.orgchart__row .orgchart__node::before{ content:""; position:absolute; left:50%; bottom:100%; width:2px; height:22px; background:var(--g-line) }
.orgchart__row .orgchart__node:first-child{ border-top-color:var(--red) }
@media (max-width:760px){
  .orgchart__row{ grid-template-columns:1fr 1fr; padding-top:0 }
  .orgchart__row::before{ display:none }
  .orgchart__row .orgchart__node::before{ display:none }
}

.work-grid{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:16px }
.work-card{
  display:flex; flex-direction:column; gap:8px; padding:24px 20px; background:#fff; border:1px solid var(--line);
  color:var(--text); transition:box-shadow .2s, transform .2s;
}
.work-card:hover{ transform:translateY(-3px); box-shadow:0 10px 22px rgba(0,0,0,.07) }
.work-card__icon{ width:48px; height:48px; display:grid; place-items:center; background:var(--g-l); color:var(--g) }
.work-card__icon svg{ width:26px; height:26px }
.work-card h3{ margin-top:6px; font-family:var(--f-serif); font-weight:900; font-size:1.12rem; color:var(--g-d) }
.work-card p{ font-size:.92rem; line-height:1.75; color:var(--muted) }
.work-card__more{ margin-top:auto; padding-top:6px; font-size:.9rem; font-weight:700; color:var(--g) }
@media (max-width:900px){ .work-grid{ grid-template-columns:1fr 1fr } }
@media (max-width:480px){ .work-grid{ grid-template-columns:1fr } }

.partner{ display:grid; grid-template-columns:minmax(0, 1.3fr) minmax(0, .7fr); gap:clamp(24px, 4vw, 48px); align-items:start }
.partner__text p{ font-size:1rem; line-height:1.95; color:#333; text-indent:2em; margin-bottom:.9rem }
.partner__text strong{ color:var(--g-d) }
.partner__text .partner__src{ text-indent:0; font-size:.84rem; color:var(--muted) }
.partner__list{ list-style:none; display:grid; gap:10px }
.partner__list a{ display:block; padding:12px 16px; background:var(--bg); border-left:3px solid var(--g); color:var(--text); transition:background .2s }
.partner__list a:hover{ background:var(--g-l) }
.partner__list b{ display:block; font-family:var(--f-serif); font-weight:900; color:var(--g-d) }
.partner__list span{ font-size:.82rem; color:var(--muted) }
@media (max-width:900px){ .partner{ grid-template-columns:1fr } }

.timeline{ list-style:none; position:relative }
.timeline::before{ content:""; position:absolute; left:137px; top:10px; bottom:10px; width:2px; background:var(--g-line) }
.timeline li{ position:relative; display:grid; grid-template-columns:120px minmax(0, 1fr); gap:0 40px; padding:12px 0 }
.timeline time{ font-family:var(--f-body); font-weight:700; font-size:.92rem; color:var(--g); text-align:right; padding-top:2px }
.timeline li::after{ content:""; position:absolute; left:131px; top:17px; width:14px; height:14px; border-radius:50%; background:var(--bg); border:3px solid var(--g); box-sizing:border-box }
.timeline b{ display:block; font-family:var(--f-serif); font-weight:900; font-size:1.05rem; color:#1a1a1a }
.timeline p{ margin-top:4px; font-size:.93rem; line-height:1.75; color:var(--muted) }
@media (max-width:600px){
  .timeline::before{ left:6px }
  .timeline li{ grid-template-columns:1fr; padding-left:30px }
  .timeline li::after{ left:0; top:15px }
  .timeline time{ text-align:left; margin-bottom:2px }
}

.about__letter--wide{ max-width:820px; margin:0 auto; padding:32px clamp(20px, 4vw, 44px) }
.about__letter--wide p{ font-size:1.02rem; line-height:2 }

/* ── homepage: 媒体报道 strip ── */
.media-strip{ margin-top:clamp(32px, 5vw, 48px) }
.media-grid{ list-style:none; display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:12px }
.media-card{
  display:grid; gap:4px; height:100%; padding:16px 16px 14px;
  background:var(--bg); border:1px solid var(--line); border-top:3px solid var(--g);
  color:var(--text); transition:transform .2s, box-shadow .2s;
}
.media-card:hover{ transform:translateY(-2px); box-shadow:0 8px 18px rgba(0,0,0,.07) }
.media-card b{ font-family:var(--f-serif); font-weight:900; font-size:1.02rem; color:var(--g-d); line-height:1.4 }
.media-card span{ font-size:.82rem; color:var(--muted) }
.media-card time{ font-family:var(--f-body); font-size:.8rem; font-weight:700; color:var(--tan) }
.media-card--lead{ background:var(--red); border-color:var(--red); border-top-color:var(--red-d) }
.media-card--lead b{ color:#fff }
.media-card--lead span, .media-card--lead time{ color:rgba(255,255,255,.85) }
@media (max-width:900px){ .media-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)) } }
@media (max-width:520px){ .media-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)) } }

/* ── news article: coverage table ── */
.article .article__sub{ margin:1.6rem 0 .8rem; font-family:var(--f-serif); font-weight:900; font-size:1.1rem; color:var(--g-d) }
.table-scroll{ overflow-x:auto }
.cover-table{ width:100%; min-width:560px; border-collapse:collapse; font-size:.9rem }
.cover-table th{ padding:9px 12px; background:var(--g); color:#fff; font-weight:700; text-align:left; white-space:nowrap }
.cover-table td{ padding:10px 12px; border-bottom:1px solid var(--line); vertical-align:top; line-height:1.6; color:#333 }
.cover-table tr:nth-child(even) td{ background:var(--bg) }
.cover-table td b{ color:var(--g-d) }
.cover-table td small{ display:block; font-size:.76rem; color:var(--muted) }
.cover-table td:nth-child(3){ white-space:nowrap; font-family:var(--f-body) }
.cover-table a{ color:var(--g); font-weight:700; white-space:nowrap }

/* ── 防诈骗提醒 page ── */
.statement{
  max-width:860px; margin:0 auto; padding:clamp(24px, 4vw, 44px) clamp(20px, 5vw, 56px);
  background:#fff; border:1px solid var(--line); border-top:5px solid var(--red);
  box-shadow:0 10px 30px rgba(0,0,0,.05);
}
.statement__kicker{ text-align:center; font-size:.8rem; font-weight:700; letter-spacing:.2em; color:var(--red) }
.statement__title{
  margin:.6rem 0 1.4rem; text-align:center;
  font-family:var(--f-serif); font-weight:900; font-size:clamp(1.3rem, 2.8vw, 1.85rem); line-height:1.45; color:#1a1a1a; letter-spacing:.04em;
}
.statement > p{ font-size:1.02rem; line-height:2; color:#333; text-indent:2em }
.statement__list{ list-style:none; counter-reset:st; margin:.6rem 0 1rem }
.statement__list li{ counter-increment:st; position:relative; padding-left:2.4em; font-size:1.02rem; line-height:2; color:#333 }
.statement__list li::before{ content:counter(st, cjk-ideographic) "、"; position:absolute; left:0; font-weight:700; color:var(--red) }
.statement__list b{ color:var(--red-d) }
.statement > p.statement__contact{ text-indent:0; padding:10px 14px; background:#fdeceb; border-left:3px solid var(--red); font-size:.95rem }
.statement__contact a{ color:var(--red-d); font-weight:700; white-space:nowrap }
.statement__kicker span{ display:inline-block }
@media (max-width:600px){ .statement__kicker{ letter-spacing:.1em } }
.statement > p.statement__end{ margin-top:.6rem }
.statement__sign{ margin-top:1.4rem; text-align:right; font-family:var(--f-serif); line-height:1.9 }
.statement__sign b{ display:block; font-weight:900; font-size:1.05rem; color:#1a1a1a }
.statement__sign time{ font-family:var(--f-body); color:#333 }

.scam-grid{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:14px }
.scam-card{
  display:flex; flex-direction:column; gap:8px; padding:20px 18px;
  background:#fff; border:1px solid var(--line); border-top:3px solid var(--red);
  color:var(--text); transition:transform .2s, box-shadow .2s;
}
.scam-card:hover{ transform:translateY(-2px); box-shadow:0 8px 18px rgba(0,0,0,.07) }
.scam-card b{ font-family:var(--f-serif); font-weight:900; font-size:1.15rem; color:var(--red-d) }
.scam-card span{ font-size:.9rem; line-height:1.7; color:var(--muted) }
.scam-card i{ margin-top:auto; font-style:normal; font-size:.88rem; font-weight:700; color:var(--red) }
@media (max-width:900px){ .scam-grid{ grid-template-columns:1fr 1fr } }

.fraud-cols{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(18px, 3vw, 32px) }
.fraud-cols__h{ margin-bottom:12px; padding-bottom:8px; border-bottom:2px solid; font-family:var(--f-serif); font-weight:900; font-size:1.08rem }
.fraud-cols__h--bad{ color:var(--red-d); border-color:#f3c8c5 }
.fraud-cols__h--good{ color:var(--g-d); border-color:var(--g-line) }
.redflags, .goodlist{ list-style:none; display:grid; gap:10px }
.redflags li, .goodlist li{ position:relative; padding-left:1.9rem; font-size:.96rem; line-height:1.75; color:#333 }
.redflags li::before, .goodlist li::before{
  position:absolute; left:0; top:.3em; width:1.2rem; height:1.2rem; display:grid; place-items:center;
  font-size:.72rem; font-weight:700; color:#fff;
}
.redflags li::before{ content:"✕"; background:var(--red) }
.goodlist li::before{ content:"✓"; background:var(--g) }
.redflags b{ color:var(--red-d) }
.goodlist b{ color:var(--g-d) }
.goodlist a{ color:var(--g); font-weight:700; text-decoration:underline; text-underline-offset:3px }
@media (max-width:760px){ .fraud-cols{ grid-template-columns:1fr } }

.help-grid{ list-style:none; display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:12px }
.help-grid li{ display:flex; flex-direction:column; gap:6px; padding:18px 16px; background:var(--bg); border:1px solid var(--line) }
.help-grid b{ font-family:var(--f-serif); font-weight:900; font-size:1rem; color:var(--g-d) }
.help-grid span{ font-size:.85rem; line-height:1.6; color:var(--muted) }
.help-grid a{ margin-top:auto; font-family:var(--f-body); font-weight:800; font-size:1.05rem; color:var(--red-d); overflow-wrap:anywhere }
.help-grid li.help-grid__lead{ background:var(--g); border-color:var(--g) }
.help-grid__lead b, .help-grid__lead a{ color:#fff }
.help-grid__lead span{ color:rgba(255,255,255,.85) }
.help-grid__lead a + a{ margin-top:0 }
@media (max-width:1000px){ .help-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)) } }
@media (max-width:600px){ .help-grid{ grid-template-columns:1fr 1fr } .help-grid__lead{ grid-column:1 / -1 } }
.link-row{ margin-top:18px; padding:14px 18px; background:var(--g-l); border-left:3px solid var(--g); font-size:.9rem; line-height:2 }
.link-row a{ color:var(--g-d); font-weight:700; text-decoration:underline; text-underline-offset:3px }
.fraud-note{ margin-top:12px; font-size:.82rem; color:var(--muted) }

/* topbar: highlighted 防诈骗提醒 link */
.topbar__links a.topbar__alert{ color:#ffd84d; font-weight:700 }
@media (max-width:480px){ .topbar__links a[href="guides.html"]{ display:none } }  /* 新生指引 is in the main nav; keep the top bar on one line */

/* ── shared: back to top ── */
.totop{
  position:fixed; right:18px; bottom:96px; z-index:70;
  width:42px; height:42px; display:grid; place-items:center;
  background:var(--g); color:#fff; font-size:18px; border-radius:2px;
  box-shadow:0 4px 14px rgba(0,0,0,.18); opacity:0; visibility:hidden; transition:opacity .25s, visibility .25s;
}
.totop.is-on{ opacity:1; visibility:visible }

@media (prefers-reduced-motion:reduce){
  .banner__slide, .feature__item{ transition:none }
}
