*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#0a0a1a;--surface:#161630;--surface2:#1e1e40;
  --accent:#a855f7;--accent2:#ec4899;--accent3:#6366f1;
  --text:#e2e8f0;--text2:#94a3b8;--symbol:#c084fc;
  --radius:16px;--glow:0 0 20px rgba(168,85,247,.3);
}
html,body{height:100%;font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);overflow-x:hidden}
body{display:flex;flex-direction:column;min-height:100dvh;padding-bottom:env(safe-area-inset-bottom)}
header{text-align:center;padding:24px 16px 8px;position:relative}
header h1{font-size:1.5rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
header p{font-size:.8rem;color:var(--text2);margin-top:4px;letter-spacing:.5px;text-transform:uppercase}
nav{display:flex;gap:4px;padding:8px 16px;justify-content:center}
nav button{flex:1;max-width:160px;padding:10px 8px;border:none;border-radius:12px;background:var(--surface);color:var(--text2);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}
nav button.active{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:var(--glow)}
nav button:active{transform:scale(.96)}
main{flex:1;padding:12px 16px 24px;overflow-y:auto}
section{display:none}
section.active{display:block}
textarea{width:100%;min-height:100px;padding:16px;border:2px solid var(--surface2);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1rem;font-family:inherit;resize:vertical;outline:none;transition:border-color .2s}
textarea:focus{border-color:var(--accent)}
textarea::placeholder{color:var(--text2)}
.output-area{min-height:80px;margin-top:12px;padding:20px 16px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--surface2);display:flex;flex-wrap:wrap;align-items:center;gap:4px 2px;position:relative}
.output-area.empty::after{content:'Symbole pojawia sie tutaj...';color:var(--text2);font-size:.9rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
.symbol-wrap{display:inline-flex;flex-direction:column;align-items:center;padding:2px}
.symbol-wrap svg{width:28px;height:36px;display:block}
.symbol-wrap .letter-hint{font-size:.55rem;color:var(--text2);opacity:0;transition:opacity .2s;margin-top:1px}
.output-area:hover .letter-hint,.output-area:active .letter-hint{opacity:1}
.word-space{width:16px;display:inline-block}
.emoji-inline{display:inline-flex;align-items:center;padding:2px 1px;vertical-align:middle}
.emoji-inline svg{width:28px;height:28px;display:block}
.actions{display:flex;gap:8px;margin-top:12px}
.btn{padding:12px 20px;border:none;border-radius:12px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px;flex:1}
.btn:active{transform:scale(.96)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:var(--glow)}
.btn-secondary{background:var(--surface2);color:var(--text)}
.btn:disabled{opacity:.4;cursor:default;transform:none}
.alphabet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px}
.alpha-card{background:var(--surface);border-radius:12px;padding:12px 8px;text-align:center;border:1px solid var(--surface2);transition:all .2s}
.alpha-card:active{border-color:var(--accent);box-shadow:var(--glow)}
.alpha-card svg{width:36px;height:46px;display:block;margin:0 auto 6px}
.alpha-card .label{font-size:.85rem;font-weight:700;color:var(--accent)}
.decode-box{background:var(--surface);border-radius:var(--radius);padding:20px;text-align:center;margin-bottom:16px;border:1px solid var(--surface2)}
.decode-symbols{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 2px;margin:16px 0}
.decode-symbols .symbol-wrap svg{width:32px;height:42px}
.reveal-text{font-size:1.3rem;font-weight:700;color:var(--accent);margin-top:12px;opacity:0;transform:translateY(10px);transition:all .4s}
.reveal-text.show{opacity:1;transform:translateY(0)}
.decode-input{width:100%;padding:14px;border:2px solid var(--surface2);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:.9rem;font-family:monospace;outline:none;margin-bottom:12px}
.decode-input:focus{border-color:var(--accent)}
.toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(100px);background:var(--surface2);color:var(--text);padding:12px 24px;border-radius:12px;font-size:.85rem;font-weight:600;opacity:0;transition:all .3s;z-index:100;border:1px solid var(--accent);box-shadow:var(--glow)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
canvas{position:absolute;left:-9999px;top:-9999px}
.info-box{background:var(--surface);border-radius:var(--radius);padding:16px;margin-top:16px;border-left:3px solid var(--accent)}
.info-box p{font-size:.85rem;color:var(--text2);line-height:1.5}
.mode-toggle{display:flex;gap:4px;margin-bottom:12px;background:var(--surface);border-radius:12px;padding:4px}
.mode-toggle button{flex:1;padding:8px;border:none;border-radius:10px;background:transparent;color:var(--text2);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s}
.mode-toggle button.active{background:var(--surface2);color:var(--text)}
.hint-toggle{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:.8rem;color:var(--text2)}
.hint-toggle input{accent-color:var(--accent)}

