*{margin:0;padding:0;box-sizing:border-box}
:root{
  --primary:#E040FB;
  --primary-light:#F48FB1;
  --secondary:#7C4DFF;
  --bg-top:#FFF0F5;
  --bg-bot:#F3E5F5;
  --card-bg:rgba(255,255,255,0.92);
  --radius:18px;
  --shadow:0 8px 28px rgba(160,60,180,0.15);
}
body{
  min-height:100vh;
  background:linear-gradient(135deg,var(--bg-top),var(--bg-bot));
  font-family:'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;
  display:flex;flex-direction:column;align-items:center;
  overflow-x:hidden;
  user-select:none;-webkit-user-select:none;
}
.back-btn{
  position:fixed;top:14px;left:14px;z-index:100;
  background:var(--card-bg);color:#7B1FA2;
  padding:8px 16px;border-radius:30px;
  text-decoration:none;font-size:14px;font-weight:600;
  box-shadow:var(--shadow);transition:transform .2s;
}
.back-btn:hover{transform:scale(1.06)}
.game-wrap{
  position:relative;
  width:min(460px,96vw);
  margin:50px auto 20px;
}
.hud{
  display:flex;justify-content:space-around;
  background:var(--card-bg);border-radius:var(--radius);
  padding:12px 8px;margin-bottom:14px;
  box-shadow:var(--shadow);
}
.hud-item{display:flex;flex-direction:column;align-items:center}
.hud .label{font-size:12px;color:#aaa;font-weight:600}
.hud .val{font-size:22px;font-weight:800;color:#7B1FA2}
#timer{color:var(--primary)}
/* Board */
.board{
  display:grid;
  gap:8px;
  padding:14px;
  background:var(--card-bg);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}
.board.size-4{grid-template-columns:repeat(4,1fr)}
.board.size-6{grid-template-columns:repeat(6,1fr)}
/* Card */
.flip-card{
  aspect-ratio:1;
  perspective:600px;
  cursor:pointer;
}
.flip-card-inner{
  position:relative;width:100%;height:100%;
  transition:transform .4s;
  transform-style:preserve-3d;
}
.flip-card.flipped .flip-card-inner{transform:rotateY(180deg)}
.flip-card.matched .flip-card-inner{transform:rotateY(180deg)}
.flip-card-front,.flip-card-back{
  position:absolute;inset:0;
  border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
.flip-card-front{
  background:linear-gradient(135deg,var(--primary-light),var(--secondary));
  font-size:28px;color:rgba(255,255,255,0.7);
  box-shadow:0 3px 10px rgba(160,60,180,0.2);
}
.flip-card-back{
  transform:rotateY(180deg);
  background:#fff;
  border:3px solid #F3E5F5;
  font-size:clamp(24px,6vw,38px);
}
.flip-card.matched .flip-card-back{
  border-color:#C8E6C9;
  background:#F1F8E9;
}
.flip-card.matched{pointer-events:none}
/* shake on wrong */
.flip-card.wrong .flip-card-inner{animation:cardShake .4s}
@keyframes cardShake{
  0%,100%{transform:rotateY(180deg) translateX(0)}
  25%{transform:rotateY(180deg) translateX(-6px)}
  75%{transform:rotateY(180deg) translateX(6px)}
}
/* Overlay */
.overlay{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,240,245,0.88);
  border-radius:var(--radius);
  z-index:20;
  opacity:0;pointer-events:none;
  transition:opacity .3s;
}
.overlay.show{opacity:1;pointer-events:auto}
.card-ui{
  background:var(--card-bg);
  border-radius:var(--radius);
  padding:30px 26px;text-align:center;
  box-shadow:var(--shadow);
  animation:pop .35s ease-out;
  max-width:340px;width:92%;
}
.card-emoji{font-size:44px;margin-bottom:8px}
.card-ui h2{font-size:24px;color:#7B1FA2;margin-bottom:8px}
.card-ui p{color:#999;font-size:14px;line-height:1.6;margin-bottom:16px}
.card-ui .final-score{font-size:48px;font-weight:800;color:var(--primary);margin:6px 0}
.card-ui .stat-line{font-size:14px;color:#aaa;margin-bottom:6px}
.diff-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.btn-start{
  padding:12px 30px;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  color:#fff;border:none;border-radius:30px;
  font-size:16px;font-weight:700;cursor:pointer;
  box-shadow:0 4px 14px rgba(224,64,251,0.3);
  transition:transform .15s;
}
.btn-start:hover{transform:scale(1.05)}
.btn-start:active{transform:scale(0.97)}
.btn-start.hard{
  background:linear-gradient(135deg,#FF6F00,#E040FB);
}
@keyframes pop{
  0%{transform:scale(0.7);opacity:0}
  70%{transform:scale(1.05)}
  100%{transform:scale(1);opacity:1}
}
/* stars */
.star-particle{
  position:fixed;pointer-events:none;z-index:50;
  font-size:18px;
  animation:starFly .7s ease-out forwards;
}
@keyframes starFly{
  0%{opacity:1;transform:translate(0,0) scale(1)}
  100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(0.3)}
}
@media(max-width:420px){
  .game-wrap{margin-top:44px}
  .board{gap:6px;padding:10px}
  .flip-card-front{font-size:22px}
}
