/* ==========================================================================
   趣味学习 · 自定义样式表
   主色调：马卡龙 蓝/黄/粉/绿
   风格：全圆角、卡通扁平、柔和低饱和、无尖锐元素
   ========================================================================== */

:root {
  --m-blue: #A8D8EA;
  --m-blue-deep: #7FBED8;
  --m-yellow: #FCE8B9;
  --m-yellow-deep: #F9D27A;
  --m-pink: #F8C8DC;
  --m-pink-deep: #F0A8C0;
  --m-green: #C4E1B0;
  --m-green-deep: #A6D085;
  --m-cream: #FFF9F0;
}

* { -webkit-tap-highlight-color: transparent; }

html { scroll-behavior: smooth; }

body {
  background-color: var(--m-cream);
  background-image:
    radial-gradient(circle at 12% 18%, rgba(168,216,234,.25) 0, transparent 35%),
    radial-gradient(circle at 88% 12%, rgba(248,200,220,.22) 0, transparent 30%),
    radial-gradient(circle at 80% 85%, rgba(196,225,176,.25) 0, transparent 32%),
    radial-gradient(circle at 18% 82%, rgba(252,232,185,.22) 0, transparent 30%);
  background-attachment: fixed;
}

/* 底部留出 Tab 空间（小屏） */
@media (max-width: 639px) {
  #view { padding-bottom: 80px; }
}

/* 滚动条童趣化 */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #FFF0E0; border-radius: 10px; }
::-webkit-scrollbar-thumb { background: var(--m-blue); border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: var(--m-blue-deep); }

/* ============================ 通用童趣组件 ============================ */

/* 童趣卡片 */
.kid-card {
  background: #ffffff;
  border-radius: 1.75rem;
  box-shadow: 0 6px 0 rgba(168,216,234,.35), 0 10px 20px rgba(0,0,0,.06);
  border: 3px solid rgba(168,216,234,.45);
  transition: transform .18s ease, box-shadow .18s ease;
}
.kid-card:hover { transform: translateY(-3px); }

/* 大圆角按钮 */
.kid-btn {
  border-radius: 9999px;
  font-weight: 700;
  transition: transform .12s ease, filter .12s ease;
  box-shadow: 0 5px 0 rgba(0,0,0,.08);
}
.kid-btn:active { transform: scale(.92); filter: brightness(1.05); }
.kid-btn:disabled { opacity: .5; box-shadow: none; }

/* 模块入口卡片悬浮跳动 */
.module-card { transition: transform .2s cubic-bezier(.34,1.56,.64,1); }
.module-card:hover { transform: translateY(-6px) rotate(-1deg); }

/* ============================ 动画特效 ============================ */