/* ── Typing animation ── */
@keyframes sym-in{
  from{opacity:0;transform:translateY(6px) scale(.85)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.symbol-new{
  animation:sym-in .22s cubic-bezier(.23,1,.32,1) both
}

/* ── Quiz / Game tab ── */
.quiz-name-screen{text-align:center;padding:24px 0 16px}
.quiz-name-screen h2{font-size:1.4rem;font-weight:800;margin-bottom:8px;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.quiz-name-screen p{color:var(--text2);font-size:.9rem;margin-bottom:20px}
.quiz-name-input{width:100%;padding:14px;border:2px solid var(--surface2);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:1rem;font-family:inherit;outline:none;text-align:center;margin-bottom:12px;transition:border-color .2s}
.quiz-name-input:focus{border-color:var(--accent)}
.quiz-game-screen{display:none}
.quiz-game-screen.active{display:block}
.quiz-hud{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding:12px 16px;background:var(--surface);border-radius:12px}
.quiz-hud-item{text-align:center}
.quiz-hud-label{font-size:.65rem;color:var(--text2);text-transform:uppercase;letter-spacing:.5px}
.quiz-hud-value{font-size:1.2rem;font-weight:800;color:var(--accent)}
.quiz-hud-value.streak-val{color:var(--accent2)}
.quiz-symbol-stage{display:flex;justify-content:center;align-items:center;min-height:160px;margin:12px 0 20px;position:relative}
.quiz-symbol-stage svg{width:110px;height:140px;filter:drop-shadow(0 0 18px rgba(168,85,247,.5));transition:transform .15s}
.quiz-answers{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.quiz-ans-btn{padding:18px 8px;border:2px solid var(--surface2);border-radius:14px;background:var(--surface);color:var(--text);font-size:1.1rem;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,transform .15s;touch-action:manipulation;letter-spacing:.5px}
.quiz-ans-btn:active{transform:scale(.95)}
.quiz-ans-btn.correct{background:rgba(34,197,94,.18);border-color:#22c55e;color:#4ade80}
.quiz-ans-btn.wrong{background:rgba(239,68,68,.15);border-color:#ef4444;color:#f87171}
@keyframes shake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-8px)}
  40%{transform:translateX(8px)}
  60%{transform:translateX(-5px)}
  80%{transform:translateX(5px)}
}
.quiz-ans-btn.shake{animation:shake .35s ease-out}
.quiz-progress{height:4px;background:var(--surface2);border-radius:2px;margin-bottom:16px;overflow:hidden}
.quiz-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:2px;transition:width .3s ease-out}
/* Confetti particles — CSS only */
.confetti-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:200;overflow:hidden}
.conf-particle{position:absolute;width:8px;height:8px;border-radius:2px;opacity:0}
@keyframes conf-fall{
  0%{opacity:1;transform:translateY(-20px) rotate(0deg) scale(1)}
  80%{opacity:1}
  100%{opacity:0;transform:translateY(100vh) rotate(720deg) scale(.5)}
}
.quiz-summary{display:none;text-align:center;padding:16px 0}
.quiz-summary.active{display:block}
.quiz-summary-score{font-size:3.5rem;font-weight:900;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1;margin:12px 0 4px}
.quiz-summary-label{color:var(--text2);font-size:.85rem;margin-bottom:16px}
.quiz-summary-stats{display:flex;justify-content:center;gap:24px;margin-bottom:24px}
.quiz-stat{text-align:center}
.quiz-stat-v{font-size:1.5rem;font-weight:800;color:var(--text)}
.quiz-stat-l{font-size:.7rem;color:var(--text2);text-transform:uppercase}
.quiz-compare-box{background:var(--surface);border-radius:var(--radius);padding:16px;margin-bottom:16px;border:1px solid var(--surface2)}
.quiz-compare-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--surface2)}
.quiz-compare-row:last-child{border-bottom:none}
.quiz-compare-name{font-weight:700;font-size:.95rem}
.quiz-compare-score{font-size:1.1rem;font-weight:800;color:var(--accent)}
.quiz-compare-winner{font-size:.7rem;color:var(--accent2);margin-left:8px}
.quiz-name-screen,.quiz-game-screen,.quiz-summary{animation:sym-in .3s ease-out both}

