:root {
  /* Typografie Fonts */
  --font-display: "Krona One", "Arial Black", system-ui, sans-serif;
  --font-body: "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Typografie Tracking */
  --tracking-display: -0.08em;
  --tracking-body: -0.02em;
  --tracking-label: 0.04em;

  /* Typografie Gewichte */
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;

  /* Typografie Schriftgrößen */
  --text-display-xxl: clamp(2.75rem, 6.4vw, 6rem);
  --text-heading-xl: clamp(2rem, 4vw, 4rem);
  --text-heading-l: clamp(1.625rem, 2.6vw, 2.5rem);
  --text-heading-m: clamp(1.375rem, 1.8vw, 1.75rem);
  --text-heading-s: 1.25rem;
  --text-body-large: 1.125rem;
  --text-body: 1rem;
  --text-body-small: 0.875rem;
  --text-label: 0.75rem;

  /* Typografie Zeilenhöhen */
  --leading-display: 1.05;
  --leading-heading-xl: 1.1;
  --leading-heading: 1.2;
  --leading-heading-m: 1.3;
  --leading-heading-s: 1.4;
  --leading-body-large: 1.5;
  --leading-body: 1.55;
  --leading-tight: 1.2;

  /* Box&Gift Farbpalette */
  --bng-east-side: #B897D4;
  --bng-east-side-hover: #9C80B4;
  --bng-east-side-tint: #F4F0F9;
  --bng-plum-black: #171717;
  --bng-midnight-plum: #423C3F;
  --bng-sage: #DFDEFF;
  --bng-sage-tint: #F1F0FF;
  --bng-butter: #E6FFA9;
  --bng-butter-tint: #F5FFE0;
  --bng-soft-grey: #E4E3DF;
  --bng-canvas: #F9F8F5;
  --bng-white: #FFFFFF;
  --bng-clay: #C2543F;

  /* Semantische Flächen */
  --surface-canvas: var(--bng-canvas);
  --surface-card: var(--bng-white);
  --surface-muted: var(--bng-soft-grey);
  --surface-dark: var(--bng-midnight-plum);
  --surface-dark-deep: var(--bng-plum-black);
  --surface-accent: var(--bng-east-side);
  --surface-accent-soft: var(--bng-east-side-tint);

  /* Semantischer Text */
  --text-primary: var(--bng-plum-black);
  --text-secondary: #5C556A;
  --text-tertiary: #8A8496;
  --text-inverse: var(--bng-white);
  --text-link: var(--bng-plum-black);
  --text-link-hover: var(--bng-midnight-plum);

  /* Linien & Rahmen */
  --border-subtle: #CFCBC5;
  --border-strong: rgba(14, 6, 26, 0.16);
  --border-focus: var(--bng-plum-black);
  --border-width-hairline: 1px;
  --border-width-control: 1.5px;

  /* Radien */
  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 14px;
  --radius-xl: 20px;
  --radius-2xl: 24px;
  --radius-pill: 9999px;

  /* Schatten & Elevation */
  --shadow-none: none;
  --shadow-card: 0 4px 20px -2px rgba(14, 6, 26, 0.05);
  --shadow-card-hover: 0 12px 30px -4px rgba(14, 6, 26, 0.08);
  --shadow-raised: 0 16px 44px -8px rgba(14, 6, 26, 0.12);

  /* Status */
  --status-error: var(--bng-clay);
  --status-error-surface: #FBEDEA;

  /* Aktionen */
  --action-primary-bg: var(--bng-east-side);
  --action-primary-bg-hover: var(--bng-east-side-hover);
  --action-primary-fg: var(--bng-plum-black);

  /* Motion */
  --ease-spring: cubic-bezier(0.16, 1, 0.3, 1);
  --duration-fast: 150ms;
}

*, *::before, *::after {
  box-sizing: border-box;
}

html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  font-family: var(--font-body);
  letter-spacing: var(--tracking-body);
  background-color: var(--surface-canvas);
  color: var(--text-primary);
  -webkit-font-smoothing: antialiased;
}

button, input, select, textarea {
  font: inherit;
  letter-spacing: inherit;
  box-sizing: border-box;
}

/* ====================================================
   Layout-Grundgerüst (Mobile-first, 1280px Desktop)
   ==================================================== */
.site-wrapper {
  min-height: 100vh;
  width: 100%;
  background-color: var(--surface-canvas);
  font-family: var(--font-body);
  letter-spacing: var(--tracking-body);
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}

.site-header {
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  padding: 48px 16px 0;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
}

