@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;700;800;900&display=swap');

:root {
  --bg:      #06070f;
  --bg-card: rgba(11,15,34,0.88);
  --cyan:    #00F0FF;
  --pink:    #FF2A6D;
  --yellow:  #FFB800;
  --green:   #00E676;
  --muted:   #8899BB;
  --border:  rgba(255,255,255,0.07);
  --font:    'Outfit', -apple-system, sans-serif;
}

*,*::before,*::after {
  box-sizing:border-box;margin:0;padding:0;
  user-select:none;-webkit-user-select:none;
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;
}
html,body { width:100%;height:100%;overflow:hidden;background:var(--bg);color:#fff;font-family:var(--font);-webkit-font-smoothing:antialiased; }

/* ══ HOST CANVAS ══ */
#canvas-container { position:absolute;inset:0;z-index:1; }

/* ══ ANNOUNCEMENT ══ */
#announcement-banner {
  position:fixed;top:14%;left:50%;
  transform:translate(-50%,-16px) scale(.93);
  z-index:100;
  font-size:clamp(1rem,3.5vw,1.85rem);font-weight:900;letter-spacing:2px;
  color:var(--yellow);background:rgba(6,7,15,.92);border:2px solid var(--yellow);
  border-radius:18px;padding:.65rem 2rem;white-space:nowrap;pointer-events:none;opacity:0;
  transition:opacity .25s,transform .25s;
  text-shadow:0 0 18px var(--yellow);box-shadow:0 0 40px rgba(255,184,0,.2);
  backdrop-filter:blur(12px);
}
#announcement-banner.show { opacity:1;transform:translate(-50%,0) scale(1); }

/* ══ HOST LOBBY ══ */
#host-lobby {
  position:absolute;inset:0;z-index:10;
  display:flex;flex-direction:column;justify-content:center;align-items:center;
  background:radial-gradient(ellipse 80% 55% at 50% 0%,rgba(0,80,180,.22) 0%,transparent 70%),rgba(6,7,15,.88);
  padding:1.5rem;transition:opacity .5s;
}
.game-title {
  font-size:clamp(2rem,5vw,3.8rem);font-weight:900;letter-spacing:3px;
  background:linear-gradient(135deg,var(--cyan) 0%,var(--pink) 55%,var(--yellow) 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 22px rgba(0,240,255,.35));
  animation:titlePulse 4s ease-in-out infinite;
}
@keyframes titlePulse {
  0%,100%{filter:drop-shadow(0 0 22px rgba(0,240,255,.35));}
  50%{filter:drop-shadow(0 0 38px rgba(255,42,109,.5));}
}
.lobby-subtitle { margin-top:.45rem;font-size:.95rem;color:var(--muted);text-align:center; }
.lobby-header   { text-align:center;margin-bottom:2rem; }
.lobby-content  { display:flex;gap:1.8rem;flex-wrap:wrap;justify-content:center;width:100%;max-width:920px; }

.glass-panel {
  background:var(--bg-card);backdrop-filter:blur(28px) saturate(1.4);-webkit-backdrop-filter:blur(28px);
  border:1px solid var(--border);border-radius:22px;box-shadow:0 20px 60px rgba(0,0,0,.7);transition:border-color .3s;
}
.glass-panel:hover { border-color:rgba(0,240,255,.28); }

.qr-card       { padding:1.8rem;display:flex;flex-direction:column;align-items:center;gap:.85rem;min-width:230px; }
.card-title    { font-size:.88rem;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--cyan);text-shadow:0 0 10px rgba(0,240,255,.38); }
#qrcode-container { background:#fff;padding:10px;border-radius:14px;box-shadow:0 0 30px rgba(0,240,255,.25),0 8px 24px rgba(0,0,0,.5); }
#qrcode-container img { display:block;border-radius:6px; }
.room-code-badge { font-size:1.55rem;font-weight:900;letter-spacing:5px;color:var(--yellow);background:rgba(255,184,0,.07);border:1.5px solid rgba(255,184,0,.38);padding:.45rem 1.2rem;border-radius:14px;text-shadow:0 0 12px rgba(255,184,0,.5); }

