/* ============================================================
   Sticker Studio UI  ·  marksnier.nl
   Herbruikbaar, class-based stijlsysteem. Plain CSS, geen build.
   Gebruik:  <body class="ms-page" data-accent="coral|green|blue|amber">
   Gereconstrueerd uit de Claude Design-spec, in lijn met de homepage.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400..800&family=Hanken+Grotesque:wght@400..700&family=Space+Mono:wght@400;700&display=swap');

:root {
  /* Basis */
  --cream: #fffdf6;
  --ink: #1c1812;
  --body: #5e564a;
  --muted: #9a9082;
  --on-ink: #fffdf6;
  --hairline: #e7e1d2;

  /* Accenten (OKLCH) met deep + tekstveilige variant */
  --coral: oklch(0.66 0.16 35);
  --coral-deep: oklch(0.58 0.16 35);
  --coral-text: oklch(0.52 0.15 35);
  --green: oklch(0.66 0.15 150);
  --green-deep: oklch(0.5 0.13 150);
  --green-text: oklch(0.46 0.12 150);
  --blue: oklch(0.64 0.15 250);
  --blue-deep: oklch(0.52 0.14 250);
  --blue-text: oklch(0.5 0.14 250);
  --amber: oklch(0.72 0.14 70);
  --amber-deep: oklch(0.56 0.13 70);
  --amber-text: oklch(0.48 0.1 70);
  --amber-eyebrow: oklch(0.78 0.13 70);

  /* Fonts */
  --font-display: 'Bricolage Grotesque', sans-serif;
  --font-body: 'Hanken Grotesque', system-ui, sans-serif;
  --font-mono: 'Space Mono', ui-monospace, monospace;

  /* Vorm */
  --r-card: 18px;
  --r-input: 9px;
  --r-pill: 100px;
  --shadow-card: 7px 7px 0 var(--ink);
  --shadow-btn: 4px 4px 0 var(--ink);
  --maxw: 1180px;
  --pad: 48px;

  /* Standaard-accent = coral (wordt door data-accent overschreven) */
  --accent: var(--coral);
  --accent-deep: var(--coral-deep);
  --accent-text: var(--coral-text);
  --accent-ink: var(--on-ink);
}

/* Accent-mechanisme */
[data-accent="coral"] { --accent: var(--coral); --accent-deep: var(--coral-deep); --accent-text: var(--coral-text); --accent-ink: var(--on-ink); }
[data-accent="green"] { --accent: var(--green); --accent-deep: var(--green-deep); --accent-text: var(--green-text); --accent-ink: var(--on-ink); }
[data-accent="blue"]  { --accent: var(--blue);  --accent-deep: var(--blue-deep);  --accent-text: var(--blue-text);  --accent-ink: var(--on-ink); }
[data-accent="amber"] { --accent: var(--amber); --accent-deep: var(--amber-deep); --accent-text: var(--amber-text); --accent-ink: var(--ink); }

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

.ms-page {
  margin: 0;
  background: var(--cream);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

:where(.ms-page) :focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
  border-radius: 4px;
}

@media (max-width: 860px) { :root { --pad: 22px; } }

/* ---------- Page shell ---------- */
.ms-topbar {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255, 253, 246, 0.82);
  backdrop-filter: blur(10px);
  border-bottom: 2.5px solid var(--ink);
}
.ms-topbar__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 16px var(--pad);
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
}
.ms-wordmark {
  font-family: var(--font-display); font-weight: 800; font-size: 22px;
  letter-spacing: -0.01em; color: var(--ink); text-decoration: none; white-space: nowrap;
}
.ms-wordmark__dot { color: var(--accent); }
.ms-back {
  font-family: var(--font-mono); font-weight: 700; font-size: 13px;
  text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--ink); text-decoration: none; transition: color 0.15s;
}
.ms-back:hover { color: var(--accent-text); }

.ms-container { max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad); }
.ms-container--narrow { max-width: 760px; }

.ms-footer { border-top: 2.5px solid var(--ink); margin-top: 64px; }
.ms-footer__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 24px var(--pad) 40px;
  display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px;
}
.ms-footer__copy { font-family: var(--font-mono); font-size: 12px; color: var(--muted); }

/* ---------- Typografie ---------- */
.ms-eyebrow {
  font-family: var(--font-mono); font-weight: 700; font-size: 13px;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--accent-text); margin: 0;
}
.ms-display { font-family: var(--font-display); font-weight: 800; font-size: clamp(40px, 7vw, 72px); line-height: 0.96; letter-spacing: -0.035em; margin: 0; }
.ms-h1 { font-family: var(--font-display); font-weight: 800; font-size: clamp(28px, 4vw, 40px); line-height: 1.05; letter-spacing: -0.025em; margin: 0; }
.ms-h2 { font-family: var(--font-display); font-weight: 700; font-size: clamp(21px, 3vw, 26px); letter-spacing: -0.015em; margin: 0; }
.ms-h3 { font-family: var(--font-display); font-weight: 700; font-size: 19px; letter-spacing: -0.01em; margin: 0; }
.ms-lead { font-size: clamp(17px, 2.2vw, 20px); line-height: 1.55; color: var(--body); margin: 0; }
.ms-body { font-size: 15px; line-height: 1.6; color: var(--body); margin: 0; }
.ms-label { font-family: var(--font-mono); font-weight: 700; font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); margin: 0; }
.ms-hint { font-size: 12.5px; color: var(--muted); margin: 0; }
.ms-link { color: var(--accent-text); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 2px; }

