/* ============================================================
   marcelalexander.ai — site.css
   Samengevoegd: design-system tokens (colors_and_type.css)
   + logo.css + paginastijlen uit het prototype.
   @font-face gesnoeid tot de gewichten die de pagina's echt
   gebruiken: Syne 700/800 · DM Sans 400/500/700 + italic 400
   · JetBrains Mono 400. Overige gewichten staan wel in /fonts.
============================================================ */

/* ---------- Webfonts (self-hosted, /fonts) ---------- */
@font-face { font-family: "Syne"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("fonts/Syne-Bold.ttf") format("truetype"); }
@font-face { font-family: "Syne"; font-style: normal; font-weight: 800; font-display: swap;
  src: url("fonts/Syne-ExtraBold.ttf") format("truetype"); }

@font-face { font-family: "DM Sans"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/DMSans-Regular.ttf") format("truetype"); }
@font-face { font-family: "DM Sans"; font-style: italic; font-weight: 400; font-display: swap;
  src: url("fonts/DMSans-Italic.ttf") format("truetype"); }
@font-face { font-family: "DM Sans"; font-style: normal; font-weight: 500; font-display: swap;
  src: url("fonts/DMSans-Medium.ttf") format("truetype"); }
@font-face { font-family: "DM Sans"; font-style: normal; font-weight: 600; font-display: swap;
  src: url("fonts/DMSans-SemiBold.ttf") format("truetype"); }
@font-face { font-family: "DM Sans"; font-style: normal; font-weight: 700; font-display: swap;
  src: url("fonts/DMSans-Bold.ttf") format("truetype"); }

@font-face { font-family: "JetBrains Mono"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("fonts/JetBrainsMono-Regular.ttf") format("truetype"); }

/* ============================================================
   TOKENS — bron: colors_and_type.css
============================================================ */
:root {
  /* Brand palette */
  --creme:   #F2EAD8;   /* Eggshell — primary canvas */
  --nacht:   #1A1A1A;   /* Carbon Black — identity layer */
  --terra:   #D97757;   /* Burnt Peach — the one signal */
  --salie:   #8B9E7E;   /* Palm Leaf — warm complement */
  --lei:     #7A8FA6;   /* Slate Grey — cool complement */

  /* Tonal extensions */
  --creme-shade:  #E8DEC6;
  --creme-deep:   #D9CDB1;
  --nacht-soft:   #2A2A2A;
  --nacht-line:   #3A3A3A;
  --terra-deep:   #B85F40;
  --terra-tint:   #ECC2AD;
  --salie-deep:   #6F8262;
  --lei-deep:     #5E7790;

  /* Semantic tokens — light theme */
  --bg:           var(--creme);
  --bg-elevated:  #F8F2E3;
  --bg-sunken:    var(--creme-shade);

  --fg:           var(--nacht);
  --fg-muted:     #4A4744;
  --fg-soft:      #6B6864;
  --fg-inverted:  var(--creme);

  --signal:       var(--terra);
  --signal-press: var(--terra-deep);

  --border:       #1A1A1A;
  --border-soft:  rgba(26, 26, 26, .12);
  --rule:         rgba(26, 26, 26, .08);

  --focus-ring:   var(--terra);

  /* Spacing */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 24px; --space-6: 32px; --space-7: 48px; --space-8: 64px;
  --space-9: 96px; --space-10: 128px;

  /* Radii */
  --radius-0: 0px; --radius-1: 2px; --radius-2: 4px; --radius-3: 8px;
  --radius-pill: 999px;

  /* Borders */
  --bw-hair: 1px; --bw-rule: 1.5px; --bw-bold: 2px; --bw-frame: 3px;

  /* Shadows */
  --shadow-0: none;
  --shadow-1: 0 1px 0 rgba(26, 26, 26, .08);
  --shadow-2: 0 2px 8px rgba(26, 26, 26, .08);
  --shadow-modal: 0 24px 64px rgba(26, 26, 26, .18);

  /* Motion */
  --ease-out:    cubic-bezier(.2, .8, .2, 1);
  --ease-in-out: cubic-bezier(.4, 0, .2, 1);
  --dur-fast:    120ms;
  --dur-base:    180ms;
  --dur-slow:    280ms;

  /* Typography */
  --font-display: "Syne", "DM Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-body:    "DM Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-mono:    "JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace;

  --fw-regular:    400;
  --fw-medium:     500;
  --fw-semibold:   600;
  --fw-bold:       700;
  --fw-extrabold:  800;
  --fw-black:      800;

  --fs-12: 12px; --fs-13: 13px; --fs-14: 14px; --fs-15: 15px; --fs-16: 16px;
  --fs-18: 18px; --fs-20: 20px; --fs-24: 24px; --fs-32: 32px; --fs-40: 40px;
  --fs-56: 56px; --fs-72: 72px; --fs-96: 96px; --fs-128: 128px;

  --lh-tight:  1.04;
  --lh-snug:   1.15;
  --lh-normal: 1.35;
  --lh-loose:  1.55;

  --tracking-tight:  -0.025em;
  --tracking-snug:   -0.015em;
  --tracking-normal: 0;
  --tracking-wide:   0.05em;
  --tracking-allcaps: 0.12em;
}

/* ---------- Semantic typography ---------- */
.font-display { font-family: var(--font-display); }
.font-body    { font-family: var(--font-body); }
.font-mono    { font-family: var(--font-mono); }

.t-statement {
  font-family: var(--font-display);
  font-weight: var(--fw-black);
  font-size: clamp(56px, 9vw, 128px);
  line-height: var(--lh-tight);
  letter-spacing: 0.015em;
  color: var(--fg);
  text-wrap: balance;
  transform: scaleX(.74);
  transform-origin: left top;
}

.t-h1, h1 {
  font-family: var(--font-display);
  font-weight: var(--fw-black);
  font-size: clamp(40px, 5.5vw, 72px);
  line-height: var(--lh-tight);
  letter-spacing: 0.015em;
  color: var(--fg);
  margin: 0;
  text-wrap: balance;
  transform: scaleX(.74);
  transform-origin: left top;
}

.t-h2, h2 {
  font-family: var(--font-display);
  font-weight: var(--fw-extrabold);
  font-size: clamp(32px, 3.5vw, 40px);
  line-height: var(--lh-snug);
  letter-spacing: 0.015em;
  color: var(--fg);
  margin: 0;
  transform: scaleX(.74);
  transform-origin: left top;
}

.t-h3, h3 {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: 24px;
  line-height: var(--lh-snug);
  letter-spacing: var(--tracking-snug);
  color: var(--fg);
  margin: 0;
}

.t-h4, h4 {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: 18px;
  line-height: var(--lh-snug);
  color: var(--fg);
  margin: 0;
}

.t-eyebrow {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: 13px;
  line-height: 1;
  letter-spacing: var(--tracking-allcaps);
  text-transform: uppercase;
  color: var(--signal);
}

.t-lead, .t-intro {
  font-family: var(--font-body);
  font-weight: var(--fw-medium);
  font-size: 20px;
  line-height: var(--lh-normal);
  letter-spacing: var(--tracking-snug);
  color: var(--fg);
}

.t-body, p {
  font-family: var(--font-body);
  font-weight: var(--fw-regular);
  font-size: 16px;
  line-height: var(--lh-loose);
  color: var(--fg);
}

.t-small {
  font-family: var(--font-body);
  font-weight: var(--fw-regular);
  font-size: 14px;
  line-height: var(--lh-normal);
  color: var(--fg-muted);
}

.t-caption {
  font-family: var(--font-body);
  font-weight: var(--fw-medium);
  font-size: 12px;
  line-height: var(--lh-normal);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--fg-soft);
}