@media (min-width: 900px) {
  .site-header {
    max-width: 1280px;
    padding: 40px 64px 0;
    justify-content: flex-start;
  }
}

.preview-banner-container {
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  padding: 16px 16px 0;
  box-sizing: border-box;
  display: flex;
  justify-content: center;
}

@media (min-width: 900px) {
  .preview-banner-container {
    max-width: 1280px;
    padding: 24px 64px 0;
  }
}

.hero-container {
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  padding: 32px 16px 40px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 32px;
  text-align: center;
}

@media (min-width: 900px) {
  .hero-container {
    max-width: 1280px;
    padding: 64px 64px 96px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 80px;
    align-items: center;
    text-align: left;
  }
}

/* Consumer Hero Grid Positions */
@media (min-width: 900px) {
  .consumer-hero-header {
    grid-column: 1;
    grid-row: 1;
  }
  .consumer-hero-benefits {
    grid-column: 1;
    grid-row: 2;
  }
  .consumer-hero-form {
    grid-column: 1;
    grid-row: 3;
  }
  .consumer-hero-media {
    grid-column: 2;
    grid-row: 1 / span 3;
    align-self: flex-start;
  }
}

/* Merchant Hero Slogans (auf dem Bild im unteren Bereich nah am Rand) */
.merchant-hero-slogans {
  position: absolute;
  bottom: 1.2cqw;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: clamp(8px, 2.5cqw, 16px);
  padding: 0 clamp(8px, 3cqw, 20px);
  flex-wrap: wrap;
  font-size: clamp(0.75rem, 2.8cqw, 0.85rem);
  font-weight: 600;
  color: var(--bng-plum-black);
  text-shadow: 0 1px 2px rgba(255, 255, 255, 0.85);
  z-index: 2;
  pointer-events: none;
}

/* Merchant Hero Grid Positions */
@media (min-width: 900px) {
  .merchant-hero-header {
    grid-column: 1;
    grid-row: 1;
  }
  .merchant-hero-form {
    grid-column: 1;
    grid-row: 2;
  }
  .merchant-hero-media {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }
  .merchant-hero-slogans {
    gap: clamp(12px, 3.5cqw, 24px);
    font-size: clamp(0.85rem, 2.9cqw, 1.05rem);
  }
}

/* Typografie Headlines (1:1 aus den Originalvorlagen) */
.merchant-headline {
  margin: 0;
  font-family: var(--font-display);
  font-weight: var(--weight-regular);
  font-size: clamp(1.25rem, 5.2vw, 1.6rem);
  line-height: 1.15;
  color: var(--text-primary);
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

@media (min-width: 900px) {
  .merchant-headline {
    font-size: 30.06px;
    line-height: 1.08;
  }
}

.consumer-headline {
  margin: 0;
  font-family: var(--font-display);
  font-weight: var(--weight-regular);
  font-size: clamp(1.75rem, 7vw, 2.25rem);
  line-height: 1.1;
  color: var(--text-primary);
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

@media (min-width: 900px) {
  .consumer-headline {
    font-size: 50px;
    line-height: 1.05;
  }
}

.hero-subtitle {
  margin: 0;
  font-size: 0.95rem;
  line-height: var(--leading-body);
  color: var(--text-secondary);
}

@media (min-width: 900px) {
  .hero-subtitle {
    font-size: 1rem;
    max-width: 480px;
  }
}

/* Form Styles */
.form-wrapper {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
  max-width: 480px;
  margin: 0 auto;
}

@media (min-width: 900px) {
  .form-wrapper {
    margin: 0;
  }
}

.form-row {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
}

@media (min-width: 900px) {
  .form-row {
    flex-direction: row;
    align-items: center;
  }
}

.waitlist-input {
  width: 100%;
  height: 48px;
  padding: 0 16px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border-subtle);
  text-align: center;
  font-size: 1rem;
  font-family: var(--font-body);
  background: var(--surface-card);
  color: var(--text-primary);
  box-shadow: var(--shadow-card);
  box-sizing: border-box;
  transition: border-color 150ms var(--ease-spring), box-shadow 150ms var(--ease-spring);
}

.waitlist-input:focus {
  border-color: var(--border-focus);
}

.waitlist-input:focus-visible {
  outline: 2px solid var(--action-primary-bg);
  outline-offset: 2px;
  border-color: var(--bng-east-side-hover);
}

@media (min-width: 900px) {
  .waitlist-input {
    flex: 1;
    text-align: left;
    padding: 0 20px;
    height: 48px;
  }
}

.waitlist-button {
  width: 100%;
  height: 52px;
  padding: 0 24px;
  border-radius: var(--radius-pill);
  background-color: var(--action-primary-bg);
  color: var(--action-primary-fg);
  border: none;
  font-size: 1rem;
  font-weight: var(--weight-semibold);
  font-family: var(--font-body);
  cursor: pointer;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background-color 150ms var(--ease-spring), transform 150ms var(--ease-spring);
}

.waitlist-button:hover:not(:disabled) {
  background-color: var(--action-primary-bg-hover);
  transform: scale(1.02);
}

.waitlist-button:active:not(:disabled) {
  transform: scale(0.98);
}

.waitlist-button:focus-visible {
  outline: 2px solid var(--action-primary-bg);
  outline-offset: 3px;
}

.waitlist-button:disabled {
  cursor: not-allowed;
  opacity: 0.7;
}

@media (min-width: 900px) {
  .waitlist-button {
    width: 220px;
    height: 48px;
    flex-shrink: 0;
  }
}

/* Gutschein-Button: Subtile Innen-Animation (Flächen-Glanz & Schrift-Glanz) */
.waitlist-button-shimmer {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.waitlist-button-shimmer::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    115deg,
    transparent 0%,
    transparent 20%,
    rgba(255, 255, 255, 0.3) 40%,
    rgba(255, 255, 255, 0.75) 50%,
    rgba(255, 255, 255, 0.3) 60%,
    transparent 80%,
    transparent 100%
  );
  transform: translateX(-120%);
  animation: gm-button-shimmer var(--button-shimmer-duration, 12s) cubic-bezier(0.4, 0, 0.2, 1) infinite;
  pointer-events: none;
  z-index: 1;
}