/* ---------- Knoppen ---------- */
.ms-btn {
  font-family: var(--font-mono); font-weight: 700; font-size: 14px;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; padding: 11px 22px; cursor: pointer;
  border: 2.5px solid var(--ink); border-radius: var(--r-pill);
  background: var(--cream); color: var(--ink); text-decoration: none;
  transition: transform 0.15s, box-shadow 0.15s, background 0.15s, color 0.15s;
}
.ms-btn:hover { transform: translate(-2px, -2px); box-shadow: var(--shadow-btn); }
.ms-btn--primary { background: var(--ink); color: var(--on-ink); }
.ms-btn--primary:hover { box-shadow: 7px 7px 0 var(--accent); }
.ms-btn--accent { background: var(--accent); color: var(--accent-ink); }
.ms-btn--accent:hover { box-shadow: 7px 7px 0 var(--ink); }
.ms-btn--outline { background: transparent; }
.ms-btn--outline:hover { box-shadow: 7px 7px 0 var(--accent); }
.ms-btn--ghost { border-color: transparent; background: transparent; }
.ms-btn--ghost:hover { background: var(--ink); color: var(--on-ink); box-shadow: none; transform: none; }
.ms-btn--add { border-style: dashed; color: var(--accent-text); }
.ms-btn--add:hover { box-shadow: 4px 4px 0 var(--accent); }
.ms-btn--danger { color: var(--coral-text); }
.ms-btn--danger:hover { background: var(--coral); color: var(--on-ink); }
.ms-btn--icon { min-height: 44px; width: 44px; padding: 0; border-radius: 12px; }
.ms-btn--sm { min-height: 36px; padding: 7px 15px; font-size: 13px; }
.ms-btn--lg { min-height: 52px; padding: 15px 30px; font-size: 15px; }
.ms-btn:disabled, .ms-btn.is-disabled { opacity: 0.45; cursor: not-allowed; pointer-events: none; }

/* ---------- Formuliervelden ---------- */
.ms-field { margin-bottom: 16px; }
.ms-field > .ms-label { display: block; margin-bottom: 7px; }
.ms-input, .ms-select, .ms-textarea {
  width: 100%; font-family: var(--font-body); font-size: 15px; color: var(--ink);
  background: #fff; border: 2.5px solid var(--ink); border-radius: var(--r-input);
  padding: 11px 13px; outline: none; transition: box-shadow 0.12s;
}
.ms-input:focus, .ms-select:focus, .ms-textarea:focus {
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent) 28%, transparent);
}
.ms-textarea { min-height: 96px; resize: vertical; }
.ms-select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%); background-position: calc(100% - 18px) center, calc(100% - 12px) center; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; padding-right: 36px; }
.ms-input-group { display: flex; align-items: stretch; border: 2.5px solid var(--ink); border-radius: var(--r-input); overflow: hidden; background: #fff; }
.ms-input-group:focus-within { box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent) 28%, transparent); }
.ms-input-group__prefix { display: flex; align-items: center; padding: 0 13px; background: var(--cream); border-right: 2.5px solid var(--ink); font-family: var(--font-mono); font-weight: 700; }
.ms-input-group .ms-input { border: 0; border-radius: 0; }
.ms-input-group .ms-input:focus { box-shadow: none; }
.ms-checkbox { display: inline-flex; align-items: center; gap: 9px; cursor: pointer; }
.ms-checkbox input { width: 19px; height: 19px; accent-color: var(--accent); }
.ms-toggle { display: inline-flex; align-items: center; gap: 11px; cursor: pointer; }
.ms-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.ms-toggle__track { position: relative; width: 46px; height: 26px; border: 2.5px solid var(--ink); border-radius: var(--r-pill); background: var(--cream); transition: background 0.15s; flex: none; }
.ms-toggle__track::after { content: ""; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: var(--ink); transition: transform 0.15s; }
.ms-toggle input:checked + .ms-toggle__track { background: var(--accent); }
.ms-toggle input:checked + .ms-toggle__track::after { transform: translateX(20px); }
.ms-toggle input:focus-visible + .ms-toggle__track { outline: 3px solid var(--accent); outline-offset: 2px; }

