/* ---------- Tokens ---------- */
:root {
  --text-xs: clamp(0.875rem, 0.82rem + 0.25vw, 1rem);
  --text-sm: clamp(1rem, 0.92rem + 0.35vw, 1.125rem);
  --text-base: clamp(1.125rem, 1.05rem + 0.3vw, 1.3rem);
  --text-lg: clamp(1.3rem, 1.1rem + 0.8vw, 1.7rem);
  --text-xl: clamp(1.5rem, 1.2rem + 1.25vw, 2.25rem);
  --text-2xl: clamp(2rem, 1.2rem + 2.5vw, 3.5rem);

  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem;
  --space-12: 3rem; --space-16: 4rem; --space-20: 5rem;

  --radius-sm: 0.375rem; --radius-md: 0.625rem; --radius-lg: 1rem; --radius-full: 9999px;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --t: 220ms var(--ease);

  --font-display: 'Barlow Condensed', 'Arial Narrow', sans-serif;
  --font-body: 'Barlow Condensed', 'Arial Narrow', sans-serif;

  /* Brand constants */
  --navy: #16365D;
  --coral: #F4735E;
  --teal: #2FB9A8;
  --cream: #FFFFFF;
}

:root, [data-theme='light'] {
  --color-bg: #FFFFFF;
  --color-surface: #FFFFFF;
  --color-surface-2: #F2F5F8;
  --color-border: rgba(22, 54, 93, 0.14);
  --color-divider: rgba(22, 54, 93, 0.08);
  --color-text: #16365D;
  --color-text-muted: #4E6382;
  --color-text-faint: #8797AE;
  --color-text-inverse: #FFFFFF;
  --color-primary: #16365D;
  --color-primary-hover: #0F2745;
  --color-accent: #DE4F39;       /* coral, darkened for AA on white */
  --color-accent-soft: rgba(244, 115, 94, 0.14);
  --color-teal: #1E8F83;         /* teal, darkened for AA on white */
  --color-teal-soft: rgba(47, 185, 168, 0.16);
  --shadow-sm: 0 1px 2px rgba(22, 54, 93, 0.08);
  --shadow-md: 0 6px 20px rgba(22, 54, 93, 0.10);
  --shadow-lg: 0 18px 44px rgba(22, 54, 93, 0.16);
}

[data-theme='dark'] {
  --color-bg: #0F2340;
  --color-surface: #16365D;
  --color-surface-2: #1D4271;
  --color-border: rgba(255, 255, 255, 0.18);
  --color-divider: rgba(255, 255, 255, 0.10);
  --color-text: #FFFFFF;
  --color-text-muted: #CBD4E1;
  --color-text-faint: #8DA0BC;
  --color-text-inverse: #16365D;
  --color-primary: #FFFFFF;
  --color-primary-hover: #E8EEF5;
  --color-accent: #F4735E;
  --color-accent-soft: rgba(244, 115, 94, 0.20);
  --color-teal: #2FB9A8;
  --color-teal-soft: rgba(47, 185, 168, 0.22);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 6px 20px rgba(0, 0, 0, 0.35);
  --shadow-lg: 0 18px 44px rgba(0, 0, 0, 0.45);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html {
  -webkit-text-size-adjust: none; text-size-adjust: none;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
body {
  min-height: 100dvh;
  display: flex; flex-direction: column;
  font-family: var(--font-body); font-weight: 300; font-size: var(--text-base); line-height: 1.5; letter-spacing: 0.02em; word-spacing: 0.06em;
  color: var(--color-text); background: var(--color-bg);
  transition: background-color var(--t), color var(--t);
}
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--color-teal); outline-offset: 3px; border-radius: var(--radius-sm); }
h1:focus, h2:focus { outline: none; }
.skip { position: absolute; left: -999px; top: var(--space-2); background: var(--color-surface); padding: var(--space-2) var(--space-4); }
.skip:focus { left: var(--space-2); z-index: 10; }
.nowrap { white-space: nowrap; }

