
@import url('https://fonts.googleapis.com/css2?family=Fredoka+One&family=Nunito:wght@400;600;700;800&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}

:root{
  --bg:#1a0533;
  --surface:#2d0d52;
  --card:#3d1468;
  --border:#5a2890;
  --p1:#ff6b35;
  --p1-light:#ffb89a;
  --p2:#00d4aa;
  --p2-light:#80ffe6;
  --gold:#ffd700;
  --snake:#e63946;
  --ladder:#06d6a0;
  --text:#fff;
  --muted:#a87cc8;
  --cell-light:#f8e8ff;
  --cell-dark:#e6c8ff;
}

html,body{height:100%;background:var(--bg);color:var(--text);font-family:'Nunito',sans-serif;overflow-x:hidden;touch-action:manipulation;}

/* ── STARS BG ── */
body::before{
  content:'';position:fixed;inset:0;
  background:radial-gradient(ellipse at 20% 10%,#3d0a6e 0%,transparent 50%),
             radial-gradient(ellipse at 80% 80%,#0d2060 0%,transparent 50%),
             var(--bg);
  pointer-events:none;z-index:0;
}

.wrap{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;min-height:100vh;padding:0 8px 20px;}

/* ── HEADER ── */
.header{text-align:center;padding:14px 0 8px;}
.header h1{
  font-family:'Fredoka One',cursive;
  font-size:clamp(26px,7vw,42px);
  background:linear-gradient(135deg,var(--p1),var(--gold),var(--p2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  letter-spacing:0.04em;line-height:1;
}
.header p{font-size:11px;color:var(--muted);letter-spacing:0.2em;text-transform:uppercase;margin-top:3px;}

/* ── PLAYER CARDS ── */
.players{display:flex;gap:8px;width:100%;max-width:520px;margin-bottom:8px;}
.pcard{
  flex:1;padding:8px 10px;border-radius:12px;
  border:2px solid transparent;
  background:var(--card);
  transition:border-color .2s,transform .15s,box-shadow .2s;
  position:relative;overflow:hidden;
}
.pcard.active{transform:translateY(-2px);}
.pcard.p1.active{border-color:var(--p1);box-shadow:0 4px 16px rgba(255,107,53,0.35);}
.pcard.p2.active{border-color:var(--p2);box-shadow:0 4px 16px rgba(0,212,170,0.35);}
.pcard-top{display:flex;align-items:center;gap:8px;}
.token{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.p1 .token{background:rgba(255,107,53,0.2);border:2px solid var(--p1);}
.p2 .token{background:rgba(0,212,170,0.2);border:2px solid var(--p2);}
.pname{font-weight:800;font-size:13px;}
.p1 .pname{color:var(--p1);}
.p2 .pname{color:var(--p2);}
.pturn{margin-left:auto;font-size:10px;letter-spacing:0.12em;text-transform:uppercase;color:var(--muted);}
.p1.active .pturn{color:var(--p1);}
.p2.active .pturn{color:var(--p2);}
.ppos{font-size:11px;color:var(--muted);margin-top:2px;font-weight:600;}
.ppos span{color:var(--text);}

/* ── BOARD ── */
.board-wrap{
  width:100%;max-width:520px;
  position:relative;
}
.board-svg-wrap{
  width:100%;
  border-radius:16px;
  overflow:hidden;
  border:3px solid var(--border);
  box-shadow:0 8px 40px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.06);
  background:#fff;
}
#board-svg{width:100%;height:auto;display:block;}

/* ── DICE & CONTROLS ── */
.game-controls{
  width:100%;max-width:520px;
  display:flex;align-items:center;gap:10px;
  margin-top:10px;
}

.dice-btn{
  width:72px;height:72px;flex-shrink:0;
  border-radius:16px;border:none;
  background:var(--gold);
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font-size:36px;
  box-shadow:0 4px 0 #b8960a,0 6px 16px rgba(255,215,0,0.35);
  transition:transform .1s,box-shadow .1s;
  -webkit-tap-highlight-color:transparent;
}
.dice-btn:active{transform:translateY(3px);box-shadow:0 1px 0 #b8960a,0 2px 8px rgba(255,215,0,0.2);}
.dice-btn:disabled{opacity:.5;cursor:not-allowed;transform:none;}
.dice-btn.rolling{animation:diceRoll .5s ease;}
@keyframes diceRoll{
  0%{transform:rotate(0) scale(1);}
  20%{transform:rotate(-15deg) scale(1.1);}
  40%{transform:rotate(20deg) scale(0.95);}
  60%{transform:rotate(-10deg) scale(1.05);}
  80%{transform:rotate(5deg) scale(0.98);}
  100%{transform:rotate(0) scale(1);}
}

.status-panel{
  flex:1;background:var(--card);border-radius:14px;
  padding:10px 14px;border:1px solid var(--border);
  min-height:72px;display:flex;flex-direction:column;justify-content:center;
}
.status-turn{font-weight:800;font-size:14px;margin-bottom:3px;}
.status-msg{font-size:12px;color:var(--muted);line-height:1.4;}
.status-msg.event-snake{color:#ff8a8a;}
.status-msg.event-ladder{color:#80ffe0;}
.status-msg.event-win{color:var(--gold);font-weight:700;font-size:13px;}

.new-btn{
  padding:8px 14px;border-radius:12px;
  border:1.5px solid var(--border);background:var(--surface);
  color:var(--muted);font-family:'Nunito',sans-serif;font-size:11px;
  cursor:pointer;letter-spacing:0.08em;text-transform:uppercase;
  transition:all .15s;white-space:nowrap;
}
.new-btn:hover{border-color:var(--gold);color:var(--gold);}

/* ── LEGEND ── */
.legend{
  display:flex;gap:14px;margin-top:8px;
  font-size:11px;color:var(--muted);
}
.legend span{display:flex;align-items:center;gap:4px;}
.leg-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0;}

/* ── WIN OVERLAY ── */
.win-overlay{
  display:none;position:fixed;inset:0;z-index:200;
  background:rgba(10,0,30,0.85);
  align-items:center;justify-content:center;
  backdrop-filter:blur(4px);
}
.win-overlay.show{display:flex;}
.win-box{
  background:var(--card);border:2px solid var(--gold);
  border-radius:24px;padding:36px 28px;text-align:center;
  max-width:300px;width:90%;
  box-shadow:0 20px 60px rgba(0,0,0,0.6),0 0 40px rgba(255,215,0,0.2);
  animation:popIn .4s cubic-bezier(.34,1.56,.64,1);
}
@keyframes popIn{from{transform:scale(0.6);opacity:0;}to{transform:scale(1);opacity:1;}}
.win-emoji{font-size:64px;margin-bottom:12px;display:block;animation:wiggle 1s infinite;}
@keyframes wiggle{0%,100%{transform:rotate(-5deg);}50%{transform:rotate(5deg);}}
.win-title{
  font-family:'Fredoka One',cursive;font-size:32px;
  background:linear-gradient(135deg,var(--gold),#ff9900);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  margin-bottom:6px;
}
.win-sub{font-size:14px;color:var(--muted);margin-bottom:24px;}
.win-play-btn{
  padding:14px 36px;border-radius:14px;border:none;
  background:linear-gradient(135deg,var(--p1),var(--gold));
  color:#1a0533;font-family:'Fredoka One',cursive;font-size:18px;
  cursor:pointer;
  box-shadow:0 4px 16px rgba(255,107,53,0.4);
  transition:transform .15s;
}
.win-play-btn:hover{transform:scale(1.04);}

/* token animation */
@keyframes tokenBounce{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-4px);}
}