:root{
  --bg:#141210; --bg2:#1c1916; --panel:#211d18; --line:#3a3228;
  --gold:#c9a86a; --gold-soft:#d8c194; --ink:#efe9df; --muted:#a99f8f;
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Montserrat","Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;overflow-y:scroll;scrollbar-gutter:stable}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:300;line-height:1.7;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.15}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.wrap{max-width:1120px;margin:0 auto;padding:0 28px}
.eyebrow{font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:var(--gold);font-weight:400}
.rule{width:54px;height:1px;background:var(--gold);margin:18px 0}
.center{text-align:center}
.center .rule,.sec-head .rule{margin-left:auto;margin-right:auto}

/* NAV */
header.nav{position:sticky;top:0;z-index:50;background:rgba(20,18,16,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav-in{max-width:none;margin:0;padding:16px 40px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:flex;align-items:center;gap:13px;font-family:var(--serif);font-size:26px;letter-spacing:.03em;color:var(--ink);white-space:nowrap}
.brand .logo{height:46px;width:auto;flex:none;display:block}
.brand .btxt span{color:var(--gold)}
.menu{display:flex;gap:34px;align-items:center}
.menu .links{display:flex;gap:30px}
.menu a{font-size:15.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);transition:.2s;white-space:nowrap}
.menu a:hover,.menu a.active{color:var(--gold)}
/* 琴键效果：悬停/扫过时像琴键被按下 */
@media(hover:hover){
  .menu .links a{position:relative;display:inline-block;padding:4px 2px 6px;transition:transform .09s ease-out,color .2s;transform-origin:top center}
  .menu .links a::after{content:"";position:absolute;left:1px;right:1px;bottom:0;height:2px;background:var(--gold);opacity:0;transform:scaleX(.4);transition:opacity .12s,transform .16s ease-out}
  .menu .links a:hover{transform:translateY(3px)}
  .menu .links a:hover::after{opacity:1;transform:scaleX(1)}
  .menu .links a:active{transform:translateY(5px)}
}
.lang{display:flex;border:1px solid var(--line);border-radius:2px;overflow:hidden}
.lang button{background:none;border:none;color:var(--muted);font-family:var(--sans);font-size:14.5px;letter-spacing:.08em;padding:10px 15px;cursor:pointer;transition:.2s}
.lang button.active{background:var(--gold);color:#1a160f}
.lang button:hover:not(.active){color:var(--gold)}
.burger{display:none;background:none;border:1px solid var(--line);color:var(--ink);font-size:24px;cursor:pointer;padding:6px 14px;border-radius:2px}

/* NAV DROPDOWN */
.nav-item{position:relative}
.sub-toggle .car{font-size:9px;margin-left:6px;color:var(--gold);opacity:.85;display:inline-block;transition:transform .2s}
.has-sub:hover .sub-toggle .car{transform:translateY(2px)}
.submenu{position:absolute;top:100%;left:50%;transform:translateX(-50%);padding-top:18px;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s;z-index:60}
.has-sub:hover .submenu,.has-sub:focus-within .submenu{opacity:1;visibility:visible}
.submenu-in{background:rgba(20,18,16,.97);backdrop-filter:blur(10px);border:1px solid var(--line);min-width:180px;padding:6px 0;text-align:center}
.submenu-in a{display:block;padding:11px 22px;font-size:13.5px}

/* HERO (home) */
.hero{position:relative;min-height:82vh;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;padding:110px 20px 90px}
.hero-bg{position:absolute;inset:0;background:url('img/hero.jpg') center 30%/cover no-repeat;transform-origin:center;animation:kenburns 24s ease-in-out infinite alternate}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.09)}}
.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,18,16,.78) 0%,rgba(20,18,16,.6) 42%,rgba(20,18,16,.94) 100%)}
.hero-c{position:relative;z-index:2;max-width:880px}
.hero .num{display:flex;align-items:center;justify-content:center;gap:20px;font-family:var(--serif);color:var(--gold);font-size:clamp(30px,4.6vw,44px);font-weight:600;letter-spacing:.14em;margin-bottom:16px}
.hero .num .nn{padding-left:.14em}
.hero .num .ln{width:clamp(40px,7vw,84px);height:1px;background:linear-gradient(90deg,transparent,var(--gold));opacity:.8}
.hero .num .ln:last-child{background:linear-gradient(90deg,var(--gold),transparent)}
.hero h1{font-size:clamp(36px,6.2vw,72px);letter-spacing:.02em;text-transform:uppercase;font-weight:600}
.hero h1 .l2{color:var(--gold-soft)}
.hero .sub{margin-top:22px;font-size:14px;letter-spacing:.28em;text-transform:uppercase}
.hero .dates{margin-top:8px;font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.hero .cta{margin-top:36px;display:inline-flex;gap:14px;flex-wrap:wrap;justify-content:center}
.btn{display:inline-block;padding:13px 30px;border:1px solid var(--gold);color:var(--gold);font-size:12px;letter-spacing:.18em;text-transform:uppercase;transition:.25s;cursor:pointer;background:none}
.btn:hover{background:var(--gold);color:#1a160f}
.btn.solid{background:var(--gold);color:#1a160f}
.btn.solid:hover{background:var(--gold-soft);border-color:var(--gold-soft)}

/* SUB-PAGE BANNER */
.subhero{position:relative;padding:130px 20px 60px;text-align:center;overflow:hidden;border-bottom:1px solid var(--line)}
.subhero .bg{position:absolute;inset:0;background-position:center;background-size:cover;opacity:.28;filter:grayscale(.2)}
.subhero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,18,16,.7),rgba(20,18,16,.92))}
.subhero-c{position:relative;z-index:2}
.subhero h1{font-size:clamp(30px,5vw,52px);letter-spacing:.03em;margin-top:12px}
.subhero .rule{margin:18px auto 0}

