/* 每日签到弹窗＋Bana 发霉（2026-10-19）。学生首页（live-classroom.html）与 Bana Care（index.html）共用。 */
.mold-note{margin:6px 0 0;font:600 14px/1.45 "Noto Sans SC",sans-serif;color:#6d5532}
.mold-note.s1,.mold-note.s2{color:#8a5a12}
.mold-note.s3,.mold-note.s4{color:#9a3b12}
.mold-note.s5,.mold-note.s6{color:#a1220f}
.mold-note.fresh-plus{color:#23805a}
.mold-note.care{margin:16px 0 0;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.62);border:1px solid rgba(160,110,40,.18);max-width:520px}
.mold-note.care.s1,.mold-note.care.s2,.mold-note.care.s3{background:#fff4dc;border-color:#f0c56c}
.mold-note.care.s4,.mold-note.care.s5,.mold-note.care.s6{background:#ffe6dc;border-color:#f19c7c}
.mold-note.care small{display:block;margin-top:4px;font-weight:500;font-size:12.5px;color:#7a6346}
.mold-extras .stink{position:absolute;width:16%;height:22%;border-left:5px solid rgba(92,138,38,.8);border-radius:50%;filter:blur(.5px);opacity:0;animation:moldStink 2.8s ease-in-out infinite}
.mold-extras .stink.s1{left:22%;top:2%}.mold-extras .stink.s2{left:46%;top:-6%;animation-delay:.9s}.mold-extras .stink.s3{left:68%;top:4%;animation-delay:1.8s}
@keyframes moldStink{0%{opacity:0;transform:translateY(18px) scaleX(1)}40%{opacity:.9}100%{opacity:0;transform:translateY(-26px) scaleX(-1)}}
.mold-extras .fly{position:absolute;font-size:22px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))}
.mold-extras .fly.f1{left:18%;top:20%;animation:moldFly1 3.1s linear infinite}
.mold-extras .fly.f2{left:70%;top:34%;animation:moldFly2 2.6s linear infinite}
.mold-extras .fly.f3{left:46%;top:8%;animation:moldFly3 3.7s linear infinite}
@keyframes moldFly1{0%{transform:translate(0,0)}25%{transform:translate(40px,-22px) rotate(20deg)}50%{transform:translate(70px,10px)}75%{transform:translate(24px,30px) rotate(-15deg)}100%{transform:translate(0,0)}}
@keyframes moldFly2{0%{transform:translate(0,0) scaleX(-1)}30%{transform:translate(-36px,-30px) scaleX(-1)}60%{transform:translate(-60px,12px) scaleX(-1)}100%{transform:translate(0,0) scaleX(-1)}}
@keyframes moldFly3{0%{transform:translate(0,0)}33%{transform:translate(-30px,26px)}66%{transform:translate(34px,40px) rotate(25deg)}100%{transform:translate(0,0)}}

/* 签到弹窗 */
.checkin-overlay{position:fixed;inset:0;z-index:9000;display:grid;place-items:center;padding:16px;background:rgba(48,32,12,.48);backdrop-filter:blur(3px);animation:checkinFade .2s ease-out}
@keyframes checkinFade{from{opacity:0}}
.checkin-card{position:relative;box-sizing:border-box;width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;background:#fffaf0;border-radius:26px;padding:26px 26px 22px;box-shadow:0 30px 70px rgba(60,36,8,.35);animation:checkinPop .32s cubic-bezier(.2,1.4,.4,1)}
@keyframes checkinPop{from{transform:scale(.86);opacity:0}}
.checkin-head{display:flex;gap:14px;align-items:center}
.checkin-head img{width:84px;height:84px;object-fit:contain;flex:none;animation:checkinBob 2.2s ease-in-out infinite}
@keyframes checkinBob{50%{transform:translateY(-5px) rotate(-3deg)}}
.checkin-head h2{margin:2px 0;font:700 26px Fraunces,"Noto Sans SC",serif}
.checkin-head p{margin:0;color:#7a6346}
.checkin-q{margin:18px 0 12px;padding:18px;border-radius:18px;background:#fff1c7;text-align:center}
.checkin-prompt{font:700 24px/1.35 "Noto Sans SC",sans-serif;color:#3b2414;word-break:break-word}
.checkin-hint{margin-top:8px;font:500 17px "DM Mono",monospace;color:#8a6a3e;letter-spacing:.06em}
.checkin-input{width:100%;box-sizing:border-box;padding:14px 16px;border-radius:14px;border:2px solid #e8c77d;font:600 20px "Noto Sans SC",sans-serif;background:#fff;outline:none}
.checkin-input:focus{border-color:#f1ad28;box-shadow:0 0 0 4px rgba(241,173,40,.18)}
.checkin-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.checkin-option{display:flex;gap:10px;align-items:center;text-align:left;padding:12px 14px;border-radius:14px;border:2px solid #ecd7a6;background:#fff;font:600 16px "Noto Sans SC",sans-serif;color:#3b2414;cursor:pointer;word-break:break-word}
.checkin-option span{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#f6e7c4;font:700 14px "DM Mono",monospace}
.checkin-option.picked{border-color:#f1ad28;background:#fff4d6}
.checkin-option.right{border-color:#3aa36b;background:#e6f7ec}
.checkin-option.wrong{border-color:#e0674b;background:#fde9e4}
.checkin-option:disabled{cursor:default}
.checkin-tip,.checkin-free{margin:8px 0 0;color:#7a6346;font-size:14px;text-align:center}
.checkin-msg{min-height:6px;margin-top:10px;font-weight:600}
.checkin-msg.bad{color:#b2401f}
.checkin-right{padding:12px 14px;border-radius:14px;background:#e6f7ec;border:2px solid #3aa36b;color:#1f6b43;text-align:center}
.checkin-right span{display:block;font-size:13px;font-weight:600;opacity:.8}
.checkin-right b{display:block;font-size:22px;margin-top:2px}
.checkin-right small{display:block;margin-top:4px;font-weight:500}
.checkin-actions{display:flex;justify-content:space-between;gap:10px;margin-top:14px}
.checkin-actions .primary{margin-left:auto}
.checkin-later{opacity:.8}
.checkin-retry{display:flex;gap:12px;align-items:flex-end;margin-top:14px;animation:checkinRetry .5s cubic-bezier(.2,1.6,.4,1)}
@keyframes checkinRetry{from{transform:translateY(40px) scale(.7);opacity:0}}
.checkin-retry img{width:96px;height:96px;object-fit:contain;flex:none;animation:checkinBob 1.6s ease-in-out infinite}
.checkin-bubble{position:relative;flex:1;padding:14px 16px;border-radius:18px;background:#fff1c7;border:2px solid #f1c25a}
.checkin-bubble:before{content:"";position:absolute;left:-10px;bottom:22px;border:9px solid transparent;border-right-color:#f1c25a;border-left:0}
.checkin-bubble b{display:block;font:700 22px Fraunces,"Noto Sans SC",serif;color:#3b2414}
.checkin-bubble span{display:block;margin:2px 0 10px;color:#7a6346}
.checkin-done{text-align:center}
.checkin-done img{display:block;margin:0 auto;width:150px;height:150px;object-fit:contain;animation:checkinJump .9s cubic-bezier(.2,1.5,.4,1) both}
@keyframes checkinJump{0%{transform:translateY(30px) scale(.7)}60%{transform:translateY(-14px)}100%{transform:none}}
.checkin-done .eyebrow{display:block;margin-top:6px}.checkin-done h2{margin:6px 0;font:700 32px Fraunces,"Noto Sans SC",serif}
.checkin-coins{display:inline-block;margin:6px 0 4px;padding:8px 18px;border-radius:999px;background:#ffe08a;color:#6a4304;font:800 22px "Noto Sans SC",sans-serif;animation:checkinPop .5s .2s both cubic-bezier(.2,1.6,.4,1)}
.checkin-done p{color:#7a6346}
.checkin-warn{color:#a1220f!important;font-weight:600}
@media (max-width:560px){.checkin-options{grid-template-columns:1fr}.checkin-card{padding:20px 16px}.checkin-prompt{font-size:21px}}

/* Bana Care 小店的新商品 */
.shop-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:#eef1ec;color:#6b7a6e;font-size:11px;font-weight:600;vertical-align:2px}
.buy-btn.confirming{background:#e0674b!important;color:#fff!important}
.mold-fix-icon{display:block;width:120px;height:120px;object-fit:contain;margin:6px auto 0;animation:checkinJump .8s both}

/* ═════ 学生首页右上角的签到按钮（2026-10-19） ═════ */
.checkin-bar{display:flex;justify-content:flex-end;margin:18px 0 -8px}
.checkin-btn{position:relative;display:flex;align-items:center;gap:12px;padding:8px 18px 8px 8px;border:0;border-radius:20px;cursor:pointer;font-family:"Noto Sans SC",sans-serif;text-align:left;transition:transform .15s ease,box-shadow .15s ease}
.checkin-btn.pending{background:linear-gradient(135deg,#ffb238,#ff7a59);color:#fff;box-shadow:0 10px 24px rgba(255,122,89,.35);animation:checkinBtnPulse 2.2s ease-in-out infinite}
.checkin-btn.done{background:linear-gradient(135deg,#fffaf0,#fff1c7);color:#3b2414;box-shadow:0 8px 18px rgba(120,80,20,.14);border:1.5px solid #f0d28c}
.checkin-btn:hover{transform:translateY(-2px)}
@keyframes checkinBtnPulse{50%{box-shadow:0 10px 30px rgba(255,122,89,.6);transform:translateY(-1px) scale(1.02)}}
.cal-tile{position:relative;display:grid;grid-template-rows:auto 1fr;width:50px;height:54px;border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 3px 8px rgba(0,0,0,.14);text-align:center;color:#3b2414;flex:none}
.cal-tile i{font:700 10px/16px "Noto Sans SC",sans-serif;font-style:normal;background:#e8533b;color:#fff}
.cal-tile b{font:800 24px/36px "DM Mono",monospace}
.cal-tile em{position:absolute;right:-1px;bottom:-1px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#2fa364;color:#fff;font:800 12px sans-serif;font-style:normal;border:2px solid #fff}
.checkin-btn-txt b{display:block;font-size:17px;font-weight:800}
.checkin-btn-txt small{display:block;font-size:12.5px;opacity:.9;margin-top:1px}
.checkin-dot{position:absolute;top:-4px;right:-4px;width:14px;height:14px;border-radius:50%;background:#e8253b;border:2.5px solid #fff;animation:checkinDot 1.2s ease-in-out infinite}
@keyframes checkinDot{50%{transform:scale(1.25)}}
.checkin-history-link{border:0;background:none;color:#8a6a3e;font:600 14px "Noto Sans SC",sans-serif;cursor:pointer;padding:8px 6px;text-decoration:underline;text-underline-offset:3px}
.checkin-actions.center{justify-content:center}
.checkin-actions.center .primary{margin-left:0}
@media (max-width:760px){.checkin-bar{margin:12px 0 -6px}.checkin-btn{padding:6px 14px 6px 6px}.cal-tile{width:44px;height:48px}.cal-tile b{font-size:20px;line-height:32px}}

/* 签到成功：日期卡＋盖章 */
.date-stamp-stage{position:relative;height:180px;margin:4px auto 2px;width:300px}
.date-card{position:absolute;left:50%;top:6px;width:140px;height:156px;margin-left:-90px;border-radius:20px;overflow:hidden;background:#fff;box-shadow:0 16px 30px rgba(90,50,10,.22);display:grid;grid-template-rows:34px 1fr 26px;text-align:center;animation:dateDrop .55s cubic-bezier(.2,1.5,.4,1) both}
.date-card i{font:800 16px/34px "Noto Sans SC",sans-serif;font-style:normal;background:#e8533b;color:#fff}
.date-card b{font:800 60px/1 "DM Mono",monospace;color:#3b2414;align-self:center}
.date-card small{font-size:13px;color:#8a6a3e}
.date-seal{position:absolute;left:50%;top:50%;padding:6px 12px;border:4px solid #2fa364;border-radius:12px;color:#2fa364;font:900 22px "Noto Sans SC",sans-serif;letter-spacing:.08em;white-space:nowrap;background:rgba(255,255,255,.8);transform:translate(-50%,-30%) rotate(-14deg);opacity:0;animation:dateSeal .45s .55s cubic-bezier(.3,1.6,.5,1) both}
@keyframes dateDrop{0%{transform:translateY(-70px) rotate(-8deg);opacity:0}100%{transform:none;opacity:1}}
@keyframes dateSeal{0%{transform:translate(-50%,-30%) rotate(-14deg) scale(2.6);opacity:0}100%{transform:translate(-50%,-30%) rotate(-14deg) scale(1);opacity:1}}
.date-bana{position:absolute;right:6px;bottom:0;width:92px;height:92px;object-fit:contain;animation:dateBana .6s .95s cubic-bezier(.2,1.6,.4,1) both}
@keyframes dateBana{0%{transform:translateY(40px) scale(.4);opacity:0}100%{transform:none;opacity:1}}
.date-spark{position:absolute;color:#f1ad28;font-size:22px;opacity:0;animation:dateSpark 1s 1s ease-out both}
.date-spark.p1{left:22px;top:20px}.date-spark.p2{left:36px;top:120px;animation-delay:1.1s}.date-spark.p3{right:40px;top:10px;animation-delay:1.2s}
@keyframes dateSpark{0%{opacity:0;transform:scale(.3)}40%{opacity:1;transform:scale(1.3)}100%{opacity:0;transform:scale(.8) translateY(-10px)}}

/* 签到月历 */
.cal-card{width:min(520px,calc(100vw - 32px))}
.cal-loading{text-align:center;color:#7a6346;margin:20px 0}
.cal-banner{margin:-4px 0 12px;padding:10px 14px;border-radius:14px;background:#e6f7ec;color:#1f6b43;font-weight:700;text-align:center}
.cal-head{display:flex;justify-content:space-between;align-items:flex-start}
.cal-head h2{margin:2px 0 0;font:700 24px Fraunces,"Noto Sans SC",serif}
.cal-x{border:0;background:#f4e8cc;width:34px;height:34px;border-radius:50%;font-size:22px;line-height:1;cursor:pointer;color:#6d5532}
.cal-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0 10px}
.cal-stats span{padding:10px 6px;border-radius:14px;background:#fff1c7;text-align:center;color:#3b2414;font-size:13px}
.cal-stats b{font:800 24px "DM Mono",monospace}
.cal-stats small{display:block;color:#8a6a3e;font-size:12px}
.cal-pick{margin:0 0 8px;padding:9px 12px;border-radius:12px;background:#fff4dc;border:1px dashed #f1ad28;color:#7a4a08;font-weight:600;font-size:14px}
.cal-month{display:flex;justify-content:space-between;align-items:center;margin:4px 0 6px;font-size:16px;color:#3b2414}
.cal-nav{border:0;background:#f6e7c4;width:32px;height:32px;border-radius:10px;font-size:20px;cursor:pointer;color:#6d5532}
.cal-nav:disabled{opacity:.3;cursor:default}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.cal-week{text-align:center;font-size:12px;color:#a38a63;font-weight:700;padding:2px 0}
.cal-cell{position:relative;aspect-ratio:1/1;min-height:40px;border:0;border-radius:12px;background:#faf3e2;color:#a69378;font:600 14px "DM Mono",monospace;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;cursor:default}
.cal-cell.blank{background:none}
.cal-cell small{font:600 10px "Noto Sans SC",sans-serif;margin-top:1px}
.cal-cell.done{background:#fff1c7;color:#3b2414}
.cal-cell.makeup{background:#e8f1ff;color:#2a4d8a}
.cal-cell.missed{background:#eceae4;color:#8b8578;cursor:pointer;border:1.5px dashed #c9c2b2}
.cal-cell.missed:hover,.cal-cell.picking{background:#fff4dc;border-color:#f1ad28;color:#7a4a08}
.cal-cell.today{background:#fff;color:#e8533b;box-shadow:inset 0 0 0 2px #e8533b}
.cal-cell.is-today b{color:#e8533b}
.cal-stamp{position:absolute;right:3px;bottom:2px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#2fa364;color:#fff;font:800 11px "Noto Sans SC",sans-serif;font-style:normal}
.cal-cell.makeup .cal-stamp{background:#4a7fd8}
.cal-stamp.stamping{animation:calStamp .6s .25s cubic-bezier(.3,1.7,.5,1) both}
@keyframes calStamp{0%{transform:scale(3) rotate(-25deg);opacity:0}100%{transform:none;opacity:1}}
.cal-legend{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin:10px 0 4px;font-size:12px;color:#7a6346}
.cal-legend .lg{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:4px;vertical-align:-1px}
.lg.done{background:#2fa364}.lg.makeup{background:#4a7fd8}.lg.missed{background:#eceae4;border:1px dashed #b9b2a2}
.cal-confirm:not(:empty){margin-top:10px;padding:12px;border-radius:14px;background:#fff4dc;border:1.5px solid #f1c25a;color:#5a3d12;font-size:14px}
.cal-confirm div{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}
.cal-ok{color:#1f6b43;font-weight:700;align-self:center}
.cal-link{text-decoration:none;display:inline-flex;align-items:center}
/* 照顾页（index.html）没有 live-classroom 的 .primary／.secondary，月历自带一份 */
.bana-calendar .primary,.bana-calendar .secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:12px;font:700 15px "Noto Sans SC",sans-serif;cursor:pointer;text-decoration:none}
.bana-calendar .primary{background:#6b3f1d;color:#fff;border:0}
.bana-calendar .secondary{background:#fffaf0;color:#6b3f1d;border:1.5px solid #e6cf9c}
/* 10-29 签到题写明用哪一种语言回答（题库「题目语言」） */
.checkin-lang-say{margin:10px 0 0;padding:8px 12px;border-radius:12px;font-size:14px;text-align:center}.checkin-lang-say.ms{background:#e3efff;color:#1d4f91}.checkin-lang-say.en{background:#ffeedd;color:#9a4a10}
