:root {
  --blue: #1e88e5;
  --orange: #ff8a00;
  --red: #e53935;
  --green: #2e7d32;
  --dark: #16213e;
  --light: #f5f8ff;
  --card: #ffffff;
  --border: #dbe5f5;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  background: linear-gradient(180deg, #eaf4ff 0%, #ffffff 100%);
  color: var(--dark);
}

.app {
  width: min(920px, 100%);
  margin: 0 auto;
  padding: 18px;
}

.hero {
  background: linear-gradient(135deg, var(--blue), #42a5f5);
  color: white;
  border-radius: 24px;
  padding: 28px 20px;
  text-align: center;
  box-shadow: 0 10px 30px rgba(30, 136, 229, .25);
}

.logo {
  font-size: 2rem;
  font-weight: 800;
  letter-spacing: .5px;
}

.logo span { color: var(--orange); }
.tagline { margin: 4px 0 12px; opacity: .95; font-weight: 700; }
h1 { margin: 8px 0; font-size: 2rem; }
.intro { margin: 0 auto; max-width: 560px; line-height: 1.5; }

.card, .results {
  margin-top: 18px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 20px;
  box-shadow: 0 6px 22px rgba(22, 33, 62, .08);
}

.name-label {
  display: block;
  font-weight: 800;
  margin-bottom: 8px;
}

input[type="text"] {
  width: 100%;
  padding: 14px;
  border: 2px solid var(--border);
  border-radius: 14px;
  font-size: 1rem;
  margin-bottom: 18px;
}

.progress-wrap { margin-bottom: 18px; }
.progress-info { font-weight: 700; margin-bottom: 6px; }
.progress-bar { height: 12px; background: #e3ecf9; border-radius: 999px; overflow: hidden; }
#progressFill { height: 100%; width: 0%; background: var(--orange); transition: width .25s ease; }

.question {
  padding: 18px;
  border: 1px solid var(--border);
  border-radius: 18px;
  margin-bottom: 14px;
  background: #fbfdff;
}

.question h3 {
  margin: 0 0 12px;
  font-size: 1.05rem;
}

.option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px;
  margin: 8px 0;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: white;
  cursor: pointer;
}

.option input { transform: scale(1.2); }
.option:hover { border-color: var(--blue); }

.submit-btn, .retry-btn, .print-btn {
  width: 100%;
  padding: 15px 18px;
  border: none;
  border-radius: 16px;
  font-size: 1.05rem;
  font-weight: 800;
  cursor: pointer;
  margin-top: 10px;
}

.submit-btn { background: var(--orange); color: white; }
.retry-btn { background: var(--blue); color: white; }
.print-btn { background: var(--dark); color: white; }

.hidden { display: none; }
.score-box {
  text-align: center;
  border-radius: 20px;
  padding: 22px;
  background: var(--light);
  margin-bottom: 18px;
}
.score {
  font-size: 3rem;
  font-weight: 900;
  margin: 8px 0;
}
.pass { color: var(--green); }
.needs-practice { color: var(--red); }
.review-item {
  padding: 12px;
  border-bottom: 1px solid var(--border);
}
.correct { color: var(--green); font-weight: 800; }
.incorrect { color: var(--red); font-weight: 800; }

@media (max-width: 520px) {
  .app { padding: 12px; }
  h1 { font-size: 1.55rem; }
  .hero, .card, .results { border-radius: 18px; padding: 16px; }
  .question { padding: 14px; }
}
