.vvz-sportlink {
  --vvz-blue:#0053A1;
  --vvz-light-blue:#3E95E6;
  --vvz-black:#222221;
  --vvz-white:#FFFFFF;
  --vvz-yellow:#FFCC00;
  --vvz-soft:#F5F7FA;
  --vvz-line:#DCE3EC;
  --vvz-muted:#66727d;
  --vvz-soft-blue:#eef6ff;
  --vvz-radius:14px;
  --vvz-radius-small:9px;
  --vvz-shadow:0 6px 22px rgba(18,45,76,.08);

  width:100%;
  min-width:0;
  color:var(--vvz-black);
  font:inherit;
}

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

/* Date grouping: quiet context, not a heavy banner. */
.vvz-sportlink__day {
  width:100%;
  min-width:0;
  margin:0 0 1.85rem;
  overflow:visible;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}

.vvz-sportlink__date-heading {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:1rem;
  margin:0;
  padding:0 0 .62rem;
  border:0;
  border-bottom:2px solid var(--vvz-blue);
  background:transparent;
  color:var(--vvz-blue);
  font-family:inherit;
  font-size:1rem;
  font-weight:800;
  line-height:1.25;
  letter-spacing:0;
  text-transform:none !important;
}

.vvz-sportlink__date-title {
  min-width:0;
}

.vvz-sportlink__date-count {
  flex:0 0 auto;
  color:var(--vvz-muted);
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.01em;
  text-transform:none;
}

