:root{
  --ink:#f8f1e5;--muted:#b9aa98;--line:rgba(231,211,182,.18);--red:#c42d35;--gold:#d8ab5a;--paper:#191817;
  font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:#111
}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{background:#111;color:var(--ink)}button,input,select{font:inherit}
.board-shell{position:relative;display:grid;grid-template-rows:150px minmax(0,1fr) 72px;width:100vw;height:100vh;min-width:960px;min-height:540px;padding:0 54px;background:radial-gradient(circle at 78% -15%,rgba(196,45,53,.19),transparent 31%),radial-gradient(circle at 5% 102%,rgba(216,171,90,.11),transparent 30%),var(--paper);isolation:isolate}
.board-shell:before{content:"";position:absolute;z-index:-1;inset:0;background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);background-size:56px 56px;mask-image:linear-gradient(to bottom,#000,transparent 80%)}
.board-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.board-brand{display:flex;align-items:center;gap:25px}.board-brand img{width:74px;height:74px;object-fit:contain;filter:drop-shadow(0 12px 22px rgba(0,0,0,.32))}.board-brand p{margin:0 0 7px;color:var(--gold);font-size:15px;font-weight:700;letter-spacing:.18em}.board-brand h1{margin:0;font-family:"Songti SC","STSong",serif;font-size:43px;font-weight:700;letter-spacing:.05em}.board-meta{display:flex;align-items:center;gap:38px}.board-meta>div{display:grid;gap:6px;padding-right:36px;border-right:1px solid var(--line);text-align:right}.board-meta small{color:var(--muted);font-size:13px;letter-spacing:.12em}.board-meta strong{font:700 21px/1 Georgia,serif;color:var(--gold)}.board-meta time{min-width:142px;font:500 39px/1 Georgia,serif;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.board-stage{position:relative;min-height:0;padding:24px 0 18px}.leaderboard{display:grid;grid-template-rows:104px minmax(0,1fr);height:100%;animation:board-in .7s cubic-bezier(.2,.8,.2,1) both}.leaderboard-head{display:flex;align-items:flex-start;justify-content:space-between}.leaderboard-kicker{display:flex;align-items:center;gap:13px;margin:0 0 9px;color:var(--gold);font-size:15px;font-weight:800;letter-spacing:.16em}.leaderboard-kicker:before{content:"";display:block;width:38px;height:4px;background:var(--red)}.leaderboard h2{margin:0;font-family:"Songti SC","STSong",serif;font-size:54px;line-height:1}.leaderboard-head>p{max-width:560px;margin:16px 0 0;color:var(--muted);font-size:22px;line-height:1.65;text-align:right}
.ranking-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;min-height:0}.ranking-row{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-around;min-width:0;min-height:0;padding:34px 28px 30px;border:1px solid var(--line);background:linear-gradient(180deg,color-mix(in srgb,var(--medal) 10%,transparent),rgba(255,255,255,.028) 34%,rgba(255,255,255,.012));overflow:hidden;text-align:center}.ranking-row:before{content:"";position:absolute;inset:0 0 auto;height:8px;background:var(--medal)}.ranking-row>*{min-width:0}.rank-position{display:flex;align-items:baseline;gap:14px;color:var(--medal);white-space:nowrap}.rank-position small{font:800 14px/1 Georgia,serif;letter-spacing:.18em}.rank-position b{font:700 96px/.82 Georgia,serif;font-variant-numeric:tabular-nums}.student-name{display:flex;flex-direction:column;align-items:center;gap:15px;min-width:0;width:100%}.student-name small{order:2;padding:8px 14px;border:1px solid color-mix(in srgb,var(--medal) 38%,transparent);color:var(--muted);font-size:16px;font-weight:700;white-space:nowrap}.student-name b{max-width:100%;overflow:hidden;font-family:"Songti SC","STSong",serif;font-size:64px;line-height:1;letter-spacing:.05em;text-overflow:ellipsis;white-space:nowrap}.student-rank{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0;color:#e7d8c4}.student-rank img{width:130px;height:130px;object-fit:contain}.student-rank span{display:grid;gap:7px;min-width:0}.student-rank small,.student-points small{color:var(--muted);font-size:13px;font-weight:700;letter-spacing:.12em}.student-rank b{overflow:hidden;font-size:32px;text-overflow:ellipsis;white-space:nowrap}.student-points{display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;min-width:0;color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap}.student-points small{flex-basis:100%;margin-bottom:8px}.student-points b{font:700 76px/.85 Georgia,serif}.student-points em{margin-left:12px;color:var(--gold);font-size:17px;font-style:normal;font-weight:800}.ranking-empty{display:grid;grid-column:1/-1;place-items:center;border:1px solid var(--line);color:var(--muted);font-size:28px}
.board-footer{position:relative;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);color:var(--muted);font-size:13px}.board-season{display:flex;align-items:center;gap:13px}.board-season i{width:4px;height:4px;border-radius:50%;background:var(--red)}.board-next{display:flex;align-items:center;gap:12px}.board-next span{font-size:11px;letter-spacing:.16em}.board-next b{color:var(--ink);font-size:15px}.board-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.06)}.board-progress i{display:block;width:0;height:100%;background:var(--red)}.board-progress i.running{animation:board-progress var(--duration,12s) linear forwards}
.board-loading,.board-error{display:grid;place-items:center;align-content:center;height:100%;text-align:center}.board-loading span{width:46px;height:46px;border:3px solid rgba(255,255,255,.12);border-top-color:var(--gold);border-radius:50%;animation:spin 1s linear infinite}.board-loading h2,.board-error h2{margin:22px 0 8px;font-family:"Songti SC","STSong",serif;font-size:32px}.board-loading p,.board-error p{margin:0;color:var(--muted)}.board-error button{margin-top:22px;padding:10px 20px;border:1px solid var(--gold);background:transparent;color:var(--ink);cursor:pointer}.board-error button:hover{background:var(--gold);color:#211c15}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes board-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes board-progress{to{width:100%}}
@media(max-width:1500px){.board-shell{grid-template-rows:118px minmax(0,1fr) 58px;padding-inline:34px}.board-brand img{width:60px;height:60px}.board-brand h1{font-size:34px}.board-meta time{font-size:32px}.board-stage{padding-block:18px 14px}.leaderboard{grid-template-rows:83px minmax(0,1fr)}.leaderboard h2{font-size:42px}.leaderboard-head>p{font-size:17px}.ranking-list{gap:12px}.ranking-row{padding:25px 18px 22px}.rank-position{gap:9px}.rank-position b{font-size:70px}.student-name{gap:10px}.student-name b{font-size:46px}.student-name small{padding:6px 9px;font-size:12px}.student-rank{gap:7px}.student-rank img{width:88px;height:88px}.student-rank b{font-size:24px}.student-rank small,.student-points small{font-size:10px}.student-points b{font-size:52px}.student-points em{font-size:12px}}
.leaderboard-head{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:24px}.leaderboard-kicker{margin:0}.leaderboard h2{justify-self:center;font-size:58px;text-align:center}.leaderboard-summary{justify-self:end;max-width:560px;margin:0;color:var(--muted);font-size:22px;line-height:1.65;text-align:right}.rank-position small{font-size:16px}.rank-position b{font-size:110px}.student-name b{font-size:76px}.student-name small{padding:9px 16px;font-size:18px}.student-rank img{width:156px;height:156px}.student-rank small,.student-points small{font-size:15px}.student-rank b{font-size:39px}.student-points b{font-size:92px}.student-points em{font-size:19px}
@media(max-width:1500px){.leaderboard-head{gap:14px}.leaderboard-kicker{font-size:12px}.leaderboard h2{font-size:45px}.leaderboard-summary{font-size:17px}.ranking-row{padding:22px 18px 19px}.rank-position small{font-size:12px}.rank-position b{font-size:78px}.student-name b{font-size:54px}.student-name small{padding:6px 10px;font-size:13px}.student-rank img{width:104px;height:104px}.student-rank small,.student-points small{font-size:11px}.student-rank b{font-size:28px}.student-points b{font-size:62px}.student-points em{font-size:14px}}
@media(prefers-reduced-motion:reduce){.leaderboard{animation:none}.board-progress i.running{animation:none;width:100%}}
.information-slide,.message-slide{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;animation:board-in .7s both}.slide-eyebrow{margin:0 0 24px;color:var(--gold);font-size:19px;font-weight:700;letter-spacing:.24em}.information-slide h2{margin:0;font-family:"Songti SC","STSong",serif;font-size:100px}.information-date{margin-top:24px;font-size:56px;font-weight:700}.information-week{display:flex;align-items:center;gap:25px;margin-top:20px;color:var(--gold);font-size:37px}.information-week i{width:8px;height:8px;border-radius:50%;background:var(--red)}.information-clock{margin-top:15px;font:700 112px/1.1 Georgia,serif;font-variant-numeric:tabular-nums;letter-spacing:.05em}.weather-card{display:grid;gap:8px;min-width:560px;margin-top:25px;padding:19px 40px;border:1px solid var(--line);background:rgba(255,255,255,.035)}.weather-card small{color:var(--gold);font-size:19px}.weather-card b{font-size:35px}.weather-card em{font-style:normal;color:var(--gold)}.weather-card span{color:var(--muted);font-size:20px}.message-slide h2{margin:0;max-width:1400px;font-family:"Songti SC","STSong",serif;font-size:clamp(72px,7vw,132px);line-height:1.35;letter-spacing:.05em}.message-signature{margin:50px 0 0;color:var(--muted);font-size:23px;letter-spacing:.2em}
@media(max-width:1500px){.information-slide h2{font-size:70px}.information-date{font-size:39px}.information-week{font-size:27px}.information-clock{font-size:78px}.weather-card{min-width:480px;margin-top:18px;padding:14px}.weather-card b{font-size:27px}.message-slide h2{font-size:clamp(55px,7vw,100px)}}
.greeting-slide h2{max-width:1500px;font-size:clamp(66px,5vw,96px);line-height:1.3}.greeting-english{max-width:1300px;margin:34px 0 0;color:#e5d8c7;font-size:clamp(30px,2.4vw,46px);font-weight:500;line-height:1.35}.greeting-slide .message-signature{margin-top:48px}
@media(max-width:1500px){.greeting-slide h2{font-size:clamp(48px,5vw,76px)}.greeting-english{max-width:1080px;margin-top:24px;font-size:clamp(24px,2.4vw,36px)}.greeting-slide .message-signature{margin-top:30px}}
.discipline-board-slide{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;animation:board-in .7s both}.discipline-board-slide h2{margin:0;color:#fff;font-family:"Songti SC","STSong",serif;font-size:clamp(88px,8vw,150px);line-height:1}.discipline-board-person{display:flex;align-items:center;gap:34px;margin-top:52px}.discipline-board-person span{padding:16px 28px;border:2px solid var(--gold);color:var(--gold);font-size:36px;font-weight:850}.discipline-board-person b{font-family:"Songti SC","STSong",serif;font-size:76px}.discipline-board-slide>p:not(.slide-eyebrow){max-width:1450px;margin:45px 0 0;color:#ddd3ca;font-size:36px;line-height:1.55}.discipline-board-decision{display:flex;align-items:center;gap:25px;margin-top:42px;padding:24px 48px;background:#a52027}.discipline-board-decision small{color:#f1c45e;font-size:20px;font-weight:850;letter-spacing:.12em}.discipline-board-decision strong{font-size:39px}.discipline-board-slide footer{display:flex;gap:34px;margin-top:38px;color:var(--gold);font-size:20px;letter-spacing:.12em}@media(max-width:1500px){.discipline-board-person{margin-top:30px}.discipline-board-person span{padding:10px 20px;font-size:28px}.discipline-board-person b{font-size:58px}.discipline-board-slide>p:not(.slide-eyebrow){margin-top:28px;font-size:27px}.discipline-board-decision{margin-top:28px;padding:17px 34px}.discipline-board-decision strong{font-size:29px}}

.board-brand img{box-sizing:border-box;border-radius:50%;background:#fff;padding:5px;object-fit:contain;box-shadow:0 12px 24px rgba(0,0,0,.32)}
.information-slide{display:block;height:100%;animation:board-in .7s both}.information-layout{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(420px,.82fr);gap:42px;height:100%}.information-main{display:flex;min-width:0;flex-direction:column;align-items:flex-start;justify-content:center;padding-left:4.5vw;text-align:left}.information-main .slide-eyebrow{margin-bottom:30px}.information-slide h2{margin:0;font-family:"Songti SC","STSong",serif;font-size:92px;line-height:1.05}.information-date{margin-top:42px;font-size:48px;font-weight:750;white-space:nowrap}.information-week{display:flex;align-items:center;gap:25px;margin-top:24px;color:var(--gold);font-size:34px}.information-week i{width:8px;height:8px;border-radius:50%;background:var(--red)}.information-clock{margin-top:25px;font:700 110px/1 Georgia,serif;font-variant-numeric:tabular-nums;letter-spacing:.035em;white-space:nowrap}.weather-card{display:flex;min-width:0;flex-direction:column;justify-content:center;margin:28px 0;padding:58px 54px;border-left:1px solid var(--line);background:rgba(255,255,255,.025);text-align:left}.weather-card header{display:grid;gap:8px}.weather-card header small{color:var(--gold);font-size:20px;font-weight:750;letter-spacing:.12em}.weather-card header strong{font-size:42px}.weather-now{display:flex;align-items:baseline;justify-content:space-between;gap:28px;margin:74px 0 68px}.weather-now b{font-family:"Songti SC","STSong",serif;font-size:68px;line-height:1}.weather-now em{color:var(--gold);font:700 126px/.8 Georgia,serif;font-style:normal;font-variant-numeric:tabular-nums}.weather-card dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;border-top:1px solid var(--line)}.weather-card dl div{display:grid;gap:11px;padding:26px 18px 0 0}.weather-card dt{color:var(--muted);font-size:16px}.weather-card dd{margin:0;color:var(--ink);font-size:27px;font-weight:750;white-space:nowrap}.weather-unavailable>div{display:grid;gap:15px;margin-top:75px}.weather-unavailable b{font-family:"Songti SC","STSong",serif;font-size:54px}.weather-unavailable span{color:var(--muted);font-size:22px}@media(max-width:1500px){.information-layout{grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr);gap:25px}.information-main{padding-left:3.5vw}.information-main .slide-eyebrow{margin-bottom:17px;font-size:13px}.information-slide h2{font-size:61px}.information-date{margin-top:25px;font-size:33px}.information-week{gap:17px;margin-top:15px;font-size:24px}.information-clock{margin-top:18px;font-size:75px}.weather-card{margin:18px 0;padding:35px 32px}.weather-card header small{font-size:14px}.weather-card header strong{font-size:30px}.weather-now{margin:42px 0 38px}.weather-now b{font-size:45px}.weather-now em{font-size:88px}.weather-card dl div{gap:7px;padding:18px 9px 0 0}.weather-card dt{font-size:12px}.weather-card dd{font-size:18px}.weather-unavailable>div{margin-top:42px}.weather-unavailable b{font-size:38px}.weather-unavailable span{font-size:16px}}
.ranking-list:has(.ranking-side){grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,.82fr)}
.ranking-side{display:grid;grid-template-rows:repeat(2,minmax(0,1fr));gap:18px;min-height:0}
.ranking-side .ranking-row{padding:18px 12px;justify-content:space-evenly;--medal:#b9aa98!important}
.ranking-side .rank-position{gap:8px}.ranking-side .rank-position b{font-size:44px}.ranking-side .rank-position small{font-size:12px}
.ranking-side .student-name{gap:8px}.ranking-side .student-name b{font-size:36px}.ranking-side .student-name small{padding:3px 8px;font-size:13px}
.ranking-side .student-rank{flex-direction:row;gap:8px}.ranking-side .student-rank img{width:60px;height:60px}.ranking-side .student-rank b{font-size:20px}.ranking-side .student-rank small,.ranking-side .student-points small{font-size:11px}
.ranking-side .student-points b{font-size:36px}.ranking-side .student-points em{font-size:12px;margin-left:6px}.ranking-side .student-points small{margin-bottom:5px}
@media(max-height:800px){.ranking-side .ranking-row{padding:10px 8px}.ranking-side .rank-position b{font-size:30px}.ranking-side .student-name b{font-size:28px}.ranking-side .student-rank img{width:42px;height:42px}.ranking-side .student-rank b{font-size:16px}.ranking-side .student-points b{font-size:28px}}

.board-shell.birthday-mode{padding:0;grid-template-rows:1fr}.birthday-mode>.board-header,.birthday-mode>.board-footer{display:none}.birthday-mode>.board-stage{position:absolute;inset:0;padding:0}.birthday-frame{display:block;width:100%;height:100%;border:0;background:#fff5e7}
