/* Bestelnet-template — de opmaak, voor elke zaak hetzelfde (bestelnet-template/assets/site.css).
   De zaak geeft alleen zijn kleuren mee (--merk, --merk-donker, --merk-zacht, --merk-tekst, --op-merk, --accent …,
   in een <style> in de kop van elke pagina). Licht en donker: html[data-theme="dark"], met de knop in de kopbalk. */

:root {
  --achter: #FAF6EF; --vlak: #FFFFFF; --vlak-2: #F4EEE4; --vlak-3: #ECE4D7;
  --inkt: #1C1712; --inkt-2: #5A5146; --inkt-3: #81776A;
  --lijn: #EAE2D5; --lijn-2: #D8CDBB;
  --open: #1E9E5A; --straks: #D08A12; --dicht: #C2412D;
  --goed: #1B7A48; --goed-zacht: #E2F2E8; --fout: #B4361F; --fout-zacht: #FBE6E0;
  --voet: #17130F;
  --schaduw-1: 0 1px 2px rgba(40, 28, 14, .06), 0 1px 1px rgba(40, 28, 14, .04);
  --schaduw-2: 0 12px 32px -14px rgba(40, 28, 14, .25), 0 2px 6px rgba(40, 28, 14, .05);
  --schaduw-3: 0 28px 64px -22px rgba(40, 28, 14, .4), 0 4px 12px rgba(40, 28, 14, .06);
  --r: 18px; --r-groot: 26px; --r-pil: 999px;
  --kop-font: 'Bricolage Grotesque', system-ui, sans-serif;
  --tekst-font: 'Figtree', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --kop-h: 68px; --balk-h: 62px;
  color-scheme: light;
}
:root[data-theme="dark"] {
  --achter: #14110D; --vlak: #1E1A15; --vlak-2: #28221B; --vlak-3: #332C23;
  --inkt: #F6F0E6; --inkt-2: #CDC3B4; --inkt-3: #9E9384;
  --lijn: #342D24; --lijn-2: #4A4033;
  --goed: #63CF91; --goed-zacht: #17301F; --fout: #F2907A; --fout-zacht: #3B1D16;
  --voet: #0D0B08;
  --schaduw-1: none; --schaduw-2: 0 12px 32px -14px rgba(0, 0, 0, .65); --schaduw-3: 0 28px 64px -22px rgba(0, 0, 0, .8);
  color-scheme: dark;
}

