:root{
  --felt:#0f5a3a; --felt-2:#062c1e;
  --wood:#864216; --wood-2:#5a2a09;
  --gold:#ffd34d; --gold-2:#eaa916; --gold-d:#a9760a;
  --cream:#fff7e6; --cream-dim:#d6c7a3;
  --ink:#3a230c;
  --panel:#0f4a33; --panel-2:#0a3a28; --panel-line:rgba(255,211,77,.40);
  --green-btn:#34c759; --green-btn-2:#1f9e44; --green-btn-d:#137a31;
  --magenta:#ff5c8a; --cyan:#33d6e6; --lime:#7ed957; --yellow:#ffd34d; --violet:#b388ff; --orange:#ff9f43;
  --primary:#eaa916; --dim:#d6c7a3;
  --shadow:0 10px 28px rgba(0,0,0,.35);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:'Nunito',system-ui,sans-serif;color:var(--cream);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;
  background:
    radial-gradient(120% 90% at 50% 0%, #15724a, transparent 60%),
    radial-gradient(80% 60% at 50% 100%, rgba(0,0,0,.45), transparent 70%),
    linear-gradient(165deg,var(--felt),var(--felt-2));
  background-attachment:fixed;}
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.4;
  background-image:radial-gradient(rgba(255,255,255,.04) 1px,transparent 1.5px);background-size:14px 14px}
.wrap{position:relative;z-index:1;max-width:1140px;margin:0 auto;padding:22px 18px 56px}
.fred{font-family:'Fredoka',sans-serif}

.logo{font-family:'Fredoka',sans-serif;font-size:clamp(22px,4.4vw,30px);font-weight:700;letter-spacing:.3px;color:var(--gold);
  text-shadow:0 2px 0 var(--gold-d),0 4px 10px rgba(0,0,0,.4)}
.logo span{display:inline;animation:none}

header.lobby-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:26px;
  background:linear-gradient(180deg,var(--wood),var(--wood-2));border:2px solid var(--gold-2);border-radius:18px;padding:12px 18px;
  box-shadow:0 8px 22px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.12)}
.player-pill{display:flex;align-items:center;gap:11px}
.av{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-family:'Fredoka';font-weight:700;font-size:19px;
  background:linear-gradient(180deg,#ffe488,var(--gold-2));color:var(--ink);border:2px solid var(--cream);box-shadow:0 3px 8px rgba(0,0,0,.35)}
.player-meta .pname{font-family:'Fredoka';font-weight:600;font-size:16px;color:var(--cream);line-height:1.1}
.player-meta .plevel{font-size:12px;font-weight:700;color:var(--gold)}
.currency{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cur-chip{font-family:'Fredoka';font-weight:600;font-size:14px;color:var(--cream);background:rgba(0,0,0,.32);border:1.5px solid var(--panel-line);
  border-radius:999px;padding:6px 13px;display:flex;align-items:center;gap:5px}
.cur-chip.gem{border-color:rgba(120,220,255,.5)}

.btn{font-family:'Fredoka',sans-serif;font-weight:600;cursor:pointer;border:1px solid rgba(0,0,0,.18);border-radius:14px;padding:12px 22px;font-size:16px;color:var(--ink);
  background:linear-gradient(180deg,#ffe488,var(--gold) 45%,var(--gold-2));text-shadow:0 1px 0 rgba(255,255,255,.45);
  box-shadow:0 5px 0 var(--gold-d),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.6);transition:.1s}
.btn:hover{filter:brightness(1.05)}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--gold-d),0 3px 8px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.6)}
.btn.lime{background:linear-gradient(180deg,#7df09a,var(--green-btn) 45%,var(--green-btn-2));color:#053314;text-shadow:0 1px 0 rgba(255,255,255,.3);
  box-shadow:0 5px 0 var(--green-btn-d),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.5)}
.btn.lime:active{transform:translateY(4px);box-shadow:0 1px 0 var(--green-btn-d),0 3px 8px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.5)}
.btn.ghost{background:rgba(255,255,255,.10);border:1.5px solid var(--panel-line);color:var(--cream);text-shadow:none;box-shadow:none}
.btn.ghost:hover{background:rgba(255,255,255,.18)}
.btn.sm{padding:9px 16px;font-size:14px;box-shadow:0 4px 0 var(--gold-d),0 6px 12px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.6)}
.btn.ghost.sm{box-shadow:none}
.btn.sm:active{transform:translateY(3px)}