.players-card  { padding:1.8rem;display:flex;flex-direction:column;gap:1rem;min-width:290px;flex:1;max-width:460px; }
.players-header{ display:flex;justify-content:space-between;align-items:center; }
.player-count-badge { font-size:.82rem;font-weight:800;background:rgba(0,240,255,.09);border:1px solid rgba(0,240,255,.28);color:var(--cyan);padding:.22rem .7rem;border-radius:999px; }
.players-grid  { display:flex;flex-direction:column;gap:.45rem;min-height:90px; }
.player-item   { display:flex;align-items:center;gap:.75rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05);border-radius:14px;padding:.48rem .85rem;animation:slideIn .3s cubic-bezier(.34,1.56,.64,1) both; }
@keyframes slideIn { from{opacity:0;transform:translateX(-14px) scale(.96);}to{opacity:1;transform:none;} }
.player-avatar { width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid var(--cyan);box-shadow:0 0 8px rgba(0,240,255,.3); }
.player-avatar-placeholder { width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:.85rem;color:#fff;border:2px solid rgba(255,255,255,.15);flex-shrink:0; }
.player-name   { font-weight:700;font-size:.92rem; }

.btn-primary { width:100%;padding:1rem 1.5rem;font-family:var(--font);font-size:1rem;font-weight:900;letter-spacing:1.5px;text-transform:uppercase;color:#fff;border:none;border-radius:14px;cursor:pointer;background:linear-gradient(135deg,#005fff,var(--cyan));box-shadow:0 6px 28px rgba(0,100,255,.45);transition:transform .14s,box-shadow .14s,opacity .2s;position:relative;overflow:hidden; }
.btn-primary::after { content:'';position:absolute;inset:0;background:linear-gradient(160deg,rgba(255,255,255,.15),transparent);border-radius:inherit;pointer-events:none; }
.btn-primary:hover:not(:disabled) { transform:translateY(-2px);box-shadow:0 10px 36px rgba(0,150,255,.55); }
.btn-primary:active:not(:disabled){ transform:scale(.97); }
.btn-primary:disabled { opacity:.4;cursor:not-allowed;background:linear-gradient(135deg,#1a2040,#2a3060);box-shadow:none; }

/* ══ HOST HUD ══ */
#host-hud { position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;pointer-events:none; }
.hud-top  { display:flex;justify-content:space-between;align-items:flex-start;padding:1rem 1.2rem;gap:1rem; }
.leaderboard-panel { display:flex;flex-direction:column;gap:.3rem;background:rgba(6,7,15,.8);backdrop-filter:blur(16px);padding:.7rem .85rem;border-radius:14px;border:1px solid var(--border);box-shadow:0 0 24px rgba(0,240,255,.12),0 20px 50px rgba(0,0,0,.6);min-width:200px;max-width:260px; }
.rank-card { display:flex;align-items:center;gap:.55rem;padding:.28rem .5rem;border-radius:8px;background:rgba(255,255,255,.03);border-left:3px solid var(--cyan);font-size:.83rem; }
.rank-number { font-weight:900;font-size:.95rem;color:var(--yellow);min-width:22px; }
.race-timer  { font-size:1.65rem;font-weight:900;color:var(--cyan);background:rgba(6,7,15,.8);backdrop-filter:blur(16px);padding:.5rem 1.1rem;border-radius:14px;border:1px solid rgba(0,240,255,.2);box-shadow:0 0 24px rgba(0,240,255,.16);font-variant-numeric:tabular-nums;letter-spacing:1px; }
.camera-mode-badge { font-size:.73rem;font-weight:700;color:var(--muted);background:rgba(6,7,15,.65);padding:.25rem .6rem;border-radius:8px;backdrop-filter:blur(8px); }

/* ══ PODIUM ══ */
#host-podium { position:fixed;inset:0;z-index:30;display:flex;justify-content:center;align-items:center;background:rgba(6,7,15,.92);backdrop-filter:blur(20px); }
.podium-overlay  { display:flex;flex-direction:column;align-items:center;gap:2rem;padding:2.5rem;max-width:560px;width:90%; }
.podium-title    { font-size:3rem;font-weight:900;background:linear-gradient(135deg,var(--yellow),var(--pink));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:titlePulse 2s ease-in-out infinite; }
.podium-results  { display:flex;gap:1.2rem;flex-wrap:wrap;justify-content:center;width:100%; }
.podium-slot     { display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.2rem 1.5rem;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:18px;border-top:3px solid var(--kc,var(--cyan));min-width:130px;animation:slideIn .5s cubic-bezier(.34,1.56,.64,1) both; }
.pod-medal { font-size:2.5rem;animation:bounce .8s infinite alternate; }
@keyframes bounce { from{transform:translateY(0);}to{transform:translateY(-8px);} }
.pod-name  { font-size:1.05rem;font-weight:900;text-align:center; }
.pod-laps  { font-size:.8rem;color:var(--muted); }

/* ══ CONTROLLER — PORTRAIT WARNING ══ */
#portrait-overlay {
  position:fixed;inset:0;z-index:300;background:rgba(6,7,15,.98);
  display:none;flex-direction:column;justify-content:center;align-items:center;gap:1.2rem;backdrop-filter:blur(16px);
}
.rotate-phone-icon { width:80px;height:80px;animation:rotateHint 2.5s ease-in-out infinite;filter:drop-shadow(0 0 12px rgba(0,240,255,.5)); }
@keyframes rotateHint { 0%,100%{transform:rotate(-20deg);}50%{transform:rotate(20deg);} }

/* ══ ONBOARDING ══ */
#controller-onboarding { position:fixed;inset:0;z-index:10;display:flex;justify-content:center;align-items:center;padding:1.5rem;overflow-y:auto;background:radial-gradient(ellipse 70% 50% at 50% 0%,rgba(0,50,180,.28) 0%,transparent 70%),rgba(6,7,15,1); }
.onboarding-box { width:100%;max-width:430px;padding:2rem 1.8rem;display:flex;flex-direction:column;gap:1.1rem; }
.input-group   { display:flex;flex-direction:column;gap:.4rem; }
.input-group label { font-size:.75rem;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted); }
.input-control { width:100%;padding:.78rem 1rem;background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:14px;color:#fff;font-family:var(--font);font-size:1rem;font-weight:600;outline:none;transition:border-color .2s,box-shadow .2s; }
.input-control:focus { border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,240,255,.12); }
.avatar-upload-row { display:flex;align-items:center;gap:1rem; }
.avatar-preview-box { width:58px;height:58px;border-radius:50%;flex-shrink:0;background:rgba(255,42,109,.1);border:2px solid rgba(255,42,109,.45);display:flex;align-items:center;justify-content:center;overflow:hidden; }
.btn-upload { flex:1;padding:.65rem 1rem;background:rgba(0,240,255,.07);border:1px solid rgba(0,240,255,.22);border-radius:10px;color:var(--cyan);font-family:var(--font);font-size:.85rem;font-weight:700;cursor:pointer;transition:background .2s; }
#onboarding-error { color:var(--pink);font-size:.87rem;font-weight:700;text-align:center;background:rgba(255,42,109,.08);border:1px solid rgba(255,42,109,.22);border-radius:10px;padding:.5rem .8rem;display:none; }

/* ════════════════════════════════════════════════════════════════
   GAMEPAD
════════════════════════════════════════════════════════════════ */
#controller-gamepad {
  position:fixed;inset:0;display:none;flex-direction:column;
  background:#050710;overflow:hidden;
}

/* 3D canvas — FULL SCREEN background */
#kart-canvas {
  position:absolute;inset:0;
  width:100% !important;height:100% !important;
  display:block;z-index:1;
}

