:root{
  --bg:#00000f;
  --accent:#00eaff;
  --accent2:#ff2bd6;
  --accent3:#8b5cff;
  --text:#dff7ff;
  --dim:#7e9cb0;
  --border:rgba(0,234,255,.28);
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{
  background:var(--bg);
  color:var(--text);
  font-family:"Segoe UI",Roboto,system-ui,sans-serif;
  overflow:hidden;
  -webkit-tap-highlight-color:transparent;
  user-select:none;
}
body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(ellipse at 50% 120%,rgba(139,92,255,.20),transparent 60%),
    radial-gradient(ellipse at 50% -20%,rgba(0,234,255,.14),transparent 55%);
}
#stage{
  position:relative;z-index:1;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:8px;padding:10px;
}

/* HUD */
#hud{
  width:100%;max-width:1000px;
  display:flex;align-items:center;justify-content:space-between;
  font-size:14px;letter-spacing:2px;text-transform:uppercase;color:var(--dim);
}
#hud b{color:var(--accent);font-weight:700}
.nsp-sep{opacity:.35;margin:0 6px}
.nsp-hud-left{font-size:16px;letter-spacing:3px;color:var(--accent2)}

/* CANVAS */
#cv{
  width:auto;height:auto;max-width:100%;max-height:100%;
  aspect-ratio:28/22;
  border:1px solid var(--border);
  border-radius:10px;
  background:#02020c;
  box-shadow:0 0 40px rgba(0,234,255,.16),inset 0 0 60px rgba(0,0,0,.7);
  touch-action:none;
}

/* OVERLAYS */
.nsp-overlay{
  position:fixed;inset:0;z-index:20;
  display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,12,.82);backdrop-filter:blur(6px);
  padding:16px;overflow:auto;
}
.nsp-hidden{display:none}
.nsp-card{
  width:min(440px,94vw);text-align:center;
  background:linear-gradient(180deg,rgba(10,12,30,.94),rgba(4,5,16,.94));
  border:1px solid var(--border);border-radius:14px;
  box-shadow:0 0 50px rgba(0,234,255,.14);
  padding:22px 20px;
}
.nsp-card h1{
  margin:0 0 6px;font-size:34px;letter-spacing:6px;color:var(--accent);
  text-shadow:0 0 18px rgba(0,234,255,.7);
}
.nsp-card h1 span{color:var(--accent2);text-shadow:0 0 18px rgba(255,43,214,.7)}
.nsp-card h2{margin:0 0 10px;font-size:24px;letter-spacing:4px;color:var(--accent2);text-shadow:0 0 16px rgba(255,43,214,.6)}
.nsp-tag{margin:0 0 16px;font-size:13px;color:var(--dim)}
.nsp-final{font-size:14px;letter-spacing:2px;color:var(--dim);margin:0 0 14px}
.nsp-final b{color:var(--accent)}
.nsp-label{display:block;font-size:11px;letter-spacing:2px;color:var(--dim);text-align:left;margin-bottom:6px;text-transform:uppercase}
.nsp-input{
  width:100%;padding:11px 12px;margin-bottom:14px;
  background:rgba(0,234,255,.06);border:1px solid var(--border);border-radius:8px;
  color:var(--text);font-size:15px;letter-spacing:1px;outline:none;
}
.nsp-input:focus{border-color:var(--accent);box-shadow:0 0 14px rgba(0,234,255,.3)}
/* GAME PANEL STANDARD v1: nickname error line + level/objective rows. See
   _standard/GAME-PANEL.md - every hub game carries its own copy of these. */