.waitlist-button-text-shimmer {
  display: inline-block;
  background: linear-gradient(
    115deg,
    var(--action-primary-fg) 0%,
    var(--action-primary-fg) 30%,
    #FFFFFF 50%,
    var(--action-primary-fg) 70%,
    var(--action-primary-fg) 100%
  );
  background-size: 250% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: var(--action-primary-fg);
  animation: gm-text-shimmer var(--button-shimmer-duration, 12s) cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

@keyframes gm-button-shimmer {
  0% {
    transform: translateX(-120%);
  }
  58.33% {
    transform: translateX(120%);
  }
  58.331%, 100% {
    transform: translateX(-120%);
  }
}

@keyframes gm-text-shimmer {
  0% {
    background-position: 120% 0;
  }
  58.33% {
    background-position: -120% 0;
  }
  58.331%, 100% {
    background-position: 120% 0;
  }
}

.waitlist-button-shimmer:disabled::before {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .waitlist-button-shimmer::before {
    animation: none !important;
    display: none !important;
  }
  .waitlist-button-text-shimmer {
    animation: none !important;
    background: none !important;
    -webkit-text-fill-color: var(--action-primary-fg) !important;
    color: var(--action-primary-fg) !important;
  }
}

/* Counter */
.counter-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 4px;
}

@media (min-width: 900px) {
  .counter-row {
    justify-content: flex-start;
  }
}

/* Hairline Divider */
.divider-container {
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  padding: 0 16px;
  box-sizing: border-box;
}

@media (min-width: 900px) {
  .divider-container {
    max-width: 1280px;
    padding: 0 64px;
  }
}

.hairline-divider {
  border-top: var(--border-width-hairline) solid var(--border-subtle);
  width: 100%;
}

/* Steps Section (Merchant Page) */
.steps-section {
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  padding: 40px 16px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 28px;
  text-align: center;
}

@media (min-width: 900px) {
  .steps-section {
    max-width: 1280px;
    padding: 80px 64px;
    gap: 40px;
  }
}

.steps-heading {
  margin: 0;
  font-family: var(--font-display);
  font-weight: var(--weight-regular);
  font-size: clamp(1.4rem, 5vw, 1.8rem);
  line-height: 1.15;
  letter-spacing: var(--tracking-display);
  color: var(--text-primary);
}

@media (min-width: 900px) {
  .steps-heading {
    font-size: clamp(1.8rem, 2.4vw, 2.4rem);
  }
}

.steps-subheading {
  margin: 0;
  font-family: var(--font-body);
  font-weight: var(--weight-regular);
  font-size: 1.1rem;
  line-height: 1.2;
  letter-spacing: -0.04em;
  color: var(--text-secondary);
}

@media (min-width: 900px) {
  .steps-subheading {
    font-size: clamp(1.2rem, 1.8vw, 1.6rem);
  }
}

.steps-grid {
  display: flex;
  flex-direction: column;
  gap: 24px;
  width: 100%;
}

@media (min-width: 900px) {
  .steps-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 48px;
  }
}

