/* ==========================================================================
   De Printkamer · cart.css
   Winkelwagen-lade (tab 2 · 79:1893 e.v.), winkelwagenpagina (tab 4 · 57:2618, leeg 57:2998)
   en gedeelde onderdelen van het overzicht (ook gebruikt bij afrekenen en bedankt).
   ========================================================================== */

/* ---------- Gedeeld: verzendbalk ---------- */
.verzendbalk { display: grid; gap: 8px; padding: 12px 14px 14px; border-radius: 16px; background: var(--kleur-wit); }
.verzendbalk__tekst { display: flex; align-items: center; gap: 8px; font: 600 14px/1.45 var(--font-tekst); }
.verzendbalk__tekst .icoon { width: 18px; height: 18px; }
.verzendbalk__balk { position: relative; height: 8px; border-radius: 8px; background: var(--kleur-lavendel-licht); overflow: hidden; }
.verzendbalk__balk span { position: absolute; inset: 0 auto 0 0; border-radius: 8px; background: var(--kleur-limoen); transition: width .3s var(--ease); }
.verzendbalk--pagina { gap: 10px; padding: 16px 18px; border-radius: 20px; background: var(--kleur-limoen-licht); }
.verzendbalk--pagina .verzendbalk__tekst { font: 400 16px/1.55 var(--font-tekst); }
.verzendbalk--pagina .verzendbalk__tekst strong { font-weight: 700; }
.verzendbalk--pagina .verzendbalk__tekst .icoon { width: 20px; height: 20px; }
.verzendbalk--pagina .verzendbalk__balk { background: var(--kleur-wit); }
.verzendbalk--pagina .verzendbalk__balk span { background: var(--kleur-inkt); }

/* ---------- Gedeeld: stepper ---------- */
.aantal { display: inline-flex; align-items: center; gap: 2px; border: 1px solid var(--kleur-lijn); border-radius: var(--radius-rond); background: var(--kleur-wit); }
.aantal__knop { position: relative; display: grid; place-items: center; width: 26px; height: 27px; border-radius: 50%; color: var(--kleur-inkt); }
.aantal__knop::after { content: ""; position: absolute; inset: -9px -4px; }
.aantal__knop .icoon { width: 14px; height: 14px; }
.aantal__knop:disabled { opacity: .35; cursor: default; }
.aantal__knop:hover:not(:disabled) { background: var(--kleur-lavendel-licht); }
.aantal__waarde { width: 22px; padding: 0; border: 0; background: none; text-align: center; font: 600 15px/1 var(--font-tekst); -moz-appearance: textfield; appearance: textfield; }
.aantal__waarde::-webkit-inner-spin-button, .aantal__waarde::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.aantal__waarde:focus-visible { box-shadow: var(--focus); border-radius: 4px; }
.aantal--pagina { gap: 6px; padding: 0 6px; }
.aantal--pagina .aantal__knop { width: 32px; height: 40px; }
.aantal--pagina .aantal__knop .icoon { width: 16px; height: 16px; }

