/* ── LOCAL FONTS ── */
@font-face{font-family:'FredokaOne';src:url('fonts/FredokaOne-Regular.ttf')format('truetype'),url('fonts/FredokaOne-Regular.otf')format('opentype');font-weight:400;font-style:normal;}
@font-face{font-family:'Nunito';src:url('fonts/Nunito-Regular.ttf')format('truetype'),url('fonts/Nunito-Regular.otf')format('opentype');font-weight:400;font-style:normal;}

/* ── VARS ── */
:root{
  --p1:#FF4158;--p2:#2E8FE8;
  --gold:#FFD700;--goldD:#C8930A;
  --bg:#160038;
  --card:rgba(255,255,255,0.07);
  --border:rgba(255,255,255,0.13);
  --r:16px;--r2:24px;
  --ff:'FredokaOne','Fredoka One','Fredoka',Impact,sans-serif;
  --fn:'Nunito','Nunito Sans',Arial,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{width:100%;height:100%;overflow:hidden;touch-action:none;
  background:var(--bg);color:#F0E8FF;font-family:var(--ff);}

/* BG decoration */
body::before,body::after{content:'';position:fixed;border-radius:50%;pointer-events:none;z-index:0;}
body::before{width:420px;height:420px;background:rgba(110,0,220,0.18);top:-15%;left:-10%;animation:bob 8s ease-in-out infinite;}
body::after{width:300px;height:300px;background:rgba(0,180,255,0.12);bottom:-8%;right:-6%;animation:bob 11s ease-in-out infinite reverse;}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-20px);}}

/* SCREENS */
/* ── SPLASH — TAP TO PLAY ── */
#sSplash{
  background:radial-gradient(ellipse 120% 120% at 50% 45%,#2A0060,#0A0020);
  gap:40px;cursor:pointer;z-index:60;
  justify-content:flex-start;padding-top:270px;
}
.sp-logo{
  width:auto;height:auto;max-width:86%;max-height:340px;display:block;
  filter:drop-shadow(0 0 26px rgba(255,180,0,0.55)) drop-shadow(0 8px 18px rgba(0,0,0,0.7));
  animation:ldLogoAnim 2.6s ease-in-out infinite;
}
.sp-tap{
  font-family:var(--ff);font-size:38px;letter-spacing:2px;color:#FFD700;
  text-shadow:0 0 18px rgba(255,200,0,0.75),0 3px 8px rgba(0,0,0,0.8);
  animation:tapBlink 1.1s ease-in-out infinite;text-align:center;
}
@keyframes tapBlink{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.25;transform:scale(.97);}}
.sp-brand{
  position:absolute;bottom:70px;left:0;right:0;
  display:flex;flex-direction:column;align-items:center;gap:2px;
}
.sp-mapi{
  width:auto;height:auto;max-width:60%;max-height:130px;display:block;
  filter:drop-shadow(0 4px 12px rgba(0,0,0,0.6));
}
.sp-brand-txt{
  font-family:var(--ff);font-size:30px;letter-spacing:12px;
  color:#FF3B1F;text-shadow:0 2px 6px rgba(0,0,0,0.8);margin-top:-6px;
}

/* ── APP SCALE CONTAINER (fixed base, scaled via JS) ── */
@keyframes goldG{0%,100%{filter:drop-shadow(0 0 6px rgba(255,180,0,0.4));}50%{filter:drop-shadow(0 0 16px rgba(255,210,0,0.85));}}
#app{
  position:fixed;top:0;left:0;
  width:720px;height:1280px;
  transform-origin:top left;
  overflow:hidden;
  background:var(--bg);
}
.screen{display:none;position:absolute;inset:0;z-index:1;align-items:center;justify-content:center;flex-direction:column;}
.screen.active{display:flex;}

/* ─── MENU ─── */
#sMenu{gap:24px;padding:12px;justify-content:center;overflow-y:auto;overflow-x:hidden;}
#sMenu.active{display:flex;}