/* ── Ranking tab ── */
#rankingTab{display:none;animation:sym-in .3s ease-out both}
#rankingTab h2{font-size:1.4rem;font-weight:800;margin-bottom:16px;text-align:center;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.ranking-table{background:var(--surface);border-radius:var(--radius);border:1px solid var(--surface2);overflow:hidden;margin-bottom:16px}
.ranking-row{display:grid;grid-template-columns:36px 1fr auto auto;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--surface2);font-size:.875rem}
.ranking-row:last-child{border-bottom:none}
.ranking-row.rank-1{background:rgba(168,85,247,.08)}
.ranking-row.rank-2{background:rgba(236,72,153,.05)}
.ranking-row.rank-3{background:rgba(99,102,241,.05)}
.ranking-pos{font-size:.9rem;text-align:center;font-weight:700;color:var(--text2)}
.ranking-name{font-weight:700;color:var(--text)}
.ranking-date{font-size:.7rem;color:var(--text2);margin-top:2px}
.ranking-score{font-weight:800;color:var(--accent);text-align:right;white-space:nowrap}
.ranking-meta{font-size:.75rem;color:var(--text2);text-align:right;white-space:nowrap}
.ranking-empty{text-align:center;padding:32px 16px;color:var(--text2);font-size:.9rem;background:var(--surface);border-radius:var(--radius);border:1px solid var(--surface2)}
.ranking-clear-wrap{text-align:center;margin-top:8px}
.btn-sm{padding:8px 16px;font-size:.8rem;flex:0 0 auto}

/* ── Challenge box ── */
#qChallengeBox{background:var(--surface);border-radius:var(--radius);padding:16px;margin-bottom:16px;border:1px solid var(--surface2)}
.challenge-title{font-size:.75rem;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;text-align:center}
.challenge-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--surface2)}
.challenge-row:last-child{border-bottom:none}
.challenge-name{font-weight:700;font-size:.9rem}
.challenge-best{font-size:.8rem;color:var(--text2)}
.btn-challenge{padding:6px 14px;border:2px solid var(--accent2);border-radius:10px;background:transparent;color:var(--accent2);font-size:.75rem;font-weight:700;cursor:pointer;transition:all .2s;white-space:nowrap}
.btn-challenge:active{transform:scale(.95);background:rgba(236,72,153,.15)}

/* ── Name hint ── */
.quiz-name-hint{font-size:.75rem;color:var(--text2);margin-top:-8px;margin-bottom:12px}

/* ── Badges ── */
.badge{display:inline-flex;align-items:center;gap:4px;background:var(--surface2);border-radius:20px;padding:4px 8px;font-size:.75rem;border:1px solid transparent}
.badge.earned{border-color:var(--accent);opacity:1}
.badge.locked{opacity:.3;filter:grayscale(1)}
.badge-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.badge-row{display:inline-flex;gap:4px;flex-wrap:wrap;justify-content:center;margin-top:4px}
.badges-section{background:var(--surface);border-radius:var(--radius);padding:16px;margin-bottom:16px;border:1px solid var(--surface2);text-align:center}
.badges-section-title{font-size:.75rem;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}
.badges-all-section{background:var(--surface);border-radius:var(--radius);padding:16px;margin-top:16px;border:1px solid var(--surface2)}
.badges-all-section h3{font-size:.85rem;font-weight:700;color:var(--text2);margin-bottom:12px;text-transform:uppercase;letter-spacing:.5px}
.badge-item{display:flex;align-items:center;gap:8px;padding:8px;background:var(--surface2);border-radius:10px;font-size:.8rem}
.badge-item.earned{border:1px solid var(--accent)}
.badge-item.locked{border:1px solid transparent;opacity:.4}
.badge-emoji{font-size:1.1rem;line-height:1}
.badge-name{font-weight:600;color:var(--text)}

