/* ---------- 基础与渐变背景 ---------- */
*{box-sizing:border-box}
html,body{height:100%;margin:0;font-family:Inter, "Helvetica Neue", Arial, sans-serif;background:linear-gradient(120deg,#ffecd2,#fcb69f,#a1c4fd);background-size:300% 300%;animation:bgShift 18s ease infinite;color:#fff}
@keyframes bgShift{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}

/* ---------- 顶部区域 ---------- */
#topBar{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:400;text-align:center}
#topBtns{display:flex;gap:10px;justify-content:center;margin-bottom:8px}
.btn-primary{
  background:linear-gradient(90deg,#ff7e5f,#ffaf7b);
  border:none;padding:8px 14px;border-radius:12px;color:#fff;font-weight:700;cursor:pointer;
  box-shadow:0 8px 18px rgba(0,0,0,0.18);
}
.btn-primary:active{transform:translateY(1px)}
.btn-secondary{
  background:linear-gradient(90deg,#9be15d,#00e3a3);
  border:none;padding:8px 12px;border-radius:10px;color:#fff;font-weight:700;cursor:pointer;
  box-shadow:0 8px 18px rgba(0,0,0,0.12);
}

/* 第二行: 关卡 + 步数 横向卡片 */
#levelStepRow{display:flex;gap:12px;justify-content:center}
.info-card{
  background: rgba(0,0,0,0.22);
  padding:8px 12px;border-radius:10px;font-weight:700;color:#fff;box-shadow:inset 0 -6px 14px rgba(255,255,255,0.02);
}

/* ---------- 金币显示 ---------- */
#coinDisplay{position:fixed;left:12px;top:12px;z-index:410;padding:6px 10px;background:rgba(0,0,0,0.18);border-radius:10px;font-weight:700}

/* ---------- 游戏区 ---------- */
#gameWrapper{padding-top:120px;padding-bottom:200px}
#gameContainer{max-width:920px;margin:0 auto;display:flex;flex-wrap:wrap;gap:14px;justify-content:center;padding:8px}

/* 瓶子样式 */
.bottle{width:84px;height:240px;background:rgba(255,255,255,0.06);border-radius:14px;display:flex;flex-direction:column-reverse;align-items:center;padding-bottom:10px;box-shadow:0 12px 30px rgba(0,0,0,0.22), inset 0 -6px 12px rgba(255,255,255,0.02)}
/* 球样式 */
.ball{width:64px;height:64px;border-radius:50%;margin-bottom:8px;background:radial-gradient(circle at 30% 20%, rgba(255,255,255,0.85), rgba(0,0,0,0.18));box-shadow:0 12px 30px rgba(0,0,0,0.35), inset 0 -8px 20px rgba(255,255,255,0.2);cursor:grab;transition:transform .12s}
.ball:active{cursor:grabbing;transform:scale(1.03)}

/* ---------- 底部控制（水平） ---------- */
#bottomControls{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);display:flex;gap:12px;z-index:380;background:rgba(0,0,0,0.12);padding:8px;border-radius:14px}
.btn-action{min-width:120px;padding:10px;border-radius:12px;border:none;background:linear-gradient(90deg,#4facfe,#00f2fe);font-weight:800;color:#fff;cursor:pointer;box-shadow:0 8px 18px rgba(0,0,0,0.14)}

/* ---------- Banner ---------- */
#bannerContainer{position:fixed;bottom:12px;left:50%;transform:translateX(-50%);width:340px;height:72px;border-radius:10px;overflow:hidden;background:rgba(0,0,0,0.2);box-shadow:0 12px 28px rgba(0,0,0,0.22);z-index:360}
.bannerImg{width:100%;height:100%;object-fit:cover;flex-shrink:0;transition:transform .45s ease}

/* ---------- modal ---------- */
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.6);align-items:center;justify-content:center;z-index:600}
.modalContent{background:#1e1e1e;padding:18px;border-radius:12px;color:#fff;min-width:260px;max-width:92%;box-shadow:0 12px 30px rgba(0,0,0,0.6)}
.modalContent button{padding:8px 12px;border-radius:8px;border:none;cursor:pointer;background:linear-gradient(90deg,#ff7e5f,#ffaf7b);color:#fff;font-weight:700}

/* win visual */
.winBall{width:44px;height:44px;border-radius:50%;display:inline-block;margin:6px;background:linear-gradient(180deg,#fff,#ddd);box-shadow:0 10px 22px rgba(0,0,0,0.28)}
.winCoin{width:18px;height:18px;border-radius:50%;display:inline-block;background:radial-gradient(circle at 30% 30%,#ffd700,#ffb100);margin:3px}

/* level grid 8x6 */
#levelGrid{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;max-height:65vh;overflow:auto;margin-top:8px}
#levelGrid button{padding:8px;border-radius:6px;border:none;background:#2b2b2b;color:#fff;font-weight:700;cursor:pointer}