/* ---------- Header ---------- */
.top {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-4) clamp(var(--space-4), 4vw, var(--space-10));
  max-width: 1100px; width: 100%; margin: 0 auto;
}
.brand { display: inline-flex; align-items: center; gap: var(--space-3); text-decoration: none; }
.brand__name { font-family: var(--font-display); font-weight: 700; font-size: var(--text-lg); letter-spacing: 0.01em; text-transform: uppercase; }
.top__right { display: flex; align-items: center; gap: var(--space-4); }
.top__by { font-size: var(--text-sm); color: var(--color-text-muted); font-weight: 400; }
.icon-btn {
  width: 44px; height: 44px; display: grid; place-items: center;
  border-radius: var(--radius-full); border: 1px solid var(--color-border); color: var(--color-text);
  transition: background-color var(--t);
}
.icon-btn:hover { background: var(--color-surface-2); }

/* ---------- Progress ---------- */
.progress { height: 4px; background: var(--color-divider); }
.progress__bar { height: 100%; width: 0%; background: var(--color-teal); transition: width 320ms var(--ease); }

/* ---------- Stage ---------- */
.stage {
  flex: 1; width: 100%; max-width: 680px; margin: 0 auto;
  padding: clamp(var(--space-8), 5vw, var(--space-16)) clamp(var(--space-4), 4vw, var(--space-8)) var(--space-12);
}
.screen { animation: rise 320ms var(--ease) both; }
@keyframes rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .screen { animation: none; }
  *, *::before, *::after { transition-duration: 0ms !important; }
}

.eyebrow {
  font-family: var(--font-display); font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em;
  font-size: var(--text-sm); color: var(--color-accent);
}
h1, h2 { font-family: var(--font-display); font-weight: 700; line-height: 1.05; letter-spacing: -0.005em; }
h1 { font-size: var(--text-2xl); margin-top: var(--space-2); }
h2 { font-size: var(--text-xl); margin-top: var(--space-2); }
.lede { font-size: var(--text-lg); color: var(--color-text-muted); margin-top: var(--space-4); max-width: 40ch; line-height: 1.35; }
.small { font-size: var(--text-sm); color: var(--color-text-muted); }
.hint { font-size: var(--text-sm); color: var(--color-text-faint); margin-top: var(--space-2); }

/* ---------- Intro ---------- */
.intro__cards { display: flex; gap: var(--space-3); margin: var(--space-8) 0 var(--space-6); max-width: 420px; }
.intro__card {
  flex: 1; aspect-ratio: 3 / 4; border-radius: var(--radius-md);
  display: flex; align-items: flex-end; padding: var(--space-3);
  font-family: var(--font-display); font-weight: 700; font-size: var(--text-lg); line-height: 1; color: #fff;
  box-shadow: var(--shadow-md);
  transform: rotate(var(--r, 0deg)) translateY(var(--y, 0));
}
.intro__card:nth-child(1) { background: var(--navy); --r: -4deg; --y: 6px; }
.intro__card:nth-child(2) { background: var(--teal); --r: 0deg; --y: -4px; }
.intro__card:nth-child(3) { background: var(--coral); --r: 4deg; --y: 6px; }
.intro__meta { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-6); margin-top: var(--space-6); color: var(--color-text-muted); font-size: var(--text-sm); }
.intro__meta span::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--color-teal); margin-right: var(--space-2); vertical-align: middle; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: 52px; padding: 0 var(--space-6); border-radius: var(--radius-full);
  font-family: var(--font-display); font-weight: 600; font-size: var(--text-lg); letter-spacing: 0.02em; text-transform: uppercase;
  text-decoration: none; transition: transform var(--t), background-color var(--t), color var(--t), box-shadow var(--t);
}
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--color-accent); color: #fff; box-shadow: var(--shadow-sm); }
.btn--primary:hover { background: #D14A35; }
[data-theme='dark'] .btn--primary:hover { background: #FF8A76; }
.btn--ghost { border: 1.5px solid var(--color-border); color: var(--color-text); }
.btn--ghost:hover { background: var(--color-surface-2); }
.btn--text { min-height: 44px; padding: 0 var(--space-3); font-family: var(--font-body); font-weight: 400; font-size: var(--text-sm); text-transform: none; letter-spacing: 0.02em; color: var(--color-text-muted); }
.btn--text:hover { color: var(--color-text); }
.actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-8); align-items: center; }

