:root {
  --color-correct: #538d4e;
  --color-present: #b59f3b;
  --color-absent:  #3a3a3c;
  --color-empty:   #121213;
  --color-border:  #3a3a3c;
  --color-text:    #ffffff;
  --color-bg:      #121213;
  --color-key-bg:  #818384;
  --tile-size: clamp(46px, calc((100vw - 30px) / 5), 62px);
  --tile-gap: 5px;
  --key-h: 58px;
  --key-w: 43px;
  --key-gap: 6px;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  background: var(--color-bg);
  color: var(--color-text);
  font-family: 'Clear Sans', 'Helvetica Neue', Arial, sans-serif;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 100dvh;
  overflow-x: hidden;
}

header {
  width: 100%;
  max-width: 500px;
  border-bottom: 1px solid var(--color-border);
  padding: 12px 0;
  text-align: center;
}
header h1 { font-size: 2rem; font-weight: 700; letter-spacing: 0.2em; }
header .subtitle { font-size: 0.75rem; color: #818384; letter-spacing: 0.1em; }

main {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  padding: 24px 0;
  width: 100%;
}

/* ── Name screen ─────────────────────────────────────────────────────────── */
.name-screen {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-top: 40px;
}
.name-screen label {
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  color: #818384;
  text-transform: uppercase;
}
.name-input-row { display: flex; gap: 8px; }

#player-name-input {
  background: #1a1a1b;
  border: 2px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-text);
  font-size: max(1rem, 16px); /* >= 16px verhindert Auto-Zoom auf iOS */
  padding: 10px 14px;
  outline: none;
  width: 200px;
}
#player-name-input:focus { border-color: #818384; }

#start-btn {
  background: var(--color-correct);
  color: #fff;
  border: none;
  border-radius: 4px;
  padding: 10px 20px;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: 0.05em;
}
#start-btn:hover { opacity: 0.9; }

/* ── Game area ───────────────────────────────────────────────────────────── */
.game-area { display: flex; flex-direction: column; align-items: center; gap: 24px; }

.message-bar {
  min-height: 2rem;
  font-size: 0.9rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-align: center;
}

.board {
  display: grid;
  grid-template-columns: repeat(5, var(--tile-size));
  grid-template-rows: repeat(6, var(--tile-size));
  gap: var(--tile-gap);
}

.tile {
  width: var(--tile-size);
  height: var(--tile-size);
  border: 2px solid var(--color-border);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--color-text);
  background: var(--color-empty);
}

@keyframes pop {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.12); }
  100% { transform: scale(1); }
}
.tile.pop { animation: pop 0.1s ease-in-out; }

@keyframes flip-in {
  from { transform: rotateX(0deg); }
  to   { transform: rotateX(-90deg); }
}
@keyframes flip-out {
  from { transform: rotateX(-90deg); }
  to   { transform: rotateX(0deg); }
}
.tile.flip-in  { animation: flip-in  0.25s ease-in  forwards; }
.tile.flip-out { animation: flip-out 0.25s ease-out forwards; }

.tile[data-state="correct"] { background: var(--color-correct); border-color: var(--color-correct); }
.tile[data-state="present"] { background: var(--color-present); border-color: var(--color-present); }
.tile[data-state="absent"]  { background: var(--color-absent);  border-color: var(--color-absent); }
.tile[data-state="filled"]  { border-color: #565758; }

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 50%, 90% { transform: translateX(-4px); }
  30%, 70%      { transform: translateX(4px); }
}
.tile.shake { animation: shake 0.5s ease-in-out; }

/* ── Keyboard ────────────────────────────────────────────────────────────── */
.keyboard { display: flex; flex-direction: column; gap: 8px; align-items: center; touch-action: manipulation; }
.keyboard-row { display: flex; gap: var(--key-gap); }

.key {
  height: var(--key-h);
  min-width: var(--key-w);
  padding: 0 4px;
  border: none;
  border-radius: 4px;
  background: var(--color-key-bg);
  color: var(--color-text);
  font-size: 0.85rem;
  font-weight: 700;
  cursor: pointer;
  text-transform: uppercase;
  transition: background 0.2s;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}
.key:active { opacity: 0.8; }
.key.wide { min-width: 65px; font-size: 0.75rem; }

.key[data-state="correct"] { background: var(--color-correct); }
.key[data-state="present"] { background: var(--color-present); }
.key[data-state="absent"]  { background: var(--color-absent); }

/* ── Result overlay ──────────────────────────────────────────────────────── */
.result-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
}
.result-overlay.hidden { display: none; }

.result-card {
  background: #1a1a1b;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 28px 40px;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 300px;
  max-width: calc(100vw - 32px);
}

#result-title { font-size: 1.5rem; font-weight: 700; }
#result-word  { font-size: 0.95rem; color: #818384; letter-spacing: 0.15em; }
#result-points { font-size: 1.1rem; font-weight: 600; color: var(--color-correct); }

/* ── High score list ─────────────────────────────────────────────────────── */
.highscore-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
  margin: 4px 0;
}

.highscore-list h3 {
  font-size: 0.7rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: #818384;
  margin-bottom: 6px;
}

.score-entry {
  display: grid;
  grid-template-columns: 28px 1fr auto;
  align-items: center;
  gap: 8px;
  padding: 5px 8px;
  border-radius: 4px;
  font-size: 0.875rem;
  transition: background 0.1s;
}
.score-entry.current { background: rgba(83, 141, 78, 0.2); }

.score-rank {
  font-size: 0.75rem;
  color: #818384;
  font-weight: 700;
  text-align: right;
}
.score-name { text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.score-pts  { font-weight: 700; color: var(--color-correct); white-space: nowrap; }
.score-entry.current .score-pts { color: #7ec97a; }

.result-actions {
  display: flex;
  gap: 10px;
  margin-top: 4px;
}

#new-game-btn,
#switch-player-btn {
  flex: 1;
  border: none;
  border-radius: 4px;
  padding: 12px 16px;
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: 0.05em;
}
#new-game-btn         { background: var(--color-correct); color: #fff; }
#switch-player-btn    { background: #3a3a3c; color: #fff; }
#new-game-btn:hover,
#switch-player-btn:hover { opacity: 0.85; }

.hidden { display: none !important; }

/* ── Mobile ──────────────────────────────────────────────────────────────── */
@media (max-width: 480px) {
  :root {
    --key-h: 48px;
    --key-w: clamp(28px, calc((100vw - 22px) / 10), 43px);
    --key-gap: 4px;
  }

  header { padding: 8px 0; }
  header h1 { font-size: 1.5rem; }

  main { gap: 16px; padding: 12px 0; }

  .name-screen { margin-top: 24px; }
  .name-input-row { flex-direction: column; align-items: stretch; width: min(280px, calc(100vw - 32px)); }
  #player-name-input { width: 100%; }
  #start-btn { width: 100%; }

  .game-area { gap: 16px; }

  .key { font-size: 0.72rem; }
  .key.wide {
    min-width: clamp(42px, calc((100vw - 22px) / 10 + 14px), 65px);
    font-size: 0.62rem;
  }

  .result-card {
    padding: 20px 16px;
    min-width: unset;
    width: calc(100vw - 32px);
  }

  .result-actions { flex-direction: column; }

  #new-game-btn,
  #switch-player-btn { padding: 14px 16px; }
}