@media(min-width:500px){
  body{max-width:480px;margin:0 auto}
  .alphabet-grid{grid-template-columns:repeat(5,1fr)}
}

/* ══════════════════════════════════════════
   RANKING FILTER BUTTONS
══════════════════════════════════════════ */
.ranking-filter-row{
  display:flex;gap:6px;margin-bottom:14px;justify-content:center
}
.ranking-filter-btn{
  padding:6px 14px;border:1px solid var(--surface2);border-radius:10px;
  background:var(--surface);color:var(--text2);
  font-size:.78rem;font-weight:600;cursor:pointer;transition:all .2s
}
.ranking-filter-btn.active{
  background:var(--surface2);color:var(--text);border-color:var(--accent)
}
.ranking-filter-btn:active{transform:scale(.95)}

/* ══════════════════════════════════════════
   ESCAPE ROOM — WIZARD TOWER
══════════════════════════════════════════ */
#escapeTab{animation:sym-in .3s ease-out both}

/* Tower wrapper */
.escape-tower-wrap{
  display:flex;flex-direction:column;align-items:center;padding:8px 0 16px;
  position:relative
}
.escape-tower-title{
  font-size:1.3rem;font-weight:900;text-align:center;margin-bottom:4px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text
}
.escape-tower-sub{
  font-size:.78rem;color:var(--text2);text-align:center;margin-bottom:16px;
  letter-spacing:.3px
}

/* Tower floors */
.tower-floors{
  display:flex;flex-direction:column-reverse;gap:0;
  width:100%;max-width:320px;position:relative
}
.tower-floor{
  position:relative;
  background:var(--surface);
  border:2px solid var(--surface2);
  border-radius:10px;
  margin:3px 0;
  padding:10px 14px 10px 48px;
  min-height:60px;
  cursor:pointer;
  transition:border-color .2s,background .2s,transform .15s;
  display:flex;align-items:center;justify-content:space-between
}
.tower-floor:active{transform:scale(.97)}
.tower-floor.locked{
  cursor:default;opacity:.55
}
.tower-floor.locked:active{transform:none}
.tower-floor.completed{
  border-color:rgba(168,85,247,.5);
  background:rgba(168,85,247,.06)
}
.tower-floor.current-floor{
  border-color:var(--accent);
  box-shadow:0 0 16px rgba(168,85,247,.25)
}
.tower-floor-num{
  position:absolute;left:12px;top:50%;transform:translateY(-50%);
  font-size:.65rem;color:var(--text2);font-weight:700;
  text-transform:uppercase;letter-spacing:.3px;
  writing-mode:horizontal-tb
}
.tower-floor-name{
  font-weight:700;font-size:.88rem;color:var(--text);flex:1
}
.tower-floor-status{
  font-size:1.1rem;min-width:40px;text-align:right
}
.tower-floor-lock{
  font-size:1rem;opacity:.5
}

/* Stairs between floors */
.tower-stair{
  width:60%;max-width:120px;height:8px;align-self:center;
  background:linear-gradient(90deg,var(--surface2),var(--surface));
  border-radius:4px;margin:0;
  position:relative
}
.tower-stair::before,.tower-stair::after{
  content:'';position:absolute;top:-3px;width:6px;height:6px;
  background:var(--surface2);border-radius:50%
}
.tower-stair::before{left:4px}
.tower-stair::after{right:4px}

/* Tower torches (decorative) */
.tower-torches{
  display:flex;justify-content:space-between;align-items:flex-start;
  width:100%;max-width:320px;pointer-events:none;margin-bottom:4px
}

/* Tower stats bar */
.tower-stats{
  display:flex;gap:20px;justify-content:center;align-items:center;
  margin-top:16px;padding:12px 20px;
  background:var(--surface);border-radius:var(--radius);
  border:1px solid var(--surface2);width:100%;max-width:320px
}
.tower-stat{text-align:center}
.tower-stat-v{font-size:1.3rem;font-weight:800;color:var(--accent)}
.tower-stat-l{font-size:.65rem;color:var(--text2);text-transform:uppercase;letter-spacing:.3px}

/* Episode placeholder */
.escape-ep2{
  margin-top:16px;padding:12px 16px;border-radius:var(--radius);
  border:1px dashed var(--surface2);
  text-align:center;color:var(--text2);font-size:.8rem;
  opacity:.45;max-width:320px;width:100%
}