.step-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 12px;
}

/* Page Footer */
.page-footer {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding: 32px 16px 48px;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  box-sizing: border-box;
  text-align: center;
}

@media (min-width: 900px) {
  .page-footer {
    max-width: 1280px;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    padding: 40px 64px 56px;
    gap: 24px;
    flex-wrap: wrap;
  }
}

.page-footer-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
}

@media (min-width: 900px) {
  .page-footer-nav {
    order: 2;
    gap: 20px;
  }
}

.page-footer-link {
  font-size: var(--text-body-small);
  color: var(--text-secondary);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color 150ms var(--ease-spring);
}

.page-footer-link:hover {
  color: var(--text-primary);
}

.page-footer-socials {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
}

@media (min-width: 900px) {
  .page-footer-socials {
    order: 3;
  }
}

.page-footer-social-link {
  color: var(--text-secondary);
  display: flex;
  transition: color 150ms var(--ease-spring), transform 150ms var(--ease-spring);
}

.page-footer-social-link:hover {
  color: var(--text-primary);
  transform: translateY(-2px);
}

.page-footer-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

@media (min-width: 900px) {
  .page-footer-brand {
    order: 1;
    flex-direction: row;
    gap: 16px;
  }
}

.page-footer-link:focus-visible,
.page-footer-social-link:focus-visible {
  outline: 2px solid var(--action-primary-bg);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}

/* Slider Dots & Focus */
.slider-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  padding: 0;
  border: none;
  background: var(--border-subtle);
  cursor: pointer;
  transition: background 300ms var(--ease-spring), transform 150ms var(--ease-spring);
  transform: scale(1);
}

.slider-dot[aria-current="true"] {
  background: var(--bng-plum-black);
  transform: scale(1.25);
}

.slider-dot:focus-visible {
  outline: 2px solid var(--bng-plum-black);
  outline-offset: 3px;
}

/* Keyframes */
@keyframes gm-pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.35);
  }
}

@keyframes gm-truck-tick {
  0% {
    transform: translateX(0);
  }
  50% {
    transform: translateX(14px);
  }
  100% {
    transform: translateX(0);
  }
}

@keyframes gm-fadeinup {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes gm-zoomin {
  0% {
    opacity: 0;
    transform: scale(2.6);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes gm-step-pulse {
  0% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.22);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes gm-icon-tick {
  0% {
    transform: translateX(0);
  }
  50% {
    transform: translateX(10px);
  }
  100% {
    transform: translateX(0);
  }
}

/* Micro-Animation Utility Classes - strikt endliche Durchläufe! */
.animate-pulse {
  display: inline-block !important;
  transform-origin: center !important;
  animation: gm-pulse 2.4s var(--ease-spring) 2;
}

.animate-truck {
  display: inline-flex !important;
  transform-origin: center !important;
  animation: gm-truck-tick 700ms var(--ease-spring) 1;
}

.animate-step-icon-1 {
  display: inline-flex !important;
  transform-origin: center !important;
  animation: gm-icon-tick 650ms var(--ease-spring) 200ms 1 both;
}

.animate-step-icon-2 {
  display: inline-flex !important;
  transform-origin: center !important;
  animation: gm-icon-tick 650ms var(--ease-spring) 500ms 1 both;
}

.animate-step-icon-3 {
  display: inline-flex !important;
  transform-origin: center !important;
  animation: gm-icon-tick 650ms var(--ease-spring) 800ms 1 both;
}

.animate-step-badge-1 {
  display: flex !important;
  transform-origin: center !important;
  animation: gm-step-pulse 650ms var(--ease-spring) 300ms 1 both;
}

.animate-step-badge-2 {
  display: flex !important;
  transform-origin: center !important;
  animation: gm-step-pulse 650ms var(--ease-spring) 650ms 1 both;
}

.animate-step-badge-3 {
  display: flex !important;
  transform-origin: center !important;
  animation: gm-step-pulse 650ms var(--ease-spring) 1000ms 1 both;
}

.animate-fadeinup {
  animation: gm-fadeinup 500ms var(--ease-spring) both;
}

.animate-zoomin {
  display: inline-block !important;
  transform-origin: center !important;
  animation: gm-zoomin 1400ms var(--ease-spring) both;
}

/* Barrierefreiheit: prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .animate-pulse,
  .animate-truck,
  .animate-step-icon-1,
  .animate-step-icon-2,
  .animate-step-icon-3,
  .animate-step-badge-1,
  .animate-step-badge-2,
  .animate-step-badge-3,
  .animate-fadeinup,
  .animate-zoomin {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}