/* ---------- Question ---------- */
.q__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-4); }
.q__count { font-family: var(--font-display); font-weight: 600; color: var(--color-text-faint); font-size: var(--text-sm); letter-spacing: 0.08em; text-transform: uppercase; }
.options { list-style: none; display: grid; gap: var(--space-3); margin-top: var(--space-8); }
.opt {
  width: 100%; min-height: 60px; text-align: left;
  display: flex; align-items: center; gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  background: var(--color-surface); border: 1.5px solid var(--color-border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  transition: border-color var(--t), transform var(--t), background-color var(--t), box-shadow var(--t);
}
.opt:hover { border-color: var(--color-teal); transform: translateY(-1px); box-shadow: var(--shadow-md); }
.opt:active { transform: translateY(0); }
.opt[aria-checked='true'], .opt[aria-pressed='true'] { border-color: var(--color-teal); background: var(--color-teal-soft); }
.opt__key {
  flex: none; width: 32px; height: 32px; border-radius: var(--radius-sm); display: grid; place-items: center;
  font-family: var(--font-display); font-weight: 700; font-size: var(--text-base);
  background: var(--color-surface-2); color: var(--color-text-muted);
}
.opt[aria-checked='true'] .opt__key, .opt[aria-pressed='true'] .opt__key { background: var(--color-teal); color: #fff; }
.opt__label { font-weight: 400; line-height: 1.3; }
.q__foot { display: flex; justify-content: space-between; align-items: center; margin-top: var(--space-8); gap: var(--space-3); flex-wrap: wrap; }

/* ---------- Results ---------- */
.results__intro { margin-bottom: var(--space-8); }
.cards { display: grid; gap: var(--space-5); }
.card {
  position: relative; background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: var(--space-6); box-shadow: var(--shadow-md);
  border-top: 6px solid var(--card-color, var(--navy));
}
.card:nth-child(1) { --card-color: var(--coral); }
.card:nth-child(2) { --card-color: var(--teal); }
.card:nth-child(3) { --card-color: var(--navy); }
[data-theme='dark'] .card:nth-child(3) { --card-color: #8DA0BC; }
.card__top { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-3); }
.card__num { font-family: var(--font-display); font-weight: 700; font-size: var(--text-xl); line-height: 1; color: var(--card-color, var(--navy)); }
.card__tag {
  font-family: var(--font-display); font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--text-xs);
  padding: var(--space-1) var(--space-3); border-radius: var(--radius-full);
  background: var(--color-accent-soft); color: var(--color-accent);
}
.card__tag--uncommon { background: var(--color-teal-soft); color: var(--color-teal); }
.card h3 { font-family: var(--font-display); font-weight: 700; font-size: var(--text-xl); line-height: 1.05; margin-top: var(--space-2); }
.card__when { margin-top: var(--space-4); color: var(--color-text-muted); font-style: italic; }
.card__how { margin-top: var(--space-4); }
.card__combats { margin-top: var(--space-5); display: flex; flex-wrap: wrap; gap: var(--space-2); }
.pill { font-size: var(--text-xs); font-weight: 400; padding: var(--space-1) var(--space-3); border-radius: var(--radius-full); background: var(--color-surface-2); color: var(--color-text-muted); }
.card__part { margin-top: var(--space-4); font-size: var(--text-xs); color: var(--color-text-faint); text-transform: uppercase; letter-spacing: 0.06em; font-family: var(--font-display); font-weight: 600; }

.results__tools { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-8); align-items: center; }
.toast { font-size: var(--text-sm); color: var(--color-teal); font-weight: 600; min-height: 1.5em; }

.cta {
  margin-top: var(--space-12); padding: var(--space-8); border-radius: var(--radius-lg);
  background: var(--navy); color: var(--cream); box-shadow: var(--shadow-lg);
}
[data-theme='dark'] .cta { background: var(--color-surface-2); }
.cta .eyebrow { color: var(--teal); }
.cta h2 { color: inherit; }
.cta p { color: rgba(251, 246, 238, 0.82); margin-top: var(--space-3); max-width: 46ch; }
.cta .actions { margin-top: var(--space-6); }
.cta .btn--ghost { border-color: rgba(251, 246, 238, 0.4); color: var(--cream); }
.cta .btn--ghost:hover { background: rgba(251, 246, 238, 0.1); }

.rule { margin-top: var(--space-10); padding-top: var(--space-6); border-top: 1px solid var(--color-divider); }

/* ---------- Footer ---------- */
.foot { text-align: center; padding: var(--space-6) var(--space-4) var(--space-8); font-size: var(--text-xs); color: var(--color-text-faint); }

@media (max-width: 480px) {
  .top__by { display: none; }
  .btn { width: 100%; }
  .q__foot .btn--text { width: auto; }
}