/* ── ROOM SCREEN ── */
.escape-room-screen{
  padding:0
}
.escape-room-header{
  display:flex;align-items:center;gap:10px;margin-bottom:12px
}
.escape-room-back{
  background:none;border:1px solid var(--surface2);border-radius:10px;
  padding:6px 12px;color:var(--text2);font-size:.8rem;cursor:pointer;
  transition:all .2s;white-space:nowrap
}
.escape-room-back:active{transform:scale(.95);border-color:var(--accent)}
.escape-room-name{
  font-size:1.05rem;font-weight:800;color:var(--text);flex:1
}
.escape-room-num{
  font-size:.7rem;color:var(--text2);
  background:var(--surface);border:1px solid var(--surface2);
  border-radius:8px;padding:3px 8px
}

.escape-room-desc{
  color:var(--text2);font-size:.82rem;margin-bottom:12px;
  font-style:italic;line-height:1.4;
  background:var(--surface);border-radius:10px;padding:10px 12px;
  border-left:3px solid var(--accent)
}

.escape-timer-bar{
  display:flex;align-items:center;gap:8px;
  font-size:.8rem;color:var(--text2);margin-bottom:14px
}
.escape-timer-val{
  font-weight:800;color:var(--accent3);font-size:.95rem;
  font-variant-numeric:tabular-nums
}

/* Puzzle areas */
.escape-puzzle-area{
  background:var(--surface);border-radius:var(--radius);
  border:1px solid var(--surface2);padding:16px 12px;
  margin-bottom:14px;min-height:100px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px
}
.escape-symbols-row{
  display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap
}
.escape-sym{
  background:var(--surface2);border-radius:10px;padding:8px;
  border:1px solid rgba(168,85,247,.3)
}
.escape-sym svg{width:44px;height:56px;display:block}

/* Room 2 — scrambled letters */
.escape-scramble{
  font-size:2rem;font-weight:900;letter-spacing:8px;
  color:var(--accent);font-family:monospace
}
.escape-scramble-label{
  font-size:.75rem;color:var(--text2);text-align:center
}

/* Room 3 — equations */
.escape-equation{
  font-size:1.1rem;font-weight:700;color:var(--text);text-align:center;line-height:1.8
}
.escape-eq-row{
  display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:1.05rem
}

/* Room 4 — star map */
.escape-starmap{
  position:relative;width:180px;height:180px
}
.escape-star{
  position:absolute;background:rgba(250,204,21,.7);border-radius:50%
}
.escape-sym-line{
  position:absolute;background:var(--accent);border-radius:2px;
  transform-origin:left center
}
.escape-sym-dot{
  position:absolute;background:var(--accent);border-radius:50%;
  width:6px;height:6px
}