.t-quote {
  font-family: var(--font-display);
  font-weight: var(--fw-extrabold);
  font-size: clamp(32px, 4vw, 56px);
  line-height: var(--lh-snug);
  letter-spacing: 0.015em;
  color: var(--fg);
  border-left: 3px solid var(--signal);
  padding-left: var(--space-5);
  text-wrap: balance;
  transform: scaleX(.74);
  transform-origin: left top;
}

.t-mono, code, kbd, samp {
  font-family: var(--font-mono);
  font-weight: var(--fw-regular);
  font-size: 14px;
  line-height: var(--lh-normal);
  color: var(--fg);
}

a, .t-link {
  color: var(--fg);
  text-decoration: underline;
  text-decoration-thickness: 1.5px;
  text-underline-offset: 3px;
  text-decoration-color: var(--signal);
  transition: color var(--dur-fast) var(--ease-out);
}
a:hover, .t-link:hover {
  color: var(--signal);
}

.on-nacht {
  --fg:        var(--creme);
  --fg-muted:  #BDB6A6;
  --fg-soft:   #8E8978;
  --border:    var(--creme);
  --border-soft: rgba(242, 234, 216, .14);
  --rule:      rgba(242, 234, 216, .10);
  --bg:        var(--nacht);
  --bg-elevated: var(--nacht-soft);
  background: var(--bg);
  color: var(--fg);
}