@keyframes floatY {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}
@keyframes floatY2 {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(10px); }
}
@keyframes wiggle {
  0%,100% { transform: rotate(-3deg); }
  50% { transform: rotate(3deg); }
}
@keyframes popIn {
  0% { transform: scale(.3); opacity: 0; }
  70% { transform: scale(1.1); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}
@keyframes fadeInUp {
  0% { transform: translateY(20px); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}
@keyframes starBurst {
  0% { transform: scale(0) rotate(0deg); opacity: 1; }
  100% { transform: scale(1.6) rotate(180deg); opacity: 0; }
}
@keyframes confettiFall {
  0% { transform: translateY(-10vh) rotate(0deg); opacity: 1; }
  100% { transform: translateY(110vh) rotate(720deg); opacity: 0; }
}
@keyframes bounceSoft {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes pulseRing {
  0% { box-shadow: 0 0 0 0 rgba(168,216,234,.5); }
  100% { box-shadow: 0 0 0 20px rgba(168,216,234,0); }
}
@keyframes shake {
  0%,100% { transform: translateX(0); }
  20%,60% { transform: translateX(-6px); }
  40%,80% { transform: translateX(6px); }
}
@keyframes rainbowText {
  0% { color: #7FBED8; }
  25% { color: #F0A8C0; }
  50% { color: #A6D085; }
  75% { color: #F9D27A; }
  100% { color: #7FBED8; }
}

.anim-float { animation: floatY 3s ease-in-out infinite; }
.anim-float2 { animation: floatY2 3.5s ease-in-out infinite; }
.anim-wiggle { animation: wiggle 2s ease-in-out infinite; }
.anim-popIn { animation: popIn .4s cubic-bezier(.34,1.56,.64,1) both; }
.anim-fadeUp { animation: fadeInUp .4s ease both; }
.anim-bounce { animation: bounceSoft 1.5s ease-in-out infinite; }
.anim-shake { animation: shake .4s ease; }
.anim-rainbow { animation: rainbowText 3s linear infinite; }

/* 飘浮装饰元素 */
.floater {
  position: absolute;
  font-size: 2rem;
  opacity: .5;
  pointer-events: none;
}

/* ============================ 奖励特效 ============================ */

/* 星星迸发粒子 */
.star-particle {
  position: fixed;
  z-index: 60;
  pointer-events: none;
  font-size: 1.6rem;
  animation: starBurst .8s ease-out forwards;
}

/* 撒花粒子 */
.confetti {
  position: fixed;
  top: -5vh;
  width: 12px; height: 12px;
  z-index: 60;
  pointer-events: none;
  animation: confettiFall linear forwards;
}

/* ============================ 测验相关 ============================ */

/* 选项按钮 */
.opt-btn {
  border-radius: 1.25rem;
  border: 3px solid #E8E8E8;
  background: #fff;
  transition: all .15s ease;
  text-align: left;
}
.opt-btn:hover { border-color: var(--m-blue); transform: translateY(-2px); }
.opt-btn:active { transform: scale(.97); }
.opt-btn.correct {
  border-color: var(--m-green-deep);
  background: #F0FFF0;
  animation: popIn .3s ease;
}
.opt-btn.wrong {
  border-color: var(--m-pink-deep);
  background: #FFF5F5;
  animation: anim-shake .4s ease;
}
.opt-btn.selected { border-color: var(--m-blue-deep); background: #F0F8FF; }

/* 进度条 */
.progress-track {
  height: 16px;
  background: #FFF0E0;
  border-radius: 9999px;
  overflow: hidden;
  border: 2px solid rgba(168,216,234,.5);
}
.progress-bar {
  height: 100%;
  background: linear-gradient(90deg, var(--m-green-deep), var(--m-blue-deep));
  border-radius: 9999px;
  transition: width .4s ease;
}

/* 星级评分 */
.star-rating .star-filled { color: #F9C74F; }
.star-rating .star-empty { color: #E0E0E0; }

/* ============================ 故事播放器 ============================ */

.player-btn {
  width: 56px; height: 56px;
  border-radius: 9999px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem;
  transition: transform .12s ease;
}
.player-btn:active { transform: scale(.88); }

/* 旋转唱片 */
@keyframes spinDisc {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
.disc-spinning { animation: spinDisc 8s linear infinite; }

/* ============================ 故事字幕高亮 ============================ */
.st-sub-active {
  background: rgba(129, 212, 250, 0.35);
  color: #1e3a5f;
  font-weight: bold;
  font-size: 1.15rem;
  transform: scale(1.02);
  box-shadow: 0 2px 8px rgba(129, 212, 250, 0.3);
}

/* ============================ 拼音声调动画 ============================ */
@keyframes toneMark {
  0% { transform: translateY(0); }
  30% { transform: translateY(-8px); }
  60% { transform: translateY(0); }
  100% { transform: translateY(0); }
}
.tone-anim { animation: toneMark .6s ease; }

/* ============================ 工具类 ============================ */
.text-shadow-soft { text-shadow: 2px 2px 0 rgba(255,255,255,.8); }
.glass { background: rgba(255,255,255,.7); backdrop-filter: blur(8px); }
.no-select { -webkit-user-select: none; user-select: none; }

/* 大屏隐藏底部 Tab */
@media (min-width: 640px) {
  #bottomNav { display: none; }
}

/* 模态层 */
.modal-mask {
  background: rgba(168,216,234,.4);
  backdrop-filter: blur(4px);
}
.modal-card {
  animation: popIn .35s cubic-bezier(.34,1.56,.64,1) both;
}

/* 高亮卡片选中态 */
.chip-selected {
  background: var(--m-blue-deep) !important;
  color: #fff !important;
  transform: scale(1.05);
}