/* Room 4 choice buttons */
.escape-choices{
  display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;max-width:280px
}
.escape-choice-btn{
  padding:14px;border:2px solid var(--surface2);border-radius:12px;
  background:var(--surface);color:var(--text);
  font-size:1.2rem;font-weight:800;cursor:pointer;
  transition:border-color .15s,background .15s,transform .15s;
  letter-spacing:1px;text-align:center
}
.escape-choice-btn:active{transform:scale(.95)}
.escape-choice-btn.correct{background:rgba(34,197,94,.18);border-color:#22c55e;color:#4ade80}
.escape-choice-btn.wrong{background:rgba(239,68,68,.15);border-color:#ef4444;color:#f87171}
.escape-choice-btn.shake{animation:shake .35s ease-out}

/* Room 5 — combine clue */
.escape-combine-clue{
  font-size:.85rem;color:var(--text2);line-height:1.8;text-align:center
}
.escape-combine-highlight{
  color:var(--accent);font-weight:700
}

/* Answer input */
.escape-answer-row{
  display:flex;gap:8px;width:100%;max-width:360px
}
.escape-answer-input{
  flex:1;padding:12px 14px;
  border:2px solid var(--surface2);border-radius:12px;
  background:var(--surface);color:var(--text);
  font-size:1rem;font-family:inherit;font-weight:700;
  outline:none;text-align:center;letter-spacing:2px;
  text-transform:uppercase;transition:border-color .2s
}
.escape-answer-input:focus{border-color:var(--accent)}
.escape-submit-btn{
  padding:12px 18px;border:none;border-radius:12px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;font-size:.85rem;font-weight:700;cursor:pointer;
  transition:opacity .2s,transform .15s;white-space:nowrap
}
.escape-submit-btn:active{transform:scale(.96)}

/* Hint / relay buttons */
.escape-action-row{
  display:flex;gap:8px;width:100%;max-width:360px;justify-content:center
}
.escape-hint-btn,.escape-relay-btn{
  flex:1;padding:10px 12px;border:1px solid var(--surface2);border-radius:10px;
  background:var(--surface);color:var(--text2);
  font-size:.8rem;font-weight:600;cursor:pointer;
  transition:all .2s;display:flex;align-items:center;justify-content:center;gap:5px
}
.escape-hint-btn:active,.escape-relay-btn:active{transform:scale(.95);border-color:var(--accent)}
.escape-hint-btn.used{opacity:.5;cursor:default}
.escape-hint-used-count{
  font-size:.7rem;color:var(--text2);text-align:center;margin-top:4px
}
.escape-hint-text{
  background:rgba(168,85,247,.1);border-radius:10px;
  padding:8px 12px;font-size:.8rem;color:var(--accent);
  border:1px solid rgba(168,85,247,.3);width:100%;max-width:360px;
  text-align:center;line-height:1.4
}

/* Room result screen */
.escape-result{
  text-align:center;padding:16px 0
}
.escape-result-stars{
  font-size:2.2rem;margin-bottom:8px
}
.escape-result-pts{
  font-size:2.5rem;font-weight:900;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  line-height:1;margin-bottom:4px
}
.escape-result-label{
  color:var(--text2);font-size:.85rem;margin-bottom:16px
}
.escape-result-stats{
  display:flex;gap:20px;justify-content:center;margin-bottom:20px
}
.escape-result-stat{text-align:center}
.escape-result-stat-v{font-size:1.4rem;font-weight:800;color:var(--text)}
.escape-result-stat-l{font-size:.68rem;color:var(--text2);text-transform:uppercase;letter-spacing:.3px}

/* Escape summary */
.escape-summary{
  text-align:center;padding:16px 0
}
.escape-summary-stars{
  font-size:2.5rem;margin-bottom:8px
}
.escape-summary-pts{
  font-size:3rem;font-weight:900;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  line-height:1;margin:8px 0 4px
}
.escape-summary-label{color:var(--text2);font-size:.85rem;margin-bottom:20px}
.escape-summary-stats{
  display:flex;gap:16px;justify-content:center;margin-bottom:20px;flex-wrap:wrap
}
.escape-summary-stat{text-align:center}
.escape-summary-stat-v{font-size:1.4rem;font-weight:800;color:var(--text)}
.escape-summary-stat-l{font-size:.68rem;color:var(--text2);text-transform:uppercase;letter-spacing:.3px}

/* Relay players list */
.relay-player-list{
  background:var(--surface);border-radius:var(--radius);
  border:1px solid var(--surface2);padding:10px;
  margin-bottom:12px;max-height:180px;overflow-y:auto
}
.relay-player-row{
  display:flex;align-items:center;gap:8px;padding:8px 6px;
  border-bottom:1px solid var(--surface2);cursor:pointer;
  transition:background .15s;border-radius:6px
}
.relay-player-row:last-child{border-bottom:none}
.relay-player-row:active{background:var(--surface2)}
.relay-player-name{font-weight:700;font-size:.9rem;flex:1}

/* Relay notification badge */
.relay-notify{
  background:var(--surface);border-radius:var(--radius);
  border:1px solid var(--accent);padding:12px 14px;margin-bottom:12px;
  display:flex;align-items:center;gap:10px
}
.relay-notify-text{font-size:.82rem;color:var(--text);flex:1}
.relay-notify-btn{
  padding:6px 12px;border:none;border-radius:8px;
  background:var(--accent);color:#fff;font-size:.75rem;font-weight:700;
  cursor:pointer;white-space:nowrap
}
.relay-notify-btn:active{transform:scale(.95)}

/* ══════════════════════════════════════════
   KAHOOT LOGIN SCREEN
══════════════════════════════════════════ */
@keyframes login-slide-up{
  from{opacity:0;transform:translateY(32px) scale(.97)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes title-glow{
  0%,100%{text-shadow:0 0 20px rgba(168,85,247,.6),0 0 40px rgba(236,72,153,.3)}
  50%{text-shadow:0 0 32px rgba(168,85,247,.9),0 0 60px rgba(236,72,153,.5)}
}
@keyframes btn-bounce{
  0%,100%{transform:scale(1)}
  40%{transform:scale(1.06)}
  70%{transform:scale(.97)}
}

.kahoot-login{
  animation:login-slide-up .4s cubic-bezier(.23,1,.32,1) both;
  text-align:center;padding:20px 0 16px
}
.kahoot-login-title{
  font-size:2rem;font-weight:900;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  animation:title-glow 2.5s ease-in-out infinite;
  margin-bottom:6px;line-height:1.1
}
.kahoot-login-sub{font-size:.85rem;color:var(--text2);margin-bottom:20px;letter-spacing:.3px}
.kahoot-name-input{
  width:100%;padding:16px;
  border:2px solid var(--surface2);border-radius:var(--radius);
  background:var(--surface);color:var(--text);
  font-size:1.1rem;font-family:inherit;outline:none;text-align:center;
  margin-bottom:12px;transition:border-color .2s
}
.kahoot-name-input:focus{border-color:var(--accent)}
.kahoot-enter-btn{
  width:100%;max-width:260px;padding:16px;
  border:none;border-radius:var(--radius);
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;font-size:1.15rem;font-weight:800;
  cursor:pointer;box-shadow:var(--glow);
  transition:opacity .2s;
  animation:btn-bounce 1.8s ease-in-out 1.2s infinite
}
.kahoot-enter-btn:active{transform:scale(.95);animation:none}
.kahoot-enter-btn:disabled{opacity:.4;animation:none;cursor:default}
.kahoot-player-bar{
  display:flex;align-items:center;gap:10px;
  background:var(--surface);border-radius:12px;
  padding:10px 14px;margin-bottom:14px;
  border:1px solid var(--surface2)
}
.kahoot-player-bar-name{font-weight:700;font-size:.95rem;color:var(--text)}
.kahoot-player-bar-sub{font-size:.75rem;color:var(--text2)}
.kahoot-player-bar-change{
  margin-left:auto;font-size:.75rem;color:var(--accent);
  background:none;border:none;cursor:pointer;font-weight:600;padding:4px 8px
}

/* ══════════════════════════════════════════
   AVATAR CREATOR
══════════════════════════════════════════ */
.avatar-creator{
  background:var(--surface);border-radius:var(--radius);
  padding:14px 12px;margin-bottom:16px;
  border:1px solid var(--surface2)
}
.avatar-creator-title{
  font-size:.7rem;color:var(--text2);
  text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;text-align:center
}
.avatar-preview-wrap{
  display:flex;justify-content:center;margin-bottom:12px
}
.avatar-feature-label{
  font-size:.7rem;color:var(--text2);
  text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;margin-top:8px
}
.avatar-options-row{
  display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;
  scrollbar-width:none;-ms-overflow-style:none
}
.avatar-options-row::-webkit-scrollbar{display:none}
.avatar-opt{
  flex-shrink:0;width:42px;height:42px;
  border-radius:10px;border:2px solid var(--surface2);
  background:var(--surface2);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:border-color .15s,transform .15s;padding:0;overflow:hidden
}
.avatar-opt:active{transform:scale(.92)}
.avatar-opt.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.avatar-opt-color{border-radius:50%;width:28px;height:28px}

/* ══════════════════════════════════════════
   MASCOT
══════════════════════════════════════════ */
@keyframes mascot-pop{
  from{opacity:0;transform:scale(.7)}
  to{opacity:1;transform:scale(1)}
}
@keyframes bubble-in{
  from{opacity:0;transform:translateX(20px) scale(.95)}
  to{opacity:1;transform:translateX(0) scale(1)}
}
@keyframes mascot-idle{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-3px)}
}

.mascot-wrap{
  position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));right:16px;
  z-index:150;display:flex;align-items:flex-end;gap:8px;
  pointer-events:none
}
.mascot-bubble{
  background:var(--surface2);color:var(--text);
  border:1px solid var(--accent);border-radius:12px;
  padding:8px 12px;font-size:.78rem;font-weight:600;
  max-width:180px;line-height:1.4;
  box-shadow:var(--glow);
  opacity:0;pointer-events:none;
  animation:none;
  position:relative
}
.mascot-bubble.show{
  animation:bubble-in .25s cubic-bezier(.23,1,.32,1) both
}
.mascot-bubble.hide{
  animation:bubble-in .2s cubic-bezier(.23,1,.32,1) reverse both
}
/* Speech bubble tail */
.mascot-bubble::after{
  content:'';position:absolute;bottom:10px;right:-8px;
  border-style:solid;border-width:6px 0 6px 8px;
  border-color:transparent transparent transparent var(--surface2)
}
/* Face wrap — intercepts clicks for notification panel */
#mascotFaceWrap{
  pointer-events:auto;position:relative
}
.mascot-face{
  width:48px;height:48px;flex-shrink:0;
  animation:mascot-pop .4s cubic-bezier(.23,1,.32,1) both,
            mascot-idle 3s ease-in-out 1s infinite;
  pointer-events:auto;cursor:pointer
}

