:root{
  --bg-deep:#070a1e;
  --bg-nebula:#1b1440;
  --panel:rgba(24,20,56,0.6);
  --panel-solid:#181438;
  --border:rgba(255,255,255,0.09);
  --purple:#7c6cf0;
  --purple-dim:#4a3f8f;
  --gold:#ffd166;
  --cyan:#4ecdc4;
  --coral:#ff6b6b;
  --text:#eae8f7;
  --text-dim:#9b96c2;
  --font-pixel:'Press Start 2P', monospace;
  --font-body:'Kanit', sans-serif;
  --font-mono:'JetBrains Mono', monospace;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg-deep);
  color:var(--text);
  font-family:var(--font-body);
  min-height:100vh;
  overflow-x:hidden;
  position:relative;
}
#stars{position:fixed;inset:0;z-index:0;}
.nebula{
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(ellipse 700px 500px at 15% 20%, rgba(124,108,240,0.18), transparent 60%),
    radial-gradient(ellipse 600px 500px at 85% 75%, rgba(78,205,196,0.10), transparent 60%),
    radial-gradient(ellipse 500px 400px at 60% 10%, rgba(255,107,107,0.08), transparent 60%);
  animation:drift 40s ease-in-out infinite alternate;
}
@keyframes drift{
  0%{transform:translate(0,0) scale(1);}
  100%{transform:translate(-2%,3%) scale(1.05);}
}
.app{position:relative;z-index:1;max-width:880px;margin:0 auto;padding:22px 18px 60px;}

header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px;flex-wrap:wrap;}
.logo{display:flex;align-items:center;gap:10px;}
.logo-mark{
  width:34px;height:34px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #fff, var(--gold) 40%, var(--purple) 100%);
  box-shadow:0 0 18px rgba(255,209,102,0.55);
  flex-shrink:0;
}
.logo-text{font-family:var(--font-pixel);font-size:11px;letter-spacing:1px;color:var(--gold);line-height:1.6;}
.logo-sub{font-size:11px;color:var(--text-dim);font-family:var(--font-body);letter-spacing:.5px;}
.badge{
  font-family:var(--font-mono);font-size:12.5px;color:var(--cyan);
  background:rgba(78,205,196,0.08);border:1px solid rgba(78,205,196,0.35);
  padding:6px 12px;border-radius:20px;white-space:nowrap;
}
.logout-btn{
  font-family:var(--font-body);font-size:12.5px;color:var(--text-dim);
  background:transparent;border:1px solid var(--border);padding:6px 12px;border-radius:20px;cursor:pointer;
  transition:color .2s,border-color .2s;
}
.logout-btn:hover{color:var(--coral);border-color:rgba(255,107,107,0.5);}

nav{display:flex;gap:8px;margin-bottom:22px;background:var(--panel);border:1px solid var(--border);
  border-radius:14px;padding:5px;backdrop-filter:blur(10px);}