/* ============================================================
   LOGO — bron: assets/logos/logo.css
============================================================ */
.maw-logo {
  --ai-scale: 0.79;
  --ai-gap:  calc(var(--logo-h) * -0.145);
  --ai-y:    calc(var(--logo-h) * -0.055);
  --logo-h: 56px;
  display: inline-flex;
  align-items: flex-end;
  vertical-align: middle;
}
.maw-logo .wordmark {
  display: block;
  height: var(--logo-h);
  width: auto;
}
.maw-logo .ai {
  display: block;
  height: calc(var(--logo-h) * var(--ai-scale));
  width: auto;
  margin-left: var(--ai-gap);
  transform: translateY(var(--ai-y));
}
.maw-logo--flush {
  margin-left: calc(var(--logo-h) * -0.1563);
}

/* ============================================================
   PAGINASTIJLEN — uit het prototype + productie-toevoegingen
============================================================ */
body { margin: 0; background: #F2EAD8; }
a { color: #1A1A1A; }
a:hover { color: #D97757; }

@keyframes ma-caret { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0; } }

/* Cursor-SVG (hero + levels) */
.ma-cursor {
  position: absolute;
  opacity: 0;
  transform: scale(1);
  /* pivot op de pijlpunt (3,1 in de svg) — press-scale en ripple blijven op de klikplek */
  transform-origin: 3px 1px;
  z-index: 5;
  pointer-events: none;
}
/* reis met lichte overshoot — als een hand die de muis neerlegt */
#hcur {
  transition: left 520ms cubic-bezier(.3, .7, .25, 1.04), top 520ms cubic-bezier(.3, .7, .25, 1.04),
              opacity 200ms var(--ease-out), transform 110ms var(--ease-in-out);
}
#fcur {
  transition: left 460ms cubic-bezier(.3, .7, .25, 1.04), top 460ms cubic-bezier(.3, .7, .25, 1.04),
              opacity 200ms var(--ease-out), transform 110ms var(--ease-in-out);
}

/* klik-pulse: terra ring die vanuit de pijlpunt uitdijt — uitgezet (was de "eclipse") */
.ma-click {
  display: none;
  position: absolute;
  width: 34px;
  height: 34px;
  margin: -17px 0 0 -17px;
  border: 1.5px solid var(--terra);
  border-radius: 50%;
  z-index: 4;
  pointer-events: none;
  animation: ma-click 460ms cubic-bezier(.2, .8, .2, 1) forwards;
}
@keyframes ma-click {
  0%   { transform: scale(.25); opacity: .95; }
  100% { transform: scale(1.35); opacity: 0; }
}