/* ---------- basis ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--achter); color: var(--inkt); font: 400 16px/1.55 var(--tekst-font); -webkit-font-smoothing: antialiased; overflow-wrap: anywhere; }
img, svg { display: block; max-width: 100%; }
a { color: var(--merk-tekst); }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3 { font-family: var(--kop-font); font-weight: 800; letter-spacing: -.02em; line-height: 1.08; margin: 0; }
p { margin: 0; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.wrap { width: 100%; max-width: 1240px; margin: 0 auto; padding: 0 24px; }
.verborgen { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
a.verborgen:focus { position: fixed !important; left: 12px; top: 12px; width: auto; height: auto; clip: auto; z-index: 100; background: var(--vlak); padding: 10px 16px; border-radius: 12px; box-shadow: var(--schaduw-2); }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.sym { width: 32px; height: 32px; flex: none; }
.boven { font: 700 13px/1.2 var(--tekst-font); letter-spacing: .09em; text-transform: uppercase; color: var(--merk-tekst); margin-bottom: 12px; }
.klein { font-size: 14px; color: var(--inkt-3); margin-top: 10px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation: none !important; transition: none !important; } }

/* ---------- knoppen ---------- */
.knop { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 46px; padding: 0 22px; border: 0; border-radius: var(--r-pil); background: var(--merk); color: var(--op-merk); font-weight: 700; font-size: 15.5px; line-height: 1.1; text-decoration: none; text-align: center; cursor: pointer; transition: transform .15s, background .15s, box-shadow .15s; }
.knop svg { width: 18px; height: 18px; flex: none; }
.knop:hover { background: var(--merk-donker); transform: translateY(-1px); }
.knop:active { transform: none; }
.knop-groot { min-height: 54px; padding: 0 28px; font-size: 16.5px; }
.knop-klein { min-height: 40px; padding: 0 16px; font-size: 14.5px; }
.knop-breed { width: 100%; }
.knop-lijn { background: var(--vlak); color: var(--inkt); box-shadow: inset 0 0 0 1.5px var(--lijn-2); }
.knop-lijn:hover { background: var(--vlak-2); }
.knop-licht { background: #FFFFFF; color: #1C1712; }
.knop-licht:hover { background: #F4EEE4; }
.knop[aria-disabled="true"], .knop:disabled { opacity: .45; cursor: not-allowed; transform: none; }
.ikoonknop { width: 42px; height: 42px; flex: none; border: 0; border-radius: 50%; background: transparent; color: var(--inkt-2); display: grid; place-items: center; cursor: pointer; }
.ikoonknop:hover { background: var(--vlak-2); color: var(--inkt); }
.ikoonknop svg { width: 21px; height: 21px; }
.ic-zon, :root[data-theme="dark"] .ic-maan { display: none; }
:root[data-theme="dark"] .ic-zon { display: block; }

/* ---------- open of dicht ---------- */
.status { display: inline-flex; align-items: center; gap: 8px; min-height: 34px; padding: 0 13px; border-radius: var(--r-pil); background: var(--vlak-2); color: var(--inkt-2); font-size: 13.5px; font-weight: 600; white-space: nowrap; }
.status i { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--inkt-3); }
.status[data-stand="open"] i { background: var(--open); animation: puls 2.4s ease-out infinite; }
.status[data-stand="straks"] i { background: var(--straks); }
.status[data-stand="dicht"] i { background: var(--dicht); }
.status-licht { background: rgba(255, 255, 255, .16); color: inherit; }
@keyframes puls { 0% { box-shadow: 0 0 0 0 rgba(30, 158, 90, .45); } 70% { box-shadow: 0 0 0 7px rgba(30, 158, 90, 0); } 100% { box-shadow: 0 0 0 0 rgba(30, 158, 90, 0); } }

/* ---------- kopbalk ---------- */
.kop { position: sticky; top: 0; z-index: 40; background: var(--vlak); border-bottom: 1px solid var(--lijn); }
.kop-in { height: var(--kop-h); display: flex; align-items: center; gap: 18px; }
.merk { display: flex; align-items: center; gap: 10px; flex: none; color: var(--inkt); text-decoration: none; }
.merk > svg, .merk > img { width: 42px; height: 42px; object-fit: contain; }
.merk-woord { display: flex; flex-direction: column; line-height: 1; }
.merk-woord small { margin-bottom: 3px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--inkt-3); }
.merk-woord b { font-family: var(--kop-font); font-size: 21px; font-weight: 800; letter-spacing: -.02em; }
.kop-nav { display: flex; gap: 2px; margin-left: 10px; }
.kop-nav a { padding: 9px 14px; border-radius: var(--r-pil); color: var(--inkt-2); font-size: 15px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.kop-nav a:hover { background: var(--vlak-2); color: var(--inkt); }
.kop-nav a[aria-current="page"] { background: var(--vlak-2); color: var(--inkt); }
.kop-nav .kop-nav-tel { display: none; }
.kop-rechts { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.kop-tel { display: inline-flex; align-items: center; gap: 7px; padding: 0 6px; color: var(--inkt); font-size: 15px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.kop-tel svg { width: 18px; height: 18px; color: var(--merk-tekst); }
.kop-menuknop { display: none; }
.kop-mandje { gap: 10px; white-space: nowrap; }
.kop-mandje .tal { min-width: 24px; height: 24px; padding: 0 6px; border-radius: 12px; background: var(--op-merk); color: var(--merk); display: grid; place-items: center; font-size: 13px; font-weight: 800; }
.kop-mandje .bedrag { font-weight: 600; opacity: .9; }
.kop-terug { white-space: nowrap; }
@media (max-width: 1180px) { .kop-tel { display: none; } }
@media (max-width: 940px) {
  .kop-menuknop { display: grid; }
  .kop-nav { position: absolute; top: var(--kop-h); left: 0; right: 0; margin: 0; padding: 8px 16px 18px; display: none; flex-direction: column; background: var(--vlak); border-bottom: 1px solid var(--lijn); box-shadow: var(--schaduw-2); }
  .kop-nav.is-open { display: flex; }
  .kop-nav a { padding: 13px 12px; font-size: 16.5px; border-radius: 12px; }
  .kop-nav .kop-nav-tel { display: flex; align-items: center; gap: 10px; color: var(--merk-tekst); }
  .kop-nav-tel svg { width: 19px; height: 19px; }
  .kop .status { display: none; }
}
@media (max-width: 520px) {
  .kop-in { gap: 8px; }
  .kop-rechts { gap: 2px; }
  .merk > svg, .merk > img { width: 38px; height: 38px; }
  .merk-woord b { font-size: 19px; }
  .kop-mandje-woord, .kop-terug span { display: none; }
  .kop-terug { padding: 0 12px; }
}
@media (max-width: 360px) { .merk-woord small, .kop-mandje .bedrag { display: none; } }

/* melding onder de kopbalk als de zaak dicht is */
.melding { background: var(--accent-zacht); border-bottom: 1px solid var(--lijn); }
.melding .wrap { min-height: 44px; display: flex; align-items: center; justify-content: center; gap: 10px; padding-top: 9px; padding-bottom: 9px; font-size: 14.5px; font-weight: 500; text-align: center; }
.melding b { font-weight: 700; }

/* ---------- homepagina: hero ---------- */
.held { padding: 56px 0 0; }
.held-in { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 64px; align-items: center; }
.held h1 { font-size: clamp(42px, 5.6vw, 72px); line-height: .98; letter-spacing: -.04em; }
.held h1 em { display: block; font-style: normal; color: var(--merk-tekst); }
.held-lead { max-width: 33em; margin-top: 22px; color: var(--inkt-2); font-size: 18.5px; }
.snel { max-width: 580px; margin-top: 30px; padding: 10px; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: center; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); box-shadow: var(--schaduw-2); }
.snel .wijzer-uit { grid-column: 1 / -1; }
.held-knoppen { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.held-beeld { position: relative; aspect-ratio: 1 / 1.04; border-radius: 40px; }
.held-beeld.is-foto img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; box-shadow: var(--schaduw-3); }
.held-beeld.is-getekend { background: radial-gradient(circle at 50% 42%, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0) 58%), radial-gradient(rgba(0, 0, 0, .07) 1.6px, transparent 1.8px) 0 0 / 22px 22px, var(--accent); box-shadow: var(--schaduw-3); }
.held-tekening { position: absolute; inset: 0; overflow: hidden; border-radius: inherit; }
.ht { position: absolute; filter: drop-shadow(0 18px 22px rgba(60, 30, 0, .22)); }
.ht-icoon { width: 100%; height: auto; }
.ht-1 { width: 60%; left: 20%; top: 17%; animation: zweef 7s ease-in-out infinite; }
.ht-2 { width: 34%; left: 5%; bottom: 7%; transform: rotate(-9deg); }
.ht-3 { width: 33%; right: 6%; top: 5%; transform: rotate(11deg); }
@keyframes zweef { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
.zwevend { position: absolute; z-index: 2; display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: var(--vlak); color: var(--inkt); border-radius: 18px; box-shadow: var(--schaduw-3); }
.zw-score { top: 28px; left: -26px; flex-direction: column; align-items: flex-start; gap: 3px; }
.zw-score b { font: 800 30px/1 var(--kop-font); letter-spacing: -.03em; }
.zw-score .sterren { font-size: 17px; }
.zw-score small { color: var(--inkt-3); font-size: 12.5px; }
.zw-tijd { right: -22px; bottom: 132px; }
.zw-tijd svg { width: 28px; height: 28px; color: var(--merk-tekst); }
.zw-tijd span { display: flex; flex-direction: column; line-height: 1.2; }
.zw-tijd small { color: var(--inkt-3); font-size: 12.5px; }
.held-beeld .pop-zwevend { position: absolute; z-index: 2; left: -30px; bottom: 30px; width: 310px; border: 0; box-shadow: var(--schaduw-3); }

/* ---------- homepagina: infostrook ---------- */
.feiten { padding: 48px 0 0; }
.feiten-rij { list-style: none; margin: 0; padding: 6px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); box-shadow: var(--schaduw-1); }
.feiten-rij li { display: flex; align-items: center; gap: 14px; padding: 16px 18px; min-width: 0; }
.feiten-rij li + li { border-left: 1px solid var(--lijn); }
.feiten-rij b { display: block; font-size: 15.5px; }
.feiten-rij small { display: block; color: var(--inkt-2); font-size: 14px; }
.feit-ic { width: 46px; height: 46px; flex: none; display: grid; place-items: center; border-radius: 14px; background: var(--merk-zacht); color: var(--merk-tekst); }
.feit-ic svg { width: 22px; height: 22px; }

/* ---------- homepagina: secties ---------- */
.sectie { padding: 96px 0; }
.sectie-zacht { background: var(--vlak-2); }
.sectie h2 { font-size: clamp(30px, 3.6vw, 46px); }
.sectie-kop { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 34px; }
.sectie-kop p { max-width: 36em; margin-top: 12px; color: var(--inkt-2); font-size: 17px; }
.pijllink { display: inline-flex; align-items: center; gap: 8px; color: var(--merk-tekst); font-weight: 700; text-decoration: none; white-space: nowrap; }
.pijllink svg { width: 18px; height: 18px; transition: transform .15s; }
.pijllink:hover svg { transform: translateX(3px); }

/* populaire gerechten: kaarten */
.pop-raster { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.pop { position: relative; display: flex; flex-direction: column; padding: 0; overflow: hidden; text-align: left; background: var(--vlak); color: var(--inkt); border: 1px solid var(--lijn); border-radius: var(--r-groot); cursor: pointer; transition: transform .18s, box-shadow .18s; }
.pop:hover { transform: translateY(-3px); box-shadow: var(--schaduw-2); }
.pop-beeld { display: grid; place-items: center; aspect-ratio: 16 / 10; background: var(--merk-zacht); overflow: hidden; }
.pop:nth-child(3n + 2) .pop-beeld { background: var(--accent-zacht); }
.pop-beeld .sym { width: 46%; height: auto; aspect-ratio: 1; transition: transform .25s; }
.pop:hover .pop-beeld .sym { transform: scale(1.06) rotate(-3deg); }
.pop-beeld img { width: 100%; height: 100%; object-fit: cover; }
.pop-tekst { flex: 1; display: flex; flex-direction: column; gap: 4px; padding: 18px 20px 20px; min-width: 0; }
.pop-cat { color: var(--inkt-3); font-size: 12px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.pop-naam { font-family: var(--kop-font); font-size: 20px; font-weight: 700; letter-spacing: -.01em; line-height: 1.15; }
.pop-desc { color: var(--inkt-2); font-size: 14.5px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pop-voet { margin-top: auto; padding-top: 12px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.pop-prijs { font-size: 17px; font-weight: 700; white-space: nowrap; }
.pop-prijs small, .gerecht-prijs small { color: var(--inkt-3); font-size: 13px; font-weight: 500; }
.plus { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--merk); color: var(--op-merk); transition: transform .15s; }
.plus svg { width: 18px; height: 18px; }
.pop:hover .plus, .gerecht:hover .plus, .erbij-item:hover .plus { transform: scale(1.08); }
.in-mandje { position: absolute; top: 10px; right: 10px; z-index: 1; min-width: 26px; height: 26px; padding: 0 7px; display: grid; place-items: center; border-radius: 13px; background: var(--accent); color: var(--op-accent); font-size: 13px; font-weight: 800; box-shadow: 0 0 0 3px var(--vlak); }
/* compact: in de hero en bovenaan de kaart */
.pop-klein, .pop-zwevend { flex-direction: row; align-items: center; gap: 12px; padding: 10px; border-radius: 20px; }
.pop-klein .pop-beeld, .pop-zwevend .pop-beeld { width: 72px; height: 72px; aspect-ratio: 1; flex: none; border-radius: 14px; }
.pop-klein .pop-beeld .sym, .pop-zwevend .pop-beeld .sym { width: 72%; }
.pop-klein .pop-tekst, .pop-zwevend .pop-tekst { padding: 0 4px 0 0; gap: 1px; }
.pop-klein .pop-naam, .pop-zwevend .pop-naam { font-size: 16px; }
.pop-klein .pop-cat, .pop-zwevend .pop-cat { font-size: 11px; }
.pop-klein .pop-voet, .pop-zwevend .pop-voet { padding-top: 4px; }
.pop-klein .plus, .pop-zwevend .plus { width: 34px; height: 34px; }
.pop-klein:hover, .pop-zwevend:hover { transform: none; }

/* beoordelingen en waarom */
.waarom { display: grid; grid-template-columns: 380px minmax(0, 1fr); gap: 64px; align-items: center; }
.waarom.zonder-score { grid-template-columns: minmax(0, 1fr); }
.score-kaart { padding: 36px; background: var(--merk); color: var(--op-merk); border-radius: var(--r-groot); box-shadow: var(--schaduw-2); }
.score-kaart .boven { color: inherit; opacity: .8; }
.score-groot { display: flex; align-items: baseline; gap: 8px; }
.score-groot b { font: 800 92px/.9 var(--kop-font); letter-spacing: -.05em; }
.score-groot span { font-size: 20px; opacity: .75; }
.score-kaart .sterren { --leeg: rgba(255, 255, 255, .3); margin-top: 10px; font-size: 30px; }
.score-kaart p { margin-top: 14px; opacity: .92; }
.score-kaart a { color: inherit; font-weight: 700; }
.sterren { --p: calc(var(--score) / 5 * 100%); display: inline-block; letter-spacing: 2px; line-height: 1; background: linear-gradient(90deg, var(--accent) var(--p), var(--leeg, var(--lijn-2)) var(--p)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.waarom-lijst { list-style: none; margin: 30px 0 0; padding: 0; display: grid; gap: 24px; }
.waarom-lijst li { display: flex; gap: 16px; }
.waarom-lijst b { display: block; margin-bottom: 3px; font-size: 18px; }
.waarom-lijst li > span:last-child > span { color: var(--inkt-2); }

/* over */
.over { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 64px; align-items: start; }
.over-tekst p { max-width: 36em; margin-top: 16px; color: var(--inkt-2); font-size: 17.5px; }
.over-tekst .knop { margin-top: 28px; }
.kaartindex { padding: 28px; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); }
.kaartindex h3 { margin-bottom: 12px; font-size: 20px; }
.kaartindex ul { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 12px; }
.kaartindex li { break-inside: avoid; }
.kaartindex a { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 12px; color: var(--inkt); font-weight: 600; text-decoration: none; }
.kaartindex a:hover { background: var(--vlak-2); }
.kaartindex .sym { width: 30px; height: 30px; }
.kaartindex small { margin-left: auto; color: var(--inkt-3); font-weight: 500; }

/* bezorggebied */
.gebied { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 64px; align-items: start; }
.gebied-tekst > p { margin-top: 14px; color: var(--inkt-2); font-size: 17px; }
.wijzer-los { max-width: 470px; margin-top: 24px; display: grid; gap: 10px; }
.zonetabel { width: 100%; border-collapse: separate; border-spacing: 0; overflow: hidden; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r); font-size: 15px; }
.zonetabel th { padding: 13px 18px; background: var(--vlak-2); color: var(--inkt-3); font-size: 12px; font-weight: 700; letter-spacing: .07em; text-align: left; text-transform: uppercase; }
.zonetabel td { padding: 14px 18px; border-top: 1px solid var(--lijn); vertical-align: top; }
.zonetabel td small { display: block; margin-top: 2px; color: var(--inkt-3); font-size: 13px; }
.zonetabel th:not(:first-child), .zonetabel td:not(:first-child) { text-align: right; white-space: nowrap; }

/* openingstijden en locatie */
.locatie { display: grid; grid-template-columns: 430px minmax(0, 1fr); gap: 28px; align-items: stretch; }
.locatie-kaart { padding: 32px; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); }
.locatie-kaart h2 { margin-bottom: 14px; font-size: 32px; }
.locatie-kaart h3 { margin: 26px 0 8px; font-size: 18px; }
.uren { width: 100%; border-collapse: collapse; font-size: 15.5px; }
.uren td, .uren th { padding: 9px 0; border-bottom: 1px dashed var(--lijn-2); }
.uren th { color: var(--inkt-3); font-size: 12px; letter-spacing: .07em; text-align: right; text-transform: uppercase; }
.uren td:not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.uren td + td { padding-left: 14px; }
.uren .dicht { color: var(--inkt-3); }
.uren tr.vandaag td { color: var(--merk-tekst); font-weight: 700; }
.adres { line-height: 1.6; }
.knoprij { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.locatie-map { min-height: 400px; overflow: hidden; background: var(--vlak-2); border: 1px solid var(--lijn); border-radius: var(--r-groot); }
.kaartje { display: block; width: 100%; height: 100%; min-height: 400px; border: 0; }
:root[data-theme="dark"] .kaartje { filter: invert(.9) hue-rotate(180deg) brightness(.92) contrast(.9); }

/* slotband */
.slot { padding: 72px 0; background: var(--merk); color: var(--op-merk); }
.slot-in { display: flex; align-items: center; justify-content: space-between; gap: 32px; }
.slot h2 { font-size: clamp(34px, 4.2vw, 56px); letter-spacing: -.035em; }
.slot p { max-width: 34em; margin-top: 12px; font-size: 17.5px; opacity: .9; }
.slot-knoppen { display: flex; flex-direction: column; align-items: flex-end; gap: 14px; flex: none; }

/* ---------- voettekst ---------- */
.voet { padding: 64px 0 28px; background: var(--voet); color: #E9E1D5; }
.voet-in { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.1fr; gap: 40px; }
.voet .merk { color: #FFFFFF; }
.voet .merk-woord small, .voet h2, .voet-merk p, .voet-onder, .voet-onder a, .bn-label a { color: #B5AA9A; }
.voet-merk p { max-width: 28em; margin-top: 16px; font-size: 14.5px; }
.voet h2 { margin-bottom: 14px; font: 700 12.5px var(--tekst-font); letter-spacing: .09em; text-transform: uppercase; }
.voet ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; font-size: 15px; }
.voet a { color: #F4EEE4; text-decoration: none; }
.voet a:hover { text-decoration: underline; }
.voet p { font-size: 15px; line-height: 1.7; }
.voet-uren li { display: flex; justify-content: space-between; gap: 12px; }
.voet-onder { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-top: 48px; padding-top: 24px; border-top: 1px solid rgba(255, 255, 255, .1); font-size: 13.5px; }
.voet-onder nav { display: flex; gap: 18px; }
.bn-label { margin-left: auto; }
.bn-label a { display: inline-flex; align-items: center; gap: 8px; }
.bn-label svg { width: 22px; height: 22px; flex: none; }

/* ---------- bezorgen of afhalen ---------- */
.schakel { display: inline-flex; gap: 4px; padding: 4px; background: var(--vlak-2); border-radius: var(--r-pil); }
.schakel button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; padding: 0 16px; border: 0; border-radius: var(--r-pil); background: transparent; color: var(--inkt-2); font-size: 15px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.schakel button svg { width: 19px; height: 19px; flex: none; }
.schakel button[aria-pressed="true"] { background: var(--vlak); color: var(--inkt); box-shadow: var(--schaduw-1), 0 0 0 1px var(--lijn); }
.schakel button[aria-pressed="true"] svg { color: var(--merk-tekst); }
.schakel-groot button { min-height: 54px; padding: 0 18px 0 14px; text-align: left; }
.schakel-groot button span { display: flex; flex-direction: column; line-height: 1.15; }
.schakel-groot button small { color: var(--inkt-3); font-size: 12.5px; font-weight: 500; }
.pc-rij { display: flex; gap: 8px; min-width: 0; }
.pc-rij input { flex: 1; min-width: 0; height: 48px; padding: 0 18px; background: var(--vlak); border: 1.5px solid var(--lijn-2); border-radius: var(--r-pil); font-size: 16px; }
.pc-rij input:focus { outline: none; border-color: var(--merk); box-shadow: 0 0 0 4px var(--merk-zacht); }
.pc-rij .knop { min-height: 48px; }
.wijzer-uit:empty { display: none; }
.wijzer-uit .knop { margin-top: 10px; }
.zonebericht { display: block; padding: 12px 16px; background: var(--vlak-2); color: var(--inkt-2); border-radius: 16px; font-size: 14.5px; }
.zonebericht b { display: block; color: var(--inkt); font-size: 15px; }
.zonebericht.is-goed { background: var(--goed-zacht); }
.zonebericht.is-goed b { color: var(--goed); }
.zonebericht.is-fout { background: var(--fout-zacht); }
.zonebericht.is-fout b { color: var(--fout); }
.groep-meer { padding: 4px 0; border: 0; background: none; color: var(--merk-tekst); font-weight: 700; text-decoration: underline; cursor: pointer; }

/* ---------- bestellen: zaakkop ---------- */
.zaakkop { padding-top: 20px; }
.zaakkop-band { position: relative; height: 150px; overflow: hidden; border-radius: var(--r-groot); background: radial-gradient(rgba(0, 0, 0, .07) 1.6px, transparent 1.8px) 0 0 / 22px 22px, var(--accent); }
.zaakkop-band.is-foto img { width: 100%; height: 100%; object-fit: cover; }
.band-iconen { position: absolute; inset: 0; display: flex; align-items: center; justify-content: space-around; padding: 0 3%; }
.band-icoon { width: 96px; height: 96px; flex: none; transform: rotate(-7deg); filter: drop-shadow(0 10px 12px rgba(60, 30, 0, .2)); }
.band-icoon:nth-child(even) { transform: rotate(8deg) translateY(12px); }
.zaakkop-kaart { position: relative; display: flex; align-items: center; gap: 18px; margin: -46px 20px 0; padding: 18px 22px; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); box-shadow: var(--schaduw-2); }
.zaakkop-logo { width: 78px; height: 78px; flex: none; display: grid; place-items: center; margin-top: -36px; padding: 8px; background: var(--vlak); border: 1px solid var(--lijn); border-radius: 22px; box-shadow: var(--schaduw-2); }
.zaakkop-logo svg, .zaakkop-logo img { width: 100%; height: 100%; object-fit: contain; }
.zaakkop-logo.klein { width: 48px; height: 48px; margin: 0; padding: 5px; border-radius: 14px; box-shadow: none; }
.zaakkop-tekst { min-width: 0; }
.zaakkop h1 { font-size: clamp(24px, 2.6vw, 32px); }
.zaakkop-meta { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 6px; color: var(--inkt-2); font-size: 14.5px; }
.meta-score { display: inline-flex; align-items: center; gap: 5px; color: var(--inkt); }
.meta-score svg { width: 16px; height: 16px; color: var(--accent); }
.zaakkop-acties { margin-left: auto; display: flex; align-items: center; gap: 10px; flex: none; }
.wijzer-balk { display: grid; grid-template-columns: auto minmax(0, 380px) minmax(0, 1fr); gap: 12px; align-items: center; margin-top: 16px; }

/* ---------- bestellen: categorieën en zoeken ---------- */
.kaartbalk { position: sticky; top: var(--kop-h); z-index: 30; margin-top: 20px; background: var(--achter); border-bottom: 1px solid var(--lijn); }
.kaartbalk-in { height: var(--balk-h); display: flex; align-items: center; gap: 16px; }
.tabs { flex: 1; min-width: 0; display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; -webkit-mask-image: linear-gradient(90deg, #000 90%, transparent); mask-image: linear-gradient(90deg, #000 90%, transparent); }
.tabs::-webkit-scrollbar { display: none; }
.chip { flex: none; padding: 9px 14px; border-radius: var(--r-pil); color: var(--inkt-2); font-size: 14.5px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.chip:hover { background: var(--vlak-2); color: var(--inkt); }
.tabs .chip[aria-current="true"] { background: var(--inkt); color: var(--achter); }
.zoek { position: relative; flex: 0 0 280px; }
.zoek svg { position: absolute; left: 15px; top: 50%; width: 18px; height: 18px; transform: translateY(-50%); color: var(--inkt-3); pointer-events: none; }
.zoek input { width: 100%; height: 44px; padding: 0 16px 0 42px; background: var(--vlak); border: 1.5px solid var(--lijn-2); border-radius: var(--r-pil); font-size: 15px; }
.zoek input:focus { outline: none; border-color: var(--merk); box-shadow: 0 0 0 4px var(--merk-zacht); }

/* ---------- bestellen: kaart en mandje ---------- */
.bestelvlak { display: grid; grid-template-columns: 210px minmax(0, 1fr) 370px; gap: 32px; align-items: start; padding-top: 28px; padding-bottom: 88px; }
.catlijst { position: sticky; top: calc(var(--kop-h) + 24px); max-height: calc(100vh - var(--kop-h) - 48px); overflow: auto; display: flex; flex-direction: column; gap: 2px; scrollbar-width: thin; }
.catlijst .zoek { flex: none; margin-bottom: 12px; }
.catlijst-nav { display: flex; flex-direction: column; gap: 2px; }
.catlijst .chip { padding: 10px 14px; border-radius: 12px; }
.catlijst .chip[aria-current="true"] { background: var(--merk-zacht); color: var(--merk-tekst); }
.kaartkolom { min-width: 0; }
.pop-strook { margin-bottom: 40px; }
.pop-strook h2, .categorie h2 { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; font-size: 26px; }
.sym-kop { width: 38px; height: 38px; }
.pop-rij { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(250px, 1fr); gap: 12px; padding-bottom: 6px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; }
.pop-rij .pop { scroll-snap-align: start; }
.categorie { margin-bottom: 44px; }
.categorie h2 small { color: var(--inkt-3); font: 600 14px var(--tekst-font); letter-spacing: 0; }
.gerechten { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.gerecht { position: relative; width: 100%; min-height: 112px; display: flex; align-items: stretch; gap: 14px; padding: 16px 16px 16px 18px; text-align: left; background: var(--vlak); color: var(--inkt); border: 1px solid var(--lijn); border-radius: var(--r); cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.gerecht:hover { border-color: var(--lijn-2); box-shadow: var(--schaduw-2); }
.gerecht-tekst { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.gerecht-naam { font-size: 16.5px; font-weight: 700; line-height: 1.25; }
.gerecht-desc { color: var(--inkt-2); font-size: 14px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gerecht-prijs { margin-top: auto; padding-top: 6px; font-size: 15.5px; font-weight: 700; }
.gerecht .plus { align-self: flex-end; width: 38px; height: 38px; }
.gerecht-beeld { width: 96px; height: 96px; flex: none; align-self: center; overflow: hidden; border-radius: 14px; background: var(--vlak-2); }
.gerecht-beeld img { width: 100%; height: 100%; object-fit: cover; }
.gerecht.heeft-beeld .plus { position: absolute; right: 10px; bottom: 10px; box-shadow: 0 0 0 3px var(--vlak); }
.tag { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: var(--r-pil); font-size: 11.5px; font-weight: 700; vertical-align: 2px; }
.tag.is-hot { background: var(--fout-zacht); color: var(--fout); }
.tag.is-pop { background: var(--accent-zacht); color: var(--accent-tekst); }
.tag.is-veg { background: var(--goed-zacht); color: var(--goed); }
.tag.is-new { background: var(--merk-zacht); color: var(--merk-tekst); }
.leeg-zoek { padding: 40px 0; color: var(--inkt-2); text-align: center; }

.mandje { position: sticky; top: calc(var(--kop-h) + 20px); max-height: calc(100vh - var(--kop-h) - 40px); display: flex; flex-direction: column; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); box-shadow: var(--schaduw-2); }
.mandje-kop { display: flex; align-items: center; gap: 10px; padding: 20px 22px 12px; }
.mandje-kop h2 { font-size: 22px; }
.mandje-tal { padding: 3px 10px; background: var(--vlak-2); color: var(--inkt-2); border-radius: var(--r-pil); font-size: 13px; font-weight: 700; }
.mandje-tal:empty { display: none; }
.mandje-dicht { display: none; margin-left: auto; width: 40px; height: 40px; place-items: center; border: 0; border-radius: 50%; background: var(--vlak-2); cursor: pointer; }
.mandje-dicht svg { width: 18px; height: 18px; }
.mandje-lijf { overflow: auto; padding: 0 22px 22px; display: flex; flex-direction: column; gap: 14px; }
.mandje-modus .schakel { display: flex; }
.mandje-modus .schakel button { flex: 1; }
.mandje-zone { padding: 10px 14px; background: var(--vlak-2); color: var(--inkt-2); border-radius: 14px; font-size: 14px; }
.mandje-zone button { padding: 0; border: 0; background: none; color: var(--merk-tekst); font-weight: 700; text-decoration: underline; cursor: pointer; }
.mandje-zone.is-fout { background: var(--fout-zacht); color: var(--fout); }
form.mandje-zone { padding: 0; background: none; }
.drempel { padding: 12px 14px; background: var(--accent-zacht); border-radius: 14px; font-size: 14px; }
.drempel-balk { height: 8px; margin-bottom: 8px; overflow: hidden; background: rgba(0, 0, 0, .08); border-radius: 4px; }
:root[data-theme="dark"] .drempel-balk { background: rgba(255, 255, 255, .1); }
.drempel-balk i { display: block; height: 100%; background: var(--accent); border-radius: inherit; transition: width .3s; }
.drempel.is-gehaald { background: var(--goed-zacht); color: var(--goed); font-weight: 600; }
.regels { display: flex; flex-direction: column; }
.regel { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; padding: 12px 0; border-bottom: 1px solid var(--lijn); }
.regel-naam { font-weight: 600; }
.regel-prijs { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.regel-opties { grid-column: 1 / -1; color: var(--inkt-3); font-size: 13.5px; }
.regel .teller { grid-column: 1 / -1; margin-top: 6px; }
.teller { display: inline-flex; align-items: center; gap: 4px; }
.teller button { width: 32px; height: 32px; display: grid; place-items: center; background: var(--vlak); border: 1.5px solid var(--lijn-2); border-radius: 50%; cursor: pointer; }
.teller button svg { width: 14px; height: 14px; }
.teller span { min-width: 28px; font-weight: 700; text-align: center; }
.teller .weg { width: auto; height: auto; margin-left: 10px; border: 0; border-radius: 0; background: none; color: var(--inkt-3); font-size: 13px; text-decoration: underline; }
.erbij > p { margin-bottom: 8px; font-size: 14px; font-weight: 700; }
.erbij-rij { display: flex; flex-direction: column; gap: 6px; }
.erbij-item { position: relative; width: 100%; display: flex; align-items: center; gap: 10px; padding: 7px 7px 7px 14px; text-align: left; background: transparent; color: var(--inkt); border: 1.5px dashed var(--lijn-2); border-radius: 14px; cursor: pointer; }
.erbij-item > span:first-child { flex: 1; min-width: 0; font-size: 14.5px; font-weight: 600; }
.erbij-item b { color: var(--inkt-2); font-size: 14px; white-space: nowrap; }
.erbij-item .plus { width: 30px; height: 30px; }
.erbij-item .plus svg { width: 15px; height: 15px; }
.erbij-item .in-mandje { display: none; }
.som { display: flex; flex-direction: column; gap: 6px; font-size: 15px; }
.som > div { display: flex; justify-content: space-between; gap: 12px; }
.som .gratis { color: var(--goed); font-weight: 700; }
.som .totaal { margin-top: 4px; padding-top: 10px; border-top: 1px solid var(--lijn); font-size: 18px; font-weight: 800; }
.mandje-leeg { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 18px 8px; color: var(--inkt-2); font-size: 15px; text-align: center; }
.mandje-leeg > svg { width: 46px; height: 46px; color: var(--lijn-2); }
.vorige { width: 100%; padding: 14px 16px; text-align: left; background: var(--merk-zacht); border-radius: 16px; }
.vorige b { display: block; color: var(--inkt); }
.vorige p { margin: 4px 0 10px; color: var(--inkt-2); font-size: 14px; }
.mandje-voet { position: sticky; bottom: 0; margin: 0 -22px -22px; padding: 14px 22px 22px; display: flex; flex-direction: column; gap: 10px; background: var(--vlak); border-top: 1px solid var(--lijn); border-radius: 0 0 var(--r-groot) var(--r-groot); }
.mandje-melding { color: var(--inkt-2); font-size: 14px; text-align: center; }
.mandje-melding.is-fout { color: var(--fout); font-weight: 600; }
.mandjebalk { display: none; }
.scherm { display: none; }

/* ---------- keuzevenster en infovenster ---------- */
dialog.kies, dialog.infovenster { width: min(560px, calc(100% - 32px)); max-height: min(88vh, 860px); padding: 0; overflow: hidden; background: var(--vlak); color: var(--inkt); border: 0; border-radius: var(--r-groot); box-shadow: var(--schaduw-3); }
dialog.kies[open], dialog.infovenster[open] { display: flex; flex-direction: column; }
dialog::backdrop { background: rgba(20, 14, 8, .5); }
.kies-kop { position: relative; padding: 24px 24px 16px; border-bottom: 1px solid var(--lijn); }
.kies-kop h2 { padding-right: 44px; font-size: 24px; }
.kies-kop p { margin-top: 6px; color: var(--inkt-2); font-size: 15px; }
.kies-kop .prijs { margin-top: 10px; color: var(--inkt); font-size: 17px; font-weight: 700; }
.kies-sluit { position: absolute; top: 16px; right: 16px; width: 40px; height: 40px; display: grid; place-items: center; background: var(--vlak-2); border: 0; border-radius: 50%; cursor: pointer; }
.kies-sluit svg { width: 18px; height: 18px; }
.kies-lijf { flex: 1; overflow: auto; padding: 4px 24px 18px; }
.groep { margin: 18px 0 0; padding: 0; border: 0; min-width: 0; }
.groep legend { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; padding: 0; }
.groep legend span { font-size: 16.5px; font-weight: 700; }
.groep legend small { flex: none; padding: 3px 9px; background: var(--vlak-2); color: var(--inkt-2); border-radius: var(--r-pil); font-size: 12px; font-weight: 700; }
.groep legend small.is-verplicht { background: var(--accent-zacht); color: var(--accent-tekst); }
.optie { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; padding: 12px 14px; border: 1.5px solid var(--lijn); border-radius: 14px; font-size: 15px; cursor: pointer; }
.optie:has(input:checked) { background: var(--merk-zacht); border-color: var(--merk); }
.optie:has(input:disabled) { opacity: .5; cursor: not-allowed; }
.optie input { width: 19px; height: 19px; flex: none; margin: 0; accent-color: var(--merk); }
.optie span { flex: 1; min-width: 0; }
.optie em { color: var(--inkt-2); font-size: 14px; font-style: normal; white-space: nowrap; }
.groep.is-fout legend span { color: var(--fout); }
.groep.is-fout .optie { border-color: var(--fout); }
.kies-opm { margin-top: 18px; }
.kies-fout { margin: 0 24px 10px; color: var(--fout); font-size: 14.5px; font-weight: 600; }
.kies-voet { display: flex; align-items: center; gap: 12px; padding: 14px 24px 20px; background: var(--vlak); border-top: 1px solid var(--lijn); }
.kies-voet .teller { padding: 4px; background: var(--vlak-2); border-radius: var(--r-pil); }
.kies-voet .teller button { width: 38px; height: 38px; border: 0; }
.kies-voet .knop { flex: 1; min-height: 50px; }
.infovenster-kop { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 24px; border-bottom: 1px solid var(--lijn); }
.infovenster-kop h2 { font-size: 22px; }
.infovenster-kop .kies-sluit { position: static; }
.infovenster-lijf { overflow: auto; padding: 0 24px 24px; }
.infovenster-lijf section { padding-top: 20px; }
.infovenster-lijf h3 { margin-bottom: 10px; font-size: 17px; }
.infovenster .zonetabel { font-size: 14px; }
.infovenster .zonetabel th, .infovenster .zonetabel td { padding: 10px 12px; }

/* ---------- formulieren ---------- */
.veld { display: flex; flex-direction: column; gap: 6px; }
.veld label { font-size: 14.5px; font-weight: 600; }
.veld small { color: var(--inkt-3); font-size: 13px; font-weight: 400; }
.veld input, .veld select, .veld textarea { width: 100%; height: 50px; padding: 0 14px; background: var(--vlak); border: 1.5px solid var(--lijn-2); border-radius: 14px; font-size: 16px; }
.veld textarea { height: 96px; padding: 12px 14px; resize: vertical; }
.veld input:focus, .veld select:focus, .veld textarea:focus { outline: none; border-color: var(--merk); box-shadow: 0 0 0 4px var(--merk-zacht); }
.veld [aria-invalid="true"] { border-color: var(--fout); box-shadow: 0 0 0 4px var(--fout-zacht); }
.velden { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.velden .vol { grid-column: 1 / -1; }

/* ---------- afrekenen ---------- */
.afrekenpagina { padding-top: 28px; padding-bottom: 88px; }
.voortgang { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 22px; padding: 0; color: var(--inkt-3); font-size: 14px; font-weight: 600; }
.voortgang li { display: flex; align-items: center; gap: 8px; }
.voortgang li + li::before { content: ''; width: 28px; height: 2px; margin-right: 2px; background: var(--lijn-2); }
.voortgang span { width: 26px; height: 26px; display: grid; place-items: center; background: var(--vlak-2); border-radius: 50%; font-size: 13px; }
.voortgang span svg { width: 14px; height: 14px; }
.voortgang .is-klaar span { background: var(--goed); color: #FFFFFF; }
.voortgang [aria-current] { color: var(--inkt); }
.voortgang [aria-current] span { background: var(--merk); color: var(--op-merk); }
.afreken { display: grid; grid-template-columns: minmax(0, 1fr) 390px; gap: 32px; align-items: start; }
.afreken h1 { margin-bottom: 20px; font-size: clamp(32px, 4vw, 46px); }
.stap { margin-bottom: 16px; padding: 24px; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); }
.stap h2 { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; font-size: 21px; }
.nr { width: 30px; height: 30px; flex: none; display: grid; place-items: center; background: var(--merk-zacht); color: var(--merk-tekst); border-radius: 50%; font: 800 15px var(--tekst-font); }
.stap .schakel { display: flex; }
.stap .schakel button { flex: 1; }
[data-adres], [data-afhaal-uitleg] { margin-top: 16px; }
.betaal-uitleg { display: flex; align-items: center; gap: 12px; color: var(--inkt-2); font-size: 15px; }
.logo-ideal { flex: none; padding: 5px 9px; background: #CC0066; color: #FFFFFF; border-radius: 7px; font-size: 13px; font-weight: 800; }
.fout { margin-bottom: 12px; padding: 12px 16px; background: var(--fout-zacht); color: var(--fout); border-radius: 14px; font-weight: 600; }
.veilig { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 12px; color: var(--inkt-3); font-size: 13.5px; text-align: center; }
.veilig svg { width: 16px; height: 16px; flex: none; }
.overzicht { position: sticky; top: calc(var(--kop-h) + 20px); padding: 22px; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); box-shadow: var(--schaduw-2); }
.overzicht-kop { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
.overzicht-kop h2 { font-size: 20px; }
.overzicht-kop p { color: var(--inkt-3); font-size: 14px; }
.overzicht .regels { margin-bottom: 14px; }
.overzicht-wijzig { margin-top: 14px; text-align: center; }
.wijzig { font-weight: 700; }
.leeg-afreken, .klaar { max-width: 560px; margin: 40px auto; padding: 48px 32px; text-align: center; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); }
.leeg-afreken h1, .klaar h1 { margin-bottom: 12px; font-size: 34px; }
.leeg-afreken p, .klaar p { margin-bottom: 12px; color: var(--inkt-2); }
.klaar strong { color: var(--inkt); }
.klaar-icoon { width: 72px; height: 72px; display: grid; place-items: center; margin: 0 auto 18px; background: var(--goed); color: #FFFFFF; border-radius: 50%; }
.klaar-icoon svg { width: 36px; height: 36px; }
.klaar .demo { padding: 10px 14px; background: var(--accent-zacht); color: var(--inkt); border-radius: 12px; font-size: 14px; }
.leeg-afreken .knop, .klaar .knop { margin-top: 10px; }

/* ---------- info en tekstpagina's ---------- */
.info-kop { padding-top: 52px; padding-bottom: 30px; }
.info-kop h1 { font-size: clamp(36px, 4.8vw, 58px); letter-spacing: -.035em; }
.info-kop > p:last-child { max-width: 40em; margin-top: 14px; color: var(--inkt-2); font-size: 17.5px; }
.info-raster { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; padding-bottom: 88px; }
.blok { padding: 28px; background: var(--vlak); border: 1px solid var(--lijn); border-radius: var(--r-groot); min-width: 0; }
.blok-breed { grid-column: 1 / -1; }
.blok h2 { margin-bottom: 14px; font-size: 24px; }
.blok p + p { margin-top: 10px; }
.blok > .knop { margin-top: 16px; }
.blok .zonetabel { margin-top: 12px; }
.blok .kaartje { height: 240px; min-height: 240px; margin-top: 18px; border: 1px solid var(--lijn); border-radius: var(--r); }
.score { display: flex; align-items: center; gap: 16px; }
.score > b { font: 800 58px/1 var(--kop-font); letter-spacing: -.04em; }
.score .sterren { font-size: 22px; }
.score p { margin-top: 6px; color: var(--inkt-2); }
.tekst { max-width: 780px; padding-top: 52px; padding-bottom: 88px; }
.tekst h1 { margin-bottom: 20px; font-size: clamp(32px, 4vw, 48px); }
.tekst h2 { margin: 28px 0 8px; font-size: 22px; }
.tekst p { color: var(--inkt-2); font-size: 16.5px; }
.tekst-terug { margin-top: 32px; }
.tekst-midden { text-align: center; }

/* ---------- melding onderin ---------- */
.toast { position: fixed; left: 50%; bottom: 28px; z-index: 80; max-width: calc(100% - 32px); padding: 12px 20px; background: var(--inkt); color: var(--achter); border-radius: var(--r-pil); box-shadow: var(--schaduw-3); font-size: 15px; font-weight: 600; text-align: center; opacity: 0; pointer-events: none; transform: translate(-50%, 16px); transition: opacity .2s, transform .2s; }
.toast.is-zichtbaar { opacity: 1; transform: translate(-50%, 0); }

/* ---------- breedtes ---------- */
@media (max-width: 1239px) {
  .bestelvlak { grid-template-columns: minmax(0, 1fr) 350px; }
  .catlijst { display: none; }
  .mandje { top: calc(var(--kop-h) + var(--balk-h) + 20px); max-height: calc(100vh - var(--kop-h) - var(--balk-h) - 40px); }
}
@media (min-width: 1240px) { .kaartbalk { display: none; } }
@media (max-width: 1100px) {
  .held-in { gap: 44px; }
  .zw-score { left: 14px; }
  .zw-tijd { right: 14px; }
  .held-beeld .pop-zwevend { left: 14px; }
  .waarom, .over, .gebied { gap: 44px; }
  .locatie { grid-template-columns: 380px minmax(0, 1fr); }
}
@media (max-width: 1019px) {
  .bestelvlak { grid-template-columns: minmax(0, 1fr); }
  .mandje { position: fixed; z-index: 60; top: auto; left: 0; right: 0; bottom: 0; max-height: 88vh; border: 0; border-radius: 26px 26px 0 0; transform: translateY(105%); visibility: hidden; transition: transform .28s cubic-bezier(.2, .8, .2, 1), visibility 0s .28s; }
  .mandje.is-open { transform: none; visibility: visible; transition: transform .28s cubic-bezier(.2, .8, .2, 1); }
  .mandje-dicht { display: grid; }
  .mandje-voet { border-radius: 0; padding-bottom: calc(22px + env(safe-area-inset-bottom)); }
  .scherm { display: block; position: fixed; inset: 0; z-index: 55; background: rgba(20, 14, 8, .45); opacity: 0; pointer-events: none; transition: opacity .2s; }
  .scherm.is-open { opacity: 1; pointer-events: auto; }
  .mandjebalk { position: fixed; z-index: 50; left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); height: 58px; padding: 0 20px 0 10px; display: flex; align-items: center; justify-content: space-between; gap: 12px; background: var(--merk); color: var(--op-merk); border: 0; border-radius: var(--r-pil); box-shadow: var(--schaduw-3); font-size: 16px; font-weight: 700; cursor: pointer; }
  .mandjebalk > span:first-child { display: flex; align-items: center; gap: 10px; }
  .mandjebalk .aantal { min-width: 38px; height: 38px; padding: 0 8px; display: grid; place-items: center; background: var(--op-merk); color: var(--merk); border-radius: 19px; font-weight: 800; }
  body[data-pagina="menu"] .toast { bottom: 86px; }
  body[data-pagina="menu"] .voet { padding-bottom: 100px; }
}
@media (max-width: 960px) {
  .afreken { grid-template-columns: minmax(0, 1fr); }
  .overzicht { position: static; order: -1; }
}
@media (max-width: 900px) {
  .held { padding-top: 32px; }
  .held-in { grid-template-columns: minmax(0, 1fr); }
  .held-beeld { width: 100%; max-width: 560px; margin: 8px auto 0; aspect-ratio: 1.12; }
  .waarom, .over, .gebied, .locatie { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .pop-raster { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feiten-rij { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feiten-rij li + li { border-left: 0; }
  .feiten-rij li:nth-child(even) { border-left: 1px solid var(--lijn); }
  .feiten-rij li:nth-child(n + 3) { border-top: 1px solid var(--lijn); }
  .sectie { padding: 68px 0; }
  .sectie-kop { flex-direction: column; align-items: flex-start; }
  .slot-in { flex-direction: column; align-items: flex-start; }
  .slot-knoppen { align-items: flex-start; }
  .voet-in { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wijzer-balk { grid-template-columns: auto minmax(0, 1fr); }
  .wijzer-balk .wijzer-uit { grid-column: 1 / -1; }
  .info-raster { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .wrap { padding: 0 16px; }
  .held h1 { font-size: 42px; }
  .held-lead { font-size: 17px; }
  .snel { grid-template-columns: minmax(0, 1fr); border-radius: 22px; }
  .snel .schakel { display: flex; }
  .snel .schakel button { flex: 1; }
  .held-knoppen .knop { flex: 1; padding: 0 16px; white-space: nowrap; }
  .held-knoppen .knop svg { display: none; }
  .held-beeld { border-radius: 30px; }
  .zw-tijd { display: none; }
  .zw-score { top: 16px; left: 16px; padding: 10px 14px; }
  .zw-score b { font-size: 24px; }
  .held-beeld .pop-zwevend { left: 12px; right: 12px; bottom: 12px; width: auto; }
  .feiten { padding-top: 32px; }
  .feiten-rij li { padding: 14px 10px; gap: 10px; }
  .feit-ic { width: 38px; height: 38px; border-radius: 12px; }
  .feit-ic svg { width: 19px; height: 19px; }
  .feiten-rij b { font-size: 14.5px; }
  .feiten-rij small { font-size: 13px; }
  .pop-raster { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .pop-raster .pop { flex-direction: row; border-radius: 20px; }
  .pop-raster .pop-beeld { width: 108px; aspect-ratio: auto; flex: none; }
  .pop-raster .pop-tekst { padding: 14px 14px 14px 16px; }
  .pop-raster .pop-naam { font-size: 17px; }
  .score-kaart { padding: 28px; }
  .score-groot b { font-size: 76px; }
  .kaartindex { padding: 20px; }
  .kaartindex ul { columns: 1; }
  .locatie-kaart { padding: 22px; }
  .locatie-map, .kaartje { min-height: 300px; }
  .zonetabel th, .zonetabel td { padding: 12px; }
  .voet-in { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .bn-label { margin-left: 0; }
  .zaakkop { padding-top: 12px; }
  .zaakkop-band { height: 112px; border-radius: 22px; }
  .band-icoon { width: 70px; height: 70px; }
  .zaakkop-kaart { flex-wrap: wrap; gap: 12px; margin: -38px 8px 0; padding: 14px; }
  .zaakkop-logo { width: 62px; height: 62px; margin-top: -32px; border-radius: 18px; }
  .zaakkop-acties { width: 100%; margin-left: 0; justify-content: space-between; }
  .wijzer-balk { grid-template-columns: minmax(0, 1fr); }
  .wijzer-balk .schakel { display: flex; }
  .wijzer-balk .schakel button { flex: 1; }
  .kaartbalk-in { height: auto; flex-direction: column; align-items: stretch; gap: 8px; padding-top: 10px; padding-bottom: 10px; }
  .zoek { flex: none; }
  .gerechten { grid-template-columns: minmax(0, 1fr); }
  .gerecht { min-height: 0; }
  .categorie h2, .pop-strook h2 { font-size: 23px; }
  .velden { grid-template-columns: minmax(0, 1fr); }
  .stap { padding: 18px; }
  .klaar, .leeg-afreken { padding: 36px 20px; }
  dialog.kies, dialog.infovenster { width: 100%; max-width: 100%; max-height: 92vh; margin: auto 0 0; border-radius: 24px 24px 0 0; }
  .kies-kop, .kies-lijf, .kies-voet, .infovenster-kop, .infovenster-lijf { padding-left: 18px; padding-right: 18px; }
  .kies-voet { padding-bottom: calc(18px + env(safe-area-inset-bottom)); }
}
@media (max-width: 380px) {
  .feiten-rij { grid-template-columns: minmax(0, 1fr); }
  .feiten-rij li:nth-child(even) { border-left: 0; }
  .feiten-rij li + li { border-top: 1px solid var(--lijn); }
  .held h1 { font-size: 36px; }
  .schakel button { padding: 0 10px; }
  .schakel-groot button { padding: 0 10px; }
  .pc-rij .knop { padding: 0 16px; }
  .pop-raster .pop-beeld { width: 88px; }
}
