/* ==== UNNO — Card Game ==== */
:root{
  --bg: #ECEFEE;
  --bg2: #DDE5E2;
  --ink: #3D3A53;
  --ink-soft: #5e5a7a;
  --red:#E2616A;
  --yellow:#F1C24F;
  --green:#A7C97A;
  --blue:#3FB6E5;
  --dark:#1f1d2b;
  --shadow: 0 8px 22px rgba(61,58,83,.18);
  --shadow-lg: 0 18px 40px rgba(61,58,83,.28);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%;width:100%;overflow:hidden}
body{
  font-family: 'Fredoka', 'Fredoka One', system-ui, -apple-system, sans-serif;
  background:radial-gradient(circle at 30% 20%, #f5f7f6 0%, var(--bg) 60%, var(--bg2) 100%);
  color:var(--ink);
  user-select:none;
  -webkit-user-select:none;
  touch-action:manipulation;
}
button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit}
img{display:block;-webkit-user-drag:none;pointer-events:none}
input{font-family:inherit;color:inherit}

#app{position:fixed;inset:0;overflow:hidden}

/* ==== Background blobs ==== */
.bg-blob{position:absolute;border-radius:50%;filter:blur(60px);opacity:.45;z-index:0;pointer-events:none}
.bg-blob-a{width:380px;height:380px;background:#cfe3d3;top:-100px;left:-80px}
.bg-blob-b{width:480px;height:480px;background:#fde6c2;bottom:-120px;right:-120px}

/* ==== Screens ==== */
.screen{position:absolute;inset:0;display:none;flex-direction:column;padding:env(safe-area-inset-top,12px) 14px env(safe-area-inset-bottom,12px);z-index:2}
.screen.active{display:flex}
.screen-modal{display:none;align-items:center;justify-content:center;background:rgba(31,29,43,.4);backdrop-filter:blur(4px);z-index:5}
.screen-modal.active{display:flex}

/* ==== Top bar ==== */
.top-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 4px}
.icon-btn{width:48px;height:48px;display:grid;place-items:center;background:#fff;border-radius:50%;box-shadow:var(--shadow)}
.icon-btn img{width:24px;height:24px;object-fit:contain}
.icon-btn.ghost{background:rgba(255,255,255,.85)}

.coins-pill{display:inline-flex;align-items:center;gap:8px;background:#fff;border-radius:999px;padding:6px 16px 6px 8px;box-shadow:var(--shadow);font-weight:700}
.coins-pill img{width:30px;height:30px}
.coins-pill.big{font-size:22px;padding:10px 22px 10px 10px}
.coins-pill.big img{width:36px;height:36px}

/* ==== HOME ==== */
.screen-home{align-items:center;justify-content:space-between}
.logo-wrap{margin-top:10px;display:grid;place-items:center;flex:0 0 auto}
.logo-img{max-width:min(80vw,420px);height:auto;filter:drop-shadow(0 12px 16px rgba(61,58,83,.18))}

.players-pick{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%}
.pp-title{font-family:'Fredoka One',sans-serif;font-size:22px;color:var(--ink)}
.pp-row{display:flex;gap:14px;flex-wrap:wrap;justify-content:center}
.pp-card{
  width:96px;height:108px;background:#fff;border-radius:22px;
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;
  padding:8px;box-shadow:var(--shadow);position:relative;transition:transform .15s, box-shadow .15s;
  border:3px solid transparent;
}
.pp-card img{width:78px;height:70px;object-fit:contain}
.pp-card span{font-family:'Fredoka One',sans-serif;font-size:18px;color:var(--ink);position:absolute;top:6px;right:10px;background:var(--green);color:#fff;width:26px;height:26px;border-radius:50%;display:grid;place-items:center}
.pp-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.pp-card.selected{border-color:var(--green);transform:translateY(-3px);box-shadow:var(--shadow-lg)}

.big-play{padding:0;background:none;flex:0 0 auto}
.big-play img{width:min(70vw,300px);height:auto;transition:transform .15s}
.big-play:active img{transform:scale(.95)}

.home-nav{display:flex;gap:12px;justify-content:center;align-items:center;padding-bottom:6px}
.nav-btn img{width:74px;height:auto;transition:transform .15s}
.nav-btn:hover img{transform:translateY(-2px)}
.nav-pill{display:inline-block;padding:14px 24px;background:#fff;border-radius:999px;box-shadow:var(--shadow);color:var(--ink);font-weight:700;font-size:16px;font-family:'Fredoka One',sans-serif}

/* ==== Modal Cards ==== */
.modal-card{
  position:relative;background:#fff;border-radius:28px;padding:24px 22px;max-width:min(92vw,460px);width:100%;
  box-shadow:var(--shadow-lg);max-height:90vh;overflow:auto;
}
.modal-card h2{font-family:'Fredoka One',sans-serif;text-align:center;margin:6px 0 16px;color:var(--ink);font-size:26px}
.close-btn{position:absolute;top:12px;right:12px;width:38px;height:38px;border-radius:50%;background:var(--bg);display:grid;place-items:center;box-shadow:var(--shadow)}
.close-btn img{width:18px;height:18px}
.primary-btn{
  display:block;margin:14px auto 4px;background:var(--green);color:#fff;border-radius:18px;
  padding:12px 28px;font-weight:700;font-family:'Fredoka One',sans-serif;font-size:18px;
  box-shadow:0 6px 0 #87a85f, var(--shadow);transition:transform .1s, box-shadow .1s;
}
.primary-btn:active{transform:translateY(3px);box-shadow:0 3px 0 #87a85f, var(--shadow)}
.primary-btn img{width:140px;height:auto;margin:0 auto;display:block}
.primary-btn.ghost{background:#e2e6e4;box-shadow:0 6px 0 #b6bdba,var(--shadow);color:var(--ink)}

/* Profile */
.profile-row{display:flex;gap:14px;align-items:center;margin-bottom:14px}
.profile-avatar{width:90px;height:90px;border-radius:18px;box-shadow:var(--shadow)}
.profile-info{flex:1}
#profile-name{font-family:'Fredoka One',sans-serif;font-size:22px;color:var(--ink);border:none;background:var(--bg);border-radius:12px;padding:6px 12px;width:100%;margin-bottom:8px}
.profile-stats{display:flex;justify-content:space-between;gap:8px}
.profile-stats div{flex:1;background:var(--bg);border-radius:14px;padding:8px 6px;text-align:center}
.profile-stats b{font-family:'Fredoka One',sans-serif;font-size:20px;display:block}
.profile-stats span{font-size:12px;color:var(--ink-soft)}
.avatar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:8px}
.av-pick{background:var(--bg);border-radius:14px;padding:6px;transition:transform .1s}
.av-pick img{width:100%;height:auto;border-radius:10px}
.av-pick.selected{outline:3px solid var(--green);transform:translateY(-2px)}

/* Scores */
.scores-list{list-style:none;padding:0;margin:0}
.scores-list li{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--bg);border-radius:14px;margin-bottom:8px;font-weight:600}
.scores-list .rank{font-family:'Fredoka One',sans-serif;font-size:22px;width:32px;text-align:center;color:var(--green)}
.scores-list .rank.r1{color:#F1C24F}
.scores-list .rank.r2{color:#a5a8b1}
.scores-list .rank.r3{color:#cd8e5d}
.scores-list .name{flex:1}
.scores-list .score{font-family:'Fredoka One',sans-serif;color:var(--ink)}
.scores-list img{width:36px;height:36px;border-radius:10px}

/* Shop */
.shop-card .coins-pill{margin:0 auto 14px}
.shop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.shop-item{background:var(--bg);border-radius:18px;padding:12px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;box-shadow:0 4px 0 rgba(0,0,0,.04)}
.shop-item img{width:60px;height:60px;object-fit:contain}
.shop-item .amt{font-family:'Fredoka One',sans-serif;color:var(--ink);font-size:18px}
.shop-item button{background:var(--green);color:#fff;font-family:'Fredoka One',sans-serif;border-radius:14px;padding:8px 14px;font-size:14px;box-shadow:0 4px 0 #87a85f}
.shop-item button:disabled{background:#c3c8c5;box-shadow:0 4px 0 #9aa19d;cursor:not-allowed}
.bonus-row{display:flex;align-items:center;gap:12px;background:var(--bg);border-radius:18px;padding:10px}
.bonus-row img{width:64px;height:auto}
.bonus-row h3{margin:0 0 4px;font-family:'Fredoka One',sans-serif;font-size:16px}
.bonus-row p{margin:0;font-size:12px;color:var(--ink-soft)}
.bonus-row .primary-btn{margin:0;padding:8px 14px;font-size:14px}

/* ==== GAME ==== */
.screen-game{padding:0;display:none}
.screen-game.active{display:flex;flex-direction:column;height:100%}
.game-top{display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top,10px) 12px 8px;gap:8px;z-index:3;position:relative}
.turn-box{
  flex:1;background:#fff;border-radius:999px;padding:10px 18px;box-shadow:var(--shadow);
  font-family:'Fredoka One',sans-serif;color:var(--ink);font-size:16px;text-align:center;
  display:flex;align-items:center;justify-content:center;gap:8px;max-width:340px;margin:0 auto;
  transition:background .25s;
}
.turn-box.is-player{background:linear-gradient(90deg,#A7C97A,#bbd494);color:#fff}
.dir-indicator{font-size:18px;color:var(--ink-soft);font-family:sans-serif}
.turn-box.is-player .dir-indicator{color:#fff}

.board{flex:1;position:relative;display:grid;
  grid-template-columns:1fr 2fr 1fr;
  grid-template-rows:auto 1fr auto;
  grid-template-areas:
    ". top ."
    "left center right"
    "player player player";
  gap:6px;padding:4px 10px 6px;min-height:0;
}

.opponent-slot{display:flex;align-items:center;justify-content:center;min-height:0}
.slot-top{grid-area:top;flex-direction:column-reverse}
.slot-left{grid-area:left;flex-direction:column}
.slot-right{grid-area:right;flex-direction:column}

.center-stack{
  grid-area:center;display:flex;align-items:center;justify-content:center;gap:16px;position:relative;
}
.pile{position:relative;width:96px;height:142px}
.pile-draw img{width:100%;height:100%;object-fit:contain;cursor:pointer;filter:drop-shadow(var(--shadow));transition:transform .15s}
.pile-draw:hover img{transform:translateY(-3px)}
.pile-draw.can-draw img{animation:pulse 1.4s ease-in-out infinite}
.pile-count{position:absolute;top:-6px;right:-6px;background:var(--ink);color:#fff;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700}
.pile-discard{display:flex;align-items:center;justify-content:center}
.pile-discard .card-face{width:100%;height:100%}

.player-area{grid-area:player;display:flex;flex-direction:column;align-items:center;gap:6px;padding:4px 8px 10px}
.player-status{font-family:'Fredoka One',sans-serif;color:var(--ink);font-size:14px;opacity:.8;height:18px}
.hand{display:flex;align-items:flex-end;justify-content:center;flex-wrap:nowrap;min-height:160px;width:100%;overflow:visible;position:relative}
.player-actions{display:flex;gap:10px}
.uno-btn{background:linear-gradient(180deg,#E2616A,#c44d56);color:#fff;font-family:'Fredoka One',sans-serif;
  padding:10px 22px;border-radius:999px;box-shadow:0 5px 0 #963a41, var(--shadow);font-size:16px;letter-spacing:1px;
  transition:transform .1s, box-shadow .1s;
}
.uno-btn:active{transform:translateY(3px);box-shadow:0 2px 0 #963a41, var(--shadow)}
.uno-btn.hidden{display:none}

/* Opponent presentation */
.opponent{
  display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.7);border-radius:18px;padding:6px 10px;
  box-shadow:var(--shadow);position:relative;
}
.opponent.vertical{flex-direction:column;padding:8px}
.opponent.vertical .opp-cards{flex-direction:column}
.opponent.is-turn{background:linear-gradient(135deg,#A7C97A,#bcd49a);color:#fff;animation:glow 1.4s ease-in-out infinite}
.opponent img.opp-av{width:46px;height:46px;border-radius:12px;box-shadow:0 4px 8px rgba(0,0,0,.15)}
.opponent .opp-name{font-family:'Fredoka One',sans-serif;font-size:14px}
.opponent .opp-count{font-size:12px;font-weight:600}
.opp-cards{display:flex;align-items:center;flex-wrap:nowrap}
.opp-cards img{width:30px;height:auto;margin-left:-18px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}
.opp-cards img:first-child{margin-left:0}
.opponent.vertical .opp-cards img{margin-left:0;margin-top:-30px}
.opponent.vertical .opp-cards img:first-child{margin-top:0}
.opponent .uno-tag{position:absolute;top:-10px;right:-10px;background:var(--red);color:#fff;font-family:'Fredoka One',sans-serif;font-size:11px;padding:2px 8px;border-radius:999px;box-shadow:var(--shadow)}

/* Card render */
.card-face{display:inline-block;width:90px;height:135px;border-radius:14px;position:relative;cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease;
  filter:drop-shadow(0 6px 8px rgba(0,0,0,.18));
}
.card-face img{width:100%;height:100%;object-fit:contain;border-radius:14px}
.card-face.playable{cursor:pointer}
.card-face.disabled{filter:grayscale(.5) brightness(.85) drop-shadow(0 4px 6px rgba(0,0,0,.15));cursor:not-allowed}
.card-face:not(.disabled):hover{transform:translateY(-10px)}

.hand .card-face{margin-left:-30px}
.hand .card-face:first-child{margin-left:0}

/* Color picker */
.modal-overlay{position:absolute;inset:0;background:rgba(31,29,43,.55);display:flex;align-items:center;justify-content:center;z-index:9;backdrop-filter:blur(3px)}
.modal-overlay.hidden{display:none}
.color-card{background:#fff;border-radius:24px;padding:22px;box-shadow:var(--shadow-lg);text-align:center}
.color-card h3{font-family:'Fredoka One',sans-serif;color:var(--ink);margin:0 0 14px}
.color-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.col-pick{width:72px;height:96px;border-radius:14px;box-shadow:0 5px 0 rgba(0,0,0,.18), 0 8px 12px rgba(0,0,0,.15);transition:transform .1s}
.col-pick:active{transform:translateY(3px);box-shadow:0 2px 0 rgba(0,0,0,.18), 0 4px 6px rgba(0,0,0,.15)}
.col-pick[data-color=red]{background:var(--red)}
.col-pick[data-color=yellow]{background:var(--yellow)}
.col-pick[data-color=green]{background:var(--green)}
.col-pick[data-color=blue]{background:var(--blue)}

/* Pause/End */
.pause-card,.end-card{text-align:center;padding:20px}
.pause-card h2{font-size:30px}
.end-card img#end-banner{max-width:80%;margin:0 auto 8px;height:auto}
.end-stats{background:var(--bg);border-radius:16px;padding:12px;margin:6px 0 14px}
.end-stats .row{display:flex;justify-content:space-between;font-weight:600;padding:4px 0}
.end-stats .row b{font-family:'Fredoka One',sans-serif}
.primary-btn img{width:160px}

/* Toast */
.toast{position:absolute;top:62px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:999px;font-weight:600;z-index:20;box-shadow:var(--shadow-lg);animation:fadeIn .25s ease}
.toast.hidden{display:none}

/* Discard highlight color */
.color-ring{position:absolute;inset:-8px;border-radius:50%;pointer-events:none;opacity:.6;filter:blur(8px)}
.color-ring[data-c=red]{background:radial-gradient(circle,var(--red) 0%,transparent 70%)}
.color-ring[data-c=yellow]{background:radial-gradient(circle,var(--yellow) 0%,transparent 70%)}
.color-ring[data-c=green]{background:radial-gradient(circle,var(--green) 0%,transparent 70%)}
.color-ring[data-c=blue]{background:radial-gradient(circle,var(--blue) 0%,transparent 70%)}

/* Animations */
@keyframes pulse{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-4px) scale(1.04)}}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 rgba(167,201,122,.7), var(--shadow)}50%{box-shadow:0 0 0 10px rgba(167,201,122,0), var(--shadow)}}
@keyframes fadeIn{from{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translateX(-50%)}}
@keyframes flyToDiscard{
  from{transform:translate(var(--fx,0),var(--fy,0)) rotate(0)}
  to{transform:translate(0,0) rotate(var(--rot,0deg))}
}
@keyframes dealIn{
  from{opacity:0;transform:translateY(-200px) scale(.3)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.card-face.deal-anim{animation:dealIn .35s ease-out backwards}
.card-face.fly-anim{animation:flyToDiscard .35s ease-out forwards}

.hidden{display:none!important}

/* ============== RESPONSIVE ============== */

/* Tall phones / portrait */
@media (max-width: 720px) {
  .pp-card{width:84px;height:96px}
  .pp-card img{width:62px;height:54px}
  .logo-img{max-width:70vw}
  .pile{width:78px;height:115px}
  .card-face{width:74px;height:110px}
  .hand .card-face{margin-left:-38px}
  .turn-box{font-size:14px;padding:8px 14px}
  .nav-btn img{width:58px}
  .nav-pill{padding:10px 18px;font-size:14px}
  .opponent .opp-av{width:38px;height:38px}
  .opp-cards img{width:24px;margin-left:-14px}
  .opponent .opp-name{font-size:12px}
  .opponent.vertical .opp-cards img{margin-top:-22px}
}

/* Very small */
@media (max-width: 380px){
  .hand{min-height:130px}
  .card-face{width:64px;height:96px}
  .hand .card-face{margin-left:-38px}
  .pile{width:66px;height:98px}
}

/* Wide (PC / Landscape) */
@media (min-width: 900px) and (orientation:landscape) {
  .screen-home{justify-content:center;gap:18px}
  .logo-img{max-width:380px}
  .board{
    grid-template-columns:1fr 3fr 1fr;
    padding:8px 28px 12px;
    gap:8px;
  }
  .pile{width:120px;height:175px}
  .card-face{width:104px;height:152px}
  .hand{min-height:180px}
  .hand .card-face{margin-left:-50px}
  .opponent .opp-av{width:60px;height:60px}
  .opp-cards img{width:36px;margin-left:-22px}
}

/* 2-player (face-off): hide left & right slots */
.board[data-players="2"] .slot-left,
.board[data-players="2"] .slot-right{display:none}
.board[data-players="2"]{grid-template-areas:". top ." ". center ." "player player player"}
.board[data-players="2"] .slot-top{justify-self:center;width:100%}

/* 3-player: top + left only — show two side opponents */
.board[data-players="3"] .slot-right{display:none}
.board[data-players="3"]{grid-template-areas:". top ." "left center ." "player player player"}

/* 4-player: all three */
.board[data-players="4"]{grid-template-areas:". top ." "left center right" "player player player"}