/* ---------- Kaarten en panelen ---------- */
.ms-card {
  background: var(--cream); border: 3px solid var(--ink); border-radius: var(--r-card);
  box-shadow: var(--shadow-card); padding: 22px;
}
.ms-card__band {
  display: flex; justify-content: space-between; align-items: center;
  background: var(--accent); color: var(--accent-ink);
  margin: -22px -22px 18px; padding: 14px 22px;
  border-bottom: 3px solid var(--ink);
  border-radius: calc(var(--r-card) - 3px) calc(var(--r-card) - 3px) 0 0;
  font-family: var(--font-mono); font-weight: 700; font-size: 13px; letter-spacing: 0.06em;
}
.ms-card__band span:last-child { font-size: 22px; }
.ms-card--topline { border-top: 7px solid var(--accent); }
.ms-card--dark { background: var(--ink); color: var(--on-ink); border-color: var(--ink); }
.ms-card--dark .ms-body, .ms-card--dark .ms-lead { color: #d8d2c4; }
.ms-card--tilt { transform: rotate(-1.4deg); transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.3s; }
.ms-card--tilt:hover { transform: rotate(0deg) translateY(-5px); box-shadow: 12px 12px 0 var(--accent); }
.ms-panel { background: var(--cream); border: 3px solid var(--ink); border-radius: 28px; box-shadow: var(--shadow-card); padding: 36px; }
.ms-panel--dark { background: var(--ink); color: var(--on-ink); }

/* ---------- Datadisplay ---------- */
.ms-stats-row { display: flex; flex-wrap: wrap; gap: 32px; }
.ms-stat { min-width: 96px; }
.ms-stat__label { font-family: var(--font-mono); font-weight: 700; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); }
.ms-stat__value { font-family: var(--font-mono); font-weight: 700; font-size: 26px; letter-spacing: -0.01em; margin-top: 3px; color: var(--accent-text); }
.ms-pos { color: var(--green-text); }
.ms-neg { color: var(--coral-text); }

.ms-rows { display: flex; flex-direction: column; gap: 9px; }
.ms-row { display: grid; grid-template-columns: 1fr 150px 38px; gap: 10px; align-items: center; }
.ms-row--head { font-family: var(--font-mono); font-weight: 700; font-size: 11px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); }
.ms-row__amount { font-family: var(--font-mono); text-align: right; }
.ms-row--head .ms-row__amount { text-align: right; }
.ms-row__delete {
  width: 38px; height: 38px; padding: 0; cursor: pointer;
  border: 2px solid var(--ink); border-radius: 9px; background: var(--cream);
  color: var(--muted); font-size: 16px; line-height: 1; transition: all 0.12s;
}
.ms-row__delete:hover { background: var(--coral); border-color: var(--ink); color: var(--on-ink); }
.ms-total { display: flex; justify-content: space-between; align-items: baseline; border-top: 2px dashed var(--ink); margin-top: 14px; padding-top: 12px; }
.ms-total__label { font-weight: 700; }
.ms-total__value { font-family: var(--font-mono); font-weight: 700; font-size: 18px; }

/* ---------- Grafiek ---------- */
.ms-bar { margin-bottom: 14px; }
.ms-bar:last-child { margin-bottom: 0; }
.ms-bar__head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
.ms-bar__label { font-weight: 600; font-size: 14px; }
.ms-bar__amount { font-family: var(--font-mono); font-size: 12.5px; color: var(--body); }
.ms-bar__track { height: 20px; border: 2px solid var(--ink); border-radius: var(--r-pill); background: var(--cream); overflow: hidden; }
.ms-bar__fill { height: 100%; width: var(--val, 0%); background: var(--accent); transition: width 0.25s ease; }

/* ---------- Klein grut ---------- */
.ms-pill { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-weight: 700; font-size: 12px; padding: 4px 12px; border: 2px solid var(--ink); border-radius: var(--r-pill); }
.ms-tag { display: inline-flex; font-family: var(--font-mono); font-size: 12px; color: var(--accent-text); background: color-mix(in oklab, var(--accent) 18%, var(--cream)); border-radius: var(--r-pill); padding: 4px 12px; }
.ms-badge { display: inline-flex; font-family: var(--font-mono); font-weight: 700; font-size: 12px; color: var(--accent-ink); background: var(--accent); border-radius: var(--r-pill); padding: 4px 12px; }
.ms-empty { text-align: center; padding: 32px 16px; }
.ms-empty__title { font-family: var(--font-display); font-weight: 700; font-size: 19px; margin: 0 0 6px; }
.ms-divider { border: 0; border-top: 1.5px solid var(--hairline); margin: 22px 0; }
.ms-divider--strong { border-top: 2.5px solid var(--ink); }

/* ---------- Utilities ---------- */
.ms-stack > * + * { margin-top: 12px; }
.ms-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.ms-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
@media (max-width: 720px) { .ms-grid-2 { grid-template-columns: 1fr; } .ms-row, .ms-row--head { grid-template-columns: 1fr 110px 38px; } }

/* ---------- Print ---------- */
@media print {
  .ms-page { background: #fff; color: #000; }
  .ms-topbar, .ms-footer, .ms-btn, .ms-row__delete { display: none !important; }
  .ms-card, .ms-panel { box-shadow: none; border: 1px solid #ccc; break-inside: avoid; }
  .ms-input, .ms-select, .ms-textarea, .ms-input-group { border: none; background: transparent; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .ms-page *, .ms-page *::before, .ms-page *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
  .ms-card--tilt { transform: none; }
}
