
/* s35ae: demo modus styling verwijderd; .demo-toggle-row blijft -
   wordt nog gebruikt door de Diagnose-sectie debug-knop. */
.demo-toggle-row { display:flex; align-items:center; justify-content:space-between; gap:10px; }

/* s35ad: Debug-paneel modal */
.debug-modal {
  position: fixed; inset: 0; z-index: 9500;
  background: rgba(15,23,42,.72);
  display: none; align-items: flex-start; justify-content: center;
  padding: 24px; overflow-y: auto;
}
.debug-modal.is-open { display: flex; }
.debug-modal-inner {
  background: #fff; color: #0f172a;
  width: 100%; max-width: 1100px; border-radius: 12px;
  box-shadow: 0 24px 64px rgba(0,0,0,.35);
  padding: 18px 20px 20px;
}
.debug-modal-head {
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; margin-bottom:12px; border-bottom:1px solid #e2e8f0; padding-bottom:10px;
}
.debug-modal-title { font-size:16px; font-weight:700; }
.debug-modal-sub { font-size:12px; color:#64748b; font-weight:500; }
.debug-modal-actions { display:flex; gap:8px; }
.debug-btn {
  background:#0ea5e9; border:0; color:#fff; padding:6px 12px;
  border-radius:6px; font-size:13px; font-weight:600; cursor:pointer;
}
.debug-btn.secondary { background:#475569; }
.debug-btn.danger { background:#dc2626; }
/* s35ba: wedstrijden vandaag — compacter zonder essentiele info te verliezen */
.today-match-card { padding: 8px 12px !important; gap: 4px !important; }
.today-match-row1 { gap: 8px; }
.today-match-teams { font-size: 13.5px !important; font-weight: 700; line-height: 1.25 !important; }
.today-match-time { font-size: 12.5px !important; font-weight: 700; }
.today-match-meta { font-size: 11.5px !important; gap: 8px !important; flex-wrap: wrap; }
.today-match-meta > * { line-height: 1.3; }
.today-match-countdown { padding: 1px 6px !important; font-size: 11px !important; }
/* s35bd: klikbaar adres in today-match meta-row */
.td-loc-nav {
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: rgba(245,200,66,0.4);
  text-underline-offset: 2px;
  transition: color .15s;
}
.td-loc-nav:hover { color: var(--gold,#f5c842); }
/* s35be: structured snel-notitie form — styled like obs-modal */
.sa-snel-form {
  margin-top: 10px;
  background: var(--bg-card, #12151e);
  border: 1px solid rgba(245,200,66,0.28);
  border-radius: 14px;
  overflow: hidden;
}
.sa-snel-form-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px 10px;
  border-bottom: 1px solid var(--border, #2a2f3a);
  gap: 10px;
}
.sa-snel-close-head {
  font-size: 11px;
  color: var(--gold, #f5c842);
  text-transform: uppercase;
  letter-spacing: .6px;
  font-weight: 700;
  cursor: pointer;
  user-select: none;
}
.sa-snel-status {
  font-size: 11px;
  color: var(--text-3, #8b93a8);
  font-style: italic;
}
.sa-snel-form-body {
  padding: 14px 16px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sa-snel-field-row {
  display: grid;
  grid-template-columns: 1fr 70px;
  gap: 8px;
}
.sa-snel-naam,
.sa-snel-rug,
.sa-snel-positie {
  width: 100%;
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border2, #2d3242);
  border-radius: 8px;
  padding: 9px 12px;
  color: var(--text, #e5e9f5);
  font-family: inherit;
  font-size: 13.5px;
  outline: none;
  box-sizing: border-box;
  transition: border-color .15s;
}
.sa-snel-naam:focus,
.sa-snel-rug:focus,
.sa-snel-positie:focus {
  border-color: var(--gold, #f5c842);
}
.sa-snel-terms {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
/* s35bf: structured form stacked — label boven, invulveld eronder */
.sa-snel-term-row {
  display: block;
  padding: 2px 0;
  border-radius: 6px;
  transition: background .15s;
}
.sa-snel-term-row:focus-within .sa-snel-term-label {
  color: var(--gold,#f5c842);
  opacity: 1;
}
.sa-snel-term-label {
  display: block;
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted,#9aa3b7);
  opacity: .85;
  user-select: none;
  text-align: left;
  margin-bottom: 4px;
  padding-left: 2px;
  transition: color .15s, opacity .15s;
}
.sa-snel-term-chev { display: none; }
.sa-snel-term-input {
  width: 100%;
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border2,#2d3242);
  border-radius: 8px;
  padding: 9px 12px;
  color: var(--text,#e5e9f5);
  font-family: inherit;
  font-size: 13.5px;
  outline: none;
  transition: border-color .15s, background .15s;
  box-sizing: border-box;
}
.sa-snel-term-input:focus {
  border-color: var(--gold,#f5c842);
  background: #0d1018;
}
/* sn-edit-term-in: inputs in "Opgeslagen notities" edit form — zelfde stijl als sa-snel-term-input */
.sn-edit-term-in {
  width: 100%;
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border2,#2d3242);
  border-radius: 8px;
  padding: 9px 12px;
  color: var(--text,#e5e9f5);
  font-family: inherit;
  font-size: 13.5px;
  outline: none;
  transition: border-color .15s, background .15s;
  box-sizing: border-box;
}
.sn-edit-term-in:focus {
  border-color: var(--gold,#f5c842);
  background: #0d1018;
}
/* s35bf: trigger-knop "open" state — duidelijk zichtbaar wanneer form open is */
.sa-trigger-snel.is-open {
  background: rgba(245,200,66,0.18) !important;
  border-color: var(--gold,#f5c842) !important;
  color: var(--gold,#f5c842) !important;
  font-weight: 700 !important;
  box-shadow: 0 0 0 1px rgba(245,200,66,0.35) inset;
}
.sa-trigger-wstr.is-open {
  background: rgba(255,107,107,0.18) !important;
  border-color: #ff6b6b !important;
  color: #ff8189 !important;
  font-weight: 700 !important;
  box-shadow: 0 0 0 1px rgba(255,107,107,0.35) inset;
}
/* s35be: snel wedstrijdnotitie form */
.sa-snel-wstr-form {
  margin-top: 10px;
  padding: 12px;
  background: rgba(255,107,107,0.06);
  border: 1px solid rgba(255,107,107,0.25);
  border-radius: 10px;
}
.sa-snel-wstr-form textarea {
  width: 100%;
  min-height: 180px;
  background: #0a0c12;
  border: 1px solid var(--border2,#2d3242);
  border-radius: 6px;
  padding: 10px 12px;
  color: var(--text,#e5e9f5);
  font-family: inherit;
  font-size: 13.5px;
  outline: none;
  resize: vertical;
  box-sizing: border-box;
  line-height: 1.55;
}
.sa-snel-wstr-form textarea:focus {
  border-color: #ff6b6b;
}
/* s35be: convert-to-rapport knop */
.sa-snel-convert {
  padding: 3px 8px;
  font-size: 11px;
  flex-shrink: 0;
  color: var(--gold,#f5c842);
  background: rgba(245,200,66,0.10);
  border: 1px solid rgba(245,200,66,0.30);
  border-radius: 5px;
  cursor: pointer;
  font-weight: 600;
  transition: background .15s;
}
.sa-snel-convert:hover { background: rgba(245,200,66,0.18); }
.today-match-players { gap: 4px !important; margin-top: 4px !important; }
.today-player-chip { padding: 2px 7px !important; font-size: 11px !important; }
.today-matches-head { padding-bottom: 6px !important; margin-bottom: 6px !important; }
.today-matches-title { font-size: 13px !important; }
.today-matches-count { font-size: 11px !important; }
/* s35ba: form-section visual grouping + collapsible — alles dicht behalve Eindbeoordeling */
.form-section {
  padding: 14px 0;
  border-top: 1px solid rgba(255,255,255,0.04);
  position: relative;
}
.form-section:first-of-type { border-top: 0; }
.form-section-title {
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  transition: opacity .15s;
}
.form-section-title:hover { opacity: 0.85; }
.form-section-title::after {
  content: '\25BE';
  margin-left: auto;
  color: var(--primary);
  font-size: 14px;
  transition: transform .2s;
}
.form-section.collapsed > .form-section-title::after { transform: rotate(-90deg); }
.form-section.collapsed > *:not(.form-section-title) { display: none !important; }
/* Eindbeoordeling is NIET collapsible — pijl verbergen */
.form-section.always-open > .form-section-title::after { display: none; }
.form-section.always-open > .form-section-title { cursor: default; }
/* s35ay: subcriteria-textarea uniform met functionele techniek-textarea */
.subcriteria-note {
  width: 100%;
  padding: 9px 11px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  color: var(--text);
  font-size: 13px;
  font-family: inherit;
  line-height: 1.45;
  resize: vertical;
  margin-top: 6px;
  transition: border-color .15s, box-shadow .15s;
}
.subcriteria-note:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(227,6,19,0.12);
}
/* s35az: mobile keyboard fix — extra scroll-padding zodat focused textarea zichtbaar blijft */
@media (max-width: 768px){
  body { scroll-padding-bottom: 50vh; }
  textarea:focus, input:focus { scroll-margin-bottom: 50vh; }
}
.subcriteria-label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-2);
  margin-bottom: 4px;
}
.debug-btn:hover { filter: brightness(1.08); }
.debug-table { width:100%; border-collapse:collapse; font-size:12px; }
.debug-table th, .debug-table td {
  border-bottom:1px solid #e2e8f0; padding:6px 8px; text-align:left;
  vertical-align: top;
}
.debug-table th { background:#f1f5f9; font-weight:700; font-size:11px; text-transform:uppercase; letter-spacing:.4px; }
.debug-table td.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size:11px; color:#334155; }
.debug-table tr.empty-row td { background:#fef2f2; color:#991b1b; }
.debug-table tr.dup-row td { background:#fffbeb; }
.debug-empty { padding:24px; text-align:center; color:#64748b; }
.debug-row-btn {
  background:#dc2626; color:#fff; border:0; padding:4px 9px; border-radius:5px;
  font-size:11px; font-weight:600; cursor:pointer;
}
.debug-row-btn:hover { background:#b91c1c; }
.debug-section-title { font-size:12px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:.5px; margin:14px 0 6px; }

/* =========================================================
   SCOUTINGHUB — Marcel Steeman
   FC Twente / Heracles — O12/O15 jeugdscouting
   ========================================================= */

:root {
  --bg: #10151e;
  --bg-2: #161e2a;
  --bg-3: #202b3a;
  --panel: #1a2230;
  --panel-2: #232d3c;
  --border: #2b374c;
  --border-2: #2f3b52;
  --text: #e8edf5;
  --text-2: #aab6c9;
  --text-3: #9aa6ba; /* A3: lichter voor beter contrast (WCAG AA) op donkere achtergrond */
  --primary: #e30613;        /* FC Twente rood */
  --primary-2: #ff2a3a;
  --secondary: #f5c518;      /* Heracles geel */
  --accent: #4ea1ff;
  --green: #22c55e;
  --orange: #f59e0b;
  --red: #ef4444;
  --grade-a: #22c55e;
  --grade-b: #84cc16;
  --grade-c: #f59e0b;
  --grade-d: #ef4444;
  --shadow: 0 10px 30px rgba(0,0,0,.35);
  /* Film palette — same DNA as the intro */
  --film-grad: linear-gradient(135deg, #ff8189 0%, #e30613 45%, #f5c518 100%);
  --film-grad-soft: linear-gradient(135deg, rgba(255,129,137,0.18) 0%, rgba(227,6,19,0.16) 45%, rgba(245,197,24,0.18) 100%);
  --film-glow: 0 18px 50px rgba(227,6,19,0.42), 0 0 30px rgba(78,161,255,0.12);
  --film-bg-1: #06080d;
  --film-bg-2: #0c1119;
  --radius: 10px;
  --radius-sm: 6px;
}

* { box-sizing: border-box; }
html, body {
  margin: 0; padding: 0;
  background: var(--bg);
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  overflow-x: clip;
  max-width: 100vw;
}
body {
  background:
    radial-gradient(900px 650px at 85% 15%, rgba(227,6,19,.16), transparent 62%),
    radial-gradient(800px 500px at 15% 110%, rgba(245,197,24,.08), transparent 60%),
    radial-gradient(1000px 600px at 50% -10%, rgba(255,129,137,0.10), transparent 60%),
    linear-gradient(180deg, var(--film-bg-2) 0%, var(--film-bg-1) 100%);
  background-attachment: fixed;
}
#app {
  position: relative;
}
#app::before {
  content: '';
  position: fixed;
  right: -120px; bottom: -120px;
  width: 620px; height: 620px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'><defs><linearGradient id='g' x1='0%25' y1='0%25' x2='100%25' y2='100%25'><stop offset='0%25' stop-color='%23ff8189'/><stop offset='55%25' stop-color='%23e30613'/><stop offset='100%25' stop-color='%23f5c518'/></linearGradient></defs><path d='M40 4 L70 14 L70 44 Q70 64 40 76 Q10 64 10 44 L10 14 Z' fill='url(%23g)' stroke='rgba(255,255,255,0.9)' stroke-width='1.5'/><text x='40' y='51' text-anchor='middle' font-family='Arial,sans-serif' font-size='26' font-weight='900' fill='white' letter-spacing='-1.5'>SH</text><circle cx='40' cy='13' r='2.8' fill='%23f5c518'/></svg>");
  background-repeat: no-repeat;
  background-size: contain;
  opacity: .14;
  filter: drop-shadow(0 12px 40px rgba(227,6,19,.45));
  pointer-events: none;
  z-index: 0;
}
#app::after {
  content: '';
  position: fixed; inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,0.012) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.012) 1px, transparent 1px);
  background-size: 56px 56px;
  pointer-events: none;
  z-index: 0;
}
.app-grid { position: relative; }
.main { position: relative; z-index: 1; }
button, input, select, textarea { font-family: inherit; font-size: inherit; color: inherit; }
button { cursor: pointer; }
a { color: var(--accent); text-decoration: none; }

/* ---------- LOGIN OVERLAY ---------- */
#login-overlay {
  position: fixed; inset: 0;
  background:
    radial-gradient(800px 600px at 50% 50%, rgba(227,6,19,.18), transparent 65%),
    radial-gradient(900px 500px at 50% -10%, rgba(255,129,137,0.12), transparent 60%),
    radial-gradient(700px 400px at 50% 110%, rgba(245,197,24,.10), transparent 60%),
    linear-gradient(180deg, var(--film-bg-2) 0%, var(--film-bg-1) 100%);
  display: flex; align-items: center; justify-content: center;
  z-index: 1000;
  overflow: hidden;
}
#login-overlay {
  gap: 0;
  padding: 24px;
}
/* Apple-style: cubic-bezier(.16,1,.3,1) = ease-out-expo. Geen bounce, geen rotatie. */
.login-hero {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 24px;
  max-width: 480px;
  text-align: center;
}
.login-hero-mark, .login-hero-title, .login-hero-tag {
  margin-left: auto;
  margin-right: auto;
}
.login-hero-mark {
  width: 340px; height: 340px;
  filter: drop-shadow(0 24px 60px rgba(227,6,19,.45));
  animation: appleHeroIn 1.8s cubic-bezier(.16,1,.3,1) both,
             appleFloat 7s ease-in-out 2.4s infinite,
             appleShinePulse 4.5s ease-in-out 2.2s infinite;
  position: relative;
  will-change: transform, opacity, filter;
}
@keyframes appleShinePulse {
  0%, 100% { filter: drop-shadow(0 24px 60px rgba(227,6,19,.45)); }
  50%      { filter: drop-shadow(0 28px 72px rgba(227,6,19,.62))
                     drop-shadow(0 0 22px rgba(255,200,210,.32)); }
}
/* Achtergrond glow-puls */
.login-hero-mark::before {
  content: '';
  position: absolute; inset: -60px;
  background: radial-gradient(circle at center, rgba(227,6,19,.38), transparent 60%);
  filter: blur(36px);
  z-index: -2;
  animation: appleGlow 5s ease-in-out 1.5s infinite both;
  opacity: 0;
}
/* Draaiende gradient ring rond logo */
.login-hero-mark::after {
  content: '';
  position: absolute;
  inset: -22px;
  border-radius: 50%;
  padding: 2px;
  background: conic-gradient(
    from 0deg,
    rgba(227,6,19,.0) 0deg,
    rgba(227,6,19,.0) 40deg,
    rgba(255,42,58,.85) 90deg,
    rgba(245,197,24,.7) 150deg,
    rgba(255,42,58,.85) 210deg,
    rgba(227,6,19,.0) 280deg,
    rgba(227,6,19,.0) 360deg);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  filter: blur(.4px);
  opacity: 0;
  z-index: -1;
  animation: appleRingFade 1.6s cubic-bezier(.16,1,.3,1) 1.0s forwards, appleRingSpin 9s linear 1.2s infinite;
}
.login-hero-mark svg { width: 100%; height: 100%; display: block; position: relative; z-index: 1; }

/* Cinematic particles laag — kleine lichtpuntjes die opstijgen */
.login-hero-particles {
  position: absolute;
  inset: -60px;
  pointer-events: none;
  z-index: -1;
  overflow: hidden;
}
.login-hero-particles span {
  position: absolute;
  width: 4px; height: 4px;
  background: radial-gradient(circle, rgba(255,210,210,.95) 0%, rgba(255,42,58,.4) 50%, transparent 70%);
  border-radius: 50%;
  bottom: -10px;
  opacity: 0;
  filter: blur(.5px);
  animation: appleParticle 5s cubic-bezier(.16,1,.3,1) infinite;
}
.login-hero-particles span:nth-child(1)  { left: 12%; animation-delay: 1.2s; animation-duration: 5.5s; }
.login-hero-particles span:nth-child(2)  { left: 24%; animation-delay: 2.4s; animation-duration: 6.0s; width: 3px; height: 3px; }
.login-hero-particles span:nth-child(3)  { left: 38%; animation-delay: 0.8s; animation-duration: 4.8s; }
.login-hero-particles span:nth-child(4)  { left: 52%; animation-delay: 3.2s; animation-duration: 5.2s; width: 5px; height: 5px; }
.login-hero-particles span:nth-child(5)  { left: 66%; animation-delay: 1.8s; animation-duration: 6.4s; }
.login-hero-particles span:nth-child(6)  { left: 78%; animation-delay: 0.4s; animation-duration: 5.0s; width: 3px; height: 3px; }
.login-hero-particles span:nth-child(7)  { left: 88%; animation-delay: 2.8s; animation-duration: 5.8s; }
.login-hero-particles span:nth-child(8)  { left: 18%; animation-delay: 4.0s; animation-duration: 5.4s; width: 3px; height: 3px; }
.login-hero-particles span:nth-child(9)  { left: 60%; animation-delay: 3.6s; animation-duration: 4.6s; }
.login-hero-particles span:nth-child(10) { left: 30%; animation-delay: 5.2s; animation-duration: 6.0s; }

/* Lichtstreep die over het logo veegt — als een filmische reveal */
.login-hero-beam {
  position: absolute;
  top: -10%; left: -30%;
  width: 50%; height: 120%;
  background: linear-gradient(115deg,
    transparent 0%,
    rgba(255,255,255,.0) 35%,
    rgba(255,255,255,.18) 50%,
    rgba(255,255,255,.0) 65%,
    transparent 100%);
  filter: blur(8px);
  pointer-events: none;
  z-index: 2;
  opacity: 0;
  animation: appleBeamSweep 2.4s cubic-bezier(.16,1,.3,1) 1.6s both;
}
.login-hero-title {
  font-size: clamp(36px, 5.5vw, 56px);
  font-weight: 700; letter-spacing: -1.5px;
  text-align: center;
  white-space: nowrap;
  background: linear-gradient(110deg,
    #ffffff 0%,
    #ffffff 25%,
    #ffdcdc 45%,
    #ff5d6c 55%,
    #ffffff 70%,
    #c8cdd6 100%);
  background-size: 220% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  margin: 0;
  line-height: 1;
  will-change: transform, opacity, filter, background-position;
  animation: appleTitleSweep 6s ease-in-out 2.2s infinite;
}
@keyframes appleTitleSweep {
  0%   { background-position: 200% 0; }
  100% { background-position: -100% 0; }
}
.login-hero-title .word {
  display: inline-block;
  opacity: 0;
  transform: translateY(28px);
  filter: blur(10px);
  animation: appleWordIn 1.2s cubic-bezier(.16,1,.3,1) both;
}
.login-hero-title .word:nth-child(1) { animation-delay: .55s; }
.login-hero-title .word:nth-child(2) { animation-delay: .70s; }
.login-hero-tag {
  color: var(--text-3);
  font-size: 15px;
  letter-spacing: .4px;
  text-align: center;
  font-weight: 400;
  margin-top: -10px;
  opacity: 0;
  animation: appleFadeUp 1.1s cubic-bezier(.16,1,.3,1) 1.05s both;
}
.login-hero-tag span {
  display: inline-block;
  color: var(--primary);
  margin: 0 8px;
  opacity: .7;
}
/* s35bc: login intro-pijlers + blurb */
.login-hero-pillars {
  margin-top: 18px;
  display: flex; gap: 10px; align-items: center; justify-content: center;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.88);
  opacity: 0;
  animation: appleFadeUp 1.0s cubic-bezier(.16,1,.3,1) 1.25s both;
}
.login-hero-pillars i {
  font-style: normal;
  color: var(--primary);
  opacity: .8;
}
.login-hero-blurb {
  margin-top: 18px;
  max-width: 480px;
  font-size: 14px;
  line-height: 1.55;
  text-align: center;
  color: rgba(255,255,255,0.72);
  font-weight: 400;
  opacity: 0;
  animation: appleFadeUp 1.0s cubic-bezier(.16,1,.3,1) 1.45s both;
}
.login-hero-blurb em {
  font-style: normal;
  color: var(--primary);
  font-weight: 700;
}

@keyframes appleHeroIn {
  0%   { opacity: 0; transform: translateY(40px) scale(.88); filter: blur(18px) drop-shadow(0 0 0 rgba(227,6,19,0)); }
  55%  { opacity: 1; transform: translateY(-4px) scale(1.04); filter: blur(0)  drop-shadow(0 30px 80px rgba(227,6,19,.65)); }
  100% { opacity: 1; transform: translateY(0)    scale(1);   filter: blur(0)  drop-shadow(0 24px 60px rgba(227,6,19,.45)); }
}
@keyframes appleWordIn {
  0%   { opacity: 0; transform: translateY(28px); filter: blur(10px); }
  100% { opacity: 1; transform: translateY(0);    filter: blur(0); }
}
@keyframes appleFadeUp {
  0%   { opacity: 0; transform: translateY(16px); filter: blur(6px); }
  100% { opacity: 1; transform: translateY(0);    filter: blur(0); }
}
@keyframes appleFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
@keyframes appleGlow {
  0%, 100% { opacity: .55; transform: scale(1); }
  50%      { opacity: .95; transform: scale(1.12); }
}
@keyframes appleRingFade {
  0%   { opacity: 0; transform: scale(.85); }
  100% { opacity: .9; transform: scale(1); }
}
@keyframes appleRingSpin {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes appleBeamSweep {
  0%   { left: -30%; opacity: 0; }
  20%  { opacity: 1; }
  80%  { opacity: 1; }
  100% { left: 130%; opacity: 0; }
}
@keyframes appleParticle {
  0%   { transform: translateY(0) scale(.6); opacity: 0; }
  15%  { opacity: 1; }
  85%  { opacity: 1; }
  100% { transform: translateY(-260px) scale(1.1); opacity: 0; }
}
@media (max-width: 1100px) {
  .login-hero-mark { width: 280px; height: 280px; }
  .login-hero-title { font-size: 38px; }
}
@media (max-width: 860px) {
  #login-overlay { gap: 0; }
  .login-hero { display: none; }
}
#login-overlay::after {
  content: '';
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,0.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.018) 1px, transparent 1px);
  background-size: 48px 48px;
  opacity: .6;
  pointer-events: none;
}
.login-card {
  width: 100%; max-width: 460px;
  background: rgba(18,24,36,.62);
  backdrop-filter: blur(22px) saturate(140%);
  -webkit-backdrop-filter: blur(22px) saturate(140%);
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 36px 38px 28px 38px;
  box-shadow: 0 30px 80px rgba(0,0,0,.55), 0 0 0 1px rgba(255,255,255,.02) inset;
  position: relative;
  z-index: 1;
  animation: appleCardIn 1.3s cubic-bezier(.16,1,.3,1) .25s both;
  will-change: transform, opacity, filter;
}
@keyframes appleCardIn {
  0%   { opacity: 0; transform: translateY(36px) scale(.97); filter: blur(12px); }
  100% { opacity: 1; transform: translateY(0)    scale(1);   filter: blur(0); }
}
.login-card .login-logo-mark { opacity: 0; animation: appleFadeUp .9s cubic-bezier(.16,1,.3,1) 1.10s both; }
.login-card .login-title     { opacity: 0; animation: appleFadeUp .9s cubic-bezier(.16,1,.3,1) 1.22s both; }
.login-card .login-sub       { opacity: 0; animation: appleFadeUp .9s cubic-bezier(.16,1,.3,1) 1.32s both; }
.login-card .login-field     { opacity: 0; animation: appleFadeUp .85s cubic-bezier(.16,1,.3,1) both; }
.login-card .login-field:nth-of-type(1) { animation-delay: 1.44s; }
.login-card .login-field:nth-of-type(2) { animation-delay: 1.54s; }
.login-card .login-btn       { opacity: 0; animation: appleFadeUp .85s cubic-bezier(.16,1,.3,1) 1.66s both; }
.login-logo {
  display: flex; flex-direction: column; align-items: center; gap: 16px;
  margin-bottom: 22px;
}
.login-logo-mark {
  width: 140px; height: 140px;
  display: flex; align-items: center; justify-content: center;
  filter: drop-shadow(0 20px 50px rgba(227,6,19,0.45)) drop-shadow(0 0 32px rgba(78,161,255,0.16));
}
@media (max-width: 520px) {
  .login-logo-mark { width: 116px; height: 116px; }
}
.login-logo-mark svg { width: 100%; height: 100%; display: block; position: relative; z-index: 1; }

/* === Login-logo extras: gele orbit-punt + zwevende rode stippen === */
.login-logo-mark.login-logo-mark-anim { position: relative; overflow: visible; }
.login-logo-orbit {
  position: absolute;
  inset: -10px;
  pointer-events: none;
  z-index: 3;
  animation: shOrbitSpin 6.5s linear infinite;
}
.login-logo-orbit-dot {
  position: absolute;
  top: -4px;
  left: 50%;
  width: 9px; height: 9px;
  margin-left: -4.5px;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, #fff7d0 0%, #f5c518 45%, #b88a08 100%);
  box-shadow:
    0 0 8px rgba(245,197,24,.95),
    0 0 18px rgba(245,197,24,.55),
    0 0 32px rgba(245,197,24,.28);
}
@keyframes shOrbitSpin {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.login-logo-dots {
  position: absolute;
  inset: -30px;
  pointer-events: none;
  z-index: 0;
  overflow: visible;
}
.login-logo-dots span {
  position: absolute;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,200,205,.95) 0%, rgba(227,6,19,.7) 50%, rgba(227,6,19,0) 75%);
  filter: blur(.4px);
  opacity: 0;
  animation: shFloatDot 5.2s ease-in-out infinite;
}
.login-logo-dots span:nth-child(1) { top: 80%; left: 10%; animation-delay: 0.0s; }
.login-logo-dots span:nth-child(2) { top: 90%; left: 35%; animation-delay: 0.9s; width: 4px; height: 4px; }
.login-logo-dots span:nth-child(3) { top: 85%; left: 60%; animation-delay: 1.7s; }
.login-logo-dots span:nth-child(4) { top: 92%; left: 82%; animation-delay: 2.4s; width: 4px; height: 4px; }
.login-logo-dots span:nth-child(5) { top: 75%; left: 22%; animation-delay: 3.1s; width: 3px; height: 3px; }
.login-logo-dots span:nth-child(6) { top: 88%; left: 70%; animation-delay: 3.9s; width: 3px; height: 3px; }
@keyframes shFloatDot {
  0%   { transform: translateY(0) scale(.6); opacity: 0; }
  15%  { opacity: .9; }
  60%  { opacity: .7; }
  100% { transform: translateY(-160px) scale(1); opacity: 0; }
}

/* === s19: Vandaag banner === */
.dash-vandaag-banner {
  background: linear-gradient(135deg, rgba(227,6,19,.12), rgba(245,158,11,.08));
  border: 1.5px solid rgba(227,6,19,.45);
  border-radius: 14px;
  padding: 14px 16px;
  margin-bottom: 16px;
  box-shadow: 0 4px 20px rgba(227,6,19,.12);
}
.dvb-header {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #e30613;
  margin-bottom: 10px;
}
.dvb-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 0;
  border-top: 1px solid rgba(227,6,19,.15);
}
.dvb-card:first-of-type { border-top: none; }
.dvb-left {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
}
.dvb-dot {
  width: 8px; height: 8px;
  background: #e30613;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 0 6px rgba(227,6,19,.5);
  animation: dvb-pulse 1.8s ease-in-out infinite;
}
@keyframes dvb-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: .6; transform: scale(1.3); }
}
.dvb-info { flex: 1; min-width: 0; }
.dvb-teams {
  font-size: 14px;
  font-weight: 600;
  color: var(--text, #e5e9f5);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dvb-vs { color: var(--muted, #8b95b0); font-weight: 400; }
.dvb-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 3px;
  flex-wrap: wrap;
}
.dvb-tijd {
  font-size: 12px;
  font-weight: 700;
  color: #e30613;
}
.dvb-tag {
  font-size: 11px;
  background: rgba(255,255,255,.08);
  color: var(--muted, #8b95b0);
  border-radius: 5px;
  padding: 1px 6px;
}
.dvb-spelers {
  font-size: 11px;
  color: var(--muted, #8b95b0);
}
.dvb-cta {
  background: #e30613;
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 7px 14px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background .15s, transform .1s;
}
.dvb-cta:hover { background: #c00010; transform: translateY(-1px); }
.dvb-cta:active { transform: translateY(0); }

/* highlight flash na navigatie naar programma */
.highlight-flash {
  animation: hflash .6s ease-out 2;
}
@keyframes hflash {
  0%   { box-shadow: 0 0 0 3px rgba(227,6,19,0); }
  40%  { box-shadow: 0 0 0 4px rgba(227,6,19,.5); }
  100% { box-shadow: 0 0 0 3px rgba(227,6,19,0); }
}

/* === s94: VOLGENDE-wedstrijd hero (telefoon-first) === */
.dash-hero {
  background: linear-gradient(135deg, rgba(227,6,19,.16), rgba(245,197,24,.07) 70%);
  border: 1.5px solid rgba(227,6,19,.5);
  border-radius: 16px;
  padding: 16px 18px;
  box-shadow: 0 6px 26px rgba(227,6,19,.16);
  position: relative;
  overflow: hidden;
}
.dash-hero-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: #ff5a64; margin-bottom: 8px;
}
.dhero-spark { color: #e30613; }
.dash-hero-teams {
  font-size: 19px; font-weight: 700; line-height: 1.25;
  color: var(--text-1, #e5e9f5); margin-bottom: 8px;
  overflow-wrap: anywhere;
}
.dhero-vs { color: var(--muted, #8b95b0); font-weight: 500; }
.dash-hero-when {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px;
}
.dhero-day { font-size: 14px; font-weight: 700; color: var(--text-1, #e5e9f5); }
.dhero-time { font-size: 14px; font-weight: 800; color: #ffce3a; }
.dhero-cd {
  font-size: 11px; font-weight: 700; color: #fff;
  background: #e30613; border-radius: 999px; padding: 2px 10px;
}
.dash-hero-meta {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 14px;
}
.dhero-tag {
  font-size: 11px; background: rgba(255,255,255,.1); color: var(--text-2, #b9c2d9);
  border-radius: 6px; padding: 2px 8px; font-weight: 600;
}
.dhero-players { font-size: 12px; color: var(--text-2, #b9c2d9); }
.dhero-loc { font-size: 12px; color: var(--text-2, #b9c2d9); overflow-wrap: anywhere; }
.dhero-loc-nav { cursor: pointer; text-decoration: underline dotted rgba(255,255,255,.3); }
.dash-hero-cta {
  width: 100%;
  background: #e30613; color: #fff; border: none; border-radius: 10px;
  padding: 12px 16px; font-size: 14px; font-weight: 800; cursor: pointer;
  transition: background .15s, transform .1s;
}
.dash-hero-cta:hover { background: #c00010; transform: translateY(-1px); }
.dash-hero-cta:active { transform: translateY(0); }

/* === Wedstrijden-vandaag widget === */
.today-matches {
  background: linear-gradient(135deg, rgba(227,6,19,.08), rgba(245,197,24,.05));
  border: 1px solid rgba(227,6,19,.35);
  border-radius: 14px;
  padding: 16px 18px;
  box-shadow: 0 6px 24px rgba(227,6,19,.10);
}
.today-matches-head {
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom: 12px;
}
.today-matches-title {
  font-size: 14px; font-weight: 700; letter-spacing: .4px;
  text-transform: uppercase; color: var(--primary);
  display:flex; align-items:center; gap:8px;
}
.today-matches-title::before {
  content:""; width:8px; height:8px; border-radius:50%;
  background: var(--primary); box-shadow: 0 0 10px var(--primary);
  animation: shTodayPulse 1.6s ease-in-out infinite;
}
@keyframes shTodayPulse {
  0%,100% { opacity:1; transform: scale(1); }
  50%     { opacity:.55; transform: scale(.8); }
}
.today-matches-count { font-size:12px; color: var(--text-3); }
/* s35cy: inklapbaar — header klikbaar, body verbergt zich */
.today-matches-head { cursor: pointer; user-select: none; }
.today-matches.collapsed .today-matches-head { margin-bottom: 0; }
.today-matches.collapsed .today-matches-body { display: none; }
.today-matches-right { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.today-matches-chev {
  width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--text-3);
  transition: transform .18s ease;
}
.today-matches.collapsed .today-matches-chev { transform: rotate(-90deg); }
.today-matches-chev svg { width: 12px; height: 12px; }
.today-match-card {
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 10px;
  cursor: pointer;
  transition: transform .15s ease, border-color .15s ease;
}
.today-match-card:hover {
  border-color: var(--primary);
  transform: translateY(-1px);
}
.today-match-card:last-child { margin-bottom: 0; }
.today-match-row1 {
  display:flex; justify-content:space-between; align-items:baseline;
  gap:10px; margin-bottom: 6px;
}
.today-match-teams { font-weight: 700; font-size: 15px; }
.today-match-time { color: var(--primary); font-weight: 600; font-size: 13px; }
.today-match-meta {
  font-size: 12px; color: var(--text-3);
  display:flex; flex-wrap:wrap; gap:10px; align-items:center;
  margin-bottom: 8px;
}
.today-match-meta a {
  color: var(--primary); text-decoration:none; font-weight:600;
}
.today-match-meta a:hover { text-decoration: underline; }
.today-match-countdown {
  display:inline-block; padding: 2px 8px;
  background: rgba(245,197,24,.18); color: #f5c518;
  border-radius: 999px; font-weight: 600; font-size: 11px;
  letter-spacing:.4px;
}
.today-match-countdown.live {
  background: rgba(227,6,19,.22); color: #ff5d6c;
}
.today-match-players {
  display:flex; flex-wrap:wrap; gap:6px; margin-top: 6px;
}
.today-player-chip {
  display:inline-flex; align-items:center; gap:5px;
  padding: 4px 10px; border-radius: 999px;
  background: rgba(78,161,255,.15);
  border: 1px solid rgba(78,161,255,.35);
  font-size: 11px; font-weight: 600; color: #cfe4ff;
  cursor: pointer;
}
.today-player-chip:hover { background: rgba(78,161,255,.28); }
.today-player-chip[data-no-id="1"] {
  background: rgba(255,255,255,.05); color: var(--text-3);
  border-color: var(--border-2); cursor: default;
}

/* Uitklap-versie today-matches */
.today-match-card.open {
  border-color: var(--primary);
  box-shadow: 0 4px 18px rgba(227,6,19,.18);
}
.td-toggle {
  margin-left: auto;
  color: var(--primary);
  font-weight: 600;
  font-size: 11px;
  letter-spacing: .3px;
  user-select: none;
}
.td-details {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed var(--border-2);
}
.td-meta-row {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 10px;
}
.td-meta-tag {
  display: inline-block;
  padding: 3px 9px;
  background: rgba(255,255,255,.05);
  border: 1px solid var(--border-2);
  border-radius: 999px;
  font-size: 11px;
  color: var(--text-2);
}
.td-section-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--text-3);
  margin: 12px 0 6px;
}
.td-notes {
  width: 100%;
  background: var(--bg-2);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  color: var(--text-1);
  padding: 8px 10px;
  font-size: 13px;
  resize: vertical;
  font-family: inherit;
}
.td-notes:focus { outline: none; border-color: var(--primary); }
.td-players {
  display: flex; flex-direction: column; gap: 6px;
}
.td-player-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px;
  padding: 8px 10px;
  background: rgba(255,255,255,.03);
  border: 1px solid var(--border-2);
  border-radius: 8px;
}
.td-player-name { font-size: 13px; font-weight: 600; color: var(--text-1); }
.td-player-num { color: var(--primary); margin-left: 4px; }
.td-player-pos {
  display: inline-block; margin-left: 6px;
  font-size: 10px; padding: 1px 6px;
  background: rgba(78,161,255,.15);
  border-radius: 999px; color: #cfe4ff; font-weight: 600;
}
.td-player-acts { display: flex; gap: 6px; flex-shrink: 0; }
.td-chip-act {
  background: var(--bg-3);
  border: 1px solid var(--border-2);
  color: var(--text-1);
  padding: 4px 10px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.td-chip-act:hover { border-color: var(--primary); background: rgba(227,6,19,.10); }
.td-chip-note { font-size: 10px; color: var(--text-3); font-style: italic; }
.td-actions {
  display: flex; gap: 8px; flex-wrap: wrap;
  margin-top: 12px;
}
.td-actions .btn-ghost {
  background: transparent;
  border: 1px solid var(--border-2);
  color: var(--text-2);
  padding: 6px 12px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.td-actions .btn-ghost:hover { border-color: var(--primary); color: var(--primary); }
.td-actions .btn-route {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--primary);
  color: #fff;
  border: 1px solid var(--primary);
  padding: 6px 14px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  transition: filter .15s, transform .15s;
  box-shadow: 0 2px 8px rgba(227,6,19,.28);
}
.td-actions .btn-route:hover { filter: brightness(1.1); transform: translateY(-1px); }
.td-actions .btn-route:active { transform: translateY(0); }
.td-empty { font-size: 12px; color: var(--text-3); font-style: italic; padding: 6px 0; }

/* ===== s35bo: Status-pills op match-cards ===== */
.match-status-pill {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 11px;
  font-size: 10.5px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
  line-height: 1.4; vertical-align: middle;
  white-space: nowrap;
}
.match-status-pill::before {
  content: ''; width: 6px; height: 6px;
  border-radius: 50%; background: currentColor;
  display: inline-block;
}
.match-status-pill.verwerkt { background: rgba(127,217,158,.16); color: #7fd99e; }
.match-status-pill.concept   { background: rgba(243,156,18,.18); color: #f39c12; }
.match-status-pill.info      { background: rgba(155,164,184,.16); color: #9aa3b7; }


/* Aankomende wedstrijden (3 dagen) — compact */
.upcoming-matches {
  background: var(--bg-2);
  border: 1px solid var(--border-2);
  border-radius: 12px;
  padding: 14px 16px;
}
/* s35ct: inklapbaar — header klikbaar, body verbergt zich */
.upcoming-matches-head {
  display: flex; justify-content: space-between; align-items: center;
  gap: 10px;
  cursor: pointer;
  user-select: none;
  margin-bottom: 10px;
}
.upcoming-matches.collapsed .upcoming-matches-head { margin-bottom: 0; }
.upcoming-matches.collapsed .upcoming-matches-body { display: none; }
.upcoming-matches-title {
  font-size: 13px; font-weight: 700;
  letter-spacing: .4px; text-transform: uppercase;
  color: var(--text-2);
  flex: 1; min-width: 0;
}
.upcoming-matches-right {
  display: flex; align-items: center; gap: 10px;
  flex-shrink: 0;
}
.upcoming-matches-count {
  font-size: 11px; color: var(--text-3);
}
.upcoming-matches-chev {
  width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--text-3);
  transition: transform .18s ease;
}
.upcoming-matches.collapsed .upcoming-matches-chev { transform: rotate(-90deg); }
.upcoming-matches-chev svg { width: 12px; height: 12px; }
.up-row {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 0;
  border-top: 1px dashed var(--border-2);
  cursor: pointer;
  transition: background .15s;
}
.up-row:first-of-type { border-top: none; }
.up-row:hover { background: rgba(255,255,255,.03); }
.up-when {
  display: flex; flex-direction: column;
  min-width: 78px; flex-shrink: 0;
}
.up-day {
  font-size: 12px; font-weight: 700;
  color: var(--primary);
}
.up-time {
  font-size: 11px; color: var(--text-3);
  margin-top: 1px;
}
.up-teams {
  flex: 1; min-width: 0;
  font-size: 13px; font-weight: 600;
  color: var(--text-1);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.up-meta {
  display: flex; align-items: center; gap: 8px;
  flex-shrink: 0;
}
.up-tag {
  display: inline-block; padding: 2px 8px;
  background: rgba(255,255,255,.05);
  border: 1px solid var(--border-2);
  border-radius: 999px;
  font-size: 10px; color: var(--text-2);
}
.up-route {
  text-decoration: none;
  font-size: 16px;
  line-height: 1;
  padding: 4px 6px;
  border-radius: 6px;
  transition: background .15s;
}
.up-route:hover { background: rgba(227,6,19,.15); }
@media (max-width: 480px){
  .up-when { min-width: 64px; }
  .up-day { font-size: 11px; }
  .up-teams { font-size: 12px; }
}
/* s35r: prog-match-detail (read-only) modal */
.pmd-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 10px 16px; margin-top: 4px;
}
.pmd-cell { min-width: 0; }
.pmd-cell.full { grid-column: 1 / -1; }
.pmd-label {
  font-size: 10.5px; text-transform: uppercase;
  letter-spacing: .6px; color: var(--text-3);
  margin-bottom: 2px; font-weight: 600;
}
.pmd-value {
  font-size: 14px; color: var(--text-1);
  word-break: break-word;
}
.pmd-value.empty { color: var(--text-3); font-style: italic; }
.pmd-value.big { font-size: 17px; font-weight: 700; }
.pmd-section {
  margin-top: 14px; padding-top: 12px;
  border-top: 1px solid var(--border-2);
}
.pmd-section-title {
  font-size: 11px; text-transform: uppercase;
  letter-spacing: .6px; color: var(--text-3);
  margin-bottom: 8px; font-weight: 700;
}
.pmd-players {
  display: flex; flex-direction: column; gap: 4px;
}
.pmd-player-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 10px; background: var(--bg-2);
  border: 1px solid var(--border-2); border-radius: 8px;
  font-size: 13px; cursor: pointer;
  transition: background .15s;
}
.pmd-player-row:hover { background: rgba(78,161,255,.10); }
.pmd-player-name { font-weight: 600; }
.pmd-player-meta { font-size: 11px; color: var(--text-3); }
.pmd-empty {
  font-size: 12px; color: var(--text-3); font-style: italic;
  padding: 8px 0;
}
.pmd-actions {
  display: flex; gap: 10px; flex-wrap: wrap;
  margin-top: 18px; justify-content: flex-end;
}
/* s35s: 'Bezig met scouten' widget */
.scouting-active-wrap { margin-bottom: 18px; }
.sa-card {
  background: linear-gradient(135deg, rgba(245,197,24,0.12), rgba(245,197,24,0.04));
  border: 1px solid rgba(245,197,24,0.45);
  border-radius: 14px; padding: 14px 16px; margin-bottom: 12px;
  position: relative; overflow: visible;
}
.sa-card::before {
  content: ''; position: absolute; top: 12px; left: -1px;
  width: 4px; height: calc(100% - 24px);
  background: #f5c518; border-radius: 0 4px 4px 0;
}
.sa-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.sa-title { font-size: 15px; font-weight: 700; color: var(--text-1); display: flex; align-items: center; gap: 8px; min-width: 0; }
.sa-title-txt { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (min-width: 901px){
  .sa-title-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}
.sa-pulse {
  display: inline-block; width: 9px; height: 9px;
  background: #ef4444; border-radius: 50%;
  animation: sa-pulse 1.4s ease-in-out infinite;
}
@keyframes sa-pulse { 0%,100%{opacity:1;transform:scale(1);} 50%{opacity:.45;transform:scale(.78);} }
.sa-meta { font-size: 12px; color: var(--text-3); display: flex; gap: 10px; flex-wrap: wrap; }
.sa-meta b { color: var(--text-2); font-weight: 600; }
.sa-status { font-size: 11px; padding: 3px 8px; border-radius: 10px; background: rgba(239,68,68,0.18); color: #fca5a5; font-weight: 600; letter-spacing: .3px; }
.sa-status.warmup { background: rgba(245,197,24,0.20); color: #f5c518; }
.sa-status.live { background: rgba(16,185,129,0.20); color: #34d399; }
.sa-status.ended { background: rgba(148,163,184,0.18); color: #cbd5e1; }
/* s35dk: handmatige wedstrijd-klok (Start/Einde) */
.sa-status-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.sa-clock-btn { font-size: 10px; font-weight: 700; padding: 3px 8px; border-radius: 7px; cursor: pointer; border: 1px solid transparent; min-height: 24px; white-space: nowrap; }
/* sh-v371: compacte icoon-only klok-knop (bv. Einde) — vierkant, alleen symbool */
.sa-clock-icon { padding: 3px 6px; min-width: 24px; text-align: center; }
.sa-clock-start { background: rgba(16,185,129,0.18); color: #34d399; border-color: rgba(16,185,129,0.4); }
.sa-clock-start:hover { background: rgba(16,185,129,0.30); }
.sa-clock-end { background: rgba(239,68,68,0.16); color: #fca5a5; border-color: rgba(239,68,68,0.4); }
.sa-clock-end:hover { background: rgba(239,68,68,0.28); }
/* sh-v358: klok-herstart-knop (live-kaart). Neutrale amber tint — niet starten
   (groen) of beëindigen (rood), maar "klok opnieuw verankeren vanaf nu". */
.sa-clock-restart { background: rgba(245,158,11,0.15); color: #fbbf24; border-color: rgba(245,158,11,0.4); }
.sa-clock-restart:hover { background: rgba(245,158,11,0.26); }
.sa-pulse-off { animation: none; background: #94a3b8; opacity: .6; }
.sa-players-title { font-size: 11px; text-transform: uppercase; letter-spacing: .6px; color: var(--text-3); font-weight: 700; margin: 10px 0 6px; }
.sa-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; }
.sa-tile {
  background: var(--bg-2); border: 1px solid var(--border-2);
  border-radius: 10px; padding: 10px 12px; cursor: pointer;
  transition: transform .12s, border-color .12s, background .12s;
  display: flex; flex-direction: column; gap: 4px; min-width: 0;
}
.sa-tile:hover { background: rgba(78,161,255,.10); border-color: rgba(78,161,255,.4); transform: translateY(-1px); }
.sa-tile.draft { border-color: rgba(245,197,24,0.5); }
.sa-tile.linked { border-color: rgba(16,185,129,0.4); }
.sa-tile.linked::after { content: '● gekoppeld'; font-size: 10px; color: #34d399; font-weight: 600; letter-spacing: .3px; margin-top: 2px; }
.sa-tile-name { font-size: 13px; font-weight: 700; color: var(--text-1); }
/* s35dg-hotfix5: chip "— spelersnotitie" op eigen regel onder spelernaam, volledig leesbaar */
.sa-tile-snelnote-chip { display: block; font-size: 11px; font-weight: 500; color: #fbbf24; cursor: pointer; opacity: .85; margin-top: 2px; }
.sa-tile-snelnote-chip:hover { opacity: 1; text-decoration: underline; }
.sa-tile-meta { font-size: 11px; color: var(--text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sa-empty-players { font-size: 12px; color: var(--text-3); font-style: italic; padding: 6px 0; }
.sa-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }

/* ===== Live dashboard actieknoppen — twee stijlen ===== */
.sa-live-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 10px 18px;
  border-radius: 10px;
  border: none;
  font-family: inherit;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: filter .14s, transform .14s, box-shadow .14s;
  user-select: none;
  white-space: nowrap;
  flex: 1;
  justify-content: center;
  min-width: 140px;
}
.sa-live-btn:hover { filter: brightness(1.1); transform: translateY(-1px); }
.sa-live-btn:active { transform: translateY(0); filter: brightness(.96); }
.sa-live-btn-icon { font-size: 15px; line-height: 1; }
.sa-live-btn-label { letter-spacing: .01em; }

/* Gekoppelde speler(s) — blauw/teal (plan-besluit 1) */
.sa-live-btn-gk {
  background: linear-gradient(135deg, #2dd4bf 0%, #0e9bb0 100%);
  color: #022;
  box-shadow: 0 3px 12px rgba(14,155,176,.30);
}
.sa-gk-chev { font-size: 10px; margin-left: 2px; opacity: .8; }
.sa-gk-wrap { position: relative; flex: 1; min-width: 140px; display: flex; }
.sa-gk-wrap .sa-live-btn-gk { width: 100%; }
.sa-gk-menu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 400;
  min-width: 200px; background: #161b26; border: 1px solid #2a2f45;
  border-radius: 10px; padding: 6px; box-shadow: 0 8px 28px rgba(0,0,0,.65);
}
.sa-gk-item {
  display: block; width: 100%; text-align: left; background: none; border: none;
  color: #e2e8f0; font-family: inherit; font-size: 13.5px; font-weight: 600;
  padding: 9px 11px; border-radius: 7px; cursor: pointer;
}
.sa-gk-item:hover { background: rgba(45,212,191,.16); color: #5eead4; }

/* Opgevallen speler — paars/indigo */
.sa-live-btn-obs {
  background: linear-gradient(135deg, #7c5ff5 0%, #5b3ee0 100%);
  color: #fff;
  box-shadow: 0 3px 12px rgba(92,62,224,.35);
}
.sa-live-btn-obs.is-open {
  background: linear-gradient(135deg, #9b7fff 0%, #7c5ff5 100%);
  box-shadow: 0 0 0 2px rgba(124,95,245,.5);
}
/* sh-v359: Opgevallen speler dropdown (paars/indigo, zelfde patroon als gekoppelde) */
.sa-obs-wrap { position: relative; flex: 1; min-width: 140px; display: flex; }
.sa-obs-wrap .sa-live-btn-obs { width: 100%; }
.sa-obs-menu {
  position: absolute; top: calc(100% + 6px); left: 0; right: auto; z-index: 400;
  min-width: 210px; max-width: calc(100vw - 28px);
  background: #161b26; border: 1px solid #2a2f45;
  border-radius: 10px; padding: 6px; box-shadow: 0 8px 28px rgba(0,0,0,.65);
}
.sa-obs-item {
  display: flex; flex-direction: column; gap: 1px; width: 100%; text-align: left;
  background: none; border: none; color: #e2e8f0; font-family: inherit;
  font-size: 13.5px; font-weight: 600; padding: 9px 11px; border-radius: 7px; cursor: pointer;
}
.sa-obs-item:hover { background: rgba(124,95,245,.16); color: #b9a9ff; }
.sa-obs-item-sub { font-size: 11.5px; font-weight: 500; color: var(--text-3,#8b93a8); }
.sa-obs-item-new {
  color: #b9a9ff; border-bottom: 1px solid #2a2f45; border-radius: 0;
  margin-bottom: 3px; padding-bottom: 10px;
}
.sa-obs-item-new:hover { background: rgba(124,95,245,.22); }

/* Wedstrijdnotitie — rood/oranje */
.sa-live-btn-wstr {
  background: linear-gradient(135deg, #ff6b6b 0%, #e30613 100%);
  color: #fff;
  box-shadow: 0 3px 12px rgba(227,6,19,.30);
}
.sa-live-btn-wstr.is-open {
  background: linear-gradient(135deg, #ff8189 0%, #ff6b6b 100%);
  box-shadow: 0 0 0 2px rgba(255,107,107,.5);
}
/* ===== s35bl: inklapbare sa-card op mobiel ===== */
.sa-header { cursor: pointer; user-select: none; }
.sa-header .sa-collapse-chev {
  display: inline-block; margin-left: 8px; font-size: 11px;
  color: var(--text-3, #8a93ab); transition: transform .18s;
  align-self: center;
}
.sa-card.sa-collapsed .sa-header { margin-bottom: 0; }
.sa-card.sa-collapsed .sa-header .sa-collapse-chev { transform: rotate(-90deg); }
.sa-card.sa-collapsed .sa-header .sa-meta,
.sa-card.sa-collapsed .sa-players-title,
.sa-card.sa-collapsed .sa-tiles,
.sa-card.sa-collapsed .sa-snelnotities,
.sa-card.sa-collapsed .sa-wstrnotities,
.sa-card.sa-collapsed .sa-snel-form,
.sa-card.sa-collapsed .sa-snel-wstr-form,
.sa-card.sa-collapsed .sa-header-acts-row,
.sa-card.sa-collapsed .sa-actions { display: none !important; }
/* Mobile-only: open door klik, default collapsed */
@media (max-width: 900px) {
  .sa-card { padding: 12px 14px; }
  .sa-title { font-size: 14px; align-items: center; }
  /* s94: titel blijft op één regel; JS-autofit (fitSaTitle) schaalt de
     fontgrootte aan de beschikbare breedte zodat lange namen niet wrappen. */
  .sa-title-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  /* Header stackt: titel volle breedte boven, status-rij eronder links */
  .sa-header { flex-wrap: wrap; align-items: flex-start; }
  .sa-header > div:first-child { flex: 1 1 100% !important; }
  .sa-header-right { flex: 1 1 100%; align-items: flex-start; margin-top: 8px; }
  .sa-status-row { justify-content: flex-start; }
  .sa-header .sa-collapse-chev { position: absolute; top: 12px; right: 14px; }
  .sa-card .sa-header { position: relative; }
}
/* s35t: speler-autocomplete suggestie-strip in programma-modal */
.pp-suggestion-wrap {
  margin: 4px 0 14px;
  border-radius: 10px;
  background: rgba(78,161,255,0.06);
  border: 1px solid rgba(78,161,255,0.30);
  overflow: hidden;
}
/* s35x: sa-tile concept-state — oranje (verschilt van groen=linked en geel=draft) */
.sa-tile.concept {
  background: linear-gradient(135deg, rgba(249,115,22,0.18), rgba(249,115,22,0.08));
  border-color: rgba(249,115,22,0.55);
}
.sa-tile.concept .sa-tile-name::before {
  content: '● ';
  color: #fb923c;
}
/* s35ap (#2): sa-tile inline expand met voor-rapport + acties */
.sa-tile { position: relative; }
.sa-tile.open {
  grid-column: 1 / -1;
  background: var(--bg-card, #12151e);
  border-color: rgba(124,95,245,0.45);
  border-radius: 14px;
  cursor: default;
}
.sa-tile.open:hover { transform: none; }
.sa-tile-panel { display: none; }
.sa-tile.open .sa-tile-panel {
  display: block;
  margin-top: 0;
  padding: 14px 16px 16px;
  background: var(--bg-card, #12151e);
  border-top: 1px solid rgba(124,95,245,0.2);
  border-radius: 0 0 13px 13px;
}
/* Naam-balk van open tile: paars accent + obs-modal header stijl */
.sa-tile.open .sa-tile-name {
  color: #c4b0ff;
}
.sa-tile.linked.open {
  border-color: rgba(124,95,245,0.55);
}

/* s92: tile structured 8-field form — obs-modal stijl */
.sa-tile-terms {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 8px;
}
.sa-tile-terms .sa-snel-term-row { padding: 0; }
.sa-tile-terms .sa-snel-term-label {
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: var(--text-3, #8b93a8);
  margin-bottom: 4px;
}
.sa-tile-term-in {
  width: 100%; box-sizing: border-box;
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border2, #2d3242);
  border-radius: 8px;
  padding: 9px 12px;
  color: var(--text, #e5e9f5);
  font-family: inherit; font-size: 13.5px;
  outline: none;
  transition: border-color .15s, background .15s;
}
.sa-tile-term-in:focus {
  border-color: var(--gold, #f5c842);
  background: #0d1018;
}
.sa-tile-terms .sa-snel-term-row:focus-within .sa-snel-term-label {
  color: var(--gold, #f5c842);
}

/* s83: inline notitie textarea */
.sa-tile-snel-ta {
  width: 100%; box-sizing: border-box;
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border2, #2d3242);
  border-radius: 8px;
  padding: 9px 12px;
  color: var(--text, #e5e9f5);
  font-family: inherit; font-size: 13.5px; line-height: 1.5;
  resize: vertical; outline: none;
  transition: border-color .15s;
}
.sa-tile-snel-ta:focus { border-color: var(--gold, #f5c842); }
/* s92: header action buttons */
.sa-header-right {
  display: flex; flex-direction: column; align-items: flex-end; gap: 5px; flex-shrink: 0;
}
.sa-header-acts {
  display: flex; gap: 5px; flex-wrap: nowrap;
}
.sa-header-acts-row {
  display: flex; margin-top: 10px; flex-wrap: wrap; gap: 8px;
}
@media (max-width: 600px){
  .sa-header-acts-row { gap: 6px; display: grid; grid-template-columns: 1fr 1fr; }
  .sa-header-acts-row .sa-live-btn { min-width: 0; justify-content: center; flex: unset; }
  .sa-header-acts-row .sa-live-btn-wstr { grid-column: 1 / -1; }
  .sa-gk-wrap, .sa-obs-wrap { min-width: 0; }
}
.sa-header-acts .btn-ghost {
  font-size: 11px; padding: 4px 9px; white-space: nowrap;
}
/* Trash knop in wedstrijd-header */
.sa-del-prog-btn {
  background: none; border: none; cursor: pointer; font-size: 16px; line-height: 1;
  padding: 4px 6px; opacity: .45; flex-shrink: 0; color: #ef4444;
  transition: opacity .15s;
}
.sa-del-prog-btn:hover { opacity: 1; }
/* Trash kolom in db-tabel */
.db-del-col { width: 36px; text-align: center; padding: 0 4px !important; }
.db-del-btn {
  background: none; border: none; cursor: pointer; font-size: 15px; line-height: 1;
  padding: 4px 6px; opacity: .3; color: #ef4444; transition: opacity .15s;
}
.db-del-btn:hover { opacity: 1; }
/* s92: vandaag banner collapsible */
.dvb-header { cursor: pointer; user-select: none; justify-content: space-between; }
.dvb-collapse-btn {
  background: none; border: none; color: #e30613; cursor: pointer;
  font-size: 13px; padding: 0; line-height: 1;
  transition: transform .2s; flex-shrink: 0;
}
.dash-vandaag-banner.dvb-collapsed .dvb-body { display: none !important; }
.dash-vandaag-banner.dvb-collapsed .dvb-collapse-btn { transform: rotate(-90deg); }
/* s92: opgeslagen notities collapsible */
.sa-saved-sns-body { }
.sa-saved-sns.sn-collapsed .sa-saved-sns-body { display: none; }
.sa-saved-sns-chev { transition: transform .2s; }
.sa-saved-sns.sn-collapsed .sa-saved-sns-chev { transform: rotate(-90deg); }
.sa-tile-save-status {
  font-size: 11px; color: var(--text-3, #8b93a8);
  text-align: right; height: 15px; margin-top: 4px;
  min-height: 15px; font-style: italic;
}
.sa-tile-acts-row {
  display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px;
}
.sa-tile-acts-row button {
  flex: 1;
  padding: 9px 12px; font-size: 12.5px; font-weight: 600;
  border-radius: 8px;
  border: 1px solid var(--border2, #2d3242);
  background: var(--bg-input, #0d1018);
  color: var(--text, #e5e9f5);
  cursor: pointer; transition: border-color .12s, color .12s;
  min-width: 90px; text-align: center;
}
.sa-tile-acts-row button:hover { border-color: var(--gold, #f5c842); color: var(--gold, #f5c842); }
.sa-tile-opvallend-btn { order: 0; }
.sa-tile-opvallend-btn.is-opvallend {
  background: rgba(245,197,24,0.10);
  border-color: #f5c518; color: #f5c518;
}
.sa-tile-prof-btn {
  order: 1;
  background: linear-gradient(135deg, #7c5ff5 0%, #5b3ee0 100%);
  border-color: transparent; color: #fff;
}
.sa-tile-prof-btn:hover { opacity: .88; color: #fff !important; border-color: transparent !important; }
/* s83: opvallend-state visual op tile */
.sa-tile.tile-opvallend { border-color: rgba(245,197,24,0.45); }
.sa-tile-star { margin-left: 4px; font-size: 12px; }

/* s35ca-1: .sa-tile-voorrap CSS verwijderd */
.sa-tile-acts {
  display: flex; gap: 6px; flex-wrap: wrap;
}
.sa-tile-acts button {
  padding: 6px 11px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 7px;
  border: 1px solid var(--border-2);
  background: var(--bg-2);
  color: var(--text-1);
  cursor: pointer;
  transition: .12s;
}
.sa-tile-acts button:hover { border-color: #4ea1ff; color: #4ea1ff; }
.sa-tile-acts button.primary {
  background: linear-gradient(135deg, #ff8189 0%, #e30613 55%, #f5c518 100%);
  border-color: transparent;
  color: white;
}
.sa-tile-acts button.primary:hover { color: white; opacity: .92; }
.sa-tile-close {
  position: absolute; top: 8px; right: 8px;
  width: 22px; height: 22px; border-radius: 50%;
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--border-2);
  color: var(--text-3);
  font-size: 14px; line-height: 1;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer;
}
.sa-tile-close:hover { color: var(--text-1); background: rgba(255,255,255,0.12); }
.sa-tile-concept-tag {
  display: inline-block;
  font-size: 10px; font-weight: 700; letter-spacing: .5px;
  text-transform: uppercase;
  background: rgba(249,115,22,0.25); color: #fed7aa;
  border: 1px solid rgba(249,115,22,0.50);
  padding: 2px 7px; border-radius: 10px;
  margin-top: 4px;
}
/* DEEL 2: gekoppeld-badge (blauw/teal) op live-tiles, ook na indienen */
.sa-tile-linked-tag {
  display: inline-block;
  font-size: 10px; font-weight: 700; letter-spacing: .5px;
  text-transform: uppercase;
  background: rgba(13,148,136,0.22); color: #99f6e4;
  border: 1px solid rgba(13,148,136,0.55);
  padding: 2px 7px; border-radius: 10px;
  margin-top: 4px;
}
.db-concept-badge {
  display: inline-block;
  font-size: 10px; font-weight: 700; letter-spacing: .5px;
  text-transform: uppercase;
  background: rgba(249,115,22,0.22); color: #fed7aa;
  border: 1px solid rgba(249,115,22,0.50);
  padding: 2px 7px; border-radius: 10px;
  margin-left: 8px; vertical-align: middle;
}
/* s35x: history-knop in scouting-banner */
.scouting-history-btn {
  font-size: 11.5px; padding: 5px 11px;
  background: rgba(52,211,153,0.16);
  border: 1px solid rgba(52,211,153,0.45);
  color: #6ee7b7; border-radius: 14px;
  font-weight: 700; letter-spacing: .3px;
  cursor: pointer; margin-top: 4px;
}
.scouting-history-btn:hover {
  background: rgba(52,211,153,0.28); color: #d1fae5;
}
.pp-sug-title {
  font-size: 10.5px; text-transform: uppercase;
  letter-spacing: .6px; color: #93c5fd; font-weight: 700;
  padding: 8px 12px 4px;
}
.pp-sug-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; padding: 9px 12px; cursor: pointer;
  border-top: 1px solid rgba(78,161,255,0.15);
  transition: background .12s;
}
.pp-sug-row:hover { background: rgba(78,161,255,0.14); }
.pp-sug-row:first-of-type { border-top: 1px solid rgba(78,161,255,0.20); }
.pp-sug-name {
  font-size: 13.5px; font-weight: 700; color: var(--text-1);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  min-width: 0; flex: 1;
}
.pp-sug-meta {
  font-size: 11px; color: var(--text-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 55%;
}
.pp-sug-apply {
  font-size: 11px; padding: 4px 10px;
  background: rgba(78,161,255,0.20);
  border: 1px solid rgba(78,161,255,0.40);
  color: #93c5fd; border-radius: 14px;
  font-weight: 700; letter-spacing: .3px;
}
.pp-sug-row:hover .pp-sug-apply {
  background: rgba(78,161,255,0.30); color: #dbeafe;
}
/* Film-gradient text utility — same DNA as the intro wordmark */
.film-text {
  background: var(--film-grad);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.login-title {
  font-size: 30px; font-weight: 800; letter-spacing: -.5px;
  text-align: center;
}
.login-sub {
  color: var(--text-3); font-size: 12px;
  letter-spacing: 3px; text-transform: uppercase;
  margin-top: 6px; margin-bottom: 0;
  text-align: center;
  font-weight: 500;
}
.login-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--border-2), transparent);
  margin: 22px 0 22px 0;
}
/* s35bc: korte intro in login-card (zichtbaar op mobile) */
.login-card-intro {
  margin: 4px 0 22px;
  padding: 0;
  text-align: center;
}
.lci-pillars {
  display: flex; gap: 10px; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(255,255,255,0.82);
  margin-bottom: 0;
}
.lci-pillars i { font-style: normal; color: var(--primary); opacity: .9; }
.lci-blurb {
  font-size: 12.5px; line-height: 1.5;
  color: var(--text-3); font-weight: 400;
}
.login-field { margin-bottom: 14px; }
.login-field label { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .8px; color: var(--text-3); margin-bottom: 6px; }
.login-input {
  width: 100%; padding: 12px 14px;
  background: #0d121b; border: 1px solid var(--border-2); border-radius: 8px;
  color: var(--text); outline: none; transition: border-color .15s;
}
.login-input:focus { border-color: var(--primary); }
.login-btn {
  width: 100%; padding: 12px 14px; margin-top: 8px;
  background: var(--primary); color: white; border: none; border-radius: 8px;
  font-weight: 600; letter-spacing: .3px;
  transition: background .15s;
}
.login-btn:hover {
  background: var(--film-grad);
  box-shadow: 0 12px 32px rgba(227,6,19,0.45), 0 0 22px rgba(78,161,255,0.12);
}
.login-btn:disabled { opacity: .5; cursor: not-allowed; }
.login-error {
  color: var(--red); font-size: 12px; min-height: 16px; margin-top: 10px; text-align: center;
}
.login-footer {
  margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border);
  font-size: 11px; color: var(--text-3); text-align: center;
}
.login-legal {
  margin-top: 18px;
  display: flex; gap: 10px; align-items: center; justify-content: center;
  font-size: 11px; color: var(--text-3);
  letter-spacing: .3px;
}
.login-legal a {
  color: var(--text-3);
  text-decoration: none;
  transition: color .15s;
}
.login-legal a:hover { color: var(--text); text-decoration: underline; }
.login-legal span { opacity: .5; }
.login-toggle {
  margin-top: 14px; text-align: center; font-size: 12px; color: var(--text-3);
}
.login-toggle a { cursor: pointer; }
.login-toggle a:hover { text-decoration: underline; }

/* ---------- APP SHELL ---------- */
#app { display: none; min-height: 100vh; }
.app-grid { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; }

/* Sidebar */
.sidebar {
  background: var(--bg-2);
  border-right: 1px solid var(--border);
  padding: 14px 12px;
  display: flex; flex-direction: column;
  /* v70h-s3: hard fixed — altijd in beeld, scrolt nooit los van de pagina */
  position: fixed; top: 0; left: 0;
  width: 240px; height: 100vh; max-height: 100vh;
  /* s35bn: nav krijgt eigen scroll, sidebar zelf overflow hidden
     zodat brand+profile gepinned blijven en alleen het middenblok scrolt. */
  overflow: hidden;
  overscroll-behavior: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
  z-index: 50;
}
.sidebar::-webkit-scrollbar { width: 0; height: 0; display: none; }
.brand {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 4px 4px 10px 4px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 10px;
  text-align: center;
  flex-shrink: 0;
}
.brand[role="button"] { cursor: pointer; transition: transform .15s ease, opacity .15s ease; }
.brand[role="button"]:hover { transform: translateY(-1px); opacity: 0.92; }
.brand[role="button"]:active { transform: translateY(0); }
.brand-mark {
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  filter: drop-shadow(0 4px 12px rgba(227,6,19,.45));
  flex-shrink: 0;
}
.brand-mark svg { width: 100%; height: 100%; display: block; }
.brand-text { font-weight: 800; font-size: 16px; letter-spacing: .3px; line-height: 1.1; }
.brand-sub { font-size: 10px; color: var(--text-3); letter-spacing: 1.2px; text-transform: uppercase; font-weight: 600; margin-top: 2px; }

/* s35bn: nav krijgt eigen scroll-zone tussen brand en profile.
   Verbergt zijn scrollbar net zoals de sidebar dat deed. */
.nav { display: flex; flex-direction: column; gap: 1px; min-height: 0; flex: 1 1 0; overflow-y: auto; scrollbar-width: none; }
.nav::-webkit-scrollbar { width: 0; height: 0; display: none; }
.nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 5px 10px; border-radius: 7px; /* compacter: meer nav-items in beeld */
  color: var(--text-2); border: 1px solid transparent;
  background: transparent;
  text-align: left; width: 100%;
  transition: all .15s;
  font-size: 13.5px;
}
.nav-item:hover { background: var(--panel); color: var(--text); }
.nav-item.active { background: var(--panel-2); color: var(--text); border-color: var(--border-2); }
.nav-item.active .nav-icon { color: var(--primary); }
.nav-icon { width: 18px; height: 18px; opacity: .9; }

.scout-profile {
  /* s35bn: margin-top:auto weg — nav (flex:1 1 0) neemt nu de ruimte. */
  margin-top: 8px;
  padding: 10px;                            /* s35bn: 14->10 top voor 100% zoom */
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 10px;
  flex-shrink: 0;
  position: relative;
}
/* sh-v360 — naam krijgt volle breedte op regel 1; sync-dot ernaast; knoppen op eigen regel */
.scout-profile-row {
  display: flex; align-items: center; gap: 10px;
}
.scout-profile-id {
  flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px;
}
.scout-profile-id .scout-name {
  white-space: normal; overflow: hidden; text-overflow: clip;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
  line-height: 1.2; word-break: break-word;
}
.scout-profile-actions {
  display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px;
}
.scout-icon-btn {
  flex: 1 1 calc(50% - 4px); min-width: 0; height: 34px;
  display: flex; align-items: center; justify-content: center; gap: 5px;
  background: transparent; border: 1px solid var(--border-2);
  border-radius: 8px; color: var(--text-3); cursor: pointer;
  font-size: 12px; font-weight: 600; font-family: inherit;
  transition: all .15s;
}
.scout-icon-btn-label { white-space: nowrap; }
.scout-icon-btn:hover { color: var(--text); border-color: var(--primary); background: var(--bg-2, #11151c); }
.scout-icon-btn svg { flex-shrink: 0; }
#sidebar-feedback-btn { order: 3; }
/* v70h-s30: subtiele scheidingslijn tussen nav-Tips en profielblok */
.scout-profile::before {
  content: '';
  position: absolute;
  top: -10px; left: 8px; right: 8px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--border-2), transparent);
  pointer-events: none;
}
.scout-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: linear-gradient(135deg, #2a3548, #1a2332);
  border: 1px solid var(--border-2);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; color: var(--text);
  margin-bottom: 10px;
}
.scout-avatar-img {
  width: 36px; height: 36px; border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--primary);
  box-shadow: 0 2px 10px rgba(11, 196, 132, 0.25);
  margin-bottom: 0;
  display: block;
}
/* v70h-s33: initialen-fallback voor avatar */
.scout-avatar-wrap {
  display: flex; justify-content: center;
  margin-bottom: 0;
  flex-shrink: 0;
}
.scout-avatar-initials {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 2px solid var(--primary);
  box-shadow: 0 2px 10px rgba(11, 196, 132, 0.25);
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #fff;
  font-weight: 800; font-size: 14px;
  letter-spacing: .5px;
  display: flex; align-items: center; justify-content: center;
  user-select: none;
}
.settings-photo-wrap {
  position: relative;
  width: 64px; height: 64px;
  flex-shrink: 0;
}
.settings-photo-initials {
  width: 64px; height: 64px;
  border-radius: 50%;
  border: 2px solid var(--primary);
  box-shadow: 0 4px 14px rgba(229,57,53,.20);
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #fff;
  font-weight: 800; font-size: 22px;
  letter-spacing: 1px;
  display: flex; align-items: center; justify-content: center;
  user-select: none;
}
.scout-name { font-weight: 600; font-size: 13px; }
.scout-meta { font-size: 11px; color: var(--text-3); margin-top: 2px; line-height: 1.5; }
.scout-meta span { color: var(--secondary); font-weight: 600; }
.scout-club { margin-top: 8px; }
.scout-club-badge {
  display: inline-block;
  background: linear-gradient(135deg, rgba(11, 196, 132, 0.18), rgba(11, 196, 132, 0.06));
  border: 1px solid rgba(11, 196, 132, 0.35);
  color: var(--text);
  font-size: 12px;
  font-weight: 700;
  padding: 5px 10px;
  border-radius: 999px;
  letter-spacing: 0.2px;
}
.scout-club-badge .club-sep { color: var(--primary); margin: 0 2px; }
.scout-club-prev { font-size: 10px; color: var(--text-3); margin-top: 5px; }
/* v70h-s30: .scout-email verwijderd — adres staat nu in Instellingen-venster */
/* s35cr: juridische footer-links in sidebar */
.sidebar-legal-links {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  font-size: 11px;
  text-align: center;
  color: var(--text-3, #6b7280);
  line-height: 1.5;
}
.sidebar-legal-links a {
  color: var(--text-3, #9aa3b7);
  text-decoration: none;
  transition: color .15s ease;
}
.sidebar-legal-links a:hover { color: var(--accent, #e30613); text-decoration: underline; }
.sidebar-legal-links .legal-sep { margin: 0 4px; opacity: .5; }
.logout-btn {
  margin-top: 10px; width: 100%;
  background: transparent; color: var(--text-3); border: 1px solid var(--border-2);
  padding: 6px; border-radius: 6px; font-size: 11px;
  transition: all .15s;
}
.logout-btn:hover { color: var(--text); border-color: var(--primary); }

.sync-indicator {
  display: flex; align-items: center; gap: 5px;
  font-size: 10px; color: var(--text-3); margin-top: 0;
}
.sync-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); }
.sync-dot.syncing { background: var(--orange); animation: pulse 1s infinite; }
.sync-dot.offline { background: var(--red); }
@keyframes pulse { 0%,100%{opacity:1;} 50%{opacity:.3;} }

/* s35cu: demo-omgeving banner (klein, duidelijk, niet dominant) */
.demo-strip {
  display: none; /* JS: __shApplyDemoChrome zet display:flex bij demo-account */
  align-items: center; justify-content: center; gap: 8px;
  background: linear-gradient(90deg, rgba(243,156,18,.20), rgba(243,156,18,.10));
  border-bottom: 1px solid rgba(243,156,18,.45);
  color: #f5b042;
  font-size: 11.5px; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase;
  padding: 5px 12px;
  position: sticky; top: 0; z-index: 50;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.demo-strip-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: #f39c12;
  box-shadow: 0 0 0 0 rgba(243,156,18,.6);
  animation: demoStripPulse 2.2s infinite;
  flex-shrink: 0;
}
@keyframes demoStripPulse {
  0%   { box-shadow: 0 0 0 0   rgba(243,156,18,.55); }
  70%  { box-shadow: 0 0 0 6px rgba(243,156,18,0); }
  100% { box-shadow: 0 0 0 0   rgba(243,156,18,0); }
}
@media (max-width: 760px){
  .demo-strip { font-size: 10.5px; letter-spacing: .08em; padding: 4px 10px; }
}

/* Main */
.main { padding: 24px 32px 48px 32px; max-width: 1500px; grid-column: 2; min-width: 0; }
.topbar {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 22px;
}
.page-title { font-size: 22px; font-weight: 700; letter-spacing: -.2px; }
.page-sub { font-size: 12px; color: var(--text-3); margin-top: 4px; }
.btn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 14px; border-radius: 8px;
  background: var(--panel); border: 1px solid var(--border-2); color: var(--text);
  transition: all .15s; font-weight: 500;
}
.btn:hover { border-color: var(--primary); }
.btn-primary {
  /* s35ba: gradient forceren met !important — inline styles & varianten overrulen */
  background: linear-gradient(135deg, #ff8189 0%, #e30613 55%, #f5c518 100%) !important;
  border-color: transparent !important;
  color: white !important;
  box-shadow: 0 2px 8px rgba(227,6,19,.28);
  transition: background 0.25s, border-color 0.25s, box-shadow 0.25s, transform 0.15s, opacity 0.15s, filter .15s;
}
.btn-primary:hover { filter: brightness(1.08); transform: translateY(-1px); }
.btn-primary:disabled { opacity: 0.55 !important; cursor: not-allowed; }
/* s35ba: Route knoppen krijgen ook de gradient */
.td-actions .btn-route,
.btn-route-prog {
  background: linear-gradient(135deg, #ff8189 0%, #e30613 55%, #f5c518 100%) !important;
  border-color: transparent !important;
  color: #fff !important;
}
.btn-primary:hover {
  background: var(--film-grad);
  border-color: transparent;
  box-shadow: 0 10px 28px rgba(227,6,19,0.42), 0 0 20px rgba(78,161,255,0.10);
  transform: translateY(-1px);
}
.btn-ghost { background: transparent; }
.btn-sm { padding: 6px 10px; font-size: 12px; }
/* s35bk-3: btn-danger uses red->yellow gradient like btn-primary */
.btn-danger {
  background: linear-gradient(135deg, #ff8189 0%, #e30613 55%, #f5c518 100%) !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(227,6,19,.28);
}
.btn-danger:hover { filter: brightness(1.08); box-shadow: 0 3px 10px rgba(227,6,19,.36); }

/* ---------- VIEWS — Apple-style transitions (pronounced) ---------- */
.view { display: none; }
.view.active {
  display: block;
  animation: appleViewIn .55s cubic-bezier(.16,1,.3,1) both;
  /* v70h-s12: will-change weggehaald — creeert containing block op iOS Safari
     waardoor position:fixed in children niet t.o.v. viewport werkt. */
}
@keyframes appleViewIn {
  0%   { opacity: 0; transform: translateY(28px) scale(.98); filter: blur(10px); }
  60%  { opacity: 1; }
  /* v70h-s12: eindframe 'none' i.p.v. translateY(0)/blur(0) — visueel identiek,
     maar GEEN containing block, zodat sticky save-knop weer t.o.v. viewport
     gepositioneerd wordt en netjes boven de bottom-nav blijft hangen. */
  100% { opacity: 1; transform: none; filter: none; }
}
.view.active > *:nth-child(1) { opacity: 0; animation: appleChildIn .5s cubic-bezier(.16,1,.3,1) .05s both; }
.view.active > *:nth-child(2) { opacity: 0; animation: appleChildIn .5s cubic-bezier(.16,1,.3,1) .11s both; }
.view.active > *:nth-child(3) { opacity: 0; animation: appleChildIn .5s cubic-bezier(.16,1,.3,1) .17s both; }
.view.active > *:nth-child(4) { opacity: 0; animation: appleChildIn .5s cubic-bezier(.16,1,.3,1) .23s both; }
.view.active > *:nth-child(5) { opacity: 0; animation: appleChildIn .5s cubic-bezier(.16,1,.3,1) .28s both; }
.view.active > *:nth-child(6) { opacity: 0; animation: appleChildIn .5s cubic-bezier(.16,1,.3,1) .33s both; }
.view.active > *:nth-child(7) { opacity: 0; animation: appleChildIn .5s cubic-bezier(.16,1,.3,1) .37s both; }
@keyframes appleChildIn {
  0%   { opacity: 0; transform: translateY(28px); filter: blur(8px); }
  100% { opacity: 1; transform: none;             filter: none; }
}

/* Tabellen — rij-voor-rij cascade-in */
.view.active tbody tr {
  opacity: 0;
  animation: appleRowIn .5s cubic-bezier(.16,1,.3,1) both;
}
.view.active tbody tr:nth-child(1)  { animation-delay: .30s; }
.view.active tbody tr:nth-child(2)  { animation-delay: .36s; }
.view.active tbody tr:nth-child(3)  { animation-delay: .42s; }
.view.active tbody tr:nth-child(4)  { animation-delay: .48s; }
.view.active tbody tr:nth-child(5)  { animation-delay: .54s; }
.view.active tbody tr:nth-child(6)  { animation-delay: .60s; }
.view.active tbody tr:nth-child(7)  { animation-delay: .66s; }
.view.active tbody tr:nth-child(8)  { animation-delay: .71s; }
.view.active tbody tr:nth-child(9)  { animation-delay: .76s; }
.view.active tbody tr:nth-child(10) { animation-delay: .80s; }
.view.active tbody tr:nth-child(11) { animation-delay: .84s; }
.view.active tbody tr:nth-child(12) { animation-delay: .88s; }
.view.active tbody tr:nth-child(13) { animation-delay: .91s; }
.view.active tbody tr:nth-child(14) { animation-delay: .94s; }
.view.active tbody tr:nth-child(15) { animation-delay: .97s; }
.view.active tbody tr:nth-child(16) { animation-delay: 1.00s; }
.view.active tbody tr:nth-child(17) { animation-delay: 1.03s; }
.view.active tbody tr:nth-child(18) { animation-delay: 1.05s; }
.view.active tbody tr:nth-child(19) { animation-delay: 1.07s; }
.view.active tbody tr:nth-child(20) { animation-delay: 1.09s; }
.view.active tbody tr:nth-child(n+21) { animation-delay: 1.10s; }
@keyframes appleRowIn {
  0%   { opacity: 0; transform: translateX(-18px) translateY(10px); filter: blur(6px); }
  60%  { opacity: 1; }
  100% { opacity: 1; transform: none;                               filter: none; }
}

/* Wedstrijdkaarten / dashboard cards — cascade-in */
.view.active .match-card,
.view.active .card,
.view.active .stat-card,
.view.active .kpi-card {
  opacity: 0;
  animation: appleCardCascade .55s cubic-bezier(.16,1,.3,1) both;
}
.view.active .match-card:nth-child(1),
.view.active .card:nth-child(1),
.view.active .stat-card:nth-child(1),
.view.active .kpi-card:nth-child(1) { animation-delay: .28s; }
.view.active .match-card:nth-child(2),
.view.active .card:nth-child(2),
.view.active .stat-card:nth-child(2),
.view.active .kpi-card:nth-child(2) { animation-delay: .37s; }
.view.active .match-card:nth-child(3),
.view.active .card:nth-child(3),
.view.active .stat-card:nth-child(3),
.view.active .kpi-card:nth-child(3) { animation-delay: .46s; }
.view.active .match-card:nth-child(4),
.view.active .card:nth-child(4),
.view.active .stat-card:nth-child(4),
.view.active .kpi-card:nth-child(4) { animation-delay: .55s; }
.view.active .match-card:nth-child(5),
.view.active .card:nth-child(5),
.view.active .stat-card:nth-child(5),
.view.active .kpi-card:nth-child(5) { animation-delay: .63s; }
.view.active .match-card:nth-child(6),
.view.active .card:nth-child(6),
.view.active .stat-card:nth-child(6),
.view.active .kpi-card:nth-child(6) { animation-delay: .70s; }
.view.active .match-card:nth-child(7),
.view.active .card:nth-child(7),
.view.active .stat-card:nth-child(7),
.view.active .kpi-card:nth-child(7) { animation-delay: .76s; }
.view.active .match-card:nth-child(8),
.view.active .card:nth-child(8),
.view.active .stat-card:nth-child(8),
.view.active .kpi-card:nth-child(8) { animation-delay: .82s; }
.view.active .match-card:nth-child(n+9),
.view.active .card:nth-child(n+9),
.view.active .stat-card:nth-child(n+9),
.view.active .kpi-card:nth-child(n+9) { animation-delay: .88s; }
@keyframes appleCardCascade {
  0%   { opacity: 0; transform: translateY(34px) scale(.94); filter: blur(10px); }
  60%  { opacity: 1; }
  100% { opacity: 1; transform: none;                        filter: none; }
}

/* Shimmer-band over view bij activatie — geeft een 'video'-gevoel */
.view.active::before {
  content: '';
  position: absolute;
  top: 0; left: -30%;
  width: 30%; height: 100%;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(227,6,19,.06) 30%,
    rgba(255,42,58,.10) 50%,
    rgba(227,6,19,.06) 70%,
    transparent 100%);
  filter: blur(20px);
  pointer-events: none;
  z-index: 0;
  animation: appleShimmerSweep .85s cubic-bezier(.16,1,.3,1) both;
}
.view { position: relative; }
.view.active > * { position: relative; z-index: 1; }
@keyframes appleShimmerSweep {
  0%   { left: -30%; opacity: 0; }
  20%  { opacity: 1; }
  80%  { opacity: 1; }
  100% { left: 130%; opacity: 0; }
}

/* Glow accent op de eerste kaart/rij voor visuele focus */
.view.active tbody tr:nth-child(1),
.view.active .match-card:nth-child(1),
.view.active .card:nth-child(1),
.view.active .stat-card:nth-child(1) {
  animation: appleRowIn .5s cubic-bezier(.16,1,.3,1) .30s both, appleAccentGlow 1.3s cubic-bezier(.16,1,.3,1) .45s both;
}
@keyframes appleAccentGlow {
  0%   { box-shadow: 0 0 0 rgba(227,6,19,0); }
  30%  { box-shadow: 0 0 32px rgba(227,6,19,.25); }
  100% { box-shadow: 0 0 0 rgba(227,6,19,0); }
}

/* Topbar / toolbar / filters in elke view — apart laten invliegen voor extra feel */
.view.active .topbar,
.view.active .toolbar,
.view.active .filters,
.view.active .view-header {
  animation: appleToolbarIn .5s cubic-bezier(.16,1,.3,1) both;
}
@keyframes appleToolbarIn {
  0%   { opacity: 0; transform: translateY(-12px); filter: blur(6px); }
  100% { opacity: 1; transform: none;              filter: none; }
}

@media (prefers-reduced-motion: reduce) {
  .view.active,
  .view.active > *,
  .view.active tbody tr,
  .view.active .match-card,
  .view.active .card,
  .view.active .stat-card,
  .view.active .kpi-card,
  .view.active .topbar,
  .view.active .toolbar,
  .view.active .filters,
  .view.active .view-header {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
}

/* Nav item — gladde hover en actieve indicator */
.nav-item { position: relative; transition: background .25s cubic-bezier(.16,1,.3,1), color .25s, transform .15s cubic-bezier(.16,1,.3,1); }
.nav-item:active { transform: scale(.985); }
.nav-item.active::before {
  content: '';
  position: absolute; left: 0; top: 12%; bottom: 12%;
  width: 3px; border-radius: 0 3px 3px 0;
  background: var(--primary);
  animation: appleIndicator .55s cubic-bezier(.16,1,.3,1) both;
}
@keyframes appleIndicator {
  0%   { transform: scaleY(0); opacity: 0; }
  100% { transform: scaleY(1); opacity: 1; }
}

/* Buttons — Apple-style press feedback */
.btn { transition: background .25s cubic-bezier(.16,1,.3,1), border-color .25s, transform .15s cubic-bezier(.16,1,.3,1); }
.btn:active { transform: scale(.97); }
.login-btn { transition: background .25s cubic-bezier(.16,1,.3,1), transform .15s cubic-bezier(.16,1,.3,1); }
.login-btn:active { transform: scale(.98); }

/* Respecteer reduced-motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* Dashboard */
.kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 24px; }
.kpi-card {
  background: var(--panel);
  background-image: radial-gradient(120% 140% at 0% 0%, rgba(227,6,19,.07), transparent 55%);
  border: 1px solid var(--border); border-radius: var(--radius);
  padding: 16px 18px; position: relative; overflow: hidden;
  cursor: pointer;
  transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.kpi-card:hover {
  transform: translateY(-2px);
  border-color: var(--border-2);
  box-shadow: 0 10px 28px rgba(0,0,0,.3);
}
.kpi-card.green { background-image: radial-gradient(120% 140% at 0% 0%, rgba(34,197,94,.08), transparent 55%); }
.kpi-card.yellow { background-image: radial-gradient(120% 140% at 0% 0%, rgba(245,197,66,.08), transparent 55%); }
.kpi-card.blue { background-image: radial-gradient(120% 140% at 0% 0%, rgba(78,161,255,.08), transparent 55%); }
.kpi-card::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--primary);
}
.kpi-card.green::before { background: var(--green); }
.kpi-card.yellow::before { background: var(--secondary); }
.kpi-card.blue::before { background: var(--accent); }
.kpi-label { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--text-3); }
.kpi-value { font-size: 28px; font-weight: 700; margin-top: 4px; letter-spacing: -.5px; }
.kpi-sub { font-size: 12px; color: var(--text-2); margin-top: 4px; }

.row-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.panel {
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 18px 20px;
  min-width: 0;
}
.panel-title {
  font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-2); margin-bottom: 14px;
  display: flex; align-items: center; justify-content: space-between;
}
.panel-title-icon { color: var(--primary); }

/* Recent players list */
.recent-list { display: flex; flex-direction: column; gap: 8px; }
.recent-item {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 12px;
  background: var(--bg-3); border-radius: 8px;
  border: 1px solid var(--border);
  cursor: pointer; transition: all .15s;
}
.recent-item:hover { border-color: var(--primary); background: var(--panel-2); }
.recent-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: linear-gradient(135deg, #2a3548, #1a2332);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 13px;
}
.recent-info { flex: 1; min-width: 0; }
.recent-name { font-weight: 600; font-size: 13px; }
.recent-meta { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.recent-grades { display: flex; gap: 6px; }

/* Grade chips */
.grade {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 28px; height: 24px; padding: 0 8px; border-radius: 5px;
  font-weight: 700; font-size: 12px; letter-spacing: .2px;
}
.grade.A { background: var(--grade-a); color: #062b12; }
.grade.B { background: var(--grade-b); color: #1a2806; }
.grade.C { background: var(--grade-c); color: #2a1a04; }
.grade.D { background: var(--grade-d); color: #2a0606; }
/* Potentieel-niveau (.grade.outline) moet dezelfde volle kleur tonen als
   huidig-niveau (.grade) — Marcel's expliciete wens. */
.grade.outline.A { background: var(--grade-a); color: #062b12; border-color: var(--grade-a); }
.grade.outline.B { background: var(--grade-b); color: #1a2806; border-color: var(--grade-b); }
.grade.outline.C { background: var(--grade-c); color: #2a1a04; border-color: var(--grade-c); }
.grade.outline.D { background: var(--grade-d); color: #2a0606; border-color: var(--grade-d); }
.grade-label {
  font-size: 9px; text-transform: uppercase; letter-spacing: .8px;
  color: var(--text-3); margin-right: 4px; align-self: center;
}

/* s35cp (vervangt s35co): "groter" hoort bij Spelersdatabase, niet
   dashboard. Dashboard-chips weer compact, Spelersdatabase-table-chips
   en advies-kolom flink groter zodat ze "popt" (was Marcel's feedback). */
#db-table-wrap td .grade {
  min-width: 40px;
  height: 32px;
  padding: 0 12px;
  font-size: 15px;
  border-radius: 7px;
  letter-spacing: .4px;
}
#db-table-wrap td .grade.outline { border-width: 2.5px; }
/* Advies-kolom (8e kolom: check, naam, pos, club, elftal, huidig, pot, advies) */
#db-table-wrap table td:nth-child(8) {
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .15px;
}
/* Iets meer ademruimte rond de grotere chips in de rij */
#db-table-wrap tbody td { padding-top: 10px; padding-bottom: 10px; }

/* sh-v357: in tabel-modus (>720px) kan de volledige tabel breder zijn dan de
   viewport (bv. opengeklapte foldable ~884px of tablet-portret 768px). Maak de
   wrapper horizontaal scrollbaar zodat de rechterkolommen bereikbaar blijven
   i.p.v. afgekapt door #view-database (overflow-x:hidden). De ≤720px card-view
   zet dit hieronder weer op visible. */
#db-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }

@media (max-width: 720px) {
  #db-table-wrap td .grade { min-width: 34px; height: 28px; font-size: 13px; padding: 0 10px; }
  #db-table-wrap table td:nth-child(8) { font-size: 13px; }

  /* Mobile card-view: zet tabel om in vertikaal stapelende kaarten */
  #db-table-wrap { overflow: visible; }
  #db-table-wrap > table,
  #db-table-wrap > table > tbody { display: block; width: 100%; }
  #db-table-wrap > table > thead { display: none; }
  #db-table-wrap tbody tr {
    display: grid;
    grid-template-columns: 26px 1fr auto auto auto;
    grid-template-areas:
      "ck name name name date"
      "ck pos club club elf"
      "ck huidig pot adv adv";
    gap: 6px 10px;
    padding: 12px 14px;
    margin-bottom: 10px;
    background: var(--panel);
    border: 1px solid var(--border-2);
    border-radius: 14px;
    box-shadow: 0 1px 2px rgba(0,0,0,.04);
    align-items: center;
  }
  #db-table-wrap tbody tr.db-row-checked {
    border-color: var(--accent, #2d6cdf);
    box-shadow: 0 0 0 2px rgba(45,108,223,.18);
  }
  #db-table-wrap tbody td {
    padding: 0;
    border: none;
    background: transparent;
    white-space: normal;
  }
  #db-table-wrap tbody td:nth-child(1) { grid-area: ck; align-self: start; padding-top: 4px; }
  #db-table-wrap tbody td:nth-child(2) { grid-area: name; font-size: 15px; font-weight: 700; min-width: 0; }
  #db-table-wrap tbody td:nth-child(3) {
    grid-area: pos;
    font-size: 12px;
    color: var(--text-2);
    font-weight: 600;
  }
  #db-table-wrap tbody td:nth-child(4) {
    grid-area: club;
    font-size: 12px;
    color: var(--text-2);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  #db-table-wrap tbody td:nth-child(5) {
    grid-area: elf;
    font-size: 11px;
    color: var(--text-3);
    font-weight: 700;
    text-align: right;
  }
  #db-table-wrap tbody td:nth-child(6) {
    grid-area: huidig;
    padding-top: 8px;
    border-top: 1px dashed var(--border-2);
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: var(--text-3);
  }
  #db-table-wrap tbody td:nth-child(6)::before {
    content: "Nu";
    opacity: .65;
    margin-right: 2px;
    font-weight: 600;
  }
  #db-table-wrap tbody td:nth-child(7) {
    grid-area: pot;
    padding-top: 8px;
    border-top: 1px dashed var(--border-2);
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: var(--text-3);
  }
  #db-table-wrap tbody td:nth-child(7)::before {
    content: "Pot.";
    opacity: .65;
    margin-right: 2px;
    font-weight: 600;
  }
  #db-table-wrap tbody td:nth-child(8) {
    grid-area: adv;
    padding-top: 8px;
    border-top: 1px dashed var(--border-2);
    font-size: 12px !important;
    font-weight: 600;
    color: var(--text-2);
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  #db-table-wrap tbody td:nth-child(9) {
    grid-area: date;
    font-size: 11px;
    color: var(--text-3);
    text-align: right;
    white-space: nowrap;
  }
}

@media (max-width: 420px) {
  #db-table-wrap tbody tr { padding: 10px 12px; gap: 4px 8px; }
  #db-table-wrap tbody td:nth-child(2) { font-size: 14px; }
  #db-table-wrap td .grade { min-width: 30px; height: 26px; font-size: 12px; padding: 0 8px; }
}

/* Distribution bars */
.dist-row { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.dist-label { width: 30px; font-weight: 700; }
.dist-bar { flex: 1; height: 10px; background: var(--bg-3); border-radius: 5px; overflow: hidden; }
.dist-fill { height: 100%; border-radius: 5px; transition: width .4s ease; }
.dist-count { width: 30px; text-align: right; color: var(--text-2); font-weight: 600; }
.dist-section-title { font-size: 12px; color: var(--text-3); margin-bottom: 10px; }

/* Dashboard widgets */
.dash-empty-state {
  text-align: center; padding: 60px 20px;
  background: var(--panel); border: 1px dashed var(--border-2); border-radius: var(--radius);
  color: var(--text-3);
}
.dash-empty-state .icon { font-size: 42px; opacity: .35; margin-bottom: 10px; }
.dash-empty-state h3 { color: var(--text); margin: 0 0 6px 0; font-size: 16px; font-weight: 600; }
.dash-empty-state p { margin: 0 auto 16px auto; font-size: 13px; max-width: 380px; line-height: 1.5; }

.gap-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.gap-card {
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 8px;
  padding: 10px 12px; border-left: 3px solid var(--secondary);
  cursor: pointer; transition: all .15s;
}
.gap-card:hover { border-color: var(--secondary); transform: translateX(2px); }
.gap-card-title { font-size: 12px; font-weight: 600; color: var(--text); }
.gap-card-sub { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.gap-empty { text-align: center; padding: 28px 10px; color: var(--text-3); font-size: 13px; }
.gap-empty .icon { font-size: 28px; opacity: .3; margin-bottom: 6px; }

.advies-row { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.advies-label { width: 140px; font-size: 12px; color: var(--text-2); }
.advies-bar { flex: 1; height: 22px; background: var(--bg-3); border-radius: 6px; overflow: hidden; position: relative; }
.advies-fill { height: 100%; border-radius: 6px; transition: width .4s ease; display: flex; align-items: center; padding: 0 8px; font-size: 11px; font-weight: 700; color: rgba(0,0,0,.7); }
.advies-count { width: 30px; text-align: right; font-weight: 600; color: var(--text-2); }

.cat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (max-width: 600px){ .cat-grid { grid-template-columns: repeat(2, 1fr); } }
.cat-card {
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 8px;
  padding: 12px 14px; cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.cat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(0,0,0,.28);
  border-color: var(--border-2);
}
.cat-card-name { font-size: 11px; text-transform: uppercase; letter-spacing: .8px; color: var(--text-3); margin-bottom: 6px; }
.cat-card-row { display: flex; align-items: baseline; gap: 8px; }
.cat-card-grade { font-size: 22px; font-weight: 800; letter-spacing: -.5px; }
.cat-card-score { font-size: 12px; color: var(--text-3); }
.cat-card-bar { height: 4px; background: var(--bg-2); border-radius: 2px; margin-top: 8px; overflow: hidden; }
.cat-card-fill { height: 100%; border-radius: 2px; transition: width .4s ease; }

.top-grid { display: flex; flex-direction: column; gap: 8px; }
.top-row {
  display: flex; align-items: center; gap: 10px;
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 8px;
  padding: 10px 12px; cursor: pointer; transition: all .15s;
}
.top-row:hover { border-color: var(--primary); }
.top-rank {
  width: 22px; height: 22px; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), #8a0410);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 11px; color: white; flex-shrink: 0;
}
.top-info { flex: 1; min-width: 0; }
.top-name { font-weight: 600; font-size: 13px; }
.top-meta { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.top-score {
  font-size: 16px; font-weight: 800; color: var(--secondary);
  background: rgba(245,197,24,.12); padding: 4px 10px; border-radius: 6px;
}

.poscov-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(82px, 1fr)); gap: 8px; }
.poscov-cell {
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 7px;
  padding: 10px 8px; text-align: center; transition: all .15s;
}
.poscov-cell.zero { opacity: .45; border-style: dashed; }
.poscov-cell:not(.zero):hover { border-color: var(--primary); }
.poscov-code { font-size: 11px; font-weight: 700; color: var(--text); }
.poscov-count { font-size: 18px; font-weight: 800; margin-top: 3px; color: var(--text); }
.poscov-count.zero { color: var(--text-3); }
.poscov-label { font-size: 9px; color: var(--text-3); margin-top: 2px; line-height: 1.2; }
/* ── Club-overzicht widget ── */
.club-legend { display:flex; gap:12px; font-size:11px; color:var(--text-3); margin-bottom:10px; align-items:center; }
.club-legend-dot { display:inline-block; width:8px; height:8px; border-radius:2px; margin-right:3px; }
.club-grid { display:flex; flex-direction:column; gap:7px; }
.club-row {
  display:flex; align-items:center; gap:10px;
  cursor:pointer; padding:6px 4px; border-radius:6px;
  transition:background .15s, transform .15s, box-shadow .15s;
}
.club-row:hover { background:var(--bg-3); transform: translateX(2px); box-shadow: 0 4px 14px rgba(0,0,0,.2); }
.club-name { width:110px; font-size:12px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex-shrink:0; }
.club-bar-wrap { flex:1; }
.club-bar { display:flex; height:18px; border-radius:5px; overflow:hidden; background:var(--bg-3); }
.club-seg { height:100%; transition:width .4s ease; }
.club-count { width:26px; text-align:right; font-size:12px; font-weight:700; color:var(--text-2); flex-shrink:0; }


/* Database table */
.filters {
  display: flex; gap: 10px; flex-wrap: wrap;
  margin-bottom: 16px; align-items: center;
}
.filter-input, .filter-select {
  background: var(--panel); border: 1px solid var(--border-2); color: var(--text);
  padding: 8px 12px; border-radius: 7px; outline: none;
  min-width: 140px;
}
.filter-input:focus, .filter-select:focus { border-color: var(--primary); }
.filter-input { flex: 1; min-width: 220px; }

/* v70h-s23: alfabetbalk voor adresboek */
.alphabet-bar {
  display: flex; flex-wrap: wrap; gap: 4px;
  margin-bottom: 16px; padding: 8px;
  background: var(--panel); border: 1px solid var(--border-2); border-radius: 7px;
}
.alphabet-letter {
  flex: 1 1 auto; min-width: 28px;
  padding: 6px 8px; font-size: 13px; font-weight: 600;
  background: transparent; color: var(--text-2);
  border: 1px solid transparent; border-radius: 5px;
  cursor: pointer; text-align: center;
  transition: background .12s, color .12s, border-color .12s;
}
.alphabet-letter:hover { background: var(--bg-3); color: var(--text); }
.alphabet-letter.active {
  background: var(--primary); color: #fff; border-color: var(--primary);
}
.alphabet-letter.disabled {
  opacity: 0.3; cursor: default; pointer-events: none;
}
@media (max-width: 720px) {
  .alphabet-letter { flex: 1 1 calc(100%/13 - 4px); font-size: 12px; padding: 5px 4px; }
}

/* v70h-s24: provincie-balk */
.province-bar {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 16px; padding: 8px;
  background: var(--panel); border: 1px solid var(--border-2); border-radius: 7px;
}
.province-chip {
  padding: 6px 12px; font-size: 12px; font-weight: 600;
  background: transparent; color: var(--text-2);
  border: 1px solid var(--border-2); border-radius: 14px;
  cursor: pointer; white-space: nowrap;
  transition: background .12s, color .12s, border-color .12s;
}
.province-chip:hover { background: var(--bg-3); color: var(--text); }
.province-chip.active {
  background: var(--primary); color: #fff; border-color: var(--primary);
}
.province-chip .count { opacity: 0.7; margin-left: 4px; font-weight: 400; }
.province-chip.active .count { opacity: 0.9; }
@media (max-width: 720px) {
  .province-chip { font-size: 11px; padding: 5px 9px; }
}

/* v70h-s25: spelersdatabase paginator */
.db-paginator {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  padding: 10px 12px; margin: 8px 0;
  background: var(--panel); border: 1px solid var(--border-2); border-radius: 7px;
  font-size: 13px; color: var(--text-2);
}
.db-paginator .pg-info { flex: 1 1 auto; min-width: 0; }
.db-paginator .pg-size {
  display: flex; align-items: center; gap: 6px;
}
.db-paginator .pg-size select {
  padding: 4px 8px; font-size: 13px;
  background: var(--bg-2); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 5px; cursor: pointer;
}
.db-paginator .pg-nav { display: flex; align-items: center; gap: 4px; }
.db-paginator .pg-btn {
  min-width: 32px; padding: 6px 10px; font-size: 13px; font-weight: 600;
  background: transparent; color: var(--text-2);
  border: 1px solid var(--border-2); border-radius: 5px;
  cursor: pointer; transition: background .12s, color .12s;
}
.db-paginator .pg-btn:hover:not(.disabled) { background: var(--bg-3); color: var(--text); }
.db-paginator .pg-btn.active {
  background: var(--primary); color: #fff; border-color: var(--primary);
}
.db-paginator .pg-btn.disabled { opacity: 0.4; cursor: default; pointer-events: none; }
.db-paginator .pg-ellipsis { padding: 0 4px; color: var(--text-3); }
@media (max-width: 720px) {
  .db-paginator { font-size: 12px; gap: 8px; padding: 8px; }
  .db-paginator .pg-btn { min-width: 28px; padding: 5px 8px; font-size: 12px; }
}

.table-wrap {
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius);
  overflow: hidden;
}
table { width: 100%; border-collapse: collapse; }
thead {
  background: var(--bg-3);
}
thead th {
  text-align: left; padding: 12px 14px;
  font-size: 11px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); border-bottom: 1px solid var(--border);
  cursor: pointer; user-select: none;
}
thead th:hover { color: var(--text); }
tbody td {
  padding: 12px 14px; border-bottom: 1px solid var(--border);
  font-size: 13px;
}
tbody tr { transition: background .12s; }
tbody tr:hover { background: var(--bg-3); cursor: pointer; }
tbody tr:last-child td { border-bottom: none; }
.empty-state {
  text-align: center; padding: 60px 20px; color: var(--text-3);
}
.empty-icon { font-size: 32px; opacity: .3; margin-bottom: 8px; }

/* Form */
.form-grid {
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 24px 28px;
}
.form-section {
  margin-bottom: 28px; padding-bottom: 22px; border-bottom: 1px solid var(--border);
}
.form-section:last-of-type { border-bottom: none; margin-bottom: 12px; }
.form-section-title {
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.5px;
  color: var(--primary); margin-bottom: 14px;
  display: flex; align-items: center; gap: 8px;
}
.form-section-title::before {
  content: ''; width: 3px; height: 14px; background: var(--primary); border-radius: 2px;
}
.field-row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-bottom: 12px; }
.field-row.three { grid-template-columns: repeat(3, 1fr); }
.field { display: flex; flex-direction: column; }
.field label {
  font-size: 11px; text-transform: uppercase; letter-spacing: .8px;
  color: var(--text-3); margin-bottom: 6px; font-weight: 600;
}
.field input, .field select, .field textarea {
  background: var(--bg-3); border: 1px solid var(--border-2);
  padding: 10px 12px; border-radius: 7px; color: var(--text); outline: none;
  transition: border-color .15s;
}
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--primary); }
.field textarea { min-height: 70px; resize: vertical; font-family: inherit; }

/* Grade picker — v70: groter, duidelijker, sideline-vriendelijk */
.grade-picker { display: flex; gap: 6px; }
.grade-pick {
  flex: 1; padding: 16px 0; border-radius: 9px;
  background: var(--bg-3); border: 2px solid var(--border-2); color: var(--text-2);
  font-weight: 800; font-size: 20px;
  letter-spacing: .5px;
  transition: background .15s, color .15s, transform .08s, border-color .15s, box-shadow .15s;
  text-align: center;
  min-height: 56px;
  cursor: pointer;
}
.grade-pick:hover { color: var(--text); }
.grade-pick:active { transform: scale(.94); }
.grade-pick.selected[data-grade="A"] { background: var(--grade-a); border-color: var(--grade-a); color: #062b12; box-shadow: 0 4px 14px rgba(34,197,94,.35); }
.grade-pick.selected[data-grade="B"] { background: var(--grade-b); border-color: var(--grade-b); color: #1a2806; box-shadow: 0 4px 14px rgba(132,204,22,.35); }
.grade-pick.selected[data-grade="C"] { background: var(--grade-c); border-color: var(--grade-c); color: #2a1a04; box-shadow: 0 4px 14px rgba(245,158,11,.35); }
.grade-pick.selected[data-grade="D"] { background: var(--grade-d); border-color: var(--grade-d); color: #2a0606; box-shadow: 0 4px 14px rgba(239,68,68,.35); }
/* Potentieel-niveau moet dezelfde volle kleur tonen als huidig-niveau
   (Marcel's expliciete wens — geen visueel verschil meer tussen beide). */
.grade-pick-pot.selected[data-grade="A"] { background: var(--grade-a); border-color: var(--grade-a); color: #062b12; box-shadow: 0 4px 14px rgba(34,197,94,.35); font-weight: 800; }
.grade-pick-pot.selected[data-grade="B"] { background: var(--grade-b); border-color: var(--grade-b); color: #1a2806; box-shadow: 0 4px 14px rgba(132,204,22,.35); font-weight: 800; }
.grade-pick-pot.selected[data-grade="C"] { background: var(--grade-c); border-color: var(--grade-c); color: #2a1a04; box-shadow: 0 4px 14px rgba(245,158,11,.35); font-weight: 800; }
.grade-pick-pot.selected[data-grade="D"] { background: var(--grade-d); border-color: var(--grade-d); color: #2a0606; box-shadow: 0 4px 14px rgba(239,68,68,.35); font-weight: 800; }
/* Sub-criteria (atletisch) pickers blijven compacter */
.subcriteria-row .grade-picker { gap: 4px; }
.subcriteria-row .grade-pick { padding: 8px 0; font-size: 14px; min-height: 38px; letter-spacing: 0; font-weight: 700; }
@media (max-width: 380px) {
  .subcriteria-row .grade-picker { gap: 3px; }
  .subcriteria-row .grade-pick { font-size: 13px; padding: 7px 0; min-height: 36px; }
}

/* === v70h-s14: form-actions onderaan rapport ===
   Desktop: gewoon in document flow onder het formulier (geen zweven).
   Mobile (<=1024px): zwevend boven de bottom-nav.
   Smal scherm (<=640px): 2-rij layout zodat status-tekst nooit afkapt. */
.form-actions-sticky {
  display: flex;
  gap: 10px;
  align-items: center;
  margin-top: 18px;
  padding: 16px 0 12px 0;
  border-top: 1px solid var(--border, #2a2f3a);
  background: transparent;
}
.form-actions-sticky .autosave-status {
  flex: 1;
  font-size: 13px;
  color: var(--muted, #7b8294);
  display: flex; align-items: center; gap: 8px;
  min-width: 0;
}
.form-actions-sticky .autosave-status .dot {
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--success, #16a34a);
  flex-shrink: 0;
}
.form-actions-sticky .autosave-status .text {
  overflow: visible; text-overflow: clip; white-space: nowrap;
}
.form-actions-sticky .autosave-status.saving { color: var(--warn, #f5c518); }
.form-actions-sticky .autosave-status.saving .dot { background: var(--warn, #f5c518); animation: shAutoPulse 1s ease-in-out infinite; }
.form-actions-sticky .autosave-status.saved { color: var(--success, #16a34a); }
.form-actions-sticky .autosave-status.saved .dot { background: var(--success, #16a34a); }
@keyframes shAutoPulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
.form-actions-sticky #report-save-btn {
  min-height: 46px;
  padding: 11px 22px;
  font-weight: 800;
}

/* Mobile/tablet: zwevende balk boven bottom-nav (58px) */
@media (max-width: 1024px) {
  .form-actions-sticky {
    position: fixed;
    bottom: calc(58px + env(safe-area-inset-bottom));
    left: 0; right: 0;
    background: rgba(17,21,28,.96);
    -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    padding: 12px 16px;
    box-shadow: 0 -8px 24px rgba(0,0,0,.4);
    z-index: 95;
    margin: 0;
  }
  /* Alleen tonen als #view-report actief is (op mobile, balk staat in body) */
  body:not(.view-active-report) .form-actions-sticky { display: none !important; }
}

/* Smal scherm: 2-rij — rij1 status (volle breedte), rij2 knoppen */
@media (max-width: 640px) {
  .form-actions-sticky {
    flex-wrap: wrap;
    row-gap: 6px;
  }
  .form-actions-sticky .autosave-status {
    flex: 1 0 100%;
  }
  .form-actions-sticky #report-clear {
    flex: 0 0 auto;
  }
  .form-actions-sticky #report-save-btn {
    flex: 1 1 auto;
  }
}

/* v70h-s15: bulletproof desktop reset — overschrijft ALLE eerdere
   position:fixed/full-width regels zodat balk gewoon in flow staat
   onder het formulier, naast de zijbalk (niet eroverheen). */
@media (min-width: 1025px) {
  .form-actions-sticky {
    position: static !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    background: transparent !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    box-shadow: none !important;
    padding: 16px 0 12px 0 !important;
    margin: 18px 0 0 0 !important;
    z-index: auto !important;
  }
  .form-actions-sticky .autosave-status .text {
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }
}

/* Draft restored banner (bovenaan rapport-formulier) — s35aq: rustig gemaakt */
.db-draft-card {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 11px;
  margin: 0 0 8px 0;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border, #2a2f3a);
  border-radius: 8px;
}
.db-draft-card .ic { display: none; }
.db-draft-card .info { flex: 1; min-width: 0; }
.db-draft-card .info .badge {
  display: inline-block;
  font-size: 9.5px; font-weight: 700;
  color: var(--text-3, #8a93ab);
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border, #2a2f3a);
  padding: 1px 7px;
  border-radius: 999px;
  letter-spacing: .3px;
  margin-bottom: 2px;
  text-transform: uppercase;
}
.db-draft-card .info .title {
  font-weight: 700; font-size: 13px;
  color: var(--text, #e7eaf0);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.db-draft-card .info .meta {
  font-size: 11px;
  color: var(--text-3, #7b8294);
  margin-top: 1px;
}
.db-draft-card .actions { display: flex; gap: 8px; flex-shrink: 0; }
.db-draft-card .actions button {
  padding: 5px 10px;
  border-radius: 6px;
  font-size: 12px; font-weight: 600;
  cursor: pointer;
  border: 1px solid var(--border, #2a2f3a);
  background: var(--bg-2, #11151c);
  color: var(--text, #e7eaf0);
  transition: background .12s, transform .08s;
}
.db-draft-card .actions button.primary {
  background: var(--warn, #f5c518);
  border-color: var(--warn, #f5c518);
  color: #1a1d24;
}
.db-draft-card .actions button:hover { transform: translateY(-1px); }
.db-draft-card .actions button.primary:hover { background: #fcd23f; }
@media (max-width: 540px) {
  .db-draft-card { flex-wrap: wrap; }
  .db-draft-card .actions { width: 100%; }
  .db-draft-card .actions button { flex: 1; }
}
.draft-restored-banner {
  background: linear-gradient(135deg, rgba(245,197,24,.18), rgba(245,197,24,.08));
  border: 1px solid rgba(245,197,24,.4);
  border-radius: 10px;
  padding: 12px 14px; margin: 0 0 16px 0;
  display: flex; gap: 12px; align-items: center;
}
.draft-restored-banner.hidden { display: none; }
.draft-restored-banner .icon { font-size: 22px; flex-shrink: 0; }
.draft-restored-banner .text { flex: 1; font-size: 13.5px; line-height: 1.4; }
.draft-restored-banner .text strong { color: var(--warn, #f5c518); }
.draft-restored-banner .actions { display: flex; gap: 6px; flex-shrink: 0; }
.draft-restored-banner button {
  background: transparent; color: var(--text);
  border: 1px solid var(--border);
  padding: 8px 14px; border-radius: 7px;
  cursor: pointer; font-size: 12.5px; font-weight: 600;
}
.draft-restored-banner button.primary {
  background: var(--warn, #f5c518); color: #1a1500;
  border-color: var(--warn, #f5c518);
}

/* Copy-last-report knop */
.btn-copy-last {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--bg-3); color: var(--text);
  border: 1px solid var(--border);
  padding: 11px 16px; border-radius: 9px;
  font-size: 13.5px; font-weight: 600;
  cursor: pointer;
  min-height: 44px;
}
.btn-copy-last:hover { border-color: var(--primary); background: rgba(227,6,19,.1); }
.btn-copy-last .icon { font-size: 16px; }
.btn-copy-last.done { border-color: var(--success, #16a34a); color: var(--success, #16a34a); }
.copy-last-row {
  display: flex; align-items: center; gap: 10px;
  flex-wrap: wrap;
  margin: 0 0 14px 0;
}
.copy-last-row .last-meta { font-size: 11.5px; color: var(--muted, #7b8294); }

/* Copy-confirm modal */
.copy-confirm-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.7);
  z-index: 9200;
  display: none; align-items: center; justify-content: center;
  padding: 20px;
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
.copy-confirm-backdrop.show { display: flex; }
.copy-confirm {
  background: var(--bg-2, #11151c);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 22px;
  max-width: 440px; width: 100%;
  max-height: 86vh; overflow-y: auto;
  box-shadow: 0 24px 60px rgba(0,0,0,.5);
}
.copy-confirm h3 { margin: 0 0 6px 0; font-size: 17px; }
.copy-confirm .sub { color: var(--muted, #7b8294); font-size: 13px; margin-bottom: 14px; }
.copy-confirm ul {
  list-style: none; padding: 0; margin: 0 0 16px 0;
  background: var(--bg, #0a0d13); border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden;
}
.copy-confirm ul li {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  font-size: 13.5px; gap: 12px;
}
.copy-confirm ul li:last-child { border-bottom: none; }
.copy-confirm ul li .val { color: var(--muted, #7b8294); font-weight: 600; text-align: right; }
.copy-confirm ul li.skip { opacity: .55; }
.copy-confirm ul li.skip .val { font-style: italic; font-weight: 500; }
.copy-confirm-actions { display: flex; gap: 8px; }
.copy-confirm-actions button {
  flex: 1; padding: 12px; border-radius: 9px;
  font-weight: 700; font-size: 14px; cursor: pointer;
  border: 1px solid var(--border);
  min-height: 46px;
}
.copy-confirm-actions .cancel { background: transparent; color: var(--text); }
.copy-confirm-actions .confirm {
  background: var(--primary); color: #fff;
  border-color: var(--primary);
}


.criteria-block {
  background: var(--bg-3); padding: 14px 16px; border-radius: 8px;
  border: 1px solid var(--border); margin-bottom: 10px;
}
.criteria-block-title { font-weight: 600; margin-bottom: 6px; font-size: 12px; }
.criteria-block-help { font-size: 11px; color: var(--text-3); margin-bottom: 10px; line-height: 1.5; }
.subcriteria-stack { display: flex; flex-direction: column; gap: 14px; }
.subcriteria-row {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.subcriteria-label {
  font-weight: 600;
  font-size: 13px;
  color: var(--text-1);
  margin: 0;
}
.subcriteria-row .grade-picker {
  width: 100%;
  flex-wrap: nowrap;
}
.subcriteria-row .grade-picker .grade-pick {
  flex: 1;
  min-width: 0;
}
.subcriteria-note {
  width: 100%;
  resize: vertical;
  background: var(--bg-3);
  border: 1px solid var(--border-2);
  padding: 10px 12px;
  border-radius: 7px;
  color: var(--text);
  outline: none;
  font-family: inherit;
  font-size: inherit;
  min-height: 60px;
  transition: border-color .15s;
}
.subcriteria-note:focus { border-color: var(--primary); }
.subcriteria-note::placeholder { color: var(--text-2); opacity: .7; }
.dual-grade { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.dual-grade .field label { margin-bottom: 4px; }
.dual-label {
  display: flex; align-items: center; gap: 5px;
}
.dual-label-pill {
  font-size: 9px; padding: 2px 6px; border-radius: 4px; font-weight: 700;
}
.pill-current { background: var(--primary); color: white; }
.pill-potential { background: transparent; border: 1px solid var(--secondary); color: var(--secondary); }

/* Legend */
.legend {
  display: flex; gap: 12px; flex-wrap: wrap;
  background: var(--bg-3); padding: 10px 14px; border-radius: 8px;
  border: 1px solid var(--border); margin-bottom: 16px;
  font-size: 11px;
}
.legend-item { display: flex; align-items: center; gap: 6px; color: var(--text-2); }
.legend-dot { width: 12px; height: 12px; border-radius: 3px; }

/* Sliders */
.score-slider {
  -webkit-appearance: none; appearance: none;
  width: 100%; height: 6px; border-radius: 3px;
  background: linear-gradient(to right, var(--grade-d), var(--grade-c), var(--grade-b), var(--grade-a));
  outline: none; padding: 0; margin: 8px 0 4px 0;
}
.score-slider::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 20px; height: 20px; border-radius: 50%;
  background: white; border: 3px solid var(--primary);
  cursor: pointer; box-shadow: 0 2px 6px rgba(0,0,0,.4);
  transition: transform .12s;
}
.score-slider::-webkit-slider-thumb:hover { transform: scale(1.15); }
.score-slider::-moz-range-thumb {
  width: 20px; height: 20px; border-radius: 50%;
  background: white; border: 3px solid var(--primary);
  cursor: pointer; box-shadow: 0 2px 6px rgba(0,0,0,.4);
}
.slider-val {
  display: inline-block;
  background: var(--primary); color: white;
  padding: 2px 9px; border-radius: 10px;
  font-size: 11px; font-weight: 700;
  margin-left: 6px; min-width: 28px; text-align: center;
}
.slider-val.empty { background: var(--bg-3); color: var(--text-3); }
.slider-scale {
  display: flex; justify-content: space-between;
  font-size: 10px; color: var(--text-3);
  padding: 0 2px; margin-top: 2px;
}

/* Form actions */
.form-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 18px; }

/* ---------- PITCH ---------- */
.pitch-wrap {
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 18px;
}
.formation-chooser {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 14px;
  background: var(--bg-3);
  border: 1px solid var(--border);
  padding: 10px 14px;
  border-radius: 8px;
}
.formation-label {
  font-size: 11px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); font-weight: 700;
}
.formation-chooser select {
  flex: 1; max-width: 240px;
  font-weight: 600;
}
.pitch-panel {
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 18px;
}
.pitch-svg-wrap {
  position: relative;
  background:
    repeating-linear-gradient(90deg, #0f3a1b 0 60px, #0d3318 60px 120px);
  border-radius: 10px;
  border: 2px solid #0d3318;
  overflow: hidden;
  aspect-ratio: 7 / 9;
  max-width: 540px;
  margin: 0 auto;
}
.pitch-svg { width: 100%; height: 100%; display: block; }
.pos-btn {
  position: absolute;
  transform: translate(-50%, -50%);
  width: 64px; height: 64px;
  border-radius: 50%;
  background: rgba(20,30,40,.85);
  border: 3px solid var(--border-2);
  color: white;
  font-weight: 700; font-size: 12px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  cursor: pointer;
  transition: all .15s;
  box-shadow: 0 4px 12px rgba(0,0,0,.4);
  padding: 0;
}
.pos-btn:hover { transform: translate(-50%, -50%) scale(1.08); border-color: var(--text); }
.pos-btn .pos-code { font-size: 13px; line-height: 1; }
.pos-btn .pos-grades { display: flex; gap: 3px; font-size: 9px; margin-top: 3px; line-height: 1; }
.pos-btn .pos-grade { padding: 1px 4px; border-radius: 3px; font-weight: 800; }
.pos-btn.gap { border-color: var(--secondary); box-shadow: 0 0 0 3px rgba(245,197,24,.25), 0 4px 12px rgba(0,0,0,.4); }
.pos-btn.gap::before {
  content: '!'; position: absolute; top: -6px; right: -6px;
  width: 18px; height: 18px; border-radius: 50%; background: var(--secondary); color: #1a1402;
  font-size: 11px; font-weight: 900; display:flex; align-items:center; justify-content:center;
}
.pos-btn.selected { border-color: var(--primary); transform: translate(-50%, -50%) scale(1.1); }

.pitch-info-empty {
  text-align: center; padding: 30px 16px; color: var(--text-3);
}
.position-detail-title {
  font-size: 18px; font-weight: 700; margin-bottom: 4px;
}
.position-detail-sub { color: var(--text-3); font-size: 12px; margin-bottom: 18px; }
.position-reden {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.12), rgba(245, 158, 11, 0.04));
  border-left: 3px solid var(--secondary);
  padding: 10px 12px;
  border-radius: 8px;
  margin-bottom: 18px;
}
.position-reden-title {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--secondary);
  font-weight: 700;
  margin-bottom: 4px;
}
.position-reden-text { font-size: 13px; color: var(--text); line-height: 1.45; }
.position-grade-block { margin-bottom: 16px; }
.position-grade-block label {
  font-size: 11px; text-transform: uppercase; letter-spacing: .8px;
  color: var(--text-3); display: block; margin-bottom: 6px; font-weight: 600;
}
.gap-toggle {
  display: flex; align-items: center; gap: 10px; padding: 10px 12px;
  background: var(--bg-3); border-radius: 8px; border: 1px solid var(--border);
  margin: 12px 0;
}
.gap-toggle input { accent-color: var(--secondary); width: 16px; height: 16px; }
.gap-toggle label { font-size: 13px; cursor: pointer; }

.pitch-summary {
  margin-top: 14px;
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 8px;
  padding: 12px 14px;
}
.pitch-summary-title { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--text-3); margin-bottom: 8px; }
.pitch-gap-list { display: flex; gap: 6px; flex-wrap: wrap; }
.gap-tag {
  background: var(--secondary); color: #1a1402;
  padding: 4px 9px; border-radius: 5px; font-size: 11px; font-weight: 700;
}

/* ---------- ANALYSES (Elftal analyse) ---------- */
.analyses-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
  gap: 14px;
}
.analysis-card {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px 18px;
  cursor: pointer;
  transition: all .15s;
  position: relative;
  overflow: hidden;
}
.analysis-card::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--secondary);
}
.analysis-card:hover { border-color: var(--primary); transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,.3); }
.analysis-card-title { font-size: 15px; font-weight: 700; margin-bottom: 4px; color: var(--text); }
.analysis-card-sub { font-size: 12px; color: var(--text-3); margin-bottom: 12px; }
.analysis-card-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.analysis-meta-pill {
  background: var(--bg-3); border: 1px solid var(--border);
  padding: 3px 9px; border-radius: 999px;
  font-size: 11px; color: var(--text-2);
}
.analysis-card-footer {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 10px; border-top: 1px solid var(--border);
  font-size: 12px;
}
.analysis-gap-count {
  background: var(--secondary); color: #1a1402;
  padding: 3px 9px; border-radius: 5px;
  font-size: 11px; font-weight: 700;
}
.analysis-gap-count.zero { background: var(--bg-3); color: var(--text-3); }
.analysis-card-actions { display: flex; gap: 6px; }
.analysis-card-actions .btn-sm { padding: 4px 8px; font-size: 11px; }

.analysis-empty {
  text-align: center; padding: 60px 20px;
  background: var(--panel); border: 1px dashed var(--border-2); border-radius: var(--radius);
  color: var(--text-3);
}
.analysis-empty .icon { font-size: 42px; opacity: .35; margin-bottom: 10px; }
.analysis-empty h3 { color: var(--text); margin: 0 0 6px 0; font-size: 16px; font-weight: 600; }
.analysis-empty p { margin: 0 auto 16px auto; font-size: 13px; max-width: 380px; line-height: 1.5; }

.analysis-header {
  background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 16px 20px; margin-bottom: 16px;
}
.analysis-header-fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 12px;
}
.analysis-header-field { display: flex; flex-direction: column; }
.analysis-header-field label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .8px;
  color: var(--text-3); margin-bottom: 4px; font-weight: 600;
}
.analysis-header-field input, .analysis-header-field select {
  background: var(--bg-3); border: 1px solid var(--border-2);
  padding: 8px 10px; border-radius: 6px; color: var(--text); outline: none;
  font-size: 13px;
}
.analysis-header-field input:focus, .analysis-header-field select:focus { border-color: var(--primary); }

.criteria-fields { margin: 16px 0 12px 0; display: flex; flex-direction: column; gap: 10px; }
.criteria-field { display: flex; flex-direction: column; }
.criteria-field label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .8px;
  color: var(--text-3); margin-bottom: 4px; font-weight: 600;
}
.criteria-field textarea {
  background: var(--bg-3); border: 1px solid var(--border-2);
  padding: 8px 10px; border-radius: 6px; color: var(--text); outline: none;
  font-size: 12px; min-height: 54px; resize: vertical;
  font-family: inherit; line-height: 1.45;
}
.criteria-field textarea:focus { border-color: var(--primary); }

.linked-reports {
  margin-top: 16px;
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 8px;
  padding: 12px 14px;
}
.linked-reports-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px;
}
.linked-reports-title {
  font-size: 11px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); font-weight: 700;
}
.linked-reports-empty {
  text-align: center; padding: 14px 8px; color: var(--text-3); font-size: 12px;
}
.linked-report-item {
  display: flex; align-items: center; gap: 10px;
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: 7px; padding: 8px 10px; margin-bottom: 6px;
  transition: all .15s;
}
.linked-report-item:hover { border-color: var(--primary); }
.linked-report-info { flex: 1; min-width: 0; cursor: pointer; }
.linked-report-name { font-weight: 600; font-size: 12px; }
.linked-report-meta { font-size: 10px; color: var(--text-3); margin-top: 2px; }
.linked-report-grades { display: flex; gap: 4px; }
.linked-report-unlink {
  background: transparent; border: none; color: var(--text-3); font-size: 18px;
  padding: 2px 8px; border-radius: 4px; cursor: pointer; line-height: 1;
}
.linked-report-unlink:hover { background: rgba(239,68,68,.2); color: var(--red); }

.player-picker-search {
  width: 100%; margin-bottom: 12px;
  background: var(--bg-3); border: 1px solid var(--border-2);
  padding: 9px 12px; border-radius: 6px; color: var(--text); outline: none;
  font-size: 13px;
}
.player-picker-search:focus { border-color: var(--primary); }
.player-picker-list {
  max-height: 380px; overflow-y: auto;
  display: flex; flex-direction: column; gap: 6px;
  padding-right: 4px;
}
.player-picker-item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border: 1px solid var(--border); border-radius: 7px;
  background: var(--bg-3); cursor: pointer; transition: all .15s;
}
.player-picker-item:hover { border-color: var(--primary); }
.player-picker-item.linked {
  opacity: .45; cursor: not-allowed;
  background: var(--bg-2);
}
.player-picker-item.linked:hover { border-color: var(--border); }
.player-picker-badge {
  font-size: 9px; padding: 2px 6px; border-radius: 4px;
  background: var(--green); color: #062b12; font-weight: 700;
  text-transform: uppercase; letter-spacing: .5px;
}

/* Detail modal */
.modal-backdrop {
  position: fixed; inset: 0; background: rgba(0,0,0,.6);
  z-index: 500; display: none; align-items: flex-start; justify-content: center;
  padding: 20px;
  /* iOS: gebruik visualViewport hoogte via JS — voorkomt scherm-shift */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.modal-backdrop.open { display: flex; }
/* iOS PWA: vergrendel body-scroll wanneer modal open is */
body.modal-open { overflow: hidden; position: fixed; width: 100%; }
.modal {
  background: var(--panel); border: 1px solid var(--border); border-radius: 12px;
  max-width: 720px; width: 100%; max-height: 85vh; overflow-y: auto;
  box-shadow: var(--shadow);
  /* Zorg dat modal zichzelf scrollt, niet de pagina */
  -webkit-overflow-scrolling: touch;
}
.modal-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 20px 24px; border-bottom: 1px solid var(--border);
  position: sticky; top: 0; background: var(--panel); z-index: 2;
}
.modal-title { font-size: 18px; font-weight: 700; }
.modal-close {
  background: transparent; border: none; color: var(--text-3); font-size: 22px;
  width: 32px; height: 32px; border-radius: 6px;
}
.modal-close:hover { background: var(--bg-3); color: var(--text); }
.modal-body { padding: 22px 24px; }

.detail-header {
  display: flex; gap: 16px; align-items: center; margin-bottom: 20px;
}
.detail-avatar {
  width: 70px; height: 70px; border-radius: 50%;
  background: linear-gradient(135deg, #2a3548, #1a2332);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 22px; color: var(--text);
  border: 2px solid var(--primary);
}
.detail-name { font-size: 20px; font-weight: 700; }
.detail-meta { font-size: 12px; color: var(--text-3); margin-top: 4px; }
.detail-grade-row { display: flex; gap: 12px; margin-top: 10px; }

/* ---- Speler-overzicht: KPI tiles ---- */
.dtl-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-top: 16px;
  margin-bottom: 16px;
}
@media (max-width: 720px){
  .dtl-kpi-grid { grid-template-columns: repeat(2, 1fr); }
}
.dtl-kpi-tile {
  background: linear-gradient(135deg, var(--bg-3) 0%, var(--panel-2) 100%);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 14px 12px;
  position: relative;
  overflow: hidden;
  transition: transform .2s ease, border-color .2s ease;
}
.dtl-kpi-tile:hover {
  transform: translateY(-1px);
  border-color: var(--primary);
}
.dtl-kpi-tile::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: var(--kpi-accent, var(--primary));
  opacity: .85;
}
.dtl-kpi-label {
  font-size: 10px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); margin-bottom: 6px; font-weight: 600;
}
.dtl-kpi-value {
  font-size: 26px; font-weight: 800; line-height: 1.1;
  color: var(--text); margin-bottom: 2px;
}
.dtl-kpi-value.small { font-size: 16px; line-height: 1.25; }
.dtl-kpi-sub {
  font-size: 11px; color: var(--text-3); margin-top: 4px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; line-height: 1.4;
}
.dtl-kpi-tile.accent-a { --kpi-accent: #22c55e; }
.dtl-kpi-tile.accent-b { --kpi-accent: #3b82f6; }
.dtl-kpi-tile.accent-c { --kpi-accent: #f59e0b; }
.dtl-kpi-tile.accent-d { --kpi-accent: #ef4444; }
.dtl-kpi-tile.accent-neutral { --kpi-accent: #8b95a7; }

/* ---- s35cz: Gemiddelde-tegels (over meerdere rapporten) ---- */
.dtl-avg-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 10px;
  margin-top: 8px;
}
@media (max-width: 1024px){
  .dtl-avg-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 720px){
  .dtl-avg-grid { grid-template-columns: repeat(2, 1fr); }
}
.dtl-avg-cell {
  background: var(--bg-3);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 10px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  text-align: center;
  transition: border-color .2s ease, transform .2s ease;
}
.dtl-avg-cell:hover {
  border-color: var(--primary-2);
  transform: translateY(-1px);
}
.dtl-avg-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--text-3);
  font-weight: 600;
}
.dtl-avg-sub {
  font-size: 10px;
  color: var(--text-3);
  font-variant-numeric: tabular-nums;
}

/* ---- s35df: Spelersoverzicht titel + rapportenlijst ---- */
.spelersoverzicht-title-row {
  display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
  margin: 4px 0 14px;
}
.spelersoverzicht-title {
  font-size: 22px; font-weight: 800; letter-spacing: -0.2px;
  color: var(--text-1);
}
.spelersoverzicht-subtitle {
  font-size: 13px; color: var(--text-3); font-weight: 500;
}
.dtl-avg-pill {
  font-size: 11px; font-weight: 700; letter-spacing: .5px;
  text-transform: uppercase;
  padding: 4px 10px; border-radius: 999px;
  background: rgba(99, 102, 241, .12);
  color: var(--primary-2);
  border: 1px solid rgba(99, 102, 241, .35);
  margin-left: auto;
}
.dtl-reports-card { padding: 16px 18px; }
.dtl-reports-card.flash {
  animation: dtl-reports-flash 1.2s ease;
}
@keyframes dtl-reports-flash {
  0%   { box-shadow: 0 0 0 0 rgba(99, 102, 241, .55); }
  40%  { box-shadow: 0 0 0 8px rgba(99, 102, 241, .15); }
  100% { box-shadow: 0 0 0 0 rgba(99, 102, 241, 0); }
}
.dtl-reports-list {
  display: flex; flex-direction: column; gap: 6px;
  margin-top: 8px;
}
.dtl-report-row {
  display: grid;
  grid-template-columns: 110px 1fr auto auto 20px;
  gap: 12px; align-items: center;
  padding: 10px 12px;
  background: var(--bg-3);
  border: 1px solid var(--border);
  border-radius: 10px;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
.dtl-report-row:hover {
  border-color: var(--primary-2);
  background: var(--bg-2);
  transform: translateX(2px);
}
.dtl-report-row.active {
  border-color: var(--primary-2);
  background: rgba(99, 102, 241, .08);
}
.dtl-rr-date { font-size: 12px; color: var(--text-2); font-weight: 600; font-variant-numeric: tabular-nums; }
.dtl-rr-match { font-size: 13px; color: var(--text-1); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dtl-rr-grade, .dtl-rr-advies { display: flex; align-items: center; }
.dtl-rr-chev { color: var(--text-3); display: flex; align-items: center; }
@media (max-width: 640px){
  .dtl-report-row {
    grid-template-columns: 80px 1fr auto 18px;
  }
  .dtl-rr-advies { display: none; }
}

/* ---- Sterktes & zwaktes pills ---- */
.dtl-sw-card {
  margin-top: 16px;
  padding: 16px 18px;
}
.dtl-sw-row {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  margin-top: 8px;
}
.dtl-sw-row + .dtl-sw-row { margin-top: 12px; }
.dtl-sw-heading {
  font-size: 11px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); font-weight: 700;
  margin-right: 4px; min-width: 110px;
}
.dtl-sw-heading.strong { color: #22c55e; }
.dtl-sw-heading.weak   { color: #f59e0b; }
.dtl-pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 11px; border-radius: 999px; font-size: 12px; font-weight: 600;
  background: rgba(34, 197, 94, .12); color: #4ade80;
  border: 1px solid rgba(34, 197, 94, .28);
}
.dtl-pill.weak {
  background: rgba(245, 158, 11, .12);
  color: #fbbf24;
  border-color: rgba(245, 158, 11, .28);
}
.dtl-pill .pill-grade {
  font-weight: 800; font-size: 11px; opacity: .85;
}
.dtl-sw-empty {
  font-size: 12px; color: var(--text-3); font-style: italic;
}

/* ---- Pizza chart ---- */
.dtl-pizza-wrap {
  display: flex; align-items: center; justify-content: center;
  padding: 12px 0 0;
}
.dtl-pizza-wrap svg { max-width: 100%; height: auto; }
.dtl-pizza-legend {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px 14px;
  font-size: 11px; color: var(--text-2);
  margin-top: 14px;
}
.dtl-pizza-legend-row {
  display: flex; align-items: center; gap: 6px;
}
.dtl-pizza-legend-dot {
  width: 9px; height: 9px; border-radius: 2px;
}
@media (max-width:560px) {
  .dtl-pizza-legend { grid-template-columns: 1fr; }
  .dtl-radar-tt { max-width: 180px; min-width: 0; padding: 8px 11px; }
}

.detail-section { margin-top: 22px; }
.detail-section h4 {
  font-size: 11px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); margin: 0 0 10px 0;
}
.detail-criteria-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.detail-criteria {
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 7px;
  padding: 10px 12px;
}
.detail-criteria-name { font-size: 12px; color: var(--text-2); margin-bottom: 6px; }
.detail-criteria-grades { display: flex; gap: 6px; align-items: center; }

.detail-notes {
  background: var(--bg-3); border: 1px solid var(--border); border-radius: 7px;
  padding: 12px 14px; font-size: 13px; line-height: 1.6; white-space: pre-wrap;
}

/* Setup screen */
.setup-help {
  font-size: 11px; color: var(--text-3); margin-top: 6px; line-height: 1.5;
}

/* Toast */
.toast {
  position: fixed; bottom: 24px; right: 24px; z-index: 800;
  background: var(--panel); border: 1px solid var(--border); border-left: 3px solid var(--green);
  padding: 12px 16px; border-radius: 8px; font-size: 13px;
  box-shadow: var(--shadow);
  transform: translateY(20px); opacity: 0; pointer-events: none;
  transition: all .25s;
}
.toast.show { transform: none; opacity: 1; }
.toast.error { border-left-color: var(--red); }

/* Loader */
#loader {
  position: fixed; inset: 0; z-index: 2000;
  background: var(--bg);
  display: flex; align-items: center; justify-content: center;
  flex-direction: column; gap: 16px;
}
.spinner {
  width: 38px; height: 38px;
  border: 3px solid var(--border);
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: spin .8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
.loader-text { font-size: 12px; color: var(--text-3); }

/* ---------- MOBILE TOPBAR (hidden on desktop) ---------- */
.mobile-topbar {
  display: none;
  position: sticky;
  top: 0;
  z-index: 90;
  background: rgba(11,15,21,.96);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--border);
  padding: 10px 14px;
  padding-top: calc(10px + env(safe-area-inset-top));
  align-items: center;
  gap: 12px;
}
.mobile-topbar .mt-logo {
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.mobile-topbar .mt-logo svg {
  width: 100%; height: 100%;
  display: block;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,0.4));
}
.mobile-topbar .mt-title {
  flex: 1;
  font-weight: 700;
  font-size: 15px;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.burger-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  background: var(--bg-3);
  border: 1px solid var(--border);
  border-radius: 10px;
  cursor: pointer;
  padding: 0;
  color: var(--text);
}
.burger-btn:hover { background: var(--bg-4, var(--bg-3)); }
.burger-btn svg { width: 22px; height: 22px; }

/* Sidebar backdrop (mobile drawer overlay) */
.sidebar-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 940;
  opacity: 0;
  transition: opacity .25s ease;
}
.sidebar-backdrop.show {
  display: block;
  opacity: 1;
}

/* v70h-s28: Install PWA button — ALTIJD zichtbaar in sidebar */
.install-btn {
  position: relative;
  width: 100%;
  margin-top: 8px;
  padding: 9px 12px;
  background: linear-gradient(135deg, rgba(229,57,53,.14), rgba(229,57,53,.06));
  color: var(--text);
  border: 1px solid rgba(229,57,53,.35);
  border-radius: 8px;
  font-size: 12px; font-weight: 600;
  cursor: pointer;
  display: inline-flex;          /* default zichtbaar — geen JS nodig */
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: inherit;
  transition: background .15s, border-color .15s;
}
.install-btn--hidden { display: none !important; }   /* alleen wanneer al geïnstalleerd */
.install-btn:hover { background: rgba(229,57,53,.22); border-color: rgba(229,57,53,.55); }
.install-btn svg.icon-down { width: 14px; height: 14px; flex-shrink: 0; }
/* Instructie-modal voor handmatig installeren */
.install-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.65);
  z-index: 9000;
  display: none; align-items: center; justify-content: center;
  padding: 20px;
}
.install-modal-backdrop.show { display: flex; }
.install-modal {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 24px;
  max-width: 460px; width: 100%;
  color: var(--text);
  box-shadow: 0 24px 60px rgba(0,0,0,.5);
}
.install-modal h3 { margin: 0 0 12px 0; font-size: 18px; }
.install-modal p { margin: 6px 0; font-size: 13.5px; line-height: 1.5; }
.install-modal ol { margin: 10px 0 14px 18px; padding: 0; font-size: 13.5px; line-height: 1.7; }
.install-modal .install-modal-close {
  background: var(--primary); color: #fff;
  border: none; padding: 10px 18px; border-radius: 8px;
  font-weight: 700; cursor: pointer; margin-top: 8px;
}

/* ===== v70h-s30: Instellingen-modal ===== */
.settings-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.65);
  backdrop-filter: blur(2px);
  z-index: 9100;
  display: none; align-items: flex-start; justify-content: center;
  padding: 24px 16px;
  overflow-y: auto;
}
.settings-modal-backdrop.show { display: flex; }
.settings-modal {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 16px;
  width: 100%; max-width: 560px;
  color: var(--text);
  box-shadow: 0 24px 60px rgba(0,0,0,.55);
  margin: auto;
  overflow: hidden;
}
.settings-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, var(--panel), var(--bg-2));
}
.settings-modal-head h3 {
  margin: 0; font-size: 17px; font-weight: 700;
  display: flex; align-items: center; gap: 10px;
}
.settings-modal-head .settings-close-btn {
  background: transparent; border: none; color: var(--text-2);
  cursor: pointer; font-size: 22px; line-height: 1;
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s, color .15s;
}
.settings-modal-head .settings-close-btn:hover { background: var(--panel-2); color: var(--text); }
.settings-modal-body {
  padding: 14px 20px 20px;
  max-height: calc(100vh - 140px);
  overflow-y: auto;
}
.settings-section {
  padding: 14px 0;
  border-bottom: 1px solid var(--border);
}
.settings-section:last-child { border-bottom: none; }
.settings-section-head {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 10px;
}
.settings-section-icon {
  width: 28px; height: 28px;
  border-radius: 8px;
  background: linear-gradient(135deg, rgba(229,57,53,.18), rgba(229,57,53,.06));
  border: 1px solid rgba(229,57,53,.25);
  color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.settings-section-icon svg { width: 16px; height: 16px; }
.settings-section-title { font-size: 14px; font-weight: 700; }
.settings-section-sub { font-size: 12px; color: var(--text-2); }
.settings-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 8px 10px;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 8px;
  margin-top: 8px;
}
.settings-row-label { font-size: 12px; color: var(--text-2); }
.settings-row-value { font-size: 13px; font-weight: 600; color: var(--text); word-break: break-all; text-align: right; }
.settings-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 14px;
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #fff;
  border: none; border-radius: 8px;
  font-weight: 700; font-size: 13px;
  cursor: pointer;
  transition: filter .15s, transform .15s;
}
.settings-btn:hover { filter: brightness(1.1); transform: translateY(-1px); }
.settings-btn.ghost {
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--border-2);
}
.settings-btn.ghost:hover { border-color: var(--primary); background: var(--panel-2); }
.settings-btn.danger {
  background: linear-gradient(135deg, #ef4444, #b91c1c);
}
.settings-soon-badge {
  display: inline-block;
  background: rgba(255,255,255,.06);
  border: 1px solid var(--border-2);
  color: var(--text-3);
  font-size: 10px; font-weight: 700;
  letter-spacing: .5px;
  padding: 2px 7px;
  border-radius: 999px;
  text-transform: uppercase;
}
.settings-install-block .install-btn {
  margin-top: 0;
  padding: 10px 14px;
  font-size: 13px;
}
.settings-meta {
  font-size: 11px; color: var(--text-3);
  text-align: center;
  margin-top: 14px;
}
/* v70h-s32: profielfoto upload */
.settings-photo-row {
  display: flex; align-items: center; gap: 14px;
  margin-top: 10px;
}
.settings-photo-preview {
  width: 64px; height: 64px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--primary);
  box-shadow: 0 4px 14px rgba(229,57,53,.20);
  flex-shrink: 0;
  background: linear-gradient(135deg, #2a3548, #1a2332);
  display: block;
}
.settings-photo-actions {
  display: flex; flex-direction: column; gap: 8px;
  flex: 1; min-width: 0;
}
.settings-photo-hint {
  font-size: 11px; color: var(--text-3);
}
/* v70h-s32: input-velden */
.settings-field {
  display: flex; flex-direction: column; gap: 4px;
  margin-top: 10px;
}
.settings-field label {
  font-size: 11px; font-weight: 700;
  color: var(--text-3);
  text-transform: uppercase;
  letter-spacing: .4px;
}
.settings-field input,
.settings-field textarea {
  width: 100%;
  padding: 9px 12px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  color: var(--text);
  font-size: 13px;
  font-family: inherit;
  outline: none;
  transition: border-color .15s;
  box-sizing: border-box;
}
.settings-field input:focus,
.settings-field textarea:focus { border-color: var(--primary); }
.settings-field textarea { min-height: 64px; resize: vertical; }
.settings-field-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
@media (max-width: 480px) {
  .settings-field-pair { grid-template-columns: 1fr; }
}
.settings-btn-row {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 12px;
}
.settings-saved-pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 700;
  color: var(--grade-a);
  opacity: 0; transition: opacity .25s;
}
.settings-saved-pill.show { opacity: 1; }

/* ===== v70h-s33: Slimme import / export modals ===== */
.smart-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.72);
  backdrop-filter: blur(3px);
  z-index: 9300;
  display: none; align-items: flex-start; justify-content: center;
  padding: 24px 16px;
  overflow-y: auto;
}
.smart-modal-backdrop.show { display: flex; }
.smart-modal {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 16px;
  width: 100%; max-width: 640px;
  color: var(--text);
  box-shadow: 0 24px 60px rgba(0,0,0,.55);
  margin: auto;
  overflow: hidden;
  display: flex; flex-direction: column;
}
.smart-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, var(--panel), var(--bg-2));
}
.smart-modal-head h3 {
  margin: 0; font-size: 16px; font-weight: 700;
}
.smart-modal-close {
  background: transparent; border: none; color: var(--text-2);
  cursor: pointer; font-size: 22px; line-height: 1;
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
}
.smart-modal-close:hover { background: var(--panel-2); color: var(--text); }
.smart-modal-body {
  padding: 16px 20px;
  display: flex; flex-direction: column; gap: 12px;
  max-height: 70vh;
  overflow-y: auto;
}
.smart-modal-body p { margin: 0; font-size: 13px; color: var(--text-2); line-height: 1.5; }
.smart-modal-body textarea {
  width: 100%;
  min-height: 140px;
  padding: 10px 12px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  color: var(--text);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  resize: vertical;
  outline: none; box-sizing: border-box;
}
.smart-modal-body textarea:focus { border-color: var(--primary); }
.smart-file-pick {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--text-2);
}
.smart-classify {
  padding: 10px 12px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  font-size: 13px;
  display: flex; flex-wrap: wrap; gap: 14px;
  min-height: 18px;
}
.smart-classify .pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-weight: 700;
}
.smart-classify .pill .num {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 22px; height: 22px; padding: 0 7px;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #fff; font-size: 12px;
}
.smart-classify .pill.muted .num { background: var(--panel-2); color: var(--text-3); border:1px solid var(--border-2); }
.smart-modal-foot {
  padding: 12px 20px;
  border-top: 1px solid var(--border);
  display: flex; gap: 8px; justify-content: flex-end;
  flex-wrap: wrap;
  background: var(--bg);
}
.smart-status {
  flex: 1; align-self: center;
  font-size: 12px; color: var(--text-3);
  min-height: 14px;
}
.smart-status.ok { color: var(--grade-a); }
.smart-status.err { color: var(--red); }

/* Export checkboxes */
.smart-check-list {
  display: flex; flex-direction: column; gap: 6px;
}
.smart-check-row {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 12px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.smart-check-row:hover { border-color: var(--primary); }
.smart-check-row input[type=checkbox] {
  appearance: none;
  width: 18px; height: 18px;
  border: 2px solid var(--border-2);
  border-radius: 5px;
  background: var(--bg);
  cursor: pointer;
  flex-shrink: 0;
  position: relative;
}
.smart-check-row input[type=checkbox]:checked {
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  border-color: var(--primary);
}
.smart-check-row input[type=checkbox]:checked::after {
  content: '\2713';
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 900; color: #fff;
}
.smart-check-body { flex: 1; min-width: 0; }
.smart-check-title { font-size: 13px; font-weight: 700; }
.smart-check-meta { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.smart-check-all-row {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 4px;
  font-size: 11px; color: var(--text-3);
}
.smart-link-btn {
  background: transparent; border: none;
  color: var(--primary); font-size: 11px; font-weight: 700;
  cursor: pointer; text-decoration: underline;
  padding: 2px 4px;
}
@media (max-width: 560px) {
  .settings-modal-backdrop { padding: 12px 8px; }
  .settings-modal-head { padding: 14px 16px; }
  .settings-modal-body { padding: 10px 16px 16px; }
}

/* ===== Programma weekview ===== */
.prog-weekbar {
  display: flex; flex-direction: column; gap: 10px;
  margin: 4px 0 18px;
  padding: 12px 14px;
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 12px;
}
.prog-weeklabel {
  width: 100%; text-align: center;
  font-weight: 700; font-size: 14px;
  letter-spacing: 0.02em;
  color: var(--text-1);
  white-space: normal;
  line-height: 1.35;
}
.prog-weekbar-controls {
  display: flex; align-items: center; gap: 10px;
  width: 100%;
}
.prog-weekbar-controls .prog-span-toggle {
  margin-left: auto;
}
@media (max-width: 560px) {
  .prog-weekbar { padding: 10px 12px; gap: 8px; }
  .prog-weeklabel { font-size: 13px; }
  .prog-weekbar-controls { gap: 6px; flex-wrap: wrap; }
  .prog-weekbar-controls .prog-span-toggle { flex: 1 0 100%; width: 100%; margin-top: 2px; }
  .prog-span-toggle button { padding: 8px 10px; font-size: 12px; }
}
@media (max-width: 560px) {
  .agenda-toolbar { flex-wrap: wrap; }
  .agenda-toolbar .agenda-view-toggle { flex: 1 0 100%; width: 100%; margin-top: 2px; }
  .agenda-view-toggle button { padding: 8px 10px; font-size: 12px; }
}
.prog-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 10px;
}
.prog-day {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px;
  min-height: 220px;
  display: flex; flex-direction: column;
  transition: border-color 0.18s, background 0.18s;
}
.prog-day.today {
  border-color: rgba(227,6,19,0.55);
  background: linear-gradient(180deg, rgba(227,6,19,0.07) 0%, var(--bg-2) 65%);
  box-shadow: 0 0 0 1px rgba(227,6,19,0.18);
}
.prog-day-head {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: 8px; padding-bottom: 6px;
  border-bottom: 1px dashed var(--border);
}
.prog-day-name {
  font-weight: 700; font-size: 12px;
  text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--text-2);
}
.prog-day.today .prog-day-name { color: #ff8189; }
.prog-day-date {
  font-size: 11px; color: var(--text-3); font-weight: 500;
}
.prog-matches { flex: 1; display: flex; flex-direction: column; gap: 8px; }
.prog-match-card {
  background: var(--bg-3);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 8px 9px;
  cursor: pointer;
  transition: transform 0.12s, border-color 0.18s;
  position: relative;
}
.prog-match-card:hover { transform: translateY(-1px); border-color: rgba(227,6,19,0.45); }
.prog-match-card.verwerkt { opacity: 0.6; }
.btn-route-prog {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--primary);
  color: #fff !important;
  border: 1px solid var(--primary);
  padding: 6px 14px;
  border-radius: 8px;
  font-size: 12.5px;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  transition: filter .15s, transform .15s;
  box-shadow: 0 2px 8px rgba(227,6,19,.28);
}
.btn-route-prog:hover { filter: brightness(1.1); transform: translateY(-1px); }
.btn-route-prog:active { transform: translateY(0); }
.prog-match-card.verwerkt::after {
  content: '✓ verwerkt';
  position: absolute; top: 6px; right: 8px;
  font-size: 9.5px; font-weight: 700; letter-spacing: 0.06em;
  color: #22c55e; text-transform: uppercase;
}
.prog-match-time {
  font-size: 10.5px; font-weight: 700; color: #f5c518;
  letter-spacing: 0.04em;
}
.prog-match-teams {
  font-size: 12.5px; font-weight: 600; color: var(--text-1);
  margin-top: 2px; line-height: 1.25;
  overflow: hidden; text-overflow: ellipsis;
}
.prog-match-meta {
  font-size: 10.5px; color: var(--text-3); margin-top: 4px;
  display: flex; gap: 6px; flex-wrap: wrap;
}
.prog-match-meta .pill {
  display: inline-block; padding: 1px 6px;
  background: var(--bg-2); border-radius: 999px;
  font-size: 10px;
}
.prog-add-btn {
  margin-top: auto;
  background: transparent; border: 1px dashed var(--border);
  color: var(--text-3); border-radius: 8px;
  padding: 6px; font-size: 11px; cursor: pointer;
  transition: border-color 0.18s, color 0.18s;
}
.prog-add-btn:hover { border-color: var(--accent); color: var(--text-2); }

@media (max-width: 900px) {
  .prog-grid { grid-template-columns: 1fr; }
  .prog-day { min-height: auto; padding: 12px; }
  .prog-day-head { padding-bottom: 8px; margin-bottom: 10px; }
  .prog-day-name { font-size: 13px; }
}

/* ===== s35bk-2: Agenda-view (hour-axis web + dichte lijst app) ===== */
.agenda-toolbar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-bottom: 14px; padding: 10px 12px;
  background: var(--panel, #11141c);
  border: 1px solid var(--border, #262b39);
  border-radius: 10px;
}
.agenda-nav-btn {
  background: var(--panel-2, #161a25);
  border: 1px solid var(--border, #262b39);
  color: var(--text-1, #e5e9f5);
  padding: 6px 10px; border-radius: 6px; cursor: pointer;
  font-size: 12.5px; font-weight: 600;
  display: inline-flex; align-items: center; gap: 4px;
}
.agenda-nav-btn:hover { border-color: var(--accent, #f5c842); }
.agenda-range-label {
  flex: 1; text-align: center; font-weight: 700; font-size: 13.5px;
  color: var(--text-1, #e5e9f5); letter-spacing: .02em;
}
.agenda-view-toggle {
  display: flex; flex: 1 1 0; gap: 0;
  background: var(--panel-2, #161a25);
  border: 1px solid var(--border, #262b39);
  border-radius: 6px; overflow: hidden;
}
.agenda-view-toggle button {
  flex: 1 1 0; text-align: center; white-space: nowrap;
  background: transparent; border: 0; color: var(--muted, #9aa3b7);
  padding: 6px 12px; cursor: pointer; font-size: 12px; font-weight: 600;
}
.agenda-view-toggle button.active {
  background: var(--accent, #f5c842); color: #1a1a1a;
}
.agenda-day-col {
  background: var(--panel, #11141c);
  border: 1px solid var(--border, #262b39);
  border-radius: 10px; padding: 12px; margin-bottom: 14px;
}
.agenda-day-head {
  display: flex; align-items: baseline; justify-content: space-between;
  padding-bottom: 8px; margin-bottom: 8px;
  border-bottom: 1px solid var(--border, #262b39);
}
.agenda-day-name { font-weight: 700; font-size: 14px; color: var(--accent, #f5c842); }
.agenda-day-name.today { color: var(--red, #e30613); }
.agenda-day-count { font-size: 11.5px; color: var(--muted, #9aa3b7); }
.agenda-hour-row {
  display: grid; grid-template-columns: 56px 1fr; gap: 8px;
  align-items: start; padding: 3px 0;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  min-height: 36px;
}
.agenda-hour-row.empty { min-height: 22px; }
.agenda-hour-label {
  color: var(--muted, #9aa3b7); font-size: 11px;
  text-align: right; padding-top: 4px;
  font-variant-numeric: tabular-nums;
}
.agenda-hour-cell { position: relative; }
.agenda-evt {
  background: linear-gradient(90deg, rgba(245,200,66,.16), rgba(245,200,66,.06));
  border-left: 3px solid var(--accent, #f5c842);
  border-radius: 5px; padding: 7px 10px; margin: 2px 0;
  cursor: pointer; position: relative; overflow: hidden;
  font-size: 12.5px; line-height: 1.4;
  transition: background .15s;
}
.agenda-evt:hover { background: linear-gradient(90deg, rgba(245,200,66,.24), rgba(245,200,66,.10)); }
.agenda-evt.O8, .agenda-evt.O9, .agenda-evt.O10 {
  border-left-color: #7fd99e;
  background: linear-gradient(90deg, rgba(127,217,158,.14), rgba(127,217,158,.05));
}
.agenda-evt.O16, .agenda-evt.O17, .agenda-evt.O18, .agenda-evt.O19, .agenda-evt.O21, .agenda-evt.O23 {
  border-left-color: var(--red, #e30613);
  background: linear-gradient(90deg, rgba(227,6,19,.14), rgba(227,6,19,.05));
}
.agenda-evt-title {
  font-weight: 600; color: var(--text-1, #e5e9f5);
  padding-right: 50px;
}
.agenda-evt-meta {
  color: var(--muted, #9aa3b7); font-size: 11px;
  margin-top: 1px; padding-right: 50px;
}
.agenda-evt-dur {
  position: absolute; top: 6px; right: 8px;
  font-size: 10px; color: var(--muted, #9aa3b7);
  background: rgba(0,0,0,.35); padding: 2px 6px;
  border-radius: 3px; font-variant-numeric: tabular-nums;
}
.agenda-evening-toggle {
  background: var(--panel-2, #161a25);
  border: 1px dashed var(--border, #262b39);
  border-radius: 6px; padding: 9px 12px; margin-top: 8px;
  cursor: pointer; color: var(--muted, #9aa3b7);
  font-size: 12px; width: 100%; text-align: left;
  display: flex; align-items: center; justify-content: space-between;
}
.agenda-evening-toggle:hover { background: #191d2a; }
.agenda-evening-toggle strong { color: var(--text-1, #e5e9f5); }
.agenda-empty {
  text-align: center; padding: 30px 20px;
  color: var(--muted, #9aa3b7); font-size: 13px;
}

/* App-modus: dichte lijst (alleen blokken met events) */
.agenda-mobile-block {
  background: var(--panel-2, #161a25);
  border: 1px solid var(--border, #262b39);
  border-radius: 8px; padding: 10px 12px; margin-bottom: 8px;
}
.agenda-mobile-block-time {
  font-size: 10.5px; color: var(--accent, #f5c842);
  font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; margin-bottom: 8px;
}
.agenda-mobile-evt {
  padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,0.04);
  font-size: 12.5px; cursor: pointer;
  display: flex; align-items: baseline; gap: 8px;
}
.agenda-mobile-evt:last-child { border-bottom: 0; }
.agenda-mobile-evt .t {
  color: var(--muted, #9aa3b7); font-size: 11px;
  width: 42px; flex-shrink: 0; font-variant-numeric: tabular-nums;
}
.agenda-mobile-evt .lbl { flex: 1; color: var(--text-1, #e5e9f5); }
.agenda-mobile-evt .dur {
  font-size: 10px; color: var(--muted, #9aa3b7);
  background: rgba(0,0,0,.35); padding: 2px 6px; border-radius: 3px;
}

@media (max-width: 900px) {
  .agenda-hour-row { display: none; }
  .agenda-evening-toggle { display: none; }
  .agenda-mobile-block { display: block; }
  .agenda-day-col { padding: 10px; }
}
@media (min-width: 901px) {
  .agenda-mobile-block { display: none; }
}
/* s35cq: catch-all blok voor wedstrijden zonder geldige tijd */
.agenda-mobile-block.gap-block {
  border: 1px dashed var(--border, #262b39);
  background: rgba(255,255,255,0.015);
  opacity: .9;
}
.agenda-mobile-block.gap-block .agenda-mobile-block-time {
  color: var(--text-3, #818aa3);
}
.agenda-mobile-evt .t.notijd {
  color: var(--red, #e30613); font-style: italic; font-size: 10.5px;
}
.agenda-mobile-evt.flagged {
  background: rgba(227,6,19,.06);
  margin: 0 -6px; padding: 7px 6px; border-radius: 4px;
}

/* ===== s35bk-3: Programma span-toggle + uur-as in programma-grid ===== */
.prog-span-toggle {
  display: flex; flex: 1 1 0; gap: 0;
  background: var(--panel-2, #161a25);
  border: 1px solid var(--border, #262b39);
  border-radius: 6px; overflow: hidden;
}
.prog-span-toggle button {
  flex: 1 1 0; text-align: center; white-space: nowrap;
  background: transparent; border: 0; color: var(--muted, #9aa3b7);
  padding: 6px 12px; cursor: pointer; font-size: 12px; font-weight: 600;
}
.prog-span-toggle button.active {
  background: var(--accent, #f5c842); color: #1a1a1a;
}
/* Wanneer uur-as actief is, geen 7-koloms grid */
#programma-grid.prog-grid-uur {
  display: block !important;
  grid-template-columns: none !important;
}
#programma-grid.prog-grid-uur .agenda-day-col { margin-bottom: 14px; }

/* ===== s35bn: Programma week-view mini uur-as ===== */
#programma-grid.prog-week-grid {
  display: grid !important;
  grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
  gap: 8px;
}
.prog-week-grid .pwg-day {
  background: var(--panel, #11141c);
  border: 1px solid var(--border, #262b39);
  border-radius: 10px; padding: 8px; min-height: 240px;
  display: flex; flex-direction: column; overflow: hidden;
}
.prog-week-grid .pwg-day.today {
  border-color: var(--red, #e30613);
  box-shadow: 0 0 0 1px rgba(227,6,19,.3) inset;
}
.prog-week-grid .pwg-day-head {
  display: flex; align-items: baseline; justify-content: space-between;
  padding-bottom: 6px; margin-bottom: 6px;
  border-bottom: 1px solid var(--border, #262b39);
}
.prog-week-grid .pwg-day-name {
  font-weight: 700; font-size: 12px; color: var(--accent, #f5c842);
}
.prog-week-grid .pwg-day.today .pwg-day-name { color: var(--red, #e30613); }
.prog-week-grid .pwg-day-count { font-size: 10px; color: var(--muted, #9aa3b7); }
.prog-week-grid .pwg-hour-row {
  display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 4px;
  align-items: start; padding: 1px 0; min-height: 24px;
}
.prog-week-grid .pwg-hour-row.empty { min-height: 14px; }
.prog-week-grid .pwg-hour-label {
  color: var(--muted, #9aa3b7); font-size: 9.5px;
  text-align: right; padding-top: 2px;
  font-variant-numeric: tabular-nums;
}
.prog-week-grid .pwg-evt {
  background: linear-gradient(90deg, rgba(245,200,66,.16), rgba(245,200,66,.06));
  border-left: 3px solid var(--accent, #f5c842);
  border-radius: 4px; padding: 4px 6px; margin: 1px 0;
  cursor: pointer; position: relative; overflow: hidden;
  font-size: 10.5px; line-height: 1.35;
}
.prog-week-grid .pwg-evt:hover { background: linear-gradient(90deg, rgba(245,200,66,.24), rgba(245,200,66,.10)); }
.prog-week-grid .pwg-evt.O8, .prog-week-grid .pwg-evt.O9, .prog-week-grid .pwg-evt.O10 {
  border-left-color: #7fd99e;
  background: linear-gradient(90deg, rgba(127,217,158,.14), rgba(127,217,158,.05));
}
.prog-week-grid .pwg-evt.O16, .prog-week-grid .pwg-evt.O17, .prog-week-grid .pwg-evt.O18,
.prog-week-grid .pwg-evt.O19, .prog-week-grid .pwg-evt.O21, .prog-week-grid .pwg-evt.O23 {
  border-left-color: var(--red, #e30613);
  background: linear-gradient(90deg, rgba(227,6,19,.14), rgba(227,6,19,.05));
}
.prog-week-grid .pwg-evt-title {
  font-weight: 600; color: var(--text-1, #e5e9f5);
  padding-right: 4px;
  white-space: normal; overflow: hidden;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.prog-week-grid .pwg-evt-dur {
  position: absolute; top: 3px; right: 4px;
  font-size: 9px; color: var(--muted, #9aa3b7);
  background: rgba(0,0,0,.35); padding: 1px 4px;
  border-radius: 3px; font-variant-numeric: tabular-nums;
}
.prog-week-grid .pwg-add-btn {
  margin-top: auto; padding: 4px;
  background: transparent; border: 1px dashed var(--accent, #f5c842);
  color: var(--accent, #f5c842); border-radius: 5px;
  font-size: 10px; font-weight: 600; cursor: pointer; width: 100%;
}
@media (max-width: 900px) {
  #programma-grid.prog-week-grid {
    grid-template-columns: 1fr !important;
  }
  .prog-week-grid .pwg-day { min-height: auto; }
  .prog-week-grid .pwg-day-name { font-size: 14px; }
  .prog-week-grid .pwg-day-count { font-size: 11.5px; }
  .prog-week-grid .pwg-hour-row { grid-template-columns: 50px 1fr; min-height: 32px; }
  .prog-week-grid .pwg-hour-label { font-size: 11px; }
  .prog-week-grid .pwg-evt { font-size: 12.5px; padding: 6px 9px; }
  .prog-week-grid .pwg-evt-title { white-space: normal; padding-right: 8px; }
  .prog-week-grid .pwg-evt-dur { font-size: 10px; padding: 2px 6px; top: 5px; right: 7px; }
  .prog-week-grid .pwg-add-btn { font-size: 12px; padding: 7px; }
}

/* ===== s35cc: Programma-agenda edge-to-edge op mobile ===== */
/* .main heeft padding:14px op mobile → agenda blokken bleeds er overheen */
/* zodat ze écht van schermrand tot schermrand staan in 1d/3d/Week mode.   */
@media (max-width: 900px) {
  #view-programma .prog-nav-bar,
  #view-programma .prog-week-strip {
    margin-left: 0 !important;
    margin-right: 0 !important;
    width: 100% !important;
    box-sizing: border-box;
  }
  #view-programma #programma-grid {
    margin-left: -14px !important;
    margin-right: -14px !important;
    width: calc(100% + 28px) !important;
    max-width: calc(100% + 28px) !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  /* day-col cards strekken zich uit tot de schermrand */
  /* s35cd: extra padding-left/right zodat tekst (dag-naam, evt-titel) niet wegvalt */
  /* in de 14px bleed-zone — anders zie je "aa 11" i.p.v. "Maa 11".              */
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col {
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  /* Week-mode cellen ook edge-to-edge (op mobile is dat 1 kolom) */
  /* s35cl: padding-left/right bumped 16→20, top/bottom expliciet, plus
     defensieve padding op alle directe kinderen zodat tekst NIET op de
     rand staat zelfs als één regel een !important kwijtraakt.            */
  #view-programma #programma-grid.prog-week-grid > .pwg-day {
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    padding: 12px 20px !important;
  }
  /* Belt-and-braces: alle directe inhoud krijgt zelf ook nog padding.
     pwg-day-head bevat "Maa 11" + count-badge — must inset.              */
  #view-programma #programma-grid.prog-week-grid > .pwg-day > .pwg-day-head,
  #view-programma #programma-grid.prog-week-grid > .pwg-day > .pwg-hour-row,
  #view-programma #programma-grid.prog-week-grid > .pwg-day > .pwg-add-btn {
    padding-left: 4px !important;
    padding-right: 4px !important;
    box-sizing: border-box;
  }
  /* Same voor 1-dag / 3-dagen modus (.agenda-day-col children) */
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col {
    padding: 12px 20px !important;
  }
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col > * {
    padding-left: 4px !important;
    padding-right: 4px !important;
    box-sizing: border-box;
  }
  /* Voorkom horizontale overflow op programma-pagina (Week-knop knipte af) */
  #view-programma {
    overflow-x: hidden !important;
    max-width: 100% !important;
  }
  #view-programma .prog-weekbar,
  #view-programma .topbar {
    max-width: 100% !important;
    box-sizing: border-box;
  }
}

/* ===== s35cb: forceer programma-grid volledige breedte in alle modi ===== */
/* Marcel: "agenda in app nog steeds niet breed uitgelijnd, moet bij alle drie  */
/* de dagen 1, 3, hele week volledig uitgelijnd staan." → defensive width:100%. */
#programma-grid {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}
#programma-grid.prog-grid-uur {
  width: 100% !important;
  max-width: 100% !important;
  display: block !important;
}
#programma-grid.prog-grid-uur > .agenda-day-col {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
  margin-left: 0;
  margin-right: 0;
}
#programma-grid.prog-week-grid {
  width: 100% !important;
  max-width: 100% !important;
}
#programma-grid.prog-week-grid > .pwg-day {
  min-width: 0;
  box-sizing: border-box;
}
@media (max-width: 900px) {
  #programma-grid,
  #programma-grid.prog-grid-uur,
  #programma-grid.prog-week-grid {
    width: 100% !important;
    max-width: 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  #programma-grid.prog-grid-uur > .agenda-day-col,
  #programma-grid.prog-week-grid > .pwg-day {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* ===== s35ck: Agenda-view (#view-agenda) edge-to-edge op mobile ===== */
/* De agenda heeft een eigen view (#view-agenda) met #agenda-grid. De edge-to-edge
   bleed fixes uit s35cc/s35cd targeten alleen #programma-grid en gelden hier dus
   niet. Dat is waarom de agenda in alle modi (1 dag / 3 dagen / Week) te smal
   oogt op mobiel — hij blijft binnen de 14px .main padding hangen.            */
@media (max-width: 900px) {
  #view-agenda {
    overflow-x: hidden !important;
    max-width: 100% !important;
  }
  #view-agenda #agenda-grid {
    margin-left: -14px !important;
    margin-right: -14px !important;
    width: calc(100% + 28px) !important;
    max-width: calc(100% + 28px) !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  #view-agenda #agenda-grid > .agenda-day-col {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
    box-sizing: border-box;
  }
  /* Toolbar ook full-width (anders vorige/volgende-knoppen + 1d/3d/week
     wrappen in een smal kaartje terwijl de agenda eronder breed staat).      */
  #view-agenda .agenda-toolbar {
    margin-left: -14px !important;
    margin-right: -14px !important;
    width: calc(100% + 28px) !important;
    max-width: calc(100% + 28px) !important;
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    box-sizing: border-box;
  }
  /* Mobile-block: kleinere binnenmarge zodat de event-tekst lekker breed staat. */
  #view-agenda .agenda-mobile-block {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding: 10px 12px !important;
  }
}

/* ===== s35cw: Optie B (full-bleed sectie) — 1 dag + 3 dagen op mobile =====
   Marcel koos uit demo-s35cv-layouts.html voor Optie B (1d + 3d) + Optie D (Week).
   In plaats van een "card met rand" wordt de dag-sectie nu écht edge-to-edge:
   - day-head krijgt rood-getinte achtergrond, loopt door tot de schermrand
   - geen kaartrand meer rondom, alleen subtiele scheidingslijn tussen dagen
   - mobile-blocks binnen de sectie houden hun lucht (14px) en blijven cards
   Dit lost zowel de ~20px dode strook rechts op als de "smal kaartje" look.   */
@media (max-width: 900px) {
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col {
    background: rgba(20, 24, 34, 0.55) !important;
    border: 0 !important;
    border-top: 1px solid var(--border, #262b39) !important;
    border-bottom: 1px solid var(--border, #262b39) !important;
    border-radius: 0 !important;
    margin: 0 0 14px 0 !important;
    padding: 0 !important;
  }
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col > .agenda-day-head {
    background: rgba(227, 6, 19, 0.08) !important;
    border-bottom: 1px solid rgba(227, 6, 19, 0.18) !important;
    margin: 0 !important;
    padding: 10px 16px !important;
  }
  /* Override van s35cl: directe kinderen NIET meer met 4px padding (was hack
     toen sectie zelf 20px had). Nu sectie 0 padding heeft, geven we elk
     content-blok zelf de juiste lucht.                                       */
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col > * {
    padding-left: 14px !important;
    padding-right: 14px !important;
    box-sizing: border-box;
  }
  /* day-head zelf gebruikt 16px hierboven (was via *). */
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col > .agenda-day-head {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  /* Mobile-blocks binnen de sectie: card-stijl met lucht aan boven/onder. */
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col > .agenda-mobile-block,
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col > .agenda-empty {
    margin: 8px 14px !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  /* "+ Wedstrijd" knop ook met buiten-padding zoals de blocks. */
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col > .prog-add-btn {
    margin: 10px 14px 12px !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
    width: calc(100% - 28px) !important;
  }
}

/* ===== s35cw: Optie D (week-swiper) — Week-view op mobile =====
   7-koloms grid is op mobile onleesbaar (~50px per kolom). Op mobile tonen we
   day-tabs Ma/Di/Wo/Do/Vr/Za/Zo bovenaan en één dag tegelijk in volle breedte.
   Op desktop blijft het 7-koloms overzicht ongewijzigd.                       */
.prog-week-daytabs { display: none; }
@media (max-width: 900px) {
  .prog-week-daytabs {
    display: flex !important;
    gap: 4px;
    padding: 8px 10px;
    overflow-x: auto;
    border-bottom: 1px solid var(--border, #262b39);
    background: rgba(20, 24, 34, 0.4);
    margin: 0 -14px 0 -14px;
    width: calc(100% + 28px);
    box-sizing: border-box;
    scrollbar-width: none;
  }
  .prog-week-daytabs::-webkit-scrollbar { display: none; }
  .prog-week-daytab {
    flex: 1 0 auto;
    min-width: 44px;
    padding: 7px 6px 5px;
    text-align: center;
    background: var(--panel, #11141c);
    border: 1px solid var(--border, #262b39);
    border-radius: 7px;
    cursor: pointer;
    font-size: 10.5px;
    color: var(--muted, #9aa3b7);
    line-height: 1.1;
    user-select: none;
  }
  .prog-week-daytab .num {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--text-1, #e5e9f5);
    margin-bottom: 1px;
  }
  .prog-week-daytab .dot {
    display: inline-block;
    width: 4px; height: 4px;
    border-radius: 50%;
    background: var(--accent, #f5c842);
    margin-top: 3px;
  }
  .prog-week-daytab.today {
    border-color: var(--red, #e30613);
  }
  .prog-week-daytab.today .num { color: var(--red, #e30613); }
  .prog-week-daytab.active {
    background: #2563eb;
    border-color: #2563eb;
    color: #fff;
  }
  .prog-week-daytab.active .num { color: #fff; }
  .prog-week-daytab.active.today {
    background: var(--red, #e30613);
    border-color: var(--red, #e30613);
  }
  /* Op mobile: verberg alle pwg-day behalve degene met .active.
     Op desktop blijft het 7-koloms grid intact (deze regel pakt niet).        */
  #view-programma #programma-grid.prog-week-grid > .pwg-day:not(.active) {
    display: none !important;
  }
  /* De actieve dag krijgt full-bleed sectie-look, vergelijkbaar met Optie B. */
  #view-programma #programma-grid.prog-week-grid > .pwg-day.active {
    background: rgba(20, 24, 34, 0.55) !important;
    border: 0 !important;
    border-top: 1px solid var(--border, #262b39) !important;
    border-bottom: 1px solid var(--border, #262b39) !important;
    border-radius: 0 !important;
    padding: 0 !important;
    min-height: auto;
  }
  #view-programma #programma-grid.prog-week-grid > .pwg-day.active > .pwg-day-head {
    background: rgba(227, 6, 19, 0.08) !important;
    border-bottom: 1px solid rgba(227, 6, 19, 0.18) !important;
    padding: 10px 16px !important;
    margin: 0 !important;
  }
  #view-programma #programma-grid.prog-week-grid > .pwg-day.active > .pwg-hour-row {
    padding: 4px 14px !important;
  }
  #view-programma #programma-grid.prog-week-grid > .pwg-day.active > .pwg-add-btn {
    margin: 10px 14px 12px !important;
    width: calc(100% - 28px) !important;
  }
}

/* ===== s35dd: échte fix — overflow-clip op #view-programma cliped de bleed weg =====
   Wat in s35cc/db/dc niet werkte: regel 4123-4126 zet `overflow-x: hidden !important`
   op #view-programma. Daardoor wordt de negatieve margin van #programma-grid (-14px)
   geclipt op de content-edge van #view-programma. In de standalone test bestond die
   regel niet, daarom werkte bleed daar wel. Fix:
   1) Op mobile: zet #view-programma op `overflow-x: visible` zodat het kind kan bleeden.
      Body / .main hebben al overflow-x: hidden (regel 5282) als safety net.
   2) Header (topbar, weekbar, day-header) blijft binnen .main's 14px padding — gegarandeerd
      omdat we GEEN negatieve margin meer op #view-programma zetten (zoals s35db wel deed).
   3) Pills + day-cols binnen het edge-to-edge grid krijgen eigen 14px interne padding.
*/
@media (max-width: 900px) {
  /* 0. KRITIEK: #view-programma mag NIET clippen — anders sneuvelt elke bleed. */
  #view-programma {
    overflow-x: visible !important;
    max-width: 100% !important;
  }
  /* 1. Agenda-grid loopt edge-to-edge: negatieve margin over .main's 14px heen. */
  #view-programma #programma-grid {
    margin-left: -14px !important;
    margin-right: -14px !important;
    width: calc(100% + 28px) !important;
    max-width: calc(100% + 28px) !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box;
  }
  /* 2. Pills binnen het grid hebben eigen padding zodat ze niet tegen rand plakken. */
  #view-programma #programma-grid .prog-uur-daytabs {
    padding-left: 14px !important;
    padding-right: 14px !important;
    width: 100% !important;
    box-sizing: border-box;
    margin: 0 !important;
  }
  /* 3. Day-cols krijgen interne padding zodat content niet flush tegen rand komt. */
  #view-programma #programma-grid.prog-grid-uur > .agenda-day-col {
    padding-left: 14px !important;
    padding-right: 14px !important;
    box-sizing: border-box;
  }
  /* 4. s35dh: 3-dagen mode op mobile — alle 3 dagen naast elkaar ipv tabs. */
  #view-programma #programma-grid.prog-grid-uur.prog-uur-multi .prog-uur-daytabs {
    display: none !important;
  }
  #view-programma #programma-grid.prog-grid-uur.prog-uur-multi > .agenda-day-col:not(.active) {
    display: block !important;
  }
  #view-programma #programma-grid.prog-grid-uur.prog-uur-multi {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 0 !important;
  }
  #view-programma #programma-grid.prog-grid-uur.prog-uur-multi > .agenda-day-col {
    padding-left: 4px !important;
    padding-right: 4px !important;
    border-right: 1px solid var(--border, #262b39);
    font-size: 11px;
  }
  #view-programma #programma-grid.prog-grid-uur.prog-uur-multi > .agenda-day-col:last-child {
    border-right: none !important;
  }
}

/* ===== s35de: lijst-per-dag Programma weergave =====
   Vervangt het uur-grid. Geen edge-to-edge bleed meer — past gewoon in .main padding.
   Layout: controls (toggle links, kleine pijlen rechts) -> dateline (label of pills) -> lijst dag-groepen.
*/
.prog-controls {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; margin: 8px 0 10px; flex-wrap: wrap;
}
.prog-controls .prog-span-toggle {
  display: inline-flex; gap: 0;
  background: var(--panel-2, #161a24);
  border: 1px solid var(--border, #262b39);
  border-radius: 10px; padding: 3px;
}
.prog-controls .prog-span-toggle button {
  background: transparent; color: var(--text-2, #9aa3b2);
  border: 0; padding: 6px 12px; border-radius: 7px;
  font-size: 12px; font-weight: 600; cursor: pointer;
  transition: all .15s ease;
}
.prog-controls .prog-span-toggle button:hover { color: var(--text, #e8ecf4); }
.prog-controls .prog-span-toggle button.active {
  background: var(--accent, #4a89ff); color: #fff;
}
.prog-arrows { display: inline-flex; gap: 6px; }
.prog-arrow-btn {
  width: 28px; height: 28px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--panel-2, #161a24);
  border: 1px solid var(--border, #262b39);
  border-radius: 8px; color: var(--text-2, #9aa3b2);
  cursor: pointer; transition: all .15s ease;
}
.prog-arrow-btn:hover {
  color: var(--text, #e8ecf4); border-color: var(--accent, #4a89ff);
}
.prog-arrow-btn svg { display: block; }

.prog-dateline { margin: 0 0 12px; }
.prog-dateline-label {
  font-size: 15px; font-weight: 700; color: var(--text, #e8ecf4);
  letter-spacing: .2px;
}
.prog-dateline-label .sub {
  font-size: 12px; font-weight: 500; color: var(--text-3, #6b7280);
  margin-left: 8px;
}
.prog-dateline-pills {
  display: grid; gap: 6px;
}
.prog-dateline-pills.span-3 { grid-template-columns: repeat(3, 1fr); }
.prog-dateline-pills.span-7 { grid-template-columns: repeat(7, 1fr); }
.prog-pill {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px; padding: 8px 4px; min-height: 48px;
  background: var(--panel-2, #161a24);
  border: 1px solid var(--border, #262b39);
  border-radius: 10px; cursor: pointer;
  transition: all .15s ease;
  text-align: center;
}
.prog-pill:hover { border-color: var(--accent, #4a89ff); }
.prog-pill .dn { font-size: 10px; font-weight: 600; color: var(--text-3, #6b7280); text-transform: uppercase; letter-spacing: .4px; }
.prog-pill .dd { font-size: 15px; font-weight: 700; color: var(--text, #e8ecf4); line-height: 1; }
.prog-pill .dot { width: 4px; height: 4px; border-radius: 50%; background: var(--accent, #4a89ff); margin-top: 2px; opacity: 0; }
.prog-pill.has-matches .dot { opacity: 1; }
.prog-pill.today { border-color: var(--accent, #4a89ff); }
.prog-pill.today .dn { color: var(--accent, #4a89ff); }
.prog-pill.active {
  background: var(--accent, #4a89ff); border-color: var(--accent, #4a89ff);
}
.prog-pill.active .dn,
.prog-pill.active .dd { color: #fff; }
.prog-pill.active .dot { background: #fff; opacity: 1; }

.prog-list { display: flex; flex-direction: column; gap: 16px; }
.prog-day-group {
  background: var(--panel, #11141c);
  border: 1px solid var(--border, #262b39);
  border-radius: 12px; padding: 12px 12px 14px;
}
.prog-day-group.today { border-color: var(--accent, #4a89ff); }
.prog-day-group-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 8px; margin: 0 0 10px;
}
.prog-day-group-name {
  font-size: 14px; font-weight: 700; color: var(--text, #e8ecf4);
}
.prog-day-group.today .prog-day-group-name { color: var(--accent, #4a89ff); }
.prog-day-group-count {
  font-size: 11px; font-weight: 600; color: var(--text-3, #6b7280);
}
.prog-day-cards { display: flex; flex-direction: column; gap: 8px; }
.prog-day-empty {
  font-size: 12px; color: var(--text-3, #6b7280);
  padding: 8px 4px;
}
.prog-day-add {
  align-self: flex-start;
  background: transparent;
  border: 1px dashed var(--border, #262b39);
  color: var(--text-3, #6b7280);
  border-radius: 8px; padding: 6px 10px;
  font-size: 12px; font-weight: 600; cursor: pointer;
  margin-top: 4px;
  transition: all .15s ease;
}
.prog-day-add:hover {
  color: var(--accent, #4a89ff); border-color: var(--accent, #4a89ff);
}

@media (max-width: 900px) {
  .prog-controls { gap: 8px; margin: 6px 0 8px; }
  .prog-controls .prog-span-toggle button { padding: 5px 10px; font-size: 11px; }
  .prog-arrow-btn { width: 26px; height: 26px; }
  .prog-dateline-pills { gap: 4px; }
  .prog-dateline-pills.span-7 { gap: 3px; }
  .prog-pill { padding: 6px 2px; min-height: 44px; }
  .prog-pill .dn { font-size: 9px; }
  .prog-pill .dd { font-size: 13px; }
  .prog-day-group { padding: 10px 10px 12px; }
}

/* ===== s35bk-3: Push-up changelog modal ===== */
.changelog-backdrop {
  position: fixed; inset: 0; z-index: 9999;
  background: rgba(0,0,0,.6); backdrop-filter: blur(4px);
  display: none; align-items: flex-end; justify-content: center;
}
.changelog-backdrop.active { display: flex; animation: cl-fade .25s ease; }
.changelog-modal {
  background: var(--panel, #11141c);
  border: 1px solid var(--border, #262b39);
  border-bottom: 0;
  border-radius: 16px 16px 0 0;
  width: 100%; max-width: 540px;
  padding: 22px 22px 28px;
  animation: cl-slide .35s cubic-bezier(.16,1,.3,1);
  max-height: 80vh; overflow-y: auto;
}
@keyframes cl-fade { from{opacity:0} to{opacity:1} }
@keyframes cl-slide { from{transform:translateY(100%)} to{transform:translateY(0)} }
.changelog-grip {
  width: 40px; height: 4px; background: var(--border, #262b39);
  border-radius: 2px; margin: -10px auto 18px;
}
.changelog-title {
  font-size: 18px; font-weight: 700;
  color: var(--accent, #f5c842); margin-bottom: 4px;
}
.changelog-ver {
  font-size: 11px; color: var(--muted, #9aa3b7);
  text-transform: uppercase; letter-spacing: .08em;
  font-variant-numeric: tabular-nums; margin-bottom: 16px;
}
.changelog-item {
  background: var(--panel-2, #161a25);
  border: 1px solid var(--border, #262b39);
  border-left: 3px solid var(--accent, #f5c842);
  border-radius: 8px;
  padding: 12px 14px;
  margin-bottom: 10px;
}
.changelog-item-title { font-weight: 600; font-size: 13.5px; color: var(--text, #e5e9f5); margin-bottom: 4px; }
.changelog-item-detail { font-size: 12.5px; color: var(--muted, #9aa3b7); line-height: 1.5; }
.changelog-close {
  width: 100%; margin-top: 14px;
  background: linear-gradient(135deg, #ff8189 0%, #e30613 55%, #f5c518 100%);
  color: #fff; border: 0; border-radius: 8px;
  padding: 12px; font-size: 14px; font-weight: 700; cursor: pointer;
  box-shadow: 0 2px 8px rgba(227,6,19,.28);
}
.changelog-close:hover { filter: brightness(1.08); }

/* ===== s35cz: Demo-rondleiding (tabbed push-up modal) ===== */
.demo-tour-backdrop {
  position: fixed; inset: 0; z-index: 10000;
  background: rgba(0,0,0,.65); backdrop-filter: blur(5px);
  display: none; align-items: flex-end; justify-content: center;
}
.demo-tour-backdrop.active { display: flex; animation: dt-fade .25s ease; }
.demo-tour-modal {
  background: var(--panel, #11141c);
  border: 1px solid var(--border, #262b39); border-bottom: 0;
  border-radius: 16px 16px 0 0;
  width: 100%; max-width: 640px;
  padding: 18px 20px 24px;
  animation: dt-slide .35s cubic-bezier(.16,1,.3,1);
  max-height: 88vh; overflow-y: auto;
  box-shadow: 0 -8px 30px rgba(0,0,0,.45);
}
@keyframes dt-fade { from{opacity:0} to{opacity:1} }
@keyframes dt-slide { from{transform:translateY(100%)} to{transform:translateY(0)} }
.demo-tour-grip {
  width: 40px; height: 4px;
  background: var(--border, #262b39); border-radius: 2px;
  margin: -8px auto 14px;
}
.demo-tour-head { display:flex; align-items:baseline; gap:10px; margin-bottom: 4px; }
.demo-tour-title { font-size: 18px; font-weight: 700; color: var(--accent, #f5c842); margin: 0; }
.demo-tour-ver {
  font-size: 11px; color: var(--muted, #8a93ab);
  text-transform: uppercase; letter-spacing: .08em;
}
.demo-tour-intro {
  font-size: 13px; color: var(--text-2, #c4c9d6);
  margin: 4px 0 14px; line-height: 1.5;
}
.demo-tour-tabs {
  display: flex; gap: 6px; flex-wrap: wrap;
  border-bottom: 1px solid var(--border, #262b39);
  margin-bottom: 14px;
}
.demo-tour-tab {
  background: transparent; border: 0; color: var(--text-3, #8a93ab);
  padding: 8px 12px; font-size: 13px; font-weight: 600; cursor: pointer;
  border-bottom: 2px solid transparent; transition: all .15s;
  font-family: inherit; border-radius: 6px 6px 0 0;
}
.demo-tour-tab:hover { color: var(--text, #e5e9f5); background: rgba(245,200,66,0.06); }
.demo-tour-tab.active {
  color: var(--accent, #f5c842);
  border-bottom-color: var(--accent, #f5c842);
  background: rgba(245,200,66,0.08);
}
.demo-tour-panel { display: none; }
.demo-tour-panel.active { display: block; animation: dt-panel .2s ease; }
@keyframes dt-panel { from{opacity:0; transform:translateY(4px)} to{opacity:1; transform:translateY(0)} }
.demo-tour-section {
  background: var(--panel-2, #161a25);
  border: 1px solid var(--border, #262b39);
  border-left: 3px solid var(--accent, #f5c842);
  border-radius: 8px; padding: 11px 13px; margin-bottom: 10px;
}
.demo-tour-section.was { border-left-color: #ff8189; }
.demo-tour-section.is  { border-left-color: #4ade80; }
.demo-tour-section.find { border-left-color: #60a5fa; }
.demo-tour-section.how { border-left-color: var(--accent, #f5c842); }
.demo-tour-section-title {
  font-size: 12px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; margin-bottom: 4px;
  display: flex; align-items: center; gap: 6px;
}
.demo-tour-section.was .demo-tour-section-title { color: #ff8189; }
.demo-tour-section.is  .demo-tour-section-title { color: #4ade80; }
.demo-tour-section.find .demo-tour-section-title { color: #60a5fa; }
.demo-tour-section.how .demo-tour-section-title { color: var(--accent, #f5c842); }
.demo-tour-section-body {
  font-size: 13px; color: var(--text, #e5e9f5); line-height: 1.5;
}
.demo-tour-section-body code {
  background: rgba(255,255,255,0.06); padding: 1px 5px; border-radius: 4px;
  font-size: 12px; color: var(--accent, #f5c842);
}
.demo-tour-close {
  width: 100%; margin-top: 12px;
  background: linear-gradient(135deg, #ff8189 0%, #e30613 55%, #f5c518 100%);
  color: #fff; border: 0; border-radius: 8px;
  padding: 12px; font-size: 14px; font-weight: 700; cursor: pointer;
  box-shadow: 0 2px 8px rgba(227,6,19,.28);
}
.demo-tour-close:hover { filter: brightness(1.08); }
@media (max-width: 540px) {
  .demo-tour-modal { padding: 14px 14px 20px; }
  .demo-tour-tab { padding: 7px 9px; font-size: 12px; }
  .demo-tour-title { font-size: 16px; }
}


/* ===== Programma detail (uitgeklapt) ===== */
/* s35an (#7): opklapbaar 'Snel notitie'-paneel met slimme conversie naar criterium-velden */
.snel-notitie-panel{background:rgba(245,200,66,0.05);border:1px solid rgba(245,200,66,0.25);border-radius:10px;margin-bottom:14px;overflow:hidden}
.snel-notitie-toggle{width:100%;background:transparent;border:0;color:var(--text,#e5e9f5);padding:11px 14px;display:flex;align-items:center;gap:9px;font-size:13px;font-weight:500;cursor:pointer;text-align:left;font-family:inherit}
.snel-notitie-toggle:hover{background:rgba(245,200,66,0.05)}
.snel-notitie-toggle .sn-arr{transition:.2s;display:inline-block;color:#f5c842;width:12px}
.snel-notitie-toggle .sn-meta{margin-left:auto;font-size:11.5px;color:var(--text-3,#8a93ab);font-weight:400}
.snel-notitie-body{display:none;padding:0 14px 14px;border-top:1px dashed rgba(245,200,66,0.2)}
.snel-notitie-body.open{display:block}
.snel-notitie-body textarea{width:100%;background:#0a0c12;border:1px solid var(--border-2,#2d3242);border-radius:8px;padding:11px 13px;color:var(--text,#e5e9f5);font-family:inherit;font-size:13.5px;min-height:280px;outline:none;resize:vertical;margin-top:10px;box-sizing:border-box;line-height:1.6}
.snel-notitie-body textarea:focus{border-color:#f5c842}
.snel-notitie-help{font-size:11.5px;color:var(--text-3,#8a93ab);margin-top:8px;line-height:1.5}
.snel-notitie-help kbd{background:#1c2030;border:1px solid #2d3242;border-radius:4px;padding:1px 5px;font-size:10.5px;font-family:inherit}
.snel-notitie-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px;align-items:center;flex-wrap:wrap}
.snel-notitie-status{font-size:11.5px;color:var(--text-3,#8a93ab);margin-right:auto}
.snel-notitie-btn{background:#f5c842;color:#000;border:0;padding:7px 14px;border-radius:7px;font-size:12.5px;font-weight:600;cursor:pointer;font-family:inherit}
.snel-notitie-btn:hover{background:#fcd454}
.snel-notitie-btn.ghost{background:transparent;color:var(--text-3,#8a93ab);border:1px solid var(--border-2,#2d3242);font-weight:500}
.snel-notitie-btn.ghost:hover{color:var(--text,#e5e9f5)}
/* s35ca-1: .voor-rapport-block CSS verwijderd — voor-rapport UI uitgeschakeld */
/* s35ak (#4): visuele highlight + strip voor auto-ingevulde wedstrijdvelden in spelersrapport */
.rep-prog-autofill-strip{grid-column:1/-1;background:rgba(245,197,24,0.08);border:1px solid rgba(245,197,24,0.25);border-radius:10px;padding:8px 12px;margin-bottom:8px;font-size:12.5px;color:var(--text,#e5e9f5);display:flex;align-items:center;gap:8px;line-height:1.45}
.rep-prog-autofill-strip .ic{color:#f5c518;font-size:14px}
.rep-prog-autofill-strip strong{color:#f5c518;font-weight:600}
.rep-auto-field input{background:rgba(245,197,24,0.07) !important;border-color:rgba(245,197,24,0.35) !important}
.rep-auto-badge{font-size:10px;font-weight:700;padding:1px 6px;border-radius:99px;background:#f5c518;color:#000;margin-left:6px;letter-spacing:.3px;vertical-align:middle}
.rep-auto-badge.edited{background:#ef4444;color:#fff}
.prog-detail-card {
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: 14px; padding: 16px;
  margin-bottom: 14px;
}
.prog-detail-card.verwerkt { opacity: 0.7; }
.prog-detail-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 12px; margin-bottom: 12px; flex-wrap: wrap;
}
.prog-detail-title {
  font-size: 16px; font-weight: 700; color: var(--text-1);
  line-height: 1.3;
}
.prog-detail-meta {
  font-size: 12px; color: var(--text-3); margin-top: 3px;
  display: flex; gap: 10px; flex-wrap: wrap;
}
.prog-detail-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.prog-spelers { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.prog-speler-row {
  background: var(--bg-3); border: 1px solid var(--border);
  border-radius: 10px; padding: 10px 12px;
  display: flex; justify-content: space-between; align-items: center;
  gap: 10px; cursor: pointer; transition: border-color 0.18s;
}
.prog-speler-row:hover { border-color: rgba(227,6,19,0.4); }
.prog-speler-main { flex: 1; min-width: 0; }
.prog-speler-naam { font-weight: 600; font-size: 13.5px; color: var(--text-1); }
.prog-speler-sub { font-size: 11.5px; color: var(--text-3); margin-top: 2px; }
.prog-speler-actions { display: flex; gap: 6px; align-items: center; }
.prog-speler-badge {
  font-size: 10px; font-weight: 700; letter-spacing: 0.04em;
  padding: 2px 7px; border-radius: 999px;
  background: rgba(245,197,24,0.16); color: #f5c518;
}
.prog-speler-badge.full { background: rgba(34,197,94,0.16); color: #86efac; }

/* koppeling-badge (groen bolletje + rapport-teller) */
.prog-speler-koppel {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.03em;
  padding: 2px 8px; border-radius: 999px;
  background: rgba(74,222,128,0.13); color: #4ade80;
  white-space: nowrap;
}
.prog-koppel-dot {
  display: inline-block;
  width: 7px; height: 7px; border-radius: 50%;
  background: #4ade80;
  flex-shrink: 0;
}

/* ---------- BOTTOM TAB NAV (mobile only) ---------- */
.bottom-nav {
  display: none;
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 99;
  background: rgba(11,15,21,.98);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-top: 1px solid var(--border);
  padding: 6px 4px;
  padding-bottom: calc(6px + env(safe-area-inset-bottom));
  justify-content: space-around;
  align-items: stretch;
  gap: 2px;
}
.bottom-nav .bn-item {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  background: transparent;
  border: none;
  color: var(--text-3);
  font-size: 10px;
  font-weight: 600;
  padding: 6px 2px;
  border-radius: 10px;
  cursor: pointer;
  transition: color .15s, background .15s;
  -webkit-tap-highlight-color: transparent;
  min-height: 52px;
}
.bottom-nav .bn-item svg {
  width: 22px; height: 22px;
  stroke-width: 2;
}
.bottom-nav .bn-item:active { background: var(--bg-3); }
.bottom-nav .bn-item.active {
  color: var(--primary);
}
.bottom-nav .bn-label {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
  line-height: 1.1;
}

/* Tappable mobile topbar logo/title (go to dashboard) */
.mobile-topbar .mt-home {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  text-align: left;
}

/* Sticky form actions on mobile */
.form-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 18px;
}

/* ===== COMPARE VIEW ===== */
.compare-shell { display: flex; flex-direction: column; gap: 16px; }
.compare-picker {
  background: linear-gradient(180deg, var(--panel) 0%, var(--panel-2) 100%);
  border: 1px solid var(--border); border-radius: var(--radius);
  padding: 14px; box-shadow: var(--shadow);
}
.compare-picker-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.compare-picker-title { font-weight: 700; font-size: 14px; letter-spacing: .2px; }
.compare-search {
  flex: 1; max-width: 360px;
  background: var(--bg-2); color: var(--text);
  border: 1px solid var(--border-2); border-radius: 8px;
  padding: 8px 12px; font-size: 13px;
}
.compare-search:focus { outline: none; border-color: var(--primary-2); }
.compare-picker-list {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 8px; max-height: 220px; overflow-y: auto; padding-right: 4px;
}
.compare-pick {
  display: flex; align-items: center; gap: 10px;
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: 8px; padding: 8px 10px;
  cursor: pointer; transition: all .18s; text-align: left;
}
.compare-pick:hover { border-color: var(--primary-2); transform: translateY(-1px); }
.compare-pick.selected { background: linear-gradient(180deg, rgba(227,6,19,.18), rgba(227,6,19,.06)); border-color: var(--primary-2); }
.compare-pick-avatar {
  width: 28px; height: 28px; flex-shrink: 0;
  border-radius: 50%; background: var(--bg-3);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 11px; color: var(--text-2);
  border: 1px solid var(--border-2);
}
.compare-pick-body { flex: 1; min-width: 0; }
.compare-pick-name { font-weight: 600; font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.compare-pick-meta { font-size: 11px; color: var(--text-3); margin-top: 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.compare-pick-grade {
  font-size: 10px; font-weight: 700; color: white;
  padding: 2px 6px; border-radius: 4px; flex-shrink: 0;
  background: var(--grade-c);
}
.compare-pick-grade.A { background: var(--grade-a); }
.compare-pick-grade.B { background: var(--grade-b); }
.compare-pick-grade.C { background: var(--grade-c); }
.compare-pick-grade.D { background: var(--grade-d); }

.compare-selected { display: flex; flex-wrap: wrap; gap: 8px; }
.compare-chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 8px 6px 4px; border-radius: 999px;
  background: var(--panel);
  border: 1.5px solid var(--player-color, var(--border-2));
  font-size: 12px; font-weight: 600;
}
.compare-chip .dot { width: 18px; height: 18px; border-radius: 50%; background: var(--player-color, var(--text-3)); flex-shrink: 0; }
.compare-chip .x { background: transparent; border: none; color: var(--text-2); cursor: pointer; font-size: 16px; line-height: 1; padding: 0 4px; margin-left: 2px; }
.compare-chip .x:hover { color: var(--primary-2); }

/* v70h-s29: hero-slots boven, inline empty-state */
.compare-hero {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
}
.compare-slot {
  position: relative;
  background: var(--panel);
  border-radius: var(--radius);
  padding: 16px 10px 14px;
  min-height: 168px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 6px;
  text-align: center;
  transition: transform .15s, border-color .15s, box-shadow .15s;
  overflow: hidden;
}
.compare-slot.filled {
  border: 1px solid var(--player-color, var(--border-2));
  background:
    linear-gradient(180deg, rgba(255,255,255,.04) 0%, var(--panel) 65%),
    linear-gradient(180deg, var(--player-color, var(--panel)) 0%, var(--panel) 100%);
  box-shadow: 0 6px 20px rgba(0,0,0,.18);
}
.compare-slot.filled::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, var(--player-color, transparent) 0%, transparent 50%);
  opacity: .14; pointer-events: none;
}
.compare-slot.empty {
  border: 1.5px dashed var(--border-2);
  color: var(--text-3);
  cursor: pointer;
}
.compare-slot.empty:hover {
  border-color: var(--primary-2);
  color: var(--text-2);
  transform: translateY(-2px);
}
.compare-slot-avatar {
  width: 54px; height: 54px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--player-color, var(--bg-3)) 0%, var(--player-color-2, var(--bg-3)) 100%);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 18px; color: #fff;
  border: 2px solid rgba(255,255,255,.22);
  box-shadow: 0 4px 14px rgba(0,0,0,.32);
  position: relative; z-index: 1;
}
.compare-slot-name {
  font-weight: 700; font-size: 13px; color: var(--text);
  line-height: 1.25;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; text-overflow: ellipsis;
  position: relative; z-index: 1;
  max-width: 100%;
}
.compare-slot-meta {
  font-size: 11px; color: var(--text-2);
  line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; text-overflow: ellipsis;
  position: relative; z-index: 1;
  max-width: 100%;
}
.compare-slot-grade {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 26px; padding: 2px 9px;
  border-radius: 999px;
  font-size: 11px; font-weight: 800; color: #fff;
  background: var(--grade-c);
  margin-top: 2px;
  position: relative; z-index: 1;
}
.compare-slot-grade.A { background: var(--grade-a); }
.compare-slot-grade.B { background: var(--grade-b); }
.compare-slot-grade.C { background: var(--grade-c); }
.compare-slot-grade.D { background: var(--grade-d); }
.compare-slot-remove {
  position: absolute; top: 6px; right: 6px;
  width: 24px; height: 24px;
  border-radius: 50%;
  background: rgba(0,0,0,.45); color: #fff;
  border: none; cursor: pointer;
  font-size: 15px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .15s, background .15s;
  z-index: 2;
}
.compare-slot.filled:hover .compare-slot-remove,
.compare-slot.filled:focus-within .compare-slot-remove { opacity: 1; }
.compare-slot-remove:hover { background: rgba(229,57,53,.85); }
.compare-slot-num {
  position: absolute; top: 8px; left: 10px;
  font-size: 10px; font-weight: 700; color: var(--text-3);
  letter-spacing: .5px;
}
.compare-slot.filled .compare-slot-num { color: rgba(255,255,255,.55); }
.compare-slot-add {
  font-size: 34px; font-weight: 300; line-height: 1;
  color: var(--text-3); opacity: .7;
}
.compare-slot-add-label {
  font-size: 11px; font-weight: 600;
  letter-spacing: .3px;
  text-transform: uppercase;
}

.compare-empty-inline {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 18px;
  background: linear-gradient(135deg, rgba(229,57,53,.08), rgba(229,57,53,.02));
  border: 1px solid rgba(229,57,53,.20);
  border-radius: var(--radius);
}
.compare-empty-inline .compare-empty-text { flex: 1; min-width: 0; }
.compare-empty-inline .compare-empty-title { font-weight: 700; font-size: 14px; color: var(--text); margin-bottom: 2px; }
.compare-empty-inline .compare-empty-sub { font-size: 12px; color: var(--text-2); }
.compare-empty-inline svg { flex-shrink: 0; color: var(--primary); opacity: .65; }

/* keep legacy .compare-empty for any other callers, but hidden default */
.compare-empty { display: none; }
/* v70h-s31: oude spelerslijst onderaan compare-shell volledig verbergen.
   Alle interactie loopt nu via de slot-modal (#cmp-add-modal-backdrop). */
#view-compare .compare-picker { display: none !important; }

@media (max-width: 1100px) {
  .compare-hero { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ===== v70h-s31: Compare add-player modal ===== */
.cmp-add-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.72);
  backdrop-filter: blur(3px);
  z-index: 9200;
  display: none; align-items: flex-start; justify-content: center;
  padding: 24px 16px;
  overflow-y: auto;
}
.cmp-add-modal-backdrop.show { display: flex; }
.cmp-add-modal {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 16px;
  width: 100%; max-width: 880px;
  color: var(--text);
  box-shadow: 0 24px 60px rgba(0,0,0,.55);
  margin: auto;
  overflow: hidden;
  display: flex; flex-direction: column;
}
.cmp-add-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, var(--panel), var(--bg-2));
}
.cmp-add-modal-head h3 {
  margin: 0; font-size: 16px; font-weight: 700;
  display: flex; align-items: center; gap: 10px;
}
.cmp-add-modal-head .cmp-add-counter {
  font-size: 11px; font-weight: 700; color: var(--text-2);
  background: var(--panel-2);
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid var(--border-2);
}
.cmp-add-modal-head .cmp-add-close {
  background: transparent; border: none; color: var(--text-2);
  cursor: pointer; font-size: 22px; line-height: 1;
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s, color .15s;
}
.cmp-add-modal-head .cmp-add-close:hover { background: var(--panel-2); color: var(--text); }
.cmp-add-modal-search {
  padding: 12px 20px;
  border-bottom: 1px solid var(--border);
}
.cmp-add-modal-search input {
  width: 100%; padding: 10px 14px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 10px;
  color: var(--text); font-size: 14px;
  outline: none;
  transition: border-color .15s;
}
.cmp-add-modal-search input:focus { border-color: var(--primary); }
.cmp-add-modal-filters {
  padding: 12px 20px 14px;
  border-bottom: 1px solid var(--border);
  background: var(--bg);
  display: flex; flex-direction: column; gap: 10px;
}
.cmp-filter-row {
  display: flex; align-items: center; gap: 10px;
  flex-wrap: wrap;
}
.cmp-filter-label {
  font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .5px;
  color: var(--text-3);
  min-width: 84px;
}
/* v70h-s35: categorie-knoppen, dropdowns, leeftijd-rij, provincie-select */
.cmp-cat-row {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 6px; margin-bottom: 8px;
}
.cmp-cat-btn {
  appearance: none; border: 1px solid var(--border-2, var(--border));
  cursor: pointer;
  background: rgba(255,255,255,0.04); color: var(--text);
  padding: 10px 8px; border-radius: 10px;
  font-size: 12.5px; font-weight: 700;
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
  position: relative;
}
.cmp-cat-btn:hover { border-color: var(--primary, #0b8c52); }
.cmp-cat-btn.active {
  background: linear-gradient(135deg, var(--primary, #0b8c52), var(--primary-2, #0a8f5e));
  border-color: var(--primary, #0b8c52); color: #fff;
}
.cmp-cat-btn .cmp-cat-ico { font-size: 18px; line-height: 1; }
.cmp-cat-btn .cmp-cat-count {
  position: absolute; top: 4px; right: 6px;
  background: #ffd700; color: #000;
  font-size: 10px; font-weight: 800;
  min-width: 16px; height: 16px; padding: 0 4px;
  border-radius: 999px; display: none;
  align-items: center; justify-content: center;
}
.cmp-cat-btn.has-selection .cmp-cat-count { display: inline-flex; }
.cmp-cat-dropdown {
  display: none;
  background: rgba(0,0,0,0.25); border: 1px solid var(--border-2, var(--border));
  border-radius: 10px; padding: 10px 12px;
  flex-direction: column; gap: 6px; margin-bottom: 4px;
}
.cmp-cat-dropdown.show { display: flex; }
.cmp-cat-opt {
  appearance: none; border: 1px solid var(--border-2, var(--border));
  cursor: pointer;
  background: rgba(255,255,255,0.03); color: var(--text);
  padding: 8px 12px; border-radius: 8px; font-size: 13px;
  text-align: left;
  display: flex; justify-content: space-between; align-items: center; gap: 8px;
  transition: background .15s, border-color .15s, color .15s;
}
.cmp-cat-opt:hover { border-color: var(--primary, #0b8c52); }
.cmp-cat-opt.active {
  background: var(--primary, #0b8c52); color: #fff;
  border-color: var(--primary, #0b8c52);
}
.cmp-cat-opt .code { font-size: 11px; color: var(--text-3, #9aa5b1); font-weight: 700; }
.cmp-cat-opt.active .code { color: rgba(255,255,255,0.85); }
.cmp-prov-select {
  appearance: none; border: 1px solid var(--border-2, var(--border));
  background: var(--bg); color: var(--text);
  padding: 8px 30px 8px 12px; border-radius: 8px; font-size: 13px;
  cursor: pointer; min-width: 200px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%239aa5b1' d='M0 0l5 6 5-6z'/></svg>");
  background-repeat: no-repeat; background-position: right 10px center;
}
.cmp-age-row { gap: 4px; }
.cmp-age-row .cmp-filter-chip { padding: 4px 9px; font-size: 11px; min-width: 38px; text-align: center; }
.cmp-filter-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 999px;
  font-size: 12px; font-weight: 600;
  color: var(--text-2);
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s, transform .1s;
  user-select: none;
}
.cmp-filter-chip:hover { border-color: var(--primary); color: var(--text); }
.cmp-filter-chip.active {
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  border-color: var(--primary);
  color: #fff;
}
.cmp-filter-chip .chip-mark {
  font-size: 11px; opacity: .8;
}
.cmp-filter-chip.active .chip-mark { opacity: 1; }
.cmp-filter-chip.grade-chip { min-width: 36px; justify-content: center; }
.cmp-filter-chip.grade-chip.A.active { background: linear-gradient(135deg, var(--grade-a), #0a8f5e); border-color: var(--grade-a); }
.cmp-filter-chip.grade-chip.B.active { background: linear-gradient(135deg, var(--grade-b), #0e7ab6); border-color: var(--grade-b); }
.cmp-filter-chip.grade-chip.C.active { background: linear-gradient(135deg, var(--grade-c), #c47a00); border-color: var(--grade-c); }
.cmp-filter-chip.grade-chip.D.active { background: linear-gradient(135deg, var(--grade-d), #a83232); border-color: var(--grade-d); }
.cmp-filter-clear {
  margin-left: auto;
  background: transparent; border: none;
  color: var(--text-3); font-size: 11px; font-weight: 600;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 6px;
  text-decoration: underline;
}
.cmp-filter-clear:hover { color: var(--primary); }

.cmp-add-modal-body {
  flex: 1; overflow-y: auto;
  padding: 14px 20px 20px;
  max-height: 56vh;
}
.cmp-add-results-meta {
  font-size: 11px; color: var(--text-3);
  margin-bottom: 10px;
}
.cmp-add-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 10px;
}
.cmp-add-card {
  position: relative;
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  background: var(--panel);
  border: 1px solid var(--border-2);
  border-radius: 10px;
  cursor: pointer;
  text-align: left;
  transition: border-color .15s, transform .12s, background .15s;
}
.cmp-add-card:hover {
  border-color: var(--primary);
  transform: translateY(-1px);
}
.cmp-add-card.selected {
  border-color: var(--grade-a);
  background: linear-gradient(135deg, rgba(11,196,132,.10), var(--panel));
}
.cmp-add-card.disabled {
  opacity: .45; cursor: not-allowed;
}
.cmp-add-card.disabled:hover { transform: none; border-color: var(--border-2); }
.cmp-add-avatar {
  width: 38px; height: 38px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--bg-3), #1a2332);
  border: 1.5px solid var(--border-2);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 12px; color: var(--text);
  flex-shrink: 0;
}
.cmp-add-body {
  flex: 1; min-width: 0;
}
.cmp-add-name {
  font-weight: 700; font-size: 13px; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cmp-add-meta {
  font-size: 11px; color: var(--text-2);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-top: 2px;
}
.cmp-add-grade {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 24px; height: 24px;
  padding: 0 7px;
  border-radius: 999px;
  font-size: 11px; font-weight: 800; color: #fff;
  background: var(--grade-c);
  flex-shrink: 0;
}
.cmp-add-grade.A { background: var(--grade-a); }
.cmp-add-grade.B { background: var(--grade-b); }
.cmp-add-grade.C { background: var(--grade-c); }
.cmp-add-grade.D { background: var(--grade-d); }
.cmp-add-card.selected::after {
  content: '\2713';
  position: absolute; top: 6px; right: 8px;
  font-size: 12px; font-weight: 900;
  color: var(--grade-a);
}
.cmp-add-empty {
  padding: 28px 12px;
  text-align: center;
  color: var(--text-3);
  font-size: 13px;
}

@media (max-width: 560px) {
  .cmp-add-modal-head { padding: 12px 14px; }
  .cmp-add-modal-search { padding: 10px 14px; }
  .cmp-add-modal-filters { padding: 10px 14px 12px; }
  .cmp-add-modal-body { padding: 10px 14px 14px; max-height: 50vh; }
  .cmp-filter-label { min-width: 64px; font-size: 10px; }
  .cmp-add-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}
@media (max-width: 560px) {
  .compare-hero { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .compare-slot { min-height: 140px; padding: 12px 6px 10px; }
  .compare-slot-avatar { width: 44px; height: 44px; font-size: 15px; }
  .compare-empty-inline { padding: 12px 14px; gap: 10px; }
  .compare-empty-inline svg { width: 28px; height: 28px; }
}

.compare-results { display: flex; flex-direction: column; gap: 16px; }
.compare-card {
  background: linear-gradient(180deg, var(--panel) 0%, var(--panel-2) 100%);
  border: 1px solid var(--border); border-radius: var(--radius);
  padding: 16px; box-shadow: var(--shadow);
}
.compare-card-title {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; margin-bottom: 14px;
  font-weight: 700; font-size: 14px; letter-spacing: .2px;
}
.compare-card-sub { font-size: 11px; color: var(--text-3); font-weight: 500; }
.compare-twocol { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

.compare-gauges { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.compare-gauge {
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: 10px; padding: 14px;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  transition: transform .2s, border-color .2s; cursor: pointer;
}
.compare-gauge:hover { transform: translateY(-2px); border-color: var(--player-color, var(--border-2)); }
.compare-gauge-name { font-weight: 700; font-size: 13px; text-align: center; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.compare-gauge-meta { font-size: 10.5px; color: var(--text-3); text-align: center; }
.compare-gauge-ring { position: relative; width: 110px; height: 110px; }
.compare-gauge-ring svg { transform: rotate(-90deg); }
.compare-gauge-ring-bg { stroke: var(--bg-3); }
.compare-gauge-ring-fg { stroke: var(--player-color, var(--primary)); transition: stroke-dashoffset .8s cubic-bezier(.4,0,.2,1); }
.compare-gauge-ring-pot { stroke: var(--secondary); opacity: .65; }
.compare-gauge-center {
  position: absolute; inset: 0; pointer-events: none;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
.compare-gauge-grade { font-size: 28px; font-weight: 900; letter-spacing: -1px; color: var(--player-color, var(--text)); line-height: 1; }
.compare-gauge-score { font-size: 10px; color: var(--text-3); margin-top: 2px; letter-spacing: .5px; }
.compare-gauge-dual { display: flex; gap: 12px; font-size: 10px; color: var(--text-3); width: 100%; justify-content: space-around; border-top: 1px solid var(--border); padding-top: 8px; }
.compare-gauge-dual b { display: block; font-size: 13px; color: var(--text); font-weight: 700; margin-top: 2px; }

.compare-radar-wrap { display: flex; align-items: center; justify-content: center; padding: 8px 0; }
.compare-radar-wrap canvas { max-width: 100%; height: auto; display: block; }
.compare-legend { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 8px; font-size: 12px; }
.compare-legend-item { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; background: var(--bg-2); border: 1px solid var(--border); }
.compare-legend-dot { width: 10px; height: 10px; border-radius: 50%; }

.compare-bars { display: flex; flex-direction: column; gap: 14px; }
.compare-bar-group-title { font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 6px; display: flex; justify-content: space-between; }
.compare-bar-group-title em { font-style: normal; color: var(--text-3); font-size: 10.5px; font-weight: 500; }
.compare-bar-rows { display: flex; flex-direction: column; gap: 4px; }
.compare-bar-row { display: grid; grid-template-columns: 90px 1fr 30px; align-items: center; gap: 8px; font-size: 11.5px; }
.compare-bar-name { color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.compare-bar-track { height: 14px; background: var(--bg-3); border-radius: 7px; overflow: hidden; border: 1px solid var(--border); }
.compare-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--player-color, var(--primary)) 0%, var(--player-color-2, var(--primary-2)) 100%);
  border-radius: 6px; transition: width .9s cubic-bezier(.4,0,.2,1);
}
.compare-bar-grade { font-weight: 700; font-size: 11px; color: var(--text-2); text-align: right; }

.compare-table-wrap { overflow-x: auto; margin: 0 -4px; }
.compare-table { width: 100%; border-collapse: collapse; font-size: 12.5px; min-width: 480px; }
.compare-table th, .compare-table td { padding: 9px 10px; text-align: left; border-bottom: 1px solid var(--border); vertical-align: middle; }
.compare-table thead th { background: var(--bg-2); position: sticky; top: 0; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--text-2); }
.compare-table tbody th { font-weight: 600; color: var(--text-2); background: var(--bg-2); font-size: 11.5px; }
.compare-table td { color: var(--text); }
.compare-table .cmp-cell-grade { display: inline-block; min-width: 22px; padding: 2px 7px; border-radius: 5px; font-weight: 700; font-size: 11px; color: white; text-align: center; }
.compare-table .cmp-cell-grade.A { background: var(--grade-a); }
.compare-table .cmp-cell-grade.B { background: var(--grade-b); }
.compare-table .cmp-cell-grade.C { background: var(--grade-c); }
.compare-table .cmp-cell-grade.D { background: var(--grade-d); }
.compare-table .cmp-best { box-shadow: 0 0 0 2px var(--grade-a) inset; }
.compare-table .cmp-name-link { font-weight: 700; color: var(--text); cursor: pointer; border-bottom: 1px dotted var(--text-3); }
.compare-table .cmp-name-link:hover { color: var(--primary-2); border-bottom-color: var(--primary-2); }
/* ── Spelersprofiel — vergelijk-knoppen ── */
.dtl-cmp-btn {
  border-color: var(--secondary);
  color: var(--secondary);
  font-weight: 600;
}
.dtl-cmp-btn:hover { background: rgba(245,197,24,.12); }
.dtl-cmp-active {
  background: rgba(245,197,24,.18);
  border-color: var(--secondary) !important;
  color: var(--secondary) !important;
}
.dtl-cmp-goto {
  background: linear-gradient(135deg, var(--secondary), #e6a800);
  color: #1a1200;
  border-color: var(--secondary);
  font-weight: 700;
}
.dtl-cmp-goto:hover { opacity: .88; }

/* ── Vergelijken: Advies-widget ── */
/* s20: CTA-balk onderaan vergelijking */
.cmp-cta-bar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
  padding: 18px 0 4px;
  border-top: 1px solid var(--border, rgba(255,255,255,.08));
  margin-top: 8px;
}
.cmp-cta-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
@media (max-width: 480px) {
  .cmp-cta-bar { justify-content: stretch; }
  .cmp-cta-btn { flex: 1; justify-content: center; }
}

.cmp-advies-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
}
.cmp-advies-card {
  background: var(--bg-3);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 12px;
  text-align: center;
  transition: transform .15s;
}
.cmp-advies-card:hover { transform: translateY(-2px); }
.cmp-advies-naam {
  font-size: 12px; font-weight: 700;
  margin-bottom: 8px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cmp-advies-label {
  font-size: 11.5px; font-weight: 700;
  padding: 5px 10px; border-radius: 20px;
  display: inline-block; margin-bottom: 6px;
}
.cmp-advies-label.A { background: rgba(34,197,94,.2);  color: var(--grade-a); }
.cmp-advies-label.B { background: rgba(132,204,22,.2); color: var(--grade-b); }
.cmp-advies-label.C { background: rgba(245,158,11,.2); color: var(--grade-c); }
.cmp-advies-label.D { background: rgba(239,68,68,.2);  color: var(--grade-d); }
.cmp-advies-meta { font-size: 10px; color: var(--text-3); }

/* ── Vergelijken: Sterkste punten ── */
.cmp-strengths-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 12px;
}
.cmp-strengths-col { display: flex; flex-direction: column; gap: 5px; }
.cmp-strengths-head {
  font-size: 12px; font-weight: 700;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 2px;
}
.cmp-strengths-section {
  font-size: 10px; text-transform: uppercase;
  letter-spacing: .7px; color: var(--text-3);
  margin-top: 6px; margin-bottom: 2px; font-weight: 600;
}
.cmp-strengths-section.dev { color: var(--grade-d); }
.cmp-strengths-row {
  display: flex; align-items: center; gap: 7px;
  font-size: 11.5px;
}
.cmp-strengths-grade {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 5px;
  font-size: 10px; font-weight: 800; color: #000; flex-shrink: 0;
}
.cmp-strengths-grade.A { background: var(--grade-a); }
.cmp-strengths-grade.B { background: var(--grade-b); }
.cmp-strengths-grade.C { background: var(--grade-c); color: #fff; }
.cmp-strengths-grade.D { background: var(--grade-d); color: #fff; }
.cmp-strengths-label { color: var(--text-2); font-size: 11px; }
.cmp-strengths-wapen {
  margin-top: 8px; font-size: 10.5px;
  color: var(--secondary); font-weight: 600;
  background: rgba(245,197,24,.08);
  border: 1px solid rgba(245,197,24,.2);
  border-radius: 6px; padding: 5px 8px;
  line-height: 1.4;
}
.cmp-strengths-empty { font-size: 11px; color: var(--text-3); padding: 8px 0; }
@media (max-width: 760px){
  .cmp-advies-grid { grid-template-columns: repeat(2, 1fr); }
  .cmp-strengths-grid { grid-template-columns: repeat(2, 1fr); }
}

.compare-table-header-cell { display: flex; align-items: center; gap: 6px; }
.compare-table-header-cell .dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }

@media (max-width: 900px) {
  .compare-twocol { grid-template-columns: 1fr; }
  .compare-bar-row { grid-template-columns: 80px 1fr 28px; }
}

/* Responsive */
@media (max-width: 900px) {
  /* s94: PWA/mobiel compacter — alle tekst en iconen ~8% kleiner dan de
     desktop-website voor meer overzicht en rust op het kleine scherm.
     zoom schaalt proportioneel (tekst, iconen, padding) zonder de layout te
     breken; modals hangen aan <body> dus die schalen automatisch mee. */
  body { -webkit-text-size-adjust: 100%; zoom: 0.92; }

  /* s35bh: Overzichtsmap-panel weg op app — alleen op desktop tonen */
  #dash-overzichtsmap-panel { display: none !important; }

  .mobile-topbar { display: flex; }
  .bottom-nav { display: flex; }

  .app-grid {
    grid-template-columns: 1fr;
  }

  /* Sidebar becomes a slide-in drawer */
  .sidebar {
    position: fixed;
    top: 0; left: 0;
    height: 100vh; height: 100dvh;
    width: 78%;
    max-width: 320px;
    z-index: 950;
    transform: translateX(-100%);
    transition: transform .28s cubic-bezier(.2,.8,.2,1);
    border-right: 1px solid var(--border);
    box-shadow: 6px 0 24px rgba(0,0,0,.4);
    overflow-y: auto;
    padding-top: calc(16px + env(safe-area-inset-top));
    padding-bottom: calc(16px + env(safe-area-inset-bottom));
  }
  .sidebar.open { transform: translateX(0); }

  .main {
    padding: 14px;
    /* Reserve space for fixed bottom-nav (52px + safe-area + breathing room) */
    padding-bottom: calc(84px + env(safe-area-inset-bottom));
    max-width: 100vw;
    overflow-x: clip;
    /* sh-v363: sidebar is een fixed drawer in mobiele modus, dus app-grid is
       1 kolom. .main heeft op desktop grid-column:2 (naast sidebar); dat moet
       hier terug naar kolom 1, anders ontstaat een lege spookkolom links en
       wordt de content (o.a. Programma-week) in een smalle rechterkolom geperst. */
    grid-column: 1;
  }

  .view { max-width: 100%; overflow-x: clip; }
  .panel, .card { max-width: 100%; }

  .topbar {
    flex-wrap: wrap;
    gap: 10px;
  }
  .topbar .search { width: 100%; order: 3; }

  .kpi-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .kpi-card { padding: 14px; }
  .kpi-value { font-size: 22px; }

  .row-grid, .pitch-wrap { grid-template-columns: 1fr; }
  .field-row, .field-row.three, .dual-grade, .detail-criteria-grid { grid-template-columns: 1fr; gap: 12px; }

  /* Touch targets: 48px minimum on mobile for sideline use */
  .btn, button.btn, .pill, .tab, select,
  input[type="text"], input[type="number"], input[type="date"],
  input[type="email"], input[type="password"], textarea {
    min-height: 48px;
  }
  .btn { padding: 12px 16px; }

  /* Prevent iOS auto-zoom on focus (input font-size must be >= 16px) */
  input, select, textarea {
    font-size: 16px !important;
  }

  /* Bigger, easier grade picker buttons on mobile */
  .grade-pick {
    min-height: 48px !important;
    min-width: 48px !important;
    font-size: 16px !important;
    font-weight: 700;
  }
  .grade-picker { gap: 10px; flex-wrap: wrap; }

  /* Form sections more comfortable and edge-to-edge */
  .form-section { padding: 14px; margin-bottom: 12px; }
  .form-section-title { font-size: 14px; }
  .criteria-block { padding: 12px; }

  /* Sticky save bar in the report form */
  #report-form .form-actions {
    position: sticky;
    bottom: calc(70px + env(safe-area-inset-bottom));
    background: linear-gradient(to top, rgba(11,15,21,.98) 70%, rgba(11,15,21,0));
    padding: 12px 0 4px;
    margin: 18px -14px 0;
    padding-left: 14px;
    padding-right: 14px;
    z-index: 50;
  }
  #report-form .form-actions .btn { flex: 1; justify-content: center; }
  #report-form .form-actions .btn-primary { flex: 2; }

  /* Modals go full-screen on mobile */
  .modal { align-items: stretch; }
  /* sh-v352: backdrop top-padding rekent met PWA-statusbalk (tijd/batterij/notch)
     zodat de modal-header (incl. sluit-knop) nooit achter de statusbalk valt. */
  .modal-backdrop {
    padding-top: max(20px, calc(env(safe-area-inset-top) + 12px));
    padding-bottom: max(20px, calc(env(safe-area-inset-bottom) + 12px));
  }
  .modal-content {
    width: 100%;
    max-width: 100%;
    max-height: 100vh;
    max-height: 100dvh;
    border-radius: 0;
    margin: 0;
    padding: 18px;
    padding-top: calc(18px + env(safe-area-inset-top));
    padding-bottom: calc(18px + env(safe-area-inset-bottom));
    overflow-y: auto;
  }

  /* Tables: allow horizontal scroll instead of squashing */
  .table-wrap, .data-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }
  .table-wrap table, .data-table-wrap table { min-width: 0; }

  /* Filters and rows wrap nicely */
  .filters, .filter-row, .data-filters { flex-wrap: wrap; gap: 8px; }
  .filter-input, .filter-select { flex: 1 1 100%; min-width: 0; }

  /* Match list and dropdown items full-width */
  .matches-list, .match-card { max-width: 100%; }
  .match-dropdown-row { flex-wrap: wrap; }


  /* Geo panel stacks */
  .geo-panel-wrap { grid-template-columns: 1fr; }
  /* s35aa: op smaller scherm map iets korter, lijst zelfstandig scrollbaar */
  .geo-map-wrap { height: 240px; min-height: 200px; }
  .geo-list-panel { height: auto; min-height: 0; max-height: 320px; }

  /* Cards/lists tighter */
  .card { padding: 14px; }
  h1 { font-size: 20px; }
  h2 { font-size: 17px; }
  h3 { font-size: 15px; }
}

@media (max-width: 480px) {
  /* s35db: 2x2 grid op smalle telefoons i.p.v. 1 kolom stapeling */
  .kpi-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .kpi-card { padding: 12px; }
  .kpi-label { font-size: 10px; letter-spacing: .04em; }
  .kpi-value { font-size: 22px; }
  .kpi-sub { font-size: 11px; }
  .topbar h1 { font-size: 17px; }
  .mobile-topbar .mt-title { font-size: 14px; }
}

/* PWA standalone display tweaks */
@media (display-mode: standalone) {
  /* overscroll-behavior-y: none verwijderd — blokkeerde wheel-scroll op desktop-PWA */
  html, body { overscroll-behavior-y: auto; overflow-y: auto; }
  /* v70h-s28: install-btn verbergen wordt via JS-klasse afgehandeld
     (.install-btn--hidden) zodat oude browser-cache CSS niet conflicteert. */
}

/* ---------- GEO MAP WIDGET ---------- */
.geo-panel-wrap {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 16px;
  align-items: stretch;
}
.geo-breadcrumb {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  margin-bottom: 12px; font-size: 12px;
}
.geo-crumb {
  background: var(--bg-3); border: 1px solid var(--border);
  padding: 4px 10px; border-radius: 999px;
  color: var(--text-2); cursor: pointer; transition: all .15s;
}
.geo-crumb:hover { border-color: var(--primary); color: var(--text); }
.geo-crumb.current { background: var(--primary); border-color: var(--primary); color: white; cursor: default; }
.geo-crumb-sep { color: var(--text-3); font-size: 10px; }

.geo-map-wrap {
  position: relative;
  background: var(--bg-3);
  border: 1px solid var(--border); border-radius: 10px;
  padding: 0;
  /* s35aa: vaste hoogte i.p.v. aspect-ratio zodat map en lijst gelijk eindigen */
  height: 320px;
  min-height: 280px;
  overflow: hidden;
}
#geo-leaflet-map {
  width: 100%; height: 100%;
  background: #0e1622;
  border-radius: 10px;
  z-index: 1;
}
/* Leaflet dark-mode tile filter */
#geo-leaflet-map .leaflet-tile-pane {
  filter: invert(1) hue-rotate(180deg) brightness(.92) contrast(.95) saturate(.7);
}
#geo-leaflet-map .leaflet-control-attribution {
  background: rgba(11,15,21,.85); color: var(--text-3);
  border: 1px solid var(--border); border-radius: 4px;
  font-size: 10px; padding: 2px 6px;
}
#geo-leaflet-map .leaflet-control-attribution a { color: var(--text-2); }
#geo-leaflet-map .leaflet-control-zoom a {
  background: var(--panel); color: var(--text);
  border: 1px solid var(--border-2); font-weight: 700;
}
#geo-leaflet-map .leaflet-control-zoom a:hover { background: var(--panel-2); color: var(--primary); }

.scout-marker {
  background: transparent; border: none;
}
.scout-marker-inner {
  display: flex; flex-direction: column; align-items: center;
  transform: translate(-50%, -100%);
  cursor: pointer;
  filter: drop-shadow(0 3px 8px rgba(0,0,0,.7));
  transition: transform .15s;
}
.scout-marker-inner:hover { transform: translate(-50%, -100%) scale(1.12); }
.scout-marker-dot {
  width: 34px; height: 34px; border-radius: 50%;
  background: var(--primary);
  border: 2.5px solid rgba(255,255,255,.9);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 800; color: white;
  transition: transform .15s;
}
.scout-marker-label {
  margin-top: 5px;
  background: rgba(8,12,20,.92);
  border: 1px solid rgba(255,255,255,.15);
  padding: 2px 8px; border-radius: 4px;
  font-size: 10px; font-weight: 600; color: var(--text);
  white-space: nowrap;
  backdrop-filter: blur(4px);
}
.scout-marker.club .scout-marker-dot {
  background: linear-gradient(135deg, var(--secondary), #b88e0a);
  color: #1a1a1a;
}
.scout-marker.team .scout-marker-dot {
  background: linear-gradient(135deg, var(--accent), #2a6fb8);
}

/* Geo filter bar */
.geo-filter-bar {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 8px 0 4px;
}
.geo-filter-btn {
  font-size: 11px; font-weight: 600;
  background: transparent;
  border: 1.5px solid;
  border-radius: 20px;
  padding: 3px 11px;
  cursor: pointer;
  transition: all .15s;
  display: flex; align-items: center; gap: 5px;
}
.geo-filter-btn:hover { opacity: .85; }

/* Dark popup */
.geo-dark-popup .leaflet-popup-content-wrapper {
  background: rgba(14,18,28,.96);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,.7);
  backdrop-filter: blur(8px);
  color: #e8edf8;
}
.geo-dark-popup .leaflet-popup-tip {
  background: rgba(14,18,28,.96);
}
.geo-dark-popup .leaflet-popup-content {
  margin: 12px 14px;
}

.geo-region-badge {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 10px; color: var(--text-3);
  padding: 2px 0; margin-left: 8px;
  font-weight: 500; letter-spacing: 0;
  text-transform: none;
  opacity: .75;
}
.geo-region-badge .dot {
  width: 5px; height: 5px; border-radius: 50%; background: var(--text-3);
}

.geo-list-panel {
  background: var(--bg-3); border: 1px solid var(--border);
  border-radius: 10px; padding: 12px 14px;
  /* s35aa: zelfde hoogte als .geo-map-wrap voor nette grid-rij */
  height: 320px;
  min-height: 280px;
  display: flex; flex-direction: column;
}
/* s35aa: dubbele max-height-declaratie verwijderd; alleen flex-regel hieronder */
.geo-list-title {
  font-size: 12px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); font-weight: 700; margin-bottom: 12px;
}
.geo-list-items { display: flex; flex-direction: column; gap: 6px; flex: 1; overflow-y: auto; min-height: 0; }
.geo-list-item {
  display: flex; align-items: center; gap: 10px;
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: 7px; padding: 9px 12px;
  cursor: pointer; transition: all .15s;
}
.geo-list-item:hover { border-color: var(--primary); transform: translateX(2px); }
.geo-list-item-icon {
  width: 28px; height: 28px; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), #8a0410);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 11px; color: white; flex-shrink: 0;
}
.geo-list-item-info { flex: 1; min-width: 0; }
.geo-list-item-name { font-weight: 600; font-size: 13px; }
.geo-list-item-meta { font-size: 11px; color: var(--text-3); margin-top: 1px; }
.geo-list-item-count {
  background: var(--bg-3); border: 1px solid var(--border-2);
  padding: 3px 8px; border-radius: 999px;
  font-size: 11px; font-weight: 700; color: var(--text-2);
}
.geo-list-item-grades { display: flex; gap: 4px; }
.geo-empty-text {
  text-align: center; padding: 30px 12px; color: var(--text-3); font-size: 12px;
}

/* ---------- CONTACTPERSONEN LIST ---------- */
.contacts-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.contact-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px;
  cursor: pointer;
  transition: transform .12s, border-color .12s, box-shadow .12s;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.contact-card:hover {
  border-color: var(--primary);
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0,0,0,.25);
}
.contact-card-head { display: flex; align-items: center; gap: 12px; }
.contact-avatar {
  width: 42px; height: 42px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: white;
  display: flex; align-items: center; justify-content: center;
  font-weight: 900; font-size: 15px;
  flex-shrink: 0;
}
.contact-name { font-weight: 700; font-size: 14px; color: var(--text); line-height: 1.2; }
.contact-functie { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.contact-club {
  display: inline-block;
  font-size: 11px;
  background: var(--bg-3);
  border: 1px solid var(--border);
  padding: 3px 8px;
  border-radius: 999px;
  color: var(--text-2);
  align-self: flex-start;
}
.contact-row { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-2); min-width: 0; }
.contact-row svg { width: 14px; height: 14px; flex-shrink: 0; color: var(--text-3); }
.contact-row a {
  color: var(--text-2);
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
  flex: 1;
}
.contact-row a:hover { color: var(--primary); text-decoration: underline; }
.contact-row.empty { color: var(--text-3); font-style: italic; }

/* ---------- WEDSTRIJDEN LIST ---------- */
.matches-list { display: flex; flex-direction: column; gap: 10px; }






.match-group-header {
  font-size: 11px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); font-weight: 700;
  padding: 18px 4px 6px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
}
.match-group-header:first-child { padding-top: 0; }
/* ===== s35bs: Wedstrijd-bewerken modal (full-screen) ===== */
.wstr-edit-backdrop {
  position: fixed; inset: 0; z-index: 9998;
  background: rgba(0,0,0,0.72);
  display: none; align-items: stretch; justify-content: center;
  padding: 0;
}
.wstr-edit-backdrop.show { display: flex; }
.wstr-edit-modal {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 0; max-width: 680px; width: 100%;
  max-height: 100vh; overflow-y: auto;
  display: flex; flex-direction: column;
  margin: 0 auto;
}
@media (min-width: 720px) {
  .wstr-edit-backdrop { padding: 24px; align-items: center; }
  .wstr-edit-modal { border-radius: 14px; max-height: 92vh; box-shadow: 0 20px 60px rgba(0,0,0,0.5); }
}
.wstr-edit-head {
  padding: 18px 22px 16px;
  padding-top: max(18px, calc(env(safe-area-inset-top) + 10px));
  border-bottom: 1px solid var(--border);
  display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
  position: sticky; top: 0; background: var(--panel); z-index: 2;
}
.wstr-edit-head-main { flex: 1; min-width: 0; }
.wstr-edit-eyebrow {
  font-size: 10.5px; font-weight: 700; color: var(--accent, #4ea1ff);
  text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 4px;
}
.wstr-edit-title {
  font-size: 18px; font-weight: 800; color: var(--text);
  line-height: 1.3; word-break: break-word;
}
.wstr-edit-sub {
  font-size: 12px; color: var(--text-3); margin-top: 4px;
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
.wstr-edit-sub .pill-inline {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 999px;
  background: var(--bg-2); border: 1px solid var(--border);
  font-size: 11px; color: var(--text-2);
}
.wstr-edit-sub .pill-inline.locked {
  background: rgba(127,217,158,0.16); color: #7fd99e; border-color: #7fd99e;
}
.wstr-edit-body { padding: 16px 22px 8px; flex: 1; }

.wstr-edit-section { margin-bottom: 20px; }
.wstr-edit-section:last-child { margin-bottom: 8px; }
.wstr-edit-section-head {
  display: flex; align-items: center; gap: 8px; margin-bottom: 10px;
  padding-bottom: 6px; border-bottom: 1px dashed var(--border);
}
.wstr-edit-section-icon {
  width: 22px; height: 22px; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-2); color: var(--text-2);
  /* DEEL 8: emoji-iconen (bv. 👥) renderen paars op Windows en lijken dan op de
     paarse OBS-markering. Neutraliseren naar grijstint zodat het geen type-signaal lijkt. */
  filter: grayscale(1) opacity(0.85);
}
.wstr-edit-section-title {
  font-size: 13px; font-weight: 800; color: var(--text);
  text-transform: uppercase; letter-spacing: 0.05em;
}
.wstr-edit-section-count {
  font-size: 11px; color: var(--text-3); margin-left: auto;
  background: var(--bg-2); padding: 2px 8px; border-radius: 999px;
}

/* Speler-rij in modal */
.wstr-edit-item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; background: var(--bg-2);
  border: 1px solid var(--border); border-radius: 8px;
  margin-bottom: 6px; transition: border-color .15s, background .15s;
}
.wstr-edit-item:hover { border-color: var(--accent, #4ea1ff); background: var(--panel); }
.wstr-edit-item.is-concept {
  border-style: dashed; border-color: rgba(245,200,66,0.55);
  background: rgba(245,200,66,0.06);
}
.wstr-edit-item-avatar {
  flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%;
  background: var(--primary); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 12px;
}
.wstr-edit-item-main { flex: 1; min-width: 0; }
.wstr-edit-item-name {
  font-size: 13.5px; font-weight: 700; color: var(--text);
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.wstr-edit-item-sub { font-size: 11.5px; color: var(--text-3); margin-top: 2px; }
.wstr-edit-item-sn-prev { font-size: 11px; color: var(--text-3); margin-top: 4px; font-style: italic; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: 0.8; }
.wstr-edit-note-action.obs { background: rgba(99,102,241,0.15); border-color: rgba(99,102,241,0.4); color: #818cf8; }
.wstr-edit-note-action.obs:hover { background: rgba(99,102,241,0.25); }
.wstr-edit-item-actions {
  display: flex; gap: 6px; flex-shrink: 0;
}
.wstr-edit-mini-btn {
  background: transparent; color: var(--text-2);
  border: 1px solid var(--border);
  padding: 5px 10px; border-radius: 6px;
  font-size: 11.5px; font-weight: 700; cursor: pointer;
  display: inline-flex; align-items: center; gap: 4px;
  transition: all .15s; font-family: inherit;
}
.wstr-edit-mini-btn:hover { border-color: var(--accent, #4ea1ff); color: var(--accent, #4ea1ff); }
.wstr-edit-mini-btn.primary {
  background: var(--primary); border-color: var(--primary); color: #fff;
}
.wstr-edit-mini-btn.primary:hover { filter: brightness(1.1); }

/* Snel-notitie / wedstrijdnotitie rij */
.wstr-edit-note {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 10px 12px; border-radius: 8px;
  margin-bottom: 6px; transition: all .15s;
}
.wstr-edit-note.snel {
  background: rgba(245,200,66,0.08);
  border: 1px solid rgba(245,200,66,0.30);
}
.wstr-edit-note.wstr {
  background: rgba(78,161,255,0.06);
  border: 1px solid rgba(78,161,255,0.24);
}
.wstr-edit-note-icon {
  flex-shrink: 0; width: 24px; height: 24px; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px;
}
.wstr-edit-note.snel .wstr-edit-note-icon { background: rgba(245,200,66,0.18); color: #f5c842; }
.wstr-edit-note.wstr .wstr-edit-note-icon { background: rgba(78,161,255,0.18); color: #4ea1ff; }
.wstr-edit-note-main { flex: 1; min-width: 0; font-size: 12.5px; color: var(--text); line-height: 1.45; }
.wstr-edit-note-title {
  font-size: 12.5px; font-weight: 700; color: var(--text); margin-bottom: 3px;
  display: flex; align-items: center; gap: 6px;
}
.wstr-edit-note-text {
  font-size: 12px; color: var(--text-2); line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden;
}
.wstr-edit-note-action {
  background: transparent; border: 1px solid transparent;
  color: var(--accent, #4ea1ff); padding: 4px 8px;
  border-radius: 5px; font-size: 11.5px; font-weight: 700;
  cursor: pointer; flex-shrink: 0; align-self: center;
  transition: all .15s; font-family: inherit;
  display: inline-flex; align-items: center; gap: 4px;
}
.wstr-edit-note-action:hover {
  background: rgba(78,161,255,0.10); border-color: rgba(78,161,255,0.30);
}
.wstr-edit-note.snel .wstr-edit-note-action { color: #f5c842; }
.wstr-edit-note.snel .wstr-edit-note-action:hover {
  background: rgba(245,200,66,0.14); border-color: rgba(245,200,66,0.40);
}


/* ── Wedstrijd modal player-rijen ── */
.wstr-player-row {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: 7px;
  margin-bottom: 5px; background: var(--bg-2);
  transition: background .12s;
}
.wstr-player-row[data-open-player-db]:hover { background: var(--bg-3); }
.wstr-type-dot {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
}
.wstr-type-dot.obs { background: #a855f7; }
.wstr-type-dot.rapport { background: #22c55e; }
.wstr-type-dot.wedstrijd { background: #f59e0b; }
.wstr-player-naam { font-size: 13px; font-weight: 600; color: var(--text); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wstr-type-label { font-size: 10px; font-weight: 700; border-radius: 4px; padding: 1px 7px; border: 1px solid; white-space: nowrap; }
.wstr-type-label.observatie { background: rgba(168,85,247,.15); color: #a855f7; border-color: rgba(168,85,247,.3); }
.wstr-type-label.rapport    { background: rgba(34,197,94,.15);  color: #22c55e;  border-color: rgba(34,197,94,.3); }
.wstr-type-label.ingediend  { background: rgba(34,197,94,.15);  color: #22c55e;  border-color: rgba(34,197,94,.3); }
.wstr-status-label { font-size: 10px; font-weight: 700; border-radius: 4px; padding: 1px 7px; border: 1px solid; white-space: nowrap; background: rgba(34,197,94,.12); color: #22c55e; border-color: rgba(34,197,94,.25); }
.wstr-edit-mini-btn { font-size: 11px; font-weight: 600; border-radius: 5px; padding: 3px 10px; cursor: pointer; border: 1px solid; white-space: nowrap; }
.wstr-edit-mini-btn.primary { background: rgba(99,102,241,.18); color: #a5b4fc; border-color: rgba(99,102,241,.4); }
.wstr-edit-mini-btn.obs     { background: rgba(168,85,247,.15); color: #c084fc; border-color: rgba(168,85,247,.35); }
.wstr-edit-mini-btn.ingediend { background: rgba(34,197,94,.12); color: #86efac; border-color: rgba(34,197,94,.3); }

.wstr-edit-empty {
  font-size: 12px; color: var(--text-3); padding: 12px 14px;
  text-align: center; background: var(--bg-2);
  border: 1px dashed var(--border); border-radius: 8px;
}

.wstr-edit-foot {
  padding: 14px 22px 18px;
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px;
  border-top: 1px solid var(--border);
  background: var(--panel);
  position: sticky; bottom: 0;
}
.wstr-edit-foot .btn { width: 100%; justify-content: center; }
@media (min-width: 560px) {
  .wstr-edit-foot { grid-template-columns: repeat(4, 1fr); }
}

/* ===== s35br: Wedstrijd-koppeling + verwerken-modal ===== */
.m-snel-banner {
  background: rgba(245,200,66,0.08);
  border: 1px solid rgba(245,200,66,0.28);
  border-radius: 8px;
  padding: 8px 10px 10px;
  margin-top: 10px;
  display: flex; flex-direction: column; gap: 6px;
}
.m-snel-banner-head {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.06em;
  color: #f5c842;
}
.m-snel-banner-head svg { flex-shrink: 0; }
.m-snel-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.m-snel-chip {
  background: rgba(245,200,66,0.12);
  border: 1px solid rgba(245,200,66,0.4);
  color: var(--text);
  border-radius: 999px; padding: 4px 10px 4px 8px;
  font-size: 11.5px; font-weight: 600; cursor: pointer;
  display: inline-flex; align-items: center; gap: 5px;
  transition: all 0.15s; user-select: none;
}
.m-snel-chip:hover {
  background: rgba(245,200,66,0.22);
  border-color: #f5c842;
}
.m-snel-chip-arrow {
  display: inline-flex; opacity: 0.7;
}
.m-snel-chip:hover .m-snel-chip-arrow { opacity: 1; }

.m-wstrnote-banner {
  background: rgba(78,161,255,0.06);
  border: 1px solid rgba(78,161,255,0.24);
  border-radius: 8px;
  padding: 8px 10px;
  margin-top: 8px;
  font-size: 12px; color: var(--text-2);
  display: flex; align-items: flex-start; gap: 8px;
}
.m-wstrnote-banner svg { flex-shrink: 0; color: #4ea1ff; margin-top: 1px; }
.m-wstrnote-banner-text { line-height: 1.45; }
.m-wstrnote-banner-text strong { color: #4ea1ff; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.06em; display: block; margin-bottom: 2px; font-weight: 700; }

/* s35dg Fase E: concept-banner voor wedstrijdrapport (geel ipv blauw) */
.m-wstrnote-banner.is-concept {
  background: rgba(245,200,66,0.08);
  border: 1px dashed rgba(245,200,66,0.55);
}
.m-wstrnote-banner.is-concept svg { color: #f5c842; }
.m-wstrnote-banner.is-concept .m-wstrnote-banner-text strong { color: #f5c842; }
.m-wstrnote-banner.is-concept .m-wstrnote-banner-open {
  display: inline-block; margin-top: 6px; font-size: 11.5px; color: #f5c842;
  background: rgba(245,200,66,0.10); border: 1px solid rgba(245,200,66,0.40);
  padding: 3px 8px; border-radius: 6px; cursor: pointer; font-weight: 600;
}
.m-wstrnote-banner.is-concept .m-wstrnote-banner-open:hover { background: rgba(245,200,66,0.18); }

/* Indienen-actie op concept-chip */
.match-player-chip.is-concept {
  border-style: dashed;
  border-color: rgba(245,200,66,0.55);
  background: rgba(245,200,66,0.08);
}
.match-dropdown-row .mdr-submit {
  background: var(--primary); color: #fff;
  border: 0; padding: 4px 9px; border-radius: 5px;
  font-size: 10.5px; font-weight: 700; cursor: pointer;
  letter-spacing: 0.03em;
  display: inline-flex; align-items: center; gap: 3px;
  transition: filter .15s;
  margin-left: 6px;
}
.match-dropdown-row .mdr-submit:hover { filter: brightness(1.15); }
.match-dropdown-row .mdr-concept-badge { display:inline-block; font-size:9px; font-weight:700; background:rgba(255,255,255,.07); color:var(--text-2,#9aa3b7); border:1px solid var(--border2,#2d3242); border-radius:4px; padding:1px 5px; margin-left:5px; vertical-align:middle; }

/* Verwerk-toggle (lock pill) */
.match-verwerk-toggle {
  position: absolute; top: 10px; right: 12px;
  display: inline-flex; align-items: center; gap: 4px;
  background: transparent; border: 1px solid var(--border);
  color: var(--text-3); cursor: pointer;
  padding: 4px 9px; border-radius: 6px;
  font-size: 11px; font-weight: 700;
  transition: all 0.15s;
  text-transform: uppercase; letter-spacing: 0.04em;
}
.match-verwerk-toggle:hover {
  border-color: var(--primary); color: var(--primary);
}
.match-verwerk-toggle.is-locked {
  background: rgba(127,217,158,0.14);
  border-color: #7fd99e; color: #7fd99e;
}
.match-verwerk-toggle.is-locked:hover {
  filter: brightness(1.1);
}
/* Report-card heeft al een edit-toggle rechtsboven → verwerk-toggle links daarvan */
.match-report-card .match-verwerk-toggle { right: auto; left: 12px; }
.match-card.locked { opacity: 0.85; }
.match-card.locked .match-team-home,
.match-card.locked .match-team-away { opacity: 0.85; }

/* Verwerken modal */
.wstr-verwerk-backdrop {
  position: fixed; inset: 0; z-index: 9999;
  background: rgba(0,0,0,0.72);
  display: none; align-items: center; justify-content: center;
  padding: 20px;
}
.wstr-verwerk-backdrop.show { display: flex; }
.wstr-verwerk-modal {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 14px; max-width: 520px; width: 100%;
  max-height: 90vh; overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.45);
}
.wstr-verwerk-head {
  padding: 18px 22px 14px;
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.wstr-verwerk-title { font-size: 16px; font-weight: 800; color: var(--text); }
.wstr-verwerk-sub { font-size: 12px; color: var(--text-3); margin-top: 3px; }
.wstr-verwerk-close {
  background: transparent; border: none; color: var(--text-3);
  font-size: 24px; line-height: 1; width: 32px; height: 32px;
  border-radius: 6px; cursor: pointer;
}
.wstr-verwerk-close:hover { background: var(--bg-3); color: var(--text); }
.wstr-verwerk-body { padding: 16px 22px 6px; }
.wstr-verwerk-warn {
  background: rgba(245,200,66,0.10);
  border: 1px solid rgba(245,200,66,0.30);
  border-radius: 8px; padding: 9px 12px;
  font-size: 12px; color: var(--text-2);
  display: flex; gap: 8px; align-items: flex-start;
  margin-bottom: 14px; line-height: 1.45;
}
.wstr-verwerk-warn svg { flex-shrink: 0; color: #f5c842; margin-top: 1px; }
.wstr-check-row {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 12px 0; border-top: 1px dashed var(--border);
}
.wstr-check-row:first-of-type { border-top: 0; padding-top: 4px; }
.wstr-check-icon {
  flex-shrink: 0; width: 22px; height: 22px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  margin-top: 1px;
}
.wstr-check-row.ok .wstr-check-icon {
  background: rgba(127,217,158,0.18); color: #7fd99e;
}
.wstr-check-row.warn .wstr-check-icon {
  background: rgba(245,200,66,0.18); color: #f5c842;
}
.wstr-check-main { flex: 1; }
.wstr-check-label {
  font-size: 13px; font-weight: 700; color: var(--text);
  margin-bottom: 2px; line-height: 1.4;
}
.wstr-check-detail {
  font-size: 11.5px; color: var(--text-3); line-height: 1.5;
}
.wstr-check-detail a, .wstr-check-detail .wstr-check-link {
  color: #4ea1ff; cursor: pointer; text-decoration: none;
  font-weight: 600;
}
.wstr-check-detail .wstr-check-link:hover { text-decoration: underline; }
.wstr-verwerk-foot {
  padding: 12px 22px 18px; display: flex; gap: 8px;
  justify-content: flex-end; flex-wrap: wrap;
  border-top: 1px solid var(--border); margin-top: 10px;
}
@media (max-width: 560px) {
  .wstr-verwerk-modal { border-radius: 12px; }
  .wstr-verwerk-head { padding: 14px 16px 12px; }
  .wstr-verwerk-body { padding: 12px 16px 4px; }
  .wstr-verwerk-foot { padding: 10px 16px 14px; }
  .wstr-verwerk-foot .btn { flex: 1; justify-content: center; }
}

/* ===== s35bq: Wedstrijden redesign ===== */
.m-stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 10px; margin: 4px 0 14px;
}
.m-stat {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 10px; padding: 12px 14px;
  display: flex; flex-direction: column; gap: 2px;
  border-left: 3px solid var(--border-2);
}
.m-stat.verwerkt { border-left-color: #7fd99e; }

.m-stat.info     { border-left-color: var(--accent, #4ea1ff); }
.m-stat-num {
  font-size: 24px; font-weight: 800; color: var(--text); line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.m-stat-lbl {
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--text-3); font-weight: 700;
}

.m-search-row {
  display: flex; gap: 10px; flex-wrap: wrap;
  margin-bottom: 10px; align-items: center;
}
.m-search-row .filter-input { flex: 1; min-width: 220px; }

.m-chip-row {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 8px;
}
.m-chip {
  background: var(--panel); border: 1px solid var(--border-2);
  color: var(--text-2); padding: 6px 12px; border-radius: 999px;
  font-size: 12px; font-weight: 600; cursor: pointer;
  transition: all 0.15s; user-select: none;
  display: inline-flex; align-items: center; gap: 6px;
}
.m-chip:hover { border-color: var(--primary); color: var(--text); }
.m-chip.active {
  background: var(--primary); border-color: var(--primary);
  color: #fff;
}
.m-chip-count {
  font-size: 10.5px; font-weight: 700; opacity: 0.7;
  background: rgba(255,255,255,0.08); padding: 1px 6px; border-radius: 999px;
}
.m-chip.active .m-chip-count { background: rgba(0,0,0,0.18); opacity: 1; }

/* Uniforme kaart-shell: zelfde border / padding voor alle types */
.match-card.match-report-card { border-left-color: var(--accent, #4ea1ff); }
.match-card

/* s35bs: report-card klikbaar -> opent edit-modal */
/* Empty state met CTA */
.m-empty {
  text-align: center; padding: 56px 20px 64px;
  background: var(--panel); border: 1px dashed var(--border-2);
  border-radius: 12px; color: var(--text-3);
}
.m-empty-icon { color: var(--text-3); margin-bottom: 14px; }
.m-empty-title { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.m-empty-sub { font-size: 13px; max-width: 480px; margin: 0 auto 18px; line-height: 1.55; }
.m-empty .btn { display: inline-flex; align-items: center; gap: 6px; }

@media (max-width: 700px) {
  .m-stats { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .m-stat { padding: 10px 12px; }
  .m-stat-num { font-size: 20px; }
  .m-search-row { gap: 6px; }
  .m-search-row .filter-input,
  .m-search-row .filter-select { padding: 7px 10px; font-size: 13px; }
  .m-chip { padding: 5px 10px; font-size: 11.5px; }
}

.match-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-left: 3px solid var(--primary);
  border-radius: 10px;
  padding: 14px 18px;
  display: grid;
  grid-template-columns: 110px 1fr auto;
  gap: 16px;
  align-items: center;
  transition: border-color .15s, transform .15s;
  position: relative; /* s35bq: voor edit-toggle */
}
@media (max-width: 700px) {
  .match-card { grid-template-columns: 70px 1fr; padding: 12px 14px; gap: 10px; }
  .match-card .match-players { display: none; }
  .match-date-day { font-size: 19px; }
}
.match-card:hover { border-color: var(--border-2); transform: translateX(2px); }
.match-date {
  display: flex; flex-direction: column; gap: 2px;
}
.match-date-day {
  font-size: 22px; font-weight: 800; color: var(--text); line-height: 1;
}
.match-date-month {
  font-size: 11px; text-transform: uppercase; letter-spacing: 1px;
  color: var(--text-3); font-weight: 600;
}
.match-date-year {
  font-size: 10px; color: var(--text-3); margin-top: 2px;
}
.match-teams {
  display: flex; flex-direction: column; gap: 8px;
}
.match-teams-row {
  display: flex; align-items: center; gap: 10px;
  font-size: 14px; font-weight: 600; color: var(--text);
  flex-wrap: wrap;
}
.match-team-home, .match-team-away {
  display: inline-flex; align-items: center; gap: 6px;
}
.match-vs {
  font-size: 11px; color: var(--text-3); font-weight: 500;
  padding: 0 2px;
}
.match-score {
  background: var(--bg-3); border: 1px solid var(--border-2);
  padding: 3px 10px; border-radius: 6px;
  font-weight: 800; font-size: 13px; color: var(--secondary);
  margin: 0 4px;
}
.match-score-clickable {
  cursor: pointer; font-family: inherit;
}
.match-score-clickable:hover { border-color: var(--secondary); background: var(--bg-2); }
.match-score-add {
  background: transparent; border: 1px dashed var(--border-2);
  padding: 3px 10px; border-radius: 6px; cursor: pointer;
  font-size: 12px; font-weight: 600; color: var(--text-3); margin: 0 4px;
  font-family: inherit;
}
.match-score-add:hover { color: var(--secondary); border-color: var(--secondary); background: var(--bg-2); }
.match-meta {
  display: flex; gap: 8px; flex-wrap: wrap;
  font-size: 11px; color: var(--text-3);
}
.match-age-badge {
  display: inline-flex; align-items: center; gap: 4px;
  background: transparent; border: 1px solid rgba(255,255,255,.25);
  color: #fff;
  padding: 2px 8px; border-radius: 999px;
  font-size: 11px; font-weight: 700;
}
.match-players-count {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--bg-3); border: 1px solid var(--border);
  padding: 2px 8px; border-radius: 999px;
  font-size: 11px; color: var(--text-2);
}
.match-report-badge {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(34,197,94,.12); border: 1px solid rgba(34,197,94,.32);
  color: #4ade80;
  padding: 2px 8px; border-radius: 999px;
  font-size: 11px; font-weight: 700;
}
.match-report-card .match-teams { gap: 8px; }
.match-report-note {
  margin-top: 10px;
  padding: 10px 12px;
  background: var(--bg-3); border: 1px solid var(--border);
  border-radius: 7px;
  font-size: 13px; color: var(--text-2);
  white-space: pre-wrap; word-wrap: break-word;
  line-height: 1.5;
}
.match-report-actions {
  display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px;
}
.match-report-actions .btn { padding: 6px 12px; font-size: 12px; }
.match-players {
  display: flex; flex-wrap: wrap; gap: 5px;
  justify-content: flex-end; max-width: 280px;
}
.match-player-chip.chip-obs { background: rgba(168,85,247,.18); color: #c084fc; border-color: rgba(168,85,247,.35); }
.match-player-chip.chip-rapport { background: rgba(34,197,94,.15); color: #86efac; border-color: rgba(34,197,94,.3); }
.match-player-chip {
  background: var(--bg-3); border: 1px solid var(--border);
  padding: 4px 10px; border-radius: 6px;
  font-size: 11px; color: var(--text-2);
  cursor: pointer; transition: all .15s;
  font-weight: 600;
}
.match-player-chip:hover {
  border-color: var(--primary); color: var(--text);
  background: var(--panel-2);
}
.match-clickable {
  display: contents;
}
.match-card.expandable .match-date,
.match-card.expandable .match-teams {
  cursor: pointer;
}
.match-card.expandable .match-date:hover .match-date-day,
.match-card.expandable .match-teams:hover .match-team-home,
.match-card.expandable .match-teams:hover .match-team-away {
  color: var(--primary);
}
.match-chevron {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; margin-left: 4px;
  color: var(--text-3); transition: transform .2s ease;
  flex-shrink: 0;
}
.match-card.open .match-chevron { transform: rotate(180deg); color: var(--primary); }

.match-dropdown {
  grid-column: 1 / -1;
  display: none;
  margin-top: 12px; padding-top: 12px;
  border-top: 1px dashed var(--border);
}
.match-card.open .match-dropdown { display: block; }

/* s84: post-match programma-kaart */
.pm-card { cursor: pointer; }
.pm-card .pm-chev { transition: transform .18s; display: inline-flex; vertical-align: middle; margin-left: 4px; }
.pm-card.pm-open .pm-chev { transform: rotate(180deg); }
.pm-dropdown { grid-column: 1 / -1; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); }
.pm-drop-section { font-size: 10.5px; text-transform: uppercase; letter-spacing: .7px; color: var(--text-3); font-weight: 700; margin: 10px 0 6px; }
.pm-drop-section:first-child { margin-top: 0; }
.pm-drop-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; background: var(--bg-3); border: 1px solid var(--border); margin-bottom: 5px; }
.pm-drop-row.is-opv { background: rgba(245,197,24,0.06); border-color: rgba(245,197,24,0.25); }
.pm-drop-info { flex: 1; min-width: 0; }
.pm-drop-name { font-size: 13px; font-weight: 700; color: var(--text-1); }
.pm-drop-note { font-size: 11.5px; color: var(--text-3); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pm-drop-btn { flex-shrink: 0; padding: 5px 11px; font-size: 12px; font-weight: 700; border-radius: 7px; cursor: pointer; transition: .12s; background: rgba(99,102,241,0.12); border: 1px solid rgba(99,102,241,0.35); color: #818cf8; }
.pm-drop-btn:hover { background: rgba(99,102,241,0.22); border-color: #818cf8; }
.pm-drop-btn.secondary { background: var(--bg-2); border-color: var(--border); color: var(--text-3); }
.pm-drop-btn.secondary:hover { border-color: #818cf8; color: #818cf8; }

/* s93: pm-card nieuwe secties & per-item rijen */
.pm-done-badge { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: #22c55e; color: #fff; font-size: 11px; font-weight: 700; margin-left: 6px; flex-shrink: 0; vertical-align: middle; }
.pm-done-badge.pm-done-full { width: auto; border-radius: 20px; padding: 2px 10px; font-size: 11px; letter-spacing: .3px; background: rgba(34,197,94,.15); color: #4ade80; border: 1px solid rgba(34,197,94,.35); box-shadow: 0 0 8px rgba(34,197,94,.2); }
.pm-section-hdr { font-size: 10px; text-transform: uppercase; letter-spacing: .7px; color: var(--text-3); font-weight: 700; margin: 10px 0 4px; padding: 0; }
.pm-section-hdr:first-child { margin-top: 0; }
.pm-section-sub { color: var(--text-3); opacity: .8; }
.pm-item-row { display: flex; align-items: center; gap: 8px; padding: 7px 8px; border-radius: 8px; background: var(--bg-3,#141824); border: 1px solid var(--border,#232838); margin-bottom: 5px; min-height: 40px; }
.pm-item-info { flex: 1; min-width: 0; }
.pm-item-name { font-size: 13px; font-weight: 600; color: var(--text-1,#e5e9f5); display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pm-item-pos { font-size: 10.5px; color: var(--text-3,#6b7280); margin-left: 5px; }
.pm-item-preview { font-size: 11px; color: var(--text-3,#6b7280); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pm-item-empty { font-size: 11.5px; color: var(--text-3,#6b7280); font-style: italic; }
.pm-item-acts { display: flex; align-items: center; gap: 5px; flex-shrink: 0; }
.pm-item-done { color: #22c55e; font-size: 13px; font-weight: 700; }
.pm-item-btn { padding: 4px 10px; font-size: 11.5px; font-weight: 600; border-radius: 7px; cursor: pointer; transition: .12s; background: rgba(99,102,241,0.10); border: 1px solid rgba(99,102,241,0.30); color: #818cf8; white-space: nowrap; }
.pm-item-btn:hover { background: rgba(99,102,241,0.20); border-color: #818cf8; }
.pm-item-btn.new { background: rgba(34,197,94,0.08); border-color: rgba(34,197,94,0.25); color: #4ade80; }
.pm-item-btn.new:hover { background: rgba(34,197,94,0.15); border-color: #4ade80; }
.pm-item-btn.wstr { background: rgba(251,191,36,0.08); border-color: rgba(251,191,36,0.25); color: #fbbf24; }
.pm-item-btn.wstr:hover { background: rgba(251,191,36,0.16); border-color: #fbbf24; }
.pm-item-btn.wstr.new { background: rgba(251,191,36,0.06); border-color: rgba(251,191,36,0.22); color: #fbbf24; }
.pm-item-link { padding: 4px 10px; font-size: 11px; font-weight: 600; border-radius: 7px; cursor: pointer; transition: .12s; background: transparent; border: 1px solid var(--border,#232838); color: var(--text-3,#6b7280); white-space: nowrap; }
.pm-item-link:hover { border-color: #818cf8; color: #818cf8; }

.match-dropdown-title {
  font-size: 11px; text-transform: uppercase; letter-spacing: .8px;
  color: var(--text-3); font-weight: 700; margin-bottom: 8px;
}
.match-dropdown-list {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 6px;
}
.match-dropdown-row {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px;
  background: var(--bg-3); border: 1px solid var(--border);
  border-radius: 8px; cursor: pointer;
  transition: all .12s ease;
  text-align: left;
}
.match-dropdown-row:hover {
  border-color: var(--primary);
  background: var(--panel-2);
  transform: translateX(2px);
}
.match-dropdown-avatar {
  width: 28px; height: 28px; border-radius: 50%;
  background: linear-gradient(135deg, #e30613, #8a0410);
  color: #fff; font-weight: 800; font-size: 11px;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.match-dropdown-info {
  display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1;
}
.match-dropdown-name {
  font-size: 13px; font-weight: 700; color: var(--text);
  display: flex; align-items: center; gap: 6px; min-width: 0;
}
.match-dropdown-name .mdr-name-txt {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0;
}
.match-dropdown-name .mdr-type-pill,
.match-dropdown-name .mdr-concept-badge { flex-shrink: 0; white-space: nowrap; }
.match-dropdown-pos {
  font-size: 10px; color: var(--text-3); font-weight: 600;
}
.match-dropdown-arrow {
  color: var(--text-3); flex-shrink: 0;
}
.match-dropdown-row:hover .match-dropdown-arrow { color: var(--primary); }
.match-dropdown-grades {
  display: inline-flex; gap: 4px; flex-shrink: 0; margin-right: 6px;
}
.match-dropdown-grades .grade {
  padding: 0 6px; height: 18px; font-size: 10px; min-width: 18px;
}

@media (max-width: 900px) {
  .match-card { grid-template-columns: 1fr; gap: 10px; }
  .match-players { justify-content: flex-start; max-width: 100%; }
  .match-dropdown-list { grid-template-columns: 1fr; }
}

/* Print */
@media print {
  .sidebar, .topbar .btn, .modal-close { display: none !important; }
  .main { padding: 0; }
}


/* =================== CINEMATIC INTRO OVERLAY =================== */
#intro-overlay {
  position: fixed; inset: 0; z-index: 10000;
  background: #06080d;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  opacity: 1;
  transition: opacity 1.1s cubic-bezier(.4,0,.2,1), transform 1.1s cubic-bezier(.4,0,.2,1);
}
#intro-overlay::before {
  content: '';
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 80% 60% at 50% 50%, rgba(78,161,255,0.10) 0%, transparent 60%),
    radial-gradient(ellipse 60% 50% at 50% 30%, rgba(255,255,255,0.06) 0%, transparent 60%),
    radial-gradient(circle at 50% 50%, transparent 35%, rgba(0,0,0,0.55) 100%);
  pointer-events: none;
  animation: introAmbient 7s ease-in-out infinite;
}
@keyframes introAmbient {
  0%,100% { opacity: 0.9; transform: scale(1); }
  50%     { opacity: 1;   transform: scale(1.04); }
}
#intro-overlay.intro-hide { opacity: 0; pointer-events: none; }
#intro-overlay.intro-zoom { transform: scale(1.15); }
#intro-overlay.intro-gone { display: none; }

/* Cinematic light beam */
.intro-beam {
  position: absolute; left: 50%; top: -10%; width: 1px; height: 120%;
  background: linear-gradient(180deg, transparent 0%, rgba(255,255,255,0.32) 30%, rgba(227,6,19,0.55) 50%, rgba(255,255,255,0.32) 70%, transparent 100%);
  transform: translateX(-50%) scaleY(0);
  transform-origin: center top;
  animation: introBeam 1.3s cubic-bezier(.2,.8,.2,1) 0.15s forwards;
  filter: blur(0.5px);
}
@keyframes introBeam {
  0%   { transform: translateX(-50%) scaleY(0);   opacity: 0; }
  20%  { opacity: 1; }
  100% { transform: translateX(-50%) scaleY(1);   opacity: 0.6; }
}

/* Subtle ambient dust (no rainbow — premium feel) */
.intro-particles { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.intro-particles span {
  position: absolute; bottom: -20px; width: 2px; height: 2px; border-radius: 50%;
  background: rgba(255,255,255,0.55);
  box-shadow: 0 0 6px rgba(255,255,255,0.5);
  animation: introDust linear infinite;
  opacity: 0;
}
.intro-particles span:nth-child(1){ left: 12%; animation-duration: 16s; animation-delay: 0s;   }
.intro-particles span:nth-child(2){ left: 28%; animation-duration: 19s; animation-delay: 2.0s; }
.intro-particles span:nth-child(3){ left: 42%; animation-duration: 14s; animation-delay: 4.5s; }
.intro-particles span:nth-child(4){ left: 58%; animation-duration: 18s; animation-delay: 1.2s; }
.intro-particles span:nth-child(5){ left: 72%; animation-duration: 21s; animation-delay: 3.8s; }
.intro-particles span:nth-child(6){ left: 88%; animation-duration: 15s; animation-delay: 0.6s; }
@keyframes introDust {
  0%   { transform: translateY(0)     scale(0.6); opacity: 0; }
  15%  { opacity: 0.7; }
  85%  { opacity: 0.5; }
  100% { transform: translateY(-115vh) scale(1.4); opacity: 0; }
}

.intro-stage {
  position: relative; z-index: 3;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center;
  padding: 28px;
  max-width: 92vw;
  transform: scale(1);
  transition: transform 1.0s cubic-bezier(.4,0,.2,1), opacity 0.9s ease-out;
}
#intro-overlay.intro-out .intro-stage {
  transform: scale(1.18);
  opacity: 0;
}

.intro-logo {
  position: relative;
  width: 152px; height: 152px;
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 32px;
  opacity: 0;
  transform: translateY(28px) scale(0.82);
  animation: introLogoIn 1.3s cubic-bezier(.2,.8,.2,1) 0.45s forwards,
             introLogoBreath 5s ease-in-out 2.0s infinite;
}
@keyframes introLogoIn {
  0%   { opacity: 0; transform: translateY(28px) scale(0.82); filter: drop-shadow(0 0 0 rgba(227,6,19,0)); }
  60%  { opacity: 1; }
  100% { opacity: 1; transform: translateY(0)    scale(1);    filter: drop-shadow(0 20px 60px rgba(227,6,19,0.55)) drop-shadow(0 0 40px rgba(78,161,255,0.18)); }
}
@keyframes introLogoBreath {
  0%,100% { transform: translateY(0) scale(1);    filter: drop-shadow(0 20px 60px rgba(227,6,19,0.55)) drop-shadow(0 0 40px rgba(78,161,255,0.18)); }
  50%     { transform: translateY(-3px) scale(1.025); filter: drop-shadow(0 26px 80px rgba(227,6,19,0.7))  drop-shadow(0 0 55px rgba(78,161,255,0.28)); }
}
.intro-logo svg { width: 100%; height: 100%; position: relative; z-index: 2; }
.intro-logo::after {
  content: '';
  position: absolute; left: 50%; top: 50%; width: 220px; height: 220px;
  transform: translate(-50%,-50%);
  background: radial-gradient(circle, rgba(227,6,19,0.35) 0%, rgba(227,6,19,0.10) 35%, transparent 70%);
  pointer-events: none;
  opacity: 0;
  animation: introLogoGlow 1.4s ease-out 0.7s forwards;
  z-index: 1;
}
@keyframes introLogoGlow {
  0%   { opacity: 0; transform: translate(-50%,-50%) scale(0.5); }
  100% { opacity: 1; transform: translate(-50%,-50%) scale(1); }
}

/* === Intro-logo: filmische orbit + zwevende stippen === */
.intro-logo-orbit {
  position: absolute;
  inset: -14px;
  pointer-events: none;
  z-index: 4;
  opacity: 0;
  animation: introOrbitFadeIn 1.2s ease-out 1.4s forwards,
             introOrbitSpin 9s linear 1.4s infinite;
}
@keyframes introOrbitFadeIn {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}
@keyframes introOrbitSpin {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.intro-logo-orbit-dot {
  position: absolute;
  top: -6px;
  left: 50%;
  width: 13px; height: 13px;
  margin-left: -6.5px;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, #fff7d0 0%, #f5c518 45%, #b88a08 100%);
  box-shadow:
    0 0 14px rgba(245,197,24,.95),
    0 0 32px rgba(245,197,24,.55),
    0 0 60px rgba(245,197,24,.28);
}
.intro-logo-dots {
  position: absolute;
  inset: -60px -40px -30px -40px;
  pointer-events: none;
  z-index: 0;
  overflow: visible;
}
.intro-logo-dots span {
  position: absolute;
  width: 7px; height: 7px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,200,205,.95) 0%, rgba(227,6,19,.7) 50%, rgba(227,6,19,0) 75%);
  filter: blur(.5px);
  opacity: 0;
  animation: introFloatDot 6.5s ease-in-out infinite;
}
.intro-logo-dots span:nth-child(1) { top: 88%; left:  8%; animation-delay: 1.6s; }
.intro-logo-dots span:nth-child(2) { top: 92%; left: 24%; animation-delay: 2.3s; width: 5px; height: 5px; }
.intro-logo-dots span:nth-child(3) { top: 86%; left: 40%; animation-delay: 3.1s; }
.intro-logo-dots span:nth-child(4) { top: 90%; left: 58%; animation-delay: 3.9s; width: 5px; height: 5px; }
.intro-logo-dots span:nth-child(5) { top: 84%; left: 74%; animation-delay: 4.7s; }
.intro-logo-dots span:nth-child(6) { top: 92%; left: 90%; animation-delay: 5.4s; width: 4px; height: 4px; }
.intro-logo-dots span:nth-child(7) { top: 78%; left: 18%; animation-delay: 2.8s; width: 4px; height: 4px; }
.intro-logo-dots span:nth-child(8) { top: 80%; left: 66%; animation-delay: 4.2s; width: 4px; height: 4px; }
@keyframes introFloatDot {
  0%   { transform: translateY(0) scale(.5); opacity: 0; }
  15%  { opacity: .95; }
  60%  { opacity: .7; }
  100% { transform: translateY(-220px) scale(1); opacity: 0; }
}

/* Wordmark — single elegant line */
.intro-title {
  font-family: 'Inter', system-ui, sans-serif;
  font-size: clamp(34px, 6vw, 64px);
  font-weight: 800;
  letter-spacing: -0.015em;
  margin: 0;
  line-height: 1;
  white-space: nowrap;
  display: inline-flex;
  align-items: baseline;
}
.intro-title .letter {
  display: inline-block;
  opacity: 0;
  transform: translateY(24px);
  filter: blur(8px);
  color: #ffffff;
  animation: introLetter 0.7s cubic-bezier(.2,.8,.2,1) forwards;
}
.intro-title .letter.accent {
  background: linear-gradient(135deg, #ff8189 0%, #e30613 45%, #f5c518 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
@keyframes introLetter {
  0%   { opacity: 0; transform: translateY(24px); filter: blur(8px); }
  100% { opacity: 1; transform: translateY(0);    filter: blur(0); }
}

.intro-rule {
  height: 1px; width: 0;
  margin: 22px auto 0;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.85) 50%, transparent 100%);
  animation: introRule 0.9s cubic-bezier(.4,0,.2,1) 2.55s forwards;
}
@keyframes introRule {
  0%   { width: 0;     opacity: 0; }
  100% { width: 240px; opacity: 1; }
}

.intro-tagline {
  margin-top: 20px;
  font-size: clamp(11px, 1.3vw, 14px);
  font-weight: 500;
  letter-spacing: 0.46em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.78);
  opacity: 0;
  animation: introFadeUp 0.9s ease-out 3.10s forwards;
}
/* s35bc: roterende trigger-woorden die het scherm vullen */
.intro-rotor {
  position: relative;
  margin-top: 32px;
  width: 100%;
  height: clamp(56px, 10vw, 96px);
  display: flex;
  align-items: center;
  justify-content: center;
}
/* s35cq: krachtigere animatie — scale-overshoot, extra goud-stop in gradient,
   per-woord onderlijn-onthulling, en goud-glow ring rond het laatste woord.
   Timing (delays + cross-fade) blijft identiek aan s35cn om geen overlap-collision te krijgen. */
.intro-rotor .word {
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -50%) translateY(18px) scale(.86);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: clamp(32px, 6.4vw, 68px);
  font-weight: 900;
  letter-spacing: -1.8px;
  /* s35cq: 5-stop gradient met extra warm-goud highlight op 25% */
  background: linear-gradient(135deg, #ffffff 0%, #ffe28a 25%, #ff8189 55%, #e30613 80%, #f5c518 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  white-space: nowrap;
  opacity: 0;
  filter: blur(10px);
}
/* s35cq: per-woord onderlijn-onthulling (gold -> red gradient) */
.intro-rotor .word::after {
  content: '';
  position: absolute;
  left: 50%; bottom: -8px;
  width: 0; height: 3px;
  background: linear-gradient(90deg, transparent, #f5c518 40%, #e30613 70%, transparent);
  transform: translateX(-50%);
  border-radius: 2px;
  opacity: 0;
}
/* s35cq: goud-glow ring achter het laatste woord */
.intro-rotor .word.last::before {
  content: '';
  position: absolute;
  inset: -20px -40px;
  background: radial-gradient(ellipse at center, rgba(245,197,24,.16), transparent 60%);
  filter: blur(20px);
  z-index: -1;
  opacity: 0;
}
.intro-rotor .word:not(.last) { animation: rotorWord 1.0s cubic-bezier(.16,1,.3,1) forwards; }
.intro-rotor .word.last       { animation: rotorLast 1.2s cubic-bezier(.16,1,.3,1) forwards; }
/* s35bi: 4 woorden ipv 5 — laatste woord (nth-child(4)) krijgt rotorLast */
/* s35cn: spacing van 0.4s -> 0.95s zodat woorden niet meer door elkaar lopen.
   Cross-fade tussen woord N en woord N+1 valt nu in de laatste 50ms van N,
   zodat het oog er één doorlopende beweging van maakt ipv overlap-collision. */
.intro-rotor .word:nth-child(1) { animation-delay: 2.20s; }
.intro-rotor .word:nth-child(2) { animation-delay: 3.15s; }
.intro-rotor .word:nth-child(3) { animation-delay: 4.10s; }
.intro-rotor .word:nth-child(4) { animation-delay: 5.05s; }
/* s35cq: onderlijn-onthulling per woord, gesynced met fade-in */
.intro-rotor .word:nth-child(1)::after { animation: rotorUnderline 1.0s cubic-bezier(.16,1,.3,1) 2.35s forwards; }
.intro-rotor .word:nth-child(2)::after { animation: rotorUnderline 1.0s cubic-bezier(.16,1,.3,1) 3.30s forwards; }
.intro-rotor .word:nth-child(3)::after { animation: rotorUnderline 1.0s cubic-bezier(.16,1,.3,1) 4.25s forwards; }
.intro-rotor .word:nth-child(4)::after { animation: rotorUnderlineHold 1.2s cubic-bezier(.16,1,.3,1) 5.20s forwards; }
/* s35cq: glow op laatste woord (volgt fade-in) */
.intro-rotor .word.last::before { animation: rotorGlow 2.2s ease-out 6.05s forwards; }
@keyframes rotorWord {
  /* s35cq: kleine scale-overshoot (0.86 -> 1.04 -> 1.0) ipv 0.94 -> 1.0 */
  0%   { opacity: 0; filter: blur(10px); transform: translate(-50%,-50%) translateY(18px) scale(.86); }
  18%  { opacity: 1; filter: blur(0);    transform: translate(-50%,-50%) translateY(-2px) scale(1.04); }
  28%  { opacity: 1; filter: blur(0);    transform: translate(-50%,-50%) translateY(0) scale(1); }
  /* s35cn: fade-out begint op 45% ipv 60% — geeft een natuurlijke uit-beweging
     die afgerond is voor het volgende woord op piek-opacity zit.              */
  45%  { opacity: 1; filter: blur(0);    transform: translate(-50%,-50%) translateY(0) scale(1); }
  100% { opacity: 0; filter: blur(8px);  transform: translate(-50%,-50%) translateY(-16px) scale(.92); }
}
@keyframes rotorLast {
  0%   { opacity: 0; filter: blur(10px); transform: translate(-50%,-50%) translateY(18px) scale(.86); }
  18%  { opacity: 1; filter: blur(0);    transform: translate(-50%,-50%) translateY(-3px) scale(1.06); }
  30%  { opacity: 1; filter: blur(0);    transform: translate(-50%,-50%) translateY(0) scale(1); }
  100% { opacity: 1; filter: blur(0);    transform: translate(-50%,-50%) translateY(0) scale(1); }
}
@keyframes rotorUnderline {
  0%   { width: 0;   opacity: 0; }
  30%  {             opacity: 1; }
  60%  { width: 70%; opacity: 1; }
  100% { width: 70%; opacity: 0; }
}
@keyframes rotorUnderlineHold {
  0%   { width: 0;   opacity: 0; }
  30%  {             opacity: 1; }
  100% { width: 80%; opacity: 1; }
}
@keyframes rotorGlow {
  0%   { opacity: 0;  transform: scale(.8); }
  50%  { opacity: 1;  transform: scale(1); }
  100% { opacity: .6; transform: scale(1.05); }
}
.intro-tagline em {
  font-style: normal;
  color: #e30613;
  font-weight: 700;
}
/* s35bi: login-hero CTA-pill ("Binnen 2 minuten je eerste rapport") */
.login-hero-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 18px;
  padding: 9px 16px 9px 13px;
  background: linear-gradient(135deg, rgba(245,197,24,0.18) 0%, rgba(227,6,19,0.16) 100%);
  border: 1px solid rgba(245,197,24,0.45);
  border-radius: 999px;
  color: #ffe6a8;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: .015em;
  box-shadow: 0 2px 10px rgba(227,6,19,0.10), inset 0 1px 0 rgba(255,255,255,0.08);
  opacity: 0;
  animation: introFadeUp 0.9s ease-out 3.95s forwards;
}
.login-hero-cta-bolt {
  font-size: 15px;
  line-height: 1;
  color: #f5c518;
  filter: drop-shadow(0 0 4px rgba(245,197,24,0.55));
}
@media (max-width: 900px){
  .login-hero-cta { font-size: 12.5px; padding: 8px 14px 8px 11px; margin-top: 14px; }
}
@keyframes introFadeUp {
  0%   { opacity: 0; transform: translateY(14px); }
  100% { opacity: 1; transform: translateY(0); }
}

.intro-meta {
  margin-top: 14px;
  display: flex; gap: 22px; align-items: center; justify-content: center;
  font-size: clamp(9px, 0.9vw, 11px);
  font-weight: 500;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.40);
  opacity: 0;
  animation: introFadeUp 0.9s ease-out 3.55s forwards;
}
.intro-meta span { display: inline-flex; align-items: center; gap: 8px; }
.intro-meta b { color: rgba(255,255,255,0.7); font-weight: 600; }
.intro-meta i {
  font-style: normal;
  width: 4px; height: 4px; border-radius: 50%;
  background: rgba(255,255,255,0.4);
  display: inline-block;
}

.intro-corner {
  position: absolute;
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.32);
  opacity: 0;
  animation: introFadeUp 0.9s ease-out 0.6s forwards;
}
.intro-corner.tl { top: 22px;    left: 26px;   }
.intro-corner.tr { top: 22px;    right: 26px;  text-align: right; }
.intro-corner.bl { bottom: 22px; left: 26px;   }
.intro-corner.br { bottom: 22px; right: 26px;  text-align: right; }
.intro-corner.intro-corner-small { font-size: 9px; opacity: 0.45; letter-spacing: 1.2px; }
.intro-corner b { color: rgba(255,255,255,0.55); font-weight: 700; }

.intro-skip {
  position: absolute; top: 22px; right: 26px;
  padding: 8px 16px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.16);
  color: rgba(255,255,255,0.7);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  z-index: 5;
  opacity: 0;
  animation: introFadeUp 0.7s ease-out 1.8s forwards;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.intro-skip:hover {
  background: rgba(255,255,255,0.12);
  color: #fff;
  border-color: rgba(255,255,255,0.32);
}

/* Final light-bloom that sweeps the screen and reveals login */
.intro-bloom {
  position: absolute; left: 50%; top: 50%;
  width: 10px; height: 10px;
  background: radial-gradient(circle, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.18) 40%, rgba(255,255,255,0) 75%);
  transform: translate(-50%,-50%) scale(0);
  pointer-events: none;
  border-radius: 50%;
  mix-blend-mode: screen;
}
#intro-overlay.intro-out .intro-bloom {
  animation: introBloom 1.4s cubic-bezier(.4,0,.2,1) forwards;
}
@keyframes introBloom {
  0%   { transform: translate(-50%,-50%) scale(0);    opacity: 0; }
  40%  { opacity: 0.55; }
  100% { transform: translate(-50%,-50%) scale(280);  opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  #intro-overlay, #intro-overlay::before, .intro-beam, .intro-particles span,
  .intro-logo, .intro-logo::after, .intro-title .letter, .intro-rule,
  .intro-tagline, .intro-meta, .intro-corner, .intro-skip, .intro-bloom {
    animation: none !important;
  }
  .intro-logo, .intro-title .letter, .intro-tagline, .intro-meta,
  .intro-corner, .intro-skip { opacity: 1 !important; transform: none !important; filter: none !important; }
  .intro-rule { width: 240px !important; opacity: 1 !important; }
}

/* =================== LOGIN ENTRANCE TRANSITION =================== */
#login-overlay.login-enter {
  animation: loginEnter 1.1s cubic-bezier(.2,.8,.2,1) forwards;
}
@keyframes loginEnter {
  0%   { opacity: 0; transform: translateY(60px) scale(0.96); filter: blur(10px); }
  60%  { opacity: 1; filter: blur(0); }
  100% { opacity: 1; transform: translateY(0)    scale(1);    filter: blur(0); }
}
#login-overlay.login-enter .login-hero,
#login-overlay.login-enter .login-form,
#login-overlay.login-enter .login-card,
#login-overlay.login-enter .login-panel {
  animation: loginItemRise 0.9s cubic-bezier(.2,.8,.2,1) 0.35s backwards;
}
@keyframes loginItemRise {
  0%   { opacity: 0; transform: translateY(28px); }
  100% { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  #login-overlay.login-enter,
  #login-overlay.login-enter .login-hero,
  #login-overlay.login-enter .login-form,
  #login-overlay.login-enter .login-card,
  #login-overlay.login-enter .login-panel {
    animation: none !important;
    opacity: 1 !important; transform: none !important; filter: none !important;
  }
}

/* =================== COMPARE AUTOCOMPLETE =================== */
.compare-search-wrap { position: relative; flex: 1; min-width: 220px; }
.compare-search-wrap .compare-search { width: 100%; }
.compare-suggest {
  position: absolute; top: calc(100% + 6px); left: 0; right: 0;
  background: var(--card, #141a24);
  border: 1px solid var(--border, rgba(255,255,255,0.10));
  border-radius: 12px;
  box-shadow: 0 18px 50px rgba(0,0,0,0.45);
  max-height: 320px;
  overflow-y: auto;
  z-index: 60;
  padding: 6px;
  display: none;
}
.compare-suggest.open { display: block; }
.compare-suggest-item {
  display: flex; align-items: center; gap: 10px;
  width: 100%; text-align: left;
  padding: 8px 10px;
  border-radius: 8px;
  background: transparent;
  border: 0;
  color: var(--text-1, #fff);
  cursor: pointer;
  font: inherit;
  transition: background 0.12s;
}
.compare-suggest-item:hover,
.compare-suggest-item.active { background: rgba(255,255,255,0.06); }
.compare-suggest-item.selected { opacity: 0.5; }
.compare-suggest-avatar {
  width: 28px; height: 28px; border-radius: 50%;
  background: linear-gradient(135deg, #e30613 0%, #4ea1ff 100%);
  color: #fff; font-weight: 700; font-size: 11px;
  display: flex; align-items: center; justify-content: center;
  flex: 0 0 28px;
}
.compare-suggest-body { flex: 1; min-width: 0; }
.compare-suggest-name {
  font-size: 13px; font-weight: 600; color: var(--text-1, #fff);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.compare-suggest-meta {
  font-size: 11px; color: var(--text-3, rgba(255,255,255,0.55));
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.compare-suggest-grade {
  font-size: 10px; font-weight: 700;
  padding: 3px 7px; border-radius: 999px;
  background: rgba(255,255,255,0.08);
  color: var(--text-2, rgba(255,255,255,0.8));
}
.compare-suggest-empty {
  padding: 14px; text-align: center;
  color: var(--text-3, rgba(255,255,255,0.55));
  font-size: 12px;
}

/* =================== DATABASE MULTI-SELECT =================== */
.db-check { width: 16px; height: 16px; cursor: pointer; accent-color: #e30613; }
.db-check-col { width: 36px; text-align: center; }
.db-row-checked { background: rgba(227,6,19,0.07) !important; }
.db-row-checked td { border-color: rgba(227,6,19,0.18) !important; }
/* s35df: uitklapbare rij met rapportenlijst */
.db-expand-col { width: 52px; text-align: center; padding: 0 4px !important; }
.db-expand-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 8px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 999px;
  color: var(--text-2, #c9c9c9);
  font-size: 11px; font-weight: 600;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.db-expand-btn:hover {
  background: rgba(227,6,19,0.12);
  border-color: rgba(227,6,19,0.45);
  color: #fff;
}
.db-expand-btn .db-expand-chev {
  display: inline-block;
  transition: transform .2s ease;
  font-size: 12px;
  line-height: 1;
}
.db-expand-btn.open .db-expand-chev { transform: rotate(90deg); }
.db-expand-btn .db-expand-count { display: inline-block; min-width: 14px; text-align: center; }
.db-expanded-row td.db-expanded-cell {
  background: rgba(255,255,255,0.03);
  padding: 0 !important;
  border-top: 1px solid rgba(227,6,19,0.20);
}
.db-expanded-inner { padding: 12px 16px 14px; animation: dbExpandIn .22s ease; }
@keyframes dbExpandIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
.db-expanded-title {
  font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-3, #8a8a8a); margin-bottom: 8px;
}
.db-expanded-list { display: flex; flex-direction: column; gap: 6px; }
.db-expanded-row-item {
  display: grid;
  grid-template-columns: 100px 1fr auto auto 18px;
  align-items: center; gap: 12px;
  padding: 8px 12px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
  color: var(--text-1, #fff);
  font-size: 13px; text-align: left; cursor: pointer;
  transition: background .15s ease, border-color .15s ease, transform .12s ease;
}
.db-expanded-row-item:hover {
  background: rgba(227,6,19,0.10);
  border-color: rgba(227,6,19,0.45);
  transform: translateX(2px);
}
.db-expanded-row-item .db-er-date { font-weight: 600; color: var(--text-2, #c9c9c9); }
.db-expanded-row-item .db-er-match { color: var(--text-1, #fff); }
.db-expanded-row-item .db-er-advies { color: var(--text-3, #8a8a8a); font-size: 12px; }
.db-expanded-row-item .db-er-grade { min-width: 32px; text-align: center; }
.db-expanded-row-item .db-er-chev { color: var(--text-3, #8a8a8a); font-size: 16px; text-align: right; }
@media (max-width: 640px) {
  .db-expanded-row-item {
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    gap: 4px 10px;
  }
  .db-expanded-row-item .db-er-date { grid-column: 1; grid-row: 1; }
  .db-expanded-row-item .db-er-match { grid-column: 1; grid-row: 2; }
  .db-expanded-row-item .db-er-advies { display: none; }
  .db-expanded-row-item .db-er-grade { grid-column: 2; grid-row: 1; }
  .db-expanded-row-item .db-er-chev { grid-column: 2; grid-row: 2; }
}
.db-compare-bar {
  position: sticky; bottom: 12px;
  margin-top: 14px;
  display: flex; align-items: center; gap: 12px;
  padding: 12px 16px;
  background: linear-gradient(135deg, rgba(227,6,19,0.95) 0%, rgba(180,5,15,0.95) 100%);
  border-radius: 14px;
  color: #fff;
  box-shadow: 0 14px 40px rgba(227,6,19,0.35);
  z-index: 20;
  backdrop-filter: blur(8px);
  animation: dbBarIn 0.25s ease-out;
}
@keyframes dbBarIn {
  0%   { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}
.db-compare-bar-text { flex: 1; font-weight: 600; font-size: 14px; }
.db-compare-bar-text small { display:block; font-weight: 400; opacity: 0.8; font-size: 11px; margin-top: 2px; }
.db-compare-bar-btn {
  padding: 9px 16px;
  border-radius: 999px;
  border: 0;
  font-weight: 700;
  font-size: 13px;
  cursor: pointer;
  transition: transform 0.15s, background 0.15s;
}
.db-compare-bar-btn.primary { background: #fff; color: #e30613; }
.db-compare-bar-btn.primary:hover { transform: translateY(-1px); background: #fffbe0; }
.db-compare-bar-btn.ghost { background: rgba(255,255,255,0.18); color: #fff; }
.db-compare-bar-btn.ghost:hover { background: rgba(255,255,255,0.28); }
.db-check-all { cursor: pointer; accent-color: #e30613; }

/* s35cz: floating Vergelijken-knop, altijd zichtbaar onderaan bij 2+ selectie */
.db-compare-float {
  position: fixed;
  left: 50%;
  bottom: 84px;
  transform: translateX(-50%);
  z-index: 60;
  display: inline-flex; align-items: center; gap: 10px;
  padding: 13px 22px;
  background: linear-gradient(135deg, #e30613 0%, #b4050f 100%);
  color: #fff;
  border: 0;
  border-radius: 999px;
  font-weight: 800; font-size: 14px;
  letter-spacing: 0.2px;
  cursor: pointer;
  box-shadow: 0 18px 50px rgba(227,6,19,0.45), 0 4px 14px rgba(0,0,0,0.25);
  animation: dbFloatIn 0.3s cubic-bezier(.2,.9,.3,1.2);
  transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease;
}
.db-compare-float:hover { transform: translateX(-50%) translateY(-2px); filter: brightness(1.06); box-shadow: 0 22px 60px rgba(227,6,19,0.55), 0 6px 16px rgba(0,0,0,0.3); }
.db-compare-float .cmp-count-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 24px; height: 24px; padding: 0 8px;
  background: rgba(255,255,255,0.25);
  border-radius: 999px;
  font-size: 12px; font-weight: 800;
}
.db-compare-float .cmp-arrow { font-size: 16px; line-height: 1; }
@keyframes dbFloatIn {
  0%   { opacity: 0; transform: translateX(-50%) translateY(20px) scale(0.9); }
  100% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}
@media (min-width: 1024px) {
  .db-compare-float { bottom: 28px; }
}

/* v70h-s27: linker Vergelijken-knop bij filters */
.db-compare-filter-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px;
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #fff;
  border: none; border-radius: 8px;
  font-weight: 700; font-size: 13px;
  cursor: pointer;
  transition: opacity .15s, transform .15s, filter .15s;
  white-space: nowrap;
}
.db-compare-filter-btn:hover:not(:disabled) { transform: translateY(-1px); filter: brightness(1.08); }
.db-compare-filter-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  background: var(--bg-3);
  color: var(--text-2);
}
.db-compare-filter-btn .cmp-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 6px;
  background: rgba(255,255,255,.22);
  border-radius: 999px;
  font-size: 11px; font-weight: 700;
}
/* ===== s35bu: agenda match-status kleurcodering ===== */
.agenda-evt.prog-status-komend,
.agenda-mobile-evt.prog-status-komend,
.pwg-evt.prog-status-komend {
  border-left: 3px solid #4ea1ff;
}
.agenda-evt.prog-status-bezig,
.agenda-mobile-evt.prog-status-bezig,
.pwg-evt.prog-status-bezig {
  border-left: 3px solid #f5c842;
  box-shadow: 0 0 0 2px rgba(245,200,66,0.18) inset;
  position: relative;
}
.agenda-evt.prog-status-bezig::after,
.pwg-evt.prog-status-bezig::after {
  content: 'LIVE';
  position: absolute; top: 4px; right: 6px;
  font-size: 9px; font-weight: 800; letter-spacing: 0.08em;
  color: #f5c842; background: rgba(245,200,66,0.16);
  padding: 1px 5px; border-radius: 4px;
  animation: progLivePulse 1.6s ease-in-out infinite;
}
@keyframes progLivePulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.4; }
}
.agenda-evt.prog-status-afgelopen,
.agenda-mobile-evt.prog-status-afgelopen,
.pwg-evt.prog-status-afgelopen {
  border-left: 3px solid #6e7689;
  opacity: 0.62;
  filter: grayscale(0.35);
}

.db-compare-filter-btn:disabled .cmp-count { background: rgba(0,0,0,.15); }

/* ===== s35di: Ritten-pagina ===== */
.ritten-filterbar{
  display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end;
  background:var(--panel); border:1px solid var(--border);
  border-radius:14px; padding:14px 16px; margin-bottom:14px;
}
.ritten-filterbar .rf-field{ display:flex; flex-direction:column; gap:4px; min-width:140px; }
.ritten-filterbar label{ font-size:11px; color:var(--text-3); font-weight:600; letter-spacing:.04em; text-transform:uppercase; }
.ritten-filterbar input[type="date"]{
  background:var(--bg); color:var(--text-1); border:1px solid var(--border);
  border-radius:8px; padding:8px 10px; font:inherit;
}
.ritten-summary{
  display:flex; flex-wrap:wrap; gap:14px; margin-bottom:14px;
}
.ritten-kpi{
  flex:1 1 140px; background:var(--panel); border:1px solid var(--border);
  border-radius:14px; padding:14px 18px;
}
.ritten-kpi .kpi-label{ font-size:11px; color:var(--text-3); text-transform:uppercase; letter-spacing:.04em; }
.ritten-kpi .kpi-value{ font-size:22px; font-weight:700; margin-top:4px; color:var(--text-1); }
.ritten-list{ display:flex; flex-direction:column; gap:8px; }
.rit-row{
  display:grid; grid-template-columns: 90px 1fr auto auto;
  gap:12px; align-items:center;
  background:var(--panel); border:1px solid var(--border);
  border-radius:12px; padding:12px 14px;
}
.rit-row .rit-datum{ font-size:13px; color:var(--text-2); font-weight:600; }
.rit-row .rit-route{ font-size:14px; color:var(--text-1); line-height:1.35; }
.rit-row .rit-route .rit-arrow{ color:var(--text-3); margin:0 6px; }
.rit-row .rit-doel{ font-size:11px; color:var(--text-3); margin-top:2px; }
.rit-row .rit-km{ font-weight:700; color:var(--accent); white-space:nowrap; }
.rit-row .rit-actions{ display:flex; gap:6px; }
.rit-row .rit-actions button{
  background:transparent; border:1px solid var(--border); color:var(--text-2);
  border-radius:8px; padding:6px 10px; cursor:pointer; font-size:12px;
}
.rit-row .rit-actions button:hover{ background:var(--bg); color:var(--text-1); }
.rit-empty{
  text-align:center; padding:50px 20px; color:var(--text-3); font-size:13px;
  background:var(--panel); border:1px dashed var(--border); border-radius:14px;
}
@media (max-width:640px){
  .rit-row{ grid-template-columns: 1fr; gap:6px; }
  .rit-row .rit-actions{ justify-content:flex-end; }
  .rit-row .rit-km{ font-size:15px; }
}

/* Rit-modal */
#rit-modal{
  position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:9999;
  display:none; align-items:flex-start; justify-content:center;
  padding:40px 16px; overflow-y:auto;
}
#rit-modal.active{ display:flex; }
#rit-modal .rit-dialog{
  background:var(--panel); border:1px solid var(--border);
  border-radius:16px; width:100%; max-width:520px; padding:22px;
  box-shadow:0 20px 50px rgba(0,0,0,.4);
}
#rit-modal h3{ margin:0 0 14px; font-size:18px; color:var(--text-1); }
#rit-modal .rm-field{ display:flex; flex-direction:column; gap:5px; margin-bottom:12px; position:relative; }
#rit-modal label{ font-size:11px; color:var(--text-3); font-weight:600; text-transform:uppercase; letter-spacing:.04em; }
#rit-modal input, #rit-modal textarea, #rit-modal select{
  background:var(--bg); color:var(--text-1); border:1px solid var(--border);
  border-radius:8px; padding:9px 11px; font:inherit;
}
#rit-modal textarea{ resize:vertical; min-height:60px; }
#rit-modal .rm-row{ display:flex; gap:10px; }
#rit-modal .rm-row .rm-field{ flex:1; }
#rit-modal .rm-actions{
  display:flex; gap:8px; justify-content:flex-end; margin-top:18px;
  padding-top:14px; border-top:1px solid var(--border);
}
#rit-modal .rm-geo{
  align-self:flex-start; margin-top:4px;
  background:transparent; border:1px solid var(--border); color:var(--accent);
  border-radius:8px; padding:5px 10px; font-size:12px; cursor:pointer;
}
#rit-modal .rm-geo:hover{ background:var(--bg); }
#rit-modal .rm-suggest{
  position:absolute; top:100%; left:0; right:0; z-index:10;
  background:var(--panel); border:1px solid var(--border); border-radius:8px;
  max-height:180px; overflow-y:auto; margin-top:4px; display:none;
}

/* s35dj: Ritten verbeteringen */
.rm-km-row{
  display:flex; gap:6px; align-items:center;
}
.rm-km-row input{ flex:1; }
.rm-recalc{
  width:34px; height:36px; flex-shrink:0;
  background:var(--bg-2); border:1px solid var(--border);
  color:var(--text-2); border-radius:8px; cursor:pointer;
  font-size:17px; line-height:1; display:flex; align-items:center; justify-content:center;
  transition:background .15s;
}
.rm-recalc:hover{ background:var(--accent); color:#fff; border-color:var(--accent); }
.rm-doel-chips{
  display:flex; gap:5px; flex-wrap:wrap; margin-top:6px;
}
.rm-doel-chips button{
  font-size:11px; padding:3px 9px; border-radius:12px;
  background:var(--bg-3,#1a1f2e); border:1px solid var(--border);
  color:var(--text-2); cursor:pointer; transition:background .15s, color .15s;
}
.rm-doel-chips button:hover{ background:var(--accent); color:#fff; border-color:var(--accent); }
#rit-prog-chips{
  display:flex; flex-wrap:wrap; gap:5px; margin-bottom:7px;
}
.rm-prog-chips-label{
  width:100%; font-size:11px; color:var(--text-3); margin-bottom:2px;
}
.rm-prog-chip{
  font-size:11px; padding:4px 10px; border-radius:12px;
  background:rgba(74,172,255,.10); border:1px solid rgba(74,172,255,.30);
  color:var(--accent,#4aaeff); cursor:pointer; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; max-width:100%;
  transition:background .15s, color .15s;
}
.rm-prog-chip:hover{ background:var(--accent); color:#fff; border-color:var(--accent); }
/* ↩ Terug knop in rittenlijst */
.rit-actions button + button{
  margin-left:6px; opacity:.7;
}
.rit-actions button + button:hover{ opacity:1; }
#rit-modal .rm-suggest.open{ display:block; }
#rit-modal .rm-suggest-item{
  padding:8px 11px; cursor:pointer; font-size:13px; color:var(--text-2);
}
#rit-modal .rm-suggest-item:hover{ background:var(--bg); color:var(--text-1); }




  /* s35cg: rollen-systeem visibility gates */
  .nav-role-coord, .nav-role-admin { display: none !important; }
  body.role-coord .nav-role-coord { display: flex !important; }
  /* Fase 2: Beheer-knop zichtbaar voor admin (eerder bewust uit; nu via nav). */
  body.role-admin .nav-role-admin { display: flex !important; }
  /* Admin-section in settings: alleen tonen voor admin */
  #settings-admin-section { display: none; }
  body.role-admin #settings-admin-section { display: block; }
  /* Scout-veld in wedstrijd-modal alleen voor coord/admin */
  #pm-scout-row { display: none; }
  body.role-coord #pm-scout-row,
  body.role-admin #pm-scout-row { display: block; }
  /* Team-overzicht layout */
  #view-team-overzicht .to-tabs { display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }
  #view-team-overzicht .to-tab {
    padding: 8px 16px; border-radius: 8px; background: #1f2937; color: #e5e7eb;
    cursor: pointer; border: 1px solid #374151; font-size: 14px;
  }
  #view-team-overzicht .to-tab.active { background: #f59e0b; color: #111827; border-color: #f59e0b; }
  #view-team-overzicht .to-section { display: none; }
  #view-team-overzicht .to-section.active { display: block; }
  #view-team-overzicht .to-empty { color: #9ca3af; padding: 20px; text-align: center; font-size: 14px; }
  #view-team-overzicht .to-scout-group { margin-bottom: 18px; }
  #view-team-overzicht .to-scout-head {
    font-weight: 600; color: #f59e0b; padding: 8px 4px; border-bottom: 1px solid #374151;
    margin-bottom: 8px; display: flex; align-items: center; gap: 8px;
  }
  #view-team-overzicht .to-scout-count {
    background: #374151; color: #d1d5db; padding: 2px 8px; border-radius: 10px;
    font-size: 12px; font-weight: 500;
  }
  #view-team-overzicht .to-card {
    padding: 12px; background: #111827; border: 1px solid #1f2937; border-radius: 10px;
    margin-bottom: 6px; font-size: 14px;
  }
  #view-team-overzicht .to-card-title { font-weight: 600; color: #f3f4f6; margin-bottom: 4px; }
  #view-team-overzicht .to-card-meta { color: #9ca3af; font-size: 12px; }
  /* Admin paneel */
  #view-admin .admin-user-row {
    display: flex; gap: 12px; align-items: center; padding: 12px;
    border-bottom: 1px solid #1f2937; flex-wrap: wrap;
  }
  #view-admin .admin-user-email { flex: 1 1 200px; color: #e5e7eb; font-size: 14px; }
  #view-admin .admin-user-role-select, #view-admin .admin-user-team-input {
    background: #1f2937; color: #e5e7eb; border: 1px solid #374151; border-radius: 6px;
    padding: 6px 10px; font-size: 13px;
  }
  #view-admin .admin-save-btn {
    background: #f59e0b; color: #111827; border: 0; border-radius: 6px;
    padding: 6px 14px; cursor: pointer; font-weight: 600; font-size: 13px;
  }
  #view-admin .admin-role-badge {
    display: inline-block; padding: 2px 8px; border-radius: 10px;
    font-size: 11px; font-weight: 600; margin-left: 6px;
  }
  #view-admin .admin-role-badge.scout { background: #1f2937; color: #9ca3af; }
  #view-admin .admin-role-badge.coordinator { background: #1e3a8a; color: #93c5fd; }
  #view-admin .admin-role-badge.admin { background: #7c2d12; color: #fdba74; }


.sh-picker-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.72);
  z-index: 9500;
  display: none;
  align-items: flex-end;
  justify-content: center;
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
.sh-picker-backdrop.show { display: flex; }
.sh-picker-sheet {
  background: var(--bg-2, #11151c);
  border-top-left-radius: 18px;
  border-top-right-radius: 18px;
  width: 100%;
  max-width: 600px;
  max-height: 82vh;
  display: flex; flex-direction: column;
  padding: 14px 14px 20px 14px;
  box-shadow: 0 -16px 50px rgba(0,0,0,.5);
  animation: shPickerSlide .22s ease-out;
}
@keyframes shPickerSlide {
  from { transform: translateY(40px); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
@media (min-width: 720px) {
  .sh-picker-backdrop { align-items: center; }
  .sh-picker-sheet { border-radius: 14px; max-height: 72vh; }
}
.sh-picker-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 4px;
}
.sh-picker-title { font-weight: 700; font-size: 16px; color: var(--text, #e7eaf0); }
.sh-picker-close {
  background: transparent; border: none;
  color: var(--text, #e7eaf0);
  font-size: 26px; line-height: 1;
  cursor: pointer; padding: 4px 10px;
}
.sh-picker-search {
  width: 100%;
  padding: 12px 14px;
  font-size: 15px;
  border-radius: 10px;
  border: 1px solid var(--border, #2a2f3a);
  background: var(--bg, #0a0d13);
  color: var(--text, #e7eaf0);
  margin: 8px 0;
  outline: none;
}
.sh-picker-search:focus { border-color: var(--primary, #e30613); }
.sh-picker-recents-label {
  font-size: 11px;
  color: var(--muted, #7b8294);
  text-transform: uppercase;
  letter-spacing: .5px;
  margin: 6px 2px 4px 2px;
}
.sh-picker-recents-label.hidden { display: none; }
.sh-picker-recents {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 8px;
}
.sh-picker-recents:empty { display: none; }
.sh-picker-recent-chip {
  background: rgba(227,6,19,.16);
  border: 1px solid rgba(227,6,19,.5);
  color: var(--text, #e7eaf0);
  padding: 8px 14px;
  border-radius: 999px;
  font-size: 13px; font-weight: 600;
  cursor: pointer;
  min-height: 36px;
}
.sh-picker-recent-chip:hover { background: rgba(227,6,19,.28); }
.sh-picker-list {
  flex: 1;
  overflow-y: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(86px, 1fr));
  gap: 6px;
  padding: 4px 2px 2px 2px;
  -webkit-overflow-scrolling: touch;
}
.sh-picker-list.cols-1 { grid-template-columns: 1fr; }
.sh-picker-opt {
  background: var(--bg, #0a0d13);
  border: 1px solid var(--border, #2a2f3a);
  color: var(--text, #e7eaf0);
  padding: 12px 8px;
  border-radius: 9px;
  font-size: 14px; font-weight: 600;
  cursor: pointer; text-align: center;
  min-height: 46px;
  display: flex; align-items: center; justify-content: center;
  transition: background .12s, border-color .12s, transform .08s;
}
.sh-picker-opt:hover { background: var(--primary, #e30613); border-color: var(--primary, #e30613); color: #fff; }
.sh-picker-opt:active { transform: scale(.96); }
.sh-picker-add {
  display: flex; align-items: center; justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 14px 16px;
  border-radius: 9px;
  background: rgba(227,6,19,.12);
  border: 1.5px dashed var(--primary, #e30613);
  color: var(--primary, #e30613);
  font-weight: 700; font-size: 14px;
  cursor: pointer;
  margin-top: 6px;
  min-height: 48px;
  transition: background .15s, transform .08s;
}
.sh-picker-add:hover { background: rgba(227,6,19,.22); }
.sh-picker-add:active { transform: scale(.97); }
.sh-picker-add .plus { font-size: 18px; font-weight: 800; }
.sh-picker-empty {
  color: var(--muted, #7b8294); text-align: center;
  padding: 24px; grid-column: 1/-1; font-size: 14px;
}
/* v70d: Inline autocomplete (vervangt modale picker) */
.sh-ac-dropdown {
  position: absolute;
  z-index: 9600;
  background: var(--bg-2, #11151c);
  border: 1px solid var(--border, #2a2f3a);
  border-radius: 10px;
  box-shadow: 0 14px 36px rgba(0,0,0,.55);
  max-height: 280px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 6px;
  display: none;
}
.sh-ac-dropdown.show { display: block; }
.sh-ac-opt, .sh-ac-add {
  display: flex; align-items: center;
  width: 100%; text-align: left;
  background: transparent;
  border: none;
  color: var(--text, #e7eaf0);
  padding: 11px 12px;
  border-radius: 7px;
  font-size: 14px; font-weight: 500;
  cursor: pointer;
  min-height: 42px;
  font-family: inherit;
}
.sh-ac-opt:hover, .sh-ac-opt.hover {
  background: rgba(227,6,19,.16);
  color: var(--text, #e7eaf0);
}
.sh-ac-opt .recent-mark {
  font-size: 10px; font-weight: 700;
  color: var(--primary, #e30613);
  background: rgba(227,6,19,.16);
  padding: 2px 7px; border-radius: 999px;
  margin-left: auto;
  letter-spacing: .4px;
}
.sh-ac-add {
  color: var(--primary, #e30613);
  font-weight: 700;
  border-top: 1px dashed var(--border, #2a2f3a);
  margin-top: 4px;
  padding-top: 12px;
}
.sh-ac-add:hover { background: rgba(227,6,19,.18); }
.sh-ac-add .plus { font-size: 16px; font-weight: 900; margin-right: 8px; }
.sh-ac-empty {
  color: var(--muted, #7b8294);
  padding: 14px 12px;
  font-size: 13px;
  text-align: center;
}
/* v70g: "+ Nieuw rapport" dropdown menu */
.sh-newreport-menu {
  /* v70h-s4: fixed zodat positie klopt naast fixed sidebar, ook na scrollen */
  position: fixed;
  z-index: 9700;
  min-width: 220px;
  background: var(--bg-2, #11151c);
  border: 1px solid var(--border, #2a2f3a);
  border-radius: 12px;
  box-shadow: 0 16px 40px rgba(0,0,0,.55);
  padding: 8px;
  display: none;
}
.sh-newreport-menu.show { display: block; }
.sh-newreport-menu button {
  display: flex; align-items: center; gap: 10px;
  width: 100%; text-align: left;
  background: transparent;
  border: none;
  color: var(--text, #e7eaf0);
  padding: 11px 13px;
  border-radius: 8px;
  font-size: 14px; font-weight: 600;
  cursor: pointer;
  font-family: inherit;
}
.sh-newreport-menu button:hover {
  background: rgba(227,6,19,.16);
}
.sh-newreport-menu .ic {
  width: 28px; height: 28px;
  border-radius: 7px;
  background: rgba(227,6,19,.18);
  color: var(--primary, #e30613);
  display: flex; align-items: center; justify-content: center;
  font-weight: 900; font-size: 14px;
  flex-shrink: 0;
}
.sh-newreport-menu .sub {
  font-size: 11.5px; font-weight: 500;
  color: var(--muted, #7b8294);
  margin-top: 1px;
}
.sh-newreport-menu .label-wrap { display:flex; flex-direction:column; min-width:0; }
.nav-chev { margin-left: auto; font-size: 11px; opacity: .7; }

/* v70h-s14: zwevende opslaan-balk is alleen mobile/tablet.
   Op die viewports moet #view-report extra padding-bottom hebben zodat
   content niet onder de zwevende balk valt. Desktop niet nodig — balk
   staat in flow onder het formulier. */
@media (max-width: 1024px) {
  body.view-active-report #view-report {
    padding-bottom: calc(170px + env(safe-area-inset-bottom)) !important;
  }
}
/* v70g: uniforme select-breedte */
.field select { width: 100%; box-sizing: border-box; }
.field-row select { width: 100%; box-sizing: border-box; }

/* v70g: Aankomende wedstrijden — leeg-state */
.up-row { cursor: pointer; transition: background .12s; }
.up-row:hover { background: rgba(227,6,19,.06); }
.up-empty {
  padding: 14px 16px;
  text-align: center;
  color: var(--muted, #7b8294);
  font-size: 13px;
  font-style: italic;
}

/* v70g: Instellingen-knop in sidebar */
.sidebar-settings-btn {
  display: flex; align-items: center; gap: 10px;
  width: 100%;
  padding: 11px 14px;
  background: transparent;
  border: 1px solid var(--border, #2a2f3a);
  border-radius: 10px;
  color: var(--text, #e7eaf0);
  font-size: 14px; font-weight: 600;
  cursor: pointer;
  margin-top: 12px;
  font-family: inherit;
  transition: background .12s;
}
.sidebar-settings-btn:hover { background: var(--bg-2, #11151c); }
.sidebar-settings-btn svg { flex-shrink: 0; }



  #s35cl-debug{position:fixed;top:8px;left:8px;right:8px;z-index:99999;
    background:rgba(8,10,16,.94);color:#e5e9f5;border:1px solid #f5c842;
    border-radius:8px;padding:10px 12px;font:11px/1.4 ui-monospace,Menlo,Consolas,monospace;
    max-height:60vh;overflow:auto;box-shadow:0 8px 24px rgba(0,0,0,.6);display:none}
  #s35cl-debug.on{display:block}
  #s35cl-debug h4{margin:0 0 6px;color:#f5c842;font:600 12px system-ui;letter-spacing:.3px}
  #s35cl-debug .row{display:flex;justify-content:space-between;gap:8px;padding:2px 0;border-bottom:1px dotted #262b39}
  #s35cl-debug .k{color:#9aa3b7}
  #s35cl-debug .v{color:#e5e9f5;text-align:right;font-variant-numeric:tabular-nums}
  #s35cl-debug .grp{margin-top:8px;padding-top:6px;border-top:1px solid #262b39}
  #s35cl-debug .close{position:absolute;top:6px;right:8px;background:transparent;border:0;color:#9aa3b7;font-size:16px;cursor:pointer}
  #s35cl-debug .hint{color:#9aa3b7;font-size:10px;margin-top:6px}

/* ===== s35dj: Programma redesign — nav-bar + week-strip + event-cards ===== */

/* Nav bar */
.prog-nav-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 0 4px;
  margin-bottom: 2px;
  width: 100%;
}
.prog-nav-arrow {
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-3); border: 1px solid var(--border);
  border-radius: 8px; color: var(--text-2); cursor: pointer;
  flex-shrink: 0; transition: border-color .15s, color .15s;
}
.prog-nav-arrow:hover { border-color: var(--accent); color: var(--text); }
.prog-nav-label {
  flex: 1; text-align: center;
  font-size: 14px; font-weight: 600; color: var(--text);
  display: flex; align-items: center; justify-content: center; gap: 7px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  cursor: pointer; border-radius: 8px; transition: background .15s;
}
.prog-nav-label:hover { background: var(--bg-3); }
.pnl-wk {
  font-size: 11px; font-weight: 700; color: var(--accent);
  background: rgba(78,161,255,.12); padding: 2px 7px;
  border-radius: 20px; letter-spacing: .5px; flex-shrink: 0;
}
.pnl-range { color: var(--text-2); font-size: 13px; font-weight: 500; }
.prog-nav-today {
  font-size: 11.5px; font-weight: 600; padding: 5px 11px;
  background: var(--bg-3); border: 1px solid var(--border-2);
  border-radius: 8px; color: var(--text-2); cursor: pointer;
  flex-shrink: 0; transition: border-color .15s, color .15s;
}
.prog-nav-today:hover { border-color: var(--accent); color: var(--accent); }

/* Week strip */
.prog-week-strip {
  display: flex; gap: 4px;
  padding: 8px 0 10px;
  overflow-x: auto; -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.prog-week-strip::-webkit-scrollbar { display: none; }
.prog-strip-day {
  flex: 1; min-width: 40px; max-width: 80px;
  display: flex; flex-direction: column; align-items: center;
  gap: 3px; padding: 8px 4px 6px;
  border-radius: 12px; cursor: pointer;
  background: var(--bg-2); border: 1.5px solid transparent;
  transition: background .15s, border-color .15s;
  user-select: none;
}
.prog-strip-day:hover { background: var(--bg-3); border-color: var(--border); }
.prog-strip-day.is-active {
  background: rgba(227,6,19,.12); border-color: var(--primary);
}
.prog-strip-day.is-today .psd-num {
  background: var(--primary); color: #fff;
  border-radius: 50%; width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700;
}
.psd-abbr { font-size: 10px; font-weight: 600; color: var(--text-3); text-transform: uppercase; letter-spacing: .5px; }
.psd-num  { font-size: 15px; font-weight: 700; color: var(--text); line-height: 1; }
.prog-strip-day.is-active .psd-abbr { color: var(--primary); }
.prog-strip-day.is-active .psd-num  { color: var(--primary); }
.psd-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: transparent;
}
.psd-dot.has-events { background: var(--accent); }
.prog-strip-day.is-active .psd-dot.has-events { background: var(--primary); }

/* Event list */
.prog-ev-list {
  display: flex; flex-direction: column; gap: 8px;
  padding-bottom: 24px;
}
.prog-ev-card {
  display: flex; align-items: center; gap: 12px;
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: 12px; padding: 11px 12px;
  cursor: pointer; position: relative;
  transition: border-color .15s, background .15s;
}
.prog-ev-card:hover { border-color: var(--border-2); background: var(--bg-3); }
.prog-ev-card.status-verwerkt { opacity: .6; }
.pec-icon {
  font-size: 22px; line-height: 1; flex-shrink: 0; width: 30px; text-align: center;
}
.pec-body { flex: 1; min-width: 0; }
.pec-title {
  font-size: 14px; font-weight: 600; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-bottom: 4px;
}
.pec-meta {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.pec-time {
  font-size: 12px; font-weight: 700; color: var(--secondary);
  background: rgba(245,197,24,.10); padding: 1px 6px;
  border-radius: 6px; flex-shrink: 0;
}
.pec-pill {
  font-size: 11px; color: var(--text-3);
  background: var(--bg-3); border: 1px solid var(--border);
  padding: 1px 7px; border-radius: 20px; white-space: nowrap;
}
.pec-pill.pec-verwerkt {
  color: var(--green); border-color: rgba(34,197,94,.3);
  background: rgba(34,197,94,.08);
}
.pec-loc {
  font-size: 11px; color: var(--text-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 160px;
}
.pec-edit-btn {
  flex-shrink: 0; width: 30px; height: 30px;
  display: flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid transparent;
  border-radius: 8px; color: var(--text-3); font-size: 16px;
  cursor: pointer; transition: color .15s, border-color .15s, background .15s;
}
.pec-edit-btn:hover { color: var(--text); border-color: var(--border); background: var(--bg-3); }

/* s21: Live scouten + actions row */
.pec-actions-row {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.pec-live-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px;
  background: rgba(34,197,94,.12);
  border: 1px solid rgba(34,197,94,.4);
  border-radius: 7px;
  color: #22c55e;
  font-size: 12px; font-weight: 700;
  cursor: pointer;
  transition: background .15s, transform .1s;
}
.pec-live-btn:hover { background: rgba(34,197,94,.22); transform: translateY(-1px); }
.pec-live-btn svg { flex-shrink: 0; }

/* Live scout modal */
.live-scout-backdrop {
  position: fixed; inset: 0; z-index: 2200;
  background: rgba(0,0,0,.65);
  display: flex; align-items: flex-end; justify-content: center;
  backdrop-filter: blur(4px);
}
.live-scout-modal {
  background: var(--bg-2, #1a1f2e);
  border: 1px solid var(--border, rgba(255,255,255,.1));
  border-radius: 18px 18px 0 0;
  width: 100%; max-width: 640px;
  max-height: 85vh;
  display: flex; flex-direction: column;
  box-shadow: 0 -8px 40px rgba(0,0,0,.4);
}
.live-scout-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px 12px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,.08));
  gap: 12px;
}
.live-scout-title-wrap {
  display: flex; align-items: center; gap: 10px; min-width: 0;
}
.live-scout-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: #22c55e;
  box-shadow: 0 0 8px rgba(34,197,94,.7);
  flex-shrink: 0;
  animation: dvb-pulse 1.6s ease-in-out infinite;
}
.live-scout-title {
  font-size: 15px; font-weight: 700; color: var(--text, #e5e9f5); margin: 0;
}
.live-scout-sub {
  font-size: 12px; color: var(--text-3, #8b95b0);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.live-scout-close {
  background: transparent; border: none; color: var(--text-3, #8b95b0);
  font-size: 18px; cursor: pointer; padding: 4px 8px; border-radius: 6px;
  transition: color .15s;
}
.live-scout-close:hover { color: var(--text, #e5e9f5); }
.live-scout-body {
  flex: 1; overflow-y: auto; padding: 12px 20px;
  display: flex; flex-direction: column; gap: 12px;
}
.lsm-empty {
  text-align: center; color: var(--text-3); font-size: 13px; padding: 24px 0;
}
.lsm-player-row {
  display: flex; flex-direction: column; gap: 6px;
}
.lsm-player-name {
  font-size: 13px; font-weight: 600; color: var(--text, #e5e9f5);
  display: flex; align-items: center; gap: 6px;
}
.lsm-nr {
  font-size: 11px; font-weight: 700; color: var(--text-3);
  background: var(--bg-3); border-radius: 5px; padding: 1px 5px;
}
.lsm-pos {
  font-size: 11px; color: var(--text-3);
  background: var(--bg-3); border-radius: 5px; padding: 1px 5px;
}
.lsm-note {
  width: 100%; box-sizing: border-box;
  background: var(--bg-3, #141824); border: 1px solid var(--border);
  border-radius: 8px; padding: 8px 10px;
  color: var(--text, #e5e9f5); font-size: 13px;
  resize: vertical; font-family: inherit;
  transition: border-color .15s;
}
.lsm-note:focus { outline: none; border-color: #22c55e; }
.live-scout-footer {
  display: flex; justify-content: flex-end; gap: 10px;
  padding: 12px 20px 16px;
  border-top: 1px solid var(--border, rgba(255,255,255,.08));
}

/* Type pills in modal */
.pm-type-pills {
  display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap;
}
.pm-type-pill {
  flex: 1; min-width: 90px;
  padding: 8px 10px; border-radius: 10px;
  border: 1.5px solid var(--border); background: var(--bg-2);
  color: var(--text-2); font-size: 12.5px; font-weight: 600;
  cursor: pointer; transition: border-color .15s, background .15s, color .15s;
  text-align: center;
}
.pm-type-pill:hover { border-color: var(--border-2); color: var(--text); }
.pm-type-pill.active {
  border-color: var(--primary); background: rgba(227,6,19,.10);
  color: var(--text);
}

/* Mobile tweaks */
@media (max-width: 480px) {
  .prog-nav-label { font-size: 13px; }
  .pnl-range { font-size: 12px; }
  .prog-strip-day { min-width: 36px; padding: 7px 3px 5px; }
  .psd-num { font-size: 14px; }
  .prog-ev-card { gap: 9px; padding: 9px 10px; }
  .pec-title { font-size: 13px; }
  .pm-type-pill { font-size: 12px; padding: 7px 8px; }
}

/* s35dj-fix: betere touch-respons op week-strip (voorkomt scroll-vs-tap conflict) */
.prog-week-strip { touch-action: pan-x; }
.prog-strip-day {
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}

/* s35dj: wedstrijd-fases status pill */
.sa-status.ended { background: rgba(148,163,184,0.18); color: #94a3b8; }

/* s35dj-fix: Programma event card verbeteringen */
.pec-loc-row {
  margin-top: 4px;
  display: flex; align-items: center;
}
.pec-loc {
  font-size: 11.5px; color: var(--text-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 100%;
}
.pec-route {
  cursor: pointer; color: var(--accent);
  text-decoration: none;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.pec-route:hover { color: var(--text); }

/* Betere mobiel-layout voor event cards */
@media (max-width: 480px) {
  .prog-ev-card { flex-wrap: nowrap; gap: 8px; padding: 10px; }
  .pec-icon { font-size: 18px; width: 24px; }
  .pec-title { font-size: 13px; white-space: normal; line-height: 1.35; }
  .pec-meta { gap: 4px; }
  .pec-time { font-size: 11px; }
  .pec-pill { font-size: 10px; padding: 1px 6px; }
  .pec-loc { max-width: 100%; font-size: 11px; }
  .pec-edit-btn { width: 28px; height: 28px; font-size: 14px; }

  /* Nav bar op mobiel compacter */
  .prog-nav-bar { gap: 4px; }
  .prog-nav-arrow { width: 30px; height: 30px; font-size: 18px; }
  .prog-nav-today { padding: 5px 10px; font-size: 11px; }
  .pnl-wk { font-size: 11px; }
  .pnl-range { font-size: 11px; }
}

/* ══════════════════════════════════════════════════
   PROGRAMMA — v75 card redesign (pec-time-col layout)
   ══════════════════════════════════════════════════ */

/* Time column: left narrow column with time + icon stacked */
.pec-time-col {
  display: flex; flex-direction: column; align-items: center;
  gap: 3px; flex-shrink: 0;
  min-width: 44px; max-width: 48px;
}
.pec-time-col .pec-time {
  font-size: 11px; font-weight: 700;
  color: var(--secondary, #f5c518);
  background: rgba(245,197,24,.12);
  padding: 2px 5px; border-radius: 5px;
  white-space: nowrap; text-align: center;
  display: block;
}
.pec-time-col .pec-time.muted {
  color: var(--text-3, #8b95b0);
  background: transparent;
  font-weight: 400;
}
.pec-type-icon {
  font-size: 18px; line-height: 1; text-align: center;
}

/* pec-vs — separator between thuis & uit */
.pec-vs {
  color: var(--text-3, #8b95b0);
  font-weight: 400; font-size: 13px;
  padding: 0 3px;
}

/* Chips row (replaces pec-meta/pec-pill) */
.pec-chips {
  display: flex; align-items: center; gap: 5px;
  flex-wrap: wrap; margin-top: 4px;
}
.pec-chip {
  font-size: 11px; color: var(--text-3, #8b95b0);
  background: var(--bg-3, #141824);
  border: 1px solid var(--border, rgba(255,255,255,.07));
  padding: 1px 7px; border-radius: 20px;
  white-space: nowrap; line-height: 1.5;
}
.pec-chip.leeftijd {
  color: var(--accent, #60a5fa);
  background: rgba(96,165,250,.1);
  border-color: rgba(96,165,250,.25);
  font-weight: 600;
}
.pec-chip.green {
  color: var(--green, #22c55e);
  background: rgba(34,197,94,.08);
  border-color: rgba(34,197,94,.3);
}
.pec-chip.muted {
  color: var(--text-3, #8b95b0);
  background: transparent;
  border-color: transparent;
  font-style: italic;
}

/* Desktop: card grid — events side by side when wide */
@media (min-width: 700px) {
  #programma-grid.prog-ev-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 10px;
    align-items: start;
  }
  .prog-ev-card {
    padding: 13px 14px;
    border-radius: 14px;
  }
  .pec-title { font-size: 14.5px; white-space: nowrap; }
  .pec-time-col { min-width: 50px; }
}

/* Mobile: compact single-column */
@media (max-width: 699px) {
  #programma-grid.prog-ev-list {
    display: flex; flex-direction: column; gap: 8px;
  }
  .prog-ev-card {
    padding: 10px 11px; gap: 10px;
  }
  .pec-title { font-size: 13.5px; white-space: normal; line-height: 1.3; }
  .pec-time-col { min-width: 40px; }
  .pec-type-icon { font-size: 16px; }
  .pec-chip { font-size: 10.5px; padding: 1px 6px; }
  .pec-edit-btn { width: 28px; height: 28px; font-size: 14px; }
}

/* Week-strip desktop: wider day tiles */
@media (min-width: 700px) {
  .prog-week-strip { gap: 6px; padding: 10px 0 12px; }
  .prog-strip-day { min-width: 60px; max-width: 100px; padding: 10px 8px 8px; }
  .psd-abbr { font-size: 11px; }
  .psd-num { font-size: 17px; }
  .psd-dot { width: 6px; height: 6px; }
}

/* ── Spelersdetail: scout-samenvatting ── */
.dtl-summary-body { display: flex; flex-direction: column; gap: 12px; }
.dtl-summary-row {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 10px 12px; background: var(--bg-3);
  border-radius: 8px; border: 1px solid var(--border);
}
.dtl-summary-wapen { border-color: rgba(245,197,24,.35); background: rgba(245,197,24,.06); }
.dtl-summary-icon { font-size: 18px; line-height: 1; flex-shrink: 0; margin-top: 1px; }
.dtl-summary-label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .7px;
  color: var(--text-3); margin-bottom: 4px; font-weight: 600;
}
.dtl-summary-text { font-size: 13px; color: var(--text); line-height: 1.5; }
.dtl-summary-wapen .dtl-summary-text { font-weight: 700; color: var(--secondary); }
.dtl-summary-notes { color: var(--text-2); font-size: 12.5px; }

/* ── Follow-up nodig widget ── */
.followup-meta { font-size:11px; color:var(--text-3); margin-bottom:10px; font-weight:500; }
.followup-list { display:flex; flex-direction:column; gap:6px; margin-bottom:12px; }
.followup-row {
  display:flex; align-items:center; gap:10px;
  padding:9px 10px; background:var(--bg-3);
  border:1px solid var(--border); border-radius:8px;
  cursor:pointer; transition:all .15s;
}
.followup-row:hover { border-color:var(--grade-c); background:rgba(245,158,11,.06); }
.followup-avatar {
  width:32px; height:32px; border-radius:50%;
  background:var(--bg-2); border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:700; color:var(--text-2); flex-shrink:0;
}
.followup-info { flex:1; min-width:0; }
.followup-naam { font-size:13px; font-weight:600; color:var(--text); }
.followup-meta-row { font-size:11px; color:var(--text-3); margin-top:1px; }
.followup-right { display:flex; flex-direction:column; align-items:flex-end; gap:4px; flex-shrink:0; }
.followup-days { font-size:10.5px; color:var(--grade-c); font-weight:600; white-space:nowrap; }
.followup-more { font-size:11px; color:var(--text-3); text-align:center; padding:6px; }
.followup-cta { width:100%; justify-content:center; }
.followup-empty {
  display:flex; align-items:center; gap:8px;
  color:var(--grade-a); font-size:12px; font-weight:600;
  padding:10px 4px;
}

/* ===== Floating vergelijk-bar ===== */
.cmp-float-bar {
  position: fixed;
  bottom: 64px; /* boven bottom-nav */
  left: 50%;
  transform: translateX(-50%);
  z-index: 1200;
  background: var(--bg-card, #161b26);
  border: 1.5px solid var(--accent, #3b82f6);
  border-radius: 14px;
  box-shadow: 0 6px 28px rgba(0,0,0,.45);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px 9px 16px;
  min-width: 260px;
  max-width: calc(100vw - 32px);
  animation: cmpBarIn .18s ease;
}
@keyframes cmpBarIn {
  from { opacity:0; transform:translateX(-50%) translateY(10px); }
  to   { opacity:1; transform:translateX(-50%) translateY(0); }
}
/* Op desktop: links in sidebar breedte niet nodig — maak smaller en pas positie aan */
@media (min-width: 768px) {
  .cmp-float-bar {
    bottom: 24px;
    left: calc(220px + (100% - 220px) / 2);
  }
}
.cmp-float-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; color: var(--text);
  flex: 1;
  white-space: nowrap;
}
.cmp-float-label svg { color: var(--accent, #3b82f6); flex-shrink:0; }
.cmp-float-actions { display:flex; align-items:center; gap:6px; }
.cmp-float-clear {
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 7px;
  color: var(--text-3);
  font-size: 13px;
  width: 28px; height: 28px;
  cursor: pointer;
  display: flex; align-items:center; justify-content:center;
  transition: background .1s, color .1s;
}
.cmp-float-clear:hover { background: var(--bg-2); color: var(--text); }
.cmp-float-go {
  background: var(--accent, #3b82f6);
  border: none;
  border-radius: 8px;
  color: #fff;
  font-size: 13px; font-weight: 700;
  padding: 6px 14px;
  cursor: pointer;
  white-space: nowrap;
  transition: opacity .12s;
}
.cmp-float-go:hover { opacity: .88; }

/* ===== Vergelijken nav-badge ===== */
.nav-cmp-badge {
  background: var(--accent, #3b82f6);
  color: #fff;
  font-size: 10px; font-weight: 700;
  min-width: 17px; height: 17px;
  border-radius: 9px;
  padding: 0 5px;
  display: inline-flex; align-items:center; justify-content:center;
  line-height: 1; margin-left: 7px;
  vertical-align: middle; box-sizing: border-box;
}

/* ===== Ontwikkeltrend card ===== */
.dtl-trend-card { }
.dtl-trend-legend {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  color: var(--text-2);
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.dtl-trend-dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}

/* ===== Programma: snelle verwerk-knop op event card ===== */
.pec-verwerk-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 7px;
  padding: 4px 10px;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--grade-a);
  background: rgba(34,197,94,.1);
  border: 1px solid rgba(34,197,94,.3);
  border-radius: 6px;
  cursor: pointer;
  font-family: inherit;
  transition: background .12s, border-color .12s;
}
.pec-verwerk-btn:hover {
  background: rgba(34,197,94,.2);
  border-color: rgba(34,197,94,.5);
}


/* =====================================================================
   VISUELE VERBETERINGEN — animaties, 3D, micro-interacties
   ===================================================================== */

/* ── A1: Tab crossfade + slide bij view-wissel ── */
.view.active {
  animation: sh-view-enter .22s cubic-bezier(.25,.46,.45,.94) both;
}
@keyframes sh-view-enter {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── A2: Staggered card entrances ── */
@keyframes sh-slide-up {
  from { opacity: 0; transform: translateY(18px) scale(.98); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}
.sh-stagger {
  animation: sh-slide-up .32s cubic-bezier(.25,.46,.45,.94) both;
  animation-delay: calc(var(--si, 0) * 45ms);
}

/* ── A3: Button micro-interacties ── */
.btn { transition: transform .12s, box-shadow .15s, background .15s, border-color .15s, opacity .15s; }
.btn:active { transform: scale(0.95) !important; }
.btn-primary:hover  { box-shadow: 0 0 22px rgba(227,6,19,.35), 0 4px 14px rgba(0,0,0,.3); }
.btn-secondary:hover { box-shadow: 0 4px 14px rgba(0,0,0,.25); }
.btn-ghost:hover { background: rgba(255,255,255,.06); }

/* ── B2: Segmentbalk niveau-verdeling ── */
.dist-segment-wrap {
  display: flex; flex-direction: column; gap: 10px; padding: 4px 0;
}
.dist-segment-row {
  display: flex; align-items: center; gap: 10px;
}
.dist-segment-label {
  width: 26px; flex-shrink: 0;
  display: flex; justify-content: center;
}
.dist-segment-track {
  flex: 1; height: 10px;
  background: rgba(255,255,255,.06);
  border-radius: 6px; overflow: hidden;
}
.dist-segment-fill {
  height: 100%; border-radius: 6px;
  width: 0;
  transition: width .7s cubic-bezier(.25,.46,.45,.94);
}
.dist-segment-count {
  width: 26px; font-size: 12px; color: var(--text-3);
  text-align: right; flex-shrink: 0;
}
.dist-section-title { font-size: 11px; color: var(--text-3); margin: 10px 0 4px; letter-spacing: .04em; text-transform: uppercase; }

/* ── C1: 3D player card tilt ── */
.sh-tilt-card {
  transform-style: preserve-3d;
  transform: perspective(800px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));
  transition: transform .08s linear, box-shadow .15s;
  will-change: transform;
}
.sh-tilt-card:hover {
  box-shadow: 0 16px 40px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.08);
}

/* ── C2: Grade A sh
/* ── Speler-detail: icon-knoppen bovenaan ── */
.dtl-icon-btn {
  width: 40px; height: 40px; padding: 0;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.dtl-icon-btn svg { width: 19px; height: 19px; }
.dtl-icon-btn:hover { background: var(--bg-3); }

/* ── Speler-detail: rapporten-dropdown ── */
.dtl-report-dd { position: relative; }
.dtl-report-dd-menu {
  position: absolute; top: calc(100% + 6px); right: 0; z-index: 50;
  min-width: 240px; max-width: 320px; max-height: 60vh; overflow-y: auto;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 12px; box-shadow: var(--shadow); padding: 6px;
}
.dtl-report-dd-item {
  display: flex; align-items: center; gap: 10px; width: 100%;
  background: none; border: none; text-align: left; cursor: pointer;
  padding: 9px 10px; border-radius: 8px; color: var(--text);
}
.dtl-report-dd-item:hover { background: var(--bg-3); }
.dtl-dd-grade { flex-shrink: 0; min-width: 26px; text-align: center; }
.dtl-dd-text { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.dtl-dd-match { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dtl-dd-date { font-size: 11px; color: var(--text-3); }
.dtl-dd-pdf-btn { flex-shrink:0; margin-left:auto; width:24px; height:24px; border:none; border-radius:6px; background:transparent; color:var(--text-3); cursor:pointer; display:flex; align-items:center; justify-content:center; }
.dtl-dd-pdf-btn:hover { background:var(--bg-3); color:var(--text); }
.dtl-dd-allpdf { border-bottom:1px solid var(--border); margin-bottom:4px; padding-bottom:11px; }

/* ── Floating "terug naar boven" knop ── */
#sh-back-to-top {
  position: fixed;
  bottom: 76px; right: 16px;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--bg-3);
  border: 1px solid var(--border-2);
  color: var(--text-2);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; z-index: 90;
  opacity: 0; pointer-events: none;
  transition: opacity .25s, transform .25s, background .15s;
  transform: translateY(8px);
  box-shadow: 0 4px 16px rgba(0,0,0,.35);
}
#sh-back-to-top.visible {
  opacity: 1; pointer-events: auto;
  transform: translateY(0);
}
#sh-back-to-top:hover { background: var(--bg-4, var(--bg-3)); color: var(--text); }
@media (min-width: 760px) {
  #sh-back-to-top { bottom: 24px; right: 24px; }
}

/* ── Leeftijdscategorie chip in speler-header ── */
.dtl-leeftijd-chip {
  display: inline-block;
  font-size: 11px; font-weight: 700;
  padding: 2px 8px; border-radius: 20px;
  background: rgba(78,161,255,.15);
  border: 1px solid rgba(78,161,255,.35);
  color: #60a5fa;
  vertical-align: middle;
  margin-left: 8px;
  letter-spacing: .3px;
}

/* ===== s34/s36: Concepten-sectie in Wedstrijden-tab ===== */
.matches-concepts-section {
  margin-bottom: 20px;
}
.mcs-header {
  display: flex; align-items: center; gap: 8px;
  padding: 0 2px 8px;
}
.mcs-title {
  font-size: 12px; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--text-2, #8892a4);
}
.mcs-badge {
  background: var(--primary, #e30613); color: #fff;
  font-size: 10px; font-weight: 700;
  min-width: 18px; height: 18px; border-radius: 9px;
  padding: 0 5px; display: inline-flex;
  align-items: center; justify-content: center;
}
.concept-card {
  display: flex; align-items: center; gap: 12px;
  background: rgba(245,200,66,.07);
  border: 1px solid rgba(245,200,66,.18);
  border-radius: 10px; padding: 10px 13px;
  margin-bottom: 8px; cursor: pointer;
  transition: background .15s, border-color .15s, transform .1s;
}
.concept-card:hover { background: rgba(245,200,66,.13); border-color: rgba(245,200,66,.35); }
.concept-card:active { transform: scale(.99); }
.concept-card.cc-highlight {
  animation: cc-pulse .5s ease 0s 2;
}
@keyframes cc-pulse {
  0%,100% { box-shadow: none; }
  50% { box-shadow: 0 0 0 3px rgba(245,200,66,.45); }
}
.cc-date {
  display: flex; flex-direction: column; align-items: center;
  min-width: 28px; text-align: center;
}
.cc-day { font-size: 16px; font-weight: 800; color: var(--text, #e7eaf0); line-height: 1; }
.cc-month { font-size: 10px; font-weight: 600; color: var(--text-2, #8892a4); text-transform: uppercase; }
.cc-main { flex: 1; min-width: 0; }
.cc-teams { font-size: 13px; font-weight: 600; color: var(--text, #e7eaf0); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cc-vs { color: var(--text-3, #5a6478); font-weight: 400; }
.cc-meta { display: flex; align-items: center; gap: 6px; margin-top: 3px; flex-wrap: wrap; }
.cc-badge { font-size: 10.5px; font-weight: 600; padding: 2px 7px; border-radius: 5px; }
.cc-badge-rapport { background: rgba(255,255,255,.07); color: var(--text-2,#9aa3b7); }
.cc-badge-snel { background: rgba(255,255,255,.07); color: var(--text-2,#9aa3b7); }
.cc-age { font-size: 10px; color: var(--text-3, #5a6478); }
.cc-arrow { color: var(--text-3, #5a6478); flex-shrink: 0; }

/* s36: compact concept-pill in match card */
.m-concept-pill {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(245,200,66,.12);
  border: 1px solid rgba(245,200,66,.28);
  color: #f5c842; border-radius: 6px;
  padding: 4px 10px; font-size: 11.5px; font-weight: 600;
  cursor: pointer; margin-top: 6px;
  transition: background .15s, border-color .15s;
}
.m-concept-pill:hover { background: rgba(245,200,66,.22); border-color: rgba(245,200,66,.45); }

/* ====================================================
   TOERNOOIEN — s36g
   ==================================================== */

/* Subview toggle in Wedstrijden-topbar */
.matches-subview-toggle {
  display: flex;
  gap: 0;
  border: 0.5px solid var(--border, #232d40);
  border-radius: 8px;
  overflow: hidden;
  flex-shrink: 0;
}
/* sh-v355: verberg de toggle zolang er maar één subview is (nu alleen
   "Wedstrijden"). Een toggle met één optie is overbodig en dupliceert de
   paginatitel. Verschijnt automatisch weer zodra een 2e knop wordt toegevoegd. */
.matches-subview-toggle:has(.msv-btn:only-child) { display: none; }
.msv-btn {
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 500;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--text-2, #9aa8bd);
  display: flex;
  align-items: center;
  gap: 5px;
  transition: background .15s, color .15s;
  white-space: nowrap;
}
.msv-btn.active {
  /* sh-v355: --text-1/--bg-2 fallbacks waren light-theme → donkere tekst op
     donkere bg = onzichtbaar. Nu expliciet dark-theme-proof. */
  background: var(--bg-3, #1a2332);
  color: var(--text, #e8edf5);
}
.msv-btn:not(:last-child) { border-right: 0.5px solid var(--border, #232d40); }
.msv-btn svg { flex-shrink: 0; }

/* Tournament detail sheet */


@keyframes syncPulse { 0%,100%{opacity:1} 50%{opacity:.3} }

/* Poule tabs */


/* Body */

/* Match card in detail */


/* Standings */

/* Knockout section */







/* Import form */
.tf-import-tabs {
  display: flex; border: 0.5px solid var(--border-1,#e2e5ef);
  border-radius: 8px; overflow: hidden; margin-top: 4px;
}
.tf-itab {
  flex: 1; padding: 9px 12px; font-size: 12px; font-weight: 500;
  background: transparent; border: none; cursor: pointer;
  color: var(--text-3, #9aa3b7); display: flex; align-items: center; justify-content: center; gap: 5px;
  transition: background .15s, color .15s;
}
.tf-itab.active {
  background: rgba(245,197,66,.14);
  color: #f5c542;
  font-weight: 600;
}
.tf-itab:not(:last-child) { border-right: 0.5px solid var(--border, #2a2d3e); }
.tf-itab svg { opacity: .7; }
.tf-itab.active svg { opacity: 1; stroke: #f5c542; }

.tf-upload-zone {
  border: 1.5px dashed var(--border-1,#e2e5ef); border-radius: 12px;
  padding: 32px 20px; text-align: center; cursor: pointer;
  color: var(--text-2,#6b7280); margin-top: 16px;
  transition: border-color .15s, background .15s;
}
.tf-upload-zone:hover { border-color: var(--accent,#4f6ef7); background: #f6f8ff; }
.tf-upload-zone.drag-over { border-color: var(--accent,#4f6ef7); background: #eef2ff; }

.tf-preview-header {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 600; color: #3b6d11;
  background: #eaf3de; border-radius: 8px; padding: 8px 12px;
  margin-bottom: 12px;
}

/* ── shAC universal autocomplete dropdown  s36l ── */
.sh-ac-dd {
  position: fixed;
  z-index: 99999;
  background: var(--card, #13151f);
  border: 1px solid var(--border, #2a2d3e);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,.45);
  max-height: 240px;
  overflow-y: auto;
  display: none;
  padding: 4px 0;
  -webkit-overflow-scrolling: touch;
}
.sh-ac-item {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 9px 14px;
  cursor: pointer;
  transition: background .12s;
  font-size: 13px;
}
.sh-ac-item:hover,
.sh-ac-item.active {
  background: rgba(245,197,66,.1);
}
.sh-ac-label {
  color: var(--text-1, #e5e9f5);
  font-weight: 500;
  flex: 1;
}
.sh-ac-label strong {
  color: #f5c542;
  font-weight: 700;
}
.sh-ac-sub {
  color: var(--text-3, #9aa3b7);
  font-size: 11px;
  white-space: nowrap;
}

/* 3-kolom grid voor leeftijdscategorie */
.sh-ac-dd--grid {
  max-height: 320px;
  padding: 6px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2px;
  overflow-y: auto;
}
.sh-ac-item--col {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 7px 4px;
  border-radius: 6px;
  cursor: pointer;
  transition: background .12s;
  font-size: 12.5px;
  text-align: center;
  font-weight: 500;
}
.sh-ac-item--col:hover,
.sh-ac-item--col.active {
  background: rgba(245,197,66,.15);
  color: #f5c542;
}
.sh-ac-item--col .sh-ac-label {
  flex: none;
  font-size: 12.5px;
}

/* ── Rit programma-picker  s36o ── */
.rpp-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  padding: 12px 20px;
  cursor: pointer;
  border-bottom: 1px solid var(--border, #2a2d3e);
  transition: background .12s;
}
.rpp-row:last-child { border-bottom: none; }
.rpp-row:hover { background: rgba(245,197,66,.08); }
.rpp-dag {
  font-size: 11px;
  font-weight: 600;
  color: #f5c542;
  min-width: 52px;
  text-transform: uppercase;
  letter-spacing: .4px;
}
.rpp-naam {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-1, #e5e9f5);
  flex: 1;
}
.rpp-sub {
  font-size: 11px;
  color: var(--text-3, #9aa3b7);
  width: 100%;
  padding-left: 58px;
}


/* Scout picker overlay */

/* ══════════════════════════════════════════════════
   PROGRAMMA v76 — Agenda-kolommen layout (pag-*)
   ══════════════════════════════════════════════════ */

/* Container: 7 kolommen op desktop, verticale lijst op mobiel */
#programma-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
  align-items: start;
  padding-bottom: 32px;
}
@media (max-width: 900px) {
  #programma-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 599px) {
  #programma-grid {
    display: flex; flex-direction: column; gap: 0;
  }
}

/* Dagkolom */
.pag-day {
  display: flex; flex-direction: column; gap: 4px;
  background: var(--bg-2, #111722);
  border: 1px solid var(--border, rgba(255,255,255,.07));
  border-radius: 14px; padding: 8px 6px 6px;
  min-height: 80px;
  transition: border-color .15s;
}
.pag-day.is-today {
  border-color: var(--primary, #e30613);
  background: rgba(227,6,19,.04);
}
/* Mobiel: dag-strip + één dag tegelijk */
@media (max-width: 720px) {
  #programma-grid {
    display: block !important;
  }
  .pag-day {
    display: none;
    border-radius: 14px;
    padding: 12px;
    margin: 0;
  }
  .pag-day.mob-active {
    display: flex !important;
  }
}

/* ── Mobiele dag-strip ──────────────────────────────────────────────── */
#prog-mob-strip {
  display: none;
}
@media (max-width: 720px) {
  #prog-mob-strip {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
    padding: 4px 2px 10px;
    margin-bottom: 10px;
    scrollbar-width: none;
    overscroll-behavior-x: contain;
    position: sticky;
    top: 0;
    z-index: 10;
    background: var(--bg, #0f1117);
  }
  #prog-mob-strip::-webkit-scrollbar { display: none; }
}
.pmds-chip {
  display: none;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  min-width: 44px;
  padding: 8px 6px 6px;
  border-radius: 12px;
  border: 1px solid var(--border, rgba(255,255,255,.08));
  background: var(--bg-2, #111722);
  cursor: pointer;
  flex-shrink: 0;
  scroll-snap-align: center;
  transition: border-color .13s, background .13s;
  position: relative;
}
@media (max-width: 720px) {
  .pmds-chip { display: flex; }
}
.pmds-abbr {
  font-size: 9px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .5px;
  color: var(--text-3, #8b95b0);
}
.pmds-num {
  font-size: 16px; font-weight: 700;
  color: var(--text, #e5e9f5);
  line-height: 1;
}
.pmds-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--accent, #60a5fa);
  margin-top: 2px;
}
.pmds-chip.pmds-today .pmds-num {
  background: var(--primary, #e30613);
  color: #fff;
  border-radius: 50%;
  width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px;
}
.pmds-chip.pmds-today .pmds-dot { background: var(--primary, #e30613); }
.pmds-chip.pmds-active {
  border-color: var(--gold, #f5c842);
  background: rgba(245,200,66,.08);
}
.pmds-chip.pmds-active .pmds-abbr { color: var(--gold, #f5c842); }
.pmds-chip.pmds-active .pmds-dot  { background: var(--gold, #f5c842); }

/* Dag-header */
.pag-day-head {
  display: flex; align-items: center; gap: 4px;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,.06));
  margin-bottom: 4px;
}
.pag-abbr {
  font-size: 9px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .7px; color: var(--text-3, #8b95b0);
}
.pag-date-num {
  font-size: 14px; font-weight: 700; color: var(--text, #e5e9f5);
  min-width: 20px; text-align: center;
}
.pag-date-num.today {
  background: var(--primary, #e30613); color: #fff;
  border-radius: 50%; width: 22px; height: 22px;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px;
}
.pag-month {
  font-size: 9px; color: var(--text-3, #8b95b0); font-weight: 500;
  display: none;
}
@media (max-width: 599px) {
  .pag-day-head { gap: 8px; padding-bottom: 8px; margin-bottom: 6px; }
  .pag-abbr { font-size: 11px; }
  .pag-date-num { font-size: 16px; }
  .pag-month { display: inline; font-size: 12px; }
}
.pag-day-cnt {
  margin-left: auto;
  background: var(--accent, #60a5fa); color: #fff;
  font-size: 9px; font-weight: 700;
  min-width: 16px; height: 16px; border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  padding: 0 4px;
}
.pag-day.is-today .pag-day-cnt { background: var(--primary, #e30613); }

/* Lege dag */
.pag-vrij {
  font-size: 12px; color: var(--text-3); text-align: center;
  padding: 8px 0; opacity: .4;
}

/* Event card */
.pag-card {
  background: var(--bg-3, #141824);
  border: 1px solid var(--border, rgba(255,255,255,.06));
  border-radius: 9px; padding: 6px 7px;
  cursor: pointer; position: relative;
  transition: border-color .12s, background .12s;
}
.pag-card:hover { border-color: var(--border-2, rgba(255,255,255,.15)); background: var(--bg-2); }
.pag-card.status-verwerkt { opacity: .55; }

/* Card bovenste rij */
.pag-card-top {
  display: flex; align-items: center; gap: 4px;
}
.pag-icon { font-size: 13px; flex-shrink: 0; }
.pag-time {
  font-size: 10px; font-weight: 700; color: var(--secondary, #f5c518);
  white-space: nowrap; flex-shrink: 0;
}
.pag-title {
  font-size: 11px; font-weight: 600; color: var(--text, #e5e9f5);
  flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  line-height: 1.3;
}
@media (max-width: 599px) {
  .pag-title { font-size: 13px; white-space: normal; }
  .pag-icon { font-size: 16px; }
  .pag-time { font-size: 11px; }
}
.pag-edit {
  flex-shrink: 0; font-size: 11px; color: var(--text-3);
  background: none; border: none; cursor: pointer;
  opacity: .6; transition: opacity .12s;
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; min-height: 36px;
  margin: -6px -8px -6px 0; /* compenseer vergrote tikzone zodat layout niet verschuift */
}
.pag-edit:hover { opacity: 1; }

/* Chips onder titel */
.pag-chips {
  display: flex; flex-wrap: wrap; gap: 3px; margin-top: 4px;
}
.pag-chip {
  font-size: 10px; color: var(--text-3);
  background: var(--bg-2); border: 1px solid var(--border);
  padding: 1px 5px; border-radius: 20px; white-space: nowrap;
}
.pag-chip.age { color: var(--accent, #60a5fa); border-color: rgba(96,165,250,.3); background: rgba(96,165,250,.08); font-weight: 600; }
.pag-chip.ok  { color: #22c55e; border-color: rgba(34,197,94,.3); background: rgba(34,197,94,.08); }
.pag-chip.muted { color: var(--text-3); background: transparent; border-color: transparent; font-style: italic; }
.pag-loc-link { color: inherit; text-decoration: none; }
.pag-chip.loc { max-width: 80px; overflow: hidden; text-overflow: ellipsis; }

/* Actions (live/verwerk) */
.pag-actions { display: flex; gap: 5px; margin-top: 5px; flex-wrap: wrap; }

/* + Toevoegen knop onderaan kolom */
.pag-add-day-btn {
  margin-top: auto; width: 100%; padding: 5px 0;
  display: flex; align-items: center; justify-content: center; gap: 5px;
  background: transparent; border: 1px dashed var(--border);
  border-radius: 7px; color: var(--text-3); font-size: 14px;
  cursor: pointer; transition: border-color .12s, color .12s, background .12s;
  line-height: 1;
}
.pag-add-day-btn:hover { border-color: var(--accent); color: var(--accent); }
.pag-add-icon { font-size: 15px; font-weight: 700; }
.pag-add-txt { display: none; }
@media (max-width: 599px) {
  /* Mobiel: prominente, makkelijk-te-tikken inplan-knop (≥44px tikzone) */
  .pag-add-day-btn {
    width: 100%; min-height: 46px; padding: 12px 0;
    align-self: stretch; margin-top: 12px;
    border-style: solid; border-color: var(--accent);
    color: var(--accent); background: rgba(96,165,250,.09);
    font-size: 15px; font-weight: 700;
  }
  .pag-add-txt { display: inline; }
}

/* sh-v352: dagdeel-kopjes binnen een drukke dag (2+ wedstrijden) */
.pag-dagdeel {
  font-size: 9px; text-transform: uppercase; letter-spacing: .6px;
  color: var(--text-3); font-weight: 700; margin: 7px 0 2px; padding-left: 2px;
}
.pag-day-body > .pag-dagdeel:first-child { margin-top: 0; }
@media (max-width: 599px) { .pag-dagdeel { font-size: 11px; margin: 10px 0 4px; } }

/* sh-v352: "Meer details"-uitklap in inplan-modal */
.pm-more {
  margin-top: 14px;
  border-top: 1px solid var(--border, rgba(255,255,255,.07));
  padding-top: 4px;
}
.pm-more > summary {
  list-style: none; cursor: pointer; user-select: none;
  font-size: 13px; font-weight: 600; color: var(--text-2, #c2c8d6);
  padding: 8px 2px; display: flex; align-items: center; gap: 6px;
}
.pm-more > summary::-webkit-details-marker { display: none; }
.pm-more > summary::before {
  content: '▸'; font-size: 11px; color: var(--text-3);
  transition: transform .15s;
}
.pm-more[open] > summary::before { transform: rotate(90deg); }
.pm-more > summary:hover { color: var(--text, #e5e9f5); }
.pm-more-hint { font-weight: 400; color: var(--text-3); font-size: 11px; }
@media (max-width: 599px) { .pm-more > summary { padding: 12px 2px; font-size: 15px; } }

/* ══════════════════════════════════════════════════
   TOERNOOI DETAIL — verbeterde standen + layout
   ══════════════════════════════════════════════════ */

/* Sectie-titel boven standen/wedstrijden */

/* Standen-wrapper */

/* Standen-tabel */

/* Wedstrijd-rijen */

/* Scout-knop — duidelijk zichtbaar */

/* Scout picker: "nieuwe speler" rij */

/* ============================================================
   v77 — Scout picker fase-2 + multi-select + match detail
   ============================================================ */

/* ── Scout picker fase 2 ── */
.btn-ghost-sm {
  background: transparent; border: 1px solid var(--border,#2a2d3e);
  color: var(--text-2,#9aa3b7); border-radius: 8px; padding: 7px 16px;
  font-size: 13px; font-weight: 500; cursor: pointer; transition: background .12s, color .12s;
}
.btn-ghost-sm:hover { background: var(--hover,#1e2236); color: var(--text-1,#e2e8f0); }
.btn-primary-sm {
  background: var(--accent,#4f6ef7); border: none; color: #fff;
  border-radius: 8px; padding: 7px 20px; font-size: 13px; font-weight: 600;
  cursor: pointer; transition: opacity .12s, transform .1s;
}
.btn-primary-sm:hover { opacity: .88; }
.btn-primary-sm:active { transform: scale(.97); }

/* ── Multi-select leeftijdscategorie ── */
.tf-multi-cat-wrap { display: flex; flex-direction: column; gap: 6px; }
.tf-multi-cat-tags {
  display: flex; flex-wrap: wrap; gap: 6px; min-height: 28px;
  padding: 4px 0;
}
.tf-cat-tag {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(245,197,66,.15); border: 1px solid rgba(245,197,66,.35);
  color: var(--gold,#f5c542); border-radius: 20px;
  padding: 3px 10px 3px 12px; font-size: 12px; font-weight: 600;
}
.tf-cat-tag-x {
  background: none; border: none; color: var(--gold,#f5c542);
  cursor: pointer; font-size: 15px; line-height: 1; padding: 0 2px;
  opacity: .7; transition: opacity .1s;
}
.tf-cat-tag-x:hover { opacity: 1; }
.tf-leeftijd-add { width: auto !important; }

/* ── Match detail panel ── */
@keyframes tds-md-in { from { opacity:0 } to { opacity:1 } }
@keyframes tds-sheet-up { from { transform: translateY(100%) } to { transform: translateY(0) } }

/* Score row */

/* Body + footer */

/* ── Standen verbetering ── */

/* ── Toernooi card header clickable ── */
.tc-header { cursor: pointer; transition: opacity .12s; }
.tc-header:hover { opacity: .85; }

/* ── v79: Elftal labels in toernooi wedstrijdrijen ── */

/* ── v79: Toernooi import progress indicator ── */
@keyframes tf-spin {
  from { transform: rotate(0deg); } to { transform: rotate(360deg); }
}



/* ================================================================
   s102: OBSERVATIE MODAL
   ================================================================ */
.obs-backdrop {
  position: fixed; inset: 0; z-index: 4500;
  background: rgba(0,0,0,.65); backdrop-filter: blur(3px);
  display: flex; align-items: center; justify-content: center; padding: 16px;
}
.obs-modal {
  background: var(--bg-2,#111827); border: 1px solid var(--border,#232838);
  border-radius: 14px; width: 100%; max-width: 520px; max-height: 90vh;
  overflow-y: auto; box-shadow: 0 20px 60px rgba(0,0,0,.6);
}
.obs-modal-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  padding: 18px 20px 12px; border-bottom: 1px solid var(--border,#232838);
}
.obs-modal-title { font-size: 17px; font-weight: 800; color: var(--text-1,#e5e9f5); }
.obs-modal-sub { font-size: 11.5px; color: var(--text-3,#8b93a8); margin-top: 3px; }
.obs-modal-close {
  background: none; border: none; font-size: 22px; color: var(--text-3,#8b93a8);
  cursor: pointer; line-height: 1; padding: 0 4px; flex-shrink: 0;
}
.obs-modal-close:hover { color: var(--text-1,#e5e9f5); }
#obs-form { padding: 16px 20px 20px; }
.obs-section-label {
  font-size: 10px; text-transform: uppercase; letter-spacing: .8px;
  color: var(--text-3,#8b93a8); font-weight: 700; margin-bottom: 8px;
}
.obs-row { display: flex; gap: 10px; margin-bottom: 8px; }
.obs-field { display: flex; flex-direction: column; gap: 4px; }
.obs-field-grow { flex: 1; min-width: 0; }
.obs-field-sm { width: 90px; flex-shrink: 0; }
.obs-field label { font-size: 10.5px; color: var(--text-3,#8b93a8); font-weight: 600; text-transform: uppercase; letter-spacing: .5px; }
.obs-opt { font-weight: 400; text-transform: none; letter-spacing: 0; opacity: .7; }
.obs-field input, .obs-field select {
  background: var(--bg-3,#141824); border: 1px solid var(--border,#232838);
  border-radius: 8px; padding: 8px 10px; color: var(--text-1,#e5e9f5);
  font-size: 13px; font-family: inherit; outline: none;
  transition: border-color .15s;
}
.obs-field input:focus, .obs-field select:focus { border-color: #4ea1ff; }
.obs-field select { cursor: pointer; }
.obs-terms { display: flex; flex-direction: column; gap: 5px; }
.obs-term-row { display: flex; align-items: center; gap: 8px; }
.obs-term-label { font-size: 10.5px; color: var(--text-3,#8b93a8); width: 90px; flex-shrink: 0; text-transform: capitalize; }
.obs-term-in {
  flex: 1; background: var(--bg-3,#141824); border: 1px solid var(--border,#232838);
  border-radius: 7px; padding: 6px 9px; color: var(--text-1,#e5e9f5);
  font-size: 12.5px; font-family: inherit; outline: none; transition: border-color .15s;
}
.obs-term-in:focus { border-color: #4ea1ff; }
.obs-wstr-ctx { margin-top: 12px; }
.obs-wstr-info {
  background: rgba(78,161,255,0.06); border: 1px solid rgba(78,161,255,0.2);
  border-radius: 7px; padding: 7px 10px; font-size: 11.5px; color: var(--text-3,#8b93a8);
}
.obs-actions {
  display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px;
  padding-top: 14px; border-top: 1px solid var(--border,#232838);
}

.tf-leeftijd-add { width: auto !important; }

/* ── Observatie modal (s102) ───────────────────────────────────────────────── */
.obs-backdrop {
  position: fixed; inset: 0; z-index: 9000;
  background: rgba(0,0,0,.65); display: flex; align-items: center; justify-content: center;
  animation: fadein .18s ease;
}
.obs-modal {
  background: var(--bg-card,#1a1e2e); border-radius: 16px;
  border: 1px solid var(--border,#2a2f45);
  box-shadow: 0 24px 64px rgba(0,0,0,.55);
  width: min(560px, 96vw); max-height: 90vh; overflow-y: auto;
  display: flex; flex-direction: column;
}
.obs-modal-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  padding: 20px 20px 12px; border-bottom: 1px solid var(--border,#2a2f45);
  position: sticky; top: 0; background: var(--bg-card,#1a1e2e); z-index: 1;
}
.obs-modal-title { font-size: 17px; font-weight: 700; color: var(--text-1,#e2e8f0); }
.obs-modal-sub { font-size: 12px; color: var(--accent,#4f6ef7); margin-top: 3px; }
.obs-modal-close {
  background: none; border: none; color: var(--text-2,#9aa3b7);
  font-size: 22px; line-height: 1; cursor: pointer; padding: 2px 6px;
  border-radius: 6px; transition: background .12s, color .12s;
}
.obs-modal-close:hover { background: var(--hover,#1e2236); color: var(--text-1,#e2e8f0); }
#obs-form { padding: 16px 20px 20px; display: flex; flex-direction: column; gap: 16px; }
.obs-section-label {
  font-size: 11px; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--text-2,#9aa3b7); margin-bottom: 6px;
}
.obs-row { display: flex; gap: 10px; flex-wrap: wrap; }
.obs-field { display: flex; flex-direction: column; gap: 5px; flex: 1; min-width: 120px; }
.obs-field-grow { flex: 2; }
.obs-field-sm { flex: 0 0 90px; }
.obs-field label { font-size: 12px; color: var(--text-2,#9aa3b7); font-weight: 500; }
.obs-field input, .obs-field select, .obs-field textarea {
  background: var(--bg-input,#111827); border: 1px solid var(--border,#2a2f45);
  color: var(--text-1,#e2e8f0); border-radius: 8px; padding: 8px 10px;
  font-size: 13px; width: 100%; box-sizing: border-box; transition: border-color .15s;
}
.obs-field input:focus, .obs-field select:focus, .obs-field textarea:focus {
  outline: none; border-color: var(--accent,#4f6ef7);
}
.obs-field textarea { resize: vertical; min-height: 60px; }
.obs-terms { display: flex; flex-direction: column; gap: 8px; }
.obs-term-row { display: flex; align-items: center; gap: 10px; }
.obs-term-label {
  width: 110px; flex-shrink: 0; font-size: 12px;
  color: var(--text-2,#9aa3b7); font-weight: 500; text-transform: capitalize;
}
.obs-term-in {
  flex: 1; background: var(--bg-input,#111827); border: 1px solid var(--border,#2a2f45);
  color: var(--text-1,#e2e8f0); border-radius: 8px; padding: 7px 10px;
  font-size: 13px; transition: border-color .15s;
}
.obs-term-in:focus { outline: none; border-color: var(--accent,#4f6ef7); }
.obs-wstr-ctx {
  background: rgba(79,110,247,.07); border: 1px solid rgba(79,110,247,.2);
  border-radius: 10px; padding: 10px 14px;
}
.obs-wstr-info { font-size: 12px; color: var(--text-2,#9aa3b7); }
.obs-wstr-info strong { color: var(--text-1,#e2e8f0); }
.obs-actions {
  display: flex; gap: 10px; justify-content: flex-end; padding-top: 4px;
}
.obs-btn-cancel {
  background: none; border: 1px solid var(--border,#2a2f45);
  color: var(--text-2,#9aa3b7); border-radius: 8px; padding: 9px 18px;
  font-size: 13px; cursor: pointer; transition: background .12s;
}
.obs-btn-cancel:hover { background: var(--hover,#1e2236); }
.obs-btn-save {
  background: var(--accent,#4f6ef7); border: none; color: #fff;
  border-radius: 8px; padding: 9px 22px; font-size: 13px; font-weight: 600;
  cursor: pointer; transition: opacity .12s, transform .1s;
}
.obs-btn-save:hover { opacity: .88; }
.obs-btn-save:active { transform: scale(.97); }

/* Elftal zoeken */
.elf-search-row { display:flex; gap:10px; margin-bottom:12px; }
.elf-search-in {
  flex:1; background:var(--bg-card,#1a1e2e); border:1px solid var(--border2,#2d3242);
  border-radius:9px; padding:11px 15px; color:var(--text,#e5e9f5); font-size:14px;
  outline:none; transition:border-color .15s;
}
.elf-search-in:focus { border-color:var(--accent,#4f6ef7); }
.elf-search-btn {
  background:var(--bg-card,#1a1e2e); border:1px solid var(--border2,#2d3242);
  border-radius:9px; padding:11px 16px; color:var(--text-2,#9aa3b7); font-size:13px;
  cursor:pointer; white-space:nowrap; transition:all .15s;
}
.elf-search-btn:hover { border-color:var(--accent,#4f6ef7); color:var(--text,#e5e9f5); }
.elf-club-chips { display:none; }

/* Section label */
.elf-section-label {
  font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.08em;
  color:var(--text-2,#9aa3b7); padding:4px 16px 10px; display:flex; align-items:center; gap:8px;
}
.elf-section-count {
  background:var(--accent,#4f6ef7); color:#fff; border-radius:20px;
  font-size:10px; padding:1px 8px; font-weight:700;
}

/* Elftal tiles grid */
.elf-tiles-grid {
  display:grid; grid-template-columns:repeat(auto-fill, minmax(150px,1fr));
  gap:10px; padding:0 16px 8px;
}
.elf-tile {
  border-radius:12px; padding:14px 14px 12px; cursor:pointer;
  border:1px solid transparent; transition:transform .15s, box-shadow .15s;
  display:flex; flex-direction:column; gap:4px; position:relative; overflow:hidden;
}
.elf-tile::before {
  content:''; position:absolute; top:0; left:0; right:0; height:3px; border-radius:12px 12px 0 0;
}
.elf-tile:hover { transform:translateY(-2px); box-shadow:0 6px 24px rgba(0,0,0,.35); }
/* sh-v348 — clubniveau-tegels: neutraal (geen kleur) maar wél als duidelijke kaart afgebakend */
.elf-tile-clublvl {
  background:var(--bg-3,#161a24);
  border:1px solid var(--border,#272d3b);
  box-shadow:0 1px 3px rgba(0,0,0,.25);
}
.elf-tile-clublvl::before { background:var(--border,#272d3b); }
.elf-tile-clublvl:hover { border-color:var(--text-3,#6b7280); }
.elf-tile-green  { background:rgba(34,197,94,.1);  border-color:rgba(34,197,94,.25); }
.elf-tile-green::before  { background:rgba(34,197,94,.7); }
.elf-tile-blue   { background:rgba(79,110,247,.1); border-color:rgba(79,110,247,.25); }
.elf-tile-blue::before   { background:rgba(79,110,247,.7); }
.elf-tile-purple { background:rgba(139,92,246,.1); border-color:rgba(139,92,246,.25); }
.elf-tile-purple::before { background:rgba(139,92,246,.7); }
.elf-tile-gold   { background:rgba(245,197,66,.1); border-color:rgba(245,197,66,.25); }
.elf-tile-gold::before   { background:rgba(245,197,66,.7); }
.elf-tile-red    { background:rgba(239,68,68,.1);  border-color:rgba(239,68,68,.25); }
.elf-tile-red::before    { background:rgba(239,68,68,.7); }
.elf-tile-club   { font-size:16px; font-weight:800; color:var(--text,#e5e9f5); line-height:1.15; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.elf-tile-elftal { font-size:12px; font-weight:600; color:var(--text-2,#9aa3b7); margin-bottom:4px; }
.elf-tile-seen   { font-size:11px; color:var(--text-2,#9aa3b7); margin-bottom:6px; }
.elf-tile-footer { display:flex; align-items:center; justify-content:flex-end; margin-top:auto; }
.elf-tile-players { font-size:11px; color:var(--text-2,#9aa3b7); }
.elf-tile-badges { display:flex; gap:4px; }
.elf-tbadge { font-size:10px; font-weight:700; border-radius:4px; padding:1px 5px; }
.elf-tbadge-r { background:rgba(79,110,247,.2); color:var(--accent,#4f6ef7); }
.elf-tbadge-o { background:rgba(168,85,247,.2); color:#c084fc; }

/* Unassigned row */
.elf-unassigned-row {
  display:flex; align-items:center; justify-content:space-between;
  padding:12px 16px; margin:8px 16px 16px; border-radius:9px;
  background:var(--bg-card,#1a1e2e); border:1px solid var(--border2,#2d3242);
  font-size:13px; color:var(--text-2,#9aa3b7); cursor:pointer; transition:background .15s;
}
.elf-unassigned-row:hover { background:rgba(79,110,247,.08); }
.elf-ua-arrow { font-size:18px; }

/* Back bar */
.elf-back-bar {
  display:flex; align-items:center; gap:12px;
  padding:12px 16px; border-bottom:1px solid var(--border2,#2d3242); margin-bottom:12px;
}
.elf-back-btn {
  background:none; border:1px solid var(--border2,#2d3242); border-radius:8px;
  padding:7px 13px; color:var(--text-2,#9aa3b7); font-size:13px; cursor:pointer;
  flex-shrink:0; transition:all .15s; white-space:nowrap;
}
.elf-back-btn:hover { border-color:var(--accent,#4f6ef7); color:var(--text,#e5e9f5); }
.elf-back-info { flex:1; min-width:0; }
.elf-back-elftal { font-size:16px; font-weight:800; color:var(--text,#e5e9f5); }
.elf-back-club   { font-size:12px; color:var(--text-2,#9aa3b7); margin-top:1px; }
.elf-back-count  { font-size:12px; color:var(--text-2,#9aa3b7); flex-shrink:0; }

/* Player tiles */
.elf-player-tiles-grid {
  display:flex; flex-direction:column; gap:8px; padding:0 16px 24px;
}
.elf-player-tile {
  border-radius:10px; padding:12px 14px; cursor:pointer;
  border:1px solid var(--border2,#2d3242); background:var(--bg-card,#1a1e2e);
  transition:background .15s, border-color .15s; position:relative; overflow:hidden;
}
.elf-player-tile::before {
  content:''; position:absolute; left:0; top:0; bottom:0; width:3px;
}
.elf-ptile-rapport { border-left-color:rgba(79,110,247,.5); }
.elf-ptile-rapport::before { background:var(--accent,#4f6ef7); }
.elf-ptile-obs    { border-left-color:rgba(245,197,66,.4); }
.elf-ptile-obs::before    { background:var(--gold,#f5c542); }
.elf-player-tile:hover { background:rgba(255,255,255,.04); }
.elf-pt-header { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px; }
.elf-pt-naam   { font-size:15px; font-weight:700; color:var(--text,#e5e9f5); }
.elf-pt-type   { font-size:10px; font-weight:700; border-radius:5px; padding:2px 7px; flex-shrink:0; }
.elf-ptile-rapport .elf-pt-type { background:rgba(79,110,247,.15); color:var(--accent,#4f6ef7); border:1px solid rgba(79,110,247,.3); }
.elf-ptile-obs    .elf-pt-type { background:rgba(245,197,66,.12); color:var(--gold,#f5c542); border:1px solid rgba(245,197,66,.3); }
.elf-pt-pos    { font-size:12px; color:var(--text-2,#9aa3b7); margin-bottom:3px; }
.elf-pt-niveau { font-size:12px; font-weight:600; }
.elf-niv-a { color:#22c55e; }
.elf-niv-b { color:var(--accent,#4f6ef7); }
.elf-niv-c { color:var(--text-2,#9aa3b7); }
.elf-niv-d { color:#ef4444; }

/* Shared */
.elf-group { margin-bottom:20px; }
.elf-group-header { font-size:13px; font-weight:700; color:var(--text,#e5e9f5); padding:8px 12px; background:var(--bg-card,#1a1e2e); border-radius:8px 8px 0 0; border:1px solid var(--border2,#2d3242); border-bottom:none; display:flex; align-items:center; gap:8px; }
.elf-group-elftal { font-size:11px; background:rgba(79,110,247,.15); color:var(--accent,#4f6ef7); border-radius:5px; padding:2px 7px; font-weight:700; }
.elf-group-count { margin-left:auto; font-size:12px; color:var(--text-2,#9aa3b7); font-weight:400; }
.elf-group-players { display:flex; flex-direction:column; gap:6px; padding:8px; border:1px solid var(--border2,#2d3242); border-radius:0 0 8px 8px; }
.elf-player-card { background:rgba(255,255,255,.03); border:1px solid var(--border2,#2d3242); border-radius:8px; padding:10px 12px; cursor:pointer; transition:background .15s, border-color .15s; }
.elf-player-card:hover { background:rgba(79,110,247,.07); border-color:rgba(79,110,247,.3); }
.elf-player-top { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px; }
.elf-player-naam { font-size:14px; font-weight:600; color:var(--text-1,#e2e8f0); }
.elf-unnamed { color:var(--text-2,#9aa3b7); font-style:italic; font-weight:400; }
.elf-badge { font-size:10px; font-weight:700; border-radius:5px; padding:2px 7px; flex-shrink:0; }
.elf-badge-rapport { background:rgba(79,110,247,.15); color:var(--accent,#4f6ef7); border:1px solid rgba(79,110,247,.3); }
.elf-badge-obs { background:rgba(245,197,66,.12); color:var(--gold,#f5c542); border:1px solid rgba(245,197,66,.3); }
.elf-player-meta { font-size:12px; color:var(--text-2,#9aa3b7); margin-bottom:4px; }
.elf-player-advies { font-size:12px; color:var(--text-2,#9aa3b7); font-style:italic; border-top:1px solid var(--border2,#2d3242); padding-top:6px; margin-top:4px; }
.elf-empty { padding:40px 0; text-align:center; color:var(--text-2,#9aa3b7); font-size:14px; }

/* ── Observatie AI aanvullen knop ──────────────────────────────────────────── */
.obs-ai-row {
  display: flex; align-items: center; gap: 10px; padding: 2px 0 6px;
}
.obs-btn-ai {
  background: linear-gradient(135deg, rgba(79,110,247,.2), rgba(138,79,247,.2));
  border: 1px solid rgba(138,79,247,.4); color: var(--accent,#4f6ef7);
  border-radius: 8px; padding: 7px 16px; font-size: 13px; font-weight: 600;
  cursor: pointer; transition: all .15s; white-space: nowrap;
}
.obs-btn-ai:hover { background: linear-gradient(135deg, rgba(79,110,247,.35), rgba(138,79,247,.35)); }
.obs-btn-ai:disabled { opacity: .5; cursor: not-allowed; }
.obs-ai-hint { font-size: 12px; color: var(--text-2,#9aa3b7); }

/* Inline wedstrijdnotitie in pm-card */
.pm-wstr-inline { padding:8px 12px 10px; }
.pm-wstr-ta {
  width:100%; min-height:64px; background:var(--bg-3,#0d101a);
  border:1px solid var(--border2,#2d3242); border-radius:8px;
  padding:9px 11px; color:var(--text,#e5e9f5); font-size:13px;
  font-family:inherit; resize:vertical; outline:none; transition:border-color .15s;
  box-sizing:border-box; display:block;
}
.pm-wstr-ta:focus { border-color:var(--accent,#4f6ef7); }
.pm-wstr-actions { display:flex; justify-content:flex-end; margin-top:6px; }

/* Live scouting wedstrijdnotitie */
.lsm-wstr-section { padding:12px 16px 4px; border-top:1px solid var(--border2,#2d3242); margin-top:4px; }
.lsm-wstr-label { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--text-2,#9aa3b7); margin-bottom:6px; }
.lsm-wstr-ta {
  width:100%; min-height:72px; background:var(--bg-3,#0d101a);
  border:1px solid var(--border2,#2d3242); border-radius:8px;
  padding:10px 12px; color:var(--text,#e5e9f5); font-size:13.5px;
  font-family:inherit; resize:vertical; outline:none; transition:border-color .15s;
  box-sizing:border-box; display:block;
}
.lsm-wstr-ta:focus { border-color:var(--accent,#4f6ef7); }

/* ── Observatie filter knop in spelersdatabase ──────────────────────────── */
.db-obs-filter-btn {
  padding: 7px 14px;
  border-radius: 8px;
  border: 1px solid rgba(124,95,245,0.45);
  background: rgba(124,95,245,0.08);
  color: #a48dff;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  transition: background .13s, border-color .13s, color .13s;
  white-space: nowrap;
}
.db-obs-filter-btn:hover {
  background: rgba(124,95,245,0.16);
  border-color: rgba(124,95,245,0.7);
}
.db-obs-filter-btn.active {
  background: linear-gradient(135deg, #7c5ff5 0%, #5b3ee0 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 2px 10px rgba(92,62,224,.35);
}

/* Rapporten-knop = groen (zelfde tint als de Wedstrijden-tab) */
.db-rapport-filter-btn {
  border-color: rgba(16,185,129,0.45);
  background: rgba(16,185,129,0.08);
  color: #34d399;
}
.db-rapport-filter-btn:hover {
  background: rgba(16,185,129,0.16);
  border-color: rgba(16,185,129,0.7);
}
.db-rapport-filter-btn.active {
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 2px 10px rgba(5,150,105,.35);
}

/* Toernooi-record rij (rapport/obs ingediend vanuit een toernooi) — goud/amber,
   bewust anders dan blauw (wedstrijdrapport) en paars (observatie) */
tr.db-row-tournament {
  background: linear-gradient(90deg, rgba(245,158,11,0.10) 0%, transparent 60%);
}
tr.db-row-tournament:hover {
  background: linear-gradient(90deg, rgba(245,158,11,0.18) 0%, rgba(245,158,11,0.05) 100%) !important;
}
tr.db-row-tournament td:first-child {
  border-left: 2px solid rgba(245,158,11,0.7);
}
.db-tourn-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .03em;
  background: linear-gradient(135deg, #f59e0b, #d97706);
  color: #fff;
  vertical-align: middle;
  position: relative;
  top: -1px;
}

/* ── Observatie rij in spelersdatabase tabel ───────────────────────────── */
tr.db-row-obs {
  background: linear-gradient(90deg, rgba(124,95,245,0.07) 0%, transparent 60%);
}
tr.db-row-obs:hover {
  background: linear-gradient(90deg, rgba(124,95,245,0.14) 0%, rgba(124,95,245,0.04) 100%) !important;
}
tr.db-row-obs td:first-child {
  border-left: 2px solid rgba(124,95,245,0.55);
}

/* OBS badge naast naam */
.db-obs-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .04em;
  background: linear-gradient(135deg, #7c5ff5, #5b3ee0);
  color: #fff;
  vertical-align: middle;
  position: relative;
  top: -1px;
}

/* Avatar paarse tint voor observatie */
.recent-avatar.avatar-obs {
  background: linear-gradient(135deg, #7c5ff5 0%, #5b3ee0 100%) !important;
  color: #fff !important;
}

/* ── Opgevallen spelers sectie op live dashboard ──────────────────────────── */
.sa-obs-drafts-section {
  margin-top: 12px;
  border-top: 1px solid rgba(124,95,245,0.25);
  padding-top: 10px;
}
.sa-obs-drafts-hdr {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
}
.sa-obs-drafts-icon { font-size: 13px; }
.sa-obs-drafts-title {
  font-size: 10.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .6px;
  color: #a48dff;
}
.sa-obs-draft-card {
  display: flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(135deg, rgba(124,95,245,0.12) 0%, rgba(91,62,224,0.06) 100%);
  border: 1px solid rgba(124,95,245,0.35);
  border-radius: 10px;
  padding: 10px 14px;
  margin-bottom: 7px;
  cursor: pointer;
  transition: background .13s, border-color .13s;
}
.sa-obs-draft-card:hover {
  background: linear-gradient(135deg, rgba(124,95,245,0.22) 0%, rgba(91,62,224,0.12) 100%);
  border-color: rgba(124,95,245,0.6);
}
.sa-obs-draft-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: linear-gradient(135deg, #7c5ff5, #5b3ee0);
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; flex-shrink: 0;
}
.sa-obs-draft-info { flex: 1; min-width: 0; }
.sa-obs-draft-naam {
  font-size: 13px; font-weight: 700;
  color: var(--text, #e5e9f5);
}
.sa-obs-draft-sub {
  font-size: 11px; color: #a48dff; margin-top: 1px;
}
.sa-obs-draft-arrow {
  font-size: 14px; color: #a48dff; flex-shrink: 0;
}

/* ── Tile obs-header: zelfde look als obs-modal header ──────────────────── */
.sa-tile-obs-header {
  display: none;  /* alleen zichtbaar als tile open is */
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px 10px;
  border-bottom: 1px solid rgba(124,95,245,0.2);
  gap: 10px;
  margin: -10px -12px 0;  /* negatieve margin om card-padding te overbruggen */
}
.sa-tile.open .sa-tile-obs-header { display: flex; }
.sa-tile.open .sa-tile-name,
.sa-tile.open .sa-tile-meta,
.sa-tile.open .sa-tile-close { display: none !important; }
.sa-tile-obs-naam {
  font-size: 14px;
  font-weight: 700;
  color: #c4b0ff;
  flex: 1;
  min-width: 0;
}
.sa-tile-obs-sub {
  font-size: 11px;
  color: #a48dff;
  margin-top: 2px;
}
.sa-tile-obs-close {
  background: none;
  border: none;
  color: #a48dff;
  font-size: 18px;
  cursor: pointer;
  padding: 0 2px;
  line-height: 1;
  flex-shrink: 0;
  opacity: .7;
  transition: opacity .12s;
}
.sa-tile-obs-close:hover { opacity: 1; }

/* ── Programma detail: wedstrijdnotities sectie ──────────────────────────── */
.pmd-section-label {
  font-size: 10.5px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .6px; color: var(--text-3, #8b93a8);
  margin-bottom: 8px;
}
.pmd-wstrnotitie {
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border2, #2d3242);
  border-radius: 8px;
  padding: 10px 12px;
  font-size: 13px;
  color: var(--text, #e5e9f5);
  line-height: 1.5;
  white-space: pre-wrap;
  margin-bottom: 6px;
}

/* ── Obs-modal: voorkomt dat keyboard het venster wegduwt (mobiel) ─────── */
@media (max-width: 720px) {
  .obs-backdrop {
    position: fixed;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    align-items: flex-start;
    padding-top: 0;
  }
  .obs-modal {
    width: 100%;
    max-height: none;
    border-radius: 0;
    min-height: 100%;
  }
  #obs-form {
    padding-bottom: 40px;
  }
  .obs-term-in:focus,
  #obs-naam:focus,
  #obs-club:focus {
    scroll-margin-top: 10px;
  }
}

/* ═══════════════════════════════════════════════════════════════
   SH-3D  —  Flip tiles · Scatter · Radar tooltip · Glows
   ═══════════════════════════════════════════════════════════════ */

/* ── 3D flip: dtl-kpi-tile ───────────────────────────────────── */
.dtl-kpi-tile { height: 138px; overflow: visible; perspective: 900px; }
.dtl-kpi-tile::before { display: none; }          /* moved to .dtl-kpi-front */
.dtl-kpi-tile.sh-tilt-card { transform-style: flat; }
.dtl-kpi-inner {
  position: relative; width: 100%; height: 100%;
  transform-style: preserve-3d;
  transition: transform .55s cubic-bezier(.4,0,.2,1);
}
.dtl-kpi-tile.flipped .dtl-kpi-inner { transform: rotateY(180deg); }
.dtl-kpi-front, .dtl-kpi-back {
  position: absolute; inset: 0;
  backface-visibility: hidden; -webkit-backface-visibility: hidden;
  border-radius: 10px; overflow: hidden;
  padding: 13px 13px 10px;
  background: linear-gradient(135deg, var(--bg-3) 0%, var(--panel-2) 100%);
  border: 1px solid var(--border);
}
.dtl-kpi-front::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: var(--kpi-accent, var(--primary)); border-radius: 10px 10px 0 0;
}
.dtl-kpi-back {
  transform: rotateY(180deg);
  background: linear-gradient(145deg, #0d1626 0%, #111927 100%);
  border-color: var(--border-2);
  display: flex; flex-direction: column; gap: 3px; justify-content: center;
  padding: 10px 11px;
}
.dtl-kpi-flip-hint {
  font-size: 8.5px; color: var(--text-3); margin-top: 5px;
  text-transform: uppercase; letter-spacing: .8px; opacity: .7;
}
.dtl-kpi-back-title {
  font-size: 8.5px; color: var(--text-3); text-transform: uppercase;
  letter-spacing: .8px; margin-bottom: 3px; font-weight: 700;
}
.dtl-kpi-mini-row {
  display: flex; align-items: center; gap: 5px;
}
.dtl-kpi-mini-label {
  flex: 0 0 56px; color: var(--text-2); font-size: 9px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.dtl-kpi-mini-bar-track {
  flex: 1; height: 4px; border-radius: 2px;
  background: rgba(255,255,255,.07); overflow: hidden;
}
.dtl-kpi-mini-bar-fill {
  height: 100%; border-radius: 2px; transition: width .5s .1s;
  background: rgba(255,255,255,.15);
}
.dtl-kpi-mini-bar-fill.gA { background: var(--grade-a,#22c55e); }
.dtl-kpi-mini-bar-fill.gB { background: var(--grade-b,#3b82f6); }
.dtl-kpi-mini-bar-fill.gC { background: var(--grade-c,#f59e0b); }
.dtl-kpi-mini-bar-fill.gD { background: var(--grade-d,#ef4444); }
.dtl-kpi-mini-grade {
  flex: 0 0 12px; font-size: 9px; font-weight: 800; text-align: right;
}
.dtl-kpi-mini-grade.A { color: var(--grade-a,#22c55e); }
.dtl-kpi-mini-grade.B { color: var(--grade-b,#3b82f6); }
.dtl-kpi-mini-grade.C { color: var(--grade-c,#f59e0b); }
.dtl-kpi-mini-grade.D { color: var(--grade-d,#ef4444); }

/* ── 3D flip: compare-slot ───────────────────────────────────── */
.compare-slot.filled { overflow: visible; perspective: 900px; }
.compare-slot-inner {
  position: relative; width: 100%; height: 100%;
  transform-style: preserve-3d;
  transition: transform .55s cubic-bezier(.4,0,.2,1);
}
.compare-slot.filled.flipped .compare-slot-inner { transform: rotateY(180deg); }
.compare-slot-front, .compare-slot-back {
  position: absolute; inset: 0;
  backface-visibility: hidden; -webkit-backface-visibility: hidden;
  border-radius: var(--radius, 10px);
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 5px; text-align: center;
  overflow: hidden;
}
.compare-slot-front {
  padding: 16px 10px 14px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.04) 0%, var(--panel) 65%),
    linear-gradient(180deg, var(--player-color, var(--panel)) 0%, var(--panel) 100%);
}
.compare-slot-front::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, var(--player-color, transparent) 0%, transparent 50%);
  opacity: .14; pointer-events: none;
}
.compare-slot-back {
  transform: rotateY(180deg);
  background: linear-gradient(145deg, #0c1424 0%, #111e30 100%);
  border: 1px solid var(--player-color, var(--border-2));
  padding: 12px 10px;
  align-items: flex-start; justify-content: center;
  gap: 6px; text-align: left;
  cursor: pointer;
}
.compare-slot-back-row {
  display: flex; align-items: baseline; gap: 5px; width: 100%;
}
.compare-slot-back-lbl {
  font-size: 9.5px; color: var(--text-3); text-transform: uppercase;
  letter-spacing: .5px; flex: 0 0 50px;
}
.compare-slot-back-val {
  font-size: 11px; font-weight: 700; color: var(--text); flex: 1;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.compare-slot-back-open {
  margin-top: 4px; font-size: 11px; color: var(--player-color, var(--primary));
  font-weight: 700; width: 100%; text-align: right;
  display: block; border: none; background: none;
  padding: 0; cursor: pointer;
}
.compare-slot-flip-hint {
  position: absolute; bottom: 7px; left: 50%;
  transform: translateX(-50%);
  font-size: 8px; color: rgba(255,255,255,.3); letter-spacing: .5px;
  pointer-events: none; white-space: nowrap;
}

/* ── Scatter bubble chart ─────────────────────────────────────── */
.cmp-scatter-wrap {
  display: flex; justify-content: center; padding: 8px 0 2px;
  position: relative;
}
.cmp-scatter-wrap svg { max-width: 100%; overflow: visible; }
.scatter-bubble { cursor: pointer; }
.scatter-bubble .sb-circle {
  transition: r .2s, fill-opacity .25s;
}
.scatter-bubble:hover .sb-circle { fill-opacity: .5; }
.scatter-bubble .sb-label { pointer-events: none; transition: font-size .2s; }
.scatter-ref-line { stroke-dasharray: 5 4; }

/* ── Radar canvas tooltip ─────────────────────────────────────── */
.compare-radar-wrap { position: relative; }
.cmp-radar-tt {
  position: absolute; pointer-events: none;
  background: rgba(8,13,24,.95); border: 1px solid var(--border-2);
  border-radius: 9px; padding: 9px 13px;
  font-size: 12px; color: var(--text);
  z-index: 20; opacity: 0; transition: opacity .1s;
  white-space: nowrap; box-shadow: 0 10px 32px rgba(0,0,0,.5);
  min-width: 140px;
}
.cmp-radar-tt.vis { opacity: 1; }
.cmp-radar-tt-axis {
  font-size: 11px; font-weight: 700; color: var(--text-2);
  margin-bottom: 5px; letter-spacing: .3px;
}
.cmp-radar-tt-row {
  display: flex; align-items: center; gap: 7px; line-height: 1.7;
}
.cmp-radar-tt-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.cmp-radar-tt-name { flex: 1; font-size: 11px; color: var(--text-2); }
.cmp-radar-tt-grade { font-weight: 800; font-size: 12px; }
.cmp-radar-tt-grade.A { color: var(--grade-a,#22c55e); }
.cmp-radar-tt-grade.B { color: var(--grade-b,#3b82f6); }
.cmp-radar-tt-grade.C { color: var(--grade-c,#f59e0b); }
.cmp-radar-tt-grade.D { color: var(--grade-d,#ef4444); }

/* ── Grade glow enhancement ──────────────────────────────────── */
.grade.A { box-shadow: 0 0 10px rgba(34,197,94,.25), inset 0 1px 0 rgba(255,255,255,.15); }
.grade.B { box-shadow: 0 0 10px rgba(59,130,246,.25), inset 0 1px 0 rgba(255,255,255,.15); }

/* ── compare-gauge: deeper 3D tilt ──────────────────────────── */
.compare-gauge { cursor: pointer; }
.compare-gauge.sh-tilt-card { transform-style: flat; }

/* ── Dashboard KPI card enhanced shadow on hover ─────────────── */
.kpi-card.sh-tilt-card { transform-style: flat; }
.kpi-card:hover {
  box-shadow: 0 12px 32px rgba(0,0,0,.35), 0 0 0 1px rgba(255,255,255,.06);
}

/* ── Scatter position axis labels ─────────────────────────────── */
.cmp-scatter-no-data {
  text-align: center; padding: 30px; color: var(--text-3); font-size: 13px;
}

/* ═══════════════════════════════════════════════════════════════
   SH-CMP2  —  Head-to-Head · Parallel Coords · Heatmap · Percentiles
   ═══════════════════════════════════════════════════════════════ */

/* ── Head-to-Head ─────────────────────────────────────────────── */
.cmp-h2h-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 18px; padding: 0 4px;
}
.cmp-h2h-player {
  font-size: 22px; font-weight: 900; letter-spacing: -.6px;
}
.cmp-h2h-player.right { text-align: right; }
.cmp-h2h-vs {
  font-size: 11px; font-weight: 700; color: var(--text-3);
  background: var(--bg-3); padding: 4px 12px; border-radius: 20px;
  border: 1px solid var(--border-2); letter-spacing: 1px;
}
.cmp-h2h-row {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 6px; border-radius: 8px;
  transition: background .15s;
  position: relative;
}
.cmp-h2h-row:hover { background: rgba(255,255,255,.04); }
.cmp-h2h-row.w1 { background: rgba(var(--cmp-c1,255,255,255),.04); }
.cmp-h2h-row.w2 { background: rgba(var(--cmp-c2,255,255,255),.04); }
.cmp-h2h-grade {
  width: 30px; text-align: center;
  font-size: 16px; font-weight: 900; flex-shrink: 0; line-height: 1;
}
.cmp-h2h-grade.A { color: var(--grade-a); }
.cmp-h2h-grade.B { color: var(--grade-b); }
.cmp-h2h-grade.C { color: var(--grade-c); }
.cmp-h2h-grade.D { color: var(--grade-d); }
.cmp-h2h-grade.none { color: var(--text-3); font-size: 12px; }
.cmp-h2h-bars {
  flex: 1; display: flex; align-items: center; gap: 0;
}
.cmp-h2h-bar-wrap {
  flex: 1; height: 20px; display: flex;
  background: rgba(255,255,255,.05); position: relative;
  overflow: hidden;
}
.cmp-h2h-bar-wrap.left { border-radius: 10px 0 0 10px; justify-content: flex-end; }
.cmp-h2h-bar-wrap.right { border-radius: 0 10px 10px 0; justify-content: flex-start; }
.cmp-h2h-divider {
  width: 2px; flex-shrink: 0; background: var(--border-2); z-index: 1;
}
.cmp-h2h-bar {
  height: 100%; border-radius: inherit;
  transition: width .65s cubic-bezier(.4,0,.2,1);
  opacity: .75;
}
.cmp-h2h-row.w1 .cmp-h2h-bar.b1 { opacity: 1; box-shadow: 0 0 8px currentColor; }
.cmp-h2h-row.w2 .cmp-h2h-bar.b2 { opacity: 1; box-shadow: 0 0 8px currentColor; }
.cmp-h2h-crit {
  width: 62px; text-align: center; flex-shrink: 0;
  font-size: 10px; font-weight: 600; color: var(--text-3);
  text-transform: uppercase; letter-spacing: .4px;
}
.cmp-h2h-win-badge {
  position: absolute; top: 50%; transform: translateY(-50%);
  font-size: 9px; font-weight: 800; color: #fff;
  background: rgba(255,255,255,.12); padding: 1px 5px; border-radius: 4px;
  opacity: 0; transition: opacity .3s .4s;
}
.cmp-h2h-row.w1 .cmp-h2h-win-badge.left,
.cmp-h2h-row.w2 .cmp-h2h-win-badge.right { opacity: 1; }
.cmp-h2h-win-badge.left { left: 8px; }
.cmp-h2h-win-badge.right { right: 8px; }
.cmp-h2h-inactive {
  text-align: center; padding: 28px; color: var(--text-3); font-size: 13px;
  font-style: italic;
}
.cmp-h2h-summary {
  display: flex; justify-content: space-between; margin-top: 14px;
  padding: 10px 8px 0; border-top: 1px solid var(--border);
  font-size: 12px; font-weight: 700;
}
.cmp-h2h-score { font-size: 22px; font-weight: 900; }

/* ── Parallelle coördinaten ───────────────────────────────────── */
.cmp-parallel-wrap {
  overflow-x: auto; padding: 8px 0 4px;
  position: relative;
}
#cmp-parallel { display: block; }
.cmp-parallel-tt {
  position: fixed; pointer-events: none;
  background: rgba(8,13,24,.96); border: 1px solid var(--border-2);
  border-radius: 9px; padding: 9px 14px;
  font-size: 12px; z-index: 200;
  opacity: 0; transition: opacity .1s;
  white-space: nowrap; box-shadow: 0 10px 32px rgba(0,0,0,.6);
}
.cmp-parallel-tt.vis { opacity: 1; }
.cmp-parallel-tt-name { font-weight: 800; font-size: 13px; margin-bottom: 4px; }
.cmp-parallel-tt-row { display: flex; gap: 8px; line-height: 1.7; font-size: 11px; }
.cmp-parallel-tt-key { color: var(--text-3); }

/* ── Criteria heatmap ─────────────────────────────────────────── */
.cmp-heatmap-wrap {
  overflow-x: auto; padding: 4px 0 8px;
}
.heatmap-cell { cursor: pointer; }
.heatmap-cell rect { transition: filter .15s; }
.heatmap-cell:hover rect { filter: brightness(1.35); }
.heatmap-cell text { pointer-events: none; }

/* ── Database ranking / percentiles ──────────────────────────── */
.cmp-pct-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 24px;
}
.cmp-pct-col {}
.cmp-pct-name { font-size: 17px; font-weight: 900; letter-spacing: -.4px; margin-bottom: 1px; }
.cmp-pct-sub { font-size: 10px; color: var(--text-3); margin-bottom: 12px; }
.cmp-pct-row { display: flex; align-items: center; gap: 7px; margin-bottom: 7px; }
.cmp-pct-label { font-size: 9.5px; color: var(--text-2); flex: 0 0 52px; }
.cmp-pct-track {
  flex: 1; height: 7px; border-radius: 4px;
  background: rgba(255,255,255,.07); overflow: hidden; position: relative;
}
.cmp-pct-fill { height: 100%; border-radius: 4px; transition: width .7s cubic-bezier(.4,0,.2,1) var(--delay,0s); }
.cmp-pct-grade {
  width: 16px; font-size: 10.5px; font-weight: 800; flex-shrink: 0;
}
.cmp-pct-grade.A { color: var(--grade-a); }
.cmp-pct-grade.B { color: var(--grade-b); }
.cmp-pct-grade.C { color: var(--grade-c); }
.cmp-pct-grade.D { color: var(--grade-d); }
.cmp-pct-rank {
  font-size: 9px; color: var(--text-3); flex: 0 0 38px; text-align: right;
  font-weight: 600;
}
.cmp-pct-rank.elite { color: var(--grade-a); font-weight: 800; }

/* ── wstr-type-label: "Rapport" / "Observatie" in geel ── */
.wstr-type-label {
  display: inline-block; font-size: 9.5px; font-weight: 700;
  padding: 1px 6px; border-radius: 4px; margin-left: 6px;
  text-transform: uppercase; letter-spacing: .4px; vertical-align: middle;
}
.wstr-type-label.rapport     { background: rgba(245,158,11,.18); color: #f5c518; border: 1px solid rgba(245,158,11,.3); }
.wstr-type-label.observatie  { background: rgba(167,139,250,.18); color: #a78bfa; border: 1px solid rgba(167,139,250,.3); }
.wstr-type-label.ingediend   { background: rgba(34,197,94,.15); color: #4ade80; border: 1px solid rgba(34,197,94,.3); }

/* ═══════════════════════════════════════════════════════════════
   SH-VISUALS3 — FM-radar tooltip · Criterium flip-cards · Notes grid
   ═══════════════════════════════════════════════════════════════ */

/* FM-radar tooltip */
.dtl-pizza-wrap { position: relative; }
.dtl-fm-radar { display: block; max-width: 100%; }
.dtl-radar-tt {
  position: absolute; pointer-events: none;
  background: rgba(8,13,24,.96); border: 1px solid var(--border-2);
  border-radius: 9px; padding: 10px 14px; min-width: 140px; max-width: 220px;
  font-size: 12px; z-index: 20; opacity: 0; transition: opacity .1s;
  box-shadow: 0 10px 32px rgba(0,0,0,.5);
}
.dtl-radar-tt-crit { font-size: 10px; font-weight: 700; color: var(--text-2); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 3px; }
.dtl-radar-tt-grade { font-size: 22px; font-weight: 900; line-height: 1; margin-bottom: 4px; }
.dtl-radar-tt-note { font-size: 11.5px; color: var(--text-2); line-height: 1.5; }

/* Criterium flip-cards */
.dtl-crit-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}
@media (max-width: 900px) { .dtl-crit-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .dtl-crit-grid { grid-template-columns: repeat(2, 1fr); } }
.dtl-crit-card {
  border-radius: 10px; cursor: pointer;
  border: 1px solid var(--border-2);
  background: rgba(255,255,255,.04);
  padding: 12px 14px;
  transition: border-color .2s, background .2s, transform .12s, box-shadow .2s;
}
.dtl-crit-card:hover {
  background: rgba(255,255,255,.07);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0,0,0,.25);
}
.dtl-crit-card.open {
  background: rgba(255,255,255,.08);
}
.dtl-crit-top {
  display: flex; align-items: center; gap: 8px;
}
.dtl-crit-grade {
  font-size: 28px; font-weight: 900; line-height: 1; flex-shrink: 0;
}
.dtl-crit-name {
  font-size: 11px; font-weight: 700; color: var(--text-2);
  text-transform: uppercase; letter-spacing: .5px; flex: 1;
}
.dtl-crit-arrow {
  font-size: 18px; color: var(--text-3);
  transition: transform .2s; user-select: none;
}
.dtl-crit-card.open .dtl-crit-arrow { transform: rotate(90deg); }
.dtl-crit-expand {
  display: none;
  margin-top: 8px; padding-top: 8px;
  border-top: 1px solid var(--border);
  font-size: 12px; color: var(--text-2); line-height: 1.55;
}
.dtl-crit-card.open .dtl-crit-expand { display: block; }

/* Scout-notities vergelijking */
.cmp-notes-grid { display: flex; flex-direction: column; gap: 1px; }
.cmp-notes-row {
  display: flex; gap: 0; border-bottom: 1px solid var(--border);
  padding: 12px 0;
}
.cmp-notes-row:last-child { border-bottom: none; }
.cmp-notes-crit {
  flex: 0 0 100px; padding-right: 14px; display: flex;
  flex-direction: column; gap: 3px; justify-content: flex-start; padding-top: 2px;
}
.cmp-notes-crit-name {
  font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .5px; color: var(--text-2);
}
.cmp-notes-crit-winner { font-size: 10px; color: var(--text-3); }
.cmp-notes-cols { flex: 1; display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.cmp-notes-col { display: flex; flex-direction: column; gap: 4px; }
.cmp-notes-player { font-size: 11px; font-weight: 800; }
.cmp-notes-grade {
  display: inline-block; font-size: 12px; font-weight: 800;
  padding: 1px 8px; border-radius: 4px; width: fit-content;
}
.cmp-notes-text { font-size: 12px; color: var(--text-2); line-height: 1.5; }
.cmp-notes-empty { font-style: italic; opacity: .35; font-size: 11px; }

/* ═══════════════════════════════════════════════════════════════
   SH-DASH4 — Donut · Advies-tiles · Talent-cards · Positieveld
   ═══════════════════════════════════════════════════════════════ */

/* Donut */
.dash-donut-wrap { display: flex; align-items: center; gap: 16px; padding: 4px 0; }
.dash-donut-legend { display: flex; flex-direction: column; gap: 6px; }
.dash-donut-leg-row { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.dash-donut-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.dash-donut-grade { font-weight: 800; width: 16px; }
.dash-donut-n { font-weight: 700; color: var(--text); min-width: 20px; }
.dash-donut-pct { color: var(--text-3); font-size: 11px; }

/* Advies-tiles */
.dash-advies-tiles { display: grid; grid-template-columns: repeat(2,1fr); gap: 8px; }
.dash-advies-tile {
  background: var(--bg-3); border-radius: 10px; padding: 14px 12px;
  cursor: pointer; transition: transform .15s, box-shadow .15s, border-color .15s;
  border: 1px solid var(--border);
}
.dash-advies-tile:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(0,0,0,.35); border-color: var(--border-2); }
.dat-icon { font-size: 18px; margin-bottom: 4px; }
.dat-n { font-size: 28px; font-weight: 900; line-height: 1; margin-bottom: 3px; }
.dat-label { font-size: 10px; color: var(--text-2); text-transform: uppercase; letter-spacing: .5px; line-height: 1.3; }

/* Talent-cards */
.dash-talent-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }
@media(max-width:700px){ .dash-talent-grid { grid-template-columns: repeat(2,1fr); } }
.dash-talent-card {
  background: var(--bg-3); border: 1px solid var(--border);
  border-radius: 10px; padding: 12px 10px;
  cursor: pointer; position: relative;
  min-width: 0;
  transition: transform .15s, border-color .15s;
}
.dash-talent-card:hover { border-color: var(--border-2); }
.dtc-rank { position: absolute; top: 8px; right: 10px; font-size: 10px; font-weight: 700; color: var(--text-3); }
.dtc-avatar {
  width: 42px; height: 42px; border-radius: 50%; border: 2px solid;
  background: linear-gradient(135deg,var(--bg-3),var(--panel-2));
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 14px; margin-bottom: 7px;
}
.dtc-name { font-size: 12.5px; font-weight: 700; color: var(--text); line-height: 1.2; margin-bottom: 2px; }
.dtc-meta { font-size: 10.5px; color: var(--text-3); margin-bottom: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dtc-grades { display: flex; gap: 4px; flex-wrap: wrap; }
.dtc-grade-pill { font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 6px; }

/* Positiedekking */
.dash-pos-wrap { display: flex; align-items: flex-start; gap: 14px; }
.dash-pos-node { cursor: pointer; }
.dash-pos-node circle { transition: fill-opacity .2s, r .2s; }
.dash-pos-node:hover circle { fill-opacity: 1 !important; }
.dash-pos-legend { flex: 1; }
.dash-pos-leg-title { font-size: 10px; text-transform: uppercase; letter-spacing: .6px; color: var(--text-3); margin-bottom: 8px; font-weight: 700; }
.dash-pos-leg-row { display: flex; justify-content: space-between; font-size: 12px; padding: 3px 0; border-bottom: 1px solid var(--border); color: var(--text-2); }

/* ═══════════════════════════════════════════════════════════════
   SH-AGENDA-VISUAL — Alleen CSS, geen flows gewijzigd
   ═══════════════════════════════════════════════════════════════ */

/* ── Aankomende wedstrijden: rijverbetering ─────────────────────── */
.upcoming-matches {
  border: 1px solid var(--border-2);
  box-shadow: 0 2px 12px rgba(0,0,0,.18);
}
.upcoming-matches-title {
  text-transform: none;
  letter-spacing: 0;
  font-size: 14px;
  color: var(--text);
}
.up-row {
  border-radius: 8px;
  margin: 0;
  padding: 10px 10px;
  border-top: none;
  border-bottom: 1px solid var(--border);
  gap: 14px;
}
.up-row:last-of-type { border-bottom: none; }
.up-row:hover {
  background: rgba(255,255,255,.04);
  border-radius: 8px;
}
.up-when {
  background: rgba(255,255,255,.05);
  border-radius: 8px;
  padding: 6px 10px;
  align-items: center;
  gap: 2px;
  border: 1px solid var(--border);
}
.up-day {
  font-size: 12px;
  font-weight: 800;
}
.up-time {
  font-size: 10px;
  font-weight: 600;
}
.up-teams {
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
}
.up-tag {
  font-size: 10px;
  font-weight: 600;
  background: rgba(255,255,255,.06);
  border: 1px solid var(--border-2);
}
.up-route {
  width: 32px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(227,6,19,.1);
  border: 1px solid rgba(227,6,19,.25);
  border-radius: 8px;
  font-size: 16px;
}
.up-route:hover {
  background: rgba(227,6,19,.22);
  border-color: rgba(227,6,19,.5);
}

/* ── Live wedstrijd (sa-card): meer diepte en glow ──────────────── */
.sa-card {
  box-shadow: 0 4px 24px rgba(245,197,24,.1), 0 1px 0 rgba(245,197,24,.15) inset;
  transition: box-shadow .3s;
}
.sa-card:hover {
  box-shadow: 0 8px 32px rgba(245,197,24,.18), 0 1px 0 rgba(245,197,24,.2) inset;
}
.sa-title {
  font-size: 15px;
  font-weight: 800;
}
.sa-status {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .5px;
  text-transform: uppercase;
}
.sa-status.live {
  box-shadow: 0 0 8px rgba(16,185,129,.35);
}
/* Live tile: betere hover */
.sa-tile {
  transition: transform .12s, border-color .2s, background .15s, box-shadow .2s;
}
.sa-tile:hover {
  box-shadow: 0 4px 14px rgba(78,161,255,.18);
  transform: translateY(-2px);
}
/* Live actieknoppen: duidelijker */
.sa-live-btn {
  font-size: 13px;
  letter-spacing: .2px;
  box-shadow: 0 2px 10px rgba(0,0,0,.25);
}
.sa-live-btn:hover {
  box-shadow: 0 6px 20px rgba(0,0,0,.35);
}

/* ── Vandaag-banner: compacter + duidelijker ─────────────────────── */
.dvb-teams {
  font-size: 15px;
  font-weight: 800;
}
.dvb-cta {
  font-size: 12px;
  padding: 8px 16px;
  border-radius: 10px;
  box-shadow: 0 3px 10px rgba(227,6,19,.3);
  letter-spacing: .3px;
}

/* ── Today matches: cleaner header ───────────────────────────────── */
.today-matches-title {
  font-size: 14px !important;
  font-weight: 700 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
}

/* ── Observatie profielpagina ─────────────────────────────────────────── */
/* Zelfde kaart-schaal/typografie als .sh-hero-card (het rapport-overzicht),
   met behoud van het paarse OBS-accent zodat meteen duidelijk blijft dat dit
   een observatie is en geen volledig rapport. */
.obs-profile-header{
  display:flex;align-items:center;gap:16px;
  background:linear-gradient(135deg,rgba(168,85,247,.12),rgba(168,85,247,.04));
  border:1px solid rgba(168,85,247,.25);border-radius:14px;
  padding:20px 22px;margin-bottom:14px;
}
.obs-profile-badge{
  font-size:10px;font-weight:800;letter-spacing:1px;color:#a855f7;
  background:rgba(168,85,247,.18);border:1px solid rgba(168,85,247,.4);
  border-radius:6px;padding:3px 7px;flex-shrink:0;align-self:flex-start;
}
.obs-profile-avatar{
  width:70px;height:70px;border-radius:50%;
  background:linear-gradient(135deg,rgba(168,85,247,.35),rgba(168,85,247,.12));
  border:2px solid #a855f7;
  display:flex;align-items:center;justify-content:center;
  font-size:22px;font-weight:700;color:#c084fc;flex-shrink:0;
}
.obs-profile-info{ flex:1;min-width:0; }
.obs-profile-name{ font-size:22px;font-weight:900;color:var(--text-1,var(--text));letter-spacing:-.3px;line-height:1.2; }
.obs-profile-meta{ font-size:13px;color:var(--text-3);margin-top:4px; }
.obs-profile-rug{ font-size:12px;color:#a855f7;margin-top:4px;font-weight:600; }

.obs-wstr-context{
  display:flex;align-items:center;gap:8px;
  font-size:12.5px;color:var(--text-3);
  background:rgba(168,85,247,.06);border:1px solid rgba(168,85,247,.15);
  border-radius:8px;padding:8px 14px;margin-bottom:14px;
}

.obs-criteria-card{
  border-left:3px solid #a855f7 !important;
  background:rgba(168,85,247,.03) !important;
  margin-bottom:16px;overflow:hidden;
}
.obs-criteria-header{
  display:flex;align-items:center;gap:10px;
  padding:12px 16px;border-bottom:1px solid rgba(168,85,247,.15);
  font-size:13px;font-weight:700;color:#c084fc;
}
.obs-dot{
  width:8px;height:8px;border-radius:50%;background:#a855f7;flex-shrink:0;
}
.obs-criteria-count{
  margin-left:auto;font-size:11px;font-weight:500;
  color:var(--text-3);
}
.obs-criteria-body{ padding:4px 16px 16px; }
.obs-crit-row{
  display:grid;grid-template-columns:130px 1fr;
  gap:4px 14px;padding:10px 0;
  border-bottom:1px solid rgba(168,85,247,.09);
}
.obs-crit-row:last-child{ border-bottom:none; }
.obs-crit-label{
  font-size:10.5px;font-weight:700;color:#a855f7;
  text-transform:uppercase;letter-spacing:.7px;padding-top:2px;
}
.obs-crit-val{ font-size:13px;color:var(--text);line-height:1.55; }
.obs-overig{
  margin-top:12px;padding-top:12px;
  border-top:1px solid rgba(168,85,247,.12);
  font-size:12.5px;color:var(--text-2);line-height:1.6;
}

.obs-profile-dob{ font-size:11.5px;color:var(--text-3);margin-top:4px; }

.obs-crit-row-empty .obs-crit-label{ opacity:.45; }
.obs-crit-empty{ color:var(--text-3);font-style:italic;font-size:12px; }

.db-obs-dash{ font-size:12px;color:rgba(168,85,247,.5);font-weight:600; }
.db-obs-tag{
  font-size:10.5px;color:#a855f7;font-style:italic;
  background:rgba(168,85,247,.1);border-radius:4px;padding:1px 6px;
}

.recent-item-obs{ border-left:2px solid rgba(168,85,247,.5) !important; background:rgba(168,85,247,.04); }
.recent-item:not(.recent-item-obs){ border-left:2px solid rgba(16,185,129,.45); background:rgba(16,185,129,.04); }
.recent-item:not(.recent-item-obs):hover{ border-color:rgba(16,185,129,.75); background:rgba(16,185,129,.09); }
.recent-avatar:not(.avatar-obs){ background:linear-gradient(135deg,#10b981 0%,#059669 100%) !important; color:#fff !important; }
.recent-wstr{ font-size:10.5px;color:var(--text-3);margin-top:1px; }

/* iPhone safe area voor modals die fullscreen openen op PWA */
@supports (padding-top: env(safe-area-inset-top)) {
  .wstr-edit-head,
  .obs-backdrop .obs-modal-head,
  .live-scout-header {
    padding-top: max(16px, calc(env(safe-area-inset-top) + 8px)) !important;
  }
  .wstr-edit-backdrop .wstr-edit-modal,
  .obs-backdrop .obs-modal {
    padding-top: 0;
  }
}

/* ── iOS PWA: voorkom scherm-shift bij toetsenbord ─────────────────────── */
@supports (-webkit-touch-callout: none) {
  /* iOS-only: gebruik fill-available voor stabiele hoogte */
  html, body {
    height: -webkit-fill-available;
  }
  .app-grid {
    min-height: -webkit-fill-available;
  }
  /* Voorkom scroll naar boven bij focus op input */
  .view {
    -webkit-overflow-scrolling: touch;
  }
}
/* Stabiele viewport hoogte op alle mobiel */
@media (max-width: 768px) {
  html { height: 100%; }
  body { height: 100%; overflow: hidden; }
  #app { height: 100%; }
  /* .app-grid vult de ruimte ONDER de in-flow sticky .mobile-topbar. Voorheen
     kreeg het height:100% terwijl de 60px topbar erboven in-flow staat → het
     raster + de interne main-scroller staken 60px onder het viewport
     ("dashboard glijdt niet helemaal door", laatste stukje onzichtbaar/achter
     de bottom-nav). Trek de topbar-hoogte (60px + notch safe-area) af.
     min-height:0 neutraliseert de iOS -webkit-fill-available hierboven. */
  .app-grid {
    height: calc(100% - 60px - env(safe-area-inset-top));
    min-height: 0;
  }
  main.main {
    height: calc(100% - 52px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ================================================================
   TOERNOOI-FUNCTIONALITEIT — v1.0
   ================================================================ */

/* ── Backdrop / Modal ──────────────────────────────────────────── */
.toern-backdrop {
  position: fixed; inset: 0; z-index: 1200;
  background: rgba(0,0,0,.7);
  display: flex; align-items: flex-end; justify-content: center;
  padding: 0;
}
@media (min-width: 600px){
  .toern-backdrop { align-items: center; padding: 24px; }
}
.toern-modal {
  background: var(--panel);
  border-radius: 16px 16px 0 0;
  width: 100%; max-width: 560px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: var(--shadow);
  display: flex; flex-direction: column;
}
@media (min-width: 600px){
  .toern-modal { border-radius: 14px; }
}
.toern-modal-lg { max-width: 680px; }
.toern-modal-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  padding: 18px 20px 14px;
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; background: var(--panel); z-index: 1;
}
.toern-modal-title { font-size: 16px; font-weight: 600; color: var(--text); }
.toern-modal-sub { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.toern-modal-close {
  background: none; border: none; color: var(--text-3);
  font-size: 22px; cursor: pointer; padding: 0 4px; line-height: 1;
  flex-shrink: 0;
}
.toern-modal-close:hover { color: var(--text); }
.toern-modal-body { padding: 16px 20px 24px; flex: 1; }

/* ── Tabs ─────────────────────────────────────────────────────── */
.toern-tabs {
  display: flex; gap: 0;
  border-bottom: 1px solid var(--border);
  background: var(--bg-2);
  padding: 0 16px;
}
.toern-tab-btn {
  background: none; border: none; cursor: pointer;
  color: var(--text-3); font-size: 13px; font-weight: 500;
  padding: 11px 14px;
  border-bottom: 2px solid transparent;
  transition: color .15s, border-color .15s;
}
.toern-tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); }
.toern-tab-btn:hover:not(.active) { color: var(--text-2); }

/* ── Lijstkaarten (toernooioverzicht) ─────────────────────────── */
.toern-list-card {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px 16px;
  margin-bottom: 8px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.toern-list-card:hover { border-color: var(--accent); background: var(--panel-2); }
.toern-list-card-name { font-size: 15px; font-weight: 600; color: var(--text); }
.toern-list-card-meta { font-size: 12px; color: var(--text-3); margin-top: 2px; }

/* ── Dag blokken (tijdlijn) ───────────────────────────────────── */
.toern-day-block {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); margin-bottom: 16px; overflow: hidden;
}
.toern-day-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--bg-2);
}
.toern-day-label { font-weight: 600; font-size: 13px; color: var(--text); }
.toern-day-actions { display: flex; gap: 6px; align-items: center; }
.toern-match-list { padding: 4px 0; }
.toern-match-row {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 16px; cursor: pointer;
  border-bottom: 1px solid var(--border);
  transition: background .12s;
}
.toern-match-row:last-child { border-bottom: none; }
.toern-match-row:hover { background: var(--panel-2); }
.toern-match-icon { font-size: 14px; flex-shrink: 0; }
.toern-match-time { font-size: 12px; color: var(--text-3); flex-shrink: 0; width: 38px; }
.toern-match-teams { flex: 1; font-size: 13px; font-weight: 500; color: var(--text); min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.toern-match-field { font-size: 11px; color: var(--text-3); flex-shrink: 0; }
.toern-match-cat { font-size: 11px; color: var(--accent); flex-shrink: 0; }
.toern-add-match-btn { margin: 10px 16px; }
.toern-add-day-btn { margin-top: 4px; }

/* ── Programma — prio-filterbalk ──────────────────────────────── */
.toern-prog-filterbar { padding: 0 4px 12px; }
.toern-prog-filters { display: flex; flex-wrap: wrap; gap: 6px; }
.toern-prio-btn {
  background: var(--bg-2); border: 1px solid var(--border);
  color: var(--text-2); font-size: 12px; font-weight: 600;
  padding: 6px 11px; border-radius: 999px; cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.toern-prio-btn:hover { border-color: var(--accent); color: var(--text); }
.toern-prio-btn.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.toern-prio-btn.prio-watch.active    { background: var(--green, #22c55e);  border-color: var(--green, #22c55e);  color: #06210f; }
.toern-prio-btn.prio-optional.active { background: var(--orange, #f59e0b); border-color: var(--orange, #f59e0b); color: #1a1206; }
.toern-prio-btn.prio-skip.active     { background: var(--red, #ef4444);    border-color: var(--red, #ef4444);    color: #2a0a0a; }
.toern-prog-counts { font-size: 11.5px; color: var(--text-3); margin-top: 8px; }

/* ── Programma — strakke kolom-tabel ([ind] Tijd | Wedstrijd | Veld | Poule) ── */
.toern-prog-table { width: 100%; }
.toern-prog-head,
.toern-prog-row {
  display: grid;
  grid-template-columns: 20px 84px minmax(0,1fr) 78px 92px;
  gap: 10px;
  align-items: center;
  padding: 9px 16px;
}
.tp-ind { display: flex; align-items: center; justify-content: center; }
.toern-prog-head {
  font-size: 10.5px; text-transform: uppercase; letter-spacing: .06em;
  color: var(--text-3); font-weight: 700;
  border-bottom: 1px solid var(--border); background: var(--bg-2);
}
.toern-prog-row {
  border-bottom: 1px solid var(--border);
  cursor: pointer; transition: background .12s;
}
.toern-prog-row:last-child { border-bottom: none; }
.toern-prog-row:hover { background: var(--panel-2); }
.toern-prog-row.toern-watch-skip { opacity: .55; }
.tp-time { font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tp-match { display: flex; align-items: center; gap: 8px; min-width: 0; }
.tp-teams {
  font-size: 13px; font-weight: 600; color: var(--text);
  min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tp-score { font-size: 11.5px; color: var(--text-3); flex-shrink: 0; cursor: pointer; }
.tp-field { font-size: 11.5px; color: var(--text-3); white-space: nowrap; }
.tp-poule { font-size: 11.5px; color: var(--accent); font-weight: 600; white-space: nowrap; }

/* Status-indicator (bolletje) — weerspiegelt de scout-keuze (watchStatus) */
.tp-dot {
  width: 10px; height: 10px; border-radius: 50%;
  flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
  background: #6b7689; /* none = grijs (standaard, geen keuze) */
}
.tp-dot-watch    { background: var(--green, #22c55e); }
.tp-dot-skip     { background: var(--red, #ef4444); }
.tp-dot-none     { background: #6b7689; }
.tp-dot-optional {
  background: var(--orange, #f59e0b);
  font-size: 8px; line-height: 1; font-weight: 900; color: #1a1206;
}

/* Responsief: op smal scherm stapelen de kolommen tot een compacte kaart.
   De indicator blijft links staan, vóór de tijd. */
@media (max-width: 640px) {
  .toern-prog-head { display: none; }
  .toern-prog-row {
    grid-template-columns: 18px 50px minmax(0,1fr);
    grid-template-areas:
      "ind time match"
      "ind time meta";
    row-gap: 2px; padding: 10px 14px;
  }
  .tp-ind   { grid-area: ind; align-self: start; margin-top: 3px; }
  .tp-time  { grid-area: time; align-self: start; font-weight: 600; }
  .tp-match { grid-area: match; }
  .tp-field { grid-area: meta; }
  .tp-poule { grid-area: meta; justify-self: end; }
}

/* ── Spelers-tab: clubkaarten + team-detail ───────────────────── */
.toern-club-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.toern-club-card {
  display: flex; align-items: center; gap: 12px;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 12px 14px;
  cursor: pointer; transition: border-color .15s, background .15s;
}
.toern-club-card:hover { border-color: var(--accent); background: var(--panel-2); }
.toern-club-avatar {
  width: 38px; height: 38px; border-radius: 10px;
  background: var(--accent); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 800; flex-shrink: 0;
}
.toern-club-info { flex: 1; min-width: 0; }
.toern-club-name { font-size: 14px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.toern-club-meta { font-size: 11.5px; color: var(--text-3); margin-top: 2px; }
.toern-club-arrow { font-size: 20px; color: var(--text-3); flex-shrink: 0; }
.toern-team-detail-head {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 12px; flex-wrap: wrap;
}
.toern-team-detail-title { flex: 1; font-size: 15px; font-weight: 700; color: var(--text); min-width: 120px; }

/* ── Verwijder-toernooi knop ──────────────────────────────────── */
.toern-btn-delete { color: var(--red, #ef4444); border-color: rgba(239,68,68,.35); }
.toern-btn-delete:hover { background: rgba(239,68,68,.12); border-color: var(--red, #ef4444); color: var(--red, #ef4444); }

/* ── Match status knoppen ─────────────────────────────────────── */
.toern-status-row { display: flex; gap: 6px; flex-wrap: wrap; }
.toern-status-btn {
  flex: 1; min-width: 100px;
  padding: 8px 10px; font-size: 12px;
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: var(--radius-sm); color: var(--text-2);
  cursor: pointer; transition: all .15s;
}
.toern-status-btn.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.toern-status-btn:hover:not(.active) { border-color: var(--accent); color: var(--text); }
/* Per-status actief-kleur zodat de keuze duidelijk afleesbaar is */
.toern-status-btn.toern-status-watch.active    { background: var(--green, #22c55e);  border-color: var(--green, #22c55e);  color: #06210f; }
.toern-status-btn.toern-status-optional.active { background: var(--orange, #f59e0b); border-color: var(--orange, #f59e0b); color: #1a1206; }
.toern-status-btn.toern-status-skip.active     { background: var(--red, #ef4444);    border-color: var(--red, #ef4444);    color: #2a0a0a; }

/* ── Speler kaartjes in match detail ──────────────────────────── */
.toern-player-card {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 11px 14px;
  margin-bottom: 8px; cursor: pointer;
  transition: border-color .15s;
}
.toern-player-card:hover { border-color: var(--accent); }
.toern-player-card.has-obs { border-left: 3px solid var(--green); }
.toern-player-card-left { display: flex; align-items: center; gap: 10px; }
.toern-player-card-right { flex-shrink: 0; }
.toern-player-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--accent); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; flex-shrink: 0;
}
.toern-player-name { font-size: 13px; font-weight: 600; color: var(--text); }
.toern-player-meta { font-size: 11px; color: var(--text-3); margin-top: 1px; }
.toern-obs-badge {
  background: var(--green); color: #fff;
  border-radius: 20px; padding: 2px 8px; font-size: 11px; font-weight: 700;
}
.toern-obs-empty { font-size: 11px; color: var(--text-3); }

/* ── Spelers tab ──────────────────────────────────────────────── */
.toern-speler-row {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius-sm); margin-bottom: 8px;
}
.toern-speler-info { flex: 1; }
.toern-merge-warn { font-size: 11px; color: var(--orange); margin-top: 2px; }

/* ── Bundeling kaarten ────────────────────────────────────────── */
.toern-summ-card {
  display: flex; align-items: center; gap: 12px;
  background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 12px 14px;
  margin-bottom: 8px; cursor: pointer;
  transition: border-color .15s;
}
.toern-summ-card:hover { border-color: var(--accent); }
.toern-summ-avatar {
  width: 40px; height: 40px; border-radius: 50%;
  background: var(--primary); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; flex-shrink: 0;
}
.toern-summ-info { flex: 1; }
.toern-summ-name { font-size: 14px; font-weight: 600; color: var(--text); }
.toern-summ-meta { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.toern-summ-status {
  font-size: 11px; font-weight: 600;
  padding: 3px 8px; border-radius: 20px;
}
.toern-summ-status-draft  { background: rgba(107,118,137,.2); color: var(--text-3); }
.toern-summ-status-edited { background: rgba(245,158,11,.15); color: var(--orange); }
.toern-summ-status-ready  { background: rgba(34,197,94,.15); color: var(--green); }

/* ── Bundeling detail ─────────────────────────────────────────── */
.toern-summ-textarea {
  width: 100%; background: var(--bg-input, #0d1018);
  border: 1px solid var(--border-2); border-radius: var(--radius-sm);
  color: var(--text); padding: 10px 12px; font-size: 13px;
  resize: vertical; font-family: inherit;
}
.toern-summ-textarea:focus { outline: none; border-color: var(--accent); }
.toern-summ-day { margin-bottom: 16px; }
.toern-summ-day-label {
  font-size: 12px; font-weight: 700; color: var(--text-3);
  text-transform: uppercase; letter-spacing: .05em;
  margin-bottom: 8px;
}
.toern-summ-obs-block {
  background: var(--bg-2); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 12px; margin-bottom: 8px;
}
.toern-summ-obs-match {
  font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 6px;
}
.toern-summ-obs-text {
  width: 100%; background: var(--bg-input, #0d1018);
  border: 1px solid var(--border-2); border-radius: var(--radius-sm);
  color: var(--text); padding: 8px 10px; font-size: 12px;
  resize: vertical; font-family: inherit;
}
.toern-summ-obs-grade { font-size: 12px; color: var(--text-3); margin-top: 6px; }
.toern-summ-actions {
  display: flex; gap: 8px; margin-top: 20px; justify-content: flex-end; flex-wrap: wrap;
}
.toern-edited-mark { font-size: 11px; opacity: .7; }

/* ── Inline formulieren ───────────────────────────────────────── */
.toern-inline-form {
  background: var(--panel-2); border: 1px solid var(--border-2);
  border-radius: var(--radius); padding: 16px;
  margin-bottom: 16px;
}
.toern-form-title { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 12px; }
.toern-form-row { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
.toern-form-row label { font-size: 11px; color: var(--text-3); text-transform: uppercase; letter-spacing: .04em; }
.toern-form-row input,
.toern-form-row select,
.toern-form-row textarea {
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border-2); border-radius: var(--radius-sm);
  color: var(--text); padding: 8px 10px; font-size: 13px; font-family: inherit;
}
.toern-form-row input:focus,
.toern-form-row select:focus,
.toern-form-row textarea:focus { outline: none; border-color: var(--accent); }
.toern-form-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 4px; }

/* ── Badges ───────────────────────────────────────────────────── */
.toern-badge {
  display: inline-flex; align-items: center;
  font-size: 11px; font-weight: 600;
  padding: 3px 8px; border-radius: 20px;
}
.toern-badge-open   { background: rgba(34,197,94,.12); color: var(--green); }
.toern-badge-closed { background: rgba(107,118,137,.15); color: var(--text-3); }
.toern-badge-spotted { background: rgba(245,158,11,.12); color: var(--orange); }
.toern-badge-linked  { background: rgba(78,161,255,.12); color: var(--accent); }

/* ── Sectie labels ────────────────────────────────────────────── */
.toern-section-label {
  font-size: 11px; font-weight: 700; color: var(--text-3);
  text-transform: uppercase; letter-spacing: .05em;
  margin-bottom: 8px;
}

/* ── Select ───────────────────────────────────────────────────── */
.toern-select {
  background: var(--bg-input, #0d1018);
  border: 1px solid var(--border-2); border-radius: var(--radius-sm);
  color: var(--text); padding: 7px 10px; font-size: 13px;
}

/* ── Hulpklassen ──────────────────────────────────────────────── */
.toern-empty {
  color: var(--text-3); font-size: 13px; text-align: center;
  padding: 24px 16px; background: var(--panel);
  border: 1px dashed var(--border); border-radius: var(--radius);
}
.toern-empty-sm { padding: 10px 16px; border: none; background: none; text-align: left; }
.toern-loading { color: var(--text-3); font-size: 13px; padding: 16px; }
.btn-xs { font-size: 11px; padding: 4px 8px; }
.btn-sm { font-size: 12px; padding: 6px 12px; }

/* ================================================================
   EINDE TOERNOOI CSS
   ================================================================ */

/* ── Tournify import toggle ────────────────────────────────────── */
.toern-import-toggle {
  display: flex; gap: 6px; margin-bottom: 14px;
}
.toern-toggle-btn {
  flex: 1; padding: 8px 10px; font-size: 12px; font-weight: 500;
  background: var(--bg-2); border: 1px solid var(--border-2);
  border-radius: var(--radius-sm); color: var(--text-3);
  cursor: pointer; transition: all .15s;
}
.toern-toggle-btn.active {
  background: var(--accent); border-color: var(--accent);
  color: #fff;
}
.toern-toggle-btn:hover:not(.active) { border-color: var(--accent); color: var(--text); }
.toern-import-status {
  font-size: 12px; color: var(--accent);
  padding: 8px 10px; background: rgba(78,161,255,.08);
  border-radius: var(--radius-sm); margin-top: 6px;
}

/* ── Rapport-knop in match spelerkaart ────────────────────────── */
.toern-rapport-btn {
  background: none; border: 1px solid var(--border-2);
  border-radius: var(--radius-sm); padding: 4px 7px;
  font-size: 14px; cursor: pointer; color: var(--text-2);
  margin-left: 6px; transition: all .15s; flex-shrink: 0;
}
.toern-rapport-btn:hover {
  background: var(--accent); border-color: var(--accent);
  color: #fff;
}

/* ── Tournify import form layout fixes (PWA + desktop) ────────── */
#toern-new-form .toern-import-toggle { flex-wrap: wrap; }
#tf-tournify-url { width: 100%; box-sizing: border-box; min-width: 0; }
#tf-import-status {
  white-space: normal; word-break: break-word;
  font-size: 12px; padding: 8px 10px;
  max-width: 100%; box-sizing: border-box;
}
#toern-new-form .toern-form-actions {
  flex-wrap: wrap; gap: 8px;
}
#toern-new-form .toern-form-actions .btn {
  flex: 1 1 auto; min-width: 120px; text-align: center;
}
/* Voorkom overflow in de list pane op mobile */


/* ── Modal open: voorkom body-scroll op iOS PWA ──────────────── */
body.modal-open {
  overflow: hidden;
  /* iOS-specifiek: position fixed + width 100% voorkomt bounce-scroll */
  position: fixed;
  width: 100%;
  /* top: current scroll positie — wordt via JS ingesteld indien nodig */
}

/* ── Autocomplete dropdown — altijd boven andere content ─────── */
#shac-box {
  position: fixed !important;
  z-index: 9999 !important;
  max-height: 240px;
  overflow-y: auto;
}

/* ── obs-modal: iOS keyboard-aware hoogte ────────────────────── */
.obs-modal {
  max-height: min(90vh, 90svh);
}
.toern-modal {
  max-height: min(90vh, 90svh);
}

/* ── Toernooi view layout (PWA + desktop) ─────────────────────── */
#view-toernooien {
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}
#toern-list-pane,
#toern-detail-pane {
  min-height: 0;
  overflow-x: hidden;
}
#toern-list-wrap {
  padding: 16px;
}
.toern-tab-pane {
  padding: 16px;
  overflow-y: visible;
}
/* Toernooi form: inputs altijd zichtbaar */
.toern-inline-form input,
.toern-inline-form select,
.toern-inline-form textarea {
  background: var(--bg-2, #111722) !important;
  border: 1px solid var(--border-2, #2d3242) !important;
  color: var(--text, #e5e9f5) !important;
  width: 100%;
  box-sizing: border-box;
}
.toern-form-row-2 { display:flex; gap:10px; }
.toern-form-row-2 > div { flex:1 1 0; min-width:0; }
.toern-form-row-2 > div label { display:block; }
.toern-form-hint { font-size:12px; color:var(--green,#22c55e); font-weight:600; margin:4px 0 2px; }

/* Geen ongewenste horizontale scrollbar in toernooi-detail tabs */
#toern-mijn-wrap, #toern-bundeling-wrap, #toern-spelers-wrap { max-width:100%; overflow-x:hidden; }

/* ================================================================
   TOERNOOI — Mijn programma, veldnaam-overflow, spelers-subtekst
   en PWA-optimalisatie (mobiel 320–430px). Donkere huisstijl.
   Appended; latere regels overschrijven waar nodig de eerdere.
   ================================================================ */

/* #3B — veldnaam mag nooit over de poule-kolom lopen */
.tp-field { min-width: 0; overflow: hidden; text-overflow: ellipsis; }

/* #2 — meer lucht per rij + ruimte voor spelers-subtekst */
.toern-prog-head,
.toern-prog-row { padding-top: 12px; padding-bottom: 12px; }
.tp-match { flex-wrap: wrap; }
.tp-players {
  flex-basis: 100%; width: 100%;
  font-size: 11.5px; color: var(--text-3);
  margin-top: 3px; line-height: 1.35;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ── Club volgen (ster) in Spelers-tab ────────────────────────── */
.toern-club-card { position: relative; }
.toern-club-card.is-followed { border-color: var(--accent); }
.toern-club-follow {
  background: none; border: none; cursor: pointer;
  font-size: 20px; line-height: 1; color: var(--text-3);
  padding: 4px; flex-shrink: 0; transition: color .15s, transform .1s;
}
.toern-club-follow:hover { transform: scale(1.12); color: var(--accent); }
.toern-club-follow.on { color: var(--orange, #f59e0b); }
.toern-club-followed { color: var(--orange, #f59e0b); font-weight: 700; }

/* ── Mijn programma — header / footer / leeg ──────────────────── */
.toern-mp-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; flex-wrap: wrap; margin-bottom: 12px;
}
.toern-mp-title { font-size: 14px; font-weight: 700; color: var(--text); }
.toern-mp-footer {
  margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border);
  font-size: 12px; color: var(--text-3);
}
.toern-mp-empty { padding: 22px 6px; color: var(--text-2); }
.toern-mp-empty-title { font-size: 14px; font-weight: 600; margin-bottom: 8px; }
.toern-mp-empty-list { margin: 0; padding-left: 18px; font-size: 13px; color: var(--text-3); line-height: 1.7; }

/* ── Mijn programma — tabel met verwijder-kolom ───────────────── */
.toern-mp-table .toern-prog-row {
  grid-template-columns: 20px 84px minmax(0,1fr) 70px 80px 26px;
  position: relative;
}
.mp-remove {
  background: none; border: none; color: var(--text-3);
  font-size: 18px; line-height: 1; cursor: pointer; padding: 2px 4px;
}
.mp-remove:hover { color: var(--red, #ef4444); }
.toern-prog-row.mp-conflict { background: rgba(245,158,11,.10); }
.mp-conflict-flag { color: var(--orange, #f59e0b); font-size: 11px; font-weight: 700; margin-left: 8px; }
.mp-pause {
  text-align: center; font-size: 11px; color: var(--text-3);
  padding: 7px 0; letter-spacing: .02em;
}

/* ── Mijn programma — "wedstrijd toevoegen" modal ─────────────── */
.mp-add-list { max-height: 56vh; overflow-y: auto; }
.mp-add-day {
  font-size: 11px; text-transform: uppercase; letter-spacing: .05em;
  color: var(--text-3); font-weight: 700; margin: 12px 0 4px;
}
.mp-add-row {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 4px; border-bottom: 1px solid var(--border);
  cursor: pointer; font-size: 13px;
}
.mp-add-row input[type="checkbox"] { width: 18px; height: 18px; flex-shrink: 0; cursor: pointer; }
.mp-add-time { font-variant-numeric: tabular-nums; color: var(--text-2); flex-shrink: 0; width: 42px; }
.mp-add-teams { flex: 1; min-width: 0; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mp-add-field { font-size: 11.5px; color: var(--text-3); flex-shrink: 0; }
.mp-add-via { font-size: 10.5px; color: var(--orange, #f59e0b); flex-shrink: 0; }

/* ================================================================
   PWA / MOBIEL (≤ 640px) — gestapelde kaarten, scrollbare filter,
   full-screen modals, grote touch-targets, geen horizontale scroll
   ================================================================ */
@media (max-width: 640px) {
  /* Programma + Mijn programma als gestapelde kaart per wedstrijd */
  .toern-prog-head { display: none; }
  .toern-prog-row,
  .toern-mp-table .toern-prog-row {
    grid-template-columns: auto 1fr;
    grid-template-areas:
      "ind  time"
      "match match"
      "meta meta"
      "players players";
    column-gap: 8px; row-gap: 3px;
    padding: 13px 14px; position: relative;
    border-bottom: 1px solid var(--border);
  }
  .tp-ind   { grid-area: ind; align-self: center; }
  .tp-time  { grid-area: time; align-self: center; font-weight: 600; font-size: 14px; }
  .tp-match { grid-area: match; }
  .tp-teams { font-size: 14px; white-space: normal; }
  .tp-field { grid-area: meta; max-width: 70%; }
  .tp-poule { grid-area: meta; justify-self: end; }
  .tp-players { grid-area: players; font-size: 12px; }
  .mp-remove { position: absolute; top: 10px; right: 8px; font-size: 22px; padding: 4px 8px; }

  /* Filterbalk horizontaal scrollbaar, knoppen blijven op één regel */
  .toern-prog-filters {
    flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
  }
  .toern-prio-btn { flex: 0 0 auto; min-height: 40px; font-size: 13px; }
  .toern-prog-counts { font-size: 11px; }

  /* watchStatus-knoppen naast elkaar in het wedstrijd-detail */
  .toern-status-row { flex-wrap: nowrap; gap: 6px; }
  .toern-status-btn { flex: 1 1 0; min-width: 0; font-size: 12px; padding: 12px 4px; }

  /* Wedstrijd-detail + bundeling modals full-screen */
  .toern-modal, .toern-modal-lg {
    width: 100vw; max-width: 100vw; min-height: 100vh;
    border-radius: 0; margin: 0;
  }
  .toern-modal-close { width: 44px; height: 44px; font-size: 26px; }

  /* Dynamische overlay (regels / reglement / toevoegen) full-screen */
  #toern-dyn-overlay { padding: 0 !important; align-items: stretch !important; }
  #toern-dyn-overlay .toern-dyn-card {
    max-width: 100% !important; width: 100% !important;
    border-radius: 0 !important; min-height: 100vh; box-shadow: none !important;
  }

  /* Spelers-tab: clubkaarten full-width met grote tik-targets */
  .toern-club-grid { grid-template-columns: 1fr; }
  .toern-club-card { min-height: 56px; }
  .toern-club-follow { font-size: 24px; padding: 8px; }
  .toern-team-detail-head .btn { min-height: 40px; }

  /* Standen horizontaal scrollbaar, teamnamen niet afknippen */
  #toern-standen-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  #toern-standen-wrap table { min-width: 520px; }
  #toern-standen-wrap td, #toern-standen-wrap th { white-space: nowrap; }

  /* Touch-targets + leesbaarheid */
  .toern-tab-btn { padding: 12px 12px; font-size: 13px; }
  .toern-actions .btn { min-height: 40px; }

  /* Geen horizontale pagina-scroll vanuit deze panes */
  .toern-tab-pane { overflow-x: hidden; }
}

/* PWA: toernooi-tabbalk horizontaal scrollbaar zodat alle tabs (incl. Standen
   en Bundeling) altijd bereikbaar zijn op smal scherm. */
@media (max-width: 640px) {
  .toern-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .toern-tabs::-webkit-scrollbar { display: none; }
  .toern-tab-btn { flex: 0 0 auto; white-space: nowrap; padding: 12px 10px; }
}

/* PWA: wedstrijd-detail / bundeling modal — sluitknop (X) nooit achter de
   telefoon-statusbalk. Safe-area top-padding + sticky header zodat de X
   altijd zichtbaar en bereikbaar blijft. */
@media (max-width: 640px) {
  .toern-modal .toern-modal-header,
  .toern-modal-lg .toern-modal-header {
    position: sticky; top: 0; z-index: 3;
    background: var(--panel, #0b0f15);
    padding-top: calc(env(safe-area-inset-top, 20px) + 14px);
    border-bottom: 1px solid var(--border);
  }
  .toern-modal-close { width: 44px; height: 44px; font-size: 28px; }
  /* Dynamische overlay (regels / reglement / wedstrijd toevoegen) */
  #toern-dyn-overlay .toern-dyn-card {
    padding-top: calc(env(safe-area-inset-top, 20px) + 18px) !important;
  }
  /* Modal-body scrollt onder de gepinde header door */
  .toern-modal .toern-modal-body,
  .toern-modal-lg .toern-modal-body {
    max-height: calc(100vh - 64px - env(safe-area-inset-top, 20px));
    overflow-y: auto; -webkit-overflow-scrolling: touch;
  }
}

/* ================================================================
   ITT-feedback: tijdsblokken, matchNote, donkere overlay,
   modal-sluiten, dropdowns, observatie-trefwoorden
   ================================================================ */

/* BUG 4 / TIP 6 — inklapbare tijdsblokken in het programma */
.toern-timeblock {
  border: 1px solid var(--border); border-radius: 10px;
  margin-bottom: 10px; overflow: hidden; background: var(--panel);
}
.toern-timeblock.tb-alt { background: var(--bg-2); }
.toern-timeblock.is-now { border-color: var(--green, #22c55e); box-shadow: inset 0 0 0 1px var(--green, #22c55e); }
.toern-timeblock.is-next { border-color: var(--accent); }
.toern-tb-head {
  width: 100%; display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; background: transparent; border: none;
  cursor: pointer; color: var(--text); font: inherit; text-align: left;
  min-height: 44px;
}
.toern-tb-head:hover { background: var(--panel-2); }
.tb-arrow { font-size: 11px; color: var(--text-3); transition: transform .15s; }
.toern-timeblock.collapsed .tb-arrow { transform: rotate(-90deg); }
.tb-time { font-weight: 700; font-size: 14px; font-variant-numeric: tabular-nums; }
.tb-count { margin-left: auto; font-size: 11px; color: var(--text-3); }
.tb-now { font-size: 11px; font-weight: 800; color: var(--green, #22c55e); letter-spacing: .02em; }
.tb-now.tb-next { color: var(--accent); }
.toern-tb-body { overflow: hidden; max-height: 4000px; transition: max-height .2s ease; }
.toern-timeblock.collapsed .toern-tb-body { max-height: 0; }
.toern-timeblock .toern-prog-table { border-top: 1px solid var(--border); }

/* TIP 3 — snelle wedstrijdnotitie (label in programma + veld in detail) */
.tp-note { flex-basis: 100%; width: 100%; font-size: 11.5px; color: var(--orange, #f59e0b); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.toern-match-note-wrap { margin: 4px 0 12px; }
.toern-match-note-label { font-size: 12px; font-weight: 600; color: var(--text-2); margin-bottom: 6px; }
.toern-match-note {
  width: 100%; background: var(--bg-input, #0d1018);
  border: 1px solid var(--border-2, #2d3242); border-radius: 8px;
  color: var(--text); padding: 9px 11px; font: inherit; font-size: 13px; resize: vertical;
}
.toern-match-note:focus { outline: none; border-color: var(--accent); }

/* TIP 2 — donkere dynamische overlay + sluitknop onderaan */
.toern-dyn-foot { display: flex; justify-content: flex-end; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--border); }
#toern-dyn-overlay .toern-dyn-card select,
#toern-dyn-overlay .toern-dyn-card input {
  background: var(--bg-input, #0d1018); color: var(--text); border: 1px solid var(--border-2, #2d3242);
}
.mp-add-row { color: var(--text); }

/* BUG 2 — dropdown-styling in toernooi-formulieren */
.toern-inline-form select, .toern-inline-form input {
  background: var(--bg-input, #0d1018); color: var(--text);
  border: 1px solid var(--border-2, #2d3242); border-radius: 6px; padding: 7px 9px; font: inherit;
}

/* BUG 7 — observatie-trefwoorden (4-staps) + blok-layout */
.obs-field-block { border: 1px solid var(--border); border-radius: 10px; padding: 12px; margin-bottom: 10px; background: var(--panel); }
.obs-field-block > .obs-field-label { display: block; font-weight: 700; margin-bottom: 8px; color: var(--text); font-size: 13.5px; }
.obs-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.obs-tag {
  min-height: 36px; padding: 7px 12px; border-radius: 999px;
  border: 1px solid var(--border); background: var(--bg-2); color: var(--text-2);
  font-size: 12.5px; cursor: pointer; transition: background .15s, color .15s, border-color .15s;
}
.obs-tag[data-rating="good"]    { background: var(--green, #22c55e);  border-color: var(--green, #22c55e);  color: #06210f; font-weight: 700; }
.obs-tag[data-rating="average"] { background: var(--orange, #f59e0b); border-color: var(--orange, #f59e0b); color: #1a1206; font-weight: 700; }
.obs-tag[data-rating="poor"]    { background: var(--red, #ef4444);    border-color: var(--red, #ef4444);    color: #2a0a0a; font-weight: 700; }
.obs-block-note { width: 100%; background: var(--bg-input, #0d1018); border: 1px solid var(--border-2, #2d3242); border-radius: 8px; color: var(--text); padding: 9px 11px; font: inherit; font-size: 13px; resize: vertical; }

/* BUG 6 — modal sluitknop nooit achter statusbalk: ruimere top + bottom-knop */
@media (max-width: 640px) {
  .toern-modal .toern-modal-header,
  .toern-modal-lg .toern-modal-header {
    padding-top: max(80px, calc(env(safe-area-inset-top, 20px) + 28px));
  }
  #toern-dyn-overlay .toern-dyn-card {
    padding-top: max(72px, calc(env(safe-area-inset-top, 20px) + 24px)) !important;
  }
  .toern-modal-foot-close {
    position: sticky; bottom: 0; background: var(--panel, #0b0f15);
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--border);
  }
}
.toern-modal-foot-close { display: none; }
@media (max-width: 640px) { .toern-modal-foot-close { display: block; } }

/* TIP 5 — actief gekozen team-knop in quick-add */
.qa-team-btn.active { background: var(--accent); border-color: var(--accent); color: #fff; }

/* PRIO 1 — Feature 2 (overall A/B/C/D) + Feature 3 (eerdere obs) */
#obs-overall { margin-bottom: 12px; }
.obs-overall-row { display: flex; gap: 8px; }
.obs-overall-btn {
  flex: 1; min-height: 44px; border-radius: 10px; cursor: pointer;
  border: 1px solid var(--border); background: var(--bg-2); color: var(--text-2);
  font-size: 16px; font-weight: 800; transition: background .15s, color .15s, border-color .15s;
}
.obs-overall-btn.active.grade-A { background: var(--grade-a, #22c55e); border-color: var(--grade-a, #22c55e); color: #06210f; }
.obs-overall-btn.active.grade-B { background: var(--grade-b, #84cc16); border-color: var(--grade-b, #84cc16); color: #0f1a06; }
.obs-overall-btn.active.grade-C { background: var(--grade-c, #f59e0b); border-color: var(--grade-c, #f59e0b); color: #1a1206; }
.obs-overall-btn.active.grade-D { background: var(--grade-d, #ef4444); border-color: var(--grade-d, #ef4444); color: #2a0a0a; }
.obs-earlier-box { margin-bottom: 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--panel); padding: 8px 12px; }
.obs-earlier-box > summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--text-2); }
.obs-earlier-item { border-top: 1px solid var(--border); margin-top: 8px; padding-top: 8px; }
.obs-earlier-ctx { font-size: 11.5px; color: var(--text-3); font-weight: 700; }
.obs-earlier-tags { font-size: 12px; margin-top: 3px; }
.obs-earlier-text { font-size: 12.5px; color: var(--text-2); margin-top: 3px; line-height: 1.4; }

/* FEATURE 1 — Toernooi afronden modal */
.afr-quick { display: flex; gap: 6px; margin-bottom: 8px; }
.afr-group-title { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-3); font-weight: 700; margin: 12px 0 6px; }
.afr-row { display: flex; align-items: center; gap: 10px; padding: 9px 4px; border-bottom: 1px solid var(--border); font-size: 13px; cursor: pointer; }
.afr-row input[type="checkbox"] { width: 18px; height: 18px; flex-shrink: 0; }
.afr-grade { width: 24px; height: 24px; border-radius: 6px; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 12px; flex-shrink: 0; background: var(--bg-2); color: var(--text-3); }
.afr-grade.grade-A { background: var(--grade-a, #22c55e); color: #06210f; }
.afr-grade.grade-B { background: var(--grade-b, #84cc16); color: #0f1a06; }
.afr-grade.grade-C { background: var(--grade-c, #f59e0b); color: #1a1206; }
.afr-grade.grade-D { background: var(--grade-d, #ef4444); color: #2a0a0a; }
.afr-name { font-weight: 600; color: var(--text); }
.afr-club { color: var(--text-3); font-size: 12px; }
.afr-meta { margin-left: auto; color: var(--text-3); font-size: 11.5px; white-space: nowrap; }
.toern-exp-btn { flex-shrink: 0; }

/* ---- Afrond-flow / Bundeling-workspace (state-machine) ---------- */
.bndl-head { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:10px; }
.bndl-progress { flex:1 1 220px; min-width:180px; }
.bndl-progress-bar { height:8px; border-radius:6px; background:var(--bg-2,#1b2230); overflow:hidden; }
.bndl-progress-bar span { display:block; height:100%; background:var(--grade-a,#22c55e); border-radius:6px; transition:width .3s; }
.bndl-progress-txt { font-size:11.5px; color:var(--text-3,#93a0b5); margin-top:4px; }
.bndl-intro { font-size:12.5px; color:var(--text-3,#93a0b5); line-height:1.5; margin:4px 0 14px; }
.bndl-group-title { font-size:12px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--text-3,#93a0b5); margin:16px 0 8px; }
.bndl-card { display:flex; align-items:center; gap:12px; padding:11px 12px; border:1px solid var(--border,#2a2f3a); border-radius:10px; margin-bottom:8px; cursor:pointer; background:var(--panel-2,rgba(255,255,255,0.015)); transition:border-color .15s, background .15s; }
.bndl-card:hover { border-color:var(--accent,#c58e75); }
.bndl-card-done { border-color:rgba(34,197,94,.4); background:rgba(34,197,94,.05); }
.bndl-card-avatar { width:38px; height:38px; border-radius:50%; background:var(--accent,#c58e75); color:#1a0f08; font-weight:800; font-size:13px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.bndl-card-info { flex:1; min-width:0; }
.bndl-card-name { font-weight:700; color:var(--text,#e5e9f5); font-size:14px; }
.bndl-card-club { font-weight:500; color:var(--text-3,#93a0b5); font-size:12px; }
.bndl-card-meta { font-size:11.5px; color:var(--text-3,#93a0b5); margin-top:2px; }
.bndl-card-status { flex-shrink:0; font-size:12px; font-weight:700; padding:5px 11px; border-radius:999px; }
.bndl-st-todo { background:rgba(245,158,11,.15); color:var(--grade-c,#f59e0b); }
.bndl-st-done { background:rgba(34,197,94,.15); color:var(--grade-a,#22c55e); }
.bndl-finish-row { display:flex; justify-content:center; margin:22px 0 8px; }
.bndl-finish-row .btn { font-size:15px; padding:11px 26px; }
.bndl-field-label { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; color:var(--text-3,#93a0b5); margin:14px 0 6px; }
.bndl-grade-chips { display:flex; gap:8px; }
.bndl-grade-btn { width:40px; height:40px; border-radius:9px; border:1px solid var(--border,#2a2f3a); background:var(--bg-2,#1b2230); color:var(--text-3,#93a0b5); font-weight:800; font-size:15px; cursor:pointer; }
.bndl-grade-btn.active.grade-A { background:var(--grade-a,#22c55e); color:#06210f; border-color:transparent; }
.bndl-grade-btn.active.grade-B { background:var(--grade-b,#84cc16); color:#0f1a06; border-color:transparent; }
.bndl-grade-btn.active.grade-C { background:var(--grade-c,#f59e0b); color:#1a1206; border-color:transparent; }
.bndl-grade-btn.active.grade-D { background:var(--grade-d,#ef4444); color:#2a0a0a; border-color:transparent; }
.bndl-cats { display:flex; flex-direction:column; gap:6px; }
.bndl-cat { display:flex; gap:8px; font-size:12.5px; align-items:baseline; }
.bndl-cat-label { flex-shrink:0; width:92px; font-weight:700; color:var(--text-2,#c3cbdb); }
.bndl-cat-tags { color:var(--text,#e5e9f5); }
.bndl-cat-empty { font-size:12.5px; color:var(--text-3,#93a0b5); font-style:italic; }
.bndl-wedstr-list { display:flex; flex-direction:column; gap:8px; }
.bndl-wedstr { border:1px solid var(--border,#2a2f3a); border-radius:8px; padding:8px 10px; background:var(--bg-2,rgba(255,255,255,0.02)); }
.bndl-wedstr-h { font-size:12.5px; font-weight:600; color:var(--text-2,#c3cbdb); }
.bndl-wedstr-t { font-size:12.5px; color:var(--text-3,#93a0b5); margin-top:3px; }
.bndl-w-grade { display:inline-block; min-width:18px; height:18px; line-height:18px; text-align:center; border-radius:5px; font-weight:800; font-size:11px; padding:0 4px; margin-left:4px; vertical-align:middle; }
.bndl-w-grade.grade-A { background:var(--grade-a,#22c55e); color:#06210f; }
.bndl-w-grade.grade-B { background:var(--grade-b,#84cc16); color:#0f1a06; }
.bndl-w-grade.grade-C { background:var(--grade-c,#f59e0b); color:#1a1206; }
.bndl-w-grade.grade-D { background:var(--grade-d,#ef4444); color:#2a0a0a; }
.bndl-w-cat { display:flex; gap:8px; margin-top:7px; align-items:baseline; }
.bndl-w-cat-label { flex-shrink:0; width:82px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--text-3,#93a0b5); padding-top:2px; }
.bndl-w-cat-body { flex:1; display:flex; flex-wrap:wrap; gap:5px; align-items:center; }
.bndl-w-chip { font-size:12px; font-weight:600; padding:2px 9px; border-radius:999px; background:var(--bg-2,#1b2230); color:var(--text-2,#c3cbdb); border:1px solid var(--border,#2a2f3a); }
.bndl-w-note { flex-basis:100%; font-size:12px; color:var(--text-3,#93a0b5); font-style:italic; margin-top:2px; }
.bndl-submitted-badge { font-size:13px; font-weight:700; color:var(--grade-a,#22c55e); }

/* FEATURE 6 — offline-indicatie */
body.sh-offline #sync-indicator { color: var(--red, #ef4444); }
body.sh-offline #sync-dot { background: var(--red, #ef4444) !important; }

/* ===== PRIO 2 — Feature 4/5/15 styling ===== */
/* Feature 4 — wedstrijd-navigatie */
.toern-match-nav { display: flex; align-items: center; gap: 4px; margin-right: 6px; }
.toern-nav-arrow {
  width: 32px; height: 32px; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--border); background: var(--bg-2); color: var(--text);
  font-size: 18px; line-height: 1; display: flex; align-items: center; justify-content: center;
}
.toern-nav-arrow:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
.toern-nav-arrow:disabled { opacity: .35; cursor: default; }
.toern-nav-count { font-size: 12px; font-variant-numeric: tabular-nums; color: var(--text-3); min-width: 30px; text-align: center; }

/* Feature 5 — must-scout ster */
.toern-must-btn {
  background: none; border: none; cursor: pointer; font-size: 18px; line-height: 1;
  color: var(--text-3); padding: 4px; flex-shrink: 0; transition: transform .1s, color .15s;
}
.toern-must-btn:hover { transform: scale(1.15); }
.toern-must-btn.on { color: var(--orange, #f59e0b); }
.tp-must { color: var(--orange, #f59e0b); }

/* Feature 15 — toernooi-kaart in regulier programma */
.prog-toernooi-cards { display: flex; flex-direction: column; gap: 8px; margin: 0 0 12px; }
.prog-toern-card {
  display: flex; align-items: center; gap: 12px;
  background: var(--panel); border: 1px solid var(--border); border-left: 3px solid var(--accent);
  border-radius: var(--radius-sm); padding: 12px 14px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.prog-toern-card:hover { border-color: var(--accent); background: var(--panel-2); }
.prog-toern-card.toern-status-done { border-left-color: var(--text-3); opacity: .85; }
.prog-toern-card.toern-status-prep { border-left-color: var(--orange, #f59e0b); }
.ptc-main { flex: 1; min-width: 0; }
.ptc-title { font-size: 14px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ptc-meta { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.ptc-status { font-size: 11px; font-weight: 700; color: var(--text-2); padding: 3px 8px; border-radius: 999px; background: var(--bg-2); flex-shrink: 0; }
.ptc-go { font-size: 12px; color: var(--accent); font-weight: 600; flex-shrink: 0; }
@media (max-width: 640px) { .ptc-go { display: none; } }

/* ===== PRIO 3 — Feature 8/9/10/11 styling ===== */
/* Feature 11 — deel-knop */
.toern-share-btn {
  background: none; border: none; cursor: pointer; font-size: 16px; line-height: 1;
  color: var(--text-3); padding: 4px 6px; flex-shrink: 0; transition: color .15s, transform .1s;
}
.toern-share-btn:hover { color: var(--accent); transform: scale(1.12); }

/* Feature 9 — FAB */
.toern-fab {
  position: fixed; right: 16px; bottom: calc(60px + env(safe-area-inset-bottom, 0px) + 16px); z-index: 1200;
  max-width: 70vw; padding: 12px 18px; border-radius: 999px; border: none; cursor: pointer;
  background: linear-gradient(135deg, var(--accent, #e30613), #f5c518); color: #fff;
  font-size: 13px; font-weight: 700; box-shadow: 0 6px 20px rgba(0,0,0,.35);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.toern-fab:hover { filter: brightness(1.05); }
@media (min-width: 980px) { .toern-fab { bottom: 24px; right: 24px; } }

/* Uitklapbare live-stack — meerdere gelijktijdige live-wedstrijden */
.toern-live-stack {
  position: fixed; right: 16px; z-index: 1201;
  bottom: calc(60px + env(safe-area-inset-bottom, 0px) + 16px + 52px);
  display: flex; flex-direction: column; gap: 8px;
  max-width: min(86vw, 360px);
  animation: tlsRise .16s ease-out;
}
@media (min-width: 980px) { .toern-live-stack { right: 24px; bottom: calc(24px + 52px); } }
@keyframes tlsRise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.toern-live-stack-title {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px;
  color: var(--text-3, #9aa3b7); padding: 2px 6px; text-align: right;
}
.toern-live-stack-item {
  display: flex; align-items: center; gap: 9px;
  padding: 11px 14px; border-radius: 12px; border: 1px solid var(--border, #2a2f3a);
  background: var(--panel, #111722); color: var(--text, #e5e9f5);
  font-size: 13px; font-weight: 600; cursor: pointer; text-align: left;
  box-shadow: 0 6px 20px rgba(0,0,0,.35);
}
.toern-live-stack-item:hover { border-color: var(--accent, #e30613); }
.tls-dot { width: 9px; height: 9px; border-radius: 50%; background: #ef4444; flex: 0 0 auto; box-shadow: 0 0 0 0 rgba(239,68,68,.6); animation: tlsPulse 1.6s infinite; }
@keyframes tlsPulse { 0% { box-shadow: 0 0 0 0 rgba(239,68,68,.55);} 70% { box-shadow: 0 0 0 7px rgba(239,68,68,0);} 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0);} }
.tls-teams { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tls-field { flex: 0 0 auto; font-size: 11px; font-weight: 600; color: var(--text-3, #9aa3b7); background: var(--bg-2, rgba(255,255,255,.04)); padding: 2px 7px; border-radius: 999px; }

/* Feature 10 — omstandigheden chips */
.cond-row { display: flex; flex-wrap: wrap; gap: 6px; }
.cond-chip {
  min-height: 40px; padding: 8px 12px; border-radius: 999px; cursor: pointer; font-size: 13px;
  border: 1px solid var(--border); background: var(--bg-2); color: var(--text-2);
  transition: background .15s, border-color .15s, color .15s;
}
.cond-chip.active { background: var(--accent); border-color: var(--accent); color: #fff; }

/* ===== Bug D — bundeling donker thema + betere layout ===== */
#toern-summ-backdrop .toern-modal { background: var(--panel, #0b0f15); color: var(--text); }
#toern-summ-backdrop .toern-modal-body { background: var(--panel, #0b0f15); }
.toern-summ-obs-block { background: var(--bg-2); border: 1px solid var(--border); border-radius: 10px; padding: 12px; margin-bottom: 10px; }
.toern-summ-obs-match { font-size: 12.5px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.bnd-cat { font-size: 12.5px; color: var(--text-2); margin: 4px 0; line-height: 1.5; }
.bnd-cat-label { font-weight: 700; color: var(--text-3); text-transform: uppercase; font-size: 10.5px; letter-spacing: .04em; margin-right: 4px; }
.toern-summ-obs-text { width: 100%; min-height: 64px; background: var(--bg-input, #0d1018); border: 1px solid var(--border-2, #2d3242); border-radius: 8px; color: var(--text); padding: 9px 11px; font: inherit; font-size: 13px; resize: vertical; margin-top: 6px; }
.bnd-grade-chips { display: flex; gap: 8px; margin-top: 4px; }
.bnd-grade-btn { flex: 1; min-height: 42px; border-radius: 10px; cursor: pointer; border: 1px solid var(--border); background: var(--bg-2); color: var(--text-2); font-size: 15px; font-weight: 800; transition: background .15s, color .15s, border-color .15s; }
.bnd-grade-btn.active.grade-A { background: var(--grade-a, #22c55e); border-color: var(--grade-a, #22c55e); color: #06210f; }
.bnd-grade-btn.active.grade-B { background: var(--grade-b, #84cc16); border-color: var(--grade-b, #84cc16); color: #0f1a06; }
.bnd-grade-btn.active.grade-C { background: var(--grade-c, #f59e0b); border-color: var(--grade-c, #f59e0b); color: #1a1206; }
.bnd-grade-btn.active.grade-D { background: var(--grade-d, #ef4444); border-color: var(--grade-d, #ef4444); color: #2a0a0a; }

/* ══════════════════════════════════════════════════════════════
   H3 — Globale safe-area voor topbars (notch / statusbalk PWA).
   Voorheen hadden alleen enkele specifieke topbars de inset-clamp;
   nu krijgt elke pagina-topbar hem zodat titels niet meer achter
   de statusbalk/batterij verspringen op iPhone/Android PWA.
   ══════════════════════════════════════════════════════════════ */
@supports (padding-top: env(safe-area-inset-top)) {
  .view > .topbar,
  .login-card {
    padding-top: max(16px, calc(env(safe-area-inset-top) + 8px));
  }
}


/* H5 — advies-chips (observatie) */
.adv-chips { display:flex; flex-wrap:wrap; gap:6px; }
/* DEEL 7: advies over volle breedte — 4 keuzes breder, gelijke verdeling */
.adv-chips-wide { width:100%; }
.adv-chips-wide .adv-chip { flex:1 1 22%; min-width:140px; text-align:center; justify-content:center; }
.adv-chip {
  background: var(--panel-2,#1d2533); color: var(--text-2,#9aa8bd);
  border: 1px solid var(--border,#232d40); border-radius: 999px;
  padding: 7px 13px; font-size: 12.5px; cursor: pointer; line-height:1;
  min-height: 34px;
}
.adv-chip:hover { border-color: var(--border-2,#2f3b52); color: var(--text,#e8edf5); }
.adv-chip.active {
  background: var(--accent,#4ea1ff); border-color: var(--accent,#4ea1ff);
  color: #08111f; font-weight: 600;
}


/* M1 — sidebar sectiekoppen */
.nav-section-label {
  font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--text-3, #8b97ad); padding: 8px 14px 3px; opacity: .7;
  pointer-events: none; user-select: none;
}
.nav-section-label:first-child { padding-top: 4px; }


/* M12 — post-wedstrijd progress-regel op programmakaart */
.pm-progress {
  margin-top: 6px; font-size: 11.5px; color: var(--text-3, #8b97ad);
  display: flex; flex-wrap: wrap; gap: 4px; align-items: center; line-height: 1.4;
}


/* M13 — ritten bedrag + maand-subtotalen */
.rit-bedrag { font-size: 11px; color: var(--text-3, #8b97ad); }
.ritten-subtotals { margin: 0 0 12px; background: var(--panel-2,#1d2533); border:1px solid var(--border,#232d40); border-radius: 8px; padding: 6px 12px; }
.ritten-subtotals summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--text-2,#9aa8bd); padding: 4px 0; }
.ritten-sub-row { display:flex; justify-content:space-between; gap:10px; font-size:12px; color: var(--text-2,#9aa8bd); padding: 4px 0; border-top: 1px solid var(--border,#232d40); }


/* Onderdeel 1 — notitie per categorie in obs-formulier */
.obs-cat-note {
  display:block; width:100%; margin-top:6px;
  background:var(--bg-input,#0d1018); border:1px solid var(--border,#232d40);
  color:var(--text,#e8edf5); border-radius:6px; padding:6px 8px;
  font:inherit; font-size:12.5px; resize:none; min-height:32px; line-height:1.4; outline:none;
  overflow-y:hidden;
}
.obs-cat-note:focus { border-color:var(--accent,#4ea1ff); }
.obs-cat-note::placeholder { color:var(--text-3,#8b97ad); }
/* sh-v362: scrollbar-pijltjes weg. LET OP: 'scrollbar-width' bewust NIET zetten —
   zodra die gezet is negeert Chromium ALLE ::-webkit-scrollbar-regels en blijven
   de pijltjes staan (dat was de bug in v361). Daarom puur via ::-webkit-scrollbar
   + -button:none. De auto-grow-JS zet overflow-y:hidden zolang het veld niet
   voorbij de max-hoogte groeit, dus in rust is er sowieso geen scrollbar. */
.obs-cat-note::-webkit-scrollbar, textarea.sh-grow-note::-webkit-scrollbar { width: 6px; height: 6px; }
.obs-cat-note::-webkit-scrollbar-button, textarea.sh-grow-note::-webkit-scrollbar-button { display: none; width: 0; height: 0; }
.obs-cat-note::-webkit-scrollbar-thumb, textarea.sh-grow-note::-webkit-scrollbar-thumb { background: rgba(255,255,255,.18); border-radius: 3px; }


/* Onderdeel 2 — keuze-modal (obs of rapport) */
.obs-keuze-backdrop {
  position:fixed; inset:0; z-index:10000; background:rgba(0,0,0,.6);
  display:flex; align-items:center; justify-content:center; padding:max(20px, env(safe-area-inset-top)) 16px 20px;
  animation:fadeIn .15s ease;
}
.obs-keuze-card {
  background:var(--panel,#111722); color:var(--text,#e8edf5); border:1px solid var(--border,#232d40);
  border-radius:14px; max-width:440px; width:100%; padding:20px; box-shadow:0 12px 40px rgba(0,0,0,.5);
}
.obs-keuze-title { font-size:16px; font-weight:700; }
.obs-keuze-meta { font-size:13.5px; color:var(--text-2,#9aa8bd); margin-top:6px; }
.obs-keuze-sub { font-size:12px; color:var(--text-3,#8b97ad); margin-top:2px; }
.obs-keuze-q { font-size:13px; color:var(--text-2,#9aa8bd); margin:16px 0 8px; }
.obs-keuze-btn {
  display:block; width:100%; text-align:left; background:var(--panel-2,#1d2533);
  border:1px solid var(--border,#232d40); border-radius:10px; padding:12px 14px; margin-bottom:10px; cursor:pointer;
}
.obs-keuze-btn:hover { border-color:var(--border-2,#2f3b52); }
.obs-keuze-btn.primary { border-color:var(--accent,#4ea1ff); }
.obs-keuze-btn .okb-t { display:block; font-size:14px; font-weight:600; color:var(--text,#e8edf5); }
.obs-keuze-btn .okb-s { display:block; font-size:12px; color:var(--text-3,#8b97ad); margin-top:3px; line-height:1.4; }

/* ══════════════════════════════════════════════════════════════
   LANDINGSPAGINA (pre-login) — dark, responsive, geen dependencies
   ══════════════════════════════════════════════════════════════ */
#landing-overlay {
  position: fixed; inset: 0; z-index: 5000;
  background: var(--bg, #0a0c12); color: var(--text, #e8edf5);
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain; touch-action: pan-y;
  display: none; flex-direction: column;
  font: 15px/1.6 system-ui, -apple-system, "Segoe UI", sans-serif;
}
#landing-overlay > * { flex-shrink: 0; }

.lp-nav {
  position: sticky; top: 0; z-index: 2;
  display: flex; align-items: center; justify-content: space-between;
  padding: max(12px, env(safe-area-inset-top)) 20px 12px;
  background: rgba(10,12,18,.85); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--border, #232d40);
}
.lp-brand { font-weight: 800; font-size: 17px; letter-spacing: -.3px; display: flex; align-items: center; gap: 9px; }
.lp-logo-dot { width: 12px; height: 12px; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary, #e30613), var(--secondary, #f5c518)); display: inline-block; }

.lp-btn {
  border: 1px solid var(--border-2, #2f3b52); background: var(--panel-2, #1d2533);
  color: var(--text, #e8edf5); border-radius: 10px; padding: 11px 20px;
  font-size: 14.5px; font-weight: 600; cursor: pointer; line-height: 1;
  transition: transform .12s ease, background .15s ease, border-color .15s ease;
}
.lp-btn:hover { transform: translateY(-1px); border-color: var(--accent, #4ea1ff); }
.lp-btn-sm { padding: 8px 14px; font-size: 13.5px; }
.lp-btn-lg { padding: 14px 30px; font-size: 16px; }
.lp-btn-primary { background: linear-gradient(135deg, var(--primary, #e30613), var(--primary-2, #ff2a3a)); border-color: transparent; color: #fff; }
.lp-btn-primary:hover { filter: brightness(1.06); border-color: transparent; }
.lp-btn-ghost { background: transparent; }

.lp-hero {
  display: grid; grid-template-columns: 1.05fr .95fr; gap: 40px; align-items: center;
  max-width: 1400px; margin: 0 auto; padding: 54px 24px 40px; width: 100%;
}
.lp-h1 { font-size: clamp(26px, 3.8vw, 44px); line-height: 1.08; font-weight: 800; letter-spacing: -1px; margin: 0 0 16px; }
.lp-sub { font-size: clamp(15px, 2vw, 18px); color: var(--text-2, #9aa8bd); max-width: 540px; margin: 0 0 26px; }
.lp-cta-row { display: flex; gap: 12px; flex-wrap: wrap; }

.lp-hero-visual { display: flex; justify-content: center; }
.lp-visual {
  width: 100%; max-width: 800px; border: 2px dashed var(--border-2, #2f3b52); border-radius: 14px;
  background: var(--panel, #111722); display: flex; align-items: center; justify-content: center;
  color: var(--text-3, #8b97ad); font-size: 13px; letter-spacing: .5px;
}
.lp-visual-16x9 { aspect-ratio: 16 / 9; }
.lp-visual-step { aspect-ratio: 16 / 10; margin-top: 12px; font-size: 11px; }

.lp-section { max-width: 1400px; margin: 0 auto; padding: 48px 24px; width: 100%; }
.lp-h2 { font-size: clamp(22px, 3.4vw, 32px); font-weight: 800; letter-spacing: -.5px; text-align: center; margin: 0 0 32px; }

.lp-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; }
.lp-feat {
  background: var(--panel, #111722); border: 1px solid var(--border, #232d40); border-radius: 14px; padding: 20px;
  transition: transform .15s ease, border-color .15s ease;
}
.lp-feat:hover { transform: translateY(-3px); border-color: var(--border-2, #2f3b52); }
.lp-feat-ic { font-size: 26px; margin-bottom: 10px; }
.lp-feat-t { font-size: 15.5px; font-weight: 700; margin-bottom: 6px; }
.lp-feat-s { font-size: 13.5px; color: var(--text-2, #9aa8bd); line-height: 1.5; }

.lp-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.lp-step { background: var(--panel, #111722); border: 1px solid var(--border, #232d40); border-radius: 14px; padding: 20px; text-align: center; }
.lp-step-n { width: 32px; height: 32px; border-radius: 50%; margin: 0 auto 10px;
  display: flex; align-items: center; justify-content: center; font-weight: 800; color: #08111f;
  background: linear-gradient(135deg, var(--accent, #4ea1ff), #7fd99e); }
.lp-step-ic { font-size: 24px; }
.lp-step-t { font-size: 15px; font-weight: 700; margin: 6px 0 4px; }
.lp-step-s { font-size: 13px; color: var(--text-2, #9aa8bd); line-height: 1.5; }

.lp-testimonials { display: none; }            /* verborgen tot er quotes zijn */
#landing-overlay.has-testimonials .lp-testimonials { display: block; }
.lp-quote { max-width: 680px; margin: 0 auto; text-align: center; font-size: 18px; font-style: italic; color: var(--text-2, #9aa8bd); }
.lp-quote-by { display: block; margin-top: 10px; font-style: normal; font-size: 13px; color: var(--text-3, #8b97ad); }

.lp-cta-final { text-align: center; padding: 56px 24px; }

.lp-footer {
  margin-top: auto; padding: 28px 24px calc(28px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--border, #232d40); text-align: center;
  color: var(--text-3, #8b97ad); font-size: 13px; display: flex; flex-direction: column; gap: 8px;
}
.lp-footer-links a { color: var(--text-2, #9aa8bd); text-decoration: none; }
.lp-footer-links a:hover { color: var(--accent, #4ea1ff); }

/* subtiele fade-in bij scrollen */
.lp-reveal { opacity: 0; transform: translateY(16px); transition: opacity .55s ease, transform .55s ease; }
.lp-reveal.lp-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .lp-reveal { opacity: 1; transform: none; transition: none; } }

/* Tablet */
@media (max-width: 900px) {
  .lp-hero { grid-template-columns: 1fr; gap: 28px; padding: 44px 20px 36px; text-align: center; }
  .lp-sub { margin-left: auto; margin-right: auto; }
  .lp-cta-row { justify-content: center; }
  .lp-steps { grid-template-columns: repeat(2, 1fr); }
}
/* Mobiel */
@media (max-width: 560px) {
  .lp-section { padding: 36px 16px; }
  .lp-hero { padding: 32px 16px 28px; }
  .lp-features { grid-template-columns: 1fr; }
  .lp-steps { grid-template-columns: 1fr; }
  .lp-cta-row .lp-btn { flex: 1; }
}

/* ── Landing carousel (interactieve demo met mockups) ── */
.lp-carousel { position: relative; max-width: 820px; margin: 0 auto; }
.lp-car-viewport { overflow: hidden; border-radius: 16px; }
.lp-carousel-track { display: flex; transition: transform .5s cubic-bezier(.4,.0,.2,1); will-change: transform; }
.lp-slide { min-width: 100%; box-sizing: border-box; padding: 8px 8px 4px; display: flex; flex-direction: column; align-items: center; }
.lp-slide-cap { text-align: center; padding: 16px 12px 6px; }
.lp-slide-t { font-size: 18px; font-weight: 800; letter-spacing: -.3px; }
.lp-slide-s { font-size: 14px; color: var(--text-2, #9aa8bd); margin-top: 4px; }

/* mock "scherm" */
.lp-mock { width: 100%; max-width: 460px; background: var(--panel, #111722); border: 1px solid var(--border, #232d40);
  border-radius: 14px; padding: 14px; min-height: 230px; box-shadow: 0 10px 30px rgba(0,0,0,.35); }
.lp-mock-center { display: flex; flex-direction: column; align-items: center; }
.lp-mock-bar { font-size: 13px; font-weight: 700; color: var(--text, #e8edf5); padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid var(--border, #232d40); display: flex; justify-content: space-between; align-items: center; }
.lp-mock-kpis { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-bottom: 12px; }
.lp-kpi { background: var(--panel-2, #1d2533); border-radius: 10px; padding: 10px; text-align: center; }
.lp-kpi b { display: block; font-size: 20px; color: var(--accent, #4ea1ff); }
.lp-kpi span { font-size: 11px; color: var(--text-3, #8b97ad); }
.lp-mock-row { font-size: 13px; color: var(--text-2, #9aa8bd); padding: 8px 10px; background: var(--panel-2, #1d2533); border-radius: 8px; margin-bottom: 6px; display: flex; align-items: center; gap: 8px; }
.lp-mock-row em { margin-left: auto; font-style: normal; font-size: 11px; color: var(--text-3, #8b97ad); }
.lp-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--text-3, #8b97ad); flex-shrink: 0; }
.lp-dot.g { background: #22c55e; } .lp-dot.o { background: #f59e0b; } .lp-dot.r { background: #ef4444; }
.lp-dot-live { background: #22c55e; box-shadow: 0 0 0 3px rgba(34,197,94,.25); }
.lp-mock-cat { font-size: 10.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-3, #8b97ad); margin: 10px 0 6px; }
.lp-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.lp-chip { font-size: 12px; padding: 6px 11px; border-radius: 999px; background: var(--panel-2, #1d2533); border: 1px solid var(--border, #232d40); color: var(--text-2, #9aa8bd); }
.lp-chip.g { background: rgba(34,197,94,.16); border-color: rgba(34,197,94,.5); color: #7fe0a0; }
.lp-chip.o { background: rgba(245,158,11,.16); border-color: rgba(245,158,11,.5); color: #f5c87a; }
.lp-chip.r { background: rgba(239,68,68,.16); border-color: rgba(239,68,68,.5); color: #f3a0a0; }
.lp-tb { font-size: 12px; font-weight: 700; color: var(--text, #e8edf5); margin: 10px 0 6px; display: flex; align-items: center; gap: 8px; }
.lp-now { font-size: 10px; font-weight: 700; color: #08111f; background: #22c55e; border-radius: 5px; padding: 2px 6px; }
.lp-grades { display: flex; gap: 6px; margin: 10px 0; }
.lp-grade { width: 34px; height: 34px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 14px; background: var(--panel-2, #1d2533); border: 1px solid var(--border, #232d40); color: var(--text-3, #8b97ad); }
.lp-grade.on { background: linear-gradient(135deg, var(--primary, #e30613), var(--primary-2, #ff2a3a)); color: #fff; border-color: transparent; }
.lp-mock-note { font-size: 12.5px; color: var(--text-2, #9aa8bd); background: var(--panel-2, #1d2533); border-radius: 8px; padding: 8px 10px; }
.lp-radar { width: 200px; height: 200px; margin: 6px auto; display: block; }
.lp-legend { display: flex; gap: 14px; justify-content: center; font-size: 12px; }
.lp-lg { display: flex; align-items: center; gap: 6px; color: var(--text-2, #9aa8bd); }
.lp-lg::before { content: ''; width: 10px; height: 10px; border-radius: 2px; }
.lp-lg-a::before { background: #4ea1ff; } .lp-lg-b::before { background: #f5c518; }
.lp-offline { font-size: 11px; color: #ef4444; font-weight: 700; }

/* telefoon-frame */
.lp-phone { width: 230px; margin: 0 auto; border: 8px solid #1a2030; border-radius: 30px; background: var(--bg, #0a0c12); padding: 14px 10px 16px; position: relative; box-shadow: 0 12px 36px rgba(0,0,0,.45); }
.lp-phone-notch { width: 80px; height: 16px; background: #1a2030; border-radius: 0 0 12px 12px; margin: -14px auto 10px; }
.lp-phone-screen .lp-mock-bar { font-size: 12px; }

/* pijlen + dots */
.lp-car-arrow { position: absolute; top: 38%; transform: translateY(-50%); width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--border-2, #2f3b52); background: rgba(17,23,34,.9); color: var(--text, #e8edf5); font-size: 22px; cursor: pointer; line-height: 1; }
.lp-car-arrow:hover { border-color: var(--accent, #4ea1ff); }
.lp-car-prev { left: -6px; } .lp-car-next { right: -6px; }
.lp-car-dots { display: flex; gap: 8px; justify-content: center; margin-top: 14px; }
.lp-dot-nav { width: 9px; height: 9px; border-radius: 50%; border: 0; padding: 0; cursor: pointer; background: var(--border-2, #2f3b52); }
.lp-dot-nav.on { background: var(--accent, #4ea1ff); width: 22px; border-radius: 5px; }

@media (max-width: 560px){
  .lp-car-arrow { width: 32px; height: 32px; font-size: 18px; }
  .lp-car-prev { left: 2px; } .lp-car-next { right: 2px; }
  .lp-mock { min-height: 200px; }
}

/* ── Onboarding-wizard ── */
.sh-wiz-backdrop {
  position: fixed; inset: 0; z-index: 10001; background: rgba(0,0,0,.62);
  display: flex; align-items: center; justify-content: center;
  padding: max(20px, env(safe-area-inset-top)) 16px 20px; animation: fadeIn .15s ease;
}
.sh-wiz-card {
  position: relative; background: var(--panel, #111722); color: var(--text, #e8edf5);
  border: 1px solid var(--border, #232d40); border-radius: 16px; max-width: 460px; width: 100%;
  padding: 24px 22px 18px; box-shadow: 0 16px 50px rgba(0,0,0,.55); text-align: center;
}
.sh-wiz-close { position: absolute; top: 10px; right: 12px; background: none; border: 0; color: var(--text-3, #8b97ad); font-size: 24px; line-height: 1; cursor: pointer; padding: 4px; }
.sh-wiz-body h3 { font-size: 20px; font-weight: 800; margin: 6px 0 8px; letter-spacing: -.4px; }
.sh-wiz-body p { font-size: 14.5px; color: var(--text-2, #9aa8bd); line-height: 1.55; margin: 0 auto; max-width: 360px; }
.sh-wiz-ic { font-size: 44px; line-height: 1; margin-bottom: 6px; }
.sh-wiz-mock { margin: 16px auto 0; max-width: 340px; min-height: 0; text-align: left; }
.sh-wiz-dots { display: flex; gap: 8px; justify-content: center; margin: 18px 0 14px; }
.sh-wiz-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--border-2, #2f3b52); }
.sh-wiz-dot.on { background: var(--accent, #4ea1ff); width: 22px; border-radius: 5px; }
.sh-wiz-nav { display: flex; gap: 8px; align-items: center; justify-content: space-between; }
.sh-wiz-nav .lp-btn { flex: 0 0 auto; }
.sh-wiz-actions { display: flex; flex-direction: column; gap: 8px; margin: 16px auto 0; max-width: 300px; }
.sh-wiz-actions .lp-btn { width: 100%; }
.sh-wiz-check { display: flex; align-items: center; justify-content: center; gap: 7px; margin-top: 14px; font-size: 12.5px; color: var(--text-3, #8b97ad); cursor: pointer; }
@media (max-width: 480px){
  .sh-wiz-nav { flex-wrap: wrap; }
  .sh-wiz-nav .lp-btn { flex: 1; }
}

/* ── Contextual help (?) ── */
.sh-help {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; min-width: 18px; border-radius: 50%;
  border: 1px solid var(--border-2, #2f3b52); background: transparent;
  color: var(--text-3, #8b97ad); font-size: 11px; font-weight: 700; line-height: 1;
  cursor: pointer; padding: 0; vertical-align: middle; margin-left: 5px; position: relative;
}
.sh-help:hover { color: var(--text, #e8edf5); border-color: var(--accent, #4ea1ff); }
/* groter touch-target op PWA zonder de visuele grootte te veranderen */
.sh-help::after { content: ''; position: absolute; inset: -14px; }
.sh-help-pop {
  position: fixed; z-index: 10050; max-width: 260px; background: var(--panel-2, #1d2533);
  color: var(--text, #e8edf5); border: 1px solid var(--border-2, #2f3b52); border-radius: 10px;
  padding: 10px 12px; font-size: 12.5px; line-height: 1.5; box-shadow: 0 10px 30px rgba(0,0,0,.5);
}


/* Onboarding B — helpende lege-states */
.sh-empty { text-align: center; padding: 40px 20px; }
.sh-empty-ic { font-size: 40px; line-height: 1; margin-bottom: 10px; opacity: .9; }
.sh-empty-t { font-size: 15.5px; font-weight: 700; color: var(--text, #e8edf5); }
.sh-empty-s { font-size: 13.5px; color: var(--text-2, #9aa8bd); margin: 6px auto 16px; max-width: 360px; line-height: 1.5; }


/* Prompt 6 — spelerfoto + foto-menu */
.sh-avatar-img{ width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }
.sh-avatar-btn{ position:relative; border:none; padding:0; cursor:pointer; background:transparent; overflow:visible; }
.sh-avatar-btn .sh-avatar-cam{
  position:absolute; right:-2px; bottom:-2px; width:20px; height:20px; border-radius:50%;
  background:var(--accent,#4ea1ff); color:#06223f; font-size:10px; line-height:1;
  display:flex; align-items:center; justify-content:center; border:2px solid var(--bg,#0a1019);
}
.compare-slot-avatar .sh-avatar-img{ border-radius:50%; }
.sh-photo-menu-bd{ position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:9999; display:flex; align-items:center; justify-content:center; padding:20px; }
.sh-photo-menu{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:14px; padding:18px; width:100%; max-width:320px; display:flex; flex-direction:column; gap:8px; }
.sh-pm-title{ font-weight:700; font-size:16px; margin-bottom:4px; color:var(--text,#e8edf5); text-align:center; }
.sh-pm-opt{ background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:10px; padding:12px 14px; font-size:14.5px; cursor:pointer; text-align:left; }
.sh-pm-opt:hover{ border-color:var(--accent,#4ea1ff); }
.sh-pm-opt.danger{ color:#fca5a5; border-color:rgba(248,113,113,.4); }
.sh-pm-opt.ghost{ text-align:center; color:var(--text-3,#8b97ad); }
.sh-pm-preview{ width:160px; height:160px; border-radius:12px; object-fit:cover; align-self:center; margin:4px 0; }
.sh-didyoumean{ color:var(--accent,#4ea1ff); font-weight:600; }


/* Prompt 8 — vormtrend sparklines + obs-labeling in vergelijken */
.sh-spark-grid{ margin-top:14px; border-top:1px solid var(--border,#1f2937); padding-top:12px; }
.sh-spark-grid-title{ font-size:12px; color:var(--text-3,#8b97ad); text-transform:uppercase; letter-spacing:.6px; margin-bottom:8px; }
.sh-spark-cells{ display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:10px; }
.sh-spark-cell{ background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); border-radius:8px; padding:8px; }
.sh-spark-lbl{ font-size:11.5px; color:var(--text-2,#9aa8bd); margin-bottom:2px; display:flex; justify-content:space-between; align-items:center; }
.sh-spark{ display:block; width:100%; height:auto; }
.sh-spark-tr.up{ color:#34d399; } .sh-spark-tr.down{ color:#f87171; } .sh-spark-tr.flat{ color:var(--text-3,#8b97ad); }
.cmp-src{ font-size:11px; color:var(--text-3,#8b97ad); margin-left:6px; white-space:nowrap; }
.cmp-src-est{ color:#fcd34d; }
.cmp-trend{ font-size:11px; margin-left:6px; font-weight:600; white-space:nowrap; }
.cmp-trend-up{ color:#34d399; } .cmp-trend-down{ color:#f87171; } .cmp-trend-flat{ color:var(--text-3,#8b97ad); }
.cmp-legend-est .compare-legend-dot{ outline:1px dashed currentColor; outline-offset:1px; }
.compare-bar-fill.cmp-est{ background-image:repeating-linear-gradient(45deg, rgba(255,255,255,0) 0, rgba(255,255,255,0) 4px, rgba(255,255,255,.22) 4px, rgba(255,255,255,.22) 8px); }
.cmp-tt-est{ color:#fcd34d; cursor:help; font-style:normal; }


/* Prompt 9 — auto-kandidaten + module-koppeling */
.pitch-suggest{ margin-top:14px; border-top:1px solid var(--border,#1f2937); padding-top:12px; }
.psug-bar{ margin-bottom:8px; }
.psug-search{ width:100%; background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:8px; padding:7px 10px; font-size:13px; outline:none; }
.psug-search:focus{ border-color:var(--accent,#4ea1ff); }
.psug-head{ font-size:12.5px; font-weight:700; color:var(--text-2,#9aa8bd); margin:6px 0; display:flex; align-items:center; gap:6px; }
.psug-head.psug-fallback{ font-weight:500; color:var(--text-3,#8b97ad); }
.psug-count{ background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); border-radius:999px; padding:0 7px; font-size:11px; }
.psug-list{ display:flex; flex-direction:column; gap:6px; max-height:320px; overflow-y:auto; }
.psug-row{ display:flex; align-items:center; gap:8px; background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:8px; padding:7px 9px; }
.psug-main{ flex:1; min-width:0; cursor:pointer; }
.psug-name{ font-size:13px; font-weight:600; color:var(--text,#e8edf5); }
.psug-meta{ font-size:11px; color:var(--text-3,#8b97ad); }
.psug-tag{ font-size:9.5px; background:rgba(78,161,255,.18); color:#9cc4ff; border-radius:4px; padding:1px 5px; font-weight:700; vertical-align:middle; }
.psug-tag.obs{ background:rgba(251,191,36,.18); color:#fcd34d; }
.psug-link{ white-space:nowrap; }
.psug-linked{ color:#34d399; font-weight:700; width:26px; text-align:center; }
.pitch-preselect-banner{ display:flex; align-items:center; justify-content:space-between; gap:10px; background:rgba(78,161,255,.1); border:1px solid rgba(78,161,255,.3); border-radius:10px; padding:9px 14px; margin-bottom:12px; font-size:13px; color:var(--text,#e8edf5); }
.pitch-preselect-x{ background:none; border:none; color:var(--text-2,#9aa8bd); font-size:18px; cursor:pointer; line-height:1; flex:0 0 auto; }
.cmp-to-pitch-btn{ margin-bottom:12px; }
.elf-analyse-btn{ white-space:nowrap; }


/* Prompt 10 — favoriete routes */
.rit-fav-bar{ margin-bottom:12px; }
.rit-fav-label{ font-size:12px; color:var(--text-3,#8b97ad); margin-bottom:6px; font-weight:600; }
.rit-fav-chips{ display:flex; flex-wrap:wrap; gap:6px; }
.rit-fav-chip{ background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:999px; padding:6px 12px; font-size:12.5px; cursor:pointer; }
.rit-fav-chip:hover{ border-color:var(--accent,#4ea1ff); }
.rit-fav-km{ color:var(--text-3,#8b97ad); font-size:11px; }
.favmgr-list{ display:flex; flex-direction:column; gap:8px; max-height:340px; overflow-y:auto; margin:4px 0 8px; }
.favmgr-row{ display:flex; align-items:center; gap:8px; background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); border-radius:8px; padding:8px 10px; }
.favmgr-info{ flex:1; min-width:0; }
.favmgr-name{ font-size:13px; font-weight:600; color:var(--text,#e8edf5); }
.favmgr-meta{ font-size:11px; color:var(--text-3,#8b97ad); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.favmgr-edit,.favmgr-del{ background:none; border:1px solid var(--border,#1f2937); border-radius:6px; padding:4px 8px; cursor:pointer; color:var(--text-2,#9aa8bd); flex:0 0 auto; }
.favmgr-edit:hover{ border-color:var(--accent,#4ea1ff); color:var(--text,#e8edf5); }
.favmgr-del:hover{ border-color:#f87171; color:#fca5a5; }

/* Prompt 10 — compacter dashboard op mobiel (<=768px) */
@media (max-width: 768px){
  #kpi-grid{ grid-template-columns:repeat(2,1fr) !important; gap:8px !important; }
  #kpi-grid .kpi-card{ padding:10px 12px !important; }
  #kpi-grid .kpi-value{ font-size:22px !important; }
  #kpi-grid .kpi-label{ font-size:10.5px !important; }
  /* Snelknoppen prominenter + full-width */
  #view-dashboard .topbar{ flex-wrap:wrap; gap:10px; }
  #view-dashboard .topbar > div:last-child{ display:flex; width:100%; gap:8px; }
  #view-dashboard .topbar > div:last-child .btn{ flex:1; justify-content:center; padding:12px; font-size:14px; }
  /* Live-tegel prominent */
  #scouting-active-wrap{ border:1.5px solid var(--accent,#4ea1ff); border-radius:12px; box-shadow:0 6px 22px rgba(78,161,255,.18); }
  /* Agenda compacter — toon de bovenste items, rest scrollbaar.
     overflow-x: hidden voorkomt dat overflow-y:auto de horizontale as op
     'auto' zet (anders verschijnt er een horizontale scrollbalk op mobiel). */
  .upcoming-matches-body{ max-height:190px; overflow-y:auto; overflow-x:hidden; }
  /* Zware analyse-/grafiekpanelen verbergen op mobiel */
  .panel:has(#dist-current),
  .panel:has(#dash-gaps),
  .panel:has(#dash-clubs),
  #dash-overzichtsmap-panel{ display:none !important; }
}


/* Prompt 11 — profielfoto netjes rond/uitgesneden */
.scout-avatar-img, .settings-photo-preview{ object-fit:cover; }


/* Prompt 12 — toggle-switch voor herinneringen */
.sh-switch{ position:relative; display:inline-block; width:42px; height:24px; flex:0 0 auto; }
.sh-switch input{ opacity:0; width:0; height:0; }
.sh-switch-slider{ position:absolute; inset:0; background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); border-radius:999px; transition:.2s; cursor:pointer; }
.sh-switch-slider::before{ content:""; position:absolute; height:16px; width:16px; left:3px; top:3px; background:var(--text-3,#8b97ad); border-radius:50%; transition:.2s; }
.sh-switch input:checked + .sh-switch-slider{ background:var(--accent,#4ea1ff); border-color:var(--accent,#4ea1ff); }
.sh-switch input:checked + .sh-switch-slider::before{ transform:translateX(18px); background:#06223f; }


/* Prompt 13 — rapport chip-grid + profiel-chips */
.report-trefwoorden{ margin:8px 0 10px; flex-basis:100%; width:100%; }
.report-trefwoorden .rep-tw-chips{ display:flex; flex-wrap:wrap; gap:6px; }
.report-trefwoorden .obs-tag{ background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); color:var(--text-2,#9aa8bd); border-radius:999px; padding:6px 11px; font-size:12.5px; cursor:pointer; line-height:1.1; }
.report-trefwoorden .obs-tag[data-rating="good"]{ background:rgba(52,211,153,.18); border-color:rgba(52,211,153,.5); color:#6ee7b7; }
.report-trefwoorden .obs-tag[data-rating="average"]{ background:rgba(251,191,36,.18); border-color:rgba(251,191,36,.5); color:#fcd34d; }
.report-trefwoorden .obs-tag[data-rating="poor"]{ background:rgba(248,113,113,.18); border-color:rgba(248,113,113,.5); color:#fca5a5; }
.rep-tags-summary{ margin:0 0 12px; }
.rep-tag-cats{ display:flex; flex-direction:column; gap:5px; }
.rep-tag-cat{ font-size:12.5px; color:var(--text,#e8edf5); }
.rep-tag-cat-lbl{ font-weight:700; text-transform:uppercase; font-size:10.5px; letter-spacing:.04em; color:var(--text-3,#8b97ad); margin-right:6px; }
.rep-obs-link{ margin-top:8px; font-size:12px; color:var(--text-3,#8b97ad); cursor:pointer; display:inline-block; }
.rep-obs-link:hover{ color:var(--accent,#4ea1ff); text-decoration:underline; }


/* ===================== BUGFIX RONDE 1 ===================== */

/* B8 — sluitknoppen (×) onder de statusbalk op PWA (viewport-fit=cover) */
.modal-close, .obs-modal-close, .toern-modal-close, .smart-modal-close,
.sh-wiz-close, .changelog-close, .cmp-add-close, .demo-tour-close,
.install-modal-close, .live-scout-close, .settings-close-btn,
.sa-snel-close-head, .sa-snel-wstr-close-head, .sa-tile-close, .sa-tile-obs-close,
.wstr-verwerk-close {
  top: max(12px, env(safe-area-inset-top, 0px)) !important;
}

/* B9 — toernooi-view altijd full-width op PWA */
#view-toernooien, #toern-list-pane, #toern-detail-pane, #toern-list-wrap, .toern-tab-pane {
  width: 100%;
  box-sizing: border-box;
}

/* B10 — voorkom dubbel-tap-zoom op alle tikbare chips/knoppen */
.obs-tag, .grade-pick, .adv-chip, .hb-grade, .toern-prio-btn, .cond-chip,
.grade-picker button, .sa-live-btn, .rit-fav-chip, .psug-link,
.report-trefwoorden .obs-tag, [class*="-chip"] {
  touch-action: manipulation;
}

/* B11 — wedstrijdnotitie/obs-knoppen voldoende touch-target + geen zoom */
.sa-live-btn, .sa-wstr-toggle-row, .sa-wstrnotitie-row {
  min-height: 44px;
  touch-action: manipulation;
}


/* Screenshots ronde — landingspagina afbeeldingen */
#landing-overlay .lp-visual:has(img){ aspect-ratio:auto; border:none; background:none; padding:0; display:block; }
#landing-overlay .lp-visual img{
  width:100%; max-width:100%; height:auto; border-radius:12px;
  box-shadow:0 8px 40px rgba(0,0,0,.4); display:block;
}
#landing-overlay .lp-visual-step img{ border-radius:10px; box-shadow:0 6px 24px rgba(0,0,0,.32); }


/* Lightbox voor screenshots (landingspagina) */
.sh-lb{ display:none; position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,.85); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); align-items:center; justify-content:center; cursor:pointer; }
.sh-lb.open{ display:flex; }
.sh-lb-img{ max-width:90vw; max-height:90vh; object-fit:contain; border-radius:8px; box-shadow:0 12px 60px rgba(0,0,0,.6); }
.sh-lb-close{ position:fixed; top:max(16px, env(safe-area-inset-top, 0px)); right:16px; background:rgba(255,255,255,.15); border:none; color:#fff; font-size:28px; width:44px; height:44px; border-radius:50%; cursor:pointer; z-index:10000; display:flex; align-items:center; justify-content:center; line-height:1; }
.sh-lb-close:hover{ background:rgba(255,255,255,.3); }
#landing-overlay .lp-visual img{ cursor:pointer; transition:transform .15s ease; }
#landing-overlay .lp-visual img:hover{ transform:scale(1.02); }


/* Login/reset meldingen */
.sh-login-msg{ display:none; font-size:14px; margin:10px 0; padding:10px 14px; border-radius:0 8px 8px 0; line-height:1.45; animation:shLoginMsgIn .2s ease; }
.sh-login-msg.error{ background:rgba(248,113,113,.12); border-left:3px solid var(--bad,#f87171); color:#fca5a5; }
.sh-login-msg.success{ background:rgba(52,211,153,.12); border-left:3px solid var(--good,#34d399); color:#6ee7b7; }
@keyframes shLoginMsgIn{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:none; } }


/* Fase 1 — Toegang aanvragen */
.login-req-btn{ background:none; border:1px solid var(--border,#1f2937); color:var(--text-2,#9aa8bd); border-radius:8px; padding:9px 16px; font-size:13px; cursor:pointer; min-height:40px; }
.login-req-btn:hover{ border-color:var(--accent,#4ea1ff); color:var(--text,#e8edf5); }
.sh-req-card{ max-width:340px; width:100%; text-align:left; position:relative; padding:12px 14px; max-height:calc(100vh - 40px); overflow-y:auto; overscroll-behavior:contain; }
.sh-req-role-info{ font-size:12px; color:var(--text-3,#8b97ad); background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); border-radius:7px; padding:7px 10px; margin:4px 0; line-height:1.4; }
.sh-req-role-info strong{ color:var(--text-2,#9aa8bd); }
.sh-req-x{ position:absolute; top:4px; right:4px; background:none; border:none; color:var(--text-2,#9aa8bd); font-size:20px; cursor:pointer; line-height:1; width:36px; height:36px; }
.sh-req-sub{ font-size:12px; color:var(--text-2,#9aa8bd); margin:2px 0 8px; line-height:1.4; }
.sh-req-l{ display:block; font-size:11.5px; color:var(--text-3,#8b97ad); margin:5px 0 2px; }
.sh-req-i{ width:100%; background:var(--bg-2,#0e1626); border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:7px; padding:6px 9px; font-size:13px; box-sizing:border-box; font-family:inherit; }
.sh-req-i:focus{ outline:none; border-color:var(--accent,#4ea1ff); }
.sh-req-actions{ display:flex; gap:8px; margin-top:10px; }
.sh-req-actions .settings-btn{ flex:1; min-height:38px; }
.sh-req-send{ background:var(--accent,#4ea1ff); color:#06223f; border-color:var(--accent,#4ea1ff); font-weight:700; }

/* ===== FASE 7 — Beheer-dashboard / statistieken ===== */
.bh-stat-banner{ display:flex; align-items:center; gap:8px; background:rgba(78,161,255,.08); border:1px solid rgba(78,161,255,.25); color:#bcd2ee; font-size:13px; border-radius:10px; padding:10px 14px; margin:0 0 14px; }
.bh-stat-hd{ font-size:15px; font-weight:700; color:var(--text,#e8edf5); margin:22px 0 10px; }
.bh-stat-hd-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.bh-stat-hd-row .adm-btn-ghost{ font-size:12px; padding:6px 12px; margin:0; }
.bh-stat-sub2{ font-weight:400; font-size:12px; color:var(--text-3,#8b97ad); }
.bh-stat-note{ font-size:12px; color:var(--text-3,#8b97ad); margin:8px 2px; }
.bh-stat-errbox{ text-align:center; padding:30px 14px; color:var(--text-2,#9aa8bd); }
.bh-stat-errbox p{ margin:0 0 12px; }
.bh-kpi-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.bh-kpi{ position:relative; overflow:hidden; background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:12px; padding:14px 16px 14px 19px; min-height:84px; transition:transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.bh-kpi::before{ content:''; position:absolute; left:0; top:0; bottom:0; width:3px; background:#e30613; }
.bh-kpi:hover{ transform:translateY(-2px); border-color:#2a3548; box-shadow:0 10px 26px rgba(0,0,0,.28); }
.bh-kpi-val{ font-size:26px; font-weight:800; color:var(--text,#e8edf5); line-height:1.1; }
.bh-kpi-lab{ font-size:12.5px; color:var(--text-2,#9aa8bd); margin-top:3px; }
.bh-kpi-sub{ font-size:11px; color:var(--text-3,#8b97ad); margin-top:4px; }
.adm-link-btn{ background:none; border:none; padding:0; margin:0; color:#4ea1ff; cursor:pointer; font:inherit; text-decoration:underline; }
.bh-kpi-clickable{ text-align:left; cursor:pointer; font-family:inherit; width:100%; }
.bh-kpi-clickable:hover{ border-color:#4ea1ff; }
.bh-kpi-ok{ border-color:rgba(34,197,94,.3); } .bh-kpi-ok::before{ background:#22c55e; }
.bh-kpi-warn{ border-color:rgba(245,158,11,.35); } .bh-kpi-warn::before{ background:#f59e0b; }
.bh-kpi-bad{ border-color:rgba(239,68,68,.4); } .bh-kpi-bad::before{ background:#ef4444; }
.bh-skel{ background:linear-gradient(90deg,#0b1220,#131c2b,#0b1220); background-size:200% 100%; animation:bhsk 1.2s linear infinite; }
@keyframes bhsk{ 0%{background-position:200% 0;} 100%{background-position:-200% 0;} }
.bh-chart-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:6px; }
.bh-chart-card{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:12px; padding:14px; }
.bh-chart-hd{ font-size:13px; font-weight:700; color:var(--text-2,#9aa8bd); margin-bottom:10px; }
.bh-chart-load{ font-weight:400; color:var(--text-3,#8b97ad); font-size:11px; }
.bh-chart-body{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.bh-donut{ width:120px; height:120px; flex:0 0 auto; }
.bh-donut-c{ fill:var(--text,#e8edf5); font-size:24px; font-weight:800; }
.bh-donut-l{ fill:var(--text-3,#8b97ad); font-size:11px; }
.bh-legend{ display:flex; flex-direction:column; gap:5px; font-size:12.5px; color:var(--text-2,#9aa8bd); }
.bh-leg-item{ display:flex; align-items:center; gap:7px; }
.bh-leg-dot{ width:10px; height:10px; border-radius:3px; display:inline-block; }
.bh-bars{ flex-direction:column; align-items:stretch; gap:7px; width:100%; }
.bh-bar-row{ display:flex; align-items:center; gap:8px; font-size:12px; color:var(--text-2,#9aa8bd); }
.bh-bar-lab{ flex:0 0 78px; }
.bh-bar-track{ flex:1; height:8px; background:#1a2436; border-radius:6px; overflow:hidden; }
.bh-bar-fill{ height:100%; background:linear-gradient(90deg,#4ea1ff,#6fb6ff); border-radius:6px; }
.bh-bar-val{ flex:0 0 36px; text-align:right; color:var(--text,#e8edf5); font-weight:600; }
.bh-att-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.bh-att-card{ border-radius:11px; padding:12px 14px; border:1px solid var(--border,#1f2937); background:var(--panel,#0b1220); }
.bh-att-t{ font-size:13.5px; font-weight:700; color:var(--text,#e8edf5); }
.bh-att-s{ font-size:11.5px; color:var(--text-3,#8b97ad); margin-top:3px; }
.bh-att-ok{ border-color:rgba(34,197,94,.3); } .bh-att-ok .bh-att-t{ color:#7ee2a8; }
.bh-att-warn{ border-color:rgba(245,158,11,.35); } .bh-att-warn .bh-att-t{ color:#f4c66a; }
.bh-att-bad{ border-color:rgba(239,68,68,.4); } .bh-att-bad .bh-att-t{ color:#f59a9a; }
.bh-chips{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin:0 0 10px; }
.bh-chips-l{ font-size:11px; color:var(--text-3,#8b97ad); margin:0 2px 0 8px; text-transform:uppercase; letter-spacing:.04em; }
.bh-chip{ background:#131c2b; border:1px solid var(--border,#1f2937); color:var(--text-2,#9aa8bd); border-radius:999px; padding:5px 12px; font-size:12px; cursor:pointer; }
.bh-chip.active{ background:#4ea1ff; border-color:#4ea1ff; color:#06223f; font-weight:700; }
.bh-tbl-wrap{ overflow-x:auto; border:1px solid var(--border,#1f2937); border-radius:12px; }
.bh-tbl{ width:100%; border-collapse:collapse; font-size:12.5px; min-width:760px; }
.bh-tbl th{ text-align:left; background:#0e1726; color:var(--text-3,#8b97ad); font-weight:600; padding:9px 10px; position:sticky; top:0; white-space:nowrap; }
.bh-tbl td{ padding:9px 10px; border-top:1px solid #16202f; color:var(--text-2,#9aa8bd); vertical-align:middle; }
.bh-tbl tbody tr:hover{ background:rgba(78,161,255,.05); }
.bh-tb-nm{ color:var(--text,#e8edf5); font-weight:600; }
.bh-tb-em{ font-size:11px; color:var(--text-3,#8b97ad); }
.bh-tb-dt{ white-space:nowrap; font-variant-numeric:tabular-nums; }
.bh-tb-n{ text-align:right; font-variant-numeric:tabular-nums; color:var(--text,#e8edf5); }
.bh-rank-card{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:12px; padding:12px 14px; }
.bh-rank-row{ display:flex; align-items:center; gap:10px; padding:6px 0; }
.bh-rank-nm{ flex:0 0 200px; color:var(--text,#e8edf5); font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; }
.bh-rank-meta{ display:block; font-size:11px; color:var(--text-3,#8b97ad); font-weight:400; }
.bh-rank-v{ flex:0 0 40px; text-align:right; font-weight:700; color:var(--text,#e8edf5); }
.bh-b-green{ background:rgba(34,197,94,.15); color:#7ee2a8; }
.bh-org-club{ border:1px solid var(--border,#1f2937); border-radius:14px; padding:12px; margin:0 0 14px; }
.bh-org-clubhd{ font-size:15px; font-weight:800; color:var(--text,#e8edf5); margin:0 0 10px; display:flex; align-items:center; gap:8px; }
.bh-org-sub{ font-size:11px; color:var(--text-3,#8b97ad); text-transform:uppercase; letter-spacing:.04em; margin:6px 0 4px; }
.bh-org-badge{ font-size:10.5px; padding:2px 8px; border-radius:999px; margin-left:6px; font-weight:600; }
.bh-org-warn{ background:rgba(245,158,11,.1); border:1px solid rgba(245,158,11,.35); color:#f4c66a; border-radius:10px; padding:9px 12px; font-size:13px; margin:0 0 12px; }
@media(max-width:900px){ .bh-kpi-grid{ grid-template-columns:repeat(2,1fr); } .bh-chart-grid{ grid-template-columns:1fr; } .bh-att-grid{ grid-template-columns:repeat(2,1fr); } }
@media(max-width:520px){ .bh-kpi-grid,.bh-att-grid{ grid-template-columns:1fr; } .bh-rank-nm{ flex-basis:130px; } }

/* ===== FASE A — Admin Console shell ===== */
#admin-console{ display:none; position:fixed; inset:0; z-index:1200; background:#0c1119; color:var(--text,#e8edf5); flex-direction:column; }
body.admin-console{ overflow:hidden; }
body.admin-console #app{ display:none !important; }
body.admin-console #admin-console{ display:flex; }
#adm-top{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 20px; background:#10151e; border-bottom:1px solid var(--border,#1f2937); }
.adm-brand{ font-size:18px; font-weight:850; letter-spacing:-.01em; display:flex; align-items:center; gap:9px; }
.adm-brand span{ color:#e30613; }
.adm-brand-icon{ width:28px; height:28px; border-radius:8px; box-shadow:0 2px 10px rgba(227,6,19,.35); flex:0 0 28px; }
.adm-brand .adm-tag{ color:#9aa8bd; font-size:11.5px; font-weight:600; border:1px solid var(--border,#1f2937); border-radius:6px; padding:2px 8px; margin-left:8px; letter-spacing:.02em; }
.adm-top-right{ display:flex; align-items:center; gap:10px; }
.adm-email{ font-size:12.5px; color:#9aa8bd; }
.adm-btn-ghost{ background:#1a2436; border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:8px; padding:7px 12px; font-size:12.5px; cursor:pointer; transition:border-color .2s ease, transform .15s ease; }
.adm-btn-ghost:hover{ border-color:#4ea1ff; transform:translateY(-1px); }
.adm-privacy{ background:rgba(78,161,255,.08); border-bottom:1px solid rgba(78,161,255,.2); color:#bcd2ee; font-size:12.5px; padding:8px 20px; }
#adm-main{ flex:1; display:flex; min-height:0; }
#adm-nav{ flex:0 0 232px; background:#0b1018; border-right:1px solid var(--border,#1f2937); padding:12px 10px; overflow-y:auto; display:flex; flex-direction:column; gap:3px; transition:flex-basis .18s ease, padding .18s ease, opacity .15s ease; }
.adm-nav-collapsed #adm-nav{ flex-basis:0; padding:12px 0; overflow:hidden; opacity:0; border-right:none; }
.adm-nav-toggle{ background:#1a2436; border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:8px; width:34px; height:34px; display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:16px; flex:0 0 auto; }
.adm-nav-toggle:hover{ border-color:#4ea1ff; }
.adm-nav-group-label{ font-size:10.5px; text-transform:uppercase; letter-spacing:.09em; color:#5d6b81; font-weight:700; padding:14px 12px 5px; }
.adm-nav-group-label:first-child{ padding-top:4px; }
.adm-nav-item{ position:relative; display:flex; align-items:center; gap:10px; text-align:left; background:none; border:none; color:#9aa8bd; border-radius:9px; padding:10px 12px; font-size:13.5px; cursor:pointer; width:100%; font-family:inherit; transition:background .18s ease, color .18s ease, transform .12s ease; }
.adm-nav-item:hover{ background:#131c2b; color:var(--text,#e8edf5); }
.adm-nav-item:active{ transform:scale(.985); }
.adm-nav-item.active{ background:#16233a; color:#fff; font-weight:600; }
.adm-nav-item.active::before{ content:''; position:absolute; left:0; top:16%; bottom:16%; width:3px; border-radius:0 3px 3px 0; background:#e30613; transform-origin:center; animation:appleIndicator .3s cubic-bezier(.16,1,.3,1) both; }
.adm-nav-item.active .adm-ic{ background:rgba(227,6,19,.22); }
.adm-ic{ width:26px; height:26px; text-align:center; flex:0 0 26px; display:inline-flex; align-items:center; justify-content:center; border-radius:8px; background:rgba(255,255,255,.04); font-size:14px; transition:background .18s ease; }
#adm-content{ flex:1; overflow-y:auto; padding:20px 24px; min-width:0; }
#adm-content.adm-fade-in > *{ animation:admContentIn .38s cubic-bezier(.16,1,.3,1) both; }
@keyframes admContentIn{ 0%{ opacity:0; transform:translateY(10px); } 100%{ opacity:1; transform:translateY(0); } }
#adm-content.adm-fade-in .bh-kpi,
#adm-content.adm-fade-in .adm-mailcard,
#adm-content.adm-fade-in .adm-stub-card,
#adm-content.adm-fade-in .adm-settings-card,
#adm-content.adm-fade-in .bh-tbl-wrap,
#adm-content.adm-fade-in .bh-chart-card{ opacity:0; animation:appleCardCascade .5s cubic-bezier(.16,1,.3,1) both; }
#adm-content.adm-fade-in .bh-kpi:nth-child(1),#adm-content.adm-fade-in .adm-mailcard:nth-child(1){ animation-delay:.03s; }
#adm-content.adm-fade-in .bh-kpi:nth-child(2),#adm-content.adm-fade-in .adm-mailcard:nth-child(2){ animation-delay:.08s; }
#adm-content.adm-fade-in .bh-kpi:nth-child(3),#adm-content.adm-fade-in .adm-mailcard:nth-child(3){ animation-delay:.13s; }
#adm-content.adm-fade-in .bh-kpi:nth-child(4){ animation-delay:.18s; }
#adm-content.adm-fade-in .bh-kpi:nth-child(5){ animation-delay:.23s; }
#adm-content.adm-fade-in .bh-kpi:nth-child(6){ animation-delay:.28s; }
@media (prefers-reduced-motion: reduce){ #adm-content.adm-fade-in > *, #adm-content.adm-fade-in .bh-kpi, #adm-content.adm-fade-in .adm-mailcard, #adm-content.adm-fade-in .adm-stub-card, #adm-content.adm-fade-in .adm-settings-card, #adm-content.adm-fade-in .bh-tbl-wrap, #adm-content.adm-fade-in .bh-chart-card{ animation:none; opacity:1; } }
.adm-stub-card{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:14px; padding:30px 26px; text-align:center; color:#9aa8bd; max-width:620px; margin:24px auto; }
.adm-stub-card h3{ color:var(--text,#e8edf5); margin:0 0 8px; font-size:18px; }
.adm-stub-card p{ font-size:14px; line-height:1.6; margin:0; }
.adm-quick{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:16px; }
.adm-quick .adm-btn-ghost{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; min-width:104px; padding:16px 12px; border-radius:13px; font-size:12.5px; }
.adm-quick .adm-btn-ghost:hover{ border-color:#e30613; background:#1c1620; box-shadow:0 8px 22px rgba(227,6,19,.18); }
body.admin-console .bh-tabs{ display:none; }
body.admin-console #view-admin .view-header{ display:none; }
@media(max-width:760px){ #adm-main{ flex-direction:column; } #adm-nav{ flex-basis:auto; flex-direction:row; overflow-x:auto; padding:8px; } .adm-nav-item{ white-space:nowrap; width:auto; } #adm-content{ padding:14px; } .adm-email{ display:none; } }

/* ===== Adminconsole-panels (Overzicht/Mail/Security/Support/Instellingen/Feedback) ===== */
a.adm-btn-ghost{ text-decoration:none; display:inline-block; }
.adm-loading{ color:var(--text-3,#8b97ad); font-size:14px; padding:24px 4px; }
.adm-quick{ display:flex; flex-wrap:wrap; gap:8px; }
.adm-quick-left{ justify-content:flex-start; }
.adm-att-btn{ text-align:left; cursor:pointer; font-family:inherit; }
.adm-att-btn:hover{ border-color:#4ea1ff; }
.adm-mailgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.adm-mailcard{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:13px; padding:16px; display:flex; flex-direction:column; gap:8px; transition:transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.adm-mailcard:hover{ transform:translateY(-2px); border-color:#2a3548; box-shadow:0 10px 26px rgba(0,0,0,.28); }
.adm-mailhd{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.adm-mailaddr{ font-size:14.5px; font-weight:700; color:var(--text,#e8edf5); word-break:break-all; }
.adm-mailfn{ font-size:12.5px; color:var(--text-2,#9aa8bd); line-height:1.5; }
.adm-mailenv{ font-size:11.5px; color:var(--text-3,#8b97ad); font-family:ui-monospace,Menlo,Consolas,monospace; }
.adm-mailflow{ font-size:11.5px; color:#bcd2ee; background:rgba(78,161,255,.07); border:1px solid rgba(78,161,255,.18); border-radius:8px; padding:7px 9px; line-height:1.5; }
.adm-mailact{ display:flex; flex-wrap:wrap; gap:8px; margin-top:auto; padding-top:4px; }
.adm-compose{ display:flex; flex-direction:column; gap:8px; margin:4px 0; padding:12px; background:rgba(255,255,255,.02); border:1px solid var(--border,#1f2937); border-radius:10px; }
.adm-compose-input{ width:100%; box-sizing:border-box; background:#0e1726; border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:8px; padding:8px 10px; font-size:13px; font-family:inherit; }
.adm-compose-input:focus{ outline:none; border-color:#4ea1ff; }
.adm-compose-msg{ resize:vertical; min-height:90px; line-height:1.5; }
.adm-btn-primary{ border-color:#4ea1ff; background:rgba(78,161,255,.12); font-weight:700; }
.adm-btn-primary:hover{ background:rgba(78,161,255,.2); }
.adm-mailtabs{ display:flex; gap:6px; margin-top:4px; }
.adm-tab{ background:#1a2436; border:1px solid var(--border,#1f2937); color:var(--text-2,#9aa8bd); border-radius:8px; padding:6px 10px; font-size:12px; cursor:pointer; transition:border-color .2s ease, color .2s ease; }
.adm-tab:hover{ border-color:#4ea1ff; color:var(--text,#e8edf5); }
.adm-tab-active{ border-color:#4ea1ff; color:var(--text,#e8edf5); background:rgba(78,161,255,.1); }
.adm-mailinbox{ margin-top:4px; display:flex; flex-direction:column; gap:6px; max-height:260px; overflow-y:auto; }
.adm-mail-row{ display:grid; grid-template-columns:1fr; gap:2px; padding:7px 9px; border:1px solid var(--border,#1f2937); border-radius:8px; background:rgba(255,255,255,.02); font-size:12px; }
.adm-mail-row.adm-mail-unread{ border-color:rgba(78,161,255,.35); background:rgba(78,161,255,.06); }
.adm-mail-from{ font-weight:700; color:var(--text,#e8edf5); }
.adm-mail-subj{ color:var(--text-2,#9aa8bd); }
.adm-mail-date{ color:var(--text-3,#8b97ad); font-size:11px; }
.adm-settings-card{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:13px; padding:6px 16px; max-width:640px; }
.adm-settings-card .bh-card-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; border-top:1px solid #16202f; font-size:13.5px; }
.adm-settings-card .bh-card-row:first-child{ border-top:none; }
.adm-settings-card .bh-card-row span{ color:var(--text-2,#9aa8bd); }
.adm-settings-card .bh-card-row b{ color:var(--text,#e8edf5); text-align:right; }
@media(max-width:900px){ .adm-mailgrid{ grid-template-columns:1fr; } }
/* ── Mailcentrum 3-koloms ───────────────────────────────────────────── */
.adm-mb3-wrap{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:13px; overflow:hidden; }
.adm-mb3-tabs{ display:flex; gap:6px; padding:10px 12px; border-bottom:1px solid var(--border,#1f2937); flex-wrap:wrap; }
.adm-mb-tab{ background:#1a2436; border:1px solid var(--border,#1f2937); color:var(--text-2,#9aa8bd); border-radius:9px; padding:8px 14px; font-size:13px; font-weight:600; cursor:pointer; transition:border-color .2s,color .2s,background .2s; }
.adm-mb-tab:hover{ border-color:#4ea1ff; color:var(--text,#e8edf5); }
.adm-mb-tab-active{ border-color:#4ea1ff; color:var(--text,#e8edf5); background:rgba(78,161,255,.12); }
.adm-mb3-body{ display:grid; grid-template-columns:140px 260px 1fr; min-height:540px; }
.adm-mb3-body-wide{ grid-template-columns:140px 1fr; }
.adm-mb3-body-wide .adm-mb3-list{ display:none; }
.adm-mb3-side{ display:flex; flex-direction:column; gap:2px; padding:10px 8px; border-right:1px solid var(--border,#1f2937); }
.adm-mb-side{ background:transparent; border:1px solid transparent; color:var(--text-2,#9aa8bd); border-radius:8px; padding:8px 10px; font-size:12.5px; text-align:left; cursor:pointer; text-decoration:none; display:block; transition:background .15s,color .15s; white-space:nowrap; }
.adm-mb-side:hover{ background:rgba(255,255,255,.04); color:var(--text,#e8edf5); }
.adm-mb-side-active{ background:rgba(78,161,255,.12); color:var(--text,#e8edf5); font-weight:700; }
.adm-mb3-list{ border-right:1px solid var(--border,#1f2937); overflow-y:auto; display:flex; flex-direction:column; }
.adm-mb3-list-hd{ padding:10px 12px 6px; font-size:11px; font-weight:700; color:var(--text-3,#8b97ad); text-transform:uppercase; letter-spacing:.06em; border-bottom:1px solid var(--border,#1f2937); display:flex; align-items:center; gap:6px; }
.adm-mb3-selbar{ padding:7px 12px; background:rgba(78,161,255,.08); border-bottom:1px solid var(--border,#1f2937); font-size:11.5px; color:var(--text-2,#9aa8bd); display:flex; align-items:center; gap:8px; }
.adm-mb3-selbar .adm-btn-ghost{ padding:4px 9px; font-size:11px; }
.adm-mb3-count{ background:rgba(78,161,255,.12); color:#4ea1ff; border-radius:10px; padding:1px 7px; font-size:11px; font-weight:600; }
.adm-mb3-row{ padding:10px 12px; border-bottom:1px solid var(--border,#1f2937); border-left:3px solid transparent; cursor:pointer; transition:background .18s ease, box-shadow .18s ease; }
.adm-mb3-row:hover{ background:rgba(78,161,255,.06); }
.adm-mb3-row-active{ background:rgba(78,161,255,.13) !important; }
.adm-mb3-unread .adm-mb3-row-from{ font-weight:800; color:var(--text,#e8edf5); }
.adm-mb3-unread{ border-left-color:#f5a623; background:linear-gradient(90deg, rgba(245,166,35,.16), rgba(245,166,35,.02) 65%); box-shadow:inset 0 0 26px -6px rgba(245,166,35,.4); }
.adm-mb3-read{ border-left-color:#2fbf71; background:linear-gradient(90deg, rgba(47,191,113,.12), rgba(47,191,113,.02) 65%); box-shadow:inset 0 0 26px -6px rgba(47,191,113,.28); }
.adm-mb3-row-from{ font-size:12.5px; font-weight:600; color:var(--text,#e8edf5); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adm-mb3-row-subj{ font-size:12px; color:var(--text-2,#9aa8bd); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:2px; }
.adm-mb3-row-date{ font-size:11px; color:var(--text-3,#8b97ad); margin-top:3px; }
.adm-mb3-detail{ overflow-y:auto; display:flex; flex-direction:column; }
.adm-mb3-empty{ display:flex; align-items:center; justify-content:center; height:100%; color:var(--text-3,#8b97ad); font-size:13px; padding:24px; }
.adm-mb3-detail-inner{ display:flex; flex-direction:column; height:100%; }
.adm-mb3-detail-hd{ padding:16px 18px 14px; border-bottom:1px solid var(--border,#1f2937); flex-shrink:0; }
.adm-mb3-detail-subj{ font-size:16px; font-weight:700; color:var(--text,#e8edf5); margin-bottom:8px; line-height:1.35; }
.adm-mb3-detail-meta{ display:flex; flex-wrap:wrap; gap:6px 18px; font-size:12px; color:var(--text-2,#9aa8bd); margin-bottom:10px; }
.adm-mb3-detail-meta b{ color:var(--text,#e8edf5); }
.adm-mb3-detail-acts{ display:flex; gap:8px; flex-wrap:wrap; }
.adm-mb3-detail-body{ flex:1; padding:16px 18px; margin:0; font-size:13.5px; line-height:1.7; white-space:pre-wrap; word-break:break-word; color:var(--text,#e8edf5); font-family:inherit; background:transparent; border:none; overflow-y:auto; }
.adm-mb3-compose{ padding:16px 18px; display:flex; flex-direction:column; gap:10px; height:100%; box-sizing:border-box; }
.adm-mb3-compose-hd{ font-size:13px; font-weight:600; color:var(--text-2,#9aa8bd); }
.adm-mb3-compose-msg{ flex:1; min-height:200px; resize:none; }
.adm-mb3-compose-from{ font-size:.82rem; color:var(--text-2,#9aa8bd); padding:8px 0; border-bottom:1px solid var(--border,#1f2937); margin-bottom:2px; }
/* Toolbar (reply/forward/nieuw knoppen boven maildetail) */
.adm-mb3-toolbar{ display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }
.adm-tb-btn{ background:#1a2436; border:1px solid var(--border,#1f2937); color:var(--text-2,#9aa8bd); border-radius:7px; padding:6px 13px; font-size:12.5px; cursor:pointer; transition:all .15s; font-family:inherit; }
.adm-tb-btn:hover{ background:rgba(78,161,255,.08); color:var(--text,#e8edf5); border-color:#4ea1ff; }
.adm-tb-btn-primary{ border-color:#4ea1ff; background:rgba(78,161,255,.12); color:var(--text,#e8edf5); font-weight:700; }
.adm-tb-btn-danger{ margin-left:auto; }
.adm-tb-btn-danger:hover{ background:rgba(248,113,113,.12); color:#fca5a5; border-color:#f87171; }
/* Berichtenrij: from+date op 1 lijn, preview-snippet */
.adm-mb3-row-top{ display:flex; justify-content:space-between; align-items:baseline; gap:6px; }
.adm-mb3-row-date{ font-size:11px; color:var(--text-3,#8b97ad); flex-shrink:0; }
.adm-mb3-row-preview{ font-size:.74rem; color:var(--text-3,#8b97ad); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-top:2px; }
/* Zoekbalk boven berichtenlijst */
.adm-mb-search-wrap{ padding:6px 8px; border-bottom:1px solid var(--border,#1f2937); }
/* Badges (ongelezen teller / concept teller) */
.adm-mb-badge{ background:#ef4444; color:#fff; border-radius:999px; font-size:.68rem; padding:1px 5px; margin-left:4px; font-weight:700; display:inline-block; line-height:1.4; vertical-align:middle; }
.adm-mb-badge-grey{ background:#374151; }
/* Sidebar icoon */
.adm-mb-side-icon{ display:inline-block; width:16px; text-align:center; margin-right:5px; opacity:.75; }
/* Nieuwsbrief 2-koloms layout */
.adm-nl-wrap{ display:grid; grid-template-columns:200px 1fr; gap:0; min-height:400px; }
.adm-nl-col-left{ padding:14px 12px; border-right:1px solid var(--border,#1f2937); overflow-y:auto; }
.adm-nl-col-right{ padding:14px 18px; overflow-y:auto; display:flex; flex-direction:column; gap:6px; }
.adm-nl-section-hd{ font-size:10.5px; font-weight:700; color:var(--text-3,#8b97ad); text-transform:uppercase; letter-spacing:.06em; margin-bottom:10px; }
.adm-nl-flabel{ font-size:11px; color:var(--text-3,#8b97ad); margin-bottom:3px; }

/* Nieuwsbrief: sjabloon-voorbeeld op de pagina */
.adm-nl-preview-hd{ display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
.adm-nl-preview-status{ font-size:11px; color:#f87171; }
.adm-nl-preview-frame{ width:100%; border:1px solid #1e2d45; border-radius:10px; background:#0d1520; }
.adm-nl-preview-frame-page{ height:520px; }

@media (max-width: 760px){
  .adm-nl-preview-frame-page{ height:400px; }
}
.adm-nl-subs-list{ display:flex; flex-direction:column; gap:3px; }
.adm-nl-sub-row{ position:relative; display:flex; flex-direction:column; padding:5px 30px 5px 8px; background:rgba(255,255,255,.03); border-radius:6px; }
.adm-nl-sub-name{ font-size:.82rem; font-weight:600; color:var(--text,#e8edf5); }
.adm-nl-sub-email{ font-size:.74rem; color:var(--text-2,#9aa8bd); }
.adm-nl-sub-remove{ position:absolute; top:50%; right:6px; transform:translateY(-50%); width:20px; height:20px; line-height:18px; text-align:center; padding:0; border:1px solid var(--border,#1f2937); border-radius:5px; background:transparent; color:var(--text-3,#8b97ad); font-size:.72rem; cursor:pointer; }
.adm-nl-sub-remove:hover{ color:#f87171; border-color:#f87171; }
.adm-nl-sub-more{ font-size:.76rem; color:var(--text-3,#8b97ad); padding:4px 0; }
.adm-nl-saved-note{ font-size:.76rem; color:#4ea1ff; }
.adm-nl-autosend{ margin:6px 0; padding:10px 12px; background:rgba(255,255,255,.02); border-radius:8px; border:1px solid var(--border,#1f2937); }
.adm-nl-toggle{ display:flex; align-items:center; gap:8px; cursor:pointer; font-size:.84rem; color:var(--text,#e8edf5); }
.adm-nl-toggle input[type=checkbox]{ width:16px; height:16px; accent-color:#4ea1ff; cursor:pointer; flex-shrink:0; }
.adm-nl-next{ font-size:.77rem; color:#4ade80; margin-top:6px; }
@media(max-width:760px){ .adm-nl-wrap{ grid-template-columns:1fr; } .adm-nl-col-left{ border-right:none; border-bottom:1px solid var(--border,#1f2937); } }
@media(max-width:900px){
  .adm-mb3-body{ grid-template-columns:120px 1fr; grid-template-rows:auto 1fr; }
  .adm-mb3-list{ border-right:none; border-bottom:1px solid var(--border,#1f2937); max-height:220px; }
  .adm-mb3-detail{ grid-column:1/-1; }
}
@media(max-width:600px){
  .adm-mb3-body{ grid-template-columns:1fr; }
  .adm-mb3-side{ flex-direction:row; overflow-x:auto; border-right:none; border-bottom:1px solid var(--border,#1f2937); }
  .adm-mb-side{ white-space:nowrap; }
  .adm-mb3-list{ max-height:180px; }
}
/* Oudere stijlen bewaren voor achterwaartse compatibiliteit */
.adm-mailbox-app{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:13px; overflow:hidden; }
.adm-mail-detail{ margin-top:14px; background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:12px; overflow:hidden; }
.adm-mail-detail-hd{ padding:14px 16px; border-bottom:1px solid var(--border,#1f2937); }
.adm-mail-detail-subj{ font-size:15px; font-weight:700; color:var(--text,#e8edf5); margin-bottom:8px; }
.adm-mail-detail-meta{ display:flex; flex-wrap:wrap; gap:10px 20px; font-size:12.5px; color:var(--text-2,#9aa8bd); }
.adm-mail-detail-meta b{ color:var(--text,#e8edf5); }
.adm-mail-detail-body{ padding:16px; margin:0; font-size:13.5px; line-height:1.65; white-space:pre-wrap; word-break:break-word; color:var(--text,#e8edf5); font-family:inherit; background:transparent; border:none; max-height:600px; overflow-y:auto; }
@media(max-width:760px){ .adm-mailbox-body{ flex-direction:column; } .adm-mailbox-side{ flex-direction:row; flex-basis:auto; overflow-x:auto; border-right:none; border-bottom:1px solid var(--border,#1f2937); } .adm-mb-side{ white-space:nowrap; } }
.bh-ud-counts{ margin:2px 0 6px; }
.bh-ud-counts .bh-card-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:7px 0; font-size:13px; }
.bh-ud-counts .bh-card-row span{ color:var(--text-2,#9aa8bd); }
.bh-ud-counts .bh-card-row b{ color:var(--text,#e8edf5); font-variant-numeric:tabular-nums; }
.bh-list-count{ font-size:12px; color:var(--text-3,#8b97ad); margin:0 0 8px; }
.bh-more-wrap{ text-align:center; margin:12px 0 4px; }
.adm-fb-list{ display:flex; flex-direction:column; gap:10px; margin-top:10px; }
.adm-fb-card{ background:var(--panel,#0b1220); border:1px solid var(--border,#1f2937); border-radius:12px; padding:14px 16px; }
.adm-fb-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.adm-fb-meta{ font-size:11.5px; color:var(--text-3,#8b97ad); }
.adm-fb-text{ font-size:14px; line-height:1.55; color:var(--text,#e8edf5); white-space:pre-wrap; margin:8px 0; }
.adm-fb-note{ font-size:12.5px; color:#f4c66a; background:rgba(245,158,11,.08); border:1px solid rgba(245,158,11,.2); border-radius:8px; padding:7px 10px; margin:0 0 8px; }
.adm-fb-act{ display:flex; gap:8px; align-items:center; }
.adm-fb-status{ max-width:170px; }
/* E3c — support pointer (live aanwijzen) */
#su-env-card{ position:relative; }
.su-ptr{ position:absolute; z-index:5; pointer-events:none; transition:left .08s linear, top .08s linear; }
.su-ptr-dot{ display:block; width:14px; height:14px; border-radius:50%; background:#e30613; border:2px solid #fff; box-shadow:0 1px 5px rgba(0,0,0,.55); }
.su-ptr-lbl{ position:absolute; left:17px; top:-1px; font-size:10px; font-weight:800; color:#fff; background:#e30613; border-radius:4px; padding:1px 5px; white-space:nowrap; }
.su-ripple{ position:absolute; z-index:4; width:12px; height:12px; margin:-6px 0 0 -6px; border-radius:50%; background:rgba(227,6,19,.5); pointer-events:none; animation:su-rip .6s ease-out forwards; }
@keyframes su-rip{ 0%{ transform:scale(1); opacity:.75; } 100%{ transform:scale(5); opacity:0; } }
/* E4a — action-bar (full_control) + nav-flash */
.su-act{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:8px 12px; border-bottom:1px solid var(--border,#1f2937); background:rgba(245,158,11,.06); }
.su-act:empty{ display:none; }
.su-act-l{ font-size:11px; color:var(--text-3,#8b97ad); text-transform:uppercase; letter-spacing:.04em; margin:0 2px 0 6px; }
.su-act-btn{ background:#1a2436; border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:7px; padding:5px 10px; font-size:12px; cursor:pointer; font-family:inherit; }
.su-act-btn:hover{ border-color:#f59e0b; }
.su-act-btn.ghost{ background:none; color:var(--text-2,#9aa8bd); }
.su-ro-click{ cursor:pointer; }
.su-ro-click:hover{ background:rgba(245,158,11,.1); }
.su-nav-flash{ border-radius:8px; animation:su-flash 1.8s ease-out; }
@keyframes su-flash{ 0%,100%{ box-shadow:none; } 20%,60%{ box-shadow:0 0 0 3px rgba(227,6,19,.6); background:rgba(227,6,19,.12); } }
/* E4b — formulier-voorstel controls */
.su-act-row2{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; width:100%; margin-top:6px; padding-top:6px; border-top:1px dashed var(--border,#1f2937); }
.su-act-sel,.su-act-in{ background:#0e1626; border:1px solid var(--border,#1f2937); color:var(--text,#e8edf5); border-radius:7px; padding:5px 9px; font-size:12px; font-family:inherit; }
.su-act-in{ min-width:160px; }
.su-suggest-flash{ box-shadow:0 0 0 2px rgba(245,158,11,.8) !important; transition:box-shadow .3s; }
.sh-req-msg{ display:none; font-size:13px; margin:4px 0 8px; padding:8px 11px; border-radius:0 8px 8px 0; line-height:1.4; }
.sh-req-msg.show{ display:block; }
.sh-req-msg.error{ background:rgba(248,113,113,.12); border-left:3px solid var(--bad,#f87171); color:#fca5a5; }


/* ============================================================
   FASE 2 — Beheer-module (admin dashboard). Dark theme, mobiel/PWA.
   ============================================================ */
.bh-denied{ padding:24px; text-align:center; color:var(--text-2,#9aa8bd); background:#0b1220; border:1px solid #1f2937; border-radius:10px; }
.bh-tabs{ display:flex; gap:8px; margin-bottom:16px; flex-wrap:wrap; }
.bh-tab{ padding:9px 16px; border-radius:8px; background:#1f2937; color:#e5e7eb; cursor:pointer; border:1px solid #374151; font-size:14px; min-height:44px; }
.bh-tab.active{ background:#4ea1ff; color:#06223f; border-color:#4ea1ff; font-weight:700; }
.bh-section{ display:none; }
.bh-section.active{ display:block; }
.bh-filters{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.bh-filter{ padding:7px 14px; border-radius:999px; background:#0e1626; color:#9aa8bd; border:1px solid #1f2937; cursor:pointer; font-size:13px; min-height:40px; }
.bh-filter.active{ background:rgba(78,161,255,.14); color:#e8edf5; border-color:#4ea1ff; }
.bh-toolbar{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.bh-search{ flex:1 1 200px; min-width:0; background:#0e1626; border:1px solid #1f2937; color:#e8edf5; border-radius:8px; padding:10px 12px; font-size:14px; min-height:44px; box-sizing:border-box; }
.bh-search:focus{ outline:none; border-color:#4ea1ff; }
.bh-select{ background:#0e1626; border:1px solid #1f2937; color:#e8edf5; border-radius:8px; padding:10px 12px; font-size:14px; min-height:44px; }
.bh-empty{ color:#9aa8bd; padding:28px 16px; text-align:center; font-size:14px; background:#0b1220; border:1px solid #1f2937; border-radius:10px; }
.bh-card{ background:#0b1220; border:1px solid #1f2937; border-radius:10px; padding:14px 16px; margin-bottom:12px; }
.bh-card-top{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
.bh-card-name{ font-weight:700; font-size:15px; color:#e8edf5; }
.bh-card-org{ font-weight:400; font-size:.82rem; color:#64748b; }
.adm-mb3-attach{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:8px 12px; background:#1a2535; border-radius:6px; margin-bottom:10px; font-size:.82rem; }
.adm-mb3-attach-lbl{ color:#64748b; font-weight:600; }
.adm-mb3-attach-item{ background:#1e3a5f; color:#4ea1ff; border-radius:999px; padding:3px 10px; }
.bh-card-row{ display:flex; gap:10px; font-size:13.5px; padding:3px 0; color:#cdd6e4; }
.bh-card-row span{ flex:0 0 110px; color:#8b97ad; }
.bh-card-row b{ font-weight:600; word-break:break-word; }
.bh-badge{ display:inline-block; padding:3px 10px; border-radius:999px; font-size:11.5px; font-weight:700; text-transform:capitalize; }
.bh-b-orange{ background:rgba(251,191,36,.16); color:#fcd34d; }
.bh-b-green{ background:rgba(52,211,153,.16); color:#6ee7b7; }
.bh-b-red{ background:rgba(248,113,113,.16); color:#fca5a5; }
.bh-b-blue{ background:rgba(78,161,255,.16); color:#93c5fd; }
.bh-b-purple{ background:rgba(167,139,250,.18); color:#c4b5fd; }
.bh-b-grey{ background:#1f2937; color:#9aa8bd; }
.bh-actions{ display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.bh-meta{ margin-top:10px; font-size:12.5px; color:#8b97ad; }
.bh-urow{ display:flex; align-items:center; gap:12px; padding:8px 12px; border:1px solid #1f2937; border-radius:8px; margin-bottom:6px; background:#0b1220; flex-wrap:wrap; }
.bh-urow:hover{ border-color:#2a3646; }
.bh-urow-dim{ opacity:.55; }
.bh-urow-main{ flex:1 1 220px; min-width:180px; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.bh-urow-name{ font-weight:700; font-size:13.5px; color:#e8edf5; white-space:nowrap; }
.bh-urow-email{ font-size:12px; color:#8b97ad; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bh-urow-meta{ flex:0 0 auto; font-size:11.5px; color:#64748b; white-space:nowrap; }
.bh-urow-badges{ display:flex; gap:5px; flex:0 0 auto; }
.bh-urow-actions{ display:flex; gap:6px; flex-wrap:wrap; flex:0 0 auto; margin-left:auto; }
.bh-btn-xs{ padding:5px 10px; font-size:12px; min-height:30px; }
.bh-btn{ background:#1f2937; border:1px solid #374151; color:#e8edf5; border-radius:8px; padding:9px 14px; font-size:13.5px; cursor:pointer; min-height:44px; }
.bh-btn:hover{ border-color:#4ea1ff; }
.bh-btn:disabled{ opacity:.5; cursor:not-allowed; }
.bh-btn-green{ background:#34d399; color:#06251a; border-color:#34d399; font-weight:700; }
.bh-btn-blue{ background:#4ea1ff; color:#06223f; border-color:#4ea1ff; font-weight:700; }
.bh-btn-red{ background:#f87171; color:#2a0a0a; border-color:#f87171; font-weight:700; }
.bh-btn-ghost{ background:none; }
.bh-btn-active{ background:#4ea1ff; color:#06223f; border-color:#4ea1ff; font-weight:700; }
.bh-modal-card{ max-width:420px; text-align:left; position:relative; }
.bh-modal-body{ font-size:14px; color:#cdd6e4; line-height:1.5; }
.bh-modal-actions{ display:flex; gap:8px; margin-top:16px; }
.bh-modal-actions .bh-btn{ flex:1; }
.bh-modal-note{ margin-top:12px; font-size:12px; color:#8b97ad; line-height:1.5; }
.bh-role-pick{ display:flex; flex-direction:column; gap:8px; }
.bh-role-pick .bh-btn{ text-transform:capitalize; width:100%; }
.bh-detail .bh-card-row{ border-bottom:1px solid #14202f; }

/* Fase 3 — eenmalige e-mailverificatie-banner (Beheer) */
.bh-verify{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; justify-content:space-between; background:rgba(251,191,36,.10); border:1px solid rgba(251,191,36,.35); border-radius:10px; padding:12px 14px; margin-bottom:14px; }
.bh-verify-txt{ font-size:13.5px; color:#fcd34d; line-height:1.5; flex:1 1 240px; }
.bh-verify .bh-btn{ flex:0 0 auto; }


/* ============================================================
   FASE 4 — Support mode (banner + read-only paneel)
   ============================================================ */
.bh-btn-amber{ background:#f59e0b; color:#111827; border-color:#f59e0b; font-weight:700; }
.su-banner{ position:fixed; left:0; right:0; bottom:0; z-index:9000; display:flex; align-items:center; gap:12px; flex-wrap:wrap; justify-content:center; background:#7c2d12; color:#ffedd5; border-top:2px solid #f59e0b; padding:10px 16px; padding-bottom:calc(10px + env(safe-area-inset-bottom,0px)); font-size:13.5px; box-shadow:0 -4px 18px rgba(0,0,0,.4); }
.su-banner-ic{ font-size:16px; }
.su-banner-txt{ flex:1 1 auto; min-width:0; }
.su-banner-actions{ display:flex; gap:8px; flex:0 0 auto; }
.su-banner-btn{ background:#f59e0b; color:#111827; border:none; border-radius:8px; padding:8px 14px; font-size:13px; font-weight:700; cursor:pointer; min-height:40px; }
.su-banner-btn.ghost{ background:transparent; color:#ffedd5; border:1px solid #f59e0b; }
.su-ro-note{ background:rgba(245,158,11,.12); border:1px solid rgba(245,158,11,.35); color:#fcd34d; border-radius:8px; padding:8px 12px; font-size:12.5px; margin-bottom:12px; }
.su-ro-stats{ display:flex; gap:10px; margin-bottom:14px; }
.su-ro-stat{ flex:1; background:#0e1626; border:1px solid #1f2937; border-radius:8px; padding:10px; text-align:center; }
.su-ro-stat b{ display:block; font-size:20px; color:#e8edf5; }
.su-ro-stat span{ font-size:11.5px; color:#8b97ad; }
.su-ro-h{ font-weight:700; color:#9aa8bd; font-size:13px; margin:12px 0 6px; }
.su-ro-list{ display:flex; flex-direction:column; gap:6px; }
.su-ro-row{ display:flex; justify-content:space-between; gap:10px; background:#0b1220; border:1px solid #1f2937; border-radius:8px; padding:8px 10px; font-size:13px; }
.su-ro-row b{ color:#e8edf5; }
.su-ro-row span{ color:#8b97ad; }
.su-ro-more{ color:#8b97ad; font-size:12px; padding:6px 2px; }


/* ============================================================
   FASE 5 — Role-based onboarding (fullscreen)
   ============================================================ */
.sh-onb{ position:fixed; inset:0; z-index:9500; background:radial-gradient(1000px 500px at 50% -10%, #11203a 0%, #0a1019 60%), #0a1019; display:flex; align-items:center; justify-content:center; padding:20px; padding-top:calc(20px + env(safe-area-inset-top,0px)); padding-bottom:calc(20px + env(safe-area-inset-bottom,0px)); overflow-y:auto; }
.sh-onb-card{ width:100%; max-width:440px; background:#0b1220; border:1px solid #1f2937; border-radius:16px; padding:26px 22px 20px; box-shadow:0 16px 60px rgba(0,0,0,.5); }
.sh-onb-prog{ font-size:12px; color:#8b97ad; font-weight:700; letter-spacing:.5px; margin-bottom:14px; text-align:center; }
.sh-onb-body{ min-height:220px; }
.sh-onb-body h2{ margin:0 0 8px; font-size:21px; color:#e8edf5; }
.sh-onb-body p{ margin:0 0 12px; font-size:14.5px; line-height:1.6; color:#9aa8bd; }
.sh-onb-ic{ font-size:44px; line-height:1; margin-bottom:10px; }
.sh-onb-role{ margin-top:14px; font-size:14px; color:#9aa8bd; }
.sh-onb-actions{ display:flex; flex-direction:column; gap:10px; margin:10px 0 6px; }
.sh-onb-actions .bh-btn{ width:100%; }
.sh-onb-skip-note{ font-size:12px; color:#8b97ad; text-align:center; margin-top:4px; }
.sh-onb-nav{ display:flex; gap:10px; margin-top:18px; }
.sh-onb-nav .bh-btn{ flex:1; }
body.sh-onb-open{ overflow:hidden; }


/* ============================================================
   FASE 4 FINAL — user-banner, env-paneel, verplichte-reden
   ============================================================ */
.su-req-star{ color:#f87171; font-weight:800; }
.su-field-err{ display:none; color:#fca5a5; font-size:12.5px; margin:4px 0 2px; }
.su-input-err{ border-color:#f87171 !important; }
/* Gebruiker-banner bovenaan (admin-banner blijft onderaan) */
.su-banner-user{ top:0; bottom:auto; border-top:none; border-bottom:2px solid #f59e0b; padding-top:calc(10px + env(safe-area-inset-top,0px)); padding-bottom:10px; box-shadow:0 4px 18px rgba(0,0,0,.4); }
/* Volledige read-only omgeving */
.su-env{ position:fixed; inset:0; z-index:9200; background:rgba(4,8,14,.92); backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); display:flex; align-items:center; justify-content:center; padding:16px; padding-top:calc(16px + env(safe-area-inset-top,0px)); padding-bottom:calc(60px + env(safe-area-inset-bottom,0px)); }
.su-env-card{ width:100%; max-width:560px; max-height:100%; display:flex; flex-direction:column; background:#0b1220; border:1px solid #f59e0b; border-radius:14px; overflow:hidden; box-shadow:0 16px 60px rgba(0,0,0,.6); }
.su-env-top{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:14px 16px; border-bottom:1px solid #1f2937; }
.su-env-title{ font-weight:700; font-size:15px; color:#e8edf5; }
.su-env-ro{ font-size:11px; color:#111827; background:#f59e0b; border-radius:999px; padding:2px 8px; margin-left:6px; font-weight:700; }
.su-env-tabs{ display:flex; gap:6px; overflow-x:auto; padding:10px 14px; border-bottom:1px solid #1f2937; }
.su-env-tab{ flex:0 0 auto; padding:8px 13px; border-radius:8px; background:#1f2937; color:#9aa8bd; border:1px solid #374151; font-size:13px; cursor:pointer; min-height:40px; }
.su-env-tab.active{ background:#4ea1ff; color:#06223f; border-color:#4ea1ff; font-weight:700; }
.su-env-body{ overflow-y:auto; padding:14px 16px; }


/* Fase 4 — Supportlogboek */
.bh-audit-head{ font-size:13px; color:#9aa8bd; margin-bottom:12px; }
.bh-audit-card{ margin-bottom:10px; }


/* Fase 4 — Logboek per sessie (tijdlijn) */
.bh-sess-card{ margin-bottom:12px; }
.bh-tl{ margin-top:10px; border-top:1px solid #14202f; padding-top:8px; display:flex; flex-direction:column; gap:4px; }
.bh-tl-row{ display:flex; align-items:center; gap:10px; font-size:13px; color:#cdd6e4; padding:2px 0; }
.bh-tl-t{ flex:0 0 46px; color:#8b97ad; font-variant-numeric:tabular-nums; font-size:12.5px; }
.bh-tl-ic{ flex:0 0 18px; text-align:center; }
.bh-tl-lbl{ flex:1 1 auto; }


/* PWA fix: iOS auto-zoom voorkomen op obs/live-wedstrijd inputs.
   font-size < 16px laat iOS Safari inzoomen bij focus -> viewport springt.
   16px op touch-schermen lost de scroll-jump op; desktop blijft ongemoeid. */
@media (max-width: 860px){
  .obs-term-in,
  .sa-snel-term-input,
  .sn-edit-term-in,
  #obs-form input,
  #obs-form select,
  #obs-form textarea,
  .obs-block-note,
  .obs-in {
    font-size: 16px !important;
  }
}


/* ============================================================
   LIVE WEDSTRIJD — PWA stabilisatie (close-knop + action bar)
   Autoritatief blok onderaan zodat het de eerdere obs-modal regels
   overschrijft, ongeacht welke variant geladen is.
   ============================================================ */
.obs-modal-header{ position: sticky; top: 0; z-index: 6; background: var(--bg-card,#1a1e2e); }
.obs-modal-close{
  width:44px; height:44px; min-width:44px; display:flex; align-items:center; justify-content:center;
  font-size:26px; line-height:1; padding:0; flex-shrink:0; position:relative; z-index:7;
  pointer-events:auto; cursor:pointer; -webkit-tap-highlight-color:transparent;
}
.obs-actions{
  position: sticky; bottom: 0; background: var(--bg-card,#1a1e2e);
  padding-top:12px; padding-bottom: calc(12px + env(safe-area-inset-bottom,0px));
  gap:10px; z-index:6;
}
@media (max-width:860px){
  .obs-actions{ flex-wrap: wrap; }
  .obs-actions > button, .obs-actions > .btn{ flex:1 1 0; min-height:44px; }
  /* Verwijderen bovenaan het actie-blok (order:-1) i.p.v. als afgekapte
     onderste rij; Annuleren + Opslaan blijven onderaan gepind & zichtbaar. */
  .obs-actions > #obs-delete-btn{ flex:1 1 100%; margin-right:0 !important; order:-1; }
}

/* Toernooi wedstrijdklok (persistent: Aftrap/Herstart/Einde) */
.toern-timer{ display:flex; flex-direction:column; align-items:center; gap:8px; padding:12px; border-radius:12px; background:var(--panel-2,#1d2533); border:1px solid var(--border,#232d40); color:var(--text,#e8edf5); }
.toern-timer .sa-status-row{ justify-content:center; }
.toern-timer .sa-status{ font-size:13px; padding:5px 12px; }
.toern-timer-sub{ font-size:12px; font-weight:600; color:var(--muted,#93a0b5); font-variant-numeric:tabular-nums; }
.toern-timer-btns{ display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }
.toern-score-box{ display:flex; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; margin-bottom:14px; padding:12px 14px; border-radius:12px; background:var(--panel-2,#1d2533); border:1px solid var(--border,#232d40); }
.toern-score-label{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--muted,#93a0b5); }
.toern-score-pair{ display:flex; align-items:center; gap:10px; }
.toern-score-in{ width:58px; height:54px; text-align:center; font-size:26px; font-weight:800; font-variant-numeric:tabular-nums; border-radius:10px; border:1px solid var(--border,#2a3346); background:var(--panel,#141b27); color:var(--text,#e8edf5); }
.toern-score-in:focus{ outline:none; border-color:var(--accent,#3b82f6); }
.toern-score-dash{ font-size:24px; font-weight:700; color:var(--muted,#93a0b5); }
.toern-score-save{ margin-left:4px; }

/* Toernooi-overzicht op het live dashboard */
.toern-dash-card{ border-radius:14px; background:var(--panel-2,#1d2533); border:1px solid var(--border,#232d40); margin-bottom:14px; overflow:hidden; }
.toern-dash-card.has-live{ border-color:rgba(16,185,129,0.5); box-shadow:0 0 0 1px rgba(16,185,129,0.25); }
.toern-dash-head{ display:flex; align-items:center; gap:10px; padding:14px 16px; cursor:pointer; }
.toern-dash-title{ font-weight:800; font-size:15px; color:var(--text,#e8edf5); }
.toern-dash-sub{ font-size:12px; font-weight:600; color:var(--muted,#93a0b5); margin-left:auto; }
.toern-dash-toggle{ font-size:13px; color:var(--muted,#93a0b5); transition:transform .15s; }
.toern-dash-card.collapsed .toern-dash-toggle{ transform:rotate(-90deg); }
.toern-dash-card.collapsed .toern-dash-matches,
.toern-dash-card.collapsed .toern-dash-schema{ display:none; }
.toern-dash-matches{ display:flex; flex-direction:column; gap:6px; padding:0 12px 8px; }
.toern-dash-match{ display:flex; align-items:center; gap:12px; width:100%; text-align:left; padding:10px 12px; border-radius:10px; border:1px solid var(--border,#2a3346); background:var(--panel,#141b27); color:var(--text,#e8edf5); cursor:pointer; transition:background .12s,border-color .12s; }
.toern-dash-match:hover{ background:var(--panel-2,#1d2533); border-color:var(--accent,#3b82f6); }
.toern-dash-match.is-live{ border-color:rgba(16,185,129,0.55); background:rgba(16,185,129,0.06); }
.tdm-time{ font-weight:700; font-variant-numeric:tabular-nums; font-size:13px; color:var(--muted,#93a0b5); min-width:42px; }
.tdm-teams{ flex:1; font-weight:600; font-size:13.5px; }
.tdm-live{ font-size:11px; font-weight:700; color:#34d399; }
.tdm-done{ font-size:11px; font-weight:700; color:var(--muted,#93a0b5); }
.tdm-chev{ font-size:16px; color:var(--muted,#93a0b5); }
.toern-dash-schema{ display:block; width:calc(100% - 24px); margin:0 12px 12px; padding:9px; border-radius:9px; border:1px dashed var(--border,#2a3346); background:transparent; color:var(--accent,#60a5fa); font-weight:700; font-size:12.5px; cursor:pointer; }
.toern-dash-schema:hover{ background:rgba(96,165,250,0.08); }

/* Toernooi-observatie: voorkeursbeen-chips + notitieveld (geïnjecteerd) */
.tourn-footnote-block{ margin-top:14px; }
.tourn-fn-label{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--muted,#93a0b5); margin-bottom:6px; }
.tourn-foot-chips{ display:flex; gap:8px; flex-wrap:wrap; }
.obs-tag.tourn-foot{ cursor:pointer; }
.obs-tag.tourn-foot.active{ background:var(--green,#22c55e); border-color:var(--green,#22c55e); color:#04240f; font-weight:700; }
#tourn-obs-note{ width:100%; }

/* Wedstrijdnotities per club — bundeling-modal */
.clubnote-block{ border:1px solid var(--border,#2a2f3a); border-radius:10px; padding:14px; margin-bottom:14px; background:var(--panel-2,rgba(255,255,255,0.02)); }
.clubnote-club-head{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.clubnote-club-name{ font-weight:700; font-size:15px; }
.clubnote-count{ font-size:12px; color:var(--muted,#93a0b5); }
.clubnote-submitted{ font-size:12px; font-weight:700; color:var(--green,#22c55e); margin-left:auto; }
.clubnote-list{ display:flex; flex-direction:column; gap:8px; margin-bottom:12px; }
.clubnote-item{ border-left:3px solid var(--accent,#60a5fa); padding:6px 10px; background:rgba(96,165,250,0.06); border-radius:0 6px 6px 0; }
.clubnote-item-head{ font-size:12px; font-weight:600; color:var(--muted,#93a0b5); margin-bottom:2px; }
.clubnote-clk{ color:var(--accent,#60a5fa); }
.clubnote-item-text{ font-size:13px; line-height:1.4; white-space:pre-wrap; }
.clubnote-summary-label{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--muted,#93a0b5); margin-bottom:6px; }
.clubnote-summary{ width:100%; border:1px solid var(--border,#2a2f3a); border-radius:8px; background:var(--input-bg,#0d1320); color:var(--text,#e5e9f5); padding:8px 10px; font-size:13px; line-height:1.45; resize:vertical; }
.clubnote-summary[readonly]{ opacity:.85; background:rgba(255,255,255,0.02); }
.clubnote-actions{ display:flex; gap:8px; justify-content:flex-end; margin-top:8px; }


/* ============================================================
   PlayerLiveForm v2 — live gekoppelde-speler invoer
   ============================================================ */
#plf-form{ padding:16px 20px 20px; }
.plf-ctx{ background:rgba(79,110,247,.07); border:1px solid rgba(79,110,247,.2); border-radius:10px; padding:10px 12px; margin-bottom:14px; }
.plf-ctx-player{ font-size:14px; color:var(--text-1,#e5e9f5); }
.plf-ctx-match{ font-size:12.5px; color:var(--text-2,#9aa3b7); margin-top:3px; }
.plf-ctx-dim{ color:var(--text-3,#8b93a8); font-weight:400; }
.plf-ctx-note{ font-size:11.5px; color:var(--text-3,#8b93a8); margin-top:6px; font-style:italic; }
.plf-fields{ display:flex; flex-direction:column; gap:10px; }
.plf-row{ display:flex; flex-direction:column; gap:4px; }
.plf-label{ font-size:11px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3,#8b93a8); font-weight:600; }
.plf-field-in{ width:100%; background:var(--bg-input,#111827); border:1px solid var(--border,#2a2f45); color:var(--text-1,#e2e8f0); border-radius:8px; padding:10px 11px; font-size:13px; font-family:inherit; outline:none; transition:border-color .15s; }
.plf-field-in:focus{ border-color:var(--accent,#4f6ef7); }
.plf-opvallend-btn{ background:none; border:1px solid var(--border,#2a2f45); color:var(--text-2,#9aa3b7); border-radius:8px; padding:9px 14px; font-size:13px; cursor:pointer; margin-right:auto; min-height:44px; }
.plf-opvallend-btn.is-opvallend{ background:rgba(245,197,66,.15); border-color:rgba(245,197,66,.4); color:var(--gold,#f5c542); }
@media (max-width:860px){ .plf-field-in{ font-size:16px !important; } }

/* PlayerLiveForm v2 — chips + meta */
.plf-ctx-meta{ font-size:12.5px; color:var(--text-2,#9aa3b7); margin-top:3px; }
.plf-chips{ margin-bottom:14px; border-bottom:1px solid var(--border,#232838); padding-bottom:10px; }
.plf-section-label{ font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:var(--text-3,#8b93a8); font-weight:700; margin:2px 0 10px; }
.plf-dim{ font-weight:400; color:var(--text-3,#8b93a8); text-transform:none; letter-spacing:0; }
.plf-chip-block{ margin-bottom:10px; }
.plf-chip-cat{ display:block; font-size:11px; color:var(--text-2,#9aa3b7); font-weight:600; margin-bottom:5px; text-transform:capitalize; }
.plf-fields-label{ font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:var(--text-3,#8b93a8); font-weight:700; margin-bottom:8px; }

/* PlayerLiveForm v2 — aspect-blok (chips + notitie samen) */
.plf-aspect{ margin-bottom:16px; padding-bottom:13px; border-bottom:1px solid var(--border,#232838); }
.plf-aspect:last-child{ border-bottom:none; margin-bottom:4px; }
.plf-aspect-label{ font-size:11px; text-transform:uppercase; letter-spacing:.6px; color:var(--accent,#4f6ef7); font-weight:700; margin-bottom:7px; }
.plf-aspect-chips{ margin-bottom:8px; }
.plf-positie-sel{ width:100%; background:var(--bg-input,#111827); border:1px solid var(--border,#2a2f45); color:var(--text-1,#e2e8f0); border-radius:8px; padding:10px 11px; font-size:13px; font-family:inherit; outline:none; transition:border-color .15s; }
.plf-positie-sel:focus{ border-color:var(--accent,#4f6ef7); }
@media (max-width:860px){ .plf-positie-sel{ font-size:16px !important; } }
.plf-foot-rug-row{ display:flex; gap:14px; align-items:flex-start; }
.plf-foot-rug-row .plf-aspect-foot{ flex:1 1 auto; min-width:0; }
.plf-foot-rug-row .plf-aspect-rug{ flex:0 0 84px; }
.plf-rug-in{ width:100%; background:var(--bg-input,#111827); border:1px solid var(--border,#2a2f45); color:var(--text-1,#e2e8f0); border-radius:8px; padding:10px 11px; font-size:15px; font-family:inherit; text-align:center; outline:none; transition:border-color .15s; }
.plf-rug-in:focus{ border-color:var(--accent,#4f6ef7); }
@media (max-width:860px){ .plf-rug-in{ font-size:16px !important; } }

/* DEEL 6 — report drafts */
.rd-live-banner{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; background:rgba(79,110,247,.12); border:1px solid rgba(79,110,247,.4); border-radius:10px; padding:11px 13px; margin:0 0 14px; }
.rd-live-banner-txt{ font-size:13px; color:var(--text-1,#e5e9f5); }
#rdraft-body{ padding:16px 20px 20px; }
.rd-ctx{ background:rgba(79,110,247,.07); border:1px solid rgba(79,110,247,.2); border-radius:10px; padding:10px 12px; margin-bottom:14px; }
.rd-ctx-sub{ font-size:12.5px; color:var(--text-2,#9aa3b7); margin-top:3px; }
.rd-ctx-note{ font-size:11.5px; color:var(--text-3,#8b93a8); margin-top:6px; font-style:italic; }
.rd-list{ display:flex; flex-direction:column; gap:10px; }
.rd-card{ background:var(--bg-3,#141824); border:1px solid var(--border,#232838); border-radius:11px; padding:12px 13px; }
.rd-card-top{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.rd-card-name{ font-weight:700; font-size:14.5px; color:var(--text-1,#e5e9f5); }
.rd-card-meta{ font-size:12px; color:var(--text-3,#8b93a8); margin-top:3px; }
.rd-warn{ font-size:11.5px; color:#fca5a5; margin-top:6px; }
.rd-card .rd-edit-btn{ margin-top:10px; width:100%; min-height:44px; }
.rd-badge{ font-size:11px; border-radius:999px; padding:2px 9px; font-weight:600; }
.rd-b-green{ background:rgba(34,197,94,.18); color:#4ade80; }
.rd-b-grey{ background:rgba(148,163,184,.15); color:#94a3b8; }
.rd-empty{ color:var(--text-3,#8b93a8); font-size:13px; text-align:center; padding:18px; }

/* MatchLiveForm — live wedstrijdnotities */
.mlf-modal{ max-width: 760px; }
#mlf-form{ padding:16px 20px 20px; }
.mlf-ctx{ background:rgba(79,110,247,.07); border:1px solid rgba(79,110,247,.2); border-radius:10px; padding:10px 12px; margin-bottom:14px; }
.mlf-ctx-match{ font-size:15px; font-weight:700; color:var(--text-1,#e5e9f5); }
.mlf-ctx-meta{ font-size:12.5px; color:var(--text-2,#9aa3b7); margin-top:3px; }
.mlf-ctx-note{ font-size:11.5px; color:var(--text-3,#8b93a8); margin-top:6px; font-style:italic; }
.mlf-tabs{ display:none; gap:8px; margin-bottom:12px; }
.mlf-tab{ flex:1; min-height:44px; border-radius:9px; background:var(--bg-3,#141824); border:1px solid var(--border,#2a2f45); color:var(--text-2,#9aa3b7); font-size:14px; font-weight:600; cursor:pointer; }
.mlf-tab.active{ background:#4ea1ff; color:#06223f; border-color:#4ea1ff; }
.mlf-tab-badge{ font-size:12px; opacity:.8; }
.mlf-cols{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.mlf-col{ border:1px solid var(--border,#232838); border-radius:11px; padding:11px; }
.mlf-col[data-team="thuis"]{ background:rgba(78,161,255,.05); border-color:rgba(78,161,255,.25); }
.mlf-col[data-team="uit"]{ background:rgba(245,158,66,.05); border-color:rgba(245,158,66,.25); }
.mlf-team-head{ font-size:13px; font-weight:800; margin-bottom:10px; padding-bottom:7px; border-bottom:1px solid var(--border,#232838); }
.mlf-team-thuis{ color:#4ea1ff; }
.mlf-team-uit{ color:#f59e42; }
.mlf-cat{ margin-bottom:13px; }
.mlf-cat:last-child{ margin-bottom:0; }
.mlf-cat-label{ font-size:11px; text-transform:uppercase; letter-spacing:.5px; color:var(--text-3,#8b93a8); font-weight:700; margin-bottom:6px; }
.mlf-chips{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:7px; }
.mlf-chip{ padding:6px 11px; border-radius:999px; background:var(--bg-3,#141824); border:1px solid var(--border,#2a2f45); color:var(--text-2,#9aa3b7); font-size:12.5px; cursor:pointer; min-height:34px; }
.mlf-chip.active{ background:rgba(78,161,255,.2); border-color:#4ea1ff; color:#cfe6ff; font-weight:600; }
.mlf-shared{ margin-top:14px; border-top:1px solid var(--border,#232838); padding-top:12px; }
@media (max-width:768px){
  .mlf-tabs{ display:flex; }
  .mlf-cols{ grid-template-columns:1fr; gap:0; }
  .mlf-show-thuis .mlf-col[data-team="uit"]{ display:none; }
  .mlf-show-uit .mlf-col[data-team="thuis"]{ display:none; }
  .mlf-note{ font-size:16px !important; }
}

/* Post-match: rustig ingeklapt + groene gloed (DEEL 1 + 3) */
.match-card:not(.open) .match-players{ display:none; }
.match-card.locked{ background:rgba(34,197,94,.06); box-shadow:0 0 0 1px rgba(34,197,94,.22), 0 0 16px rgba(34,197,94,.10); }
.match-dropdown-row.submitted-glow-row{ background:rgba(34,197,94,.06); box-shadow:inset 0 0 0 1px rgba(34,197,94,.16); border-radius:8px; }

/* sh-v346 — uniforme type-gekleurde blokken in uitklapbare wedstrijdkaart:
   groen=rapport, paars=observatie, geel=wedstrijdrapport */
.match-dropdown-row.mdr-type-rapport{ border-left:4px solid #22c55e; }
.match-dropdown-row.mdr-type-obs{ border-left:4px solid #a855f7; }
.match-dropdown-row.mdr-type-wedstrijd{ border-left:4px solid #f59e0b; }
.match-dropdown-row.mdr-type-rapport .match-dropdown-avatar{ background:linear-gradient(135deg,#22c55e,#15803d); }
.match-dropdown-row.mdr-type-obs .match-dropdown-avatar{ background:linear-gradient(135deg,#a855f7,#7c3aed); }
.match-dropdown-row.mdr-type-wedstrijd .match-dropdown-avatar{ background:linear-gradient(135deg,#f59e0b,#b45309); }
/* sh-v351 — ingediend/verwerkt: typekleur blijft alleen in rand-links + initialen,
   de blok-gloed is altijd groen (= afgerond), ongeacht het type. */
.match-dropdown-row.is-ingediend{ background:rgba(34,197,94,.07); box-shadow:inset 0 0 0 1px rgba(34,197,94,.20); }
.mdr-type-pill{ font-size:10px; border-radius:4px; padding:1px 6px; margin-left:6px; vertical-align:middle; font-weight:700; }
.mdr-pill-rapport{ background:rgba(34,197,94,.14); color:#22c55e; border:1px solid rgba(34,197,94,.28); }
.mdr-pill-obs{ background:rgba(168,85,247,.15); color:#a855f7; border:1px solid rgba(168,85,247,.3); }
.mdr-pill-wedstrijd{ background:rgba(245,158,11,.15); color:#f59e0b; border:1px solid rgba(245,158,11,.32); }
/* Gekoppelde speler zonder eigen obs/rapport-record — blauw, wacht op rapport */
.match-dropdown-row.mdr-type-speler{ border-left:4px solid #4ea1ff; }
.match-dropdown-row.mdr-type-speler .match-dropdown-avatar{ background:linear-gradient(135deg,#4ea1ff,#2563eb); }
.mdr-pill-speler{ background:rgba(78,161,255,.15); color:#4ea1ff; border:1px solid rgba(78,161,255,.32); }

/* Post-match pm-card: rustig ingeklapt + groene gloed (v281) */
.pm-card:not(.pm-open) .pm-progress{ display:none; }
.pm-card.submitted-glow{ background:rgba(34,197,94,.07); box-shadow:0 0 0 1px rgba(34,197,94,.28), 0 0 18px rgba(34,197,94,.12); border-color:rgba(34,197,94,.3) !important; }
.pm-item-row.submitted-glow-row{ background:rgba(34,197,94,.06); box-shadow:inset 0 0 0 1px rgba(34,197,94,.18); border-radius:8px; }

/* build-stamp: sh-v283-pm-3secties */

/* STAP B — persistent onboarding-vinkje (altijd zichtbaar boven knoppen) */
.sh-wiz-check-persist{ display:flex; align-items:center; justify-content:center; gap:9px; min-height:44px; margin:4px 0 2px; font-size:13px; color:var(--text-2,#9aa3b7); cursor:pointer; user-select:none; }
.sh-wiz-check-persist input{ width:18px; height:18px; accent-color:#4ea1ff; cursor:pointer; }

/* STAP C — dashboard: gespeelde wedstrijd gedempt onderaan */
.today-match-gespeeld{ opacity:.45; filter:saturate(.7); }
.today-match-gespeeld .today-match-time::after{ content:' · Gespeeld'; font-size:10px; color:var(--text-3,#8b93a8); font-weight:600; }
.today-sep-gespeeld{ font-size:10.5px; text-transform:uppercase; letter-spacing:.6px; color:var(--text-3,#8b93a8); font-weight:700; margin:10px 2px 6px; padding-top:9px; border-top:1px dashed var(--border,#232838); }

/* RESET batch 2 — groene gloed als ENIGE status-indicator (geen badges) */
.pm-section-hdr.submitted-glow-row{ background:none !important; box-shadow:none !important; color:#86efac; text-shadow:0 0 8px rgba(34,197,94,.45); }
.pm-card.submitted-glow .match-team-home,
.pm-card.submitted-glow .match-team-away{ color:#dcfce7; text-shadow:0 0 9px rgba(34,197,94,.5); }

/* OPDRACHT 2 — aggregated wedstrijdkaart volledig verwerkt: groene rand */
.match-card.expandable.submitted-glow{ background:rgba(34,197,94,.07); box-shadow:0 0 0 1px rgba(34,197,94,.28), 0 0 18px rgba(34,197,94,.12); border-color:rgba(34,197,94,.3) !important; }
.match-card.expandable.submitted-glow .match-team-home,
.match-card.expandable.submitted-glow .match-team-away{ color:#dcfce7; text-shadow:0 0 9px rgba(34,197,94,.45); }

/* RESET batch 3 — hele rij klikbaar (DEEL 2D), losse open-knoppen weg */
.pm-item-row .pm-item-acts{ display:none !important; }
/* Trash-knop in pm-item-acts wél zichtbaar */
.pm-item-row .pm-item-acts:has(.pm-del-obs-btn){ display:flex !important; gap:5px; align-items:center; flex-shrink:0; }
.pm-del-obs-btn{ background:none; border:none; cursor:pointer; font-size:15px; line-height:1; padding:4px 6px; opacity:.35; color:#ef4444; transition:opacity .15s; flex-shrink:0; }
.pm-del-obs-btn:hover{ opacity:1; }
.pm-row-click{ cursor:pointer; min-height:44px; transition:background .15s ease; border-radius:8px; }
.pm-row-click:hover{ background:rgba(255,255,255,.05); }
.pm-row-chev{ margin-left:auto; color:var(--text-3,#8b93a8); font-size:18px; line-height:1; flex-shrink:0; }

/* Beheer — Account verwijderen (aparte rode rij, danger-box, outline-knop) */
.bh-actions-danger{margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.06);display:flex;justify-content:flex-end;}
.bh-btn-danger-outline{background:transparent;border:1px solid rgba(239,68,68,.55);color:#fca5a5;}
.bh-btn-danger-outline:hover{background:rgba(239,68,68,.12);border-color:#ef4444;color:#fecaca;}
.bh-danger-box{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.30);border-radius:8px;padding:12px 14px;font-size:13px;line-height:1.5;}
.bh-danger-box ul{margin:0;}

/* ============================================================
   LANDINGSPAGINA REDESIGN (sh-v294) — entrance + nieuwe secties.
   Bouwt voort op de bestaande .lp-* stijl (dark theme onveranderd).
   ============================================================ */

/* Nav-acties + 44px touch targets binnen de landingspagina */
.lp-nav-actions { display: flex; gap: 8px; align-items: center; }
#landing-overlay .lp-btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }

/* CSS-only entrance — vervangt de verwijderde introvideo.
   Speelt eenmalig af zodra de landingspagina zichtbaar wordt (~1s totaal). */
@keyframes lpNavIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: none; } }
@keyframes lpRise  { from { opacity: 0; transform: translateY(22px); }  to { opacity: 1; transform: none; } }
@keyframes lpFade  { from { opacity: 0; } to { opacity: 1; } }
@keyframes lpPop   { from { opacity: 0; transform: scale(.95); } to { opacity: 1; transform: none; } }
#landing-overlay .lp-nav            { animation: lpNavIn .45s ease both; animation-delay: .05s; }
#landing-overlay .lp-hero .lp-h1    { animation: lpRise .55s cubic-bezier(.22,.61,.36,1) both; animation-delay: .30s; }
#landing-overlay .lp-hero .lp-sub   { animation: lpRise .55s cubic-bezier(.22,.61,.36,1) both; animation-delay: .48s; }
#landing-overlay .lp-hero .lp-cta-row  { animation: lpFade .5s ease both; animation-delay: .66s; }
#landing-overlay .lp-hero .lp-sub-link { animation: lpFade .5s ease both; animation-delay: .80s; }
#landing-overlay .lp-hero .lp-hero-visual { animation: lpPop .6s cubic-bezier(.22,.61,.36,1) both; animation-delay: .58s; }
@media (prefers-reduced-motion: reduce) {
  #landing-overlay .lp-nav,
  #landing-overlay .lp-hero .lp-h1,
  #landing-overlay .lp-hero .lp-sub,
  #landing-overlay .lp-hero .lp-cta-row,
  #landing-overlay .lp-hero .lp-sub-link,
  #landing-overlay .lp-hero .lp-hero-visual { animation: none !important; }
}

/* Hero sub-link "Toegang aanvragen" */
.lp-sub-link { margin-top: 16px; font-size: 14px; color: var(--text-3, #8b97ad); }
.lp-sub-link a { color: var(--accent, #4ea1ff); text-decoration: none; font-weight: 600; }
.lp-sub-link a:hover { text-decoration: underline; }

/* 3C — Kernbelofte */
.lp-kern { text-align: center; padding: 44px 24px; max-width: 920px; margin: 0 auto; width: 100%; }
.lp-kern-line { font-size: clamp(24px, 4.4vw, 40px); font-weight: 800; letter-spacing: -.6px; line-height: 1.12; }

/* Sectie-subtitel onder een .lp-h2.has-sub */
.lp-h2.has-sub { margin-bottom: 8px; }
.lp-h2-sub { text-align: center; color: var(--text-2, #9aa8bd); font-size: clamp(14px, 1.9vw, 16px); margin: 0 auto 30px; max-width: 560px; }

/* Carousel screenshots + placeholders */
#landing-overlay .lp-shot { width: 100%; max-width: 760px; margin: 0 auto; }
#landing-overlay .lp-shot.lp-shot-ph { aspect-ratio: 16 / 10; }

/* 3G — Quote */
.lp-quotebox { text-align: center; max-width: 720px; margin: 0 auto; }
.lp-quote-big { font-size: clamp(22px, 3.4vw, 30px); font-weight: 800; letter-spacing: -.4px; line-height: 1.2; }
.lp-quote-p { margin-top: 14px; color: var(--text-2, #9aa8bd); font-size: 15px; line-height: 1.6; }

/* 3H — CTA */
.lp-cta-sub { color: var(--text-2, #9aa8bd); font-size: clamp(14px, 2vw, 16px); max-width: 540px; margin: 0 auto 22px; line-height: 1.6; }
.lp-cta-row-center { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* Mobiel: CTA-knoppen volle breedte, gestapeld */
@media (max-width: 560px) {
  .lp-cta-row-center { flex-direction: column; }
  .lp-cta-row-center .lp-btn { width: 100%; }
  .lp-nav-actions .lp-btn-sm { padding: 9px 13px; }
}

/* Aanvraagformulier — functie-dropdown, voorwaarden/nieuwsbrief, disabled-state (sh-v294) */
.sh-req-select{ appearance:none; -webkit-appearance:none; -moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%239aa8bd' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center; padding-right:34px; cursor:pointer; }
.sh-req-check{ display:flex; align-items:flex-start; gap:9px; margin-top:12px; font-size:13px; line-height:1.45; color:var(--text-2,#9aa8bd); cursor:pointer; }
.sh-req-check input[type="checkbox"]{ flex:0 0 auto; width:18px; height:18px; min-width:18px; margin-top:1px; accent-color:var(--accent,#4ea1ff); cursor:pointer; }
.sh-req-check a{ color:var(--accent,#4ea1ff); text-decoration:underline; }
.sh-req-send.is-disabled{ opacity:.5; cursor:not-allowed; }

/* Login — scheidingslijn boven "Toegang aanvragen" (sh-v294) */
.login-sep{ display:flex; align-items:center; gap:10px; margin:16px 0 2px; color:var(--text-3,#8b97ad); font-size:12px; }
.login-sep::before, .login-sep::after{ content:""; flex:1; height:1px; background:var(--border,#232d40); }

/* Hero — licht 3D-perspectief op de dashboard-screenshot (alleen desktop) (sh-v295) */
@media (min-width: 901px) {
  #landing-overlay .lp-hero-visual .lp-visual img {
    transform: perspective(1500px) rotateY(-5deg) rotateX(1.5deg) scale(.99);
    transition: transform .45s cubic-bezier(.22,.61,.36,1);
  }
  #landing-overlay .lp-hero-visual:hover .lp-visual img {
    transform: perspective(1500px) rotateY(0) rotateX(0) scale(1);
  }
}

/* ============================================================
   LANDINGSPAGINA VISUELE UPGRADE (sh-v296)
   Video's, glow, perspectief, floating, diepte, compacter.
   Bouwt voort op bestaande .lp-* stijl — dark theme onveranderd.
   ============================================================ */

/* ---- Achtergrond-laag: animated gradient + accent-glows + dot-texture ---- */
#landing-overlay::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(rgba(255,255,255,.045) 1px, transparent 1.6px) 0 0 / 24px 24px,
    radial-gradient(55% 45% at 78% 10%, rgba(230,57,70,.12), transparent 62%),
    radial-gradient(50% 42% at 18% 88%, rgba(78,161,255,.10), transparent 62%),
    linear-gradient(180deg, #0a0c12 0%, #0f131d 48%, #0b0e16 72%, #0a0c12 100%);
  background-size: 24px 24px, auto, auto, 100% 200%;
  animation: lpBgShift 22s ease-in-out infinite alternate;
}
@keyframes lpBgShift{ from{ background-position:0 0,0 0,0 0,50% 0%; } to{ background-position:0 0,0 0,0 0,50% 100%; } }
#landing-overlay > *{ position:relative; z-index:1; }

/* ---- Video-crop: verbergt sidebar + DEMO-balk (content-only) ---- */
#landing-overlay .lp-vidcrop{
  position:relative; width:100%; aspect-ratio:1.75; overflow:hidden;
  border-radius:8px; background:#0a0c12 center center / cover no-repeat;
}
#landing-overlay .lp-vidcrop video{
  position:absolute; top:-7.2%; left:-17.2%; width:118.6%; height:auto;
  display:block; border:0; background:#0a0c12;
}

/* ---- Media-wrapper: glow + perspectief + floating ---- */
#landing-overlay .lp-media{
  position:relative; isolation:isolate; width:100%; max-width:600px; margin:0 auto;
  border-radius:8px;
}
#landing-overlay .lp-media > img,
#landing-overlay .lp-media > .lp-vidcrop{
  position:relative; z-index:1; display:block; width:100%; border-radius:8px;
  box-shadow:0 20px 55px rgba(0,0,0,.55); cursor:pointer;
}
/* zachte rood/blauwe glow achter de media */
#landing-overlay .lp-media::before{
  content:""; position:absolute; inset:-9% -7%; z-index:0; border-radius:26px; pointer-events:none;
  background:radial-gradient(60% 60% at 50% 42%, rgba(230,57,70,.32), rgba(78,161,255,.16) 55%, transparent 76%);
  filter:blur(30px); opacity:.55;
}
#landing-overlay .lp-media-hero{ max-width:470px; }

/* perspectief + zweef-animatie alleen op desktop */
@media (min-width:901px){
  #landing-overlay .lp-media{ transform:perspective(1600px) rotateX(2deg) rotateY(-4deg); transition:transform .5s cubic-bezier(.22,.61,.36,1); }
  #landing-overlay .lp-media-hero{ transform:perspective(1500px) rotateX(2.5deg) rotateY(-6deg); }
  #landing-overlay .lp-media.lp-float:hover{ transform:perspective(1600px) rotateX(0) rotateY(0) translateY(-6px); }
  @keyframes lpFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-7px); } }
  #landing-overlay .lp-media.lp-float > img,
  #landing-overlay .lp-media.lp-float > .lp-vidcrop{ animation:lpFloat 6.5s ease-in-out infinite; }
}

/* ---- Hero-media entrance: slide-in van onder + glow ---- */
#landing-overlay .lp-hero-visual{ animation:lpHeroRise 1s cubic-bezier(.22,.61,.36,1) both; animation-delay:.5s; }
@keyframes lpHeroRise{ from{ opacity:0; transform:translateY(54px) scale(.96); } to{ opacity:1; transform:none; } }

/* ---- Accent-glow achter de CTA ---- */
#landing-overlay .lp-cta-final{ position:relative; }
#landing-overlay .lp-cta-final::before{
  content:""; position:absolute; left:50%; top:40%; width:60%; height:60%; transform:translate(-50%,-50%);
  z-index:0; pointer-events:none; border-radius:50%;
  background:radial-gradient(closest-side, rgba(230,57,70,.18), transparent 70%); filter:blur(40px);
}
#landing-overlay .lp-cta-final > *{ position:relative; z-index:1; }

/* ============================================================
   COMPACTER — minder scrollen, tekst-naast-beeld in carousel
   ============================================================ */
#landing-overlay .lp-section{ padding:40px 24px; }
#landing-overlay .lp-kern{ padding:30px 24px; }
#landing-overlay .lp-hero{ padding:54px 24px 40px; }
#landing-overlay .lp-feat{ padding:16px; }
#landing-overlay .lp-feat-ic{ font-size:23px; margin-bottom:8px; }
#landing-overlay .lp-feat-t{ font-size:14.5px; }
#landing-overlay .lp-feat-s{ font-size:12.5px; }

/* ============================================================
   ZO WERKT HET — afwisselende beeld/tekst-rijen (pro-stijl)
   ============================================================ */
#landing-overlay .lp-rows{ display:flex; flex-direction:column; gap:72px; max-width:1280px; margin:8px auto 0; }
#landing-overlay .lp-row{ display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:72px; }
#landing-overlay .lp-row .lp-media{ width:100%; max-width:520px; margin:0; }
#landing-overlay .lp-row .lp-media img{ display:block; width:100%; height:auto; max-height:360px; object-fit:contain; }
#landing-overlay .lp-row:nth-child(even) .lp-media{ order:2; justify-self:end; }
#landing-overlay .lp-row:nth-child(even) .lp-rowtext{ order:1; }
#landing-overlay .lp-row-t{ font-size:clamp(20px,2.1vw,26px); font-weight:800; letter-spacing:-.4px; line-height:1.2; color:var(--text,#e8edf5); }
#landing-overlay .lp-row-s{ font-size:16px; line-height:1.62; color:var(--text-2,#9aa8bd); margin-top:12px; max-width:44ch; }

/* desktop: rechte, scherpe beelden (geen scheve tilt) — ogt professioneel */
@media (min-width:761px){
  #landing-overlay .lp-row .lp-media{ transform:none; }
  #landing-overlay .lp-row .lp-media.lp-float:hover{ transform:translateY(-6px); }
}

/* mobiel: stapelen, beeld altijd boven, tekst eronder */
@media (max-width:760px){
  #landing-overlay .lp-rows{ gap:44px; }
  #landing-overlay .lp-row{ grid-template-columns:1fr; gap:18px; }
  #landing-overlay .lp-row .lp-media{ max-width:460px; margin:0 auto; }
  #landing-overlay .lp-row:nth-child(even) .lp-media{ order:0; justify-self:center; }
  #landing-overlay .lp-row:nth-child(even) .lp-rowtext{ order:0; }
  #landing-overlay .lp-row-t{ text-align:center; }
  #landing-overlay .lp-row-s{ max-width:none; text-align:center; }
}

/* ============================================================
   SCROLL-CASCADE — feature-kaarten 1 voor 1 in beeld
   ============================================================ */
#landing-overlay .lp-features .lp-feat{ opacity:0; transform:translateY(16px); transition:opacity .5s ease, transform .5s ease; }
#landing-overlay .lp-reveal.lp-in .lp-features .lp-feat{ opacity:1; transform:none; }
#landing-overlay .lp-features .lp-feat:nth-child(1){ transition-delay:.03s; }
#landing-overlay .lp-features .lp-feat:nth-child(2){ transition-delay:.09s; }
#landing-overlay .lp-features .lp-feat:nth-child(3){ transition-delay:.15s; }
#landing-overlay .lp-features .lp-feat:nth-child(4){ transition-delay:.21s; }
#landing-overlay .lp-features .lp-feat:nth-child(5){ transition-delay:.27s; }
#landing-overlay .lp-features .lp-feat:nth-child(6){ transition-delay:.33s; }
#landing-overlay .lp-features .lp-feat:nth-child(7){ transition-delay:.39s; }
#landing-overlay .lp-features .lp-feat:nth-child(8){ transition-delay:.45s; }

/* ---- Reduced motion: alle landingsanimaties uit ---- */
@media (prefers-reduced-motion: reduce){
  #landing-overlay::before{ animation:none; }
  #landing-overlay .lp-hero-visual,
  #landing-overlay .lp-media.lp-float > img,
  #landing-overlay .lp-media.lp-float > .lp-vidcrop{ animation:none !important; }
  #landing-overlay .lp-features .lp-feat{ opacity:1; transform:none; transition:none; }
}

/* sh-v300: video-crop exact op de geverifieerde content-box (sidebar + demo-balk weg) */
#landing-overlay .lp-vidcrop{ aspect-ratio: 1.766; }
#landing-overlay .lp-vidcrop video{ top: -6.75%; left: -16.6%; width: 117.7%; }

/* sh-v301: landingsmedia perfect — scherpe screenshots, compacte flow */
/* Subtiele helderheid/contrast zodat dark screenshots premium ogen (niet vaal) */
#landing-overlay .lp-media img{ filter: brightness(1.06) contrast(1.05) saturate(1.06); }

/* Compacte 4-stappen-flow (vervangt grote kaarten met screenshots) */
.lp-section-tight{ padding-top: 26px; padding-bottom: 26px; }
.lp-flow{ display:flex; align-items:stretch; justify-content:center; gap:10px; flex-wrap:wrap; max-width:880px; margin:0 auto; }
.lp-flow-step{ flex:1 1 180px; max-width:215px; background:var(--panel,#111722); border:1px solid var(--border,#232d40); border-radius:12px; padding:16px 14px; text-align:center; }
.lp-flow-ic{ font-size:24px; margin-bottom:6px; line-height:1; }
.lp-flow-t{ font-weight:700; font-size:15px; margin-bottom:4px; }
.lp-flow-s{ font-size:12.5px; color:var(--text-2,#9aa8bd); line-height:1.45; }
.lp-flow-arrow{ align-self:center; color:var(--text-3,#8b97ad); font-size:18px; flex:0 0 auto; }
@media (max-width:680px){
  .lp-flow-arrow{ display:none; }
  .lp-flow-step{ flex-basis:100%; max-width:none; }
}

/* ============================================================
   BUGFIXRONDE live-notities — DEEL 1 + DEEL 3
   ============================================================ */

/* DEEL 3 — meerregelige notitievelden (auto-grow textareas).
   .sh-grow-note hangt op .plf-field-in / .mlf-note / .obs-term-in, die
   hun kleur/rand/padding al meegeven via de class-selector. Hier alleen
   de textarea-specifieke eigenschappen: hoogte, wrap en geen handvat. */
textarea.sh-grow-note{
  display:block;
  width:100%;
  box-sizing:border-box;
  min-height:72px;
  max-height:150px;
  line-height:1.45;
  resize:none;                 /* hoogte volgt auto-grow in JS */
  overflow-y:auto;             /* prefilled lange tekst blijft scrollbaar vóór focus */
  white-space:pre-wrap;        /* netjes wrappen, newlines behouden */
  word-break:break-word;
  font-family:inherit;
  vertical-align:top;
}
/* Mobiel: 16px voorkomt iOS-zoom bij focus (consistent met inputs) */
@media (max-width:860px){
  textarea.sh-grow-note{ font-size:16px !important; }
}

/* DEEL 1 — clubkeuze thuisploeg / uitploeg bij "Opgevallen speler". */
.obs-club-choice{
  display:flex;
  gap:8px;
  margin-bottom:8px;
  flex-wrap:wrap;
}
.obs-club-opt{
  flex:1 1 0;
  min-width:120px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:2px;
  padding:8px 11px;
  border-radius:9px;
  border:1px solid var(--border,#232838);
  background:var(--bg-3,#141824);
  color:var(--text-1,#e5e9f5);
  cursor:pointer;
  text-align:left;
  transition:border-color .15s, background .15s;
}
.obs-club-opt:hover{ border-color:#4ea1ff; }
.obs-club-opt.active{
  border-color:#4ea1ff;
  background:rgba(78,161,255,0.12);
}
.obs-club-opt-rol{
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.4px;
  color:var(--text-3,#8b93a8);
}
.obs-club-opt.active .obs-club-opt-rol{ color:#8cc4ff; }
.obs-club-opt-naam{
  font-size:13px;
  font-weight:600;
  line-height:1.2;
}

/* ============================================================
   MASTER BUGFIXRONDE live-flows — DEEL 2/3 + DEEL 8
   ============================================================ */

/* DEEL 2/3 — read-only "Live wedstrijdnotities" blok boven het wedstrijdrapport */
.mlf-rapport-banner{
  background:rgba(78,161,255,0.06);
  border:1px solid rgba(78,161,255,0.22);
  border-radius:10px;
  padding:10px 12px;
  margin-bottom:12px;
}
.mlf-rb-title{
  font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
  color:#8cc4ff; margin-bottom:6px;
}
.mlf-rb-body{
  margin:0; white-space:pre-wrap; word-break:break-word;
  font-family:inherit; font-size:12.5px; line-height:1.5;
  color:var(--text-1,#e5e9f5); max-height:180px; overflow-y:auto;
}
.mlf-rb-hint{
  margin-top:6px; font-size:11px; color:var(--text-3,#8b93a8); font-style:italic;
}

/* DEEL 8 — groene GLOED als statusindicator i.p.v. groen vinkje/badge. */
.wstr-player-row:has(.wstr-status-label.ingediend){
  box-shadow: inset 0 0 0 1px rgba(34,197,94,0.22), 0 0 14px rgba(34,197,94,0.10);
  border-radius:8px;
}
.wstr-status-label.ingediend{
  background:transparent !important;
  border:none !important;
  color:#34d399 !important;
  font-weight:600;
  padding:0 2px !important;
  box-shadow:none !important;
}

/* ============================================================
   VERVOLGFIX v304 — B5 melding + E2 knop/touch
   ============================================================ */

/* FIX 1 (B5) — informatieve melding "geen live wedstrijdnotities" */
.mlf-rapport-banner.mlf-rb-empty{
  background:rgba(148,163,184,0.06);
  border:1px solid rgba(148,163,184,0.20);
}
.mlf-rb-empty-txt{
  font-size:12.5px; color:var(--text-3,#8b93a8); line-height:1.4;
}

/* FIX 3/4 (E2) — "Rapport voor [naam]" + touch targets ≥44px in wedstrijd-bewerken */
.wstr-edit-mini-btn,
.wstr-edit-note-action{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 14px;
  font-size:13px;
  border-radius:9px;
}
.wstr-edit-mini-btn.primary{
  font-weight:600;
}
.wstr-mini-tap{
  max-width:60%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* ============================================================
   BASISFLOW v305 — FLOW E: groene gloed breder als statusindicator
   (geen vinkjes). Subtiel; geen badge-rommel.
   ============================================================ */
/* OBS-rij met inhoud → zachte groene gloed (status: observatie aanwezig) */
.wstr-player-row:has(.wstr-type-label.observatie){
  box-shadow: inset 0 0 0 1px rgba(34,197,94,0.16), 0 0 10px rgba(34,197,94,0.07);
  border-radius:8px;
}
/* Ingediende rij heeft voorrang met iets sterkere gloed (al gedefinieerd),
   maar borg de combinatie OBS + ingediend met de sterkere variant: */
.wstr-player-row:has(.wstr-status-label.ingediend){
  box-shadow: inset 0 0 0 1px rgba(34,197,94,0.22), 0 0 14px rgba(34,197,94,0.10);
}

/* ============================================================
   BATCH A v306 — validatie, gloed, touch targets
   ============================================================ */

/* FIX 1/4 — zichtbare veld-validatie: rood veld + fouttekst eronder */
.sh-field-error{
  border-color:#ef4444 !important;
  box-shadow:0 0 0 2px rgba(239,68,68,0.18) !important;
}
.sh-field-error-msg{
  color:#f87171;
  font-size:11.5px;
  margin-top:4px;
  line-height:1.3;
}

/* FIX 4 — groene gloed iets feller als statusindicator (niet schreeuwerig) */
.wstr-player-row:has(.wstr-status-label.ingediend),
.wstr-player-row.wstr-wr-done{
  box-shadow: inset 0 0 0 1px rgba(34,197,94,0.30), 0 0 16px rgba(34,197,94,0.16);
  border-radius:8px;
}
.wstr-player-row:has(.wstr-type-label.observatie){
  box-shadow: inset 0 0 0 1px rgba(34,197,94,0.20), 0 0 12px rgba(34,197,94,0.10);
  border-radius:8px;
}

/* DEEL 8 — OBS-rij krijgt PAARSE gloed (mag afwijken van rapport), ook wanneer
   ingediend. De spelersNAAM houdt wél de groene gloed als status-signaal.
   Plaatsing ná de groene regels + dubbele :has = hogere specificiteit, dus wint. */
.wstr-player-row:has(.wstr-type-dot.obs){
  box-shadow: inset 0 0 0 1px rgba(168,85,247,0.30), 0 0 14px rgba(168,85,247,0.16) !important;
  border-radius:8px;
}
/* Gloed DOOR de letters (niet alleen het randje): felgroene glow op de naam zelf. */
.wstr-player-row:has(.wstr-type-dot.obs) .wstr-player-naam,
.wstr-player-row:has(.wstr-type-dot.rapport):has(.wstr-status-label.ingediend) .wstr-player-naam{
  color:#eafff1;
  text-shadow:0 0 4px rgba(34,197,94,0.95), 0 0 9px rgba(34,197,94,0.75), 0 0 16px rgba(34,197,94,0.45);
}

/* FIX 5 — touch targets ≥44px voor delete/icon-only knoppen (website én PWA) */
#report-delete-concept,
#obs-delete-btn,
.match-report-delete{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
}
#report-delete-concept{ font-size:13px !important; padding:6px 16px !important; }
.sa-tile-close,
.sa-tile-obs-close{
  min-width:44px;
  min-height:44px;
  font-size:20px;
}

/* BATCH 1 / 1A — verplichte niveau-picker / advies-chips rood bij ontbreken */
.grade-picker.sh-picker-error,
#f-advies-chips.sh-picker-error,
#f-advies.sh-picker-error{
  outline:2px solid #ef4444;
  outline-offset:2px;
  border-radius:8px;
}

/* BATCH 1 / 1B — "niet gerapporteerd": verberg alle overige rapport-secties,
   alleen de niet-gerapporteerd-sectie (reden + notitie) en de Indienen-balk blijven. */
#report-form.sh-ng-active > *:not(#niet-gerapporteerd-section):not(#report-form-actions){
  display:none !important;
}

/* BATCH 1 / 1B (v322) — "niet gerapporteerd": forceer de actie-balk met Indienen
   direct zichtbaar onder de reden (niet als sticky balk die kan wegvallen), en
   verberg de Opslaan-knop — bij niet-gerapporteerd is alleen Indienen relevant. */
#report-form.sh-ng-active #report-form-actions{
  display:flex !important;
  position:static !important;
  margin-top:14px;
}
#report-form.sh-ng-active #report-save-draft-btn{ display:none !important; }


/* ============================================================
   FOLDABLE (Honor Magic V5 binnenscherm) + SAFE-AREA
   Additieve PWA-optimalisatie. Breekt bestaande mobiel/desktop NIET:
   env(safe-area-inset-*) = 0px zonder insets, en de media queries gelden
   alleen op korte/bijna-vierkante schermen. (sh-foldable)
   ============================================================ */

/* 1. Safe-area: respecteer punch-hole camera + afgeronde hoeken op vaste
   elementen. env() valt terug op 0px -> geen effect op gewone schermen. */
.sidebar {
  padding-left: calc(12px + env(safe-area-inset-left, 0px));
  padding-top: calc(14px + env(safe-area-inset-top, 0px));
  padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
}
.bottom-nav { padding-bottom: env(safe-area-inset-bottom, 0px); }
.lp-nav { padding-top: calc(10px + env(safe-area-inset-top, 0px)); }

/* 2. Linkermenu altijd volledig zichtbaar: op kortere schermen de nav-items
   compacter zodat alle onderdelen passen (en anders netjes scrollbaar). */
@media (max-height: 860px) {
  .nav-item { padding-top: 7px; padding-bottom: 7px; }
  .nav-section-label { padding-top: 8px; padding-bottom: 2px; margin-top: 4px; }
  .nav { gap: 0; }
}

/* 3. Bijna-vierkant binnenscherm (~724x784 CSS px): tussen telefoon en tablet.
   Geef content meer lucht en beperk modals tot ~600px gecentreerd. */
@media (min-width: 650px) and (max-width: 800px) and (min-aspect-ratio: 3/4) {
  .settings-modal,
  .sh-wiz-card,
  .mreport-card,
  .toern-dyn-card,
  .obs-card {
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
  }
  /* Team-grid mag 2-3 kolommen (de inline minmax doet dit al; hier als vangnet). */
  .toern-club-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
}

/* Foldable scroll-fix: schakel de mobiele body-zoom (0.92) uit op het brede
   bijna-vierkante binnenscherm. `zoom` breekt daar de verticale scroll-hoogte
   (je moest kantelen om te kunnen scrollen). Op gewone telefoons blijft 0.92. */
@media (min-width: 650px) and (max-width: 800px) and (min-aspect-ratio: 3/4) {
  body { zoom: 1; }
}

/* Foldable scroll-FIX: de mobiele layout (<=768px) zet body op overflow:hidden en
   laat main.content scrollen met height:calc(100% - 52px). Die 100%-keten rekent op
   het bijna-vierkante binnenscherm verkeerd (100vh-foldable-bug) -> main.content wordt
   te hoog, de onderkant valt buiten beeld en je moest kantelen. Door html op 100dvh te
   forceren klopt de hele keten en kun je tot onderaan scrollen. */
@media (min-width: 650px) and (max-width: 800px) and (min-aspect-ratio: 3/4) {
  html { height: 100vh; height: 100dvh; }
}

/* Linkermenu volledig zichtbaar: compacter op kortere/laptop-schermen (en het
   foldable-binnenscherm) zodat alle onderdelen passen zonder verborgen scroll. */
@media (max-height: 900px) {
  .sidebar { padding-top: calc(8px + env(safe-area-inset-top, 0px)); }
  .brand { padding: 2px 4px 6px 4px; margin-bottom: 6px; }
  .nav { gap: 0; }
  .nav-item { padding-top: 6px; padding-bottom: 6px; }
  .nav-section-label { padding-top: 6px; padding-bottom: 1px; margin-top: 2px; font-size: 10px; letter-spacing: .04em; }
}

/* Landingspagina — conversie-optimalisatie */
.lp-nav-login { color: var(--text-2, #9aa8bd); font-size: 13px; text-decoration: none; padding: 6px 6px; cursor: pointer; transition: color .15s ease; }
.lp-nav-login:hover { color: var(--text, #e8edf5); }
.lp-media-hero { box-shadow: 0 0 25px rgba(235, 31, 55, 0.15), 0 24px 60px rgba(0,0,0,.45); }
.lp-row-s { font-size: 15px; color: #c7d2e0; }
.lp-why { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 6px; }
@media (max-width: 760px) { .lp-why { grid-template-columns: 1fr; } }

/* Rapport-rij in spelersdatabase: groene gloed (zelfde stijl als de obs-rij, maar groen) */
tr.db-row-report { background: linear-gradient(90deg, rgba(34,197,94,0.07) 0%, transparent 60%); }
tr.db-row-report:hover { background: linear-gradient(90deg, rgba(34,197,94,0.14) 0%, rgba(34,197,94,0.04) 100%) !important; }
tr.db-row-report td:first-child { border-left: 2px solid rgba(34,197,94,0.55); }


/* v6 toegang (sh-v433) — status-badges + gedimde kaart in Beheer/Gebruikers */
.bh-card-dim{ opacity:.6; }
.bh-badge.bh-b-red{ background:rgba(239,68,68,.18); color:#fca5a5; border:1px solid rgba(239,68,68,.40); }
.bh-badge.bh-b-amber{ background:rgba(245,158,11,.18); color:#fcd34d; border:1px solid rgba(245,158,11,.40); }

/* v6 toegang — teamkeuze bij goedkeuren in Beheer */
.bh-teampick{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:8px 0 4px; }
.bh-teampick-l{ font-size:12px; color:var(--text-3,#9aa6ba); text-transform:uppercase; letter-spacing:.05em; }
.bh-team-sel, .bh-team-new{ background:var(--bg-2,#161e2a); color:var(--text,#e8edf5); border:1px solid var(--border-2,#2f3b52); border-radius:8px; padding:7px 10px; font-size:14px; min-height:38px; }
.bh-team-new{ flex:1 1 160px; min-width:140px; }

/* v6 toegang (sh-v435) — organogram per team */
.bh-org-hint{ font-size:13px; color:var(--text-3,#9aa6ba); }
.bh-org-group{ background:var(--panel,#1a2230); border:1px solid var(--border,#2b374c); border-radius:12px; padding:16px; margin:0 0 14px; }
.bh-org-team{ font-size:15px; font-weight:700; color:var(--text,#e8edf5); margin:0 0 12px; text-align:center; }
.bh-org-count{ font-size:12px; color:var(--text-3,#9aa6ba); background:var(--bg-3,#202b3a); border-radius:999px; padding:1px 8px; margin-left:4px; }
.bh-org-row{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
.bh-org-line{ height:14px; border-left:2px solid var(--border-2,#2f3b52); width:0; margin:4px auto; }
.bh-org-node{ background:var(--bg-2,#161e2a); border:1px solid var(--border-2,#2f3b52); border-radius:10px; padding:10px 12px; min-width:118px; text-align:center; }
.bh-org-node.bh-org-inactive{ opacity:.5; }
.bh-org-node.bh-org-empty{ color:var(--text-3,#9aa6ba); font-size:13px; font-style:italic; border-style:dashed; min-width:auto; }
.bh-org-av{ width:38px; height:38px; border-radius:50%; background:#e30613; color:#fff; font-weight:800; font-size:14px; display:flex; align-items:center; justify-content:center; margin:0 auto 6px; }
.is-coord .bh-org-av{ background:#4ea1ff; }
.is-admin .bh-org-av{ background:#7c3aed; }
.bh-org-nm{ font-size:14px; font-weight:600; color:var(--text,#e8edf5); }
.bh-org-rl{ font-size:11px; color:var(--text-3,#9aa6ba); margin-top:2px; }

/* ── v471-COMPACT: spelersrapport rustiger & compacter ───────────────────────
   Doel: minder scrollen, minder visuele drukte, professioneel rapport-gevoel.
   DOM in subcriteria-row (na dynamische injectie):
     1. .subcriteria-label
     2. .report-trefwoorden  (chips — ingevoegd VOOR grade-picker)
     3. .grade-picker
     4. .subcriteria-note (textarea)
   Gebruik expliciete grid-rijen zodat label + ABCD altijd op rij 1 staan,
   chips op rij 2, textarea op rij 3 — ongeacht DOM-volgorde.
   ─────────────────────────────────────────────────────────────────────────── */

/* 1 — Grade-knoppen kleiner (was sideline-maat: 56px/20px) */
.grade-pick {
  padding: 9px 0;
  font-size: 15px;
  font-weight: 700;
  min-height: 38px;
}

/* 2 — Form-secties minder tussenruimte */
#report-form .form-section {
  margin-bottom: 14px;
  padding-bottom: 12px;
}

/* 3 — Sectietitel iets zachter */
#report-form .form-section-title {
  font-size: 10.5px;
  letter-spacing: 1px;
  margin-bottom: 10px;
  opacity: .85;
}

/* 4 — Criteria-blok zonder zware card */
#report-form .criteria-block {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border, #2b374c);
  border-radius: 0;
  padding: 10px 0;
  margin-bottom: 0;
}
#report-form .criteria-block:last-of-type { border-bottom: none; }
#report-form .criteria-block-title {
  font-size: 13px;
  font-weight: 700;
  color: var(--text, #e8edf5);
  margin-bottom: 3px;
}
#report-form .criteria-block-help {
  font-size: 11px;
  color: var(--text-3, #9aa6ba);
  margin-bottom: 8px;
}

/* 5 — Subcriteria: label + ABCD op rij 1, chips rij 2, textarea rij 3 */
#report-form .subcriteria-row {
  display: grid;
  grid-template-columns: 100px 1fr;
  grid-template-rows: auto auto auto;
  gap: 5px 10px;
  align-items: center;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border, #2b374c);
  border-radius: 0;
  padding: 8px 0;
}
#report-form .subcriteria-row:last-child { border-bottom: none; }
#report-form .subcriteria-label {
  grid-column: 1;
  grid-row: 1;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-2, #aab6c9);
  align-self: center;
}
#report-form .subcriteria-row .grade-picker {
  grid-column: 2;
  grid-row: 1;
}
#report-form .subcriteria-row .report-trefwoorden {
  grid-column: 1 / -1;
  grid-row: 2;
  margin: 0;
}
#report-form .subcriteria-row .report-trefwoorden .rep-tw-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
#report-form .subcriteria-note {
  grid-column: 1 / -1;
  grid-row: 3;
  min-height: 30px;
  height: 30px;
  resize: vertical;
}

/* 6 — Toelichting textareas in hoofdcategorieën kleiner */
#report-form .field textarea { min-height: 48px; }

/* 7 — Field-labels gedempter letterafstand */
#report-form .field label {
  font-size: 10.5px;
  letter-spacing: .6px;
}

/* 8 — Minder ruimte tussen field-rows */
#report-form .field-row { margin-bottom: 8px; }

/* ── v472-RUST: spelersrapport rustiger visueel ──────────────────────────────
   Minder contrast, geen rode sectietitels, geen glow op knoppen,
   subtielere scheidingslijnen. Zelfde inhoud, rustiger gevoel.
   ─────────────────────────────────────────────────────────────────────────── */

/* 1 — Sectietitels: geen rood, geen balk — gedempte grijze koptekst */
#report-form .form-section-title {
  color: var(--text-2, #aab6c9);
  font-size: 10px;
  letter-spacing: 1.2px;
  opacity: 1;
}
#report-form .form-section-title::before {
  display: none;
}

/* 2 — Secties minder zware scheiding */
#report-form .form-section {
  border-bottom: 1px solid rgba(255,255,255,0.04);
  margin-bottom: 10px;
  padding-bottom: 10px;
}

/* 3 — Grade-knoppen: subtielere default, geen glow bij selectie */
#report-form .grade-pick {
  border: 1px solid var(--border, #2b374c);
  border-width: 1px;
  font-size: 14px;
  font-weight: 600;
  color: var(--text-3, #9aa6ba);
  min-height: 36px;
  padding: 7px 0;
  border-radius: 7px;
}
#report-form .grade-pick:hover {
  color: var(--text-2, #aab6c9);
  border-color: var(--border-2, #2f3b52);
}
#report-form .grade-pick.selected[data-grade="A"] { box-shadow: none; }
#report-form .grade-pick.selected[data-grade="B"] { box-shadow: none; }
#report-form .grade-pick.selected[data-grade="C"] { box-shadow: none; }
#report-form .grade-pick.selected[data-grade="D"] { box-shadow: none; }

/* 4 — Criteria-blok: nog subtielere scheiding */
#report-form .criteria-block {
  border-bottom-color: rgba(255,255,255,0.05);
  padding: 8px 0;
}
#report-form .criteria-block-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text, #e8edf5);
}
#report-form .criteria-block-help {
  font-size: 11px;
  color: var(--text-3, #9aa6ba);
  margin-bottom: 6px;
  line-height: 1.4;
}

/* 5 — "Toelichting (optioneel)" label weghalen — placeholder zegt genoeg */
#report-form .field label[for^="f-tekst"],
#report-form .field label:has(+ textarea[id^="f-tekst"]) {
  display: none;
}

/* 6 — Inputvelden iets minder contrast */
#report-form .field input,
#report-form .field select,
#report-form .field textarea {
  border-color: var(--border, #2b374c);
  background: var(--bg-2, #161e2a);
}

/* 7 — Subcriteria-scheiding nog subtieler */
#report-form .subcriteria-row {
  border-bottom-color: rgba(255,255,255,0.04);
  padding: 6px 0;
}

/* 8 — Chips iets kleiner + minder opvallend default */
#report-form .subcriteria-row .report-trefwoorden .obs-tag {
  font-size: 11.5px;
  padding: 4px 9px;
}

/* ── v473-TEXTAREA: geen scrollbalk/resize, betere hoogte ─────────────── */

/* Nooit een resize-handle op textareas (hele site) */
textarea { resize: none !important; }

/* Subcriteria-note: minder smal */
#report-form .subcriteria-note {
  min-height: 46px;
  height: 46px;
  overflow: hidden;
}

/* Hoofdcategorie toelichting ook overflow hidden */
#report-form .field textarea {
  overflow: hidden;
  min-height: 52px;
}

/* ── v475-CONCEPT-STIJL: gele rand voor concepten ───────────────────────── */

/* Concept-rij in tabel: gele rand links + subtiele gele achtergrond */
tr.db-row-concept {
  background: linear-gradient(90deg, rgba(245,158,11,0.08) 0%, transparent 60%);
}
tr.db-row-concept:hover {
  background: linear-gradient(90deg, rgba(245,158,11,0.16) 0%, rgba(245,158,11,0.04) 100%) !important;
}
tr.db-row-concept td:first-child {
  border-left: 2px solid rgba(245,158,11,0.7);
}

/* db-draft-card: gele rand links (zelfde stijl) */
.db-draft-card {
  border-left: 2px solid rgba(245,158,11,0.65);
  background: linear-gradient(90deg, rgba(245,158,11,0.06) 0%, rgba(255,255,255,0.02) 100%);
}

/* ── v480-landing-org: logo + org chart + missie ── */
.lp-logo-svg { width: 26px; height: 30px; flex-shrink: 0; }

/* Org chart */
.lp-org-chart { display: flex; flex-direction: column; align-items: center; gap: 0; margin: 8px auto 0; max-width: 900px; }
.lp-org-top { display: flex; justify-content: center; }
.lp-org-node {
  background: var(--panel, #111722); border: 1px solid var(--border, #232d40);
  border-radius: 14px; padding: 16px 20px; text-align: center; position: relative;
}
.lp-org-node-head {
  background: linear-gradient(135deg, #e30613, #f5c518);
  border: none; color: #fff; min-width: 220px; max-width: 280px;
}
.lp-org-node-coord {
  background: var(--panel-2, #1d2533); border-color: var(--accent, #4ea1ff);
  min-width: 180px; max-width: 220px;
}
.lp-org-node-scout {
  background: var(--panel, #111722); border-color: var(--border-2, #2f3b52);
  min-width: 130px; max-width: 160px;
}
.lp-org-node-t { font-size: 14px; font-weight: 800; margin-bottom: 5px; line-height: 1.3; }
.lp-org-node-s { font-size: 12px; opacity: .8; line-height: 1.4; }
.lp-org-node-head .lp-org-node-t { color: #fff; font-size: 15px; }
.lp-org-node-head .lp-org-node-s { color: rgba(255,255,255,.85); }
.lp-org-node-ic { font-size: 18px; margin-bottom: 6px; }

/* Connector lines */
.lp-org-vline { width: 2px; height: 32px; background: var(--border-2, #2f3b52); margin: 0 auto; }
.lp-org-hrow { display: flex; align-items: flex-start; gap: 24px; justify-content: center; }
.lp-org-branch { display: flex; flex-direction: column; align-items: center; }
.lp-org-hline-wrap { display: flex; align-items: flex-start; position: relative; }
.lp-org-hline-wrap::before {
  content: ''; position: absolute; top: 0; left: 50%; right: 50%;
  height: 2px; background: var(--border-2, #2f3b52);
}
.lp-org-mid { position: relative; }
.lp-org-coord-row { display: flex; gap: 32px; align-items: flex-start; }
.lp-org-coord-branch { display: flex; flex-direction: column; align-items: center; }
.lp-org-scout-row { display: flex; gap: 12px; align-items: flex-start; margin-top: 0; }

/* Missie */
.lp-missie { max-width: 780px; margin: 0 auto; }
.lp-missie-label { font-size: 12px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--primary, #e30613); margin-bottom: 16px; }
.lp-missie-h { font-size: clamp(22px, 2.8vw, 34px); font-weight: 800; letter-spacing: -.4px; margin: 0 0 20px; line-height: 1.15; }
.lp-missie-p { font-size: 16px; color: var(--text-2, #9aa8bd); line-height: 1.7; margin: 0 0 14px; }
.lp-missie-tag { display: inline-block; margin-top: 16px; font-size: 14px; font-weight: 700; color: var(--text, #e8edf5); background: var(--panel-2, #1d2533); border: 1px solid var(--border-2, #2f3b52); border-radius: 30px; padding: 8px 18px; }

/* Org features grid */
.lp-org-feats { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px; margin-bottom: 40px; }

/* h2 sub */
.lp-h2-sub { text-align: center; color: var(--text-2, #9aa8bd); font-size: 15.5px; margin: -22px auto 28px; max-width: 640px; }
.lp-h2.has-sub { margin-bottom: 10px; }

/* ── v481-vormtrend-expand ── */
.sh-spark-cell { display:flex; flex-direction:column; gap:2px; }
.sh-spark-cells { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:10px; }
.dtl-trend-table { margin-top:18px; }
.dtl-trend-table-head { font-size:11px; font-weight:700; letter-spacing:.8px; text-transform:uppercase; color:var(--text-3,#8b97ad); margin-bottom:8px; }
.dtl-trend-tbl { width:100%; border-collapse:collapse; font-size:12px; }
.dtl-trend-tbl th { text-align:center; padding:5px 8px; color:var(--text-3,#8b97ad); font-weight:600; border-bottom:1px solid var(--border,#232d40); font-size:11px; }
.dtl-trend-tbl th:first-child { text-align:left; }
.dtl-trend-tbl td { text-align:center; padding:6px 8px; border-bottom:1px solid rgba(35,45,64,.5); }
.dtl-trd-dt { text-align:left !important; color:var(--text-2,#9aa8bd); }
.dtl-trd-g { font-weight:800; font-size:13px; }
.dtl-trd-a { color:var(--grade-a,#22c55e); }
.dtl-trd-b { color:var(--grade-b,#3b82f6); }
.dtl-trd-c { color:var(--grade-c,#f59e0b); }
.dtl-trd-d { color:var(--grade-d,#ef4444); }

/* ── v484-landing-foto ── */
.lp-duo-media { display:grid; grid-template-columns:1.4fr 1fr; gap:14px; align-items:start; width:100%; }
.lp-duo-a img, .lp-duo-b img { width:100%; height:auto; border-radius:10px; display:block; }
.lp-features-4col { grid-template-columns: repeat(4, 1fr) !important; }
@media (max-width:900px) { .lp-features-4col { grid-template-columns: repeat(2, 1fr) !important; } .lp-duo-media { grid-template-columns:1fr; } }
@media (max-width:560px) { .lp-features-4col { grid-template-columns: 1fr !important; } }

/* ── v487-carriere-ux ── */
.carriere-card { margin-top:12px; }
.carriere-card .compare-card-title { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; }
.carriere-actions { display:flex; gap:8px; }
.carriere-btn { padding:6px 14px; border-radius:8px; border:1px solid var(--border,#232d40); background:var(--card-bg,#151e2d); color:var(--text-1,#e2eaf6); font-size:13px; cursor:pointer; transition:background .15s; }
.carriere-btn:hover { background:var(--hover-bg,#1e2a3d); }
.carriere-btn-primary { background:var(--accent,#e30613); border-color:var(--accent,#e30613); color:#fff; }
.carriere-btn-primary:hover { background:#c00510; }

.carriere-timeline { padding:16px 4px 4px; display:flex; flex-direction:column; gap:0; }
.carriere-seizoen { display:flex; align-items:flex-start; gap:14px; position:relative; padding-bottom:18px; }
.carriere-seizoen:last-child { padding-bottom:4px; }
.carriere-left { display:flex; flex-direction:column; align-items:center; flex-shrink:0; margin-top:3px; }
.carriere-dot { width:14px; height:14px; border-radius:50%; background:var(--text-3,#8b97ad); border:2px solid var(--border,#232d40); flex-shrink:0; }
.carriere-dot.active { background:var(--accent,#e30613); border-color:var(--accent,#e30613); box-shadow:0 0 0 3px rgba(227,6,19,.18); }
.carriere-vline { width:2px; flex:1; background:var(--border,#232d40); margin-top:4px; min-height:20px; }
.carriere-seizoen:last-child .carriere-vline { display:none; }
.carriere-content { flex:1; }
.carriere-szn-label { font-size:11px; font-weight:700; letter-spacing:.7px; text-transform:uppercase; color:var(--text-3,#8b97ad); margin-bottom:4px; display:flex; align-items:center; gap:5px; }
.carriere-szn-label.active { color:var(--accent,#e30613); }
.carriere-szn-icon { font-size:13px; }
.carriere-club-row { font-size:16px; font-weight:700; color:var(--text-1,#e2eaf6); display:flex; align-items:center; gap:8px; }
.carriere-elftal-badge { background:var(--blue-pill,#1e3a5f); color:#7eb8f7; font-size:12px; font-weight:600; padding:2px 9px; border-radius:20px; }
.sh-club-logo-fallback { display:inline-flex; align-items:center; justify-content:center; border-radius:4px; background:#1e2a3d; color:#7c8aa5; font-weight:700; flex-shrink:0; }

/* Transfer modal */
.sh-transfer-modal-backdrop { position:fixed; inset:0; background:rgba(0,0,0,.7); z-index:9999; display:flex; align-items:center; justify-content:center; }
.sh-transfer-modal { background:var(--card-bg,#151e2d); border:1px solid var(--border,#232d40); border-radius:14px; padding:28px 24px 22px; width:min(480px,95vw); box-shadow:0 24px 60px rgba(0,0,0,.5); }
.sh-transfer-title { font-size:18px; font-weight:800; color:var(--text-1,#e2eaf6); margin-bottom:4px; }
.sh-transfer-sub { font-size:13px; color:var(--text-3,#8b97ad); margin-bottom:20px; }
.sh-transfer-choice { display:flex; flex-direction:column; gap:10px; margin-bottom:20px; }
.sh-transfer-choice-btn { display:flex; flex-direction:column; align-items:flex-start; gap:3px; text-align:left; padding:14px 16px; border-radius:11px; border:2px solid var(--border,#232d40); background:var(--hover-bg,#1e2a3d); color:var(--text-1,#e2eaf6); cursor:pointer; transition:border-color .15s,background .15s; }
.sh-transfer-choice-btn:hover { border-color:var(--accent,#e30613); background:rgba(227,6,19,.08); }
.sh-transfer-choice-icon { font-size:20px; margin-bottom:2px; }
.sh-transfer-choice-title { font-size:14.5px; font-weight:700; }
.sh-transfer-choice-sub { font-size:12px; color:var(--text-3,#8b97ad); font-weight:400; }
.sh-transfer-szn-toggle { display:flex; gap:8px; margin-bottom:20px; }
.sh-transfer-szn-btn { flex:1; padding:10px; border-radius:9px; border:2px solid var(--border,#232d40); background:var(--card-bg,#151e2d); color:var(--text-2,#9aa8bd); font-size:13px; font-weight:600; cursor:pointer; text-align:center; transition:all .15s; }
.sh-transfer-szn-btn.selected { border-color:var(--accent,#e30613); color:#fff; background:rgba(227,6,19,.12); }
.sh-transfer-from-box { background:var(--hover-bg,#1e2a3d); border-radius:8px; padding:10px 14px; font-size:14px; color:var(--text-2,#9aa8bd); margin-bottom:6px; }
.sh-transfer-arrow { text-align:center; font-size:20px; color:var(--text-3,#8b97ad); margin:8px 0; }
.sh-transfer-field { margin-bottom:14px; }
.sh-transfer-label { font-size:11px; font-weight:700; letter-spacing:.7px; text-transform:uppercase; color:var(--text-3,#8b97ad); margin-bottom:6px; }
.sh-transfer-input { width:100%; box-sizing:border-box; padding:10px 13px; border-radius:9px; border:1px solid var(--border,#232d40); background:var(--input-bg,#0e1623); color:var(--text-1,#e2eaf6); font-size:14px; outline:none; }
.sh-transfer-input:focus { border-color:var(--accent,#e30613); }
.sh-transfer-del-list { display:flex; flex-direction:column; gap:8px; margin-bottom:20px; max-height:280px; overflow-y:auto; }
.sh-transfer-del-row { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border-radius:9px; border:1px solid var(--border,#232d40); background:var(--hover-bg,#1e2a3d); font-size:13.5px; color:var(--text-1,#e2eaf6); }
.sh-transfer-del-btn { flex-shrink:0; padding:6px 10px; border-radius:7px; border:1px solid transparent; background:transparent; color:#ef4444; font-size:12px; cursor:pointer; }
.sh-transfer-del-btn:hover { background:rgba(239,68,68,.15); border-color:rgba(239,68,68,.35); }
.sh-transfer-btns { display:flex; gap:10px; margin-top:20px; }
.sh-transfer-btn-cancel { flex:1; padding:11px; border-radius:9px; border:1px solid var(--border,#232d40); background:transparent; color:var(--text-2,#9aa8bd); font-size:14px; cursor:pointer; }
.sh-transfer-btn-save { flex:2; padding:11px; border-radius:9px; border:none; background:linear-gradient(135deg,#e30613,#f5a623); color:#fff; font-size:14px; font-weight:700; cursor:pointer; }

/* Seizoen popup */
.sh-szn-popup-backdrop { position:fixed; inset:0; background:rgba(0,0,0,.7); z-index:9999; display:flex; align-items:center; justify-content:center; }
.sh-szn-popup { background:var(--card-bg,#151e2d); border:1px solid var(--border,#232d40); border-radius:14px; padding:28px 24px; width:min(400px,92vw); text-align:center; }
.sh-szn-popup-icon { font-size:36px; margin-bottom:12px; }
.sh-szn-popup-title { font-size:18px; font-weight:800; color:var(--text-1,#e2eaf6); margin-bottom:6px; }
.sh-szn-popup-sub { font-size:13px; color:var(--text-3,#8b97ad); margin-bottom:16px; }
.sh-szn-popup-player { background:var(--hover-bg,#1e2a3d); border-radius:9px; padding:12px; margin-bottom:20px; }
.sh-szn-popup-player-name { font-size:16px; font-weight:700; color:var(--text-1,#e2eaf6); }
.sh-szn-popup-player-info { font-size:13px; color:var(--text-2,#9aa8bd); margin-top:3px; }
.sh-szn-popup-btns { display:flex; flex-direction:column; gap:8px; }
.sh-szn-popup-btn-yes { padding:11px; border-radius:9px; border:1px solid var(--border,#232d40); background:var(--hover-bg,#1e2a3d); color:var(--text-1,#e2eaf6); font-size:14px; cursor:pointer; }
.sh-szn-popup-btn-no { padding:11px; border-radius:9px; border:none; background:linear-gradient(135deg,#e30613,#f5a623); color:#fff; font-size:14px; font-weight:700; cursor:pointer; }
ont-weight:600; cursor:pointer; }
.sh-transfer-btn-save { flex:2; background:linear-gradient(135deg,#b45309,#f59e0b); color:#fff; border:none; border-radius:10px; padding:11px; font-size:14px; font-weight:700; cursor:pointer; }
.sh-transfer-btn-save:hover { opacity:.9; }

/* ── v487-tooltip ── */
.sh-tip-wrap { position:relative; display:inline-flex; align-items:center; }
.sh-tip-icon { width:16px; height:16px; border-radius:50%; background:var(--text-3,#8b97ad); color:var(--card-bg,#151e2d); font-size:10px; font-weight:800; display:inline-flex; align-items:center; justify-content:center; cursor:default; margin-left:5px; flex-shrink:0; user-select:none; }
.sh-tip-box { display:none; position:absolute; bottom:calc(100% + 8px); right:0; width:220px; background:var(--hover-bg,#1e2a3d); border:1px solid var(--border,#232d40); border-radius:9px; padding:10px 12px; font-size:12px; line-height:1.5; color:var(--text-2,#9aa8bd); z-index:99; box-shadow:0 8px 24px rgba(0,0,0,.4); pointer-events:none; }
.sh-tip-wrap:hover .sh-tip-box { display:block; }

/* ── v487-hero-kaart ── */
.sh-hero-card { background:var(--card-bg,#151e2d); border:1px solid var(--border,#232d40); border-radius:14px; padding:20px 22px 0; margin-bottom:14px; }
.sh-hero-top { display:flex; align-items:flex-start; gap:16px; padding-bottom:18px; }
.sh-hero-avatar { flex-shrink:0; }
.sh-hero-body { flex:1; min-width:0; }
.sh-hero-name { font-size:22px; font-weight:900; color:var(--text-1,#e2eaf6); letter-spacing:-.3px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:3px; }
.sh-hero-leeftijd { font-size:13px; font-weight:600; background:var(--blue-pill,#1e3a5f); color:#7eb8f7; padding:2px 9px; border-radius:20px; }
.sh-hero-identity { background:var(--hover-bg,#1e2a3d); border-radius:10px; padding:12px 14px; margin-bottom:14px; }
.sh-hero-identity-main { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:8px; font-size:14px; }
.sh-hero-identity-club { font-weight:700; color:var(--text-1,#e2eaf6); }
.sh-hero-identity-dot { color:var(--text-3,#8b97ad); }
.sh-hero-identity-positie { color:var(--text-2,#9aa8bd); font-weight:600; }
.sh-hero-identity-stats { display:flex; flex-wrap:wrap; gap:0; }
.sh-hero-stat { display:flex; flex-direction:column; gap:2px; padding:0 16px; }
.sh-hero-stat:first-child { padding-left:0; }
.sh-hero-stat + .sh-hero-stat { border-left:1px solid var(--border,#232d40); }
.sh-hero-stat-label { font-size:10.5px; font-weight:700; letter-spacing:.6px; text-transform:uppercase; color:var(--text-3,#8b97ad); }
.sh-hero-stat-value { font-size:14px; font-weight:700; color:var(--text-1,#e2eaf6); }
.sh-hero-grades { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.sh-hero-grade-item { display:flex; align-items:center; gap:5px; font-size:12px; color:var(--text-3,#8b97ad); font-weight:600; text-transform:uppercase; letter-spacing:.5px; }
.sh-hero-divider { border:none; border-top:1px solid var(--border,#232d40); margin:0 -22px; }
.sh-hero-carriere { padding:14px 0 16px; }
.sh-hero-carriere-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.sh-hero-carriere-title { font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.7px; color:var(--text-3,#8b97ad); }
@media (max-width:560px) { .sh-hero-name { font-size:18px; } .sh-hero-identity-stats { gap:8px 0; } .sh-hero-stat { flex:1 1 40%; padding:0 12px; } .sh-hero-stat:nth-child(odd) { border-left:none; padding-left:0; } }