.nsp-error{min-height:16px;margin:-8px 0 10px;font-size:12px;color:#ff7a6a}
.nsp-info{text-align:left;font-size:13px;color:var(--dim);margin:0 0 14px;padding:0 2px;list-style:none}
.nsp-info li{padding:4px 0;border-bottom:1px solid var(--border)}
.nsp-info li:last-child{border-bottom:none}
.nsp-info b{color:var(--text)}
.nsp-btn-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.nsp-btn{
  flex:1 1 140px;padding:12px 18px;cursor:pointer;
  background:linear-gradient(135deg,var(--accent),var(--accent3));
  border:none;border-radius:8px;color:#00121a;
  font-size:15px;font-weight:800;letter-spacing:3px;
  box-shadow:0 0 22px rgba(0,234,255,.35);
}
.nsp-btn:hover{filter:brightness(1.12)}
.nsp-btn-secondary{
  flex:1 1 140px;padding:12px 18px;cursor:pointer;
  background:transparent;border:1px solid var(--border);border-radius:8px;
  color:var(--text);font-size:14px;letter-spacing:2px;
}
.nsp-btn-secondary:hover{border-color:var(--accent);color:var(--accent)}
.nsp-help{margin:14px 0 0;font-size:11px;letter-spacing:1px;color:var(--dim)}

/* LEADERBOARD */
.nsp-board{margin-top:16px;border-top:1px solid var(--border);padding-top:12px}
.nsp-board h3{margin:0 0 8px;font-size:11px;letter-spacing:3px;color:var(--dim)}
.nsp-board ol{list-style:none;margin:0;padding:0;font-size:13px}
.nsp-board li{display:flex;justify-content:space-between;padding:3px 4px;color:var(--dim)}
.nsp-board li b{color:var(--accent)}
.nsp-board li.me{background:rgba(0,234,255,.09);border-radius:4px;color:var(--text)}

/* TOUCH */
#touch{display:none}
body.touch #touch{
  display:flex;position:fixed;left:0;right:0;bottom:0;z-index:10;
  align-items:flex-end;justify-content:space-between;
  padding:0 16px 22px;pointer-events:none;
}
/* dpad'i gercek merkeze getiren esit-genislikli bosluk (sagdaki #sideA karsiligi) */
#touchPadR{flex:0 0 60px;height:1px;order:1}
#dpad{order:2}
#sideA{flex:0 0 60px;display:flex;flex-direction:column;align-items:center;order:3}
#handSwap{display:none}
body.lefty #touchPadR{order:3}
body.lefty #sideA{order:1}
body.touch #dpad,body.touch #sideA{pointer-events:auto}
#dpad{
  display:grid;grid-template-columns:repeat(3,46px);grid-template-rows:repeat(3,46px);
  gap:12px;touch-action:none;
}
.nsp-dp{
  border-radius:10px;touch-action:none;
  background:rgba(0,234,255,.08);border:1px solid var(--border);
  color:var(--accent);font-size:18px;line-height:1;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 12px rgba(0,234,255,.18);
}
.nsp-dp:active{background:rgba(0,234,255,.28);color:#fff}
.nsp-dp-up{grid-column:2;grid-row:1}
.nsp-dp-left{grid-column:1;grid-row:2}
.nsp-dp-right{grid-column:3;grid-row:2}
.nsp-dp-down{grid-column:2;grid-row:3}
#acts{display:flex;gap:12px;align-items:flex-end}
/* SOL-EL KAYDIRMA ANAHTARI (sadece yatayda gorunur) */
#handTxt{
  font-size:10px;letter-spacing:.5px;color:var(--dim);
  text-align:center;line-height:1.3;max-width:120px;
}
#leftySw{
  display:flex;align-items:center;width:66px;height:26px;padding:2px;
  border:1px solid var(--border);border-radius:14px;
  background:rgba(0,234,255,.06);touch-action:none;
}
#leftyKnob{
  width:22px;height:22px;border-radius:50%;margin-left:0;
  background:var(--accent);box-shadow:0 0 10px rgba(0,234,255,.55);
  transition:margin-left .18s ease;
}
body.lefty #leftyKnob{margin-left:38px}
body.lefty #leftySw{background:rgba(255,43,214,.12);border-color:rgba(255,43,214,.45)}
body.lefty #leftyKnob{background:#ff2bd6;box-shadow:0 0 10px rgba(255,43,214,.55)}
.nsp-act{
  width:82px;height:82px;border-radius:50%;
  background:rgba(255,43,214,.10);border:1px solid rgba(255,43,214,.45);
  color:var(--text);font-size:13px;font-weight:800;letter-spacing:2px;
}
.nsp-act:active{background:rgba(255,43,214,.28)}
#btnPause{width:60px;height:60px;font-size:16px;border-color:var(--border);background:rgba(0,234,255,.07)}
body.touch .nsp-help{display:none}

/* MOBILE PORTRAIT */
@media (max-width:767px){
  #hud{font-size:11px;letter-spacing:1px}
  #stage{padding:6px;gap:6px;justify-content:flex-start;padding-top:10px}
  #cv{max-height:56vh}
}
/* MOBILE LANDSCAPE — fullscreen play */
@media (orientation:landscape) and (hover:none){
  #stage{padding:2px;gap:2px}
  #hud{font-size:10px;letter-spacing:1px;max-width:none;padding:0 8px}
  #cv{max-height:calc(100vh - 26px)}
  body.touch #touch{
    top:0;align-items:stretch;
    padding:8px 12px calc(env(safe-area-inset-bottom,0px) + 10px);
  }
  /* dpad ekranin SAG bosluğunda, dikey ortada */
  #touchPadR{display:none}
  #dpad{order:3;align-self:center;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(3,42px);gap:10px}
  /* karsi bosluk: ustte sol-el anahtari, altta pause — parmak yolunun disinda */
  #sideA{
    order:1;flex:0 0 auto;justify-content:space-between;align-items:center;gap:10px;
    padding-top:48px;   /* HUD satirinin (can elmaslari / BEST) altinda kalsin */
  }
  #handSwap{display:flex;flex-direction:column;align-items:center;gap:8px}
  #acts{align-items:center}
  body.lefty #dpad{order:1}
  body.lefty #sideA{order:3}
  .nsp-act{width:70px;height:70px}
}
/* iOS fullscreen fallback */
body.fs-fallback{position:fixed;inset:0;width:100vw;height:100vh}