/* Knoppen (style-hover / style-active uit het prototype) */
.btn-primary {
  display: inline-flex;
  align-items: center;
  background: var(--terra);
  color: #FFF6E9;
  font-family: var(--font-display);
  font-weight: 700;
  border: 1px solid var(--terra);
  border-radius: 4px;
  text-decoration: none;
  cursor: pointer;
}
.btn-primary:hover { background: var(--terra-deep); border-color: var(--terra-deep); color: #FFF6E9; }
.btn-primary:active { transform: translateY(1px); }

.btn-outline {
  display: inline-flex;
  align-items: center;
  background: transparent;
  color: var(--nacht);
  font-family: var(--font-display);
  font-weight: 700;
  border: 1px solid var(--nacht);
  border-radius: 4px;
  text-decoration: none;
  cursor: pointer;
}
.btn-outline:hover { background: rgba(26,26,26,.08); color: var(--nacht); }
.btn-outline:active { transform: translateY(1px); }

.btn-replay {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--nacht);
  background: transparent;
  border: 1px solid var(--border-soft);
  border-radius: 4px;
  padding: 7px 14px;
  cursor: pointer;
  white-space: nowrap;
}
.btn-replay:hover { border-color: var(--nacht); }
.btn-replay:active { transform: translateY(1px); }

/* Links met hover naar terra (vervangt style-hover) */
.link-plain { text-decoration: none; }
.nav-link { font-weight: 600; font-size: 15px; text-decoration: none; color: var(--nacht); white-space: nowrap; }
.nav-link:hover { color: var(--terra); }
.mono-link { font-family: var(--font-mono); text-decoration: none; color: var(--nacht); }
.mono-link:hover { color: var(--terra); }
.gal-link { font-family: var(--font-mono); font-size: 12.5px; color: var(--creme); text-decoration: none; }
.gal-link:hover { color: var(--terra); }
.foot-link { font-size: 15px; color: var(--creme); text-decoration: none; }
.foot-link:hover { color: var(--terra); }
.card-link { border: 1px solid var(--nacht); text-decoration: none; color: var(--nacht); }
.card-link:hover { background: rgba(26,26,26,.05); color: var(--nacht); }

/* Taal-toggle */
.lang-btn { cursor: pointer; }

/* Inline formulieren (agenda + nieuwsbrief) */
.notify-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 16px; }
.notify-input, #nl-email {
  font-family: var(--font-body);
  font-size: 15px;
  color: var(--nacht);
  background: var(--creme);
  border: 1px solid var(--nacht);
  border-radius: 2px;
  padding: 14px 16px;
  outline: none;
}
.notify-input:focus, #nl-email:focus { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
.notify-input { padding: 11px 12px; min-width: 0; flex: 1 1 150px; }
.notify-btn { font-size: 14px; padding: 12px 18px; }

/* ============================================================
   MOBIEL — de vijf levels stapelen i.p.v. zijwaarts scrollen
============================================================ */
@media (max-width: 720px) {
  .fases-scroll { overflow-x: visible; }
  .fases-inner  { min-width: 0 !important; }
  .fases-row    { grid-template-columns: 1fr !important; }
  .fase-card    { min-height: 0 !important; }
  /* accolade + pijl-annotatie is een horizontaal gebaar — vervalt gestapeld;
     de callout-tekst eronder vertelt hetzelfde verhaal */
  .fases-annrow { display: none !important; }
}

/* ============================================================
   WTF-CHAT-REPLAY — echte appjes tikken binnen zoals in WhatsApp:
   typing-dots, dan ploft de bubbel erin. Brutalistisch gestileerd.
============================================================ */
/* Twee kolommen: WTF?! links, appjes rechts. Het merkteken vult zijn
   kolom volledig — geen kolom-sieraad, wél begrensd door de kolombreedte. */
