:root {
  color-scheme: light;
  font-family: ui-rounded, "Nunito", "PingFang SC", system-ui, sans-serif;
  --vocab-canvas: var(--vs-canvas, #e0f2fe);
  --vocab-surface: var(--vs-surface, #ffffff);
  --vocab-surface-alt: var(--vs-surface-alt, #eef8ff);
  --vocab-text: var(--vs-text, #14354a);
  --vocab-muted: var(--vs-text-muted, #58778b);
  --vocab-primary: var(--vs-primary, #0284c7);
  --vocab-on-primary: var(--vs-on-primary, #ffffff);
  --vocab-success: var(--vs-success, #15803d);
  --vocab-danger: var(--vs-danger, #b91c1c);
  --vocab-outline: var(--vs-outline, #9fb6c4);
  --vocab-radius: var(--vs-radius, 14px);
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { min-height: 100%; margin: 0; }
body { min-width: 320px; color: var(--vocab-text); background: var(--vocab-canvas); }
button { min-height: 48px; font: inherit; touch-action: manipulation; cursor: pointer; }
button:focus-visible { outline: 4px solid var(--vs-focus, #facc15); outline-offset: 3px; }
.loading { text-align: center; margin: 40vh auto 0; }
.app {
  min-height: 100vh; min-height: 100dvh;
  padding: calc(12px + var(--redding-safe-area-top, 0px)) calc(12px + var(--redding-safe-area-right, 0px)) calc(22px + var(--redding-safe-area-bottom, 0px)) calc(12px + var(--redding-safe-area-left, 0px));
}
.shell { width: min(100%, 720px); margin: 0 auto; }
.topbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.topbar > div { min-width: 0; }
.eyebrow { margin: 0 0 2px; color: var(--vocab-muted); font-size: .8rem; }
h1 { margin: 0; font-size: clamp(1.4rem, 6vw, 2rem); line-height: 1.15; overflow-wrap: anywhere; }
.sound-button { flex: 0 0 auto; border: 2px solid var(--vocab-outline); border-radius: 999px; background: var(--vocab-surface); color: var(--vocab-text); padding: 0 14px; }
.status-card {
  display: grid; grid-template-columns: repeat(3, auto); gap: 6px 14px; justify-content: space-between;
  margin: 14px 0 12px; border-radius: var(--vocab-radius); background: var(--vocab-surface);
  padding: 11px 14px; font-size: .85rem; color: var(--vocab-muted);
}
.status-card strong { color: var(--vocab-text); }
.status-card progress { grid-column: 1 / -1; width: 100%; height: 10px; border: 0; accent-color: var(--vocab-primary); }
.notice { margin: 0 0 12px; border: 2px solid color-mix(in srgb, var(--vocab-danger) 45%, transparent); border-radius: var(--vocab-radius); background: var(--vocab-surface); padding: 10px 12px; }
.notice p { margin: 0 0 8px; font-size: .88rem; line-height: 1.5; }
.ghost-button { width: 100%; border: 2px solid var(--vocab-outline); border-radius: var(--vocab-radius); background: var(--vocab-surface); color: var(--vocab-text); padding: 10px 16px; font-weight: 800; }
.ghost-button:hover { border-color: var(--vocab-primary); }
.study-card, .quiz-card {
  border: 2px solid color-mix(in srgb, var(--vocab-outline) 45%, transparent); border-radius: calc(var(--vocab-radius) + 8px);
  background: var(--vocab-surface); padding: 18px; box-shadow: 0 16px 36px rgba(8, 76, 111, .12);
}
.step-badge { display: inline-block; margin: 0 0 10px; border-radius: 999px; background: var(--vocab-surface-alt); color: var(--vocab-text); padding: 5px 11px; font-size: .78rem; font-weight: 800; }
.word { margin: 0; font-size: clamp(2.1rem, 9vw, 3rem); font-weight: 800; letter-spacing: .02em; overflow-wrap: anywhere; }
.phonetic { margin: 4px 0 12px; color: var(--vocab-muted); font-size: 1rem; }
.cue-button { width: 100%; border: 2px solid color-mix(in srgb, var(--vocab-primary) 45%, transparent); border-radius: var(--vocab-radius); background: var(--vocab-surface-alt); color: var(--vocab-text); padding: 10px 14px; font-weight: 800; }
.cue-button:hover { border-color: var(--vocab-primary); }
.speech-status { margin: 8px 0 0; border-radius: var(--vocab-radius); background: var(--vocab-surface-alt); color: var(--vocab-text); padding: 8px 10px; font-size: .85rem; }
.meaning { margin: 14px 0 6px; font-size: clamp(1.15rem, 5vw, 1.5rem); font-weight: 800; }
.example { margin: 6px 0 2px; font-size: 1rem; line-height: 1.5; }
.example-cn { margin: 0 0 4px; color: var(--vocab-muted); font-size: .9rem; line-height: 1.5; }
.hint-area { margin: 12px 0; }
.hint-button { border: 2px solid color-mix(in srgb, var(--vocab-outline) 60%, transparent); border-radius: var(--vocab-radius); background: var(--vocab-surface-alt); color: var(--vocab-text); padding: 9px 13px; font-weight: 800; }
.hint-copy { margin: 8px 0 0; border-radius: var(--vocab-radius); background: var(--vocab-surface-alt); padding: 9px 11px; font-size: .88rem; line-height: 1.55; }
.primary-button { border: 0; border-radius: var(--vocab-radius); background: var(--vocab-primary); color: var(--vocab-on-primary); padding: 12px 22px; font-weight: 800; }
.primary-button.wide { width: 100%; margin-top: 6px; }
.quiz-word { margin: 0 0 12px; font-size: clamp(1.6rem, 7vw, 2.2rem); overflow-wrap: anywhere; }
.choices { display: grid; gap: 9px; margin-top: 12px; }
.choice-button { width: 100%; border: 2px solid var(--vocab-outline); border-radius: var(--vocab-radius); background: var(--vocab-surface-alt); color: var(--vocab-text); padding: 11px 13px; text-align: left; font-weight: 700; overflow-wrap: anywhere; }
.choice-button:hover:not(:disabled) { border-color: var(--vocab-primary); }
.choice-button.is-correct { border-color: var(--vocab-success); background: color-mix(in srgb, var(--vocab-success) 22%, var(--vocab-surface)); }
.choice-button.is-wrong { border-color: var(--vocab-danger); background: color-mix(in srgb, var(--vocab-danger) 20%, var(--vocab-surface)); }
.choice-button:disabled { opacity: 1; cursor: default; }
.feedback { margin-top: 13px; border-radius: var(--vocab-radius); background: var(--vocab-surface-alt); padding: 11px 13px; line-height: 1.5; }
.feedback p { margin: 4px 0 0; color: var(--vocab-muted); font-size: .88rem; }
.next-button { width: 100%; margin-top: 12px; border: 0; border-radius: var(--vocab-radius); background: var(--vocab-primary); color: var(--vocab-on-primary); padding: 11px 16px; font-weight: 800; }
.screen {
  position: fixed; z-index: 10; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px; overflow-y: auto; overscroll-behavior: contain; text-align: center;
  padding: calc(18px + var(--redding-safe-area-top, 0px)) calc(18px + var(--redding-safe-area-right, 0px)) calc(18px + var(--redding-safe-area-bottom, 0px)) calc(18px + var(--redding-safe-area-left, 0px));
  background: color-mix(in srgb, var(--vocab-canvas) 94%, transparent); backdrop-filter: blur(10px); color: var(--vocab-text);
}
.screen > * { width: min(100%, 460px); flex: 0 0 auto; }
.screen-icon { font-size: 3.4rem; line-height: 1; }
.screen h2 { margin: 12px 0 6px; font-size: clamp(1.5rem, 6.5vw, 2.1rem); overflow-wrap: anywhere; }
.screen p { margin: 4px 0; line-height: 1.6; }
.screen .tip, .screen .stats { color: var(--vocab-muted); font-size: .9rem; }
.screen .primary-button { margin-top: 16px; }
.screen .ghost-button { margin-top: 10px; }
.review-box { margin-top: 14px; border-radius: var(--vocab-radius); background: var(--vocab-surface); border: 2px solid color-mix(in srgb, var(--vocab-outline) 45%, transparent); padding: 12px 14px; text-align: left; }
.review-title { margin: 0 0 6px !important; font-weight: 800; font-size: .92rem; }
.review-list { margin: 0; padding-left: 18px; max-height: 30vh; overflow-y: auto; font-size: .9rem; line-height: 1.7; }
@media (min-width: 620px) { .choices { grid-template-columns: 1fr 1fr; } }
@media (max-height: 460px) {
  .screen { justify-content: flex-start; padding-top: calc(14px + var(--redding-safe-area-top, 0px)); }
  .screen-icon { font-size: 2.2rem; }
  .screen h2 { margin-top: 6px; }
  .review-list { max-height: 26vh; }
  .word { font-size: clamp(1.7rem, 7vh, 2.4rem); }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: .01ms !important; } }
