:root {
  --main-bg: #ABD38D;
  --main-fg: #000000;
  --question-bg: #0066B2;
  --question-fg: #FFFFFF;
  --answer-bg: #DA2031;
  --answer-fg: #FBD100;

  --pad: clamp(12px, 4vmin, 40px);
  --gap: clamp(8px, 1.6vh, 20px);
  --radius: clamp(8px, 1.6vmin, 16px);

  /* Safe areas (iPhone notch / home bar) */
  --sa-top: env(safe-area-inset-top, 0px);
  --sa-bottom: env(safe-area-inset-bottom, 0px);
  --sa-left: env(safe-area-inset-left, 0px);
  --sa-right: env(safe-area-inset-right, 0px);
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  height: 100%;
  overflow: hidden;
  background: var(--main-bg);
  color: var(--main-fg);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", Arial, sans-serif;
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select: none;
  user-select: none;
  touch-action: manipulation;
}

/* Four equal horizontal bands stacked vertically */
#app {
  display: grid;
  grid-template-rows: repeat(4, minmax(0, 1fr));
  height: 100vh;
  height: 100dvh;
  padding-top: var(--sa-top);
  padding-bottom: var(--sa-bottom);
}

.part {
  position: relative;
  min-height: 0;
  padding-left: calc(var(--pad) + var(--sa-left));
  padding-right: calc(var(--pad) + var(--sa-right));
}

p { margin: 0; }

/* ---------- Part 1: Russian ---------- */
.part-ru {
  display: flex;
  align-items: center;
  padding-top: var(--pad);
  padding-bottom: var(--pad);
}

.ru {
  width: 100%;
  max-height: 100%;
  overflow: hidden;
  font-size: clamp(22px, 8vmin, 64px);
  line-height: 1.25;
}

.progress {
  position: absolute;
  top: calc(var(--pad) / 2);
  left: calc(var(--pad) + var(--sa-left));
  right: calc(var(--pad) + var(--sa-right));
  height: 6px;
  border-radius: 3px;
  background: rgba(0, 0, 0, 0.12);
  overflow: hidden;
}
.progress-fill {
  height: 100%;
  width: 0;
  background: var(--question-bg);
  transition: width 0.3s ease;
}

.hint {
  position: absolute;
  bottom: calc(var(--pad) / 3);
  left: calc(var(--pad) + var(--sa-left));
  right: calc(var(--pad) + var(--sa-right));
  font-size: clamp(12px, 2.2vmin, 20px);
  opacity: 0;
  transition: opacity 0.3s;
  pointer-events: none;
}
.hint.show { opacity: 0.6; }

/* ---------- Part 2: Mongolian + Buryat ---------- */
.part-mn {
  background: var(--question-bg);
  color: var(--question-fg);
  display: flex;
  align-items: center;
  padding-top: var(--pad);
  padding-bottom: var(--pad);
}

.mn-box {
  width: 100%;
  max-height: 100%;
  overflow: hidden;
  font-size: clamp(24px, 9vmin, 72px);
}

.mn {
  font-size: 1em;
  line-height: 1.25;
}

.bua {
  font-size: 0.5em;
  line-height: 1.3;
  margin-top: 0.6em;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.4s;
}
.bua.show { visibility: visible; opacity: 1; }

.blank {
  display: inline-block;
  min-width: 2.5em;
  border-bottom: 0.08em solid currentColor;
  line-height: 1.05;
  text-align: center;
}
.blank.filled {
  min-width: 0;
  border-bottom-color: var(--answer-fg);
  color: var(--answer-fg);
}
.blank.filled.wrong { color: #FFB3B9; border-bottom-color: #FFB3B9; }

/* ---------- Parts 3-4: answers ---------- */
.part-answers {
  grid-row: span 2;
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: var(--gap);
  padding-top: var(--gap);
  padding-bottom: var(--gap);
}

.character-slot { min-width: 0; }

.answers {
  display: grid;
  grid-template-rows: repeat(4, minmax(0, 1fr));
  gap: var(--gap);
  min-width: 0;
  min-height: 0;
}

/* Wide screens (iPad landscape, TV): 2x2 grid */
@media (min-aspect-ratio: 1/1) {
  .part-answers { grid-template-columns: 1fr 2fr; }
  .answers {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: repeat(2, minmax(0, 1fr));
  }
}

.answer {
  min-width: 0;
  min-height: 0;
  border: 0;
  border-radius: var(--radius);
  background: var(--answer-bg);
  color: var(--answer-fg);
  font: inherit;
  font-size: clamp(22px, 8.5vmin, 64px);
  padding: 0 0.4em;
  white-space: nowrap;
  overflow: hidden;
  cursor: pointer;
  box-shadow: 0 0.12em 0 rgba(0, 0, 0, 0.25);
  transition: transform 0.08s, opacity 0.3s, box-shadow 0.08s;
  outline: none;
}
.answer:active { transform: translateY(0.08em); box-shadow: 0 0.04em 0 rgba(0, 0, 0, 0.25); }
.answer:focus-visible { box-shadow: 0 0 0 4px var(--question-bg); }

.answer.correct {
  background: var(--answer-fg);
  color: var(--answer-bg);
}
.answer.wrong {
  text-decoration: line-through;
  animation: shake 0.35s;
}
.answer.dim { opacity: 0.45; }
.answers.done .answer { cursor: default; }

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-6%); }
  40% { transform: translateX(6%); }
  60% { transform: translateX(-4%); }
  80% { transform: translateX(4%); }
}