/* ══════════════════════════════════════════
   MASCOT NOTIFICATION BADGE
══════════════════════════════════════════ */
.mascot-badge{
  position:absolute;top:-4px;right:-4px;
  min-width:18px;height:18px;
  background:#ef4444;border-radius:999px;
  font-size:.7rem;font-weight:800;color:#fff;
  display:flex;align-items:center;justify-content:center;
  padding:0 4px;line-height:1;
  border:1.5px solid var(--bg);
  pointer-events:none;
  animation:mascot-pop .25s cubic-bezier(.23,1,.32,1) both
}

/* ══════════════════════════════════════════
   NOTIFICATION PANEL
══════════════════════════════════════════ */
@keyframes notif-slide-up{
  from{opacity:0;transform:translateY(16px) scale(.97)}
  to{opacity:1;transform:translateY(0) scale(1)}
}

.notif-panel{
  position:fixed;
  bottom:calc(84px + env(safe-area-inset-bottom));
  right:16px;
  width:300px;max-width:calc(100vw - 32px);
  max-height:60vh;
  background:var(--surface);
  border:1px solid var(--accent);
  border-radius:var(--radius);
  box-shadow:var(--glow),0 8px 24px rgba(0,0,0,.4);
  z-index:160;
  display:flex;flex-direction:column;
  animation:notif-slide-up .25s cubic-bezier(.23,1,.32,1) both;
  overflow:hidden
}
.notif-panel-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;
  border-bottom:1px solid var(--surface2);
  flex-shrink:0
}
.notif-panel-title{
  font-size:.85rem;font-weight:800;color:var(--text)
}
.notif-panel-close{
  background:none;border:none;color:var(--text2);
  font-size:1.1rem;cursor:pointer;padding:2px 6px;
  border-radius:6px;transition:background .15s
}
.notif-panel-close:active{background:var(--surface2)}
.notif-panel-body{
  overflow-y:auto;flex:1;
  scrollbar-width:thin;scrollbar-color:var(--surface2) transparent
}
.notif-empty{
  text-align:center;padding:24px 16px;
  color:var(--text2);font-size:.85rem
}
.notif-item{
  display:flex;align-items:flex-start;gap:10px;
  padding:10px 14px;
  border-bottom:1px solid var(--surface2);
  cursor:pointer;transition:background .15s
}
.notif-item:last-child{border-bottom:none}
.notif-item:active{background:var(--surface2)}
.notif-item.unread{
  border-left:3px solid var(--accent);
  padding-left:11px
}
.notif-item-icon{
  font-size:1.2rem;flex-shrink:0;margin-top:1px
}
.notif-item-body{flex:1;min-width:0}
.notif-item-text{
  font-size:.8rem;color:var(--text);line-height:1.35;margin-bottom:4px;
  word-break:break-word
}
.notif-item-time{
  font-size:.7rem;color:var(--text2)
}
.notif-item-action{
  margin-top:6px;padding:5px 10px;
  border:1px solid var(--accent);border-radius:8px;
  background:transparent;color:var(--accent);
  font-size:.75rem;font-weight:700;cursor:pointer;
  transition:all .15s;white-space:nowrap
}
.notif-item-action:active{transform:scale(.95);background:rgba(168,85,247,.15)}