.wtf-stage {
  margin-top: clamp(28px, 4vw, 44px); min-height: 560px;
  display: flex; align-items: center; justify-content: space-between; gap: clamp(28px, 5vw, 72px);
}
.wtf-anchor {
  flex: 1 1 42%; min-width: 260px;
  user-select: none; pointer-events: none;
}
.wtf-merkteken { display: block; width: 100%; height: auto; }
.wtf-chat {
  flex: 0 1 560px; align-self: stretch;
  display: flex; flex-direction: column; gap: 14px; justify-content: flex-end;
  cursor: pointer; /* klik = doorspoelen */
}
.wtf-msg { display: flex; flex-direction: column; align-items: flex-start; }
.wtf-afzender { font-family: var(--font-mono); font-size: 11px; letter-spacing: .08em; color: var(--terra); margin: 0 0 5px 4px; }
.wtf-bubbel {
  position: relative; max-width: 92%;
  background: var(--bg-elevated); border: 1px solid var(--nacht);
  border-radius: 3px 16px 16px 16px;
  padding: 12px 16px 8px;
  transform-origin: left bottom;
}
.wtf-bubbel p { margin: 0; font-family: var(--font-body); font-weight: 500; font-size: clamp(15px, 1.6vw, 17px); line-height: 1.45; color: var(--nacht); }
.wtf-tijd { margin-top: 4px; font-family: var(--font-mono); font-size: 10px; letter-spacing: .06em; color: var(--fg-soft); text-align: right; }
.wtf-msg.plof .wtf-bubbel { animation: wtf-plof 380ms cubic-bezier(.2, .9, .3, 1.25) both; }
.wtf-msg.plof .wtf-afzender { animation: wtf-fade 240ms ease-out both; }
@keyframes wtf-plof {
  0% { opacity: 0; transform: scale(.72) translateY(10px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes wtf-fade { from { opacity: 0; } to { opacity: 1; } }
.wtf-typing { display: inline-flex; gap: 5px; padding: 14px 16px; }
.wtf-typing i {
  width: 7px; height: 7px; border-radius: 50%; background: var(--fg-soft);
  animation: wtf-dot 1s infinite ease-in-out;
}
.wtf-typing i:nth-child(2) { animation-delay: .15s; }
.wtf-typing i:nth-child(3) { animation-delay: .3s; }
@keyframes wtf-dot { 0%, 60%, 100% { transform: translateY(0); opacity: .45; } 30% { transform: translateY(-5px); opacity: 1; } }
.wtf-voet { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-top: 22px; }
@media (max-width: 720px) {
  .wtf-stage { flex-direction: column; align-items: stretch; min-height: 0; }
  .wtf-anchor { flex: none; width: 100%; }
  .wtf-chat { flex: none; width: 100%; }
  .wtf-bubbel { max-width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .wtf-msg.plof .wtf-bubbel, .wtf-msg.plof .wtf-afzender { animation: none; }
  .wtf-typing i { animation: none; }
}

/* ============================================================
   ÉÉN MAAT — content maximaal 1240px breed, gecentreerd.
   De padding groeit mee zodra het scherm breder wordt dan
   1240 + 2×64: alle secties houden dezelfde linkerlijn.
============================================================ */
section[data-screen-label],
footer[data-screen-label] {
  padding-left: max(clamp(20px, 5vw, 64px), calc((100% - 1240px) / 2)) !important;
  padding-right: max(clamp(20px, 5vw, 64px), calc((100% - 1240px) / 2)) !important;
}
section[data-screen-label="Hero"] { padding-left: 0 !important; padding-right: 0 !important; }
section[data-screen-label="Hero"] > header,
section[data-screen-label="Hero"] > div:not(.ma-cursor) {
  padding-left: max(clamp(20px, 5vw, 64px), calc((100% - 1240px) / 2)) !important;
  padding-right: max(clamp(20px, 5vw, 64px), calc((100% - 1240px) / 2)) !important;
}

/* Wie-is-Marcel: foto en tekst houden elkaar vast op elk formaat */
@media (min-width: 900px) {
  #marcel-wrap {
    grid-template-columns: minmax(300px, 440px) minmax(0, 640px) !important;
    justify-content: start;
  }
}

/* ============================================================
   MOBIELE HERO — minder lagen, meer lucht
============================================================ */
#prompt-line { transition: opacity 500ms var(--ease-out); }
@media (max-width: 720px) {
  .build-log { display: none !important; }
  #hcur { display: none !important; }
  #hcap { display: none !important; }
  #prompt-line { max-width: 100% !important; }
  #prompt-line.gedimd { opacity: .5; }
  #cta-inner { flex-direction: column !important; align-items: stretch !important; gap: 10px !important; width: 100%; }
  #cta-inner .btn-primary, #cta-inner .btn-outline { display: inline-flex !important; justify-content: center; min-height: 48px; width: 100%; }
}

/* vervolgberichten van dezelfde afzender: gewone hoeken rondom */
.wtf-msg.vervolg .wtf-bubbel { border-radius: 16px; }
