/* TheUniDeals waitlist page. Built on tokens.css (--tud-*). Light + dark via semantic tokens. */

* { box-sizing: border-box; }
:root { color-scheme: light; }
[data-theme="dark"] { color-scheme: dark; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--tud-font-primary);
  font-weight: 500;
  font-size: 15px;
  line-height: 22px;
  color: var(--tud-color-text-primary);
  background: var(--tud-color-bg-canvas);
}
img { max-width: 100%; height: auto; }
a { color: var(--tud-color-accent-text-on-light); }
h1, h2, h3 { margin: 0; letter-spacing: -0.02em; }
p { margin: 0; }
.hidden { display: none !important; }

.overline {
  font-family: var(--tud-font-secondary);
  font-size: 12px; line-height: 16px; font-weight: 700;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--tud-color-accent-text-on-light);
  margin-bottom: var(--tud-space-5);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .overline, :root:not([data-theme="light"]) a:not(.btn) { color: var(--tud-color-accent-base); }
}
[data-theme="dark"] .overline, [data-theme="dark"] a:not(.btn) { color: var(--tud-color-accent-base); }

/* Buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 52px; padding: 0 var(--tud-space-6);
  border-radius: var(--tud-radius-md); border: none;
  font-family: var(--tud-font-primary); font-weight: 700; font-size: 16px;
  cursor: pointer; text-decoration: none;
  transition: background var(--tud-duration-instant) var(--tud-ease-standard),
              transform var(--tud-duration-instant) var(--tud-ease-standard);
}
.btn-primary { background: var(--tud-color-accent-base); color: var(--tud-color-text-on-accent); }
.btn-primary:active { background: var(--tud-color-accent-pressed); transform: scale(0.98); }
.btn-primary:hover { background: var(--tud-color-ramp-accent-550); }
.btn-secondary {
  background: transparent; color: var(--tud-color-text-primary);
  border: var(--tud-border-default) solid var(--tud-color-text-primary);
}
.btn-secondary:active, .btn-secondary:hover { background: var(--tud-color-bg-sunken); }
.btn-sm { height: 40px; padding: 0 var(--tud-space-4); font-size: 14px; }
.btn:focus-visible { outline: none; box-shadow: var(--tud-focus-ring); }

/* Theme toggle */
.theme-toggle {
  width: 40px; height: 40px; padding: 0;
  border-radius: var(--tud-radius-pill);
  border: var(--tud-border-default) solid var(--tud-color-border-strong);
  background: transparent; color: var(--tud-color-text-primary);
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer;
}
.theme-toggle:hover { background: var(--tud-color-bg-sunken); }
.theme-toggle:focus-visible { outline: none; box-shadow: var(--tud-focus-ring); }
.icon-sun { display: none; }
[data-theme="dark"] .icon-sun { display: block; }
[data-theme="dark"] .icon-moon { display: none; }

/* Nav */
.nav {
  max-width: 1080px; margin: 0 auto; padding: var(--tud-space-5) var(--tud-space-6);
  display: flex; align-items: center; justify-content: space-between;
}
.nav-logo { height: 30px; width: auto; display: block; }
.nav-right { display: flex; align-items: center; gap: var(--tud-space-5); }
.nav-link { font-weight: 700; text-decoration: none; font-size: 15px; }

/* Hero */
.hero {
  max-width: 1080px; margin: 0 auto;
  padding: var(--tud-space-10) var(--tud-space-6) var(--tud-space-16);
  display: grid; grid-template-columns: 1.15fr 0.85fr; gap: var(--tud-space-10);
  align-items: center;
}
.hero h1 { font-size: clamp(34px, 5.4vw, 52px); line-height: 1.06; font-weight: 800; }
.hero h1 em { font-style: normal; color: var(--tud-color-accent-text-on-light); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .hero h1 em { color: var(--tud-color-accent-base); }
}
[data-theme="dark"] .hero h1 em { color: var(--tud-color-accent-base); }
.lede { font-size: 17px; line-height: 26px; color: var(--tud-color-text-secondary); max-width: 46ch; margin: var(--tud-space-5) 0 var(--tud-space-8); }
.hero-art img { width: 100%; max-width: 440px; display: block; margin: 0 auto; }