/* Shared match shell. */
.vvz-sportlink__match {
  position:relative;
  display:grid;
  align-items:center;
  min-width:0;
  min-height:78px;
  padding:.95rem 1rem;
  border:1px solid var(--vvz-line);
  border-top:0;
  background:var(--vvz-white);
  transition:background-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.vvz-sportlink__date-heading + .vvz-sportlink__match {
  margin-top:.55rem;
  border-top:1px solid var(--vvz-line);
  border-radius:var(--vvz-radius) var(--vvz-radius) 0 0;
}

.vvz-sportlink__day .vvz-sportlink__match:last-child {
  border-radius:0 0 var(--vvz-radius) var(--vvz-radius);
}

.vvz-sportlink__day .vvz-sportlink__date-heading + .vvz-sportlink__match:last-child {
  border-radius:var(--vvz-radius);
}

@media (hover:hover) and (pointer:fine) {
  .vvz-sportlink__match:hover {
    z-index:1;
    background:#fbfdff;
    box-shadow:0 8px 22px rgba(18,45,76,.08), inset 4px 0 0 var(--vvz-light-blue);
  }
}

.vvz-sportlink__time {
  grid-area:time;
  align-self:center;
  color:var(--vvz-blue);
  font-size:.93rem;
  font-weight:850;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}

.vvz-sportlink__side {
  min-width:0;
  font-size:1rem;
  line-height:1.28;
}

.vvz-sportlink__side--home {
  grid-area:home;
  text-align:right;
}

.vvz-sportlink__side--away {
  grid-area:away;
  text-align:left;
}

.vvz-sportlink__team {
  display:inline-block;
  min-width:0;
  max-width:100%;
  color:#303942;
  font-weight:700;
  overflow-wrap:anywhere;
  word-break:normal;
}

.vvz-sportlink__team--vvz {
  color:var(--vvz-blue);
  font-weight:900;
}

.vvz-sportlink__center {
  grid-area:center;
  min-width:0;
  justify-self:center;
  text-align:center;
}

.vvz-sportlink__aside {
  min-width:0;
}

.vvz-sportlink__details {
  grid-area:details;
  min-width:0;
  justify-self:end;
  text-align:right;
}

/* Results: time | home -> score <- away. */
.vvz-sportlink__match--result {
  grid-template-columns:72px minmax(0,1fr) 96px minmax(0,1fr);
  grid-template-areas:"time home center away";
  gap:1.15rem;
}

.vvz-sportlink__scoreboard {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:88px;
  min-height:46px;
  padding:.35rem .62rem;
  border:1px solid #d2e4f7;
  border-radius:10px;
  background:linear-gradient(180deg,#f5faff 0%,#eaf4fe 100%);
  color:var(--vvz-blue);
  font-size:1.42rem;
  font-weight:900;
  line-height:1;
  font-variant-numeric:tabular-nums;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
}

.vvz-sportlink__score-home,
.vvz-sportlink__score-away {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:1.2ch;
}

.vvz-sportlink__score-separator {
  margin:0 .34rem;
  color:#8aa6c2;
  font-size:.86rem;
  font-weight:800;
}

.vvz-sportlink__scoreboard--raw {
  font-size:1rem;
}

/* Program / referee: same match composition, with details at the end. */
.vvz-sportlink__match--program,
.vvz-sportlink__match--referee {
  grid-template-columns:72px minmax(0,1fr) 58px minmax(0,1fr) minmax(170px,240px);
  grid-template-areas:"time home center away details";
  gap:1rem;
}

.vvz-sportlink__versus {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:30px;
  border-radius:999px;
  background:#f0f5fa;
  color:#788898;
  font-size:.68rem;
  font-weight:900;
  letter-spacing:.06em;
}

.vvz-sportlink__meta {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:.25rem .42rem;
  max-width:240px;
  color:var(--vvz-muted);
  font-size:.8rem;
  line-height:1.3;
}

.vvz-sportlink__meta span {
  display:inline-flex;
  align-items:center;
  min-width:0;
}

.vvz-sportlink__meta span + span::before {
  content:"•";
  margin-right:.42rem;
  color:#a5b2bf;
}

/* Referees */
.vvz-sportlink__official {
  display:grid;
  gap:.08rem;
  justify-items:end;
  max-width:240px;
  color:var(--vvz-black);
}

.vvz-sportlink__official-label {
  color:var(--vvz-muted);
  font-size:.68rem;
  font-weight:750;
  line-height:1.2;
  text-transform:uppercase;
  letter-spacing:.06em;
}

.vvz-sportlink__official strong {
  color:var(--vvz-blue);
  font-size:.9rem;
  line-height:1.25;
}

.vvz-sportlink__official small {
  color:var(--vvz-muted);
  font-size:.76rem;
  line-height:1.25;
}

.vvz-sportlink__official--unknown strong {
  color:var(--vvz-muted);
  font-weight:700;
}

/* Cancellations */
.vvz-sportlink__match--cancelled {
  grid-template-columns:72px minmax(0,1fr) 118px minmax(0,1fr);
  grid-template-areas:"time home center away";
  gap:1.1rem;
  background:#fffdf8;
}

.vvz-sportlink__status--cancelled {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:104px;
  padding:.42rem .72rem;
  border:1px solid #edd57b;
  border-radius:999px;
  background:#fff4c8;
  color:#654d00;
  font-size:.8rem;
  font-weight:850;
  line-height:1.15;
  white-space:nowrap;
}

/* Empty states */
.vvz-sportlink__empty {
  position:relative;
  width:100%;
  min-width:0;
  padding:1rem 1.15rem 1rem 1.35rem;
  overflow:hidden;
  border:1px solid #d7e8fa;
  border-radius:var(--vvz-radius);
  background:var(--vvz-soft-blue);
  color:#334354;
  box-shadow:var(--vvz-shadow);
}

.vvz-sportlink__empty::before {
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:5px;
  background:var(--vvz-blue);
}

/* Standings */
.vvz-sportlink__standings {
  width:100%;
  min-width:0;
  overflow:hidden;
  border:1px solid var(--vvz-line);
  border-radius:var(--vvz-radius);
  background:var(--vvz-white);
  box-shadow:var(--vvz-shadow);
}

.vvz-sportlink__standing {
  display:grid;
  grid-template-columns:64px minmax(220px,1fr) 58px 52px 52px 52px 64px 68px;
  gap:.25rem;
  align-items:center;
  min-width:0;
  padding:.72rem .9rem;
  border-top:1px solid var(--vvz-line);
  color:#2d3740;
}

.vvz-sportlink__standing:first-child { border-top:0; }

.vvz-sportlink__standing--head {
  min-height:48px;
  padding-top:.68rem;
  padding-bottom:.68rem;
  background:var(--vvz-blue);
  color:var(--vvz-white);
  font-size:.82rem;
  font-weight:800;
}

.vvz-sportlink__standing:not(.vvz-sportlink__standing--head):nth-child(odd) { background:#fbfcfe; }

.vvz-sportlink__standing--own {
  position:relative;
  background:var(--vvz-soft-blue) !important;
  box-shadow:inset 4px 0 0 var(--vvz-blue);
}

.vvz-sportlink__standing--own .vvz-sportlink__standing-cell--team,
.vvz-sportlink__standing--own .vvz-sportlink__standing-cell--points {
  color:var(--vvz-blue);
  font-weight:850;
}

.vvz-sportlink__standing-cell {
  min-width:0;
  text-align:center;
  font-variant-numeric:tabular-nums;
}

.vvz-sportlink__standing-cell--team {
  overflow-wrap:anywhere;
  text-align:left;
  font-variant-numeric:normal;
}

.vvz-sportlink__standing-cell--points { font-size:1.02rem; }

/* Medium widths: keep score composition, move secondary details below. */
@media (max-width:1100px) {
  .vvz-sportlink__match--program,
  .vvz-sportlink__match--referee {
    grid-template-columns:72px minmax(0,1fr) 58px minmax(0,1fr);
    grid-template-areas:
      "time home center away"
      ". details details details";
    row-gap:.5rem;
  }

  .vvz-sportlink__details {
    justify-self:stretch;
    text-align:left;
  }

  .vvz-sportlink__meta {
    justify-content:flex-start;
    max-width:none;
  }

  .vvz-sportlink__official {
    justify-items:start;
    max-width:none;
    text-align:left;
  }
}

@media (max-width:960px) {
  .vvz-sportlink__match--result {
    grid-template-columns:62px minmax(0,1fr) 86px minmax(0,1fr);
    gap:.85rem;
  }

  .vvz-sportlink__match--program,
  .vvz-sportlink__match--referee,
  .vvz-sportlink__match--cancelled {
    grid-template-columns:62px minmax(0,1fr) 54px minmax(0,1fr);
    gap:.78rem;
  }

  .vvz-sportlink__scoreboard {
    min-width:78px;
    font-size:1.25rem;
  }

  .vvz-sportlink__standing {
    grid-template-columns:52px minmax(0,1fr) 52px 58px 62px;
    padding:.7rem .75rem;
  }

  .vvz-sportlink__standing-cell--won,
  .vvz-sportlink__standing-cell--drawn,
  .vvz-sportlink__standing-cell--lost { display:none; }
}

/* Mobile: result becomes a real scoreboard card. */
@media (max-width:768px) {
  .vvz-sportlink__day { margin-bottom:1.35rem; }

  .vvz-sportlink__date-heading {
    gap:.65rem;
    padding-bottom:.5rem;
    font-size:.92rem;
  }

  .vvz-sportlink__date-count { font-size:.7rem; }

  .vvz-sportlink__match {
    min-height:0;
    padding:.8rem .82rem;
  }

  .vvz-sportlink__match--result {
    grid-template-columns:minmax(0,1fr) 48px;
    grid-template-areas:
      "time time"
      "home scorehome"
      "away scoreaway";
    gap:.34rem .72rem;
  }

  .vvz-sportlink__match--result .vvz-sportlink__time {
    margin-bottom:.12rem;
    font-size:.8rem;
  }

  .vvz-sportlink__match--result .vvz-sportlink__side {
    text-align:left;
    font-size:.95rem;
    line-height:1.22;
  }

  .vvz-sportlink__match--result .vvz-sportlink__side--home { grid-area:home; }
  .vvz-sportlink__match--result .vvz-sportlink__side--away { grid-area:away; }

  .vvz-sportlink__match--result .vvz-sportlink__center,
  .vvz-sportlink__match--result .vvz-sportlink__scoreboard { display:contents; }

  .vvz-sportlink__score-home {
    grid-area:scorehome;
    align-self:center;
    justify-self:end;
    width:38px;
    min-height:32px;
    border-radius:7px;
    background:var(--vvz-soft-blue);
    color:var(--vvz-blue);
    font-size:1.08rem;
    font-weight:900;
  }

  .vvz-sportlink__score-away {
    grid-area:scoreaway;
    align-self:center;
    justify-self:end;
    width:38px;
    min-height:32px;
    border-radius:7px;
    background:#f5f7fa;
    color:#263746;
    font-size:1.08rem;
    font-weight:900;
  }

  .vvz-sportlink__score-separator { display:none; }

  .vvz-sportlink__scoreboard--raw {
    display:flex !important;
    grid-area:scorehome / scorehome / scoreaway / scoreaway;
    min-width:42px;
    min-height:34px;
    padding:.25rem .4rem;
    font-size:.82rem;
  }

  .vvz-sportlink__match--program,
  .vvz-sportlink__match--referee {
    grid-template-columns:1fr;
    grid-template-areas:
      "time"
      "home"
      "away"
      "details";
    gap:.3rem;
  }

  .vvz-sportlink__match--program .vvz-sportlink__center,
  .vvz-sportlink__match--referee .vvz-sportlink__center { display:none; }

  .vvz-sportlink__match--program .vvz-sportlink__side,
  .vvz-sportlink__match--referee .vvz-sportlink__side {
    text-align:left;
  }

  .vvz-sportlink__details {
    justify-self:stretch;
    padding-top:.28rem;
    text-align:left;
  }

  .vvz-sportlink__meta {
    justify-content:flex-start;
    max-width:none;
    font-size:.76rem;
  }

  .vvz-sportlink__official {
    justify-items:start;
    max-width:none;
    text-align:left;
  }

  .vvz-sportlink__match--cancelled {
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:
      "time center"
      "home home"
      "away away";
    gap:.34rem .7rem;
  }

  .vvz-sportlink__match--cancelled .vvz-sportlink__side { text-align:left; }

  .vvz-sportlink__status--cancelled {
    min-width:78px;
    padding:.32rem .56rem;
    font-size:.72rem;
  }

  .vvz-sportlink__standing {
    grid-template-columns:42px minmax(0,1fr) 44px 52px;
    gap:.18rem;
    padding:.66rem .62rem;
    font-size:.86rem;
  }

  .vvz-sportlink__standing--head {
    min-height:44px;
    font-size:.75rem;
  }

  .vvz-sportlink__standing--head .vvz-sportlink__standing-cell--position { font-size:0; }
  .vvz-sportlink__standing--head .vvz-sportlink__standing-cell--position::after { content:"Pos"; font-size:.75rem; }

  .vvz-sportlink__standing-cell--won,
  .vvz-sportlink__standing-cell--drawn,
  .vvz-sportlink__standing-cell--lost,
  .vvz-sportlink__standing-cell--goal_difference { display:none; }

  .vvz-sportlink__standing-cell--points { font-size:.94rem; }
}

@media (max-width:480px) {
  .vvz-sportlink__date-heading {
    align-items:flex-start;
    font-size:.86rem;
  }

  .vvz-sportlink__date-count { padding-top:.08rem; }

  .vvz-sportlink__match { padding:.72rem .7rem; }

  .vvz-sportlink__match--result {
    grid-template-columns:minmax(0,1fr) 42px;
    gap:.3rem .58rem;
  }

  .vvz-sportlink__match--result .vvz-sportlink__side { font-size:.91rem; }

  .vvz-sportlink__score-home,
  .vvz-sportlink__score-away {
    width:34px;
    min-height:30px;
    font-size:1rem;
  }

  .vvz-sportlink__standing {
    grid-template-columns:36px minmax(0,1fr) 40px 46px;
    padding:.62rem .5rem;
    font-size:.81rem;
  }

  .vvz-sportlink__standing-cell--team { line-height:1.2; }
}

/* 1.0.3: programma toont locatie en veld als vast tweeregelig eindblok. */
.vvz-sportlink__program-meta {
  display:grid;
  gap:.22rem;
  justify-items:end;
  max-width:240px;
  color:var(--vvz-black);
  font-size:.78rem;
  line-height:1.25;
}

.vvz-sportlink__program-meta-row {
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:.4rem;
  align-items:baseline;
  width:100%;
  min-width:0;
  text-align:right;
}

.vvz-sportlink__program-meta-label {
  color:var(--vvz-muted);
  font-size:.68rem;
  font-weight:750;
  text-transform:uppercase;
  letter-spacing:.045em;
}

.vvz-sportlink__program-meta strong {
  min-width:0;
  color:#344250;
  font-size:.8rem;
  font-weight:750;
  overflow-wrap:anywhere;
}

@media (max-width:1100px) {
  .vvz-sportlink__program-meta {
    justify-items:start;
    max-width:none;
  }

  .vvz-sportlink__program-meta-row {
    grid-template-columns:58px minmax(0,1fr);
    text-align:left;
  }
}