.logo{text-align:center;line-height:1;}
/* .logo-main and .logo-spin removed — replaced by logo image */
/* Fallback text logos (shown only if logo.png fails to load) */
.ld-title-fb,.logo-main-fb{
  font-family:var(--ff);font-weight:400;letter-spacing:2px;
  background:linear-gradient(135deg,#FFD700 0%,#FF8C00 45%,#FFD700 85%,#FFF8C0 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  filter:drop-shadow(0 4px 12px rgba(255,180,0,0.4));
  animation:menuLogoGlow 2.5s ease-in-out infinite;
}
.ld-title-fb{font-size:64px;}
.logo-main-fb{font-size:56px;}

.menu-logo{
  width:auto;height:auto;
  max-width:min(88%,560px);
  max-height:280px;
  display:block;margin:0 auto;
  filter:drop-shadow(0 0 14px rgba(255,180,0,0.45)) drop-shadow(0 4px 10px rgba(0,0,0,0.65));
  animation:menuLogoGlow 3s ease-in-out infinite;
}
@keyframes menuLogoGlow{
  0%,100%{filter:drop-shadow(0 0 10px rgba(255,180,0,0.3)) drop-shadow(0 3px 8px rgba(0,0,0,0.6));}
  50%{filter:drop-shadow(0 0 26px rgba(255,210,0,0.8)) drop-shadow(0 6px 14px rgba(0,0,0,0.7));}
}
.logo-sub{font-family:var(--fn);font-size:20px;letter-spacing:5px;color:rgba(255,220,120,0.65);margin-top:6px;}


.mini-board{display:grid;grid-template-columns:repeat(8,46px);grid-template-rows:repeat(8,46px);
  border-radius:8px;overflow:hidden;border:3px solid var(--gold);
  box-shadow:0 0 20px rgba(255,200,0,0.25),0 6px 20px rgba(0,0,0,0.4);}
.mc{display:flex;align-items:center;justify-content:center;}
.mc-p{width:70%;height:70%;border-radius:50%;}
.mc-p1{background:radial-gradient(circle at 35% 30%,#FF8090,#C01830);}
.mc-p2{background:radial-gradient(circle at 35% 30%,#80B8FF,#1060C0);}

.sect-label{font-family:var(--fn);font-size:16px;font-weight:700;letter-spacing:4px;color:rgba(200,180,255,0.4);text-align:center;}
.diff-row{display:flex;gap:7px;}
.btn-diff{padding:14px 32px;font-family:var(--ff);font-size:24px;
  background:var(--card);border:1.5px solid var(--border);border-radius:50px;
  color:#C8B8F0;cursor:pointer;transition:all .2s;}
.btn-diff.easy.on{background:linear-gradient(135deg,#11998E,#38EF7D);color:#004A20;border-color:transparent;box-shadow:0 4px 14px rgba(56,239,125,0.3);}
.btn-diff.med.on{background:linear-gradient(135deg,#F7971E,#FFD200);color:#5A2800;border-color:transparent;box-shadow:0 4px 14px rgba(255,210,0,0.3);}
.btn-diff.hard.on{background:linear-gradient(135deg,#C62828,#FF5252);color:#fff;border-color:transparent;box-shadow:0 4px 14px rgba(255,80,80,0.35);}

.btn-play{width:480px;padding:24px 0;font-family:var(--ff);font-size:30px;
  border:none;border-radius:50px;cursor:pointer;transition:all .2s;}
.btn-play:hover{transform:translateY(-3px);filter:brightness(1.1);}
.btn-play:active{transform:translateY(-1px);}
.btn-pvc{background:linear-gradient(135deg,#7B2FBE,#C56EFF);color:#fff;box-shadow:0 6px 22px rgba(123,47,190,0.4);}
.btn-pvp{background:linear-gradient(135deg,#1565C0,#42A5F5);color:#fff;box-shadow:0 6px 22px rgba(21,101,192,0.4);}

.footer{font-family:var(--fn);font-size:15px;color:rgba(200,180,255,0.2);letter-spacing:3px;}

/* ─── GAME SCREEN ─── */
#sGame{background:radial-gradient(ellipse 120% 100% at 50% 50%,#1E0048,#080015);padding:6px;}

/* SHAKE */
#shakeWrap{display:flex;flex-direction:column;align-items:center;gap:0;width:100%;}
#shakeWrap.shaking{animation:scrShake .36s ease-in-out;}
@keyframes scrShake{
  0%,100%{transform:translate(0,0);}
  10%{transform:translate(-9px,-5px) rotate(-.5deg);}
  22%{transform:translate(9px,6px) rotate(.4deg);}
  34%{transform:translate(-7px,4px) rotate(-.35deg);}
  46%{transform:translate(6px,-5px) rotate(.25deg);}
  58%{transform:translate(-4px,3px);}
  70%{transform:translate(3px,-2px);}
  82%{transform:translate(-2px,2px);}
  92%{transform:translate(1px,-1px);}
}

/* Desktop: side panels */
.game-inner{display:flex;align-items:center;gap:12px;}
.pp{width:108px;display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:13px 7px;background:var(--card);border:1.5px solid var(--border);
  border-radius:var(--r2);backdrop-filter:blur(6px);flex-shrink:0;}
.pp-dot{width:11px;height:11px;border-radius:50%;transition:all .4s;opacity:.2;}
.pp-dot.on{opacity:1;animation:dotP 1.1s ease-in-out infinite;}
.dp1{background:var(--p1);color:var(--p1);}
.dp2{background:var(--p2);color:var(--p2);}
@keyframes dotP{0%,100%{box-shadow:0 0 0 0 currentColor;}50%{box-shadow:0 0 0 6px rgba(0,0,0,0);}}
.pp-name{font-family:var(--fn);font-size:11px;font-weight:700;letter-spacing:1px;text-align:center;}
.pp-n1{color:var(--p1);}
.pp-n2{color:var(--p2);}
.pp-cnt{font-family:var(--ff);font-size:32px;font-weight:400;color:var(--gold);line-height:1.1;}
.pp-lbl{font-family:var(--fn);font-size:8px;color:rgba(255,255,255,0.28);letter-spacing:2px;text-transform:uppercase;}
.pp-caps{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;min-height:24px;padding:2px;}
.cap{width:10px;height:10px;border-radius:50%;}

/* Mobile compact strip */
.mob-bar{display:none;width:96%;align-items:center;justify-content:space-between;
  padding:12px 26px;background:var(--card);border:1.5px solid var(--border);
  border-radius:50px;margin-bottom:14px;}
.mob-pl{display:flex;align-items:center;gap:5px;}
.mob-dot{width:15px;height:15px;border-radius:50%;opacity:.25;}
.mob-dot.on{opacity:1;animation:dotP 1.1s ease-in-out infinite;}
.mob-nm{font-family:var(--fn);font-size:19px;font-weight:700;}
.mob-cnt{font-family:var(--ff);font-size:34px;color:var(--gold);}
.mob-logo{font-family:var(--ff);font-size:22px;color:rgba(255,215,0,0.7);}

/* Board */
.bwrap{position:relative;flex-shrink:0;}
canvas#gc{display:block;cursor:pointer;touch-action:none;}
#aiLbl{display:none;position:absolute;bottom:-28px;left:50%;transform:translateX(-50%);
  font-family:var(--fn);font-size:10px;font-weight:700;letter-spacing:2px;color:var(--p2);
  white-space:nowrap;text-transform:uppercase;animation:blink .85s ease-in-out infinite;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:.15;}}

/* Bottom controls */
.game-bot{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:8px;}
#sb{font-family:var(--fn);font-size:22px;font-weight:700;letter-spacing:2px;
  color:var(--gold);height:20px;text-align:center;text-transform:uppercase;transition:color .3s;white-space:nowrap;}
#sb.alert{color:#FF6060;animation:sbShake .25s ease-in-out;}
@keyframes sbShake{0%,100%{transform:translateX(0);}33%{transform:translateX(-5px);}66%{transform:translateX(5px);}}
.ctrl{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;}
.btn-sm{padding:14px 28px;font-family:var(--fn);font-size:18px;font-weight:700;letter-spacing:1px;
  background:var(--card);color:rgba(210,190,255,0.8);border:1.5px solid var(--border);
  border-radius:50px;cursor:pointer;transition:all .2s;text-transform:uppercase;}
.btn-sm:hover{background:rgba(170,130,255,0.18);color:#fff;}

/* WIN */
#sWin{background:rgba(8,0,24,0.82);backdrop-filter:blur(8px);z-index:10;padding:16px;}
.win-box{background:linear-gradient(135deg,#1E0050,#090025);border:2.5px solid var(--gold);
  border-radius:var(--r2);padding:46px 58px;text-align:center;
  box-shadow:0 0 55px rgba(255,210,0,0.18),0 0 100px rgba(0,0,0,0.7);
  display:flex;flex-direction:column;align-items:center;gap:14px;max-width:900px;}
.win-ico{font-size:58px;line-height:1;animation:popIn .5s cubic-bezier(.34,1.56,.64,1);}
@keyframes popIn{0%{transform:scale(0);}100%{transform:scale(1);}}
.win-t{font-family:var(--ff);font-size:38px;
  background:linear-gradient(135deg,#FFD700,#FF9500);-webkit-background-clip:text;
  -webkit-text-fill-color:transparent;background-clip:text;}
.win-msg{font-family:var(--fn);font-size:16px;font-weight:700;color:#D0C0F0;}
.win-btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;}
.btn-wg{padding:11px 26px;font-family:var(--ff);font-size:15px;
  background:linear-gradient(135deg,#C8930A,#FFD700);color:#3A1A00;
  border:none;border-radius:50px;cursor:pointer;transition:all .2s;}
.btn-ws{padding:11px 26px;font-family:var(--ff);font-size:15px;
  background:var(--card);color:#D0C0F0;border:1.5px solid var(--border);
  border-radius:50px;cursor:pointer;transition:all .2s;}
.btn-wg:hover,.btn-ws:hover{transform:translateY(-2px);filter:brightness(1.1);}

/* ── LOADING SCREEN ── */
#sLoad{
  background:radial-gradient(ellipse 120% 120% at 50% 50%,#2A0060,#0A0020);
  flex-direction:column;align-items:center;justify-content:center;gap:34px;
  z-index:100;transition:opacity .6s ease;
}
#sLoad.fade-out{opacity:0;pointer-events:none;}

/* Loading screen logo image — replaces text title */
.ld-logo{
  width:auto;height:auto;
  max-width:min(88%,380px);
  max-height:320px;
  display:block;margin:0 auto;
  filter:drop-shadow(0 0 22px rgba(255,180,0,0.55)) drop-shadow(0 6px 16px rgba(0,0,0,0.7));
  animation:ldLogoAnim 2.4s ease-in-out infinite;
}
@keyframes ldLogoAnim{
  0%,100%{transform:translateY(0) scale(1);filter:drop-shadow(0 0 16px rgba(255,180,0,0.4)) drop-shadow(0 4px 12px rgba(0,0,0,0.7));}
  50%{transform:translateY(-12px) scale(1.05);filter:drop-shadow(0 0 38px rgba(255,210,0,0.9)) drop-shadow(0 8px 20px rgba(0,0,0,0.75));}
}

.ld-bar-wrap{
  width:520px;height:34px;
  background:rgba(255,255,255,0.08);
  border:2px solid rgba(255,215,0,0.3);
  border-radius:50px;overflow:hidden;position:relative;
  box-shadow:0 0 16px rgba(255,215,0,0.12);
  margin-top:8px;
}
.ld-bar-fill{
  height:100%;width:0%;border-radius:50px;
  background:linear-gradient(90deg,#C8930A,#FFD700,#FFF0A0,#FFD700);
  background-size:200% 100%;
  animation:barShine 1.2s linear infinite;
  transition:width .08s linear;
  position:absolute;top:0;left:0;
}
@keyframes barShine{0%{background-position:100% 0;}100%{background-position:-100% 0;}}
.ld-bar-glow{
  position:absolute;top:0;left:0;height:100%;width:0%;
  border-radius:50px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,0.4),transparent);
  animation:barGlide 1s ease-in-out infinite;
}
@keyframes barGlide{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}  }

.ld-pct{
  font-family:var(--ff);font-size:38px;color:rgba(255,215,0,0.8);
  letter-spacing:2px;min-height:32px;
}
.ld-foot{
  position:absolute;bottom:60px;
  font-family:var(--fn);font-size:13px;font-weight:700;
  letter-spacing:5px;color:rgba(200,180,255,0.3);text-transform:uppercase;
}

/* ── BUTTON BEEP (visual feedback) ── */
.btn-play:active,.btn-sm:active,.btn-lang:active,.btn-diff:active,.btn-wg:active,.btn-ws:active{
  transform:scale(0.95) translateY(1px) !important;
}
/* Layout PORTRAIT fisso (app 720x1280) */
.pp{display:none;}
.mob-bar{display:flex;}
.game-inner{gap:0;flex-direction:column;}
