/* aikc-growth-plan-r1.css —— 学生端「成长计划」（抽盲盒 / 每周任务 / 我的图鉴）
   风格对齐整站 CODE QUEST：奶油底 + 墨色粗描边 + 硬阴影 + 高饱和色块。
   所有选择器带 aikc-gp- 前缀，避免污染站点样式。 */

/* ===== 大厅入口卡（插在上传作业之前） ===== */
.quest-module.module-gold { background: #ffd957; }
.quest-module.module-gold .aikc-gp-entry-icon {
  font-size: 30px; line-height: 1;
}

/* ===== 全屏覆盖层 ===== */
.aikc-gp-root {
  position: fixed; inset: 0; z-index: 99990;
  background: var(--cream, #fbfaf4);
  display: flex; flex-direction: column;
  font-family: "Noto Sans SC", "Microsoft YaHei", sans-serif;
  color: var(--quest-ink, #172438);
  animation: aikc-gp-in .22s ease-out;
}
@keyframes aikc-gp-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.aikc-gp-root.aikc-gp-closing { animation: aikc-gp-out .18s ease-in forwards; }
@keyframes aikc-gp-out { to { opacity: 0; transform: translateY(14px); } }

/* 顶栏 */
.aikc-gp-header {
  display: flex; align-items: center; gap: 14px;
  padding: 16px clamp(16px, 4vw, 40px);
  border-bottom: 3px solid var(--quest-ink, #172438);
  background: var(--paper, #fffdf7);
  position: sticky; top: 0; z-index: 5;
}
.aikc-gp-back {
  display: inline-flex; align-items: center; gap: 8px;
  border: 3px solid var(--quest-ink, #172438); border-radius: 14px 14px 14px 5px;
  background: #fff; box-shadow: 4px 4px 0 var(--quest-ink, #172438);
  font: 800 15px/1 "Noto Sans SC", "Microsoft YaHei", sans-serif;
  color: var(--quest-ink, #172438); padding: 10px 16px; cursor: pointer; transition: .15s;
}
.aikc-gp-back:hover { transform: translateY(-2px); box-shadow: 5px 6px 0 var(--quest-ink, #172438); }
.aikc-gp-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.aikc-gp-title small { font-size: 11px; font-weight: 800; letter-spacing: 2px; color: #c2410c; }
.aikc-gp-title h1 { margin: 0; font-size: 22px; font-weight: 1000; }
.aikc-gp-header-spacer { flex: 1; }
.aikc-gp-chips { display: flex; gap: 10px; flex-wrap: wrap; }
.aikc-gp-chip {
  display: inline-flex; align-items: center; gap: 7px;
  border: 3px solid var(--quest-ink, #172438); border-radius: 999px;
  background: #ffd957; box-shadow: 3px 3px 0 var(--quest-ink, #172438);
  padding: 8px 14px; font-weight: 900; font-size: 14px;
}
.aikc-gp-chip.cyan { background: #79ddf6; }
.aikc-gp-chip.plain { background: #fff; }

/* Tab 栏 */
.aikc-gp-tabs {
  display: flex; gap: 12px; padding: 18px clamp(16px, 4vw, 40px) 0;
  max-width: 1210px; width: 100%; margin: 0 auto; box-sizing: border-box;
}
.aikc-gp-tab {
  border: 3px solid var(--quest-ink, #172438); border-radius: 16px 16px 0 0;
  border-bottom: none; background: #e8e2d2;
  font: 900 15px/1 "Noto Sans SC", "Microsoft YaHei", sans-serif;
  color: #6b7280; padding: 13px 22px; cursor: pointer; transition: .15s;
  box-shadow: 0 4px 0 -1px var(--quest-ink, #172438);
}
.aikc-gp-tab:hover { color: var(--quest-ink, #172438); }
.aikc-gp-tab.active { background: var(--quest-ink, #172438); color: #ffd957; }

/* 内容区 */
.aikc-gp-body {
  flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch;
  padding: 26px clamp(16px, 4vw, 40px) 80px;
}
.aikc-gp-panel {
  max-width: 1210px; width: 100%; margin: 0 auto;
  border: 3px solid var(--quest-ink, #172438); border-radius: 22px 22px 22px 8px;
  background: var(--paper, #fffdf7); box-shadow: 6px 7px 0 var(--quest-ink, #172438);
  padding: clamp(18px, 3vw, 34px); box-sizing: border-box;
}

/* ===== Tab 1 抽盲盒 ===== */
.aikc-gp-statusbar { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 22px; }
.aikc-gp-statusbar .aikc-gp-chip { font-size: 15px; }
.aikc-gp-stage { display: flex; flex-direction: column; align-items: center; gap: 22px; padding: 26px 0 10px; }
.aikc-gp-box {
  width: 190px; height: 190px; display: grid; place-items: center;
  font-size: 96px; border-radius: 30px 30px 30px 12px;
  border: 3px solid var(--quest-ink, #172438);
  background: radial-gradient(circle at 30% 25%, #ffe9a8, #ffd957 60%, #f5b301);
  box-shadow: 8px 9px 0 var(--quest-ink, #172438);
  animation: aikc-gp-breathe 2.4s ease-in-out infinite;
}
@keyframes aikc-gp-breathe {
  0%, 100% { transform: translateY(0) rotate(0deg); box-shadow: 8px 9px 0 var(--quest-ink, #172438), 0 0 0 rgba(245, 179, 1, 0); }
  50% { transform: translateY(-7px) rotate(-1.5deg); box-shadow: 8px 13px 0 var(--quest-ink, #172438), 0 0 34px rgba(245, 179, 1, .55); }
}
.aikc-gp-box.shaking { animation: aikc-gp-shake .5s ease-in-out infinite; }
@keyframes aikc-gp-shake {
  0%, 100% { transform: translate(0, 0) rotate(0); }
  20% { transform: translate(-6px, -4px) rotate(-4deg); }
  40% { transform: translate(6px, -6px) rotate(4deg); }
  60% { transform: translate(-5px, 3px) rotate(-3deg); }
  80% { transform: translate(5px, 4px) rotate(3deg); }
}
.aikc-gp-draw-btn {
  border: 3px solid var(--quest-ink, #172438); border-radius: 18px 18px 18px 7px;
  background: #ff7b3d; box-shadow: 6px 6px 0 var(--quest-ink, #172438);
  font: 1000 20px/1 "Noto Sans SC", "Microsoft YaHei", sans-serif; color: #fff;
  padding: 18px 44px; cursor: pointer; transition: .15s; text-shadow: 0 1px 0 rgba(0,0,0,.15);
}
.aikc-gp-draw-btn:hover:not(:disabled) { transform: translateY(-4px); box-shadow: 7px 9px 0 var(--quest-ink, #172438); }
.aikc-gp-draw-btn:disabled { background: #c9c2b2; cursor: not-allowed; box-shadow: 3px 3px 0 var(--quest-ink, #172438); }
.aikc-gp-draw-hint { font-size: 13px; font-weight: 800; color: #7b7264; }
.aikc-gp-draw-hint a { color: #c2410c; cursor: pointer; text-decoration: underline; }
.aikc-gp-prob-row { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin-top: 4px; }
.aikc-gp-prob-row span {
  border: 2px solid var(--quest-ink, #172438); border-radius: 999px; background: #fff;
  padding: 5px 12px; font-size: 12px; font-weight: 800;
}
.aikc-gp-shop-note { margin-top: 18px; text-align: center; font-size: 12.5px; font-weight: 700; color: #8a8172; }

/* 抽盒结果弹窗 */
.aikc-gp-mask {
  position: fixed; inset: 0; z-index: 100000; background: rgba(23, 36, 56, .58);
  display: grid; place-items: center; padding: 20px; animation: aikc-gp-fade .2s ease-out;
}
@keyframes aikc-gp-fade { from { opacity: 0; } }
.aikc-gp-result {
  background: var(--paper, #fffdf7); border: 3px solid var(--quest-ink, #172438);
  border-radius: 26px 26px 26px 10px; box-shadow: 8px 10px 0 var(--quest-ink, #172438);
  padding: 30px clamp(20px, 4vw, 40px) 26px; text-align: center;
  width: min(430px, 94vw); animation: aikc-gp-pop .3s cubic-bezier(.2, 1.4, .4, 1);
}
@keyframes aikc-gp-pop { from { transform: scale(.7); opacity: 0; } }
.aikc-gp-result h2 { margin: 14px 0 4px; font-size: 22px; font-weight: 1000; }
.aikc-gp-result .aikc-gp-sub { font-size: 13px; font-weight: 700; color: #7b7264; margin-bottom: 16px; }
.aikc-gp-cardwrap { display: grid; place-items: center; }
.aikc-gp-cardimg {
  width: 200px; border-radius: 14px; border: 4px solid #9aa5b1;
  box-shadow: 5px 6px 0 var(--quest-ink, #172438);
  animation: aikc-gp-flip .55s ease-out;
}
@keyframes aikc-gp-flip { from { transform: rotateY(90deg) scale(.8); opacity: 0; } }
.aikc-gp-cardimg.r-common { border-color: #9aa5b1; }
.aikc-gp-cardimg.r-rare { border-color: #3b82f6; box-shadow: 5px 6px 0 var(--quest-ink, #172438), 0 0 26px rgba(59, 130, 246, .6); }
.aikc-gp-cardimg.r-epic { border-color: #f5b301; box-shadow: 5px 6px 0 var(--quest-ink, #172438), 0 0 34px rgba(245, 179, 1, .8); }
.aikc-gp-cardimg.duplicate { filter: grayscale(.9) brightness(.96); }
.aikc-gp-rarity-badge {
  display: inline-block; margin-top: 14px; border: 2px solid var(--quest-ink, #172438);
  border-radius: 999px; padding: 5px 14px; font-size: 12.5px; font-weight: 900; background: #fff;
}
.aikc-gp-rarity-badge.b-common { background: #e5e7eb; }
.aikc-gp-rarity-badge.b-rare { background: #bfdbfe; }
.aikc-gp-rarity-badge.b-epic { background: #fde68a; }
.aikc-gp-refund-chip {
  display: inline-block; margin-top: 10px; background: #87eb9d;
  border: 2px solid var(--quest-ink, #172438); border-radius: 999px;
  padding: 6px 16px; font-weight: 900; font-size: 14px;
}
.aikc-gp-series-banner {
  margin-top: 14px; background: #ffd957; border: 3px dashed var(--quest-ink, #172438);
  border-radius: 14px; padding: 12px 16px; font-weight: 1000; font-size: 15px;
}
.aikc-gp-result-actions { display: flex; gap: 12px; justify-content: center; margin-top: 20px; flex-wrap: wrap; }
.aikc-gp-btn {
  border: 3px solid var(--quest-ink, #172438); border-radius: 14px 14px 14px 5px;
  box-shadow: 4px 4px 0 var(--quest-ink, #172438);
  font: 900 15px/1 "Noto Sans SC", "Microsoft YaHei", sans-serif;
  padding: 13px 22px; cursor: pointer; transition: .15s; color: var(--quest-ink, #172438); background: #fff;
}
.aikc-gp-btn:hover { transform: translateY(-2px); box-shadow: 5px 6px 0 var(--quest-ink, #172438); }
.aikc-gp-btn.primary { background: #ff7b3d; color: #fff; }
.aikc-gp-btn.gold { background: #ffd957; }

/* ===== Tab 2 每周任务 ===== */
.aikc-gp-week-head {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 20px;
}
.aikc-gp-week-head h3 { margin: 0; font-size: 18px; font-weight: 1000; }
.aikc-gp-week-head .aikc-gp-countdown { font-size: 13px; font-weight: 800; color: #7b7264; }
.aikc-gp-weekbar {
  flex: 1; min-width: 160px; height: 18px; border: 3px solid var(--quest-ink, #172438);
  border-radius: 999px; background: #fff; overflow: hidden;
}
.aikc-gp-weekbar i {
  display: block; height: 100%; background: linear-gradient(90deg, #ffd957, #f5b301);
  transition: width .4s ease;
}
.aikc-gp-tasklist { display: flex; flex-direction: column; gap: 14px; }
.aikc-gp-task {
  display: flex; align-items: center; gap: 16px;
  border: 3px solid var(--quest-ink, #172438); border-radius: 18px 18px 18px 7px;
  background: #fff; box-shadow: 5px 5px 0 var(--quest-ink, #172438);
  padding: 16px 18px; flex-wrap: wrap;
}
.aikc-gp-task.done { background: #f0fdf4; }
/* v1.4：本周不适用的任务（课程没开放 / 本周无错题）淡显，且不计入全勤分母 */
.aikc-gp-task.na { background: #f7f5ee; opacity: .82; }
.aikc-gp-task-na {
  border: 2px dashed #b9b0a0; border-radius: 999px; padding: 6px 13px;
  font-size: 12.5px; font-weight: 900; color: #8a8172; background: #fbf9f3; white-space: nowrap;
}
.aikc-gp-task .aikc-gp-task-icon {
  width: 52px; height: 52px; display: grid; place-items: center; font-size: 26px;
  border: 3px solid var(--quest-ink, #172438); border-radius: 14px; background: #fffc;
  box-shadow: 3px 4px 0 var(--quest-ink, #172438); flex: none;
}
.aikc-gp-task-copy { flex: 1; min-width: 170px; }
.aikc-gp-task-copy strong { display: block; font-size: 16.5px; font-weight: 1000; }
.aikc-gp-task-copy small { display: block; margin-top: 3px; font-size: 12.5px; font-weight: 700; color: #7b7264; }
.aikc-gp-task-status {
  border: 2px solid var(--quest-ink, #172438); border-radius: 999px;
  padding: 6px 13px; font-size: 12.5px; font-weight: 900; background: #e8e2d2; color: #6b7280;
}
.aikc-gp-task.done .aikc-gp-task-status { background: #87eb9d; color: var(--quest-ink, #172438); }
.aikc-gp-task-jump {
  border: 3px solid var(--quest-ink, #172438); border-radius: 12px 12px 12px 4px;
  background: #79ddf6; box-shadow: 3px 3px 0 var(--quest-ink, #172438);
  font: 900 13.5px/1 "Noto Sans SC", "Microsoft YaHei", sans-serif;
  color: var(--quest-ink, #172438); padding: 11px 16px; cursor: pointer; transition: .15s;
}
.aikc-gp-task-jump:hover { transform: translateY(-2px); }
.aikc-gp-task-jump.disabled { background: #d8d2c3; color: #8a8172; cursor: not-allowed; box-shadow: 2px 2px 0 var(--quest-ink, #172438); }
.aikc-gp-allfull {
  margin-top: 18px; border: 3px dashed var(--quest-ink, #172438); border-radius: 16px;
  background: #ffd957; padding: 16px 18px; text-align: center; font-weight: 1000; font-size: 15.5px;
}
.aikc-gp-week-note { margin-top: 14px; font-size: 12px; font-weight: 700; color: #8a8172; text-align: center; }

/* ---------------- v1.4 技能卡槽 ---------------- */
.aikc-gp-daily-note {
  margin-top: 10px; border: 2px dashed #2f9e6f; border-radius: 12px; background: #eefaf2;
  padding: 9px 14px; font-size: 13px; font-weight: 800; color: #1f7a52; text-align: center;
}
.aikc-gp-daily-note.hot { border-color: #d98324; background: #fdf3e3; color: #a2601a; }
.aikc-gp-slotrow { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 10px; }
.aikc-gp-slot {
  width: 128px; border: 3px solid var(--quest-ink, #172438); border-radius: 14px;
  background: #fff; box-shadow: 4px 4px 0 var(--quest-ink, #172438);
  padding: 10px; display: flex; flex-direction: column; align-items: center; gap: 5px; text-align: center;
}
.aikc-gp-slot.empty { background: #f4f1e8; border-style: dashed; box-shadow: none; justify-content: center; min-height: 150px; }
.aikc-gp-slot.empty span { font-size: 30px; color: #b9b0a0; font-weight: 900; }
.aikc-gp-slot img { width: 74px; height: 74px; object-fit: cover; border-radius: 10px; border: 2px solid var(--quest-ink, #172438); }
.aikc-gp-slot strong { font-size: 13px; font-weight: 1000; line-height: 1.2; }
.aikc-gp-slot small { font-size: 11px; color: #7b7264; font-weight: 700; }
.aikc-gp-slotbtn {
  border: 2px solid var(--quest-ink, #172438); border-radius: 999px; background: #ffd957;
  font: 900 12px/1 "Noto Sans SC", "Microsoft YaHei", sans-serif; color: var(--quest-ink, #172438);
  padding: 6px 12px; cursor: pointer;
}
.aikc-gp-slotbtn.on { background: #d8f2c8; }
.aikc-gp-skilltags { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.aikc-gp-skilltag {
  border: 2px solid #2f9e6f; border-radius: 999px; background: #eefaf2; color: #1f7a52;
  font-size: 12px; font-weight: 900; padding: 5px 11px;
}
.aikc-gp-streak {
  margin-top: 14px; border: 3px solid var(--quest-ink, #172438); border-radius: 14px;
  background: #fff7e0; padding: 12px 16px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.aikc-gp-streak strong { font-size: 15px; font-weight: 1000; }
.aikc-gp-streak small { font-size: 12.5px; font-weight: 800; color: #8a6a1f; }
.aikc-gp-ownhead { margin: 18px 0 10px; font-size: 14.5px; font-weight: 1000; }
.aikc-gp-cardlist { display: flex; flex-direction: column; gap: 10px; }
.aikc-gp-cardrow {
  display: flex; align-items: center; gap: 12px; border: 3px solid var(--quest-ink, #172438);
  border-radius: 14px 14px 14px 5px; background: #fff; box-shadow: 4px 4px 0 var(--quest-ink, #172438);
  padding: 10px 14px; flex-wrap: wrap;
}
.aikc-gp-cardrow.on { background: #f2fbec; }
.aikc-gp-cardrow img { width: 52px; height: 52px; object-fit: cover; border-radius: 10px; border: 2px solid var(--quest-ink, #172438); }
.aikc-gp-cardinfo { flex: 1; min-width: 180px; }
.aikc-gp-cardinfo strong { display: block; font-size: 14.5px; font-weight: 1000; }
.aikc-gp-cardinfo small { display: block; font-size: 12px; font-weight: 800; color: #7b7264; }
.aikc-gp-cardinfo small.aikc-gp-carddesc { color: #1f7a52; }

/* ===== Tab 3 我的图鉴 ===== */
.aikc-gp-series-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 16px; }
.aikc-gp-series-head h3 { margin: 0; font-size: 18px; font-weight: 1000; }
.aikc-gp-series-head .aikc-gp-progress { font-size: 13.5px; font-weight: 900; color: #c2410c; }
.aikc-gp-seriesbar { flex: 1; min-width: 150px; height: 16px; border: 3px solid var(--quest-ink, #172438); border-radius: 999px; background: #fff; overflow: hidden; }
.aikc-gp-seriesbar i { display: block; height: 100%; background: linear-gradient(90deg, #ffd957, #f5b301); transition: width .4s; }
.aikc-gp-grid {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px;
}
@media (max-width: 760px) { .aikc-gp-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.aikc-gp-cell { display: flex; flex-direction: column; align-items: center; gap: 7px; }
.aikc-gp-cell img, .aikc-gp-cell .aikc-gp-unknown {
  width: 100%; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 12px;
  border: 3px solid #9aa5b1; background: #fff; box-shadow: 4px 4px 0 var(--quest-ink, #172438);
}
.aikc-gp-cell img.r-rare { border-color: #3b82f6; }
.aikc-gp-cell img.r-epic { border-color: #f5b301; box-shadow: 4px 4px 0 var(--quest-ink, #172438), 0 0 14px rgba(245, 179, 1, .5); }
.aikc-gp-cell .aikc-gp-unknown {
  display: grid; place-items: center; background: repeating-linear-gradient(45deg, #ece6d6, #ece6d6 10px, #e3dcc9 10px, #e3dcc9 20px);
  border-color: #b9b19d; box-shadow: 4px 4px 0 #b9b19d;
  font-size: 44px; font-weight: 1000; color: #a89f88;
}
.aikc-gp-cell .aikc-gp-cellname { font-size: 12.5px; font-weight: 900; text-align: center; }
.aikc-gp-cell .aikc-gp-cellname small { display: block; font-size: 10.5px; color: #8a8172; font-weight: 700; }
.aikc-gp-series-complete {
  margin-top: 16px; border: 3px dashed var(--quest-ink, #172438); border-radius: 16px;
  background: #ffd957; padding: 14px 18px; font-weight: 1000; font-size: 15px; text-align: center;
}
.aikc-gp-locked-series { margin-top: 30px; }
.aikc-gp-locked-row {
  border: 3px dashed #b9b19d; border-radius: 16px; background: #f3efe3;
  padding: 14px 18px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  font-weight: 900; color: #8a8172;
}
.aikc-gp-locked-row .aikc-gp-lock-tag {
  margin-left: auto; border: 2px solid #b9b19d; border-radius: 999px;
  padding: 4px 12px; font-size: 12px; background: #fff;
}
.aikc-gp-claim-note { margin-top: 10px; font-size: 12.5px; font-weight: 700; color: #8a8172; text-align: center; }

/* 最近记录 */
.aikc-gp-recent { margin-top: 26px; border-top: 3px dashed #d8d2c3; padding-top: 16px; }
.aikc-gp-recent h4 { margin: 0 0 10px; font-size: 14px; font-weight: 1000; }
.aikc-gp-recent-row {
  display: flex; align-items: center; gap: 10px; padding: 7px 2px;
  font-size: 13px; font-weight: 700; color: #4b5563; border-bottom: 1px dashed #e3dcc9;
}
.aikc-gp-recent-row img { width: 30px; border-radius: 6px; border: 2px solid #9aa5b1; }
.aikc-gp-recent-row .aikc-gp-when { margin-left: auto; color: #9a917f; font-size: 11.5px; }

/* Toast */
.aikc-gp-toast {
  position: fixed; top: 18px; left: 50%; transform: translateX(-50%);
  z-index: 100001; background: var(--quest-ink, #172438); color: #ffd957;
  border-radius: 999px; padding: 11px 22px; font-weight: 900; font-size: 14px;
  box-shadow: 0 8px 22px rgba(23, 36, 56, .35); animation: aikc-gp-toast-in .25s ease-out;
}
@keyframes aikc-gp-toast-in { from { opacity: 0; transform: translate(-50%, -12px); } }

/* 移动端微调 */
@media (max-width: 640px) {
  .aikc-gp-header { padding: 12px 14px; gap: 10px; }
  .aikc-gp-title h1 { font-size: 18px; }
  .aikc-gp-tabs { gap: 8px; padding: 14px 14px 0; }
  .aikc-gp-tab { padding: 11px 14px; font-size: 13.5px; }
  .aikc-gp-chips { display: none; }
  .aikc-gp-box { width: 150px; height: 150px; font-size: 74px; }
  .aikc-gp-cardimg { width: 160px; }
}

/* ============ r16 打工（moonlight） ============ */
.aikc-gp-ml-h { margin: 22px 2px 10px; font-size: 16px; font-weight: 900; }
.aikc-gp-ml-none {
  background: var(--paper); border: 2px dashed rgba(23,36,56,.35); border-radius: 14px;
  padding: 18px; text-align: center; color: var(--muted); font-size: 14px;
}
.aikc-gp-ml-active { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; }
.aikc-gp-ml-work {
  display: flex; align-items: center; gap: 12px;
  background: var(--paper); border: 3px solid var(--quest-ink); border-radius: 16px;
  box-shadow: 5px 6px 0 rgba(23,36,56,.9); padding: 12px;
}
.aikc-gp-ml-work.finished { animation: aikc-gp-ml-pulse 1.6s ease-in-out infinite; }
@keyframes aikc-gp-ml-pulse {
  0%, 100% { box-shadow: 5px 6px 0 rgba(23,36,56,.9); }
  50% { box-shadow: 5px 6px 0 rgba(23,36,56,.9), 0 0 0 6px rgba(255, 217, 87, .45); }
}
.aikc-gp-ml-workimg { position: relative; width: 84px; height: 84px; flex: 0 0 84px; }
.aikc-gp-ml-workimg img {
  width: 64px; height: 64px; object-fit: contain; position: absolute; inset: 0; margin: auto;
  animation: aikc-gp-ml-float 3.2s ease-in-out infinite;
}
@keyframes aikc-gp-ml-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
.aikc-gp-ml-ring { position: absolute; inset: 0; width: 84px; height: 84px; transform: rotate(-90deg); }
.aikc-gp-ml-ring .ring-bg { fill: none; stroke: rgba(23,36,56,.12); stroke-width: 7; }
.aikc-gp-ml-ring .ring-fg { fill: none; stroke: #ff7b3d; stroke-width: 7; stroke-linecap: round; transition: stroke-dashoffset 1s linear; }
.aikc-gp-ml-work.finished .ring-fg { stroke: #87eb9d; }
.aikc-gp-ml-workcopy { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.aikc-gp-ml-workcopy strong { font-size: 15px; }
.aikc-gp-ml-remain { color: var(--quest-orange); font-weight: 800; font-size: 12.5px; }
.aikc-gp-ml-wage { color: var(--muted); font-size: 12px; }
.aikc-gp-ml-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); gap: 12px; }
.aikc-gp-ml-card {
  background: var(--paper); border: 3px solid var(--quest-ink); border-radius: 14px;
  box-shadow: 4px 5px 0 rgba(23,36,56,.9); padding: 10px; text-align: center;
  display: flex; flex-direction: column; gap: 6px; align-items: center;
}
.aikc-gp-ml-card img { width: 92px; height: 92px; object-fit: contain; }
.aikc-gp-ml-card .aikc-gp-btn { width: 100%; padding: 8px 6px; font-size: 13px; }
.aikc-gp-ml-durs { display: flex; flex-direction: column; gap: 10px; width: 100%; margin: 6px 0 2px; }
.aikc-gp-ml-durs .aikc-gp-btn { display: flex; flex-direction: column; gap: 2px; align-items: center; padding: 10px; }
.aikc-gp-ml-durs .aikc-gp-btn small { font-weight: 700; opacity: .75; }
.aikc-gp-ml-note { font-size: 12px; color: var(--muted); margin: 4px 0 10px; }
.aikc-gp-ml-line { font-size: 14.5px; font-weight: 700; padding: 3px 0; }
.aikc-gp-ml-line.bonus { color: #ff7b3d; }
.aikc-gp-ml-line.prize { color: #8b5cf6; background: #f4efff; border-radius: 10px; padding: 8px 10px; }
.aikc-gp-ml-line.prize.legendary { background: linear-gradient(90deg, #fff6d8, #ffe9a8); color: #9a6a00; }
.aikc-gp-ml-total {
  margin-top: 6px; font-size: 19px; font-weight: 900; color: var(--quest-ink);
  background: #fff3c9; border: 2px solid var(--quest-ink); border-radius: 12px; padding: 8px 18px;
}
.aikc-gp-ml-dot { font-size: 18px; }
.aikc-gp-legend-banner {
  background: linear-gradient(90deg, #ffd957, #ffb347, #ffd957); border: 2px solid var(--quest-ink);
  border-radius: 999px; padding: 8px 18px; font-weight: 900; font-size: 15px; margin-bottom: 8px;
  animation: aikc-gp-legend-glow 1.2s ease-in-out infinite alternate;
}
@keyframes aikc-gp-legend-glow { from { filter: brightness(1); } to { filter: brightness(1.18); } }

/* 派出飞卡 + 拖尾 */
.aikc-gp-flycard {
  position: fixed; z-index: 100050; width: 90px; height: 90px; object-fit: contain;
  pointer-events: none; transition: transform .85s cubic-bezier(.5, -0.1, .75, .5), opacity .85s ease-in;
  filter: drop-shadow(0 6px 14px rgba(23,36,56,.4));
}
.aikc-gp-spark {
  position: fixed; z-index: 100049; color: #ffd957; font-size: 13px; pointer-events: none;
  animation: aikc-gp-spark-fly .9s ease-out forwards;
}
@keyframes aikc-gp-spark-fly {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to { opacity: 0; transform: translateY(-46px) scale(.3); }
}

/* 收工金币粒子 */
.aikc-gp-coin {
  position: fixed; z-index: 100049; font-size: 22px; pointer-events: none;
  animation: aikc-gp-coin-arc 1.25s ease-out forwards;
}
@keyframes aikc-gp-coin-arc {
  0% { opacity: 0; transform: translate(0, 0) scale(.4) rotate(0); }
  12% { opacity: 1; }
  100% { opacity: 0; transform: translate(var(--dx, 0px), var(--dy, -260px)) scale(1.15) rotate(200deg); }
}

/* 传说：全屏金光 + 卡片翻面 */
.aikc-gp-goldflash {
  position: fixed; inset: 0; z-index: 100060; pointer-events: none;
  background: radial-gradient(circle at 50% 42%, rgba(255, 236, 160, .96), rgba(255, 217, 87, .55) 42%, rgba(255, 217, 87, 0) 72%);
  animation: aikc-gp-gold-anim 1.15s ease-out forwards;
}
@keyframes aikc-gp-gold-anim {
  0% { opacity: 0; transform: scale(.6); }
  28% { opacity: 1; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.08); }
}
.aikc-gp-cardimg.flip-in { animation: aikc-gp-flip .9s cubic-bezier(.35, .9, .3, 1) both; }
@keyframes aikc-gp-flip {
  0% { transform: perspective(700px) rotateY(90deg) scale(.8); opacity: 0; }
  60% { transform: perspective(700px) rotateY(-14deg) scale(1.04); opacity: 1; }
  100% { transform: perspective(700px) rotateY(0) scale(1); }
}

/* 动画敏感用户：全部降级为即时反馈 */
@media (prefers-reduced-motion: reduce) {
  .aikc-gp-ml-workimg img, .aikc-gp-ml-work.finished, .aikc-gp-legend-banner { animation: none; }
  .aikc-gp-flycard, .aikc-gp-spark, .aikc-gp-coin, .aikc-gp-goldflash { display: none !important; }
  .aikc-gp-cardimg.flip-in { animation: none; }
  .aikc-gp-ml-ring .ring-fg { transition: none; }
}

/* 打工区移动端微调 */
@media (max-width: 640px) {
  .aikc-gp-ml-work { flex-wrap: wrap; }
  .aikc-gp-ml-workcopy { flex: 1 1 100%; order: 3; }
  .aikc-gp-ml-work .aikc-gp-ml-claim { margin-left: auto; }
}


/* ===== r20：图鉴折叠 + 侧边栏卡片墙 + 头像框佩戴 ===== */
.aikc-gp-fold {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  border: 2px solid rgba(246, 173, 47, 0.55);
  border-radius: 16px;
  background: rgba(246, 173, 47, 0.1);
  color: inherit;
  cursor: pointer;
  text-align: left;
}
.aikc-gp-fold.open { border-color: #f6ad2f; background: rgba(246, 173, 47, 0.16); }
.aikc-gp-fold-title { display: grid; gap: 3px; }
.aikc-gp-fold-title strong { font-size: 17px; }
.aikc-gp-fold-title small { opacity: 0.78; font-size: 12px; }
.aikc-gp-fold-arrow { flex: 0 0 auto; font-size: 13px; font-weight: 800; color: #f6ad2f; white-space: nowrap; }
.aikc-gp-col { display: flex; gap: 16px; align-items: flex-start; margin-top: 14px; }
.aikc-gp-col-side { flex: 0 0 188px; width: 188px; display: grid; gap: 10px; position: sticky; top: 10px; }
.aikc-gp-col-item {
  display: grid; gap: 6px; text-align: left; padding: 11px 13px;
  border: 2px solid rgba(255, 255, 255, 0.14); border-radius: 14px;
  background: rgba(255, 255, 255, 0.05); color: inherit; cursor: pointer;
}
.aikc-gp-col-item:hover { border-color: rgba(246, 173, 47, 0.5); }
.aikc-gp-col-item.active { border-color: #f6ad2f; background: rgba(246, 173, 47, 0.15); }
.aikc-gp-col-item strong { font-size: 14px; }
.aikc-gp-col-item small { opacity: 0.75; font-size: 12px; }
.aikc-gp-col-wall { flex: 1 1 auto; min-width: 0; }
.aikc-gp-frameimg { width: 128px; height: 128px; object-fit: contain; border-radius: 0; border: none; }
.aikc-gp-framebtn {
  margin-top: 8px; padding: 6px 14px; border-radius: 999px;
  border: 1.5px solid rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.08);
  color: inherit; font-size: 12px; font-weight: 700; cursor: pointer;
}
.aikc-gp-framebtn:hover { border-color: #f6ad2f; color: #f6ad2f; }
.aikc-gp-framebtn.on { border-color: #53bb71; background: rgba(83, 187, 113, 0.16); color: #53bb71; cursor: default; }
@media (max-width: 760px) {
  .aikc-gp-col { flex-direction: column; }
  .aikc-gp-col-side { position: static; width: 100%; flex: none; grid-template-columns: 1fr 1fr; }
}

/* ===== Tab 5：我的奖励（v1.4 月考 + 学期全勤） ===== */
.aikc-gp-rw-sum { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.aikc-gp-rw-stat {
  flex: 1 1 150px; padding: 12px 16px;
  border: 3px solid var(--quest-ink, #172438); border-radius: 16px 16px 16px 5px;
  background: #fff; box-shadow: 4px 4px 0 var(--quest-ink, #172438);
}
.aikc-gp-rw-stat b { display: block; font-size: 26px; font-weight: 1000; letter-spacing: -.02em; }
.aikc-gp-rw-stat small { font-size: 11.5px; font-weight: 800; color: #8a8172; }
.aikc-gp-rw-list { display: grid; gap: 10px; }
.aikc-gp-rw-row {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; border: 2.5px solid var(--quest-ink, #172438);
  border-radius: 14px; background: #fff; box-shadow: 3px 3px 0 rgba(23, 36, 56, .18);
}
.aikc-gp-rw-icon { font-size: 22px; line-height: 1; }
.aikc-gp-rw-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.aikc-gp-rw-main strong { font-size: 14.5px; font-weight: 1000; }
.aikc-gp-rw-main small { font-size: 11.5px; font-weight: 700; color: #8a8172; }
.aikc-gp-rw-draws {
  flex: none; padding: 5px 12px; border-radius: 999px; background: #ffd957;
  border: 2px solid var(--quest-ink, #172438); font-size: 12.5px; font-weight: 1000;
}

/* ---------------- r26：史诗抽卡祝贺滚动窗口 ---------------- */
.aikc-gp-marquee {
  margin: 0 0 16px;
  padding: 10px 0;
  overflow: hidden;
  border: 2px solid var(--quest-ink, #21322b);
  border-radius: 14px;
  background: linear-gradient(90deg, #fff7e0 0%, #ffe9f2 50%, #eaf7ff 100%);
  box-shadow: 4px 5px 0 var(--quest-ink, #21322b);
}

.aikc-gp-marquee-track {
  display: inline-flex;
  white-space: nowrap;
  animation: aikc-gp-scroll 38s linear infinite;
  will-change: transform;
}

.aikc-gp-marquee:hover .aikc-gp-marquee-track { animation-play-state: paused; }

.aikc-gp-cheer {
  display: inline-block;
  margin-right: 56px;
  font-size: 14px;
  font-weight: 600;
  color: #21322b;
}

.aikc-gp-cheer.avatar { color: #7a4bd6; }

@keyframes aikc-gp-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .aikc-gp-marquee-track { animation: none; }
}