/* Form */
.form-row { display: flex; gap: var(--tud-space-2); margin-bottom: var(--tud-space-2); flex-wrap: wrap; }
input, select {
  height: 52px; padding: 0 var(--tud-space-4);
  border-radius: var(--tud-radius-md);
  border: var(--tud-border-default) solid var(--tud-color-border-strong);
  background: var(--tud-color-bg-surface); color: var(--tud-color-text-primary);
  font-family: var(--tud-font-primary); font-size: 16px; font-weight: 500;
}
input::placeholder { color: var(--tud-color-text-placeholder); }
input:focus-visible, select:focus-visible {
  outline: none; border-color: var(--tud-color-border-focus); box-shadow: var(--tud-focus-ring);
}
#email { flex: 1.4; min-width: 220px; }
.select-wrap { position: relative; flex: 1; min-width: 170px; display: flex; }
#university {
  appearance: none; -webkit-appearance: none;
  width: 100%; padding-right: 44px;
  cursor: pointer;
}
#university:required:invalid { color: var(--tud-color-text-placeholder); }
#university option { color: var(--tud-color-text-primary); }
.select-chevron {
  position: absolute; right: 14px; top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  color: var(--tud-color-text-muted);
}
.fine { font-size: 13px; line-height: 18px; color: var(--tud-color-text-muted); margin-top: var(--tud-space-3); }
.form-msg { font-size: 14px; font-weight: 700; margin-top: var(--tud-space-2); color: var(--tud-color-status-error-text); }

/* Success state */
.success h2 { font-size: 28px; line-height: 34px; margin-bottom: var(--tud-space-2); }
.success p { color: var(--tud-color-text-secondary); margin-bottom: var(--tud-space-5); }
.success-check {
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--tud-color-bg-inverse); color: var(--tud-color-text-inverse);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: var(--tud-space-4);
}

/* Steps */
.steps, .cats, .faq { max-width: 1080px; margin: 0 auto; padding: 0 var(--tud-space-6) var(--tud-space-16); }
.steps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--tud-space-6); }
.step {
  background: var(--tud-color-bg-surface);
  border: var(--tud-border-default) solid var(--tud-color-border-default);
  border-radius: var(--tud-radius-xl); padding: var(--tud-space-8);
  text-align: center;
}
.step img { height: 140px; width: auto; max-width: 80%; object-fit: contain; margin: 0 auto var(--tud-space-4); display: block; }
.step h3 { font-size: 18px; line-height: 24px; margin-bottom: var(--tud-space-2); }
.step p { color: var(--tud-color-text-secondary); }

/* Categories */
.cats-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--tud-space-4); }
.cat {
  background: var(--tud-color-bg-sunken);
  border-radius: var(--tud-radius-lg); padding: var(--tud-space-5);
  display: flex; flex-direction: column; align-items: center; gap: var(--tud-space-3);
}
.cat img { height: 88px; width: auto; max-width: 92%; object-fit: contain; }
.cat span { font-weight: 700; font-size: 14px; }

/* Merchants */
.merchants { max-width: 1080px; margin: 0 auto; padding: 0 var(--tud-space-6) var(--tud-space-16); }
.merchants-card {
  background: var(--tud-color-bg-inverse); color: var(--tud-color-text-inverse);
  border-radius: var(--tud-radius-xl); padding: var(--tud-space-10);
  display: flex; align-items: center; justify-content: space-between; gap: var(--tud-space-8);
  flex-wrap: wrap;
}
.merchants-card .overline { color: var(--tud-color-accent-base); }
.merchants-card h2 { font-size: 28px; line-height: 34px; margin-bottom: var(--tud-space-3); }
.merchants-card p { max-width: 52ch; opacity: 0.85; }

/* FAQ */
.faq details {
  border-bottom: var(--tud-border-default) solid var(--tud-color-border-default);
  padding: var(--tud-space-4) 0;
}
.faq summary { font-weight: 700; font-size: 16px; cursor: pointer; list-style-position: outside; }
.faq details p { padding: var(--tud-space-3) 0 var(--tud-space-1); color: var(--tud-color-text-secondary); max-width: 65ch; }

/* Footer */
.footer {
  border-top: var(--tud-border-default) solid var(--tud-color-border-default);
  padding: var(--tud-space-12) var(--tud-space-6);
  display: flex; flex-direction: column; align-items: center; gap: var(--tud-space-3);
  text-align: center;
}
.footer-logo { height: 72px; width: auto; }
.footer p { color: var(--tud-color-text-secondary); font-weight: 700; }
.footer .fine { font-weight: 500; }

/* Entrance */
@media (prefers-reduced-motion: no-preference) {
  .hero-copy, .hero-art { animation: rise 480ms var(--tud-ease-decelerate) both; }
  .hero-art { animation-delay: 90ms; }
  @keyframes rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
}

/* Responsive */
@media (max-width: 860px) {
  .hero { grid-template-columns: 1fr; padding-top: var(--tud-space-6); }
  .hero-art { order: -1; }
  .hero-art img { max-width: 300px; }
  .steps-grid { grid-template-columns: 1fr; }
  .cats-grid { grid-template-columns: repeat(2, 1fr); }
  .cat:last-child { grid-column: span 2; }
  .nav-link { display: none; }
}
