:root{--sky:#5AA9E6;--deep:#1F4E79;--cream:#FFF8EE;--soft:#6B6B7B;--orange:#F59E2E;--red:#E8574A;--green:#4CAF6A;--line:#E6DCCB;--paper:#FFFBF4;--paperline:#EFE3CF}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:#E9F3FB;font-family:"PingFang SC","Microsoft YaHei",sans-serif;color:#2D2D3A;overflow:hidden}
button{font:inherit;border:none;cursor:pointer;background:none;color:inherit}
button:disabled{opacity:.4;cursor:default}
.hidden{display:none!important}
img.missing{visibility:hidden}

/* 1920×1080 画布等比缩放 */
#stage{position:absolute;left:50%;top:50%;width:1920px;height:1080px;transform-origin:center;background:linear-gradient(180deg,#DCEEFB,#FFF8EE 60%);overflow:hidden}
/* 顶部导航要在颁奖画面之上：老师颁奖时想切回前面某一幕重讲，不能被挡住 */
#top{position:absolute;left:0;right:0;top:56px;height:96px;display:flex;align-items:center;justify-content:center;z-index:60}
.top-btn{position:absolute;left:28px;display:flex;align-items:center;gap:8px;font-size:28px;font-weight:700;background:#fff;padding:10px 24px;border-radius:40px;box-shadow:0 4px 0 #0002}
.top-btn img{width:38px;height:38px;object-fit:contain}
.top-btn.top-right{left:auto;right:28px}
#acts{display:flex;gap:10px}
.act{font-size:26px;font-weight:700;padding:10px 22px;border-radius:30px;background:#ffffffcc;color:#8A93A6;border:3px solid transparent}
.act.done{color:var(--green)}
.act.on{background:#fff;color:var(--deep);border-color:var(--orange)}
#view{position:absolute;left:0;right:0;top:156px;bottom:110px;z-index:2}

/* 首页 */
.home{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}
.home-title{font-size:76px;color:var(--deep);letter-spacing:4px}
.home-sub{font-size:30px;color:var(--soft);margin-bottom:24px}
/* 6 个单元排成 3 列 2 行，一体机 1920×1080 一屏放下不滚动 */
.ep-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px 26px;max-width:1680px;margin:0 auto;width:100%}
.ep-card{width:auto;display:flex;flex-direction:column;gap:4px;background:#fff;border-radius:24px;padding:12px 12px 16px;text-align:left;box-shadow:0 6px 20px #1F4E7918;border:4px solid transparent;transition:transform .2s}
.ep-card[data-i]:hover{transform:translateY(-6px);border-color:var(--orange)}
/* 缩略图不裁剪：封面是 3:2 的整幅画面（人物、道具都排满），
   用 cover 会把两边的头和道具切掉，老师反馈"很难受"。
   改成 contain，高度取 260px：既让画面基本撑满，又能保证 6 张卡一屏放下不滚动。 */
.ep-card .thumb{display:block;border-radius:18px;overflow:hidden;background:#EAF2F8;border:1px solid var(--paperline)}
.ep-card .thumb img{width:100%;height:240px;object-fit:contain;display:block}
/* 单元名里有两个空格（Unit 1  Making friends），HTML 会折叠成一个，用 pre-wrap 保住 */
.ep-card b{font-size:28px;color:var(--deep);padding:2px 10px 0;white-space:pre-wrap}
.ep-card em{font-style:normal;font-size:22px;color:var(--soft);padding:0 10px}
.ep-card .go{align-self:flex-start;margin:4px 0 0 10px;font-size:24px;font-weight:800;color:#fff;background:var(--orange);padding:6px 24px;border-radius:30px;box-shadow:0 5px 0 #C77A14}
.ep-card.soon{width:640px;justify-content:center;align-items:center;background:#ffffff99;border:4px dashed #C9D6E3;box-shadow:none;gap:6px}
.ep-card.soon b,.ep-card.soon em{color:#9AA7B6;text-align:center}
.ep-card.soon .soon-more{font-size:24px;color:#A9B6C4;text-align:center;padding:0 40px;line-height:1.5}

/* 场景：左"绘本插图"、右"剧本对白"，两页顶底对齐，像翻开的一本书 */
.scene{height:100%;display:flex;gap:28px;padding:12px 40px 0}

/* 插图页：框与图同为 3:2，contain 之后四个角都不会被裁 */
.pic{flex:0 0 1200px;width:1200px;height:800px;border-radius:30px;overflow:hidden;background:#EAF2F8;border:1px solid var(--paperline);box-shadow:0 4px 14px #1F4E7910}
.pic img{width:100%;height:100%;object-fit:contain;display:block;animation:fade .5s}
@keyframes fade{from{opacity:0;transform:scale(1.03)}to{opacity:1;transform:none}}

/* 剧本页：一整张纸，从上到下分角色牌 / 对话气泡 / 操作区 */
.script{flex:0 0 612px;width:612px;height:800px;display:flex;flex-direction:column;overflow:hidden;border-radius:30px;
  background:var(--paper);border:1px solid var(--paperline);box-shadow:0 4px 14px #1F4E7910;
  background-image:repeating-linear-gradient(45deg,rgba(160,130,90,.03) 0 1px,transparent 1px 4px)}
.script>*{animation:castin .3s}
@keyframes castin{from{opacity:0}to{opacity:1}}

/* 顶部：角色牌（角色色环 + 名字 + 幕名进度） */
.castbar{flex:0 0 auto;display:flex;align-items:center;gap:18px;padding:18px 28px 4px}
.castbar .cface{flex:0 0 136px;width:136px;height:136px;border-radius:50%;overflow:hidden;background:#FFF1DC;border:6px solid var(--c)}
.castbar .cface img{width:100%;height:100%;object-fit:cover;display:block}
.castbar .cname{font-size:34px;font-weight:800;color:var(--c);line-height:1.1}
.castbar .csub{font-size:22px;color:var(--soft);margin-top:8px;font-style:normal;display:block}

/* 中部：对话气泡 */
.bubblewrap{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:14px 18px}
.bubblewrap .prev{font-size:26px;color:var(--deep);opacity:.45;line-height:1.25}
.bubble{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:14px;
  padding:24px 20px;border-radius:28px;background:rgba(var(--crgb),.12);border:3px solid rgba(var(--crgb),.4)}
/* 指向头像的小尾巴（头像中心在剧本页 96px 处，气泡左边缘在 18px 处） */
.bubble::before{content:'';position:absolute;left:78px;top:-15px;border:15px solid transparent;border-top:0;border-bottom-color:rgba(var(--crgb),.4)}
.bubble::after{content:'';position:absolute;left:81px;top:-10px;border:12px solid transparent;border-top:0;border-bottom-color:rgba(var(--crgb),.12)}
.bubble .en{font-size:40px;font-weight:800;color:var(--deep);line-height:1.3}
.bubble .sep{border-top:2px dashed rgba(var(--crgb),.45)}
.bubble .zh{font-size:26px;color:var(--soft);line-height:1.35}
.bubble .replay{align-self:flex-end;display:flex;align-items:center;gap:10px;height:56px;padding:0 22px 0 12px;
  border-radius:28px;background:#fff;border:3px solid var(--c);font-size:24px;font-weight:700;color:var(--c)}
.bubble .replay img{width:36px;height:36px;object-fit:contain}
/* chant：全班齐念课本歌谣，字号不小于 48px（后排也要看得清） */
.chant-box{background:#FFFBF4;border:3px solid #E6DCCB;border-radius:20px;padding:12px 18px;margin:6px 0}
.chant-box p{margin:3px 0;font-size:48px;line-height:1.18;color:var(--deep);font-weight:700}
/* chorus 里主人公说完、先说话的角色再接的那一句 */
.creply{margin:6px 0 0;font-size:25px;line-height:1.25;color:#B4600C;font-weight:700}
/* 第 4、5 幕操作区内容最多：气泡让位、字号降一档，保证一页放得下、不出滚动条 */
.script.dense .bubble{justify-content:flex-start;padding:18px 20px;gap:10px}
.script.dense .bubble .en{font-size:34px}
.script.dense .bubble .zh{font-size:22px}
.script.dense .bubble .replay{height:44px;font-size:21px;padding:0 16px 0 9px}
.script.dense .bubble .replay img{width:30px;height:30px}
/* dense 下出题区和齐说卡片也降一档，保证底部操作区不顶出画面（U6 第 2 幕 7 步时暴露过） */
.script.dense .ops{gap:8px;padding:0 22px 16px}
.script.dense .ask{font-size:24px}
.script.dense .opts{gap:8px}
.script.dense .opt{font-size:28px;min-height:62px}
.script.dense .opt i{flex:0 0 40px;height:40px;font-size:22px}
.script.dense .chorus-card{padding:10px 14px;gap:12px}
.script.dense .chorus-card .ctitle{font-size:21px}
.script.dense .chorus-card .cen{font-size:28px}
.script.dense .chorus-card .czh{font-size:20px}
.script.dense .chorus-card .cface-sm{flex:0 0 68px;width:68px;height:68px}
.script.dense .creply{font-size:21px}
/* 齐念页：图缩窄、歌谣区加宽。48px 的长行放在 612px 里会折成两行，
   一折就压到人物条和"再念一遍"按钮上（U6 六行歌谣实测超出 58px） */
.scene.chantmode .pic{flex:0 0 760px;width:760px}
.scene.chantmode .script{flex:0 0 1052px;width:1052px}
.chantpage .chantwrap{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:center;padding:6px 20px}
.chantpage .chantwrap p{margin:2px 0;font-size:48px;line-height:1.16;font-weight:800;color:var(--deep);text-align:center;white-space:nowrap}
.chantpage .chantwrap.long p{margin:1px 0;line-height:1.06}

/* 底部：操作区，贴底；每一幕自己的操作都放这里 */
.ops{flex:0 0 auto;display:flex;flex-direction:column;gap:10px;padding:0 28px 20px}
.tiprow{display:flex;align-items:flex-start;gap:10px}
.tiprow b{flex:0 0 auto;font-size:20px;font-weight:800;color:#7A5200;background:#FFF3C4;padding:5px 12px;border-radius:10px}
.tiprow span{font-size:22px;color:#7A5200;line-height:1.35;padding-top:4px}

.ask{font-size:28px;font-weight:800;color:#4A4A5A;line-height:1.3}
.opts{display:grid;gap:10px;grid-auto-rows:1fr}
.opt{display:flex;align-items:center;gap:16px;font-size:34px;font-weight:800;color:var(--deep);background:#fff;
  border:3px solid #CFE3F4;border-radius:20px;padding:8px 18px;text-align:left;transition:transform .15s}
.opt:hover{transform:translateX(6px);border-color:var(--sky)}
.opt i{font-style:normal;flex:0 0 46px;height:46px;border-radius:50%;background:var(--sky);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:26px}
.good{display:flex;align-items:center;gap:12px;font-size:38px;font-weight:800;color:var(--green)}
.good img{width:72px;height:72px;object-fit:contain;animation:spin .8s}
@keyframes spin{from{transform:scale(.2) rotate(-90deg)}to{transform:none}}

/* 齐说卡片：沿用气泡风格，橙色虚线；全班说完改绿色实线 */
.chorus-card{display:flex;align-items:center;gap:16px;padding:14px 18px;border-radius:24px;
  background:var(--paper);border:3px dashed var(--orange)}
.chorus-card.said{border-style:solid;border-color:var(--green)}
.chorus-card .cface-sm{flex:0 0 84px;width:84px;height:84px;border-radius:50%;overflow:hidden;background:#FFF1DC;border:4px solid #FFE0B3}
.chorus-card .cface-sm img{width:100%;height:100%;object-fit:cover;display:block}
.chorus-card .ctitle{font-size:24px;font-weight:800;color:var(--red)}
.chorus-card.said .ctitle{color:var(--green)}
.chorus-card .cen{font-size:34px;font-weight:800;color:var(--deep);line-height:1.25;margin-top:4px}
.chorus-card .czh{font-size:24px;color:var(--soft);margin-top:2px}
.chorus-card:not(.said) .cen{animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.45}}

.big-btn{display:flex;align-items:center;justify-content:center;gap:10px;font-size:28px;font-weight:800;color:#fff;
  background:var(--orange);padding:10px 28px;border-radius:40px;box-shadow:0 5px 0 #C77A14}
.big-btn img{width:36px;height:36px;object-fit:contain}

/* 朋友墙 + 话筒 */
.wall{background:#FFF8EC;border:2px solid #FFE0B3;border-radius:20px;padding:10px 14px}
.wall b{font-size:22px;color:var(--deep)}
.names{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;max-height:104px;overflow:auto}
.tag{font-size:22px;font-weight:700;background:#FFF1DC;color:#B4600C;padding:3px 12px;border-radius:14px;
  animation:pop .4s;display:inline-flex;align-items:center;gap:6px;line-height:1.15}
.tag .ni{width:22px;height:22px;object-fit:contain;flex:0 0 auto}
.tag .tn{font-size:15px;font-weight:600;opacity:.92}
/* U2：浅色木相框 + 小房子 */
.tag.frame{background:#FFF6E8;color:#7A5230;border:3px solid #D9B98A;border-radius:10px;padding:4px 12px}
/* U3：浅色小木牌 + 爪印 */
.tag.plank{background:#F2E3C4;color:#6B4A22;border-radius:6px;padding:4px 14px;box-shadow:0 3px 0 #CDAB7B}
/* U4 水果卡 / U5 色卡：圆形，颜色跟着内容走 */
.tag.fruit,.tag.swatch{background:var(--c,#4CAF6A);color:#fff;border-radius:50%;min-width:80px;height:80px;
  flex-direction:column;justify-content:center;text-align:center;font-size:19px;padding:6px;word-break:break-word}
.tag.fruit .ni,.tag.swatch .ni{display:none}
.tag.swatch.white{color:#3A4250;box-shadow:inset 0 0 0 3px #C9D2DC}
/* U6：小礼物盒 + 大号数字 */
.tag.gift{background:var(--c,#E8574A);color:#fff;border-radius:10px;padding:5px 16px;flex-direction:column;
  gap:0;box-shadow:0 3px 0 #0002}
.tag.gift .tn{font-size:15px}
.tag.gift .big{font-size:34px;font-weight:800;line-height:1.05}
.empty{font-size:22px;color:#9AA7B6}
.mic-row{display:flex;align-items:center;gap:14px}
.mic{display:flex;align-items:center;gap:12px;font-size:28px;font-weight:800;color:#fff;background:var(--orange);
  padding:8px 26px 8px 8px;border-radius:48px;box-shadow:0 5px 0 #C77A14}
.mic img{width:58px;height:58px;border-radius:50%;object-fit:cover}
.mic.rec{background:var(--red);box-shadow:0 5px 0 #A8352B;animation:pulse 1s infinite}
@keyframes pulse{50%{transform:scale(1.04)}}
.type-btn{font-size:24px;color:var(--soft);text-decoration:underline}
.type-box{display:flex;gap:10px}
.type-box input{flex:1;font-size:26px;padding:8px 14px;border:3px solid #CFE3F4;border-radius:14px}
.type-box button{font-size:26px;font-weight:700;color:#fff;background:var(--sky);padding:8px 22px;border-radius:14px;box-shadow:0 4px 0 #2F7DBA}
.heard{font-size:22px;color:var(--soft)}

.sum{display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:#EAF7EE;border-radius:18px;padding:10px 14px}
.sum b{width:100%;font-size:22px;color:var(--green)}
.sum span{font-size:22px;font-weight:700;color:var(--deep);background:#fff;padding:2px 10px;border-radius:12px}

/* 翻页 */
#pager{position:absolute;left:0;right:0;bottom:22px;height:76px;display:flex;align-items:center;justify-content:center;gap:40px;z-index:60}
.pg-btn{font-size:32px;font-weight:800;padding:12px 46px;border-radius:40px;background:#fff;color:var(--deep);box-shadow:0 5px 0 #0002}
.pg-btn.main{background:var(--sky);color:#fff;box-shadow:0 5px 0 #2F7DBA}
/* 最后一页的按钮是"退出"，用暖橙区分于"下一步" */
.pg-btn.exit{background:#F59E2E;color:#fff;box-shadow:0 5px 0 #C77A14}
#pgInfo{font-size:26px;color:var(--soft);min-width:200px;text-align:center}

/* 教师面板 */
#teacherPanel{position:absolute;inset:0;z-index:20;background:#0006;display:flex;align-items:center;justify-content:center}
.tp{width:1500px;max-height:900px;overflow:auto;background:#fff;border-radius:28px;padding:36px 44px}
.tp h2{font-size:40px;color:var(--deep)}
.tp h3{font-size:28px;margin:22px 0 10px}
.sw{font-size:26px;display:flex;align-items:center;gap:10px;margin-top:14px}
.sw input{width:28px;height:28px}
.tp table{width:100%;border-collapse:collapse;font-size:22px}
.tp th,.tp td{border:1px solid var(--line);padding:8px 10px;text-align:left}
.tp th{background:#EAF4FD}
.tp td.nm{max-width:420px}
.tp-btns{display:flex;gap:16px;justify-content:flex-end;margin-top:22px}
.tp-btns button{font-size:26px;font-weight:700;padding:10px 28px;border-radius:24px;background:#EEF1F5}
.tp-btns .main{background:var(--sky);color:#fff;box-shadow:0 5px 0 #2F7DBA}
#toast{position:absolute;left:50%;top:120px;transform:translateX(-50%);z-index:30;font-size:28px;background:#2D2D3Aee;color:#fff;padding:14px 30px;border-radius:30px}

/* ---------- 小组积分（第 4 版新增） ---------- */
/* 顶部积分条：7 格，每格一个圆形色块 + 星星图标 + 星数 */
#scorebar{position:absolute;left:0;top:0;width:100%;height:56px;display:flex;align-items:center;
  background:#FFFBF4;border-bottom:1px solid #EFE3CF;padding:0 16px;gap:8px;z-index:30}
#scorebar .gcell{flex:1;height:46px;display:flex;align-items:center;justify-content:center;gap:10px;
  border-radius:10px;transition:transform .18s,box-shadow .18s,background .18s}
#scorebar .gcell.bump{transform:scale(1.1)}
#scorebar .gd{width:36px;height:36px;border-radius:50%;background:var(--c);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;flex:0 0 auto}
#scorebar .gcell img{width:28px;height:28px;flex:0 0 auto}
#scorebar .gcell b{font-size:26px;color:#2F3A48;min-width:26px;text-align:left;line-height:1}
/* 目前领先的组：金色描边（并列的都会加上） */
#scorebar .gcell.lead{background:#FFF7E6;box-shadow:inset 0 0 0 3px #F2C14E}

/* 加分时从屏幕下方弹出的一排小组按钮；8 秒不点自动收起 */
#askgroup{position:absolute;left:50%;bottom:110px;transform:translateX(-50%);z-index:40;
  background:#FFFBF4;border:2px solid #F0E0C8;border-radius:18px;padding:12px 20px;
  box-shadow:0 10px 26px rgba(0,0,0,.16);display:flex;align-items:center;gap:12px;white-space:nowrap}
#askgroup b{font-size:23px;color:#1F4E79;margin-right:8px}
#askgroup .gbtn{width:58px;height:58px;border-radius:50%;border:none;color:#fff;background:var(--c);
  font-size:25px;font-weight:700;cursor:pointer;box-shadow:0 3px 0 rgba(0,0,0,.18);transition:transform .12s}
#askgroup .gbtn:hover{transform:translateY(-3px)}
#askgroup .gbtn:active{transform:translateY(1px)}
#askgroup .skip{width:auto;height:58px;border-radius:30px;padding:0 22px;font-size:21px;font-weight:600;
  background:#EDE7DC;color:#5A6472;border:none;cursor:pointer}

/* 加分动画：大星星从屏幕中央飞到组格子里 */
#flystar{position:absolute;z-index:60;pointer-events:none;
  transition:transform .8s cubic-bezier(.4,.1,.3,1),opacity .8s}
#flystar img{width:100px;height:100px;filter:drop-shadow(0 5px 12px rgba(0,0,0,.28))}

/* ---------- 第 5 幕颁奖画面（第 5 版重新排版） ---------- */
/* 底部留出翻页条 + 24px 间隔，否则"下一步"被盖住老师就走不下去 */
#award{position:absolute;left:0;right:0;top:0;bottom:122px;z-index:50;overflow:hidden;background:#FFFBF4}
#award .abg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* 奶油白蒙层：花哨的背景退到后面，文字才压得住 */
#award .veil{position:absolute;inset:0;background:#FFF8EE;opacity:.35}
#award .awrap{position:absolute;inset:0}
/* 标题区：白色描边式阴影，压在背景上也清楚 */
#award h2{position:absolute;left:0;right:0;top:7%;margin:0;text-align:center;
  font-size:72px;font-weight:800;color:#1F4E79;letter-spacing:2px;line-height:1.1;
  text-shadow:4px 0 0 #fff,-4px 0 0 #fff,0 4px 0 #fff,0 -4px 0 #fff,
              3px 3px 0 #fff,-3px -3px 0 #fff,3px -3px 0 #fff,-3px 3px 0 #fff,
              0 8px 18px rgba(0,0,0,.16)}
#award .sub{position:absolute;left:0;right:0;top:calc(7% + 92px);text-align:center;
  font-size:28px;color:#6B6B7B;margin:0}
/* 冠军区：站在领奖台正上方，和台子上的金星对齐；组名单独一行且不折行 */
#award .champs{position:absolute;left:0;right:0;top:30%;display:flex;justify-content:center;align-items:flex-end;gap:44px}
#award .cbox{display:flex;flex-direction:column;align-items:center;gap:14px}
#award .disc{position:relative;border-radius:50%;background:var(--c);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:800;line-height:1;
  box-shadow:0 0 0 8px #F2C14E,0 12px 30px rgba(0,0,0,.24)}
#award .champs.big .disc{width:200px;height:200px;font-size:120px}
#award .champs.mid .disc{width:160px;height:160px;font-size:96px}
#award .champs.small .disc{width:120px;height:120px;font-size:72px}
#award .disc .rays{position:absolute;inset:-46px;border-radius:50%;z-index:-1;
  background:conic-gradient(from 0deg,rgba(255,233,168,.95) 0 10deg,transparent 10deg 24deg);
  animation:spin 9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#award .cbox b{font-size:40px;color:#1F4E79;white-space:nowrap;line-height:1}
/* 全 0 星：7 个小色块手拉手站台上 */
#award .champs.zero{gap:16px}
#award .champs.zero .disc{width:90px;height:90px;font-size:52px;
  box-shadow:0 0 0 4px #fff,0 8px 18px rgba(0,0,0,.2)}
/* 星数柱状图：放进白色圆角面板，不再直接压在背景上 */
#award .panel{position:absolute;left:10%;right:26%;bottom:10px;height:260px;
  background:rgba(255,255,255,.9);border-radius:24px;box-shadow:0 10px 28px rgba(0,0,0,.14);
  display:flex;align-items:flex-end;justify-content:space-around;padding:0 30px 16px}
#award .bar{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  width:86px;height:100%}
#award .bar .num{display:flex;align-items:center;gap:6px;font-size:36px;font-weight:800;
  color:#2F3A48;margin-bottom:6px;line-height:1}
#award .bar .num img{width:30px;height:30px}
/* 最低也有 16px：0 星也看得见是哪个组 */
#award .bar i{width:70px;background:var(--c);border-radius:8px 8px 0 0;height:16px;
  transition:height .55s ease-out}
#award .bar.gold i{box-shadow:0 0 0 4px #F2C14E}
#award .bar.bump i{filter:brightness(1.12)}
/* 柱子下面只写数字，不写 Group，避免折行 */
#award .bar .bid{width:56px;height:56px;margin-top:10px;border-radius:50%;background:var(--c);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;line-height:1}
/* Zoom：放大到 260px，底边与面板齐平，水平方向不压面板 */
#award .azoom{position:absolute;right:40px;bottom:10px;width:400px;
  display:flex;flex-direction:column;align-items:flex-end;gap:14px}
#award .azoom .say{position:relative;background:#fff;border-radius:20px;padding:16px 26px;
  font-size:36px;color:#1F4E79;box-shadow:0 6px 18px rgba(0,0,0,.16);white-space:nowrap;line-height:1.2}
#award .azoom .say::after{content:'';position:absolute;right:70px;bottom:-13px;border:14px solid transparent;
  border-top-color:#fff;border-bottom:0}
#award .azoom img{width:260px;height:260px;border-radius:50%;border:6px solid #fff;object-fit:cover;
  box-shadow:0 8px 22px rgba(0,0,0,.22);background:#FFF1DC}

/* 班级小书：只在打印时显示，A4 横向每页一幕 */
#printBook{display:none}
@media print{
  @page{size:A4 landscape;margin:12mm}
  /* 背景图与便利贴底色必须显式声明，否则浏览器默认把背景色省掉不打印 */
  body{overflow:visible;background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #stage{display:none}
  #printBook{display:block}
  .bk{page-break-after:always;height:180mm;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6mm;font-family:"Microsoft YaHei",sans-serif}
  .bk img{max-height:130mm;max-width:100%;border-radius:6mm}
  .bk p{font-size:20pt;color:#1F4E79}
  .bk h1{font-size:34pt;color:#1F4E79}
  .bk h2{font-size:24pt;color:#555}

  /* 小书：今日之星页（朋友墙之前的一页） */
  .bk.starpage{justify-content:flex-start;gap:0;padding:0}
  .star-head{height:28mm;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1mm}
  .star-head h1{font-size:36pt;font-weight:800;color:#1F4E79;margin:0;line-height:1.1}
  .star-head h2{font-size:20pt;font-weight:400;color:#6B6B7B;margin:0}
  .star-body{position:relative;flex:1;width:100%;overflow:hidden}
  .star-body .sbg{position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:cover;opacity:.3;border-radius:0}
  .star-inner{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7mm}
  .star-champ{display:flex;align-items:center;gap:10mm}
  .star-champ .disc{width:54mm;height:54mm;border-radius:50%;background:var(--c);color:#fff;
    display:flex;align-items:center;justify-content:center;font-size:30pt;font-weight:800;
    box-shadow:0 0 0 2mm #F2C14E}
  .star-champ .say{font-size:24pt;font-weight:700;color:#1F4E79}
  .star-bars{display:flex;align-items:flex-end;gap:5mm;height:54mm}
  .star-bars .b{width:14mm;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:1mm}
  .star-bars .b i{width:100%;background:var(--c);border-radius:2mm 2mm 0 0}
  .star-bars .b.gold i{background:#F2C14E}
  .star-bars .b b{font-size:11pt;color:#2F3A48}
  .star-bars .b span{font-size:11pt;font-weight:700;color:#1F4E79}
  .star-allgood{font-size:32pt;font-weight:700;color:#1F4E79}

  /* 末页：Zoom 的朋友墙 */
  .bk.wallpage{justify-content:flex-start;gap:0;padding:0}
  .wall-head{height:28mm;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1mm}
  .wall-head h1{font-size:36pt;font-weight:800;color:#1F4E79;margin:0;line-height:1.1}
  .wall-head h2{font-size:20pt;font-weight:400;color:#6B6B7B;margin:0}
  .wall-board{position:relative;flex:1;width:100%;overflow:hidden;border-radius:6mm}
  .wall-board .wall-bg{position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:cover;border-radius:6mm}
  /* 便利贴区域右侧给 Zoom 让位：气泡最宽 45mm + 右边距，整条右侧留出 52mm 就不会互相压住 */
  .stickies{position:absolute;left:0;top:0;right:52mm;bottom:0;display:flex;flex-wrap:wrap;gap:4mm;
    justify-content:center;align-content:center;padding:4mm}
  .note{flex:0 0 calc((100% - (var(--per) - 1) * 4mm) / var(--per));max-width:54mm;min-height:var(--h);
    background:var(--c);border-radius:2mm;transform:rotate(var(--t));box-shadow:0 1.5mm 2mm rgba(0,0,0,.18);
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1mm;
    padding:3.5mm 2mm 2mm;position:relative;text-align:center}
  .note .pin{position:absolute;top:1.6mm;left:50%;transform:translateX(-50%);width:5mm;height:5mm;
    border-radius:50%;background:#E8574A;
    box-shadow:inset -0.9mm -0.9mm 1mm rgba(0,0,0,.28), inset 0.7mm 0.7mm 1mm rgba(255,255,255,.6)}
  .note-name{font-size:var(--name);font-weight:700;color:#1F4E79;line-height:1.15;word-break:break-word}
  .note-line{font-size:var(--line);color:#6B6B7B;font-style:italic;line-height:1.2}
  .wall-zoom{position:absolute;right:4mm;bottom:4mm;width:45mm;display:flex;flex-direction:column;align-items:center;gap:2mm}
  .wall-zoom img{width:45mm;height:45mm;max-height:none;border-radius:50%;border:2mm solid #fff;
    object-fit:cover;box-shadow:0 1mm 3mm rgba(0,0,0,.22);background:#FFF1DC}
  .wall-zoom span{background:#fff;border-radius:3mm;padding:1.5mm 3mm;font-size:14pt;color:#1F4E79;
    box-shadow:0 1mm 2mm rgba(0,0,0,.15);max-width:45mm;text-align:center;white-space:normal;line-height:1.2}
  .wall-foot{height:18mm;width:100%;background:#FFFBF4;border-top:1px solid #EFE3CF;
    display:flex;align-items:center;justify-content:space-between;padding:0 5mm;font-size:11pt;color:#1F4E79}
}