/* SECTIONS */
section{padding:88px 0}
section.alt{background:var(--bg2)}
.sec-head{text-align:center;margin-bottom:52px}
.sec-head h2{font-size:clamp(26px,4vw,42px);letter-spacing:.03em;margin-top:12px}
.sec-head .rule{margin-top:20px}
.lead-p{max-width:800px;margin:0 auto;text-align:center;color:#ded6c8;font-size:17.5px}
.lead-p+.lead-p{margin-top:22px}

/* ORGS */
.orgs{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:52px}
.org{background:var(--panel);border:1px solid var(--line);padding:26px 20px;text-align:center}
.org .lbl{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:12px}
.org .val{font-size:15px;line-height:1.6}

/* TIMELINE */
.timeline{max-width:760px;margin:0 auto}
.tl{display:grid;grid-template-columns:96px 1fr;gap:22px;padding:20px 0;border-bottom:1px solid var(--line);align-items:baseline}
.tl:last-child{border-bottom:none}
.tl .d{font-family:var(--serif);font-size:24px;color:var(--gold)}
.tl .t{font-size:16px}
.tl.hl .t{color:var(--gold-soft)}

/* PEOPLE */
.people{display:grid;grid-template-columns:repeat(2,1fr);gap:30px}
.person{background:var(--panel);border:1px solid var(--line);overflow:hidden;display:flex;flex-direction:column}
.person .ph{aspect-ratio:1/1;overflow:hidden;background:#0f0d0b}
.person .ph img{width:100%;height:100%;object-fit:cover;object-position:top center;filter:grayscale(.15)}
.person .bd{padding:24px 24px 28px}
.person .role{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.person h3{font-size:26px;letter-spacing:.02em}
.person .rn{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.person .bio{margin-top:14px;font-size:14.5px;color:#cfc7b8;line-height:1.65}
.person.wide{grid-column:1/-1;flex-direction:row}
.person.wide .ph{width:46%;aspect-ratio:auto}
.person.wide .bd{flex:1;align-self:center}

/* LEADERSHIP CAROUSEL (home) */
.carousel{position:relative;max-width:1040px;margin:0 auto}
.c-track{display:grid;border:1px solid var(--line);background:var(--panel);overflow:hidden;min-height:440px}
.slide{grid-area:1/1;display:grid;grid-template-columns:1.05fr 1fr;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .9s ease,visibility .9s ease}
.slide.active{opacity:1;visibility:visible;pointer-events:auto}
.c-img{overflow:hidden;background:#0f0d0b;display:flex;align-items:center;justify-content:center;padding:14px}
.c-img img{max-width:100%;max-height:420px;width:auto;height:auto;object-fit:contain;filter:grayscale(.08)}
.c-txt{padding:36px 40px;display:flex;align-items:center;opacity:.55;transform:translateY(14px);transition:opacity .9s ease .1s,transform .9s ease .1s}
.slide.active .c-txt{opacity:1;transform:none}
.c-scroll{width:100%}
.c-txt .role{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
.c-txt h3{font-size:32px;letter-spacing:.02em;line-height:1.15}
.c-txt .rn{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:6px}
.c-txt .bio{margin-top:18px;font-size:15px;color:#cfc7b8;line-height:1.72}
.c-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:rgba(20,18,16,.72);color:var(--gold);font-size:24px;line-height:1;cursor:pointer;transition:.2s;backdrop-filter:blur(4px)}
.c-arrow:hover{background:var(--gold);color:#1a160f;border-color:var(--gold)}
.c-prev{left:-14px}
.c-next{right:-14px}
.c-dots{display:flex;gap:10px;justify-content:center;margin-top:24px}
.c-dot{width:9px;height:9px;border-radius:50%;border:1px solid var(--gold);background:none;cursor:pointer;padding:0;transition:.2s}
.c-dot.active{background:var(--gold)}
@media(max-width:820px){
  .c-track{height:auto}
  .slide{grid-template-columns:1fr}
  .c-img{height:240px}
  .c-txt{padding:26px 22px}
  .c-txt h3{font-size:27px}
  .c-scroll{max-height:none}
  .c-prev{left:6px}.c-next{right:6px}
}

/* FACULTY */
.faculty{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.fac{background:var(--panel);border:1px solid var(--line);overflow:hidden}
.fac .ph{aspect-ratio:3/4;overflow:hidden;background:#0f0d0b}
.fac .ph img{width:100%;height:100%;object-fit:cover;filter:grayscale(.1)}
.fac .bd{padding:18px 18px 22px}
.fac h3{font-size:20px}
.fac .rn{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-top:3px}
.fac .role{font-size:12.5px;color:var(--gold-soft);margin-top:10px;line-height:1.5}
.fac .bio{font-size:13px;color:#c3bbac;margin-top:10px;line-height:1.6}

/* PARTICIPANTS */
.parts{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.part{background:var(--panel);border:1px solid var(--line);overflow:hidden;display:flex;flex-direction:column}
.part .pph{aspect-ratio:3/4;overflow:hidden;background:#0f0d0b;display:flex;align-items:center;justify-content:center}
.part .pph img{width:100%;height:100%;object-fit:cover;object-position:top center}
.part .mono-lg{font-family:var(--serif);font-size:46px;color:var(--gold);opacity:.5}
.part .pbd{padding:18px 18px 22px}
.part h4{font-size:18px;letter-spacing:.02em}
.part .yr{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:3px}
.part .rep{font-size:12.5px;color:#cfc7b8;margin-top:10px;line-height:1.5}

/* GALA */
.gala{position:relative;padding:104px 0;background:linear-gradient(rgba(20,18,16,.86),rgba(20,18,16,.92)),url('img/orchestra.jpg') center/cover;text-align:center}
.gala .box{max-width:760px;margin:0 auto}
.gala h2{font-size:clamp(28px,4.5vw,48px);margin-top:14px}
.gala .when{margin-top:20px;font-size:15px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-soft)}
.gala .times{margin-top:6px;color:var(--muted);letter-spacing:.14em;font-size:13px}
.gala .line{margin-top:24px;color:#ded6c8;font-size:16px;line-height:1.8}
.gala .composers{margin-top:24px;font-family:var(--serif);font-style:italic;font-size:18px;color:var(--gold-soft);line-height:1.7}

/* VENUES */
.venues{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.cms-wrap{margin-bottom:26px}
.cms-venue{display:grid;grid-template-columns:1.15fr 1fr;background:var(--panel);border:1px solid var(--line);overflow:hidden}
.cms-carousel{position:relative;min-height:340px;overflow:hidden}
.cms-track{position:absolute;inset:0}
.cms-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.1s ease}
.cms-slide.on{opacity:1}
.cms-dots{position:absolute;left:0;right:0;bottom:14px;display:flex;justify-content:center;gap:9px;z-index:3}
.cms-dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.4);cursor:pointer;transition:.2s}
.cms-dot.on{background:var(--gold);transform:scale(1.15)}
.cms-bd{padding:34px 34px}
.cms-bd .tag{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
.cms-bd h3{font-size:25px;margin-top:9px;line-height:1.25}
.cms-bd .bio{font-size:13.5px;color:#c3bbac;margin-top:14px;line-height:1.7}
@media(max-width:820px){.cms-venue{grid-template-columns:1fr}.cms-carousel{min-height:220px}.cms-bd{padding:24px}}
.venue{background:var(--panel);border:1px solid var(--line);overflow:hidden}
.venue .ph{aspect-ratio:4/3;overflow:hidden}
.venue .ph img{width:100%;height:100%;object-fit:cover}
.venue .bd{padding:22px}
.venue .tag{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
.venue h3{font-size:22px;margin-top:8px}
.venue .bio{font-size:13.5px;color:#c3bbac;margin-top:12px;line-height:1.65}

/* NEWS */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.news-card{background:var(--panel);border:1px solid var(--line);overflow:hidden;display:flex;flex-direction:column;transition:.25s;cursor:pointer}
.news-card:hover{border-color:var(--gold);transform:translateY(-3px)}
.news-card .ph{aspect-ratio:4/3;overflow:hidden;background:#100e0c}
.news-card .ph img{width:100%;height:100%;object-fit:cover;transition:.4s}
.news-card:hover .ph img{transform:scale(1.04)}
.news-card.contain:hover .ph img{transform:scale(1.02)}
.news-card .bd{padding:26px 26px 30px;display:flex;flex-direction:column;flex:1}
.news-card .date{font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.news-card h3{font-size:24px;margin-top:11px;line-height:1.25}
.news-card .ex{font-size:15px;color:#bcb4a5;margin-top:14px;line-height:1.62;flex:1}
.news-card .more{margin-top:20px;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft)}

/* ARTICLE */
.article{max-width:760px;margin:0 auto;padding:70px 0 40px}
.article .back{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.article .back:hover{color:var(--gold)}
.article .date{margin-top:26px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.article h1{font-size:clamp(30px,4.6vw,46px);margin-top:12px;line-height:1.18}
.article .hero-img{margin:34px 0;border:1px solid var(--line)}
.article .body{font-size:17px;color:#ded6c8;line-height:1.85}
.article .body p{margin-bottom:22px}
.article .body h2{font-size:26px;color:var(--ink);margin:34px 0 14px}
.article .body ul{margin:0 0 22px 22px;color:#ded6c8}
.article .body li{margin-bottom:8px}
.article .body a{color:var(--gold-soft);border-bottom:1px solid var(--line)}

/* FOOTER */
footer{background:#0f0d0b;border-top:1px solid var(--line);padding:66px 0 40px;text-align:center}
footer h3{font-size:clamp(22px,3vw,32px);text-transform:uppercase;letter-spacing:.06em}
footer .fdate{margin-top:12px;color:var(--gold);letter-spacing:.2em;text-transform:uppercase;font-size:13px}
footer .see{margin-top:16px;font-family:var(--serif);font-style:italic;font-size:20px;color:var(--gold-soft)}
footer .fnav{margin-top:26px;display:flex;gap:22px;justify-content:center;flex-wrap:wrap}
footer .fnav a{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
footer .fnav a:hover{color:var(--gold)}
footer .contact{margin-top:26px;color:var(--muted);font-size:13.5px;line-height:1.9}
footer .contact a{color:var(--gold-soft)}
footer .fine{margin-top:30px;color:#6f665a;font-size:11.5px;letter-spacing:.1em}

/* CARD HOVER POLISH */
.person,.fac,.venue,.part{transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease}
.person:hover,.fac:hover,.venue:hover,.part:hover{transform:translateY(-4px);border-color:var(--gold);box-shadow:0 14px 34px rgba(0,0,0,.35)}
.venue .ph img,.fac .ph img,.person .ph img{transition:transform .5s ease}
.venue:hover .ph img,.fac:hover .ph img,.person:hover .ph img{transform:scale(1.04)}
.btn{transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s ease}
.btn:hover{transform:translateY(-1px)}

.fade{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s ease}
.fade.in{opacity:1;transform:none}

/* ACCESSIBILITY: honour reduced-motion */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .hero-bg{animation:none}
  .c-img img,.slide.active .c-img img{transform:none}
  .fade{opacity:1;transform:none}
}

@media(max-width:1560px){
  .menu .links{gap:18px}
  .menu a{font-size:13px}
  .brand{font-size:22px;gap:10px}
  .brand .logo{height:40px}
  .lang button{font-size:13px;padding:8px 11px}
}
@media(max-width:1200px){
  .menu .links{display:none}
  .menu .links.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:rgba(20,18,16,.98);border-bottom:1px solid var(--line);padding:8px 40px}
  .menu .links.open a{padding:17px 0;border-bottom:1px solid var(--line);font-size:16px}
  .burger{display:block}
  /* 移动端下拉组展平为普通列表 */
  .menu .links.open .nav-item{width:100%}
  .menu .links.open .sub-toggle{display:none}
  .menu .links.open .submenu{position:static;transform:none;opacity:1;visibility:visible;padding:0}
  .menu .links.open .submenu-in{background:none;border:none;padding:0;min-width:0;text-align:left;backdrop-filter:none}
  .parts{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:900px){
  .orgs{grid-template-columns:1fr}
  .people{grid-template-columns:1fr}
  .person.wide{flex-direction:column}
  .person.wide .ph{width:100%;aspect-ratio:16/10}
  .faculty{grid-template-columns:repeat(2,1fr)}
  .parts{grid-template-columns:repeat(2,1fr)}
  .venues{grid-template-columns:1fr}
  .news-grid{grid-template-columns:1fr}
  .person-detail{grid-template-columns:1fr!important}
}
@media(max-width:720px){
  /* 顶栏收紧，防止横向溢出 */
  .nav-in{padding:12px 16px;gap:10px}
  .brand{font-size:clamp(15px,4.6vw,19px);gap:8px}
  .brand .logo{height:32px}
  .lang button{font-size:12.5px;padding:8px 10px;letter-spacing:.04em}
  .burger{font-size:20px;padding:5px 11px}
  .menu{gap:12px}
  .menu .links.open{padding:6px 22px}
  /* 版面间距整体收紧 */
  section{padding:56px 0}
  .subhero{padding:96px 16px 46px}
  .sec-head{margin-bottom:36px}
  .wrap{padding:0 18px}
  .lead-p{font-size:16px}
  /* 首页 hero */
  .hero{min-height:72svh;padding:90px 18px 70px}
  .hero .sub{font-size:12.5px;letter-spacing:.2em}
  .hero .dates{font-size:12px;letter-spacing:.16em}
  .btn{padding:12px 24px}
  /* 轮播箭头缩小并贴边 */
  .c-arrow{width:38px;height:38px;font-size:20px}
  .c-dot{width:11px;height:11px}
  /* 人物详情：取消图片吸顶 */
  .person-detail{gap:26px}
  .pd-photo{position:static}
  .pd-body{font-size:15.5px}
  /* 加拉板块 */
  .gala{padding:70px 0}
  .gala .line{font-size:15px}
  /* 文章 */
  .article{padding:44px 0 30px}
  .article .body{font-size:16px}
  footer{padding:48px 0 32px}
}
@media(max-width:560px){
  .faculty{grid-template-columns:1fr}
  .parts{grid-template-columns:repeat(2,1fr);gap:14px}
  .part .pbd{padding:14px 12px 16px}
  .part h4{font-size:16px}
  .tl{grid-template-columns:64px 1fr;gap:12px}
  .tl .d{font-size:20px}
  .tl .t{font-size:15px}
  .people{gap:20px}
  .person .bd{padding:20px 18px 22px}
  .orgs{gap:14px;margin-top:36px}
  .news-grid{gap:20px}
}
@media(max-width:380px){
  .brand{font-size:17px}
  .lang button{padding:7px 8px;font-size:12px}
  .nav-in{padding:10px 10px;gap:6px}
}
/* MEDIA 占位（视频/照片） */
.media-empty{max-width:720px;margin:0 auto;text-align:center;border:1px dashed var(--line);padding:74px 30px;color:var(--muted)}
.media-empty .note{font-family:var(--serif);font-size:44px;color:var(--gold);opacity:.65;letter-spacing:.1em}
.media-empty p{margin-top:18px;font-size:15px;letter-spacing:.04em}

/* PAST — tacet 休止页 */
.tacet{padding:110px 0 100px;text-align:center}
.tacet .stave{width:min(420px,82%);margin:0 auto;display:block}
.t404{font-family:var(--serif);font-size:clamp(72px,14vw,140px);color:var(--gold);line-height:1;margin-top:30px}
.tacet .word{margin-top:12px;letter-spacing:.5em;text-transform:uppercase;color:var(--muted);font-size:14px;padding-left:.5em}
.tacet p{max-width:560px;margin:28px auto 0;color:#ded6c8;font-size:16px}
.tacet .fine{margin-top:14px;color:var(--muted);font-size:13.5px;font-style:italic;font-family:var(--serif)}
.tacet .cta{margin-top:36px}
@media(max-width:720px){.tacet{padding:70px 0 60px}}

/* 手机端安全兜底：禁止横向滚动 */
html,body{overflow-x:clip}

/* NEWS image — show faces (heads lower into frame) */
.news-card .ph img{object-position:center 22%}

/* READ-FULL link */
.read-full{display:inline-block;margin-top:16px;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-soft);border-bottom:1px solid var(--line);padding-bottom:3px;transition:.2s}
.read-full:hover{color:var(--gold);border-color:var(--gold)}
.person .bd h3 a,.c-txt h3{color:inherit}
.person .bd h3 a:hover{color:var(--gold)}

/* PERSON DETAIL page */
.person-detail{display:grid;grid-template-columns:0.9fr 1.25fr;gap:46px;align-items:start;max-width:1040px;margin:0 auto}
.pd-photo{position:sticky;top:120px}
.pd-photo img{width:100%;border:1px solid var(--line);filter:grayscale(.08)}
.pd-body{font-size:16.5px;color:#ded6c8;line-height:1.9}
.pd-body p{margin-bottom:20px}

/* PHOTO STACK (faculty news) */
.photostack{--spread:210px;position:relative;height:440px;margin:44px 0 50px;display:flex;align-items:center;justify-content:center}
.pscard{position:absolute;width:256px;height:344px;margin:0;padding:0;border:8px solid #f4efe6;background:#f4efe6;box-shadow:0 14px 32px rgba(0,0,0,.5);border-radius:2px;overflow:hidden;cursor:pointer;transform:translateX(0) rotate(calc((var(--i) - (var(--n) - 1)/2) * 4deg));transform-origin:center bottom;transition:transform .6s cubic-bezier(.2,.7,.2,1),box-shadow .4s}
.pscard:nth-child(1){z-index:1}.pscard:nth-child(2){z-index:2}.pscard:nth-child(3){z-index:3}.pscard:nth-child(4){z-index:4}
.pscard img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}
.pscard figcaption{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.82));color:#fff;font-size:12px;letter-spacing:.06em;text-align:center;padding:26px 6px 9px;opacity:0;transition:opacity .4s}
.photostack:hover .pscard,.photostack:focus-within .pscard,.photostack.open .pscard{transform:translateX(calc((var(--i) - (var(--n) - 1)/2) * var(--spread))) rotate(0deg);box-shadow:0 18px 36px rgba(0,0,0,.55)}
.photostack:hover .pscard figcaption,.photostack:focus-within .pscard figcaption,.photostack.open .pscard figcaption{opacity:1}
.ps-hint{position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);transition:opacity .3s}
.photostack:hover .ps-hint,.photostack:focus-within .ps-hint,.photostack.open .ps-hint{opacity:0}
@media(max-width:640px){
  .photostack{--spread:82px;height:300px}
  .pscard{width:150px;height:205px;border-width:5px}
}
/* mobile: detail-page photo scrolls inline above the bio (not fixed) */
@media(max-width:820px){
  .person-detail{grid-template-columns:1fr!important}
  .pd-photo{position:static!important;top:auto!important}
  .pd-photo img{max-height:62vh;object-fit:cover}
}
/* footer organiser/partner logos */
.orgs{margin-top:36px;padding-top:26px;border-top:1px solid var(--line)}
.orgs-h{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);text-align:center;margin-bottom:18px}
.orgrow{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;align-items:center}
.orgcard{background:#f2ece3;border-radius:6px;padding:9px 16px;height:52px;display:flex;align-items:center;justify-content:center;transition:transform .2s}
.orgcard:hover{transform:translateY(-2px)}
.orgcard img{max-height:34px;width:auto;display:block}
/* language hover dropdown */
.langbox{position:relative;display:inline-block}
.m-lang{display:none}
.lang-trigger{background:none;border:1px solid var(--line);color:var(--muted);font-family:var(--sans);font-size:14.5px;letter-spacing:.08em;padding:9px 14px;cursor:pointer;border-radius:2px;display:flex;align-items:center;gap:7px;transition:.2s}
.lang-trigger .car{font-size:9px;color:var(--gold);transition:transform .2s}
.langbox:hover .lang-trigger,.langbox:focus-within .lang-trigger{color:var(--gold);border-color:var(--gold)}
.langbox:hover .lang-trigger .car{transform:translateY(2px)}
.lang-menu{position:absolute;top:100%;right:0;padding-top:8px;opacity:0;visibility:hidden;transition:opacity .18s,visibility .18s;z-index:60}
.langbox:hover .lang-menu,.langbox:focus-within .lang-menu{opacity:1;visibility:visible}
.lang-menu-in{background:rgba(20,17,14,.97);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:2px;min-width:104px;overflow:hidden;padding:4px 0}
.lang-menu button{display:block;width:100%;text-align:left;background:none;border:none;color:var(--muted);font-family:var(--sans);font-size:14px;letter-spacing:.06em;padding:9px 16px;cursor:pointer;transition:.15s}
.lang-menu button:hover{color:var(--gold);background:rgba(255,255,255,.04)}
.lang-menu button.active{color:var(--gold);background:none}
@media(max-width:820px){
  .langbox{display:none}
  .menu .links.open .m-lang{display:flex;gap:10px;padding:16px 0;border-bottom:1px solid var(--line);order:-1}
  .menu .links.open .m-lang button{flex:0 0 auto;background:none;border:1px solid var(--line);color:var(--muted);font-family:var(--sans);font-size:15px;letter-spacing:.08em;padding:8px 18px;border-radius:2px;cursor:pointer;transition:.15s}
  .menu .links.open .m-lang button.active{color:var(--gold);border-color:var(--gold)}
  .menu .links.open .m-lang button:hover{color:var(--gold);border-color:var(--gold)}
}
/* ---------- page loader (music equaliser) ---------- */
#loader{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .55s ease}
#loader.hide{opacity:0;pointer-events:none}
/* 金线展开转场 */
#loader .goldline{position:absolute;left:50%;top:50%;width:0;height:2px;background:linear-gradient(90deg,transparent,var(--gold) 18%,var(--gold-soft) 50%,var(--gold) 82%,transparent);transform:translate(-50%,-50%);opacity:0;box-shadow:0 0 18px rgba(201,168,106,.7)}
#loader.reveal .eq{opacity:0;transition:opacity .3s ease}
#loader.reveal .goldline{animation:goldgrow 1.15s cubic-bezier(.7,0,.2,1) forwards}
#loader.reveal{background:transparent;transition:background .5s ease .6s}
#loader.reveal .curtain{position:absolute;left:0;width:100%;height:50%;background:var(--bg);z-index:-1}
#loader.reveal .curtain.top{top:0;animation:curtup 1s cubic-bezier(.7,0,.2,1) .55s forwards}
#loader.reveal .curtain.bot{bottom:0;animation:curtdn 1s cubic-bezier(.7,0,.2,1) .55s forwards}
@keyframes goldgrow{0%{width:0;opacity:0}22%{opacity:1}45%{width:78%;opacity:1}75%{width:100%;opacity:.9}100%{width:100%;opacity:0}}
@keyframes curtup{to{transform:translateY(-100%)}}
@keyframes curtdn{to{transform:translateY(100%)}}
#loader .eq{display:flex;align-items:flex-end;gap:5px;height:36px}
#loader .eq span{width:4px;height:9px;background:var(--gold);border-radius:1px;animation:eqbar 1s ease-in-out infinite}
#loader .eq span:nth-child(2){animation-delay:.14s}
#loader .eq span:nth-child(3){animation-delay:.28s}
#loader .eq span:nth-child(4){animation-delay:.42s}
#loader .eq span:nth-child(5){animation-delay:.56s}
@keyframes eqbar{0%,100%{height:9px;opacity:.5}50%{height:36px;opacity:1}}
@media (prefers-reduced-motion:reduce){#loader .eq span{animation:none;height:24px}}