/* ── TOP BAR ── */
.gp-header-overlay {
  position:absolute;top:0;left:0;right:0;height:48px;z-index:10;
  display:flex;justify-content:space-between;align-items:center;
  padding:0 .8rem;
  background:linear-gradient(to bottom,rgba(5,7,16,.88) 60%,transparent);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
  gap:.5rem;
}

/* ── STEERING INDICATOR ── */
.steering-wrap  { display:flex;align-items:center;gap:.3rem;flex:1;max-width:160px;margin:0 auto; }
.steering-track { flex:1;height:10px;background:rgba(255,255,255,.06);border-radius:999px;position:relative;overflow:visible; }
.steering-thumb { position:absolute;top:-4px;width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.3);transform:translateX(-9px);left:50%;transition:transform .04s,background .1s;box-shadow:0 0 8px rgba(0,240,255,.5); }
.steering-center-line { position:absolute;top:0;bottom:0;left:calc(50% - 1px);width:2px;background:rgba(255,255,255,.2);border-radius:999px; }

/* ── GYRO BAR ── */
.gyro-bar-wrap {
  position:absolute;top:52px;left:50%;transform:translateX(-50%);z-index:10;
  display:flex;align-items:center;gap:.4rem;
  background:rgba(6,7,15,.7);backdrop-filter:blur(8px);
  border-radius:999px;padding:.22rem .65rem;
  border:1px solid var(--border);
}
.gyro-track  { width:110px;height:7px;background:rgba(255,255,255,.07);border-radius:999px;position:relative;overflow:hidden; }
.gyro-fill   { position:absolute;top:0;bottom:0;width:6%;background:var(--cyan);border-radius:999px;transition:left .04s,background .1s; }
.gyro-center { position:absolute;top:0;bottom:0;left:calc(50% - 1px);width:2px;background:rgba(255,255,255,.22);border-radius:999px; }
.gyro-calib-btn { background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#fff;font-size:.75rem;padding:.1rem .35rem;cursor:pointer;transition:background .15s; }
.gyro-calib-btn:active { background:rgba(0,240,255,.15); }

/* ── JOYSTICK FALLBACK ── */
.joystick-zone  { position:absolute;left:0;top:0;bottom:0;width:45%;z-index:10;display:flex;align-items:center;justify-content:center;background:rgba(0,240,255,.015);border-right:1px solid var(--border); }
.joystick-base  { width:126px;height:126px;border-radius:50%;background:rgba(0,240,255,.05);border:2.5px solid rgba(0,240,255,.2);position:relative;display:flex;align-items:center;justify-content:center;box-shadow:0 0 28px rgba(0,240,255,.1); }
.joystick-base::before,.joystick-base::after { content:'';position:absolute;background:rgba(0,240,255,.08);border-radius:2px; }
.joystick-base::before { width:2px;height:80%; }
.joystick-base::after  { width:80%;height:2px; }
.joystick-stick { width:54px;height:54px;border-radius:50%;position:absolute;background:radial-gradient(circle at 38% 32%,rgba(0,240,255,.7),rgba(0,130,180,1));border:2px solid rgba(0,240,255,.8);box-shadow:0 0 18px rgba(0,240,255,.45);cursor:grab;touch-action:none; }

/* ── 3 ACTION BUTTONS ── */
.gp-buttons-overlay {
  position:absolute;bottom:14px;left:0;right:0;z-index:10;
  display:flex;justify-content:space-around;align-items:flex-end;
  padding:0 1.2rem;
}
.pedal-btn {
  height:80px;min-width:120px;flex:1;max-width:190px;
  border:none;border-radius:20px;
  font-family:var(--font);font-size:.85rem;font-weight:900;letter-spacing:.5px;color:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  cursor:pointer;touch-action:none;
  position:relative;overflow:hidden;
  transition:transform .07s,box-shadow .07s,filter .07s;
  -webkit-tap-highlight-color:transparent;
}
.pedal-btn::after { content:'';position:absolute;inset:0;background:linear-gradient(160deg,rgba(255,255,255,.18),transparent);pointer-events:none; }
.btn-gas   { background:linear-gradient(145deg,#009940,#00e676);box-shadow:0 6px 32px rgba(0,210,100,.55),0 2px 0 rgba(0,60,30,.8) inset; }
.btn-gas.active   { transform:scale(.91) translateY(3px);box-shadow:0 2px 12px rgba(0,200,100,.25);filter:brightness(.9); }
.btn-brake { background:linear-gradient(145deg,#aa1030,#ff2a6d);box-shadow:0 6px 32px rgba(255,42,109,.55),0 2px 0 rgba(100,0,30,.8) inset; }
.btn-brake.active { transform:scale(.91) translateY(3px);box-shadow:0 2px 12px rgba(255,42,109,.25);filter:brightness(.9); }

/* Item button (center, circular) */
.btn-item {
  width:86px;height:86px;border-radius:50%;border:none;
  font-size:2.1rem;cursor:pointer;touch-action:none;flex-shrink:0;
  background:radial-gradient(circle at 40% 30%,#ffe040,#ff8f00);
  box-shadow:0 0 28px rgba(255,184,0,.65),0 4px 14px rgba(0,0,0,.4);
  display:flex;align-items:center;justify-content:center;
  transition:transform .07s;
  animation:glowPulse 2s ease-in-out infinite;
}
.btn-item.active { transform:scale(.87);animation:none;box-shadow:0 0 10px rgba(255,184,0,.3); }
@keyframes glowPulse {
  0%,100%{box-shadow:0 0 28px rgba(255,184,0,.65),0 4px 14px rgba(0,0,0,.4);}
  50%    {box-shadow:0 0 50px rgba(255,184,0,.95),0 0 80px rgba(255,184,0,.28);}
}
.glow-yellow { animation:glowPulse 2s ease-in-out infinite; }

/* ── SPEED BAR ── */
.speed-bar-wrap { position:absolute;bottom:0;left:0;right:0;height:4px;z-index:10;background:rgba(255,255,255,.05); }
.speed-bar      { height:100%;width:0%;background:linear-gradient(90deg,var(--cyan),var(--yellow),var(--pink));border-radius:999px;transition:width .25s; }

/* ── ITEM SLOT ── */
.item-slot-display { font-size:1.4rem;background:rgba(255,184,0,.1);border:2px solid rgba(255,184,0,.35);border-radius:10px;padding:.05rem .45rem;min-width:44px;text-align:center; }
.item-slot-display.pop { animation:itemPop .3s cubic-bezier(.34,1.56,.64,1); }
@keyframes itemPop { 0%{transform:scale(1);}50%{transform:scale(1.45);}100%{transform:scale(1);} }

/* ══ RACE RESULTS ══ */
#controller-results {
  position:fixed;inset:0;z-index:50;display:flex;justify-content:center;align-items:center;
  background:rgba(6,7,15,.92);backdrop-filter:blur(20px);
}
.result-box { padding:2.5rem 2rem;max-width:380px;width:90%;display:flex;flex-direction:column;align-items:center;gap:1rem; }