nav button{
  flex:1;background:transparent;border:none;color:var(--text-dim);font-family:var(--font-body);
  font-size:14px;font-weight:500;padding:11px 6px;border-radius:10px;cursor:pointer;
  transition:background .25s,color .25s;letter-spacing:.3px;
}
nav button.active{background:linear-gradient(135deg,var(--purple),#5b4fc7);color:#fff;box-shadow:0 4px 14px rgba(124,108,240,0.4);}
nav button:not(.active):hover{color:var(--text);}

.panel{
  background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:26px 22px;
  backdrop-filter:blur(10px);
}
.view{display:none;}
.view.active{display:block;animation:fadeIn .35s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}

/* ---- CATCH VIEW ---- */
.console-label{font-family:var(--font-mono);font-size:12px;color:var(--text-dim);letter-spacing:1px;margin-bottom:10px;text-transform:uppercase;}
.input-wrap{position:relative;}
#wordInput{
  width:100%;background:#0d0a26;border:1.5px solid var(--purple-dim);border-radius:14px;
  color:var(--gold);font-family:var(--font-mono);font-size:clamp(22px,5vw,34px);font-weight:700;
  letter-spacing:2px;padding:20px 60px 20px 22px;outline:none;transition:border-color .2s, box-shadow .2s;
}
#wordInput::placeholder{color:#4c4680;font-weight:400;letter-spacing:1px;}
#wordInput:focus{border-color:var(--purple);box-shadow:0 0 0 4px rgba(124,108,240,0.15);}
#wordInput.pulse{animation:pulseKey .16s ease;}
@keyframes pulseKey{0%{box-shadow:0 0 0 0 rgba(255,209,102,0.55);}100%{box-shadow:0 0 0 10px rgba(255,209,102,0);}}
.send-btn{
  position:absolute;right:10px;top:50%;transform:translateY(-50%);
  width:42px;height:42px;border-radius:10px;border:none;cursor:pointer;
  background:linear-gradient(135deg,var(--cyan),#2f9e97);color:#04211f;font-size:18px;
  display:flex;align-items:center;justify-content:center;transition:transform .15s;
}
.send-btn:hover{transform:translateY(-50%) scale(1.06);}
.hint{font-size:12px;color:var(--text-dim);margin-top:8px;}

.orbit-zone{position:relative;height:190px;margin-top:8px;}
.satellite{
  position:absolute;font-family:var(--font-mono);font-size:14px;color:var(--text);
  background:rgba(124,108,240,0.14);border:1px solid rgba(124,108,240,0.4);
  padding:7px 13px;border-radius:20px;cursor:pointer;user-select:none;
  animation:floaty ease-in-out infinite, popIn .3s ease;
  transition:background .2s,border-color .2s,transform .15s;
  backdrop-filter:blur(4px);
}
.satellite:hover{background:rgba(255,209,102,0.18);border-color:var(--gold);color:var(--gold);transform:scale(1.08);}
@keyframes popIn{from{opacity:0;transform:scale(.5);}to{opacity:1;transform:scale(1);}}
@keyframes floaty{
  0%{transform:translate(0,0);}
  50%{transform:translate(6px,-10px);}
  100%{transform:translate(0,0);}
}

.result-card{
  margin-top:6px;border-radius:16px;padding:20px;border:1px solid rgba(255,209,102,0.35);
  background:linear-gradient(145deg, rgba(255,209,102,0.07), rgba(124,108,240,0.06));
  display:none;
}
.result-card.show{display:block;animation:fadeIn .3s ease;}
.result-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.result-word{font-family:var(--font-mono);font-size:26px;font-weight:700;color:var(--gold);}
.result-phonetic{font-family:var(--font-mono);color:var(--text-dim);font-size:14px;}
.speak-btn{
  background:rgba(78,205,196,0.15);border:1px solid rgba(78,205,196,0.5);color:var(--cyan);
  width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;
}
.result-status{font-size:12px;margin-top:6px;color:var(--text-dim);}
.result-status.new{color:var(--cyan);}
.result-meaning{margin-top:14px;font-size:19px;font-weight:500;}
.result-def{margin-top:8px;font-size:13.5px;color:var(--text-dim);line-height:1.6;font-family:var(--font-mono);}
.loading-dots{font-family:var(--font-mono);color:var(--text-dim);font-size:14px;}

/* ---- QUIZ VIEW ---- */
.quiz-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;}
.quiz-title{font-family:var(--font-pixel);font-size:13px;color:var(--gold);}
.quiz-progress{font-family:var(--font-mono);font-size:13px;color:var(--text-dim);}
.q-word{font-family:var(--font-mono);font-size:clamp(24px,6vw,36px);font-weight:700;text-align:center;
  color:#fff;margin:26px 0 6px;letter-spacing:1px;}
.q-sub{text-align:center;color:var(--text-dim);font-size:13px;margin-bottom:26px;}
.choices{display:grid;gap:12px;}
.choice-btn{
  text-align:left;background:rgba(255,255,255,0.03);border:1.5px solid var(--border);color:var(--text);
  padding:15px 16px;border-radius:12px;font-family:var(--font-body);font-size:15.5px;cursor:pointer;
  transition:border-color .15s, background .15s, transform .1s;
}
.choice-btn:hover:not(:disabled){border-color:var(--purple);background:rgba(124,108,240,0.1);}
.choice-btn:disabled{cursor:default;}
.choice-btn.correct{border-color:var(--cyan);background:rgba(78,205,196,0.16);color:var(--cyan);}
.choice-btn.wrong{border-color:var(--coral);background:rgba(255,107,107,0.14);color:var(--coral);}
.next-btn{
  margin-top:22px;width:100%;padding:14px;border-radius:12px;border:none;cursor:pointer;
  background:linear-gradient(135deg,var(--purple),#5b4fc7);color:#fff;font-family:var(--font-body);
  font-size:15px;font-weight:600;display:none;
}
.next-btn.show{display:block;animation:fadeIn .25s ease;}
.quiz-empty, .quiz-done{text-align:center;padding:30px 10px;color:var(--text-dim);}
.quiz-done .score{font-family:var(--font-pixel);font-size:26px;color:var(--gold);margin:14px 0;}

/* ---- ARCHIVE VIEW ---- */
.archive-search{
  width:100%;background:#0d0a26;border:1px solid var(--border);border-radius:10px;color:var(--text);
  padding:11px 14px;font-family:var(--font-body);font-size:14px;margin-bottom:16px;outline:none;
}
.archive-search:focus{border-color:var(--purple);}
.archive-list{display:grid;gap:10px;}
.word-row{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  background:rgba(255,255,255,0.03);border:1px solid var(--border);border-radius:12px;padding:13px 16px;
}
.word-row-main{min-width:0;}
.word-row-word{font-family:var(--font-mono);font-weight:700;color:var(--gold);font-size:15.5px;cursor:pointer;}
.word-row-meaning{font-size:14px;color:var(--text-dim);margin-top:2px;}
.word-row-stats{font-family:var(--font-mono);font-size:11px;color:var(--text-dim);white-space:nowrap;}
.stat-good{color:var(--cyan);}
.stat-bad{color:var(--coral);}
.del-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:16px;padding:4px 6px;}
.del-btn:hover{color:var(--coral);}
.archive-empty{text-align:center;color:var(--text-dim);padding:30px 10px;}

footer{text-align:center;color:var(--text-dim);font-size:11px;margin-top:26px;font-family:var(--font-mono);}

/* ---- AUTH SCREEN ---- */
.auth-wrap{
  position:relative;z-index:1;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
}
.auth-card{
  width:100%;max-width:380px;background:var(--panel);border:1px solid var(--border);border-radius:18px;
  padding:28px 24px;backdrop-filter:blur(10px);
}
.auth-tabs{display:flex;gap:8px;background:rgba(255,255,255,0.03);border:1px solid var(--border);
  border-radius:12px;padding:4px;margin-bottom:18px;}
.auth-tab-btn{
  flex:1;background:transparent;border:none;color:var(--text-dim);font-family:var(--font-body);
  font-size:13.5px;padding:9px 4px;border-radius:9px;cursor:pointer;transition:background .2s,color .2s;
}
.auth-tab-btn.active{background:linear-gradient(135deg,var(--purple),#5b4fc7);color:#fff;}
.auth-input{
  width:100%;background:#0d0a26;border:1px solid var(--border);border-radius:10px;color:var(--text);
  padding:12px 14px;font-family:var(--font-body);font-size:14px;margin-bottom:12px;outline:none;
}
.auth-input:focus{border-color:var(--purple);}
.auth-submit{
  width:100%;padding:13px;border-radius:10px;border:none;cursor:pointer;
  background:linear-gradient(135deg,var(--cyan),#2f9e97);color:#04211f;font-family:var(--font-body);
  font-weight:600;font-size:14.5px;margin-top:4px;
}
.auth-msg{margin-top:12px;font-size:12.5px;color:var(--text-dim);text-align:center;min-height:16px;}
.auth-msg.error{color:var(--coral);}
.auth-msg.success{color:var(--cyan);}

@media (max-width:520px){
  .panel{padding:20px 16px;}
  #wordInput{padding:18px 54px 18px 16px;}
}