/* ---------- Gedeeld: totalen, codeveld, pil, logo's, zekerheden ---------- */
.totaalregel { display: flex; align-items: center; justify-content: space-between; gap: 16px; font-size: 16px; line-height: 1.55; }
.totaalregel > span:first-child { color: var(--kleur-grijs); }
.totaalregel--korting, .totaalregel--korting > span:first-child { color: var(--kleur-lavendel-donker); }
.totaalregel--korting > span:last-child { font: 600 15px/1 var(--font-tekst); }
.totaalregel--totaal > span:first-child { color: var(--kleur-inkt); font: 600 15px/1 var(--font-tekst); }
.totaalregel--totaal strong { font: 600 24px/1.2 var(--font-display); letter-spacing: -0.005em; }
.codeveld { display: grid; gap: 6px; }
.codeveld__rij { display: flex; gap: 8px; }
.codeveld__veld { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; padding: 0 14px; min-height: 53px; border: 1px solid var(--kleur-lijn); border-radius: 14px; background: var(--kleur-creme); cursor: text; transition: border-color var(--snel) var(--ease); }
.codeveld__veld:focus-within { border-color: var(--kleur-inkt); box-shadow: 0 0 0 1px var(--kleur-inkt); }
.codeveld__veld input:focus, .codeveld__veld input:focus-visible { outline: none; box-shadow: none; border-radius: 0; background: none; }
.codeveld__veld .icoon { width: 18px; height: 18px; color: var(--kleur-grijs); }
.codeveld__veld input { flex: 1; min-width: 0; width: 100%; height: 51px; padding: 0; border: 0; background: none; font-size: 16px; outline: none; text-transform: uppercase; }
.codeveld__veld input::placeholder { color: var(--kleur-grijs); opacity: 1; text-transform: none; }
.codeveld__veld:has(input[aria-invalid="true"]) { border: 2px solid var(--kleur-inkt); background: var(--kleur-perzik-licht); }
.codeveld__knop { flex: none; padding: 0 16px; min-height: 53px; border-radius: 14px; background: var(--kleur-lavendel); font: 600 15px/1 var(--font-tekst); }
.codeveld__knop:hover { background: #d8d0f6; }
.codeveld__fout { font-size: 14px; line-height: 1.45; }
.code-pil { display: flex; align-items: center; gap: 8px; padding: 10px 6px 10px 14px; border-radius: var(--radius-rond); background: var(--kleur-limoen-licht); font: 600 15px/1 var(--font-tekst); }
.code-pil > .icoon { width: 18px; height: 18px; }
.code-pil span { flex: 1; min-width: 0; }
.code-pil__weg { position: relative; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; margin: -6px 0; }
.code-pil__weg::after { content: ""; position: absolute; inset: -8px; }
.code-pil__weg .icoon { width: 16px; height: 16px; }
.code-pil__weg:hover { background: var(--kleur-limoen); }
.betaallogos { display: flex; flex-wrap: nowrap; white-space: nowrap; align-items: center; justify-content: center; gap: 8px; font-size: 14px; line-height: 1.45; color: var(--kleur-grijs); }
.betaallogos__logo { display: block; width: 36px; height: 27px; }
.betaallogos__logo svg { width: 100%; height: 100%; }
.betaallogos--klein { font-size: 12px; }
.betaallogos--klein .betaallogos__logo { width: 34px; height: 25px; }
.zekerheden { display: grid; gap: 10px; padding-top: 16px; border-top: 1px solid var(--kleur-lijn); }
.zekerheden li { display: flex; align-items: center; gap: 10px; font-size: 14px; line-height: 1.45; }
.zekerheden .icoon { width: 20px; height: 20px; }
.zekerheden a { text-decoration: none; }
.zekerheden a:hover { text-decoration: underline; }

/* ---------- Gedeeld: overzichtskaart rechts ---------- */
.overzicht { display: flex; flex-direction: column; gap: 16px; padding: 28px; border: 1px solid var(--kleur-lijn); border-radius: 28px; background: var(--kleur-wit); }
.overzicht__titel { font: 600 24px/1.2 var(--font-display); letter-spacing: -0.005em; }
.overzicht__lijn { width: 100%; height: 1px; margin: 0; border: 0; background: var(--kleur-lijn); }
.overzicht__noot { margin-top: -2px; font-size: 14px; line-height: 1.45; color: var(--kleur-grijs); }
.overzicht form { margin: 0; }

/* WooCommerce-meldingen in de huisstijl (winkelwagen en afrekenen). */
.woocommerce-error, .woocommerce-message, .woocommerce-info { position: relative; display: grid; gap: 4px; margin: 0; padding: 16px 18px 16px 52px; border-radius: 16px; background: var(--kleur-perzik-licht); border: 1px solid var(--kleur-perzik); font-size: var(--fs-klein); line-height: 1.45; list-style: none; }
.woocommerce-message, .woocommerce-info { background: var(--kleur-limoen-licht); border-color: var(--kleur-limoen); }
.woocommerce-error::before, .woocommerce-message::before, .woocommerce-info::before { content: ""; position: absolute; left: 18px; top: 16px; width: 22px; height: 22px; background: currentColor; -webkit-mask: var(--melding-icoon) center/contain no-repeat; mask: var(--melding-icoon) center/contain no-repeat; }
.woocommerce-error { --melding-icoon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.3 3.9 1.8 18.1A2 2 0 0 0 3.5 21h17a2 2 0 0 0 1.7-2.9L13.7 3.9a2 2 0 0 0-3.4 0z'/%3E%3Cpath d='M12 9v4M12 17h.01'/%3E%3C/svg%3E"); }
.woocommerce-message, .woocommerce-info { --melding-icoon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E"); }
.woocommerce-error a, .woocommerce-message a, .woocommerce-info a { font-weight: 600; }
.woocommerce-message .button, .woocommerce-info .button { float: none; margin-left: 8px; font-weight: 600; text-decoration: underline; }
.woocommerce-notices-wrapper:empty { display: none; }

/* ==========================================================================
   Winkelwagen-lade: desktop lade van rechts (460), mobiel onderlade
   ========================================================================== */
.lade-wagen .overlay__paneel { background: var(--kleur-creme); overflow: hidden; }
@media (min-width: 768px) { .lade-wagen .overlay__paneel { border-radius: 28px 0 0 28px; } }
.lade-wagen__paneel { display: flex; flex-direction: column; }
.lade-wagen__paneel.is-laden { cursor: progress; }
.lade-wagen__paneel.is-laden .lade-wagen__inhoud, .lade-wagen__paneel.is-laden .lade-wagen__voet { opacity: .6; transition: opacity .2s; }
.lade-wagen__kop { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 24px 24px 8px; }
.lade-wagen__titel { font: 600 21px/1.22 var(--font-display); letter-spacing: -0.004em; }
.lade-wagen__sluiten { width: 40px; height: 40px; border: 1px solid var(--kleur-lijn); background: var(--kleur-wit); }
.lade-wagen__sluiten::after { content: ""; position: absolute; inset: -3px; }
.lade-wagen__sluiten:hover { background: var(--kleur-lavendel-licht); }
.lade-wagen__inhoud { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; display: flex; flex-direction: column; }
.lade-wagen__melding:empty { display: none; }
.lade-wagen__melding { padding: 8px 24px; }
.toegevoegd { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: 14px; background: var(--kleur-limoen-licht); font-size: 14px; line-height: 1.45; animation: dpk-toegevoegd .3s var(--ease); }
.toegevoegd__vink { flex: none; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 12px; background: var(--kleur-limoen); }
.toegevoegd__vink .icoon { width: 14px; height: 14px; }
@keyframes dpk-toegevoegd { from { opacity: 0; transform: translateY(-4px); } }
.lade-wagen__inhoud > .verzendbalk { margin: 0 24px; }
.lade-wagen__inhoud > .settip, .lade-wagen__inhoud > .cadeaubalk { margin-inline: 24px; }
.lade-wagen__melding:empty + .verzendbalk { margin-top: 8px; }
.lade-wagen__artikelen { display: grid; gap: 12px; padding: 16px 24px; }
.ladeartikel { display: flex; align-items: center; gap: 12px; padding: 10px; border-radius: 18px; background: var(--kleur-wit); }
.ladeartikel__foto { flex: none; display: grid; place-items: center; width: 72px; height: 72px; border-radius: 12px; background: var(--foto-kleur, var(--kleur-lavendel-licht)); overflow: hidden; }
.ladeartikel__foto img { width: 60px; height: 60px; object-fit: contain; }
.ladeartikel__info { flex: 1; min-width: 0; display: grid; gap: 4px; }
.ladeartikel__naam { font: 600 15px/1.15 var(--font-tekst); }
.ladeartikel__naam a { text-decoration: none; }
.ladeartikel__naam a:hover { text-decoration: underline; }
.ladeartikel__cat { font-size: 14px; line-height: 1.45; color: var(--kleur-grijs); }
.ladeartikel__prijs { font: 600 16px/1.2 var(--font-display); }
.ladeartikel__aantal { flex: none; display: grid; justify-items: center; gap: 4px; }
.ladeartikel__weg { display: inline-flex; align-items: center; min-height: 24px; padding: 0 4px; font-size: 12px; line-height: 1.45; color: var(--kleur-grijs); }
.ladeartikel__weg:hover { color: var(--kleur-inkt); }
.lade-wagen__compleet { display: grid; gap: 10px; padding: 4px 24px 8px; }
.lade-wagen__mini { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.minikaart { position: relative; display: flex; align-items: center; gap: 10px; padding: 8px 10px 8px 8px; border-radius: 16px; background: var(--kleur-wit); }
.minikaart__foto { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: var(--foto-kleur, var(--kleur-roze)); overflow: hidden; }
.minikaart__foto img { width: 32px; height: 32px; object-fit: contain; }
.minikaart__tekst { flex: 1; min-width: 0; display: grid; font-size: 12px; line-height: 1.45; }
.minikaart__tekst a { font-weight: 600; text-decoration: none; }
.minikaart__tekst a:hover { text-decoration: underline; }
.minikaart__tekst span { color: var(--kleur-grijs); }
.rond.minikaart__plus { width: 28px; height: 28px; background: var(--kleur-limoen); }
.rond.minikaart__plus::after { content: ""; position: absolute; inset: -8px; }
.rond.minikaart__plus .icoon { width: 14px; height: 14px; }
.rond.minikaart__plus:hover { background: #c2ec82; }
.lade-wagen__leeg { display: grid; justify-items: center; gap: 10px; padding: 32px 24px; text-align: center; }
.lade-wagen__leeg-icoon { display: grid; place-items: center; width: 80px; height: 80px; border-radius: 50%; background: var(--kleur-lavendel); margin-bottom: 6px; }
.lade-wagen__leeg-icoon .icoon { width: 36px; height: 36px; }
.lade-wagen__leeg-titel { font: 600 21px/1.22 var(--font-display); }
.lade-wagen__leeg .knop { margin-top: 10px; }

.lade-wagen__voet { flex: none; display: flex; flex-direction: column; gap: 12px; padding: 20px 24px 24px; border-top: 1px solid var(--kleur-lijn); background: var(--kleur-wit); max-height: 75%; overflow-y: auto; }
.lade-wagen__opties { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.lade-wagen__optie { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; font-size: 14px; line-height: 1.45; text-decoration: underline; text-underline-offset: .18em; }
.lade-wagen__optie .icoon { width: 16px; height: 16px; }
.lade-wagen__optie[aria-expanded="true"] { color: var(--kleur-lavendel-donker); }
.lade-wagen__optie:hover { color: var(--kleur-lavendel-donker); }
.ladepaneel { display: grid; gap: 10px; padding: 16px; border: 1px solid var(--kleur-lijn); border-radius: 16px; background: var(--kleur-creme); }
.ladepaneel[hidden] { display: none; }
.ladepaneel__label { font: 600 15px/1.3 var(--font-tekst); margin-bottom: 4px; }
.ladepaneel__rij { display: flex; gap: 8px; }
.ladepaneel__invoer, .ladepaneel__tekstvak { width: 100%; min-width: 0; padding: 13px 16px; border: 1.5px solid var(--kleur-lijn); border-radius: 12px; background: var(--kleur-wit); font-size: 16px; line-height: 1.55; transition: border-color var(--snel) var(--ease); }
.ladepaneel__invoer { flex: 1; text-transform: uppercase; }
.ladepaneel__invoer::placeholder { text-transform: none; }
.ladepaneel__tekstvak { height: 92px; resize: none; }
.ladepaneel__invoer::placeholder, .ladepaneel__tekstvak::placeholder { color: var(--kleur-grijs); opacity: 1; }
.ladepaneel__invoer:focus, .ladepaneel__tekstvak:focus, .ladepaneel__invoer:focus-visible, .ladepaneel__tekstvak:focus-visible { outline: none; border-color: var(--kleur-inkt); border-radius: 12px; box-shadow: none; }
.ladepaneel__invoer.is-fout { border: 2px solid var(--kleur-inkt); background: var(--kleur-perzik-licht); }
.ladepaneel__knop { flex: none; display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 14px 20px; border-radius: 99px; background: var(--kleur-inkt); color: var(--kleur-wit); font: 600 15px/1 var(--font-tekst); transition: background-color var(--snel) var(--ease); }
.ladepaneel__knop:hover { background: #22222f; }
.ladepaneel__voet { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ladepaneel__teller, .ladepaneel__hint { font-size: 14px; line-height: 1.45; color: var(--kleur-grijs); }
.totaalregel--lade > span { font: 600 15px/1 var(--font-tekst); color: var(--kleur-inkt) !important; }
.totaalregel--lade strong { font: 600 21px/1.22 var(--font-display); letter-spacing: -0.004em; }
.lade-wagen__voet .totaalregel--korting > span:first-child { font-size: 16px; }
.lade-wagen__noot { font-size: 12px; line-height: 1.45; color: var(--kleur-grijs); }
.lade-wagen__akkoord { font-size: 12px; align-items: center; gap: 8px; }
.lade-wagen__akkoord input { width: 20px; height: 20px; border-radius: 6px; background-size: 13px; }
.lade-wagen__akkoord a { font-weight: 400; }
.lade-wagen__knoppen { display: flex; gap: 10px; }
.lade-wagen__knoppen .knop { flex: 1 1 0; min-width: 0; min-height: 52px; padding-left: 20px; padding-right: 20px; }

@media (max-width: 767px) {
	.lade-wagen .overlay__paneel { border-radius: 28px 28px 0 0; max-height: calc(100dvh - 60px); }
	.lade-wagen .overlay__paneel::before { width: 40px; height: 4px; margin: 10px auto 0; background: var(--kleur-lijn); }
	.lade-wagen__kop { padding: 16px 20px 8px; }
	.lade-wagen__kop .lade-wagen__titel { font-size: 21px; }
	.lade-wagen__sluiten { width: 44px; height: 44px; }
	.lade-wagen__melding, .lade-wagen__artikelen, .lade-wagen__compleet { padding-left: 20px; padding-right: 20px; }
	.lade-wagen__inhoud > .verzendbalk { margin: 0 20px; }
	.lade-wagen__inhoud > .settip, .lade-wagen__inhoud > .cadeaubalk { margin-inline: 20px; }
	.lade-wagen__voet { padding: 18px 20px calc(18px + env(safe-area-inset-bottom)); max-height: 70%; }
	.lade-wagen__inhoud { flex: 0 1 auto; }
	.ladeartikel__weg { min-height: 28px; }
}

/* ==========================================================================
   Winkelwagenpagina
   ========================================================================== */
.wagen-pagina { background: var(--kleur-creme); }
.wagen__sectie { padding-top: 48px; padding-bottom: 96px; }
.wagen__kop { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; margin-bottom: 28px; }
.wagen__titel { font: 600 48px/1.02 var(--font-display); letter-spacing: -0.025em; }
.wagen__aantal { font-size: 19px; line-height: 1.55; color: var(--kleur-grijs); }
.wagen__meldingen:empty { display: none; }
.wagen__meldingen { display: grid; gap: 12px; margin-bottom: 20px; }
.wagen__hoofd { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 40px; align-items: start; }
.wagen__artikelen { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.wagen__form { display: flex; flex-direction: column; gap: 16px; margin: 0; }
.wagen__tabelkop { display: flex; padding: 8px 20px; font: 700 13px/1.2 var(--font-tekst); letter-spacing: .08em; text-transform: uppercase; color: var(--kleur-grijs); }
.wagen__tabelkop span:first-child { flex: 1; }
.wagen__tabelkop span:nth-child(2) { width: 150px; text-align: center; margin-right: 20px; }
.wagen__tabelkop span:last-child { width: 100px; text-align: right; }
.wagen__lijst { display: grid; gap: 16px; }
.wagenartikel { display: flex; align-items: center; gap: 20px; padding: 16px 20px 16px 16px; border-radius: 24px; background: var(--kleur-wit); }
.wagenartikel__foto { flex: none; display: grid; place-items: center; width: 104px; height: 104px; border-radius: 21px; background: var(--foto-kleur, var(--kleur-lavendel-licht)); overflow: hidden; }
.wagenartikel__foto img { width: 80px; height: 80px; object-fit: contain; }
.wagenartikel__info { flex: 1; min-width: 0; display: grid; gap: 4px; justify-items: start; }
.wagenartikel__cat, .wagenartikel__per { font-size: 14px; line-height: 1.45; color: var(--kleur-grijs); }
.wagenartikel__naam { font: 500 19px/1.25 var(--font-display); letter-spacing: -0.002em; }
.wagenartikel__naam a { text-decoration: none; }
.wagenartikel__naam a:hover { text-decoration: underline; }
.wagenartikel .voorraad { font-size: 14px; }
.wagenartikel .voorraad::before { width: 8px; height: 8px; }
.wagenartikel__mobielprijs { display: none; }
.wagenartikel__aantal { flex: none; width: 150px; display: grid; justify-items: center; gap: 6px; }
.wagenartikel__weg { font-size: 14px; line-height: 1.45; color: var(--kleur-grijs); min-height: 24px; }
.wagenartikel__weg:hover { color: var(--kleur-inkt); }
.wagenartikel__totaal { flex: none; width: 100px; text-align: right; font: 600 19px/1.2 var(--font-display); }
.wagen__bijwerken { display: none; }
html:not(.js) .wagen__bijwerken { display: block; }
html:not(.js) .aantal__knop { display: none; }
html:not(.js) .aantal__waarde { width: 48px; height: 40px; }

.wagen-opmerking { margin: 0; border: 1px solid var(--kleur-lijn); border-radius: 20px; background: var(--kleur-wit); }
.wagen-opmerking__kop { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 52px; padding: 16px 20px; text-align: left; font: 600 15px/1 var(--font-tekst); border-radius: 20px; }
.wagen-opmerking__kop > .icoon { width: 20px; height: 20px; }
.wagen-opmerking__titel { flex: 1; }
.wagen-opmerking__plus, .wagen-opmerking__min { width: 18px !important; height: 18px !important; }
.wagen-opmerking__min, .wagen-opmerking__kop[aria-expanded="true"] .wagen-opmerking__plus { display: none; }
.wagen-opmerking__kop[aria-expanded="true"] .wagen-opmerking__min { display: block; }
.wagen-opmerking__paneel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .3s var(--ease); }
.wagen-opmerking__paneel > div { overflow: hidden; display: grid; gap: 14px; padding: 0 20px; }
.wagen-opmerking__kop[aria-expanded="true"] + .wagen-opmerking__paneel { grid-template-rows: 1fr; }
.wagen-opmerking__kop[aria-expanded="true"] + .wagen-opmerking__paneel > div { padding-top: 6px; padding-bottom: 20px; }
.wagen-opmerking__kop[aria-expanded="false"] + .wagen-opmerking__paneel > div { visibility: hidden; transition: visibility 0s .3s; }
html:not(.js) .wagen-opmerking__paneel { grid-template-rows: 1fr; }
html:not(.js) .wagen-opmerking__paneel > div { visibility: visible; padding-bottom: 20px; }
.wagen-opmerking__kop[aria-expanded="true"] { padding-bottom: 0; min-height: 36px; }
.wagen-opmerking__veld { width: 100%; height: 92px; padding: 13px 16px; border: 1.5px solid var(--kleur-lijn); border-radius: 12px; background: var(--kleur-wit); font-size: 16px; line-height: 1.55; resize: none; }
.wagen-opmerking__veld:focus { outline: none; border-color: var(--kleur-inkt); }
.wagen-opmerking__veld::placeholder { color: var(--kleur-grijs); opacity: 1; }
.wagen-opmerking__voet { display: flex; align-items: center; gap: 8px; }
.wagen-opmerking__teller { font-size: 14px; line-height: 1.45; color: var(--kleur-grijs); }
.wagen-opmerking__status { flex: 1; font-size: 14px; line-height: 1.45; color: var(--kleur-lavendel-donker); }
.wagen__verder { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; min-height: 44px; font: 600 15px/1 var(--font-tekst); }
.wagen__verder span { text-decoration: underline; text-underline-offset: .18em; }
.wagen__terugpijl { width: 18px; height: 18px; transform: rotate(180deg); }
.wagen__overzicht { position: sticky; top: calc(var(--header-h) + 24px); }
.wagen-pagina .is-laden { opacity: .6; pointer-events: none; transition: opacity .2s; }

/* "Maak het compleet" / populair */
.wagen-compleet { padding-top: 64px; padding-bottom: 96px; }
.wagen-compleet__kop { display: grid; gap: 24px; margin-bottom: 24px; }
.wagen-compleet__titel { font: 600 24px/1.2 var(--font-display); letter-spacing: -0.005em; }
.productraster { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }

/* Lege winkelwagen */
.wagen-leeg { padding-top: 96px; padding-bottom: 96px; }
.wagen-leeg__binnen { display: flex; flex-direction: column; align-items: center; text-align: center; }
.wagen-leeg__icoon { display: grid; place-items: center; width: 128px; height: 128px; border-radius: 50%; background: var(--kleur-lavendel); }
.wagen-leeg__icoon .icoon { width: 60px; height: 60px; }
.wagen-leeg__titel { margin-top: 18px; font: 600 44px/1.08 var(--font-display); letter-spacing: -0.015em; }
.wagen-leeg__tekst { max-width: 520px; margin-top: 18px; font-size: 19px; line-height: 1.55; color: var(--kleur-grijs); }
.wagen-leeg__knoppen { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 18px; }
.wagen-leeg .wagen__meldingen { width: 100%; max-width: 640px; text-align: left; }

/* Tablet */
@media (max-width: 1279px) {
	.wagen__hoofd { grid-template-columns: minmax(0, 1fr) 340px; gap: 28px; }
	.overzicht { padding: 24px; }
	.wagenartikel { gap: 16px; }
	.wagenartikel__foto { width: 88px; height: 88px; border-radius: 18px; }
	.wagenartikel__foto img { width: 68px; height: 68px; }
	.wagenartikel__aantal, .wagen__tabelkop span:nth-child(2) { width: 120px; }
	.wagenartikel__totaal, .wagen__tabelkop span:last-child { width: 80px; }
	.wagen__tabelkop span:nth-child(2) { margin-right: 16px; }
	.productraster { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
	.productraster > li:nth-child(n+4) { display: none; }
}
@media (max-width: 1023px) {
	.wagen__hoofd { grid-template-columns: minmax(0, 1fr); }
	.wagen__overzicht { position: static; }
}

/* Mobiel (390) */
@media (max-width: 767px) {
	.wagen__sectie { padding-top: 24px; padding-bottom: 32px; }
	.wagen__kop { gap: 8px; margin-bottom: 14px; }
	.wagen__titel { font-size: 38px; line-height: 1.06; letter-spacing: -0.02em; }
	.wagen__aantal { font-size: 16px; }
	.wagen__hoofd, .wagen__artikelen, .wagen__form, .wagen__lijst { gap: 14px; }
	.verzendbalk--pagina .verzendbalk__tekst { font-size: 16px; }
	.wagen__tabelkop { display: none; }
	.wagenartikel { position: relative; gap: 12px; padding: 12px; border-radius: 20px; align-items: center; flex-wrap: wrap; }
	.wagenartikel__foto { width: 80px; height: 80px; border-radius: 16px; }
	.wagenartikel__foto img { width: 60px; height: 60px; }
	.wagenartikel__info { gap: 6px; flex: 1; }
	.wagenartikel__cat, .wagenartikel__per, .wagenartikel .voorraad, .wagenartikel__totaal { display: none; }
	.wagenartikel__naam { font: 600 15px/1.1 var(--font-tekst); }
	.wagenartikel__mobielprijs { display: block; font: 600 19px/1.2 var(--font-display); }
	.wagenartikel__info { padding-bottom: 42px; }
	.wagenartikel__aantal { position: absolute; left: 104px; bottom: 12px; width: auto; display: flex; align-items: center; gap: 12px; }
	.aantal--pagina { gap: 2px; padding: 0 2px; }
	.aantal--pagina .aantal__knop { width: 34px; height: 30px; }
	.aantal--pagina .aantal__knop .icoon { width: 14px; height: 14px; }
	.wagen-opmerking__kop { padding: 16px 20px; }
	.wagen__verder { min-height: 32px; }
	.wagen__overzicht { padding: 28px 20px; }
	.wagen-compleet { padding-top: 32px; padding-bottom: 40px; }
	.wagen-compleet__kop { margin-bottom: 14px; gap: 8px; }
	.wagen-compleet__kop .eyebrow:not(.alleen-groot) + .wagen-compleet__titel { display: none; }
	.wagen-compleet__titel { font: 700 13px/1.2 var(--font-tekst); letter-spacing: .08em; text-transform: uppercase; color: var(--kleur-lavendel-donker); }
	.wagen-compleet__titel .alleen-mobiel { display: inline; }
	.productraster { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
	.productraster > li:nth-child(n+3) { display: none; }
	.wagen-leeg { padding-top: 48px; padding-bottom: 36px; }
	.wagen-leeg__icoon { width: 128px; height: 128px; }
	.wagen-leeg__titel { margin-top: 16px; font-size: 29px; line-height: 1.12; letter-spacing: -0.012em; }
	.wagen-leeg__tekst { margin-top: 16px; font-size: 17px; }
	.wagen-leeg__knoppen { width: 100%; flex-direction: column; margin-top: 16px; }
	.wagen-leeg__knoppen .knop { width: 100%; }
	.overzicht__titel { font-size: 24px; }
}

/* Heel smalle schermen: aantal en "Verwijderen" blijven binnen de kaart. */
@media (max-width: 374px) {
	.wagenartikel__aantal { right: 12px; gap: 8px; justify-content: space-between; }
	.wagenartikel__weg { font-size: 13px; }
}

/* Gratis cadeautje (inc/cart/acties.php). */
.cadeaubalk { display: flex; align-items: center; gap: 8px; margin-top: 10px; font-size: 14px; line-height: 1.45; color: var(--kleur-inkt); }
.cadeaubalk .icoon { flex: none; width: 18px; height: 18px; --icoon-accent: var(--kleur-limoen); }
.cadeaubalk.is-binnen { padding: 8px 12px; border-radius: 12px; background: var(--kleur-limoen-licht); }

/* Hover-vlak altijd een cirkel (de knop zelf is niet vierkant). */
.aantal__knop:hover:not(:disabled) { background: none; }
.aantal__knop::before { content: ""; position: absolute; left: 50%; top: 50%; width: 30px; height: 30px; border-radius: 50%; background: var(--kleur-lavendel-licht); transform: translate(-50%, -50%) scale(.6); opacity: 0; transition: opacity var(--snel) var(--ease), transform var(--snel) var(--ease); }
.aantal__knop:hover:not(:disabled)::before { opacity: 1; transform: translate(-50%, -50%) scale(1); }
.aantal__knop .icoon { position: relative; z-index: 1; }

/* Setkorting-tip (inc/cart/acties.php). */
.settip { display: flex; align-items: center; gap: 12px; margin-top: 10px; padding: 10px 12px; border-radius: 16px; background: var(--kleur-limoen-licht); }
.settip__foto { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; background: var(--kleur-wit); overflow: hidden; }
.settip__foto img { width: 40px; height: 40px; object-fit: contain; }
.settip__tekst { flex: 1 1 auto; min-width: 0; font-size: 14px; line-height: 1.4; }
.settip__tekst a { color: inherit; }
.settip__knop { flex: none; }
.cadeaukaartje { display: flex; align-items: center; gap: 12px; margin-top: 10px; padding: 10px 14px 10px 10px; border-radius: 16px; background: var(--kleur-lavendel-licht); }
.cadeaukaartje__foto { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; background: var(--kleur-wit); overflow: hidden; }
.cadeaukaartje__foto img { width: 40px; height: 40px; object-fit: contain; }
.cadeaukaartje__tekst { flex: 1 1 auto; min-width: 0; display: grid; gap: 2px; font-size: 14px; line-height: 1.4; }
.cadeaukaartje__tekst strong { font-weight: 700; }
.cadeaukaartje__tekst a { color: inherit; font-weight: 600; text-underline-offset: 2px; }
.cadeaukaartje__icoon { flex: none; width: 22px; height: 22px; --icoon-accent: var(--kleur-limoen); }