.screen{display:none}.screen.active{display:block;animation:fade .3s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.login-shell{min-height:82vh;display:grid;place-items:center}
.login-card{width:min(420px,94vw);background:linear-gradient(180deg,var(--panel),var(--panel-2));border:2px solid var(--gold-2);border-radius:24px;padding:36px 30px;
  box-shadow:0 22px 60px rgba(0,0,0,.55),inset 0 0 0 4px rgba(255,255,255,.04)}
.login-card .logo{text-align:center}
.login-card h2{font-family:'Fredoka';font-size:20px;font-weight:600;text-align:center;margin-bottom:6px;color:var(--gold)}
.sub{text-align:center;color:var(--cream-dim);font-size:14px;margin-bottom:22px}
label{display:block;font-size:13px;color:var(--cream-dim);margin:14px 0 6px;font-weight:700}
.fld{width:100%;background:rgba(0,0,0,.28);border:1.5px solid var(--panel-line);border-radius:12px;color:var(--cream);font-family:'Nunito';font-weight:600;font-size:15px;padding:12px 14px;outline:none;transition:.15s}
.fld::placeholder{color:rgba(214,199,163,.55)}
.fld:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(255,211,77,.22)}
.phone-row{display:flex;gap:8px}.phone-row .cc{width:78px;text-align:center}
.full{width:100%;margin-top:22px;display:flex;justify-content:center}
.otp-note{margin-top:16px;font-size:13px;background:rgba(255,211,77,.12);border:1px solid var(--gold-2);border-radius:12px;padding:11px 13px;color:var(--gold)}
.otp-note b{font-family:'Fredoka';font-size:20px;letter-spacing:3px;display:block;margin-top:6px;color:var(--cream)}
.err{color:#ff8a8a;font-size:13px;margin-top:10px;min-height:16px;font-weight:700}
.otp-inputs{display:flex;gap:8px;justify-content:space-between;margin-top:8px}
.otp-inputs input{width:100%;aspect-ratio:1;text-align:center;font-family:'Fredoka';font-weight:600;font-size:22px;background:rgba(0,0,0,.3);border:1.5px solid var(--panel-line);border-radius:12px;color:var(--cream);outline:none}
.otp-inputs input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(255,211,77,.22)}
.link{color:var(--gold);cursor:pointer;font-size:13px;font-weight:700}
.link:hover{text-decoration:underline}
.timer{text-align:center;color:var(--cream-dim);font-size:13px;margin-top:14px}

.hub-grid{display:grid;grid-template-columns:1fr 320px;gap:24px}
@media(max-width:880px){.hub-grid{grid-template-columns:1fr}}
.section-title{font-family:'Fredoka';font-size:16px;font-weight:600;color:var(--gold);margin-bottom:16px;letter-spacing:.3px}
.games{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:16px}
.gcard{position:relative;border:2px solid var(--gold-2);border-radius:18px;padding:22px 16px 18px;cursor:pointer;overflow:hidden;text-align:center;
  background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(0,0,0,.20));box-shadow:0 8px 20px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.18);transition:.15s}
.gcard:hover{transform:translateY(-5px) scale(1.02);box-shadow:0 16px 34px rgba(0,0,0,.45);border-color:var(--gold)}
.gcard .ico{font-size:46px;display:block;margin-bottom:10px;filter:drop-shadow(0 3px 4px rgba(0,0,0,.45))}
.gcard h3{font-family:'Fredoka';font-size:16px;font-weight:600;margin-bottom:3px;color:var(--gold)}
.gcard small{color:var(--cream-dim);font-size:12.5px;font-weight:600}
.gcard .glow{display:none}
.gcard .play{position:absolute;top:10px;right:13px;font-size:11px;font-weight:600;color:var(--gold);opacity:0;transition:.2s;font-family:'Fredoka'}
.gcard:hover .play{opacity:1}

.board-panel{background:linear-gradient(180deg,var(--panel),var(--panel-2));border:2px solid var(--gold-2);border-radius:18px;padding:18px;
  box-shadow:0 10px 26px rgba(0,0,0,.4);height:fit-content;position:sticky;top:16px}
