/* Gemeentekaart - thema via CSS-variabelen; per magazine overschrijven met bijv. .gk-kaart.thema-holland{...} */
.gk-kaart{--gk-papier:#f3ede0;--gk-buur-0:#e9e1d1;--gk-buur-1:#e4dbc9;--gk-buur-2:#ece4d5;--gk-grens:#fbf8f1;
  --gk-gemeente:#f3dca4;--gk-gemeente-rand:#b8801f;--gk-water:#a9cad8;--gk-water-rand:#8db6c7;--gk-weg:#fffdf7;--gk-weg-hoofd:#f4b860;--gk-weg-rand:#d9c9a3;--gk-spoor:#8d8576;--gk-veil:rgba(243,237,224,.62);--gk-tekst:#2b2620;--gk-tekst-zacht:#8b8272;
  --gk-gp:#cfe3b5;--gk-gb:#b9d4a0;--gk-loop5:#f2a900;--gk-loop10:#f7c92c;--gk-loop15:#fbe27a;--gk-parkeren:#2f64b5;--gk-erfgoed:#9b3d2e;--gk-museum:#2f5d62;--gk-vervoer:#4a4a6a;--gk-overig:#555;
  position:relative;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--gk-tekst)}
.gk-kaart *{box-sizing:border-box}
.gk-balk{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.gk-zoek{flex:1 1 180px;min-width:0;padding:8px 12px;border:1px solid #d6cdb9;border-radius:999px;background:#fff;font:inherit;font-size:14px}
.gk-chips{display:flex;flex-wrap:wrap;gap:6px}
.gk-chip{padding:6px 12px;border:1px solid #d6cdb9;border-radius:999px;background:#fff;color:var(--gk-tekst);font:inherit;font-size:13px;cursor:pointer}
.gk-chip.is-aan{background:var(--gk-tekst);color:#fff;border-color:var(--gk-tekst)}
.gk-vlak{position:relative;background:var(--gk-papier);border-radius:12px;overflow:hidden;border:1px solid #e0d7c4;touch-action:none;cursor:grab}
.gk-vlak.sleept{cursor:grabbing}
.gk-svg{display:block;width:100%;height:auto;aspect-ratio:1.25;user-select:none}
.gk-buur{stroke:var(--gk-grens);stroke-width:3;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.gk-buur-0{fill:var(--gk-buur-0)}.gk-buur-1{fill:var(--gk-buur-1)}.gk-buur-2{fill:var(--gk-buur-2)}
.gk-gemeente{fill:var(--gk-gemeente);stroke:var(--gk-gemeente-rand);stroke-width:2.5;vector-effect:non-scaling-stroke;stroke-linejoin:round;filter:drop-shadow(0 3px 5px rgba(80,55,10,.28))}
.gk-rand{fill:none;stroke:var(--gk-gemeente-rand);stroke-width:2.5;vector-effect:non-scaling-stroke;stroke-linejoin:round;pointer-events:none}
.gk-veil{fill:var(--gk-veil);pointer-events:none}
.gk-label-buur{font:600 calc(190px * var(--gk-s,1) * var(--gk-lb,1)) Georgia,serif;fill:var(--gk-tekst-zacht);letter-spacing:calc(6px * var(--gk-s,1));text-transform:uppercase;pointer-events:none;opacity:.8}
.gk-label-hoofd{font:700 calc(330px * var(--gk-s,1) * var(--gk-lb,1)) Georgia,serif;fill:#6b4a10;letter-spacing:calc(14px * var(--gk-s,1));pointer-events:none;opacity:.55}
.gk-punt{cursor:pointer;outline:none}
.gk-punt-ring{fill:#fff;opacity:.9;stroke:rgba(0,0,0,.25);stroke-width:1.5;vector-effect:non-scaling-stroke}
.gk-punt-stip{fill:var(--gk-overig)}
.gk-punt[data-cat=erfgoed] .gk-punt-stip{fill:var(--gk-erfgoed)}
.gk-punt[data-cat=museum] .gk-punt-stip{fill:var(--gk-museum)}
.gk-punt[data-cat=vervoer] .gk-punt-stip{fill:var(--gk-vervoer)}
.gk-punt:hover .gk-punt-ring,.gk-punt:focus .gk-punt-ring,.gk-punt.actief .gk-punt-ring{stroke:#000;stroke-width:2.5}
.gk-punt.verborgen{display:none}
.gk-zoomknoppen{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column;gap:4px}
.gk-zoomknoppen button{width:34px;height:34px;border:1px solid #cfc5ae;border-radius:8px;background:#fff;font-size:18px;line-height:1;cursor:pointer;color:var(--gk-tekst)}
.gk-zoomknoppen button:hover{background:#f6f1e4}
.gk-tip{position:absolute;left:12px;top:12px;max-width:260px;padding:10px 12px;background:#fff;border-radius:10px;box-shadow:0 4px 18px rgba(0,0,0,.18);font-size:13px;line-height:1.45}
.gk-tip strong{display:block;font-size:14px;margin-bottom:2px}
.gk-tip a{color:var(--gk-museum)}
.gk-bron{margin:6px 2px 0;font-size:11px;color:var(--gk-tekst-zacht)}
@media (max-width:520px){.gk-svg{aspect-ratio:1}}

/* water en wegen: breedtes in kaartmeters, verzwakt meeschalend met de zoom via --gk-k */
.gk-water,.gk-wegen{pointer-events:none;transition:opacity .25s}
.gk-wa,.gk-wb,.gk-wc,.gk-wd{fill:var(--gk-water);fill-rule:evenodd;stroke:var(--gk-water-rand);stroke-width:1;vector-effect:non-scaling-stroke}
.gk-sloot,.gk-sloot-klein{fill:none;stroke:var(--gk-water);stroke-linecap:round;stroke-linejoin:round}
.gk-sloot{stroke-width:calc(16px * var(--gk-k,1) * var(--gk-s,1))}.gk-sloot-klein{stroke-width:calc(8px * var(--gk-k,1) * var(--gk-s,1))}
.gk-wegen path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.gk-pad{stroke:var(--gk-weg);stroke-width:calc(7px * var(--gk-k,1) * var(--gk-s,1));stroke-dasharray:calc(30px * var(--gk-k,1) * var(--gk-s,1)) calc(14px * var(--gk-k,1) * var(--gk-s,1));opacity:.9}
.gk-straat{stroke:var(--gk-weg);stroke-width:calc(14px * var(--gk-k,1) * var(--gk-s,1))}
.gk-lokaal{stroke:var(--gk-weg);stroke-width:calc(22px * var(--gk-k,1) * var(--gk-s,1))}
.gk-regio{stroke:var(--gk-weg);stroke-width:calc(32px * var(--gk-k,1) * var(--gk-s,1))}
.gk-hoofd{stroke:var(--gk-weg-hoofd);stroke-width:calc(44px * var(--gk-k,1) * var(--gk-s,1))}
.gk-snelweg{stroke:#e48a3a;stroke-width:calc(56px * var(--gk-k,1) * var(--gk-s,1))}
.gk-veer{stroke:var(--gk-water-rand);stroke-width:calc(10px * var(--gk-k,1) * var(--gk-s,1));stroke-dasharray:30 30}
.gk-spoor{stroke:var(--gk-spoor);stroke-width:calc(14px * var(--gk-k,1) * var(--gk-s,1));stroke-dasharray:calc(60px * var(--gk-k,1) * var(--gk-s,1)) calc(30px * var(--gk-k,1) * var(--gk-s,1))}
.gk-svg:not(.z1) .gk-w1,.gk-svg:not(.z1) .gk-r1,.gk-svg:not(.z2) .gk-w2,.gk-svg:not(.z2) .gk-r2{opacity:0}

/* loopringen */
.gk-loop{pointer-events:none}
.gk-lp{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:calc(120px * var(--gk-k,1) * var(--gk-s,1));opacity:.85}
.gk-lp5{stroke:var(--gk-loop5)}.gk-lp10{stroke:var(--gk-loop10)}.gk-lp15{stroke:var(--gk-loop15)}
.gk-punt[data-cat=parkeren] .gk-punt-stip{fill:var(--gk-parkeren)}
.gk-tip .gk-lopen{margin:8px 0 0;padding:8px 0 0;border-top:1px solid #eee3cc;font-size:12px}
.gk-tip .gk-lopen b{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--gk-tekst-zacht);margin-bottom:3px;font-weight:600}
.gk-tip .gk-lopen div{display:flex;justify-content:space-between;gap:10px}
.gk-tip .gk-leg{display:flex;gap:10px;margin-top:6px;font-size:11px;color:var(--gk-tekst-zacht);align-items:center;flex-wrap:wrap}
.gk-tip .gk-leg i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:3px;vertical-align:-1px;opacity:.8}
.gk-tip .gk-aff{display:inline-block;margin-top:8px;padding:7px 12px;border-radius:999px;background:var(--gk-parkeren);color:#fff;text-decoration:none;font-size:12px;font-weight:600}
.gk-tip .gk-spons{margin-left:8px;font-size:10px;color:var(--gk-tekst-zacht);letter-spacing:.02em}
.gk-tip .gk-aff-noot{display:block;margin-top:3px;font-size:10px;color:var(--gk-tekst-zacht)}
.gk-tip{max-width:280px}
.gk-tip .gk-route{display:inline-block;margin:8px 8px 0 0;padding:6px 11px;border:1px solid #cfc5ae;border-radius:999px;color:var(--gk-tekst);text-decoration:none;font-size:12px;font-weight:600}
.gk-tip .gk-route:hover{background:#f6f1e4}

/* thema Hollandmagazine: marine #092e47, papier #fbfaf7, oranje #e67535 */
.gk-kaart.thema-holland{--gk-papier:#fbfaf7;--gk-buur-0:#eeebe4;--gk-buur-1:#e8e5dd;--gk-buur-2:#f1eee8;--gk-grens:#fff;
  --gk-gemeente:#fbe3d2;--gk-gemeente-rand:#e67535;--gk-water:#a9c7da;--gk-water-rand:#86adc6;--gk-weg:#fff;--gk-weg-hoofd:#f0a672;--gk-spoor:#7d8a96;--gk-veil:rgba(251,250,247,.65);
  --gk-tekst:#092e47;--gk-tekst-zacht:#6c8193;--gk-loop5:#f2a900;--gk-loop10:#f7c92c;--gk-loop15:#fbe27a;--gk-parkeren:#092e47;--gk-erfgoed:#e67535;--gk-museum:#092e47}
.gk-kaart.thema-holland .gk-label-hoofd{fill:#092e47}
.gk-kaart.thema-holland .gk-snelweg{stroke:#e67535}
.gk-kaart.thema-holland .gk-tip a{color:#e67535}

/* groen */
.gk-gp,.gk-gb{pointer-events:none;stroke:none;fill-rule:evenodd}
.gk-gp{fill:var(--gk-gp)}.gk-gb{fill:var(--gk-gb)}
.gk-kaart.thema-holland{--gk-gp:#d6e6c4;--gk-gb:#c0d8ad}

.gk-subrij{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.gk-sub{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--gk-tekst-zacht)}
.gk-subchip{padding:3px 10px;font-size:12px}
.gk-punt[data-cat=restaurant] .gk-punt-stip{fill:#c2410c}.gk-punt[data-cat=hotel] .gk-punt-stip{fill:#7c3aed}.gk-punt[data-cat=uit] .gk-punt-stip{fill:#0d9488}.gk-punt[data-cat=groen] .gk-punt-stip{fill:#4d8f3a}

/* loopcirkels */
.gk-cir{stroke-width:2;vector-effect:non-scaling-stroke}
.gk-cir5{fill:var(--gk-loop5);fill-opacity:.38;stroke:var(--gk-loop5)}
.gk-cir10{fill:var(--gk-loop10);fill-opacity:.28;stroke:var(--gk-loop10);stroke-dasharray:6 4}
.gk-cir15{fill:var(--gk-loop15);fill-opacity:.3;stroke:var(--gk-loop10);stroke-dasharray:2 4}

/* rode stippellijnen om de loopcirkels */
.gk-cir5,.gk-cir10,.gk-cir15{stroke:#d62828;stroke-width:2;stroke-dasharray:6 4}
.gk-cir10{stroke-dasharray:5 5}.gk-cir15{stroke-dasharray:3 5}

/* kleur per categorie: stip op de kaart en bolletje in de knop */
.gk-kaart{--c-parkeren:#2563eb;--c-museum:#7e3fa8;--c-erfgoed:#a8561c;--c-vervoer:#52606d;--c-restaurant:#ea7a0c;--c-hotel:#d6336c;--c-uit:#0d9488;--c-groen:#2f9e44;--c-overig:#6b7280}
.gk-punt[data-cat=parkeren] .gk-punt-stip{fill:var(--c-parkeren)}.gk-punt[data-cat=museum] .gk-punt-stip{fill:var(--c-museum)}
.gk-punt[data-cat=erfgoed] .gk-punt-stip{fill:var(--c-erfgoed)}.gk-punt[data-cat=vervoer] .gk-punt-stip{fill:var(--c-vervoer)}
.gk-punt[data-cat=restaurant] .gk-punt-stip{fill:var(--c-restaurant)}.gk-punt[data-cat=hotel] .gk-punt-stip{fill:var(--c-hotel)}
.gk-punt[data-cat=uit] .gk-punt-stip{fill:var(--c-uit)}.gk-punt[data-cat=groen] .gk-punt-stip{fill:var(--c-groen)}
.gk-chip[data-cat]::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;background:var(--c-overig);border:1.5px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.25)}
.gk-chip[data-cat=parkeren]::before{background:var(--c-parkeren)}.gk-chip[data-cat=museum]::before{background:var(--c-museum)}
.gk-chip[data-cat=erfgoed]::before{background:var(--c-erfgoed)}.gk-chip[data-cat=vervoer]::before{background:var(--c-vervoer)}
.gk-chip[data-cat=restaurant]::before{background:var(--c-restaurant)}.gk-chip[data-cat=hotel]::before{background:var(--c-hotel)}
.gk-chip[data-cat=uit]::before{background:var(--c-uit)}.gk-chip[data-cat=groen]::before{background:var(--c-groen)}

.gk-hint{position:absolute;left:50%;top:12px;transform:translateX(-50%);background:rgba(9,46,71,.88);color:#fff;font-size:12px;padding:6px 12px;border-radius:999px;pointer-events:none;white-space:nowrap;max-width:92%;overflow:hidden;text-overflow:ellipsis}
.gk-hint[hidden]{display:none}

.gk-punt.focus .gk-punt-ring{stroke:#092e47;stroke-width:3;fill:#fff;opacity:1}
.gk-punt.focus .gk-punt-stip{stroke:#fff;stroke-width:1}

/* categorieen voor gemeentepagina's: museum, restaurant, hotel, gemeentehuis, bezienswaardigheid, uitgaan, uitje */
.gk-kaart{--c-hotel:#c026d3;--c-gemeentehuis:#0f172a;--c-bezienswaardigheid:#d6336c;--c-uitgaan:#4f46e5;--c-uitje:#65a30d}
.gk-punt[data-cat=hotel] .gk-punt-stip{fill:var(--c-hotel)}.gk-punt[data-cat=gemeentehuis] .gk-punt-stip{fill:var(--c-gemeentehuis)}
.gk-punt[data-cat=bezienswaardigheid] .gk-punt-stip{fill:var(--c-bezienswaardigheid)}.gk-punt[data-cat=uitgaan] .gk-punt-stip{fill:var(--c-uitgaan)}.gk-punt[data-cat=uitje] .gk-punt-stip{fill:var(--c-uitje)}
.gk-chip[data-cat=hotel]::before{background:var(--c-hotel)}.gk-chip[data-cat=gemeentehuis]::before{background:var(--c-gemeentehuis)}
.gk-chip[data-cat=bezienswaardigheid]::before{background:var(--c-bezienswaardigheid)}.gk-chip[data-cat=uitgaan]::before{background:var(--c-uitgaan)}.gk-chip[data-cat=uitje]::before{background:var(--c-uitje)}

.gk-dag{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px;padding:10px 12px;background:#fff;border:1px solid #e0d7c4;border-radius:10px;font-size:13px}
.gk-dag[hidden]{display:none}.gk-dag-tekst{flex:1 1 220px}.gk-dag .gk-route{margin:0;cursor:pointer;background:#fff;font:inherit;font-size:12px;font-weight:600}
.gk-tip .gk-dagknop{cursor:pointer;background:#fff;font:inherit;font-size:12px;font-weight:600}
.gk-punt.dag .gk-punt-ring{stroke:#092e47;stroke-width:3}

/* pin boven het gekozen punt */
.gk-pin-vorm{fill:#fff;stroke:rgba(0,0,0,.12);stroke-width:1;filter:drop-shadow(0 3px 4px rgba(0,0,0,.28))}
.gk-pin-stip{fill:#fff;stroke:#111;stroke-width:3}

/* thema "app": rustige grijze kaart zoals bezorg- en reisapps, info onderin als blad */
.gk-kaart.thema-app{--gk-papier:#f1f0ed;--gk-buur-0:#ebeae6;--gk-buur-1:#e6e5e1;--gk-buur-2:#eeedea;--gk-grens:#fff;
  --gk-gemeente:#f8f7f5;--gk-gemeente-rand:#9a9a96;--gk-water:#a8d2ee;--gk-water-rand:#8fc2e3;--gk-weg:#fff;--gk-weg-hoofd:#fde9b0;--gk-spoor:#a3a3a0;--gk-veil:rgba(241,240,237,.6);
  --gk-tekst:#2a2d31;--gk-tekst-zacht:#7b7f85;--gk-gp:#cfe8c3;--gk-gb:#c3e0b4}
.gk-kaart.thema-app .gk-snelweg{stroke:#c9c9c6}.gk-kaart.thema-app .gk-hoofd{stroke:#fff}
.gk-kaart.thema-app .gk-gemeente{filter:none}.gk-kaart.thema-app .gk-rand{stroke-width:2}
.gk-kaart.thema-app .gk-label-hoofd{fill:#4a4f55;opacity:.7;letter-spacing:calc(18px * var(--gk-s,1))}
.gk-kaart.thema-app .gk-label-buur{fill:#7b7f85;opacity:.85}
.gk-kaart.thema-app .gk-vlak{border-radius:14px;border-color:#dcdbd7}
.gk-kaart.thema-app .gk-tip{left:0;right:0;top:auto;bottom:0;max-width:none;max-height:58%;overflow:auto;border-radius:18px 18px 0 0;padding:22px 18px 18px;box-shadow:0 -6px 24px rgba(0,0,0,.16);font-size:14px}
.gk-kaart.thema-app .gk-tip::before{content:"";position:absolute;left:50%;top:8px;width:44px;height:4px;margin-left:-22px;border-radius:2px;background:#d9d6d0}
.gk-kaart.thema-app .gk-tip strong{font-size:17px}
.gk-kaart.thema-app .gk-zoomknoppen{top:10px;bottom:auto}
.gk-kaart.thema-app .gk-punt-ring{opacity:.95}
@media (max-width:520px){.gk-tip{left:0;right:0;top:auto;bottom:0;max-width:none;border-radius:18px 18px 0 0}}

.gk-kaart.thema-app .gk-tip{max-height:46%}
.gk-kaart.thema-app .gk-tip .gk-lopen div:nth-child(n+4),.gk-kaart.thema-app .gk-tip .gk-leg{display:none}
@media (max-width:520px){.gk-kaart.thema-app .gk-svg{aspect-ratio:.82}.gk-kaart.thema-app .gk-tip .gk-lopen div:nth-child(n+4){display:none}}

/* straatnamen: verschijnen bij voldoende inzoomen (laag z1/z2) */
.gk-sn{font-weight:600;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:calc(56px * var(--gk-k,1) * var(--gk-s,1));fill:#5f656b;stroke:#fff;stroke-width:calc(12px * var(--gk-k,1) * var(--gk-s,1));paint-order:stroke;stroke-linejoin:round;text-anchor:middle;dominant-baseline:central;pointer-events:none}
.gk-kaart.thema-app .gk-cir5{fill-opacity:.26}.gk-kaart.thema-app .gk-cir10{fill-opacity:.16}.gk-kaart.thema-app .gk-cir15{fill-opacity:.14}

/* basislaag: voorzieningen */
.gk-kaart{--c-vvv:#0891b2;--c-politie:#1d4ed8;--c-ziekenhuis:#dc2626;--c-station:#1e3a8a;--c-brandweer:#b45309;--c-bibliotheek:#0f766e;--c-zwembad:#0ea5e9;--c-attractie:#d6336c}
.gk-punt[data-cat=vvv] .gk-punt-stip{fill:var(--c-vvv)}.gk-punt[data-cat=politie] .gk-punt-stip{fill:var(--c-politie)}.gk-punt[data-cat=ziekenhuis] .gk-punt-stip{fill:var(--c-ziekenhuis)}
.gk-punt[data-cat=station] .gk-punt-stip{fill:var(--c-station)}.gk-punt[data-cat=brandweer] .gk-punt-stip{fill:var(--c-brandweer)}.gk-punt[data-cat=bibliotheek] .gk-punt-stip{fill:var(--c-bibliotheek)}
.gk-punt[data-cat=zwembad] .gk-punt-stip{fill:var(--c-zwembad)}.gk-punt[data-cat=attractie] .gk-punt-stip{fill:var(--c-attractie)}
.gk-chip[data-cat=vvv]::before{background:var(--c-vvv)}.gk-chip[data-cat=politie]::before{background:var(--c-politie)}.gk-chip[data-cat=ziekenhuis]::before{background:var(--c-ziekenhuis)}
.gk-chip[data-cat=station]::before{background:var(--c-station)}.gk-chip[data-cat=brandweer]::before{background:var(--c-brandweer)}.gk-chip[data-cat=bibliotheek]::before{background:var(--c-bibliotheek)}
.gk-chip[data-cat=zwembad]::before{background:var(--c-zwembad)}.gk-chip[data-cat=attractie]::before{background:var(--c-attractie)}

/* groepsknoppen: alles staat uit bij het openen */
.gk-groepen{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.gk-groep{padding:8px 16px;border:1px solid #d6cdb9;border-radius:999px;background:#fff;color:var(--gk-tekst);font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.gk-groep.is-aan{background:var(--gk-tekst);color:#fff;border-color:var(--gk-tekst)}
.gk-panelen{margin-bottom:8px}.gk-paneel{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px;margin-bottom:6px;border-radius:12px;background:rgba(0,0,0,.035)}.gk-paneel[hidden]{display:none}
.gk-select{padding:6px 10px;border:1px solid #d6cdb9;border-radius:999px;background:#fff;color:var(--gk-tekst);font:inherit;font-size:13px;max-width:100%}.gk-keuze{gap:8px}
