@import url('https://fonts.googleapis.com/css2?family=Google+Sans+Flex:opsz,slnt,wdth,wght,ROND@8..144,-10..0,25..150,400..500,0..100&display=swap');

:root {
  --palette-grey-1200: #121317;
  --palette-grey-1000: #212226;
  --palette-grey-900: #2F3034;
  --palette-grey-800: #45474D;
  --palette-grey-400: #B7BFD9;
  --palette-grey-300: #B2BBC5;
  --palette-grey-200: #CDD4DC;
  --palette-grey-100: #E1E6EC;
  --palette-grey-50: #E6EAF0;
  --palette-grey-20: #EFF2F7;
  --palette-grey-15: #F0F1F5;
  --palette-grey-10: #F8F9FC;
  --palette-grey-0: #FFFFFF;
  --palette-grey-400-rgb: 183, 191, 217;
  --palette-grey-1000-rgb: 33, 34, 38;

  --brand-1: #2a0f42;
  --brand-2: #6d28a8;
  --brand-3: #b23fc9;

  --theme-surface: var(--palette-grey-0);
  --theme-on-surface: var(--palette-grey-1200);
  --theme-on-surface-variant: var(--palette-grey-800);
  --theme-surface-container: var(--palette-grey-10);
  --theme-outline-variant: rgba(var(--palette-grey-1000-rgb), .08);
  --theme-secondary-button: rgba(var(--palette-grey-400-rgb), .12);
  --theme-secondary-button-hover: var(--palette-grey-15);
  --theme-primary-hover: var(--palette-grey-900);

  --page-margin: 72px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 36px;

  --landing-main-text-size: 5rem;
  --landing-main-text-line-height: 1.08;
  --landing-main-text-letter-spacing: -2px;

  --cta-size: 17.5px;
  --cta-line-height: 25.38px;
  --cta-letter-spacing: .18px;

  --ease-out-quart: cubic-bezier(.165, .84, .44, 1);
}

@media (max-width: 1024px) {
  :root {
    --landing-main-text-size: 3.2rem;
    --page-margin: 32px;
  }
}

@media (max-width: 640px) {
  :root {
    --landing-main-text-size: 2.4rem;
    --page-margin: 20px;
  }
}

* {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
}

html, body {
  height: 100%;
}

body {
  margin: 0;
  padding: 0;
  height: 100dvh;
  width: 100%;
  color: var(--theme-on-surface);
  background: var(--theme-surface);
  font-family: 'Google Sans Flex', 'Google Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  font-weight: 400;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow: hidden;
}

body.modal-open {
  overflow: hidden;
}

h1, h2, p {
  margin: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

/* Header */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  padding: var(--space-lg) var(--page-margin);
}

.site-header img {
  height: 47px;
  width: auto;
  display: block;
}

/* Hero */
.hero {
  position: relative;
  height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: clip;
  text-align: center;
}

.hero-canvas-wrapper {
  position: fixed;
  inset: 0;
  z-index: -1;
}

.hero-canvas-wrapper canvas {
  display: block;
  width: 100%;
  height: 100%;
}

.hero-content {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: var(--space-xl) var(--page-margin) 80px;
}

.hero-heading {
  margin: 0;
  font-size: var(--landing-main-text-size);
  line-height: var(--landing-main-text-line-height);
  letter-spacing: var(--landing-main-text-letter-spacing);
  font-weight: 450;
  font-variation-settings: "wdth" 100, "opsz" 144;
  max-width: 1100px;
}

.hero-heading .cursor {
  display: inline-block;
  width: .06em;
  margin-left: .05em;
  background: currentColor;
  animation: blink 1s step-end infinite;
  transform: translateY(.05em);
}

@keyframes blink {
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

.hero-cta {
  display: flex;
  gap: var(--space-md);
  margin-top: 48px;
}

/* Buttons */
.button {
  font-size: var(--cta-size);
  line-height: var(--cta-line-height);
  letter-spacing: var(--cta-letter-spacing);
  font-weight: 450;
  font-family: inherit;
  border: 1px solid transparent;
  border-radius: 9999px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 28px;
  transition: .15s all ease-out;
}

.button-primary {
  background: var(--theme-on-surface);
  color: var(--theme-surface);
}

.button-primary:hover,
.button-primary:focus-visible {
  outline: none;
  background: var(--theme-primary-hover);
}

.button-secondary {
  color: var(--theme-on-surface);
  background: var(--theme-secondary-button);
  border: 1px solid var(--theme-outline-variant);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

.button-secondary:hover,
.button-secondary:focus-visible {
  outline: none;
  background: var(--theme-secondary-button-hover);
}

/* Footer sections (Contact / Voorwaarden) */
.info-section {
  position: relative;
  max-width: 720px;
  margin: 0 auto;
  padding: 120px var(--page-margin);
  text-align: center;
  scroll-margin-top: 100px;
}

.info-section h2 {
  font-size: 2rem;
  font-weight: 450;
  margin-bottom: var(--space-md);
}

.info-section p {
  color: var(--theme-on-surface-variant);
  font-size: 17px;
  line-height: 1.6;
}

.info-section a.email {
  color: var(--brand-2);
  text-decoration: underline;
}

.site-footer {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 20;
  text-align: center;
  padding: 20px var(--page-margin);
  color: var(--theme-on-surface-variant);
  font-size: 14px;
}

/* Modal */
.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--page-margin);
  background: rgba(var(--palette-grey-1000-rgb), .45);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  opacity: 0;
  visibility: hidden;
  transition: opacity .25s var(--ease-out-quart), visibility .25s var(--ease-out-quart);
}

.modal-overlay.is-open {
  opacity: 1;
  visibility: visible;
}

.modal {
  position: relative;
  max-width: 480px;
  width: 100%;
  max-height: calc(100dvh - 2 * var(--page-margin));
  overflow-y: auto;
  background: var(--theme-surface);
  border: 1px solid var(--theme-outline-variant);
  border-radius: 24px;
  padding: var(--space-xl);
  text-align: center;
  box-shadow: 0 24px 64px rgba(var(--palette-grey-1000-rgb), .25);
  transform: scale(.92) translateY(12px);
  opacity: 0;
  transition: transform .3s var(--ease-out-quart), opacity .3s var(--ease-out-quart);
}

.modal-overlay.is-open .modal {
  transform: scale(1) translateY(0);
  opacity: 1;
}

.modal-body h2 {
  font-size: 1.75rem;
  font-weight: 450;
  margin-bottom: var(--space-md);
}

.modal-body p {
  color: var(--theme-on-surface-variant);
  font-size: 17px;
  line-height: 1.6;
}

.modal-body a.email {
  color: var(--brand-2);
  text-decoration: underline;
}

.modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 32px;
  height: 32px;
  border-radius: 9999px;
  border: 1px solid var(--theme-outline-variant);
  background: var(--theme-secondary-button);
  color: var(--theme-on-surface);
  font-size: 20px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: .15s all ease-out;
}

.modal-close:hover,
.modal-close:focus-visible {
  outline: none;
  background: var(--theme-secondary-button-hover);
  transform: rotate(90deg);
}