.lb-filter{width:100%;background:rgba(0,0,0,.3);border:1.5px solid var(--panel-line);border-radius:10px;color:var(--cream);font-family:'Nunito';font-weight:700;padding:10px;margin-bottom:12px;font-size:14px}
.lb-row{display:flex;align-items:center;gap:10px;padding:9px 8px;border-radius:10px}
.lb-row:nth-child(odd){background:rgba(0,0,0,.18)}
.lb-rank{font-family:'Fredoka';font-weight:700;font-size:15px;width:26px;color:var(--cream-dim);text-align:center}
.lb-rank.r1{color:#ffd700}.lb-rank.r2{color:#dfe6ee}.lb-rank.r3{color:#ec9b53}
.lb-row .nm{flex:1;font-weight:700;font-size:14px;color:var(--cream);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.lb-row .gm{font-size:12px;color:var(--cream-dim);font-weight:600}
.lb-row .sc{font-family:'Fredoka';font-weight:600;font-size:15px;color:var(--gold)}
.lb-empty{color:var(--cream-dim);text-align:center;padding:26px 0;font-size:14px}

.game-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.game-title{font-family:'Fredoka';font-size:19px;font-weight:600;color:var(--gold)}
.stage{display:flex;flex-direction:column;align-items:center;gap:14px}
canvas{background:#0a3325;border:2px solid var(--gold-2);border-radius:16px;box-shadow:0 10px 26px rgba(0,0,0,.4);max-width:100%;height:auto;touch-action:none;outline:none}
.score-chip{font-family:'Fredoka';font-weight:600;font-size:15px;color:var(--ink);background:linear-gradient(180deg,#ffe488,var(--gold-2));padding:7px 16px;border-radius:999px;border:1px solid var(--gold-d);box-shadow:0 3px 8px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.5)}
.chips{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.hint{color:var(--cream-dim);font-size:13px;text-align:center;max-width:460px;line-height:1.6;font-weight:600}
.dpad{display:grid;grid-template-columns:repeat(3,56px);grid-template-rows:repeat(2,56px);gap:7px;margin-top:4px}
.dpad button{font-size:20px;border-radius:12px;border:2px solid var(--gold-2);background:rgba(0,0,0,.28);color:var(--gold);cursor:pointer;box-shadow:0 4px 0 rgba(0,0,0,.3)}
.dpad button:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(0,0,0,.3)}
.cd-up{grid-column:2}.cd-left{grid-column:1;grid-row:2}.cd-down{grid-column:2;grid-row:2}.cd-right{grid-column:3;grid-row:2}

.g2048{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:#5a2a09;padding:10px;border-radius:14px;border:2px solid var(--gold-2);width:min(360px,92vw);box-shadow:0 10px 26px rgba(0,0,0,.4)}
.tile{aspect-ratio:1;border-radius:10px;display:grid;place-items:center;font-family:'Fredoka';font-weight:600;font-size:clamp(16px,5vw,26px);background:rgba(255,255,255,.06);transition:.12s}
.mem-grid{display:grid;gap:10px;width:min(380px,92vw)}
.mcard{aspect-ratio:1;border-radius:12px;cursor:pointer;position:relative;transform-style:preserve-3d;transition:transform .35s;font-size:clamp(26px,9vw,40px)}
.mcard.flip{transform:rotateY(180deg)}
.mface{position:absolute;inset:0;display:grid;place-items:center;border-radius:12px;backface-visibility:hidden}
.mback{background:linear-gradient(180deg,#ffe488,var(--gold-2));color:var(--ink);font-weight:800;border:2px solid var(--cream)}
.mfront{background:#0a3a28;border:2px solid var(--gold-2);transform:rotateY(180deg)}
.mcard.done .mfront{border-color:var(--green-btn);box-shadow:0 0 0 2px rgba(52,199,89,.4)}
.ttt{display:grid;grid-template-columns:repeat(3,86px);grid-template-rows:repeat(3,86px);gap:8px}
.ttt .c{border-radius:12px;background:rgba(0,0,0,.28);border:2px solid var(--gold-2);display:grid;place-items:center;font-family:'Fredoka';font-weight:600;font-size:34px;cursor:pointer}
.ttt .c.x{color:var(--gold)}
.ttt .c.o{color:var(--magenta)}
.spot-wrap{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}
.spot-wrap svg{border:2px solid var(--gold-2);border-radius:12px;background:#fff;cursor:crosshair;box-shadow:0 10px 26px rgba(0,0,0,.4)}
.odtile{aspect-ratio:1;display:grid;place-items:center;font-size:clamp(20px,6.5vw,38px);background:rgba(0,0,0,.28);border:2px solid var(--gold-2);border-radius:10px;cursor:pointer;transition:.1s}
.odtile:hover{background:rgba(255,255,255,.10);transform:scale(1.04)}

.overlay{position:fixed;inset:0;background:rgba(3,20,12,.7);display:none;place-items:center;z-index:500;backdrop-filter:blur(4px)}
.overlay.show{display:grid;animation:fade .25s}
.modal{background:linear-gradient(180deg,var(--panel),var(--panel-2));border:2px solid var(--gold-2);border-radius:22px;padding:32px 28px;width:min(372px,92vw);text-align:center;box-shadow:0 26px 70px rgba(0,0,0,.6)}
.modal h3{font-family:'Fredoka';font-size:20px;font-weight:600;color:var(--gold);margin-bottom:8px}
.modal .big{font-family:'Fredoka';font-size:30px;font-weight:700;color:var(--cream);margin:12px 0}
.modal p{color:var(--cream-dim);margin-bottom:18px;line-height:1.5;font-size:14px;font-weight:600}
.modal .btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:linear-gradient(180deg,var(--wood),var(--wood-2));border:2px solid var(--gold-2);color:var(--cream);padding:12px 18px;border-radius:12px;opacity:0;transition:.3s;z-index:800;font-weight:700;font-size:14px;box-shadow:0 8px 20px rgba(0,0,0,.4)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.footer{margin-top:42px;text-align:center;color:var(--cream-dim);font-size:12px;line-height:1.7;font-weight:600}

#loginBg{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;pointer-events:none}
#loginScreen .login-shell{position:relative;z-index:1}

.landing-cover{position:fixed;inset:0;overflow:hidden;background:#160630;z-index:0}
.landing-art{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100vw;height:100vh}
.landing-art img{width:100%;height:100%;display:block;object-fit:cover}
.board-glow{position:absolute;left:50%;top:45%;width:46%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;mix-blend-mode:screen;filter:blur(6px);pointer-events:none;
  background:radial-gradient(circle, rgba(255,228,150,.5), rgba(255,180,80,.16) 45%, transparent 70%);animation:bglow 2.6s ease-in-out infinite}
@keyframes bglow{0%,100%{opacity:.4;transform:translate(-50%,-50%) scale(.9)}50%{opacity:.85;transform:translate(-50%,-50%) scale(1.08)}}
.board-ring{position:absolute;left:50%;top:45%;width:40%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;border:2px dashed rgba(255,228,150,.4);mix-blend-mode:screen;pointer-events:none;animation:bspin 16s linear infinite}
@keyframes bspin{to{transform:translate(-50%,-50%) rotate(360deg)}}
.spk{position:absolute;width:12px;height:12px;border-radius:50%;mix-blend-mode:screen;pointer-events:none;background:radial-gradient(circle,#fff,rgba(255,255,255,0) 70%);box-shadow:0 0 9px #fff;animation:twk 1.9s ease-in-out infinite}
.spk.a{left:30%;top:36%;animation-delay:0s}.spk.b{left:68%;top:38%;animation-delay:.5s}.spk.c{left:38%;top:54%;animation-delay:.9s}.spk.d{left:64%;top:52%;animation-delay:1.3s}
.spk.e{left:50%;top:33%;animation-delay:.3s;background:radial-gradient(circle,#ffe488,transparent 70%);box-shadow:0 0 11px #ffd34d}
@keyframes twk{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.35)}}
.play-hotspot{position:absolute;left:16%;top:82%;width:68%;height:10%;background:transparent;border:none;border-radius:18px;cursor:pointer;animation:hot 1.6s ease-in-out infinite}
@keyframes hot{0%,100%{box-shadow:0 0 0 0 rgba(150,255,90,0)}50%{box-shadow:0 0 26px 6px rgba(150,255,90,.5)}}
.popup-close{position:absolute;top:10px;right:12px;width:32px;height:32px;border-radius:50%;border:1.5px solid var(--panel-line);background:rgba(0,0,0,.28);color:var(--gold);font-size:20px;line-height:1;cursor:pointer;z-index:2}
.popup-close:hover{background:rgba(0,0,0,.45)}

.hs{position:absolute;cursor:pointer;border:none;background:transparent;display:block;border-radius:8px;transition:.12s}
.hs:hover{background:rgba(255,255,255,.13)}
.hs-gp{left:32%;top:92%;width:17.5%;height:3.6%}
.hs-as{left:50%;top:92%;width:18.5%;height:3.6%}
.hs-fb{left:27.2%;top:96.5%;width:5.8%;height:3.3%;border-radius:50%}
.hs-ig{left:33.3%;top:96.5%;width:5.8%;height:3.3%;border-radius:50%}
.hs-yt{left:39.2%;top:96.5%;width:5.8%;height:3.3%;border-radius:50%}
.hs-tc{left:45%;top:96.5%;width:29%;height:3.3%}
.terms-card h2{font-family:'Fredoka';color:var(--gold);text-align:center;margin-bottom:10px;font-size:20px}
.terms-body{overflow-y:auto;color:var(--cream);font-size:13.5px;line-height:1.6;padding-right:8px}
.terms-body h3{color:var(--gold);font-size:14.5px;margin:12px 0 4px;font-family:'Fredoka';font-weight:600}
.terms-body p{margin-bottom:8px;color:var(--cream-dim)}
