
/* edc */
/* Kopfonts (ronde 3): lokaal, vrije licentie (SIL OFL 1.1). Gewichtsbereik 100-900 zodat de browser nooit een vals vet maakt. */
@font-face{font-family:"Archivo Black";font-weight:100 900;font-style:normal;font-display:swap;src:url(fonts/archivo-black-latin-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Archivo Black";font-weight:100 900;font-style:normal;font-display:swap;src:url(fonts/archivo-black-latin-ext-400.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Anton";font-weight:100 900;font-style:normal;font-display:swap;src:url(fonts/anton-latin-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Anton";font-weight:100 900;font-style:normal;font-display:swap;src:url(fonts/anton-latin-ext-400.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Outfit";font-weight:100 900;font-style:normal;font-display:swap;src:url(fonts/outfit-latin-800.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Outfit";font-weight:100 900;font-style:normal;font-display:swap;src:url(fonts/outfit-latin-ext-800.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
/* Mama Africa, versie B (richting EDC). Tokens uit STYLE-SHEET.md sectie 1, geen nieuwe tinten.
   DNA van edc.com: donkere wereld + sterrenhemel, neon als hierarchie, wiel van edities, aftellen,
   line-up als typografische poster, tickets als neon-kaarten. Handschrift: Mama Africa (stickers, wax-print, Ojuju). */
:root{
  --ma-ink:#150A22;--ma-purple:#24103D;--ma-surface:#32185A;--ma-violet:#662D91;
  --ma-yellow:#FFCE00;--ma-pink:#FFAED3;--ma-magenta:#EE2A7B;--ma-mint:#6DCCA7;
  --ma-orange:#FBB040;--ma-lilac:#EADFF7;--ma-white:#FFFFFF;
  --f-display:"Archivo Black","DM Sans",system-ui,sans-serif;--f-body:"DM Sans",system-ui,sans-serif;
  --d-xl:clamp(2.75rem,6.4vw + 1rem,6rem);--d-l:clamp(2.25rem,4.5vw + .5rem,4.25rem);--d-m:clamp(1.5rem,2.2vw + .5rem,2.25rem);
  --lead:clamp(1.125rem,1vw + .8rem,1.375rem);
  --gut:clamp(16px,4vw,40px);--sec:clamp(64px,9vw,120px);
  --shadow:0 10px 24px rgba(8,2,20,.5);--ease:cubic-bezier(.22,1,.36,1);
  --glow-y:0 0 22px rgba(255,206,0,.55);
  --wax:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 64 64'%3E%3Crect width='64' height='64' fill='%2332185A'/%3E%3Ccircle cx='32' cy='32' r='22' fill='none' stroke='%23FFCE00' stroke-width='4'/%3E%3Ccircle cx='32' cy='32' r='12' fill='%23EE2A7B'/%3E%3Ccircle cx='32' cy='32' r='5' fill='%23FFCE00'/%3E%3Ccircle cx='0' cy='0' r='10' fill='%236DCCA7'/%3E%3Ccircle cx='64' cy='0' r='10' fill='%236DCCA7'/%3E%3Ccircle cx='0' cy='64' r='10' fill='%236DCCA7'/%3E%3Ccircle cx='64' cy='64' r='10' fill='%236DCCA7'/%3E%3Cpath d='M32 2v6M32 56v6M2 32h6M56 32h6' stroke='%23FFAED3' stroke-width='3'/%3E%3C/svg%3E");
}
*,*::before,*::after{box-sizing:border-box}
html{overflow-x:clip;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--ma-ink);color:var(--ma-white);font:400 1rem/1.65 var(--f-body);overflow-x:clip;-webkit-font-smoothing:antialiased;position:relative}
/* sterrenhemel: EDC's donkere wereld, in merkkleuren; twinkelt alleen met transform/opacity */
body::before,body::after{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background-repeat:repeat}
body::before{background-image:radial-gradient(1.5px 1.5px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 90px 120px,rgba(255,255,255,.8),transparent),radial-gradient(1.5px 1.5px at 160px 60px,#FFCE00,transparent),radial-gradient(1px 1px at 230px 190px,#fff,transparent),radial-gradient(2px 2px at 300px 90px,#FFAED3,transparent),radial-gradient(1px 1px at 60px 250px,#6DCCA7,transparent),radial-gradient(1.5px 1.5px at 340px 270px,#fff,transparent);background-size:380px 320px;opacity:.55}
body::after{background-image:radial-gradient(2px 2px at 130px 40px,#FFCE00,transparent),radial-gradient(1.5px 1.5px at 280px 220px,#fff,transparent),radial-gradient(2px 2px at 40px 180px,#6DCCA7,transparent),radial-gradient(1.5px 1.5px at 210px 130px,#FFAED3,transparent);background-size:310px 290px;animation:twinkle 5s ease-in-out infinite alternate}
@keyframes twinkle{from{opacity:.15}to{opacity:.85}}
main,header,footer,.cb{position:relative;z-index:1}
img,svg{display:block;max-width:100%}
a{color:inherit}
::selection{background:var(--ma-yellow);color:var(--ma-ink)}
:focus-visible{outline:3px solid var(--ma-magenta);outline-offset:2px}
.skip{position:absolute;left:-999px;top:8px;background:var(--ma-yellow);color:var(--ma-ink);padding:10px 16px;z-index:300;font-weight:700}
.skip:focus{left:8px}
.wrap{width:100%;max-width:calc(1240px + 2*var(--gut));margin-inline:auto;padding-inline:var(--gut)}
h1,h2,h3,.display{font-family:var(--f-display);font-weight:800;margin:0;text-wrap:balance;letter-spacing:.005em;text-transform:uppercase}
h1{font-size:var(--d-xl);line-height:.95}h2{font-size:var(--d-l);line-height:1}h3{font-size:var(--d-m);line-height:1.1}
.y{color:var(--ma-yellow);text-shadow:var(--glow-y)}
.eyebrow,.label{font:700 .8125rem/1.3 var(--f-body);letter-spacing:.14em;text-transform:uppercase}
.eyebrow{color:var(--ma-yellow);margin:0 0 16px}
.lead{font-size:var(--lead);line-height:1.55;color:var(--ma-lilac);max-width:60ch;margin:20px 0 0}
p{margin:0 0 1em;max-width:65ch}
.small{font-size:.875rem;line-height:1.5}.muted{color:var(--ma-lilac)}
.center{text-align:center}.center .lead,.center p{margin-inline:auto}
.sec{padding-block:var(--sec);position:relative}
.band-purple{background:linear-gradient(180deg,rgba(36,16,61,.92),rgba(36,16,61,.97))}
.band-surface{background:rgba(50,24,90,.8)}
.sec-head{margin-bottom:36px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px 32px}
.sec-head.center{justify-content:center;text-align:center}
.mt{margin-top:32px}
/* wax-print scheiding: de Mama Africa-versie van EDC's bloem-scheidingslijn */
.wax{height:22px;background:var(--wax);background-size:44px 44px;border-block:3px solid var(--ma-white)}
.wax-s{height:12px;background:var(--wax);background-size:24px 24px}
/* knoppen */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 28px;font:700 .8125rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;border:0;cursor:pointer;border-radius:0;transition:transform 120ms var(--ease),box-shadow 160ms var(--ease);position:relative;color:var(--ma-ink);background:none;font-family:var(--f-body)}
.btn-primary{background:var(--ma-yellow);border:3px solid var(--ma-white);transform:rotate(-1.5deg);box-shadow:var(--shadow),0 0 26px rgba(255,206,0,.35)}
.btn-primary:hover{transform:rotate(0) translateY(-2px);box-shadow:var(--shadow),0 0 38px rgba(255,206,0,.6)}
.btn-primary:active{transform:translateY(1px)}
.btn-secondary{color:var(--ma-white);border:2px solid var(--ma-white);transform:rotate(1deg)}
.btn-secondary:hover{transform:rotate(0) translateY(-2px);background:rgba(255,255,255,.1)}
.btn-tertiary{min-height:44px;padding:0;color:var(--ma-white);text-decoration:underline;text-decoration-color:var(--ma-yellow);text-decoration-thickness:3px;text-underline-offset:6px}
.btn-sm{min-height:44px;padding:0 18px}
.btn[disabled]{opacity:.4;pointer-events:none}
.btn .ico,.ico{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:square;flex:none}
.btn-row{display:flex;flex-wrap:wrap;gap:16px 20px;align-items:center;margin-top:32px}
@media(max-width:700px){.btn{min-height:56px}.btn-sm{min-height:44px}.btn-row .btn-primary,.btn-row .btn-secondary{flex:1 1 100%}}
@media(prefers-reduced-motion:no-preference){.btn-primary{animation:pulse 3.4s ease-in-out infinite}}
@keyframes pulse{50%{box-shadow:var(--shadow),0 0 44px rgba(255,206,0,.55)}}
/* header: EDC-balk (logo, nav, kleine pil "Dates") */
.hdr{position:sticky;top:0;z-index:60;background:rgba(21,10,34,.88);backdrop-filter:blur(10px);border-bottom:1px solid rgba(234,223,247,.2)}
.hdr .wrap{display:flex;align-items:center;gap:20px;height:80px}
.logo img{width:60px;height:auto}
.nav{display:flex;gap:26px;margin-left:auto;align-items:center}
.nav a{font:700 .8125rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;padding:14px 0;white-space:nowrap;border-bottom:3px solid transparent}
.nav a:hover,.nav a[aria-current]{border-bottom-color:var(--ma-yellow)}
.lang{display:inline-flex;border:2px solid var(--ma-lilac);border-radius:9999px;overflow:hidden;flex:none}
.lang a{font:700 .75rem/1 var(--f-body);letter-spacing:.12em;text-decoration:none;padding:0 11px;min-height:38px;display:inline-flex;align-items:center;color:var(--ma-lilac)}
.lang a[aria-current]{background:var(--ma-lilac);color:var(--ma-ink)}
.ddwrap{position:relative;flex:none}
.ddbtn{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 20px;background:var(--ma-yellow);color:var(--ma-ink);border:0;border-radius:9999px;font:700 .75rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;box-shadow:0 0 22px rgba(255,206,0,.4)}
.ddbtn svg{width:10px;height:10px;transition:transform 160ms}
.ddbtn[aria-expanded=true] svg{transform:rotate(180deg)}
.dd{position:absolute;right:0;top:calc(100% + 12px);width:min(340px,calc(100vw - 32px));background:var(--ma-ink);border:1px solid rgba(234,223,247,.35);border-radius:8px;box-shadow:0 24px 60px rgba(0,0,0,.6);z-index:70;overflow:hidden}
.dd[hidden]{display:none}
.dd a{display:flex;align-items:center;gap:14px;padding:12px 18px;text-decoration:none;border-bottom:1px solid rgba(234,223,247,.15)}
.dd a:hover,.dd a:focus-visible{background:var(--ma-surface)}
.dd a:last-child{border:0;justify-content:space-between;font:700 .75rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ma-yellow);min-height:52px}
.dd .dot{width:12px;height:12px;border-radius:50%;background:var(--c);flex:none;box-shadow:0 0 10px var(--c)}
.dd b{display:block;font:700 .95rem/1.2 var(--f-body)}.dd small{color:var(--ma-lilac);font-size:.78rem}
.burger{display:none;background:none;border:2px solid var(--ma-white);color:var(--ma-white);width:44px;height:44px;cursor:pointer;place-items:center;border-radius:0}
.menu{display:none}
@media(max-width:1320px){.nav,.hdr .lang{display:none}.burger{display:grid}.ddwrap{margin-left:auto}
 .menu{position:fixed;inset:80px 0 0;background:var(--ma-ink);z-index:55;padding:24px var(--gut) 40px;flex-direction:column;gap:6px;overflow:auto}
 .menu.open{display:flex}.menu a{font:800 1.9rem/1.2 var(--f-display);text-transform:uppercase;text-decoration:none;padding:10px 0;border-bottom:1px solid rgba(234,223,247,.18)}
 .menu .lang{display:inline-flex;margin-top:18px;align-self:flex-start}.menu .lang a{font:700 .75rem/1 var(--f-body);border:0;padding:0 14px}}
@media(max-width:700px){.ddwrap{position:static}.dd{position:fixed;left:16px;right:16px;width:auto;top:76px}.hdr .wrap{height:68px;gap:12px}.logo img{width:48px}.menu{inset:68px 0 0}.ddbtn{padding:0 16px}}
.subnav{position:sticky;top:80px;z-index:40;background:rgba(21,10,34,.92);backdrop-filter:blur(10px);border-bottom:1px solid rgba(234,223,247,.2)}
.subnav .wrap{display:flex;gap:6px 26px;overflow-x:auto;scrollbar-width:none;align-items:center}
.subnav a{font:700 .75rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;padding:18px 0;white-space:nowrap;border-bottom:3px solid transparent;color:var(--ma-lilac)}
.subnav a:hover{color:#fff;border-bottom-color:var(--ma-yellow)}
.subnav .btn{margin-left:auto;min-height:40px;padding:0 16px}
@media(max-width:1040px){.subnav{top:68px}}
/* ---- plaatsaanduiding / sticker-variant per beeldplek ---- */
.slot{position:relative;overflow:hidden;background:var(--ma-surface);aspect-ratio:var(--ar,4/3);border:3px solid var(--ma-white);box-shadow:var(--shadow)}
.slot-p{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:16px;background:repeating-linear-gradient(135deg,rgba(234,223,247,.07) 0 12px,transparent 12px 24px),var(--ma-surface);outline:2px dashed var(--ma-lilac);outline-offset:-12px}
.slot-p .ico{width:40px;height:40px;stroke-width:1.6;color:var(--ma-lilac)}
.slot-p b{font:700 .9rem/1.3 var(--f-body);max-width:24ch}.slot-p i{font:400 .78rem/1.3 var(--f-body);color:var(--ma-lilac);font-style:normal}
.tag{position:absolute;left:0;top:0;background:var(--ma-yellow);color:var(--ma-ink);font:700 .6875rem/1 var(--f-body);letter-spacing:.12em;text-transform:uppercase;padding:7px 10px}
.slot-s{position:absolute;inset:0;background:var(--bg,var(--ma-pink));overflow:hidden;display:none}
.slot-s::before{content:"";position:absolute;inset:0;background:var(--wax);background-size:56px 56px;opacity:.14;mix-blend-mode:multiply}
.slot-s .big{position:absolute;left:7%;top:7%;right:7%;font:800 clamp(1.25rem,2.4vw,2.1rem)/.95 var(--f-display);text-transform:uppercase;color:var(--ma-ink);overflow-wrap:anywhere}
.slot-s img{position:absolute;height:66%;width:auto;max-width:70%;object-fit:contain;right:5%;bottom:-3%;transform:rotate(var(--r,-5deg));filter:drop-shadow(0 8px 10px rgba(8,2,20,.35));animation:float 7s ease-in-out infinite}
body[data-v=sticker] .slot-p{display:none}
body[data-v=sticker] .slot-s{display:block}
.slot.arch{border-radius:999px 999px 0 0}
@keyframes float{50%{transform:translateY(-8px) rotate(var(--r,-5deg))}}
/* ---- HOME: wiel van landen (EDC's wiel van edities, als Mama Africa-plaat) ---- */
.hero{padding-block:clamp(28px,5vw,72px) clamp(48px,6vw,88px);overflow:hidden}
.hero-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(24px,4vw,64px);align-items:center}
.hero h1{font-size:clamp(2.5rem,4.4vw + .6rem,4.6rem)}.hero h1 .l2{display:block;font-size:.5em;line-height:1;margin-top:14px;color:var(--ma-lilac);letter-spacing:.04em}
.proof{display:flex;flex-wrap:wrap;gap:12px 28px;margin:28px 0 0;padding:0;list-style:none}
.proof li{font:700 .8125rem/1.2 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ma-lilac)}
.proof b{display:block;font:800 2rem/1 var(--f-display);color:var(--ma-white);letter-spacing:0;text-shadow:var(--glow-y)}
.wheelbox{position:relative;max-width:660px;width:100%;margin-inline:auto}
.wheel{width:100%;height:auto;overflow:visible;aspect-ratio:1}
.wheel .rim{fill:url(#wax)}
.wheel .core{fill:var(--ma-ink);stroke:var(--ma-yellow);stroke-width:3;filter:drop-shadow(0 0 14px rgba(255,206,0,.5))}
.sector{cursor:pointer;transform-origin:360px 360px;transition:transform .35s var(--ease),filter .35s}
.sector .shape{fill:var(--c);stroke:var(--ma-ink);stroke-width:3;transition:fill .3s}
.sector .hatch{fill:url(#hatch);display:none}
.sector .ph{display:none}
.sector text{font-family:var(--f-display);font-weight:800;font-size:21px;fill:var(--ma-ink);letter-spacing:.03em;text-transform:uppercase;pointer-events:none}
.sector:hover,.sector:focus-visible,.sector.on{transform:scale(1.045);filter:drop-shadow(0 0 16px var(--c))}
.sector:focus-visible{outline:none}.sector:focus-visible .shape{stroke:var(--ma-white);stroke-width:5}
body[data-v=foto] .sector .shape{fill:var(--ma-surface);stroke:var(--c);stroke-width:4}
body[data-v=foto] .sector .hatch{display:block}
body[data-v=foto] .sector text{fill:var(--ma-white)}
body[data-v=foto] .sector .ph{display:block;fill:var(--ma-lilac);font:700 9px var(--f-body);letter-spacing:.14em}
body[data-v=foto] .sector .stk{display:none}
.wheel .hub{pointer-events:none}
.tour{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:center;margin-top:14px}
.pill{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 20px;border:2px solid var(--ma-lilac);border-radius:9999px;background:rgba(21,10,34,.7);color:var(--ma-white);font:700 .75rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;text-decoration:none}
.pill:hover{border-color:var(--ma-yellow)}
.pill .ico{width:12px;height:12px;fill:currentColor;stroke:none}
.pinfo{margin-top:16px;min-height:96px;background:var(--ma-surface);border:3px solid var(--ma-white);padding:14px 20px;box-shadow:var(--shadow);display:grid;grid-template-columns:auto 1fr auto;gap:2px 16px;align-items:center;transform:rotate(-1deg);max-width:520px;margin-inline:auto}
.pinfo .cc{grid-row:span 2;width:56px;height:56px;background:var(--c,var(--ma-mint));color:var(--ma-ink);display:grid;place-items:center;font:800 1.5rem/1 var(--f-display)}
.pinfo b{font:800 1.4rem/1.1 var(--f-display);text-transform:uppercase}
.pinfo small{color:var(--ma-lilac);font-size:.875rem;grid-column:2}
.pinfo a{grid-row:span 2;grid-column:3}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr}.hero{padding-top:12px}.hero-grid .wheelbox{order:-1}}
@media(max-width:700px){.sector text{font-size:23px}.pinfo{grid-template-columns:auto 1fr;transform:none}.pinfo a{grid-column:1/-1;grid-row:auto;justify-self:start;margin-top:6px}}
/* lint */
.ribbon{background:var(--ma-yellow);color:var(--ma-ink);overflow:hidden;border-block:3px solid var(--ma-white);transform:rotate(-.6deg);margin-block:8px;position:relative;z-index:1}
.ribbon-track{display:flex;gap:44px;white-space:nowrap;padding:12px 0;width:max-content;animation:marq 60s linear infinite;font:800 1.375rem/1 var(--f-display);text-transform:uppercase}
.ribbon-track span::after{content:"✺";margin-left:44px;color:var(--ma-magenta)}
.ribbon:hover .ribbon-track{animation-play-state:paused}
@keyframes marq{to{transform:translateX(-50%)}}
/* aftellen */
.next{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(24px,4vw,64px);align-items:center}
.count{display:flex;gap:clamp(8px,2vw,24px);margin:28px 0 8px}
.count div{background:rgba(21,10,34,.75);border:2px solid var(--ma-yellow);padding:14px clamp(10px,2vw,22px) 10px;text-align:center;min-width:0;flex:1 1 0;box-shadow:inset 0 0 24px rgba(255,206,0,.12),0 0 24px rgba(255,206,0,.18)}
.count b{display:block;font:800 clamp(2rem,5.4vw,4.5rem)/1 var(--f-display);color:var(--ma-yellow);text-shadow:var(--glow-y);font-variant-numeric:tabular-nums}
.count span{font:700 .6875rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ma-lilac)}
.factline{font:700 .8125rem/1.5 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ma-lilac)}
@media(max-width:900px){.next{grid-template-columns:1fr}}
/* editiekaarten */
.cards{display:grid;gap:28px 24px}
.cards-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cards-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cards-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1100px){.cards-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.cards-3{grid-template-columns:1fr}}
@media(max-width:640px){.cards-4,.cards-2{grid-template-columns:1fr}}
.ed{display:flex;flex-direction:column;text-decoration:none;background:var(--ma-purple);border:2px solid var(--c,var(--ma-mint));box-shadow:0 0 0 rgba(0,0,0,0);transition:transform 200ms var(--ease),box-shadow 200ms;position:relative;height:100%}
.ed:nth-child(odd){transform:rotate(-.8deg)}.ed:nth-child(even){transform:rotate(.8deg)}
.ed:hover{transform:rotate(0) translateY(-4px);box-shadow:0 0 30px var(--c),var(--shadow)}
.ed .slot{border:0;border-bottom:3px solid var(--ma-white);box-shadow:none;--ar:5/4}
.ed-body{padding:18px 20px 22px;display:flex;flex-direction:column;gap:8px;flex:1}
.ed-date{font:800 1.75rem/1 var(--f-display);color:var(--c,var(--ma-mint));text-transform:uppercase}
.ed h3{font-size:1.5rem}.ed .meta{font-size:.9rem;color:var(--ma-lilac);margin:0}
.ed .go{margin-top:auto;padding-top:10px;font:700 .75rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ma-yellow)}
.chip{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border:2px solid var(--ma-yellow);color:var(--ma-yellow);font:700 .6875rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;align-self:flex-start;background:transparent}
.chip.live{background:var(--ma-magenta);border-color:var(--ma-magenta);color:var(--ma-ink)}
.chip.done{border-color:var(--ma-lilac);color:var(--ma-lilac)}
.cc-badge{display:inline-grid;place-items:center;min-width:34px;height:24px;padding:0 6px;background:var(--c,var(--ma-lilac));color:var(--ma-ink);font:800 .8rem/1 var(--f-display);letter-spacing:.04em}
/* landentegels */
.cty{text-decoration:none;display:flex;flex-direction:column;gap:12px;padding:20px;background:var(--ma-purple);border-top:8px solid var(--c);border-inline:1px solid rgba(234,223,247,.2);border-bottom:1px solid rgba(234,223,247,.2);scroll-margin-top:120px}
.cty header{display:flex;align-items:center;gap:14px}
.cty h3{font-size:1.5rem}
.cty .stat{font:700 .75rem/1.4 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ma-lilac);margin:0}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.cchip{display:inline-flex;align-items:center;min-height:32px;padding:0 14px;border:2px solid var(--ma-lilac);border-radius:9999px;font:600 .8125rem/1 var(--f-body);text-decoration:none;color:var(--ma-white)}
a.cchip:hover{border-color:var(--c,var(--ma-yellow));background:rgba(255,255,255,.08)}
.cchip.up{border-color:var(--ma-yellow);color:var(--ma-yellow)}
/* line-up als typografische poster (EDC lineup) */
.lineup{text-align:center;max-width:1000px;margin-inline:auto}
.lineup .day{font:800 1.1rem/1 var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--ma-white);margin:30px 0 14px}
.lineup .names{font:800 clamp(1.6rem,4.2vw,3.4rem)/1.18 var(--f-display);text-transform:uppercase;color:var(--ma-mint);text-shadow:0 0 18px rgba(109,204,167,.4);margin:0 auto;max-width:none}
.lineup .names span{white-space:nowrap}
.lineup .names .dot{color:var(--ma-yellow);margin-inline:.35em;white-space:normal}
.lineup .names .alt{color:var(--ma-pink);text-shadow:0 0 18px rgba(255,174,211,.4)}
.lineup .names .tba{white-space:normal;color:var(--ma-lilac);font-size:.6em;opacity:.9;text-shadow:none}
.lineup .last{font:800 1.1rem/1.3 var(--f-display);text-transform:uppercase;margin-top:26px;color:var(--ma-lilac)}
.lineup .last b{display:block;font-size:2.4rem;color:var(--ma-yellow);text-shadow:var(--glow-y)}
.note{display:inline-block;margin-top:20px;font:600 .8125rem/1.4 var(--f-body);color:var(--ma-ink);background:var(--ma-lilac);padding:8px 14px}
/* ticketkaarten (EDC GA / GA+ / VIP) */
.tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;max-width:1040px;margin-inline:auto}
.tier{border:2px solid var(--c);background:linear-gradient(180deg,rgba(50,24,90,.9),rgba(21,10,34,.95));padding:28px 24px 26px;text-align:center;display:flex;flex-direction:column;gap:12px;box-shadow:0 0 34px color-mix(in srgb,var(--c) 35%,transparent),inset 0 0 30px color-mix(in srgb,var(--c) 10%,transparent);position:relative}
.tier h3{color:var(--c);font-size:2rem;text-shadow:0 0 18px color-mix(in srgb,var(--c) 55%,transparent)}
.tier .price{font:800 2.6rem/1 var(--f-display);margin:6px 0 0}.tier .price small{display:block;font:500 .8125rem/1.3 var(--f-body);color:var(--ma-lilac);margin-top:6px}
.tier ul{list-style:none;margin:6px 0 10px;padding:0;text-align:left;font-size:.95rem;display:grid;gap:8px}
.tier li{padding-left:24px;position:relative}.tier li::before{content:"✺";position:absolute;left:0;color:var(--c)}
.tier .btn{background:var(--c);border:3px solid var(--ma-white);margin-top:auto}
.tier .badge{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:var(--ma-magenta);color:var(--ma-ink);font:700 .6875rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;padding:8px 14px;white-space:nowrap}
@media(max-width:860px){.tiers{grid-template-columns:1fr;max-width:460px}}
.sticker{position:absolute;pointer-events:none;filter:drop-shadow(0 8px 10px rgba(8,2,20,.45));animation:float 7s ease-in-out infinite}
@media(max-width:900px){.sticker{display:none}}
/* split */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,80px);align-items:center}
@media(max-width:860px){.split{grid-template-columns:1fr}}
/* tabs / filters / agenda */
.filterbar{display:flex;flex-wrap:wrap;gap:18px 36px;align-items:end;margin-bottom:28px}
.grp{display:grid;gap:8px}.grp>.label{color:var(--ma-lilac)}
.fchip{display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border:2px solid var(--ma-lilac);border-radius:9999px;background:transparent;color:var(--ma-white);font:700 .75rem/1 var(--f-body);letter-spacing:.08em;cursor:pointer}
.fchip[aria-pressed=true],.fchip[aria-selected=true]{background:var(--ma-yellow);border-color:var(--ma-yellow);color:var(--ma-ink)}
.fchips{display:flex;flex-wrap:wrap;gap:8px}
.ev-list{display:grid;gap:14px}
.ev{display:grid;gap:8px 24px;align-items:center;padding:16px 22px 16px 0;background:var(--ma-purple);border-left:8px solid var(--c,var(--ma-mint));text-decoration:none;transition:transform 160ms var(--ease),box-shadow 160ms;min-height:96px}
.ev:hover{transform:translateX(6px);box-shadow:-6px 0 28px color-mix(in srgb,var(--c) 45%,transparent)}
.ev.hidden,.hidden{display:none}
.ev-date{text-align:center;color:var(--c,var(--ma-mint));font-family:var(--f-display);text-transform:uppercase;line-height:1}
.ev-date b{display:block;font-size:2.6rem;font-weight:800}.ev-date span{font:700 .8125rem/1 var(--f-body);letter-spacing:.14em}
.ev-main h3{font-size:1.5rem}.ev-main .meta{margin:6px 0 0;font-size:.9rem;color:var(--ma-lilac);max-width:none}
.ev.past{background:transparent;border-left-color:rgba(234,223,247,.4)}.ev.past .ev-date{color:var(--ma-lilac)}
.empty{display:none;padding:40px 0;text-align:center}.empty.show{display:block}
@media(max-width:800px){.ev{grid-template-columns:72px minmax(0,1fr);padding:16px 16px 16px 0}.ev .chip,.ev .ev-cta{grid-column:2;justify-self:start}.ev-date b{font-size:2.1rem}.ev-main h3{font-size:1.25rem}}
/* fact-lijst / detail */
.page-hero{padding-block:clamp(36px,6vw,80px) clamp(28px,4vw,56px);position:relative;overflow:hidden;background:linear-gradient(180deg,rgba(36,16,61,.9),rgba(21,10,34,0))}
.crumb{display:flex;gap:10px;flex-wrap:wrap;font:600 .8125rem/1.4 var(--f-body);color:var(--ma-lilac);margin-bottom:22px}.crumb a{color:var(--ma-lilac)}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 28px;margin:28px 0 0}
.facts div{border-top:3px solid var(--ma-yellow);padding-top:10px}
.facts dt{font:700 .75rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ma-lilac)}
.facts dd{margin:6px 0 0;font:800 1.35rem/1.2 var(--f-display);text-transform:uppercase}
.poster{position:relative;border:3px solid var(--ma-white);box-shadow:var(--shadow),0 0 60px rgba(102,45,145,.6);transform:rotate(-1.5deg);background:var(--ma-purple)}
.poster img{width:100%;height:auto}
.hero-poster{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(24px,4vw,64px);align-items:center}
@media(max-width:900px){.hero-poster{grid-template-columns:1fr}.facts{grid-template-columns:1fr 1fr}}
/* edition-pagina */
.ed-hero{position:relative;padding-block:clamp(28px,4vw,56px);background:radial-gradient(120% 90% at 50% 0%,rgba(102,45,145,.55),rgba(21,10,34,0) 70%)}
.ed-title{text-align:center;margin-bottom:28px}
.ed-title .edition-name{display:inline-block;background:var(--ma-yellow);color:var(--ma-ink);border:3px solid var(--ma-white);padding:10px 22px;font:800 1.15rem/1 var(--f-display);letter-spacing:.06em;text-transform:uppercase;transform:rotate(-1.5deg);box-shadow:var(--shadow);margin-top:18px}
.rooms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.room{display:flex;flex-direction:column;gap:14px}.room h3{text-align:center}.room .slot{--ar:4/5}
@media(max-width:800px){.rooms{grid-template-columns:1fr}.room .slot{--ar:16/10}}
.faq details{border-bottom:1px solid rgba(234,223,247,.25);padding:4px 0}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;align-items:center;min-height:56px;font:800 1.3rem/1.2 var(--f-display);text-transform:uppercase}
.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";color:var(--ma-yellow);font-size:1.8rem}
.faq details[open] summary::after{content:"−"}.faq .a{padding:0 0 18px;color:var(--ma-lilac)}
.pending{color:var(--ma-ink);background:var(--ma-lilac);padding:2px 8px;font-weight:700;font-size:.85em}
.travel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.travel div{border:2px solid rgba(234,223,247,.3);padding:20px;background:rgba(36,16,61,.8)}.travel h3{font-size:1.25rem;margin-bottom:10px;color:var(--ma-mint)}
@media(max-width:800px){.travel{grid-template-columns:1fr}}
/* foto's */
.mosaic{grid-auto-flow:dense;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}
.mosaic .slot{--ar:1;border:0;box-shadow:none}.mosaic .slot-p{outline-offset:-6px;padding:4px}.mosaic .slot-p b,.mosaic .slot-p i,.mosaic .slot-p .ico{display:none}.mosaic .tag{font-size:.5rem;padding:4px 5px}
.mosaic .w2{grid-column:span 2;grid-row:span 2}
@media(max-width:800px){.mosaic{grid-template-columns:repeat(4,minmax(0,1fr))}}
.album{display:flex;flex-direction:column;text-decoration:none;gap:10px}
.album .slot{--ar:4/5;transition:transform 200ms var(--ease)}.album:hover .slot{transform:scale(1.02) rotate(-.6deg)}
.album .date{font:700 .75rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--c,var(--ma-yellow))}
.album h3{font-size:1.2rem}.album .venue{margin:0;font-size:.875rem;color:var(--ma-lilac)}
.vtile{background:none;border:0;padding:0;color:inherit;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:10px;font:inherit;width:100%}
.vwrap{position:relative;display:block}.vtile .slot{--ar:16/9}.vtile .play{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-38px 0 0 -38px;background:var(--ma-yellow);border:3px solid var(--ma-white);display:grid;place-items:center;z-index:3;box-shadow:0 0 30px rgba(255,206,0,.6);transition:transform 160ms}
.vtile:hover .play{transform:scale(1.1)}.vtile .play::before{content:"";border-left:22px solid var(--ma-ink);border-block:13px solid transparent;margin-left:6px}
.vtile b{font:800 1.2rem/1.1 var(--f-display);text-transform:uppercase;display:block}.vtile span.d{font-size:.875rem;color:var(--ma-lilac)}
/* boeken */
.proofs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.proofs div{border:2px solid var(--ma-yellow);padding:22px;text-align:center;box-shadow:0 0 28px rgba(255,206,0,.18);background:rgba(21,10,34,.7)}
.proofs b{display:block;font:800 clamp(2.4rem,5vw,4rem)/1 var(--f-display);color:var(--ma-yellow);text-shadow:var(--glow-y)}.proofs span{font-size:.9rem;color:var(--ma-lilac)}
@media(max-width:700px){.proofs{grid-template-columns:1fr}}
.offer{display:flex;flex-direction:column;gap:12px;background:var(--ma-purple);border:2px solid var(--c);padding:0 0 22px}
.offer .slot{--ar:16/10;border:0;border-bottom:3px solid var(--ma-white);box-shadow:none}.offer h3,.offer p{padding-inline:20px}.offer p{margin:0;color:var(--ma-lilac)}
.crew{display:flex;flex-direction:column;gap:10px;text-align:center}.crew .slot{--ar:4/5}.crew h3{font-size:1.5rem}.crew .role{margin:0;font:700 .75rem/1 var(--f-body);letter-spacing:.14em;color:var(--ma-yellow);text-transform:uppercase}
.cards-4.crews{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1000px){.cards-4.crews{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* formulier */
.form{display:grid;gap:20px;background:var(--ma-surface);border:3px solid var(--ma-white);padding:clamp(20px,3vw,36px);box-shadow:var(--shadow)}
.field{display:grid;gap:8px}.field label{font:700 .8125rem/1.3 var(--f-body);letter-spacing:.1em;text-transform:uppercase}
.field input,.field select,.field textarea{width:100%;min-height:56px;padding:12px 16px;background:var(--ma-ink);color:var(--ma-white);border:2px solid var(--ma-lilac);border-radius:0;font:400 1rem/1.4 var(--f-body)}
.field textarea{min-height:140px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid var(--ma-magenta);outline-offset:2px;border-color:var(--ma-yellow)}
.field .msg{display:none;margin:0;color:var(--ma-pink);font-size:.9rem;font-weight:600;gap:8px;align-items:center}
.field .msg svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;flex:none}
.field.err .msg{display:flex}.field.err input,.field.err textarea{border-color:var(--ma-pink)}
.hint{margin:0;font-size:.85rem;color:var(--ma-lilac)}.hp{position:absolute;left:-9999px}
.ok{display:none;gap:10px;align-items:center;color:var(--ma-mint);font-weight:700}.ok.show{display:flex}.ok svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.5}
.mails{display:grid;gap:14px}.mails div{display:grid}.mails a{font-weight:700;font-size:1.1rem;text-decoration-color:var(--ma-yellow);text-decoration-thickness:3px;text-underline-offset:5px}
.langnote{margin-top:20px;font-size:.9rem}
/* footer */
.ftr{background:var(--ma-ink);border-top:3px solid var(--ma-white);padding-top:0}
.ftr-grid{display:grid;grid-template-columns:1.1fr 1fr 1.3fr 1fr;gap:36px;padding-block:56px 40px}
.ftr h3{font-size:1.1rem;margin-bottom:14px;color:var(--ma-yellow)}.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.ftr a{text-decoration:none}.ftr ul a:hover{text-decoration:underline;text-decoration-color:var(--ma-yellow);text-underline-offset:4px}
.ftr .brand{display:flex;align-items:center;gap:14px;font:800 1.6rem/1 var(--f-display);text-transform:uppercase}.ftr .brand img{width:64px}
.ftr .two{columns:2;column-gap:20px}.ftr .two li{break-inside:avoid;margin-bottom:10px}
.soc a{display:flex;gap:10px;align-items:center}.soc svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2}
.legal{display:flex;flex-wrap:wrap;gap:10px 28px;border-top:1px solid rgba(234,223,247,.2);padding-block:22px 36px;font-size:.875rem;color:var(--ma-lilac)}
@media(max-width:1000px){.ftr-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.ftr-grid{grid-template-columns:1fr}}
/* cookiebanner: balk onderaan (STYLE-SHEET: mobiel max. 20% hoogte) */
.cb{position:fixed;left:0;right:0;bottom:0;z-index:100;background:var(--ma-ink);border-top:3px solid var(--ma-yellow);box-shadow:0 -12px 40px rgba(0,0,0,.6);padding:18px var(--gut);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 32px;align-items:center;max-width:none}
.cb[hidden]{display:none}
.cb-top{display:flex;justify-content:space-between;align-items:center;grid-column:1/-1}
.cb h2{font:800 1.1rem/1 var(--f-display);text-transform:uppercase}
.cb-x{background:none;border:0;color:#fff;width:44px;height:44px;cursor:pointer;margin:-10px -12px -10px 0}.cb-x svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.5;margin:auto}
.cb .txt{margin:0;font-size:.9rem;line-height:1.5;color:var(--ma-lilac);max-width:80ch;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.cb.open .txt{-webkit-line-clamp:unset;display:block}
.cb-more{background:none;border:0;color:var(--ma-yellow);font:700 .8125rem/1 var(--f-body);text-decoration:underline;cursor:pointer;padding:0;min-height:32px;text-align:left;justify-self:start}
.cb-prefs{display:none;grid-column:1/-1;gap:10px;max-height:34vh;overflow:auto}
.cb.prefs .cb-prefs{display:grid}
.pref{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:10px 0;border-top:1px solid rgba(234,223,247,.2)}
.pref small{display:block;color:var(--ma-lilac);font-size:.8rem}
.tog{width:52px;height:30px;background:var(--ma-surface);border:2px solid var(--ma-lilac);border-radius:9999px;position:relative;cursor:pointer;flex:none;padding:0}
.tog::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--ma-lilac);transition:transform 160ms}
.tog[aria-checked=true]{background:var(--ma-mint);border-color:var(--ma-mint)}.tog[aria-checked=true]::after{transform:translateX(22px);background:var(--ma-ink)}.tog:disabled{opacity:.7}
.cb-btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;grid-column:2;grid-row:2}
.cb-btns .btn{min-height:46px;padding:0 20px;border:2px solid var(--ma-white);transform:none;box-shadow:none;animation:none}
.cb-btns .accept{background:var(--ma-yellow)}.cb-btns .deny{background:var(--ma-lilac)}.cb-btns .prefs,.cb-btns .save{background:transparent;color:var(--ma-white)}
.cb-btns .save,.cb.prefs .cb-btns .prefs{display:none}.cb.prefs .cb-btns .save{display:inline-flex}
.cb .link{font-size:.8125rem;color:var(--ma-lilac)}
@media(max-width:760px){.cb{grid-template-columns:1fr;padding:10px var(--gut) 12px;gap:6px}.cb-top{display:none}.cb .txt{font-size:.78rem;line-height:1.35;-webkit-line-clamp:2}.cb-more{min-height:28px;font-size:.75rem}.cb .link{display:none}
 .cb-btns{grid-column:1;grid-row:auto;display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:8px}.cb-btns .btn{min-height:44px;padding:0 8px;font-size:.6875rem;letter-spacing:.06em}
 .cb.prefs .cb-top{display:flex}.cb.prefs .cb-more,.cb.open .cb-more{display:block}.cb.prefs .cb-btns{grid-template-columns:1fr 1fr}.cb.prefs .cb-btns .accept,.cb.prefs .cb-btns .deny{display:inline-flex}}
dialog.lb{border:3px solid var(--ma-white);background:var(--ma-ink);color:#fff;width:min(920px,calc(100vw - 32px));padding:0}
dialog.lb::backdrop{background:rgba(8,2,20,.85)}
.lb-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px}.lb-bar b{font:800 1.2rem/1 var(--f-display);text-transform:uppercase}
.lb-close{background:none;border:0;color:#fff;width:44px;height:44px;cursor:pointer}.lb-close svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.5;margin:auto}
.lb-stage{padding:0 16px 20px}
/* beweging: reveal, alleen transform/opacity */
.rev{opacity:0;transform:translateY(16px);transition:opacity 240ms ease-out,transform 240ms ease-out;transition-delay:calc(var(--i,0)*60ms)}
.rev.in,.no-js .rev,.still .rev{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.rev{opacity:1;transform:none}.ribbon-track{width:auto;flex-wrap:wrap;white-space:normal;justify-content:center}html{scroll-behavior:auto}}
.still *,.still *::before,.still *::after{animation:none!important}
.still .btn-primary{animation:none}
.still body::after{opacity:.4}

/* index */
.dcard{padding-block:36px;border-top:3px solid var(--ma-white)}.dcard h2{font-size:var(--d-m);margin-bottom:18px}
.dgrid{display:grid;grid-template-columns:1.1fr 1.1fr 1.1fr .5fr;gap:18px;align-items:start}
.dgrid figure{margin:0}.dgrid figcaption{min-height:2.6em;font:700 .75rem/1.3 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ma-yellow);margin-bottom:8px}
.dgrid img{width:100%;height:auto;border:2px solid var(--ma-lilac);background:var(--ma-surface)}
.noref{border:2px dashed var(--ma-lilac);padding:40px 16px;text-align:center;color:var(--ma-lilac)}
.dtxt{margin:18px 0 8px;max-width:90ch}
.dcard code,.page-hero code{background:var(--ma-surface);padding:2px 6px}
@media(max-width:1000px){.dgrid{grid-template-columns:1fr 1fr}.dgrid .mob{max-width:200px}}@media(max-width:560px){.dgrid{grid-template-columns:1fr}}

/* =====================================================================================================
   TYPOGRAFIE v2 (ronde na Brians keuze voor versie B: "het lettertype moet beter leesbaar").
   Alleen typografie, leesbaarheid en contrast; kleuren, wiel, afteller, posters en sfeer blijven.
   Regels:  Ojuju alleen voor grote koppen (h1, h2, wiel-titel, lint, line-up; altijd >= 28px).
            Alles wat je leest staat in DM Sans: broodtekst >= 17px mobiel (18px desktop) met regelafstand 1,65;
            labels >= 14px, gewicht >= 600, extra letterafstand; knoppen >= 16px.
            Cijfers in datum, prijs, ticket en afteller: tabelcijfers + grotere maat.
            Contrast: broodtekst/labels >= 7:1, grote koppen >= 4,5:1 (gemeten, zie RESULT-edc-typografie.md).
            Geen tekst die krimpt om te passen: bij te weinig ruimte past de layout zich aan.
   De oude waarden staan ongewijzigd in edc-v1.css (voor typografie.html).
   ===================================================================================================== */
:root{
  --fs-body:clamp(1.0625rem,.25vw + 1rem,1.125rem);
  --fs-small:1rem;
  --fs-label:.875rem;--fs-btn:1rem;
  --ls-label:.12em;--ls-btn:.08em;
  --d-xl:clamp(2.875rem,6.4vw + 1rem,6.25rem);--d-l:clamp(2.5rem,4.5vw + .75rem,4.5rem);--d-m:clamp(1.75rem,2.2vw + .75rem,2.5rem);
  --lead:clamp(1.25rem,.8vw + 1.05rem,1.5rem);
  --tnum:tabular-nums lining-nums;
}
@media(max-width:700px){:root{--fs-small:1.0625rem}}
/* tekstkleur voor kleine tekst: magenta (4,8:1) wordt de lichtere roze uit de kit, rest blijft de eigen kleur */
[style*="--c:"],[style*="--c: "]{--ct:var(--c)}
[style*="--c:var(--ma-magenta)"],[style*="--c: var(--ma-magenta)"]{--ct:var(--ma-pink)}
body{font:400 var(--fs-body)/1.65 var(--f-body)}
/* koppen: Ojuju groter, meer lucht tussen de regels, geen extreem dunne of zware snede */
h1,h2,.display{font-weight:700;letter-spacing:.01em}
h1{line-height:1.05}h2{line-height:1.1}
h3{font:800 1.5rem/1.25 var(--f-body);letter-spacing:0;text-transform:none;text-wrap:balance}
.lead{line-height:1.6;max-width:62ch}
.small{font-size:var(--fs-small);line-height:1.65}.muted{color:var(--ma-lilac)}
.eyebrow,.label{font:700 var(--fs-label)/1.4 var(--f-body);letter-spacing:var(--ls-label)}
.eyebrow{font-size:.9375rem}
/* knoppen en klikbare labels */
.btn{font:700 var(--fs-btn)/1.15 var(--f-body);letter-spacing:var(--ls-btn);min-height:56px}
.btn-sm{min-height:48px}
.btn-tertiary{min-height:48px}
.pill,.fchip,.cchip{font-size:var(--fs-btn);letter-spacing:.04em}
.pill{letter-spacing:var(--ls-btn);min-height:48px}
.fchip{min-height:44px;font-weight:700}
.cchip{min-height:40px;font-weight:600;letter-spacing:.02em}
.chip{font:700 var(--fs-label)/1 var(--f-body);letter-spacing:.1em;min-height:32px}
.chip.live{background:var(--ma-pink);border-color:var(--ma-pink)}
.tag{font:700 var(--fs-label)/1 var(--f-body);letter-spacing:.1em;padding:8px 12px}
.note{font:600 .9375rem/1.5 var(--f-body)}
.pending{font-size:.9375rem;font-weight:700;line-height:1.5}
/* header, menu, dropdown */
.nav{gap:22px}
.nav a{font:700 .9375rem/1 var(--f-body);letter-spacing:.08em}
.lang a{font:700 var(--fs-label)/1 var(--f-body);letter-spacing:.1em}
.ddbtn{font:700 var(--fs-btn)/1 var(--f-body);letter-spacing:var(--ls-btn)}
.dd a:last-child{font:700 var(--fs-btn)/1.1 var(--f-body);letter-spacing:var(--ls-btn)}
.dd b{font:700 1.0625rem/1.25 var(--f-body)}.dd small{font-size:.9375rem;font-weight:500;line-height:1.4}
.subnav a{font:700 .9375rem/1 var(--f-body);letter-spacing:.08em}
.subnav .btn{min-height:44px}
@media(max-width:1320px){.menu a{font:800 1.5rem/1.3 var(--f-body);text-transform:none}.menu .lang a{font:700 var(--fs-label)/1 var(--f-body);letter-spacing:.1em}}
@media(max-width:1040px){.subnav{top:80px}}@media(max-width:700px){.subnav{top:68px}}
.crumb{font:600 .9375rem/1.5 var(--f-body);letter-spacing:.02em}
.skip{font-size:var(--fs-btn)}
/* hero, cijfers */
.hero h1 .l2{font:700 clamp(1.25rem,1.2vw + 1rem,1.75rem)/1.3 var(--f-body);letter-spacing:.08em;margin-top:16px}
.proof li{font:700 var(--fs-label)/1.3 var(--f-body);letter-spacing:var(--ls-label)}
.proof b,.proofs b,.count b,.tier .price,.ed-date,.ev-date b{font-family:var(--f-body);font-weight:800;font-variant-numeric:var(--tnum);letter-spacing:-.01em}
.proof b{font-size:2.5rem;line-height:1.1}
.proofs b{font-size:clamp(2.75rem,5vw,4.25rem);line-height:1.1}.proofs span{font-size:1.0625rem;line-height:1.5;font-weight:500}
.count b{font-size:clamp(2.5rem,6vw,5rem);line-height:1.05}
.count span{font:700 var(--fs-label)/1.2 var(--f-body);letter-spacing:.1em}
.count div{padding-block:14px 12px}
.factline{font:700 var(--fs-label)/1.6 var(--f-body);letter-spacing:.1em;font-variant-numeric:var(--tnum)}
/* wiel: titel blijft groot Ojuju (hero), landnamen in DM Sans; grootte afgestemd op de breedte van de wiel */
.wheelbox{container-type:inline-size}
.sector text{font-family:var(--f-body);font-weight:800;font-size:22px;letter-spacing:.02em;text-transform:none}
.sector .wc{display:none}
body[data-v=foto] .sector .ph{font:700 18px var(--f-body);letter-spacing:.1em}
@container (max-width:600px){.sector text{font-size:25px}body[data-v=foto] .sector .ph{font-size:22px}}
@container (max-width:500px){.sector text{font-size:31px;font-weight:800}.sector .wn{display:none}.sector .wc{display:inline}body[data-v=foto] .sector .ph{font-size:28px}}
.pinfo .cc{font:800 1.5rem/1 var(--f-body);background:var(--ct,var(--ma-mint))}
.pinfo b{font:800 1.5rem/1.2 var(--f-body);text-transform:none}
.pinfo small{font-size:1rem;line-height:1.5;font-weight:500}
/* lint (marquee): Ojuju blijft, groter */
.ribbon-track{font:700 1.875rem/1.2 var(--f-display);letter-spacing:.02em;padding:12px 0}
/* editiekaarten, landen, agenda */
.ed-date{font-size:1.875rem;line-height:1.1;color:var(--ct,var(--ma-mint))}
.ed h3{font-size:1.5rem}.ed .meta{font-size:1.0625rem;line-height:1.55;font-weight:500;font-variant-numeric:var(--tnum)}
.ed .go{font:700 var(--fs-btn)/1.2 var(--f-body);letter-spacing:.08em}
.cc-badge{font:800 .9375rem/1 var(--f-body);letter-spacing:.04em;min-width:40px;height:28px;background:var(--ct,var(--ma-lilac))}
.cty h3{font-size:1.5rem}
.cty .stat{font:700 var(--fs-label)/1.5 var(--f-body);letter-spacing:.1em;font-variant-numeric:var(--tnum)}
.ev-date{color:var(--ct,var(--ma-mint))}
.ev-date b{font-size:2.75rem;line-height:1}
.ev-date span{font:700 var(--fs-label)/1.2 var(--f-body);letter-spacing:.12em;display:block;margin-top:4px}
.ev-main h3{font-size:1.5rem}
.ev-main .meta{font-size:1.0625rem;line-height:1.55;font-weight:500;font-variant-numeric:var(--tnum)}
.ev{grid-template-columns:104px minmax(0,1fr) auto auto}
@media(max-width:800px){.ev{grid-template-columns:84px minmax(0,1fr)}.ev-date b{font-size:2.5rem}.ev-main h3{font-size:1.375rem}}
.grp>.label{font-size:var(--fs-label)}
/* line-up: typografische poster, Ojuju groot; dagen en kleine regels in DM Sans */
.lineup .day{font:800 1.25rem/1.3 var(--f-body);letter-spacing:.12em;font-variant-numeric:var(--tnum)}
.lineup .names{font:700 clamp(1.875rem,4.2vw,3.5rem)/1.25 var(--f-display)}
.lineup .names .tba{font:600 1.125rem/1.5 var(--f-body);letter-spacing:.02em;opacity:1;text-transform:none}
.lineup .last{font:700 1.125rem/1.5 var(--f-body);letter-spacing:.04em}
.lineup .last b{font:700 clamp(2rem,4vw,2.75rem)/1.2 var(--f-display)}
/* tickets */
.tier h3{font:800 2rem/1.15 var(--f-body);text-transform:uppercase;letter-spacing:.02em;color:var(--ct,var(--c))}
.tier .price{font-size:3.25rem;line-height:1.05;margin-top:8px}
.tier .price small{font:500 .9375rem/1.45 var(--f-body);letter-spacing:0;color:var(--ma-lilac)}
.tier ul{font-size:1.0625rem;line-height:1.55}
.tier .badge{font:700 var(--fs-label)/1 var(--f-body);letter-spacing:.1em;background:var(--ma-pink);padding:9px 14px}
.tier .btn{color:var(--ma-ink)}
/* detail, feiten */
.facts dt{font:700 var(--fs-label)/1.2 var(--f-body);letter-spacing:var(--ls-label)}
.facts dd{font:800 1.5rem/1.3 var(--f-body);text-transform:none;font-variant-numeric:var(--tnum);letter-spacing:0}
.ed-title .edition-name{font:800 1.125rem/1.2 var(--f-body);letter-spacing:.08em;padding:12px 22px}
.faq summary{font:700 1.25rem/1.35 var(--f-body);text-transform:none;letter-spacing:0}
.faq summary::after{font-size:2rem}
.travel h3{font-size:1.375rem}
/* albums, video, crew, aanbod */
.album .date{font:700 var(--fs-label)/1.3 var(--f-body);letter-spacing:.1em;font-variant-numeric:var(--tnum);color:var(--ct,var(--ma-yellow))}
.album h3{font-size:1.3125rem}.album .venue{font-size:1.0625rem;line-height:1.5;font-weight:500}
.vtile b{font:800 1.3125rem/1.3 var(--f-body);text-transform:none}
.vtile span.d{font-size:1.0625rem;line-height:1.5;font-weight:500;font-variant-numeric:var(--tnum)}
.vtile .slot-p{justify-content:flex-end;padding-bottom:22px}.vtile .slot-p .ico{display:none}
.crew h3{font-size:1.5rem}.crew .role{font:700 var(--fs-label)/1.3 var(--f-body);letter-spacing:var(--ls-label)}
.offer p{font-size:var(--fs-body);line-height:1.65}
/* placeholders, stickers */
.slot-p b{font:700 1.0625rem/1.35 var(--f-body)}
.slot-p i{font:500 var(--fs-label)/1.4 var(--f-body)}
.slot-s .big{font:800 clamp(1.375rem,2.4vw,2.1rem)/1.1 var(--f-body);letter-spacing:.01em}
.mosaic .tag{display:none}
/* formulier */
.field label{font:700 var(--fs-label)/1.4 var(--f-body);letter-spacing:.1em}
.field input,.field select,.field textarea{font:400 1.0625rem/1.5 var(--f-body);min-height:56px}
.field .msg{font-size:1rem;line-height:1.5}
.hint{font-size:1rem;line-height:1.6}
.ok{font-size:1.0625rem}
.mails a{font-size:1.1875rem}
.langnote{font-size:var(--fs-small);line-height:1.65}
/* footer */
.ftr h3{font:800 var(--fs-label)/1.3 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ma-yellow)}
.ftr .brand{font:800 1.5rem/1.1 var(--f-body);letter-spacing:.02em}
.ftr li,.ftr p{font-size:1.0625rem;line-height:1.65}
.legal{font-size:.9375rem;line-height:1.6;font-weight:500}
/* cookiebanner: tekst blijft 17px, de banner groeit mee */
.cb h2{font:800 1.25rem/1.2 var(--f-body);text-transform:none}
.cb .txt{font-size:var(--fs-body);line-height:1.6;-webkit-line-clamp:3}
.cb-more{font:700 var(--fs-btn)/1.2 var(--f-body);min-height:40px}
.cb .link{font-size:var(--fs-small)}
.pref small{font-size:1rem;line-height:1.5}
.cb-btns .btn{min-height:52px;font-size:var(--fs-btn);letter-spacing:.04em;text-transform:none}
@media(max-width:760px){.cb .txt{font-size:var(--fs-body);line-height:1.6}.cb-more{font-size:var(--fs-btn)}
 .cb-btns{grid-template-columns:1fr 1fr}.cb-btns .prefs{grid-column:1/-1}.cb-btns .btn{min-height:48px;padding:0 10px;font-size:var(--fs-btn);letter-spacing:.02em}
 .cb.prefs .cb-btns .prefs{grid-column:auto}}
dialog.lb .lb-bar b,.lb-bar b{font:800 1.25rem/1.2 var(--f-body);text-transform:none}
/* index (overzichtspagina): zelfde regels */
.dgrid figcaption{font:700 var(--fs-label)/1.4 var(--f-body);letter-spacing:.1em}
.dtxt{font-size:var(--fs-body)}
.dcard h2{font-size:var(--d-m)}
.dcard code,.page-hero code{font:500 .9375rem/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
.noref{font-size:var(--fs-body);line-height:1.6}
.slot-p .ico{color:var(--ma-lilac)}
/* tweede ronde: regelafstand, gewicht en contrast op de laatste plekken */
.ed .meta,.ev-main .meta{line-height:1.65}
.tier ul{line-height:1.65}.tier li{padding-left:26px}
.tier .price small{font-size:1.0625rem;line-height:1.6}
.pinfo small,.pref small,.hint{font-size:1.0625rem;line-height:1.6}
.lineup .last{line-height:1.65}
.small.muted,.langnote{font-weight:500}
code{font-family:var(--f-body)!important}.dcard code,.page-hero code{font-weight:700}
.fchip,[data-sum]{font-variant-numeric:var(--tnum)}[data-sum]{font-size:1.125rem}
.subnav a.btn{font-size:var(--fs-btn);letter-spacing:var(--ls-btn);color:var(--ma-ink)}
/* wiel: stappen zo gekozen dat landnamen/codes op elke wielbreedte >= 18,7px (= groot, vet) zijn */
@container (max-width:660px){.sector text{font-size:23px;letter-spacing:0}body[data-v=foto] .sector .ph{font-size:18px}}
@container (max-width:600px){.sector text{font-size:27.5px}body[data-v=foto] .sector .ph{font-size:22px}}
@container (max-width:500px){.sector text{font-size:38px}body[data-v=foto] .sector .ph{font-size:29px}}
/* magenta (4,8:1 met inkt) onder kleine of lange tekst: lichter tekstvlak uit de kit */
.slot-s[style*="--bg:var(--ma-magenta)"] .big{background:var(--ma-pink);padding:.12em .4em .16em;right:auto;max-width:86%;width:fit-content}
body[data-v=sticker] .sector[style*="--c:var(--ma-magenta)"] text{stroke:var(--ma-pink);stroke-width:10px;paint-order:stroke;stroke-linejoin:round}
/* dropdown: toelichtingsregel is lopende tekst, dus 17px */
.dd small{font-size:1.0625rem;line-height:1.6}
.small{font-weight:500}
@media(max-width:760px){.cb .txt{-webkit-line-clamp:2}}
.dg,.count b .dg,.ev-date b .dg,.proof b .dg,.proofs b .dg,.ed-date .dg{display:inline-block;width:.72em;text-align:center;font:inherit;letter-spacing:0;text-transform:none;color:inherit}
.rules{margin:18px 0 0;padding-left:1.2em;max-width:80ch}.rules li{margin-bottom:6px}
.count b,.ev-date b,.proof b,.proofs b,.ed-date{white-space:nowrap}
@media(max-width:560px){.count{gap:6px}.count div{padding-inline:4px}}
@media(max-width:800px){.ev>.btn{grid-column:2;justify-self:start}}
/* video-plek: het afspeelknopje staat midden, dus de plaatsaanduiding staat eronder en zonder tweede regel */
.vtile .slot-p i{display:none}.vtile .slot-p{padding-bottom:20px}
/* e-mailadres als link: kleine letters lezen beter dan hoofdletters met spatiëring */
.btn[href^="mailto"]{text-transform:none;letter-spacing:.02em;font-size:1.125rem}
/* afteller: de doos past zich aan (vaste cijfercellen), het cijfer niet; maat schaalt met de breedte van de afteller en blijft >= 40px */
.count{container-type:inline-size;gap:clamp(6px,1vw,12px)}
.count div{padding-inline:clamp(4px,.8vw,8px)}
.count b{font-size:clamp(2.5rem,min(14cqw,5rem),5rem)}
/* na review: speelknop in sticker-tegels linksonder (de titel liep eronder), lopende regels >= 17px mobiel met regelafstand 1,6 */
body[data-v=sticker] .vtile .play{left:12px;top:auto;bottom:12px;margin:0;width:60px;height:60px}
body[data-v=sticker] .vtile .play::before{border-left-width:18px;border-block-width:11px;margin-left:5px}
.note,.field .msg,.crumb,.legal{font-size:var(--fs-small);line-height:1.6}
.proofs span,.lineup .names .tba{line-height:1.6}
.price .dg{font:inherit}

/* =====================================================================================================
   KOPPEN v3 (ronde 3): Archivo Black voor koppen (eigen licentie OFL, lokaal), alles daarbinnen DM Sans.
   Eén snede (zwaar), geen vals vet, geen extra letterafstand, ruime regelafstand. Ojuju is uit de site gehaald.
   ===================================================================================================== */
h1,h2,.display{font-weight:400;letter-spacing:0;font-synthesis:none;text-transform:uppercase}
h1{line-height:1.08}h2{line-height:1.12}
.ribbon-track,.lineup .names,.lineup .last b,.lineup .day{letter-spacing:.005em;font-synthesis:none}
:root{--d-xl:clamp(2.25rem,5vw + .75rem,5rem);--d-l:clamp(2rem,3.6vw + .75rem,3.75rem);--d-m:clamp(1.5rem,2vw + .75rem,2.25rem)}

/* edc-r3 */
/* =====================================================================================================
   RONDE 3: video in de banner, rustig landenwiel (vastgezet, draait mee met de scroll), echte foto's en
   scroll-gedreven beweging per sectie. Eigen code, standaard CSS. De scrollvoortgang van een sectie komt als
   --p (0..1) op het element; CSS doet de rest. Regels:
   - tekst vervaagt nooit (geen opacity-animatie op tekst): hij schuift of wordt onthuld met een clip, en is vanaf
     het eerste beeld van die stand volledig leesbaar
   - prefers-reduced-motion en ?still=1 (class .calm): geen pin, geen transform, alles meteen zichtbaar
   ===================================================================================================== */
:root{--hdr:80px;--ground:var(--ma-ink)}
@media(max-width:700px){:root{--hdr:68px}}
body{background:var(--ground)}

/* ---- tekst blijft altijd leesbaar: .rev schuift alleen, vervaagt niet ---- */
.rev{opacity:1;transform:translateY(22px);transition:transform 520ms var(--ease);transition-delay:calc(var(--i,0)*70ms)}
.rev.in,.no-js .rev,.still .rev,.calm .rev{transform:none}
/* tegels met beeld: onthuld met een clip, in een rustige trap */
.stag>.sg{clip-path:inset(0 0 99% 0);transition:clip-path 700ms var(--ease);transition-delay:calc(var(--i,0)*80ms)}
.stag>.sg.in{clip-path:inset(-4% -4% -4% -4%)}
.no-js .stag>.sg,.still .stag>.sg,.calm .stag>.sg{clip-path:none}

/* ---- hero met video ---- */
.hero-v{position:relative;isolation:isolate;display:flex;align-items:center;min-height:clamp(560px,calc(100svh - var(--hdr)),880px);padding-block:clamp(56px,8vw,120px) clamp(72px,10vw,140px);overflow:hidden;background:var(--ma-ink)}
.hv{position:absolute;inset:0;z-index:-1;overflow:hidden;background:var(--ma-ink)}
.hv-poster,.hv-video{position:absolute;left:0;top:-8%;width:100%;height:116%;object-fit:cover;transform:translate3d(0,calc(var(--p,0)*14%),0) scale(1.06);will-change:transform}
.hv-video{opacity:0;transition:opacity 900ms ease}.hv-video.on{opacity:1}
/* donkere laag: links het zwaarst waar de tekst staat, overal minstens .72; gemeten in RESULT-edc-3.md */
.hv-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(21,10,34,.94) 0,rgba(21,10,34,.88) 46%,rgba(21,10,34,.74) 100%)}
/* de onderste rand lost op in de sectie eronder */
.hero-v::after{content:"";position:absolute;left:0;right:0;bottom:0;height:min(26%,200px);background:linear-gradient(to bottom,rgba(21,10,34,0),var(--ground));pointer-events:none;z-index:0}
.hero-in{position:relative;z-index:1;width:100%}
.hero-v h1{font-size:clamp(2.25rem,4.6vw + 1rem,5.5rem);max-width:none;margin:14px 0 0}
.hero-v h1 .hl{display:block}
.hero-v .lead{margin-top:22px;max-width:34em}
.hero-v .btn-row{margin-top:30px}
.hero-v .hl{animation:wipeup 800ms var(--ease) both;animation-delay:calc(var(--l,0)*110ms + 120ms)}
@keyframes wipeup{from{clip-path:inset(0 0 100% 0);transform:translateY(26px)}to{clip-path:inset(-40% -12% -40% -12%);transform:none}}
.hero-v h1 .hl:nth-child(2){transform:translate3d(0,calc(var(--p,0)*-26px),0)}

/* ---- landenwiel: vastgezet, scroll draait het wiel ---- */
.wsec{position:relative;background:linear-gradient(180deg,var(--ground),var(--ground))}
.wtrack{height:calc(100svh + 10*30svh)}
.wpin{position:sticky;top:var(--hdr);height:calc(100svh - var(--hdr));display:flex;align-items:center;overflow:hidden}
.wgrid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);grid-template-areas:"head wheel" "read wheel" "btn wheel";grid-template-rows:auto auto 1fr;column-gap:clamp(24px,4vw,64px);align-items:start;width:100%}
.whead{grid-area:head;align-self:end}.wread{grid-area:read}.wbtn{grid-area:btn;justify-self:start;align-self:start}.wheelbox{grid-area:wheel;align-self:center}
.whead h2{font-size:clamp(2rem,2.6vw + 1rem,3.5rem);margin:12px 0 0}
.whead .proof{margin:24px 0 22px}
.wheelbox{position:relative;width:min(100%,calc(100svh - var(--hdr) - 90px));max-width:640px;margin-inline:auto}
.wheel .rot{transform:rotate(calc(var(--rot,0)*1deg));transform-origin:360px 360px}
.wheel .pointer{fill:var(--ma-yellow);stroke:var(--ma-ink);stroke-width:4;stroke-linejoin:round;filter:drop-shadow(0 0 10px rgba(255,206,0,.6))}
.sector{transition:filter .25s;cursor:pointer}
.sector:hover,.sector:focus-visible{transform:none;filter:none}
.sector.on{transform:none;filter:drop-shadow(0 0 14px var(--c))}
.sector.on .shape{stroke:var(--ma-white);stroke-width:7}
.sector .tb,.sector.flip .tt{display:none}.sector.flip .tb{display:inline}
.sector:focus-visible .shape{stroke:var(--ma-white);stroke-width:7}
/* uitleg bij het wiel: één regel, geen verborgen hover */
.wread{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;margin:0 0 22px;width:100%;padding:16px 20px;background:var(--ma-surface);border:3px solid var(--ma-white);box-shadow:var(--shadow);max-width:34rem;border-left:12px solid var(--c)}
.wread .cc{width:58px;height:58px;background:var(--c);color:var(--ma-ink);display:grid;place-items:center;font:800 1.5rem/1 var(--f-body)}
.wread b{display:block;font:800 1.5rem/1.2 var(--f-body);text-transform:none}
.wread span[data-r=n]{display:block;font-size:1.0625rem;line-height:1.5;color:var(--ma-lilac)}
.wread p{margin:6px 0 0;font:600 1.125rem/1.45 var(--f-body);font-variant-numeric:var(--tnum)}
.wread p strong{font-weight:800}
@media(max-width:860px){
 .wtrack{height:calc(100svh + 10*24svh)}
 .wgrid{grid-template-columns:1fr;grid-template-areas:"head" "read" "wheel" "btn";grid-template-rows:none;gap:12px}
 .whead{align-self:start}
 .whead h2{font-size:1.75rem;margin-top:6px}.whead .eyebrow{display:none}
 .whead .proof{margin:12px 0 0;gap:8px 20px}.whead .proof b{font-size:1.75rem}
 .wheelbox{width:min(100%,300px,calc(100svh - var(--hdr) - 400px))}
 .wread{margin:0;padding:10px 14px;gap:12px}.wread .cc{width:46px;height:46px;font-size:1.25rem}.wread b{font-size:1.25rem}
 .wread span[data-r=n]{display:none}
 .wbtn{min-height:48px;width:100%;justify-self:stretch}
}
@media(max-height:620px) and (max-width:860px){.wtrack{height:auto}.wpin{position:static;height:auto;padding-block:32px}}

/* ---- aftelling: blijft staan, de blokken komen in trap binnen ---- */
.nsec{padding:0}
.ntrack{height:calc(100svh + 70svh)}
.npin{position:sticky;top:var(--hdr);min-height:calc(100svh - var(--hdr));display:flex;align-items:center;padding-block:32px}
.nsec .count div{--t:clamp(0,calc(var(--p,1)*2.65 - var(--k,0)*.55),1);clip-path:inset(0 0 calc((1 - var(--t))*100%) 0);transform:translate3d(0,calc((1 - var(--t))*28px),0)}
.nsec .count div:nth-child(2){--k:1}.nsec .count div:nth-child(3){--k:2}.nsec .count div:nth-child(4){--k:3}
.nflyer .slot{transform:rotate(calc(2deg - var(--p,1)*3.5deg))}
@media(max-width:860px){.ntrack{height:calc(100svh + 40svh)}}
@media(max-height:560px){.ntrack{height:auto}.npin{position:static}}

/* ---- line-up: de regels bouwen het affiche op terwijl de sectie vaststaat ---- */
.lsec{padding:0}
.ltrack{height:calc(100svh + 140svh)}
.lpin{position:sticky;top:var(--hdr);min-height:calc(100svh - var(--hdr));display:flex;align-items:center;padding-block:32px;overflow:hidden}
.lineup .ls{--t:clamp(0,calc(var(--p,1)*6.4 - var(--k,0)*.9),1);display:inline-block;clip-path:inset(-8% calc((1 - var(--t))*100%) -8% 0);transform:translate3d(calc((1 - var(--t))*-24px),0,0)}
.lineup p.ls,.lineup p.last{display:block}
@media(max-width:860px){.ltrack{height:calc(100svh + 90svh)}}
@media(max-height:560px){.ltrack{height:auto}.lpin{position:static}}

/* ---- steden en landen: een baan die zijwaarts meebeweegt ---- */
.rsec{padding:0}
.rtrack{height:calc(100svh + var(--ov,700px)*var(--kk,1))}
.rpin{position:sticky;top:var(--hdr);height:calc(100svh - var(--hdr));display:flex;flex-direction:column;justify-content:center;gap:clamp(20px,3vw,40px);overflow:hidden}
.rail{overflow:hidden}
.rail-in{display:flex;gap:20px;width:max-content;padding-inline:max(var(--gut),calc((100vw - 1200px)/2));transform:translate3d(calc(var(--p,0)*var(--rx,0px)*-1),0,0);will-change:transform}
.rail .cty{width:min(290px,76vw);flex:none;min-height:190px}
@media(max-width:860px){.rtrack{--kk:.8}.rail-in{gap:14px;padding-inline:16px}}

/* ---- foto's: het beeld beweegt langzamer dan de pagina, met een lichte schaal ---- */
.slot.has-img{background:var(--ma-surface)}
.slot img.ph{position:absolute;left:0;top:-7%;width:100%;height:114%;object-fit:cover;display:block;transform:translate3d(0,calc((var(--pp,.5) - .5)*-8%),0) scale(calc(1.1 - var(--pp,.5)*.07))}
.vtile .slot.has-img::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(21,10,34,.5),rgba(21,10,34,0) 45%);pointer-events:none}

/* ---- rustig voor wie dat vraagt (en voor schermafbeeldingen met ?still=1) ---- */
.calm .wtrack,.calm .ntrack,.calm .ltrack,.calm .rtrack,.calm-sec .wtrack,.calm-sec .ntrack,.calm-sec .ltrack,.calm-sec .rtrack{height:auto}
.calm .wpin,.calm .npin,.calm .lpin,.calm .rpin,.calm-sec .wpin,.calm-sec .npin,.calm-sec .lpin,.calm-sec .rpin{position:static;height:auto;min-height:0;padding-block:clamp(48px,7vw,96px);overflow:visible}
.calm .rail{overflow-x:auto;scrollbar-width:thin}.calm .rail-in{transform:none}
.calm .hv-video{display:none}.calm .hv-poster,.calm .hv-video,.calm .hero-v h1 .hl:nth-child(2){transform:none}
.calm .hero-v .hl{animation:none}
.calm .wheel .rot{transition:none}
.calm .nsec .count div,.calm .lineup .ls,.calm-sec .count div,.calm-sec .lineup .ls{clip-path:none;transform:none}
.calm .slot img.ph{transform:none;top:0;height:100%}
.calm .nflyer .slot{transform:none}
@media(prefers-reduced-motion:reduce){
 .wtrack,.ntrack,.ltrack,.rtrack{height:auto}
 .wpin,.npin,.lpin,.rpin{position:static;height:auto;min-height:0;padding-block:clamp(48px,7vw,96px);overflow:visible}
 .rail{overflow-x:auto}.rail-in{transform:none}
 .hv-video{display:none}.hv-poster,.hero-v h1 .hl:nth-child(2){transform:none}
 .hero-v .hl{animation:none}
 .nsec .count div,.lineup .ls{clip-path:none;transform:none}
 .slot img.ph{transform:none;top:0;height:100%}
 .stag>.sg{clip-path:none}.nflyer .slot{transform:none}
}

/* kaarten van het overzicht: kleine kop in DM Sans */
.dcard h2{font:800 1.75rem/1.2 var(--f-body);text-transform:none}

/* edc-r4 */
/* =====================================================================================================
   RONDE 4 (ADDENDUM-edc-5.md): Brians oordeel op de homepage.
   Regels (scroll-craft + frontend-references):
   - NIETS wordt vastgezet of overgenomen: geen sticky-pin, geen scroll-hijack, geen scroll-snap. Alle beweging is
     transform/opacity en hangt aan --p (0..1): hoe ver de sectie door het scherm is gescrold (home-r4.js).
   - tekst vervaagt nooit; hij beweegt hooguit zijwaarts met een groot, rustig bereik en blijft altijd volledig leesbaar
   - elke sectie heeft een eigen achtergrond of beweging; losse lussen (CSS-animatie) zijn traag (>= 9 s) en alleen transform/opacity
   - prefers-reduced-motion en ?still=1 (class .calm) en ?freeze=1: alle lussen en scroll-gekoppelde verschuivingen staan stil
   ===================================================================================================== */
@keyframes drift{from{transform:translate3d(-4%,-3%,0) scale(1)}to{transform:translate3d(4%,3%,0) scale(1.12)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes sonar{0%{transform:scale(.62);opacity:0}18%{opacity:.9}100%{transform:scale(1.3);opacity:0}}
@keyframes eq{from{transform:scaleY(.18)}to{transform:scaleY(1)}}
@keyframes kb{from{transform:scale(1.04)}to{transform:scale(1.14)}}
@keyframes swap{from{transform:scale(1.08)}to{transform:scale(1)}}
@keyframes ringpulse{0%{transform:scale(.9);opacity:.8}100%{transform:scale(1.5);opacity:0}}

/* ---------------------------------------------------------------- 1. ÉÉN HEADER: kop, intro, knoppen en cijfers met de video erachter */
.h4{align-items:flex-end;padding-block:clamp(48px,6vw,96px) clamp(40px,5vw,72px)}
.h4 .hv-shade{background:linear-gradient(90deg,rgba(21,10,34,.94) 0,rgba(21,10,34,.88) 46%,rgba(21,10,34,.78) 100%),linear-gradient(0deg,rgba(21,10,34,.55),rgba(21,10,34,0) 60%)}
.h4 h1{font-size:clamp(2.25rem,4.2vw + .9rem,5.25rem)}
@media(max-width:860px){
 .h4{align-items:flex-start}
}

/* ---------------------------------------------------------------- 2. LANDENWIEL: niet vastgezet, draait mee terwijl je er langs scrolt */
.w4{position:relative;overflow:hidden;padding-block:clamp(56px,8vw,112px) clamp(72px,10vw,150px);background:linear-gradient(180deg,var(--ground),var(--ground))}
.w4 .wgrid{position:relative;z-index:1}
.w4-bg{position:absolute;inset:0;pointer-events:none}
.w4-bg i{position:absolute;width:46vmax;aspect-ratio:1;border-radius:50%;filter:blur(40px);opacity:.5;animation:drift 22s ease-in-out infinite alternate}
.w4-bg i:nth-child(1){left:-12vmax;top:-8vmax;background:radial-gradient(closest-side,rgba(102,45,145,.8),transparent)}
.w4-bg i:nth-child(2){right:-14vmax;top:14%;background:radial-gradient(closest-side,rgba(238,42,123,.34),transparent);animation-duration:27s;animation-delay:-8s}
.w4-bg i:nth-child(3){left:20%;bottom:-20vmax;background:radial-gradient(closest-side,rgba(109,204,167,.26),transparent);animation-duration:31s;animation-delay:-14s}
.w4-bg i.glow{display:none}
.w4 .whead h2{font-size:clamp(2.25rem,3.4vw + 1rem,4.25rem)}
.w4 .whead .lead{font-size:1.125rem;max-width:30ch}
.w4 .wheelbox{width:min(100%,700px);max-width:700px;margin-inline:auto}
.wheelbox::before,.wheelbox::after{content:"";position:absolute;inset:-3%;border:2px solid rgba(255,206,0,.34);border-radius:50%;pointer-events:none;animation:sonar 10s linear infinite;opacity:0}
.wheelbox::after{border-color:rgba(238,42,123,.4);animation-delay:-5s}
/* de foto in elk vak draait mee, het vak krijgt een lichte donkere laag zodat de naam leesbaar blijft */
body[data-v] .w4 .sector .shape{fill:rgba(21,10,34,.36);stroke:var(--c);stroke-width:4}
body[data-v] .w4 .sector.on .shape{fill:rgba(21,10,34,.1);stroke:var(--ma-white);stroke-width:7}
body[data-v] .w4 .sector text{fill:var(--ma-white);paint-order:stroke;stroke:rgba(21,10,34,.92);stroke-width:5px;stroke-linejoin:round}
.w4 .sector.on{filter:drop-shadow(0 0 18px var(--c))}
/* de foto blijft rechtop terwijl het wiel draait (zoals een reuzenrad): tegendraaiing om het eigen midden */
.w4 .sph{transform:rotate(calc(-1deg*(var(--ang) + var(--rot,0))));transform-origin:360px 124px}
.w4 .wheel .rot{transform:rotate(calc(var(--rot,0)*1deg))}
/* uitleg bij het wiel: foto, land, steden, volgende avond */
.w4 .wread{display:block;padding:0;overflow:hidden;max-width:34rem;margin:0 0 22px;border:3px solid var(--ma-white);border-top:10px solid var(--c);background:var(--ma-surface);box-shadow:var(--shadow)}
.wph{margin:0;position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--ma-ink)}
.wph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.wph img.sw{animation:swap 700ms var(--ease) both}
.wph figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 10px;font:600 .875rem/1.3 var(--f-body);color:var(--ma-white);background:linear-gradient(0deg,rgba(21,10,34,.92),rgba(21,10,34,0))}
.wtxt{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;padding:16px 20px;min-height:9.5rem}
.w4 .wread .cc{width:58px;height:58px;background:var(--c);color:var(--ma-ink);display:grid;place-items:center;font:800 1.5rem/1 var(--f-body)}
.w4 .wread b{display:block;font:800 1.5rem/1.2 var(--f-body);text-transform:none}
.w4 .wread span[data-r=n]{display:block;font-size:1.0625rem;line-height:1.5;color:var(--ma-lilac)}
.w4 .wread p{margin:6px 0 0;font:600 1.125rem/1.45 var(--f-body);font-variant-numeric:var(--tnum)}
@media(max-width:860px){
 .w4{padding-block:40px 72px}
 .w4 .wgrid{grid-template-columns:1fr;grid-template-areas:"head" "read" "wheel" "btn";grid-template-rows:none;gap:14px}
 .w4 .whead .eyebrow{display:block}
 .w4 .whead h2{font-size:2.25rem}.w4 .whead .lead{font-size:1rem;margin-top:10px}
 .w4 .wheelbox{width:min(100%,360px)}
 .w4 .wread span[data-r=n]{display:block;font-size:.9375rem}
 .w4 .wread .cc{width:46px;height:46px;font-size:1.25rem}.w4 .wread b{font-size:1.25rem}
 .wtxt{padding:12px 14px;gap:12px;min-height:11.5rem}
}

/* ---------------------------------------------------------------- 3. NEXT STOP: groot label, geen ticketblok, foto's schuiven over de rand van de vorige sectie */
.n4{position:relative;padding-block:clamp(72px,9vw,128px);background:linear-gradient(180deg,var(--ground) 0,#24103D 14%,#24103D 86%,var(--ground) 100%)}
.n4-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.n4-bg::before{content:"";position:absolute;inset:-30%;background:var(--wax);background-size:88px 88px;opacity:.09;transform:translate3d(calc((var(--p,.5) - .5)*-220px),calc((var(--p,.5) - .5)*110px),0) rotate(-8deg)}
.n4-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(28px,5vw,88px);align-items:center}
.n4-stop{display:flex;flex-wrap:nowrap;align-items:center;gap:.2em .3em;margin:0 0 clamp(14px,2vw,26px);max-width:none}
.n4-w,.n4-dot{font:800 clamp(2.25rem,4.4vw,4.5rem)/.95 var(--f-display);text-transform:uppercase;color:var(--ma-white);letter-spacing:.005em}
.n4-dot{color:var(--ma-yellow);text-shadow:var(--glow-y)}
.n4-cc{font:800 clamp(2.75rem,5.6vw,5.5rem)/1 var(--f-display);background:var(--ma-yellow);color:var(--ma-ink);padding:.08em .22em .02em;border:3px solid var(--ma-white);box-shadow:var(--shadow),0 0 36px rgba(255,206,0,.35);transform:rotate(-3deg)}
.n4 h2{font-size:clamp(1.75rem,2.6vw + .8rem,3.5rem)}
.n4 .factline{margin-top:14px;font-size:1.125rem}
.n4-photos{position:relative;padding-bottom:12%;margin-top:calc(-1*clamp(48px,8vw,128px))}
.n4-p1{width:90%;transform:rotate(calc(2.5deg - var(--p,.5)*5deg)) translate3d(0,calc((var(--p,.5) - .5)*-48px),0)}
.n4-p2{position:absolute;right:0;bottom:0;width:44%;transform:rotate(calc(-4deg + var(--p,.5)*7deg)) translate3d(0,calc((var(--p,.5) - .5)*-96px),0)}
.n4-tag{position:absolute;left:-2%;top:6%;z-index:2;background:var(--ma-yellow);color:var(--ma-ink);border:3px solid var(--ma-white);padding:8px 12px;font:800 .9375rem/1.05 var(--f-display);text-transform:uppercase;transform:rotate(-6deg);box-shadow:var(--shadow)}
@media(max-width:860px){
 .n4-grid{grid-template-columns:1fr}.n4-stop{flex-wrap:wrap}
 .n4-photos{margin-top:8px;padding-bottom:16%}
 .n4-p1{width:88%}.n4-p2{width:46%}
}

/* ---------------------------------------------------------------- 4. EDITIES: kaarten staan verspringend, het reuzenwoord schuift erachter door */
.wax4{position:relative;overflow:hidden;background:none}
.wax4 i{position:absolute;left:-12%;top:0;width:124%;height:100%;background:var(--wax);background-size:44px 44px;transform:translate3d(calc((var(--p,.5) - .5)*-176px),0,0)}
.e4{overflow-x:clip;background:linear-gradient(180deg,#24103D 0,var(--ground) 22%)}
.e4-word{position:absolute;left:0;top:4%;font:800 clamp(7rem,21vw,21rem)/.82 var(--f-display);text-transform:uppercase;color:transparent;-webkit-text-stroke:2px rgba(234,223,247,.17);white-space:nowrap;pointer-events:none;transform:translate3d(calc(10vw - var(--p,.5)*34vw),0,0)}
.e4 .wrap{position:relative}
.e4{padding-bottom:clamp(40px,5vw,72px)}.e4 .cards-4{padding-bottom:40px}
.e4 .cards-4 .ed{--ky:-56;transform:translate3d(0,calc((var(--p,.5) - .5)*var(--ky)*1px),0) rotate(-.8deg)}
.e4 .cards-4 .ed:nth-child(even){--ky:56;transform:translate3d(0,calc((var(--p,.5) - .5)*var(--ky)*1px),0) rotate(.8deg)}
.e4 .cards-4 .ed:hover{transform:translate3d(0,-4px,0) rotate(0)}
.e4 .ed .slot img.ph{object-fit:cover}
@media(max-width:1000px){.e4 .cards-4{grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:40px}.e4 .cards-4 .ed{--ky:-24}.e4 .cards-4 .ed:nth-child(even){--ky:24}}
@media(max-width:560px){.e4 .cards-4{grid-template-columns:1fr}.e4 .cards-4 .ed,.e4 .cards-4 .ed:nth-child(even){--ky:0}}

/* ---------------------------------------------------------------- 5. WHERE WE DANCE: een muur van echte avonden op echte plekken */
.d4{overflow-x:clip;background:linear-gradient(180deg,var(--ground) 0,#2a1250 14%,#2a1250 88%,var(--ground) 100%)}
.d4-word{position:absolute;right:-1vw;top:1%;font:800 clamp(10rem,31vw,31rem)/.8 var(--f-display);text-transform:uppercase;color:transparent;-webkit-text-stroke:2px rgba(255,206,0,.15);pointer-events:none;transform:translate3d(calc((var(--p,.5) - .5)*-20vw),0,0)}
.d4-glow{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.d4-glow::before,.d4-glow::after{content:"";position:absolute;width:60vmax;aspect-ratio:1;border-radius:50%;animation:drift 26s ease-in-out infinite alternate}
.d4-glow::before{left:-20vmax;top:10%;background:radial-gradient(closest-side,rgba(238,42,123,.2),transparent)}
.d4-glow::after{right:-22vmax;bottom:6%;background:radial-gradient(closest-side,rgba(109,204,167,.16),transparent);animation-duration:33s;animation-delay:-11s}
.d4 .wrap{position:relative}
.d4-note{margin:0;max-width:26ch;color:var(--ma-lilac);font-size:1.0625rem;line-height:1.5}
.vgrid{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:clamp(44px,4.6vw,66px);gap:14px}
.vt{position:relative;display:block;text-decoration:none;color:var(--ma-white);transform:translate3d(0,calc((var(--p,.5) - .5)*var(--ky,0)*1px),0);transition:filter .3s}
.vt .slot{height:100%;aspect-ratio:auto;border-color:var(--ma-white)}
.vt:hover,.vt:focus-visible{z-index:5;filter:drop-shadow(0 0 22px var(--c))}
.vt .slot::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(21,10,34,.9) 0,rgba(21,10,34,.45) 38%,rgba(21,10,34,0) 66%);pointer-events:none}
.vt-cc{position:absolute;left:0;top:0;z-index:2;background:var(--c);color:var(--ma-ink);font:800 .9375rem/1 var(--f-body);letter-spacing:.06em;padding:8px 11px 7px;border:3px solid var(--ma-white);border-top:0;border-left:0}
.vt-cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:14px 16px 13px;display:flex;flex-direction:column;gap:3px}
.vt-cap b{font:800 clamp(1.05rem,.9vw + .8rem,1.7rem)/1.05 var(--f-display);text-transform:uppercase;letter-spacing:.005em;text-shadow:0 2px 12px rgba(8,2,20,.7)}
.vt-cap i{font:600 .875rem/1.3 var(--f-body);font-style:normal;color:var(--ma-lilac)}
.vt.v1{grid-column:1/8;grid-row:1/6;z-index:2}.vt.v2{grid-column:8/13;grid-row:2/8;z-index:3}
.vt.v3{grid-column:1/6;grid-row:6/11}.vt.v4{grid-column:6/9;grid-row:8/12;z-index:2}.vt.v5{grid-column:9/13;grid-row:8/12}
.vt.v6{grid-column:1/5;grid-row:11/15;z-index:2}.vt.v7{grid-column:5/9;grid-row:12/16}.vt.v8{grid-column:9/13;grid-row:12/16;z-index:2}
.vt.v1 .vt-cap b{font-size:clamp(1.6rem,2.4vw,2.6rem)}
.vstamp{grid-column:6/8;grid-row:6/8;align-self:center;justify-self:center;margin:0;max-width:none;background:var(--ma-yellow);color:var(--ma-ink);border:3px solid var(--ma-white);padding:12px 18px;text-align:center;font:700 .875rem/1.25 var(--f-body);letter-spacing:.1em;text-transform:uppercase;transform:rotate(-5deg);box-shadow:var(--shadow);z-index:4}
.vstamp b{display:block;font:800 clamp(1.5rem,2.4vw,2.25rem)/1 var(--f-display);letter-spacing:0}
.chips4{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(28px,4vw,52px);position:relative}
.chip4{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:6px 16px 6px 8px;border:2px solid var(--c);background:rgba(21,10,34,.7);color:var(--ma-white);text-decoration:none;transition:transform .2s var(--ease),background .2s}
.chip4:hover,.chip4:focus-visible{background:var(--c);color:var(--ma-ink);transform:translateY(-3px)}
.chip4 b{font:800 1rem/1.1 var(--f-body)}.chip4 i{font:500 .9375rem/1.2 var(--f-body);font-style:normal;color:var(--ma-lilac)}
.chip4:hover i,.chip4:focus-visible i{color:var(--ma-ink)}
@media(max-width:700px){
 .vgrid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;gap:12px}
 .vt,.vt.v1,.vt.v2,.vt.v3,.vt.v4,.vt.v5,.vt.v6,.vt.v7,.vt.v8{grid-column:auto;grid-row:auto;--ky:0}
 .vt .slot{height:auto;aspect-ratio:4/5}
 .vt.v1,.vt.v4,.vt.v8{grid-column:1/-1}.vt.v1 .slot,.vt.v4 .slot,.vt.v8 .slot{aspect-ratio:16/10}
 .vt.v2,.vt.v5{margin-top:26px}
 .vstamp{grid-column:auto;grid-row:auto;justify-self:center;margin:0;order:1}.vt.v8{order:2}
 .vt-cap{padding:10px 12px}.vt-cap b{font-size:1.05rem}.vt.v1 .vt-cap b{font-size:1.5rem}
 .d4-note{display:none}
}
@media(max-width:560px){.chip4{min-height:46px;padding:4px 12px 4px 6px;gap:8px}.chip4 i{display:none}.chips4{gap:10px}}

/* ---------------------------------------------------------------- 6. LINE-UP: foto als affiche, de namen schuiven tegen elkaar in */
.l4{overflow:hidden;isolation:isolate;padding-block:clamp(72px,10vw,150px)}
.l4-bg{position:absolute;inset:0;z-index:-2;overflow:hidden;background:var(--ma-ink)}
.l4-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(1.55) saturate(1.25);transform:scale(calc(1.2 - var(--p,.5)*.14)) translate3d(0,calc((var(--p,.5) - .5)*-5%),0)}
.l4-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,var(--ground) 0,rgba(21,10,34,.62) 22%,rgba(21,10,34,.56) 78%,var(--ground) 100%),linear-gradient(90deg,rgba(102,45,145,.45),rgba(238,42,123,.18))}
.l4 .sticker{z-index:1}.l4 .s-a{right:5%;top:10%;width:80px}.l4 .s-b{left:4%;bottom:9%;width:84px}
.l4-names{max-width:1180px}
.l4-names .day{font:800 clamp(1rem,1vw + .8rem,1.4rem)/1.3 var(--f-body);letter-spacing:.14em;text-transform:uppercase;margin:6px 0 clamp(14px,2vw,28px)}
.l4-names .nm{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.05em .28em;max-width:none;margin:.04em 0;font:800 clamp(2.25rem,6.4vw,5.75rem)/.98 var(--f-display);text-transform:uppercase;color:var(--ma-mint);text-shadow:0 0 28px rgba(109,204,167,.45),0 3px 18px rgba(8,2,20,.7)}
.l4-names .nm .alt{color:var(--ma-pink);text-shadow:0 0 28px rgba(255,174,211,.45),0 3px 18px rgba(8,2,20,.7)}
.l4-names .nm .dot{color:var(--ma-yellow);text-shadow:var(--glow-y)}
.l4-names .nm1{transform:translate3d(calc((var(--p,.5) - .5)*-10vw),0,0)}
.l4-names .nm2{transform:translate3d(calc((var(--p,.5) - .5)*10vw),0,0)}
.l4-names .tba{margin:clamp(14px,2vw,26px) auto 0;font:700 1.25rem/1.4 var(--f-body);color:var(--ma-white)}
.l4-names .last{margin-top:clamp(18px,2.4vw,34px)}
.l4-names .note{display:inline-block;margin-top:22px;font:500 .9375rem/1.4 var(--f-body);color:var(--ma-lilac);background:rgba(21,10,34,.7);padding:6px 12px}
@media(max-width:700px){.l4 .s-a{width:54px}.l4 .s-b{width:56px}.l4-names .nm1,.l4-names .nm2{transform:translate3d(calc((var(--p,.5) - .5)*-5vw),0,0)}.l4-names .nm2{transform:translate3d(calc((var(--p,.5) - .5)*5vw),0,0)}}

/* ---------------------------------------------------------------- 7. AFTERMOVIES: bioscooplicht dat langzaam rondgaat, tegels met een lichte scrollverschuiving */
.am4{overflow:hidden;background:linear-gradient(180deg,#150A22,#1d0d34 50%,#150A22)}
.am4-beam{position:absolute;left:50%;top:50%;width:150vmax;height:150vmax;margin:-75vmax 0 0 -75vmax;pointer-events:none;background:conic-gradient(from 0deg,transparent 0 8%,rgba(255,206,0,.11) 10%,transparent 14% 36%,rgba(238,42,123,.13) 39%,transparent 43% 68%,rgba(109,204,167,.1) 71%,transparent 75%);animation:spin 80s linear infinite}
.am4 .wrap{position:relative}
.am4 .stag>div:nth-child(2){transform:translate3d(0,calc((var(--p,.5) - .5)*-64px),0)}
.am4 .stag>div:nth-child(3){transform:translate3d(0,calc((var(--p,.5) - .5)*-28px),0)}
.am4 .vtile .play::after{content:"";position:absolute;inset:-3px;border:3px solid var(--ma-yellow);animation:ringpulse 3.2s ease-out infinite;pointer-events:none}
@media(max-width:700px){.am4 .stag>div:nth-child(2),.am4 .stag>div:nth-child(3){transform:none}}

/* ---------------------------------------------------------------- 8. DANCE FLOOR MEMORIES: twee filmstroken schuiven tegen elkaar in terwijl je scrolt */
.m4{overflow:hidden;background:linear-gradient(180deg,#150A22 0,#201035 40%,#150A22)}
.m4-grain{position:absolute;inset:0;pointer-events:none;opacity:.09;mix-blend-mode:screen;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
.m4 .wrap{position:relative}
.reel{position:relative;margin-top:clamp(12px,1.6vw,22px)}
.reel-in{display:flex;gap:clamp(10px,1.4vw,18px);width:max-content;padding-inline:var(--gut);transform:translate3d(var(--tx,0px),0,0);will-change:transform}
.fr{margin:0;flex:none;height:clamp(150px,19vw,290px);aspect-ratio:var(--a,16/10)}
.reel+.reel .fr{height:clamp(130px,16vw,240px)}
.fr .slot{height:100%;aspect-ratio:auto}
.fr:nth-child(even) .slot{transform:translateY(8%)}
@media(max-width:700px){.fr{height:150px}.reel+.reel .fr{height:130px}}

/* ---------------------------------------------------------------- 9. SINDS 2017: reuzencijfer schuift, twee foto's liggen over elkaar */
.s4{overflow:hidden}
.s4-num{position:absolute;left:-2vw;bottom:-5%;font:800 clamp(11rem,36vw,34rem)/.8 var(--f-display);color:transparent;-webkit-text-stroke:2px rgba(255,206,0,.2);pointer-events:none;transform:translate3d(calc((var(--p,.5) - .5)*-24vw),0,0)}
.s4-grid{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,6vw,96px);align-items:center}
.s4-ph{position:relative;padding-bottom:14%}
.s4-a{width:74%;transform:rotate(-3deg) translate3d(0,calc((var(--p,.5) - .5)*-34px),0)}
.s4-b{position:absolute;right:0;bottom:0;width:54%;transform:rotate(4deg) translate3d(0,calc((var(--p,.5) - .5)*64px),0)}
.s4-tx .lead{margin-bottom:18px}
@media(max-width:860px){.s4-grid{grid-template-columns:1fr}.s4-ph{order:2;padding-bottom:18%}.s4-a{width:80%}.s4-b{width:56%}}

/* ---------------------------------------------------------------- 10. PLAYLIST: een plaat die uit de hoes schuift en draait, equalizer bij de knop */
.p4{overflow:hidden;background:var(--ma-ink)}
.p4-glow{position:absolute;left:50%;top:50%;width:70vmax;aspect-ratio:1;margin:-35vmax 0 0 -35vmax;border-radius:50%;pointer-events:none;background:radial-gradient(closest-side,rgba(238,42,123,.2),rgba(102,45,145,.12) 55%,transparent);animation:drift 24s ease-in-out infinite alternate}
.p4 .wrap{position:relative}
.p4-disc{position:relative;width:min(100%,440px);padding-right:16%}
.sleeve{position:relative;z-index:1;width:100%;transform:rotate(-3deg)}
.vinyl{position:absolute;z-index:0;right:0;top:8%;width:82%;aspect-ratio:1;border-radius:50%;border:3px solid rgba(255,255,255,.55);box-shadow:var(--shadow);background:radial-gradient(circle,var(--ma-yellow) 0 13%,#0c0614 13.5% 15%,transparent 15.5%),repeating-radial-gradient(circle,#0c0614 0 3px,#201233 4px 5px);translate:calc((var(--p,.5) - .3)*22%) 0;animation:spin 9s linear infinite}
.p4-row{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.eq{display:inline-flex;align-items:flex-end;gap:5px;height:36px}
.eq i{width:6px;height:100%;background:var(--ma-yellow);transform-origin:bottom;animation:eq 1.1s ease-in-out infinite alternate}
.eq i:nth-child(2){animation-duration:.8s;animation-delay:-.3s;background:var(--ma-pink)}.eq i:nth-child(3){animation-duration:1.3s;animation-delay:-.6s;background:var(--ma-mint)}
.eq i:nth-child(4){animation-duration:.95s;animation-delay:-.2s;background:var(--ma-orange)}.eq i:nth-child(5){animation-duration:1.2s;animation-delay:-.8s}

/* ---------------------------------------------------------------- 11. COMMUNITY: gezichten van onze dansvloer, wax-print die langzaam meeschuift */
.c4{overflow:hidden}
.c4-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.c4-bg::before{content:"";position:absolute;inset:-20%;background:var(--wax);background-size:96px 96px;opacity:.08;transform:translate3d(calc((var(--p,.5) - .5)*160px),calc((var(--p,.5) - .5)*-80px),0) rotate(6deg)}
.c4 .wrap{position:relative}
.faces{display:flex;padding-left:18px}
.faces span{flex:none;width:clamp(84px,11vw,128px);aspect-ratio:1;margin-left:-18px;border-radius:50%;overflow:hidden;border:3px solid var(--ma-white);background:var(--ma-surface);box-shadow:var(--shadow);transform:translate3d(0,calc((var(--p,.5) - .5)*(var(--i)*-22px + 34px)),0)}
.faces img{width:100%;height:100%;object-fit:cover;display:block}

/* ---------------------------------------------------------------- 12. CONTACT: een foto met rustige Ken Burns, licht dat langzaam verschuift */
.k4{overflow:hidden}
.k4-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.k4-bg::before{content:"";position:absolute;width:60vmax;aspect-ratio:1;right:-20vmax;top:-10vmax;border-radius:50%;background:radial-gradient(closest-side,rgba(102,45,145,.55),transparent);animation:drift 28s ease-in-out infinite alternate}
.k4 .wrap{position:relative}
.k4-photo{margin-top:28px;max-width:30rem}
.k4-photo img.ph{animation:kb 20s ease-in-out infinite alternate}
.lb-still{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.lb-note{display:flex;flex-direction:column;gap:2px;padding:12px 0 0}.lb-note i{font-style:normal;color:var(--ma-lilac);font-size:.9375rem}

/* ---------------------------------------------------------------- rustig: nergens beweging, alles leesbaar en op zijn plek */
.calm .w4-bg i,.calm .wheelbox::before,.calm .wheelbox::after,.calm .d4-glow::before,.calm .d4-glow::after,.calm .am4-beam,.calm .am4 .play::after,.calm .p4-glow,.calm .vinyl,.calm .eq i,.calm .k4-bg::before,.calm .k4-photo img.ph,.calm .wph img.sw,
.freeze .w4-bg i,.freeze .wheelbox::before,.freeze .wheelbox::after,.freeze .d4-glow::before,.freeze .d4-glow::after,.freeze .am4-beam,.freeze .am4 .play::after,.freeze .p4-glow,.freeze .vinyl,.freeze .eq i,.freeze .k4-bg::before,.freeze .k4-photo img.ph{animation:none}
.calm .eq i{transform:scaleY(.7)}.calm .wheelbox::before,.calm .wheelbox::after{display:none}
.calm .reel-in{width:auto;flex-wrap:wrap;transform:none;justify-content:center}
.calm .fr{height:auto;width:calc(33.333% - 14px);aspect-ratio:var(--a)}.calm .fr:nth-child(even) .slot{transform:none}
.calm .wph img.sw{animation:none}
@media(prefers-reduced-motion:reduce){
 .w4-bg i,.wheelbox::before,.wheelbox::after,.d4-glow::before,.d4-glow::after,.am4-beam,.am4 .play::after,.p4-glow,.vinyl,.eq i,.k4-bg::before,.k4-photo img.ph,.wph img.sw{animation:none}
 .eq i{transform:scaleY(.7)}.wheelbox::before,.wheelbox::after{display:none}
 .reel-in{width:auto;flex-wrap:wrap;transform:none;justify-content:center}
 .fr{height:auto;width:calc(33.333% - 14px);aspect-ratio:var(--a)}.fr:nth-child(even) .slot{transform:none}
 .sticker{animation:none}
}
@media(prefers-reduced-motion:reduce){.calm .fr,.fr{width:calc(50% - 10px)}}
@media(max-width:700px){.calm .fr{width:calc(50% - 10px)}}

/* =====================================================================================================
   RONDE 5 (prompt-edc-ronde5.md): echte video in de header, kaft bij Next stop, wiel zonder tikmarkering, Spotify-speler
   ===================================================================================================== */

/* 1. Header: de video blijft overal helder; alleen links loopt een verlooplaag van de achtergrondkleur naar niets,
   zodat de tekst leesbaar blijft zonder de hele video donker te maken. */
.h4 .hv-shade{background:
  linear-gradient(90deg,rgba(21,10,34,.97) 0,rgba(21,10,34,.93) 24%,rgba(21,10,34,.62) 44%,rgba(21,10,34,.16) 66%,rgba(21,10,34,0) 82%),
  linear-gradient(0deg,rgba(21,10,34,.7) 0,rgba(21,10,34,0) 34%)}
.h4 .hv-poster,.h4 .hv-video{object-position:62% 40%}
@media(max-width:860px){
 /* smal scherm: de tekst loopt over de hele breedte, dus de laag loopt van boven (video open) naar onder (tekst) */
 .h4 .hv-shade{background:linear-gradient(180deg,rgba(21,10,34,0) 0,rgba(21,10,34,.22) 40%,rgba(21,10,34,.6) 68%,rgba(21,10,34,.88) 100%)}
 .h4 h1,.h4 .lead,.h4 .eyebrow{text-shadow:0 2px 16px rgba(21,10,34,.85),0 0 3px rgba(21,10,34,.6)}
}

/* 2. Next stop: de kaft van het event, uit media/events.json (home-r5.js) */
.n4-cover{margin:0;width:100%;border:3px solid var(--ma-white);box-shadow:var(--shadow),0 0 40px rgba(238,42,123,.3);background:var(--ma-ink);transform:rotate(calc(2deg - var(--p,.5)*4deg))}
.n4-cover img{display:block;width:100%;height:auto}
.n4-covers{position:relative;padding-bottom:6%}
.n4-covers .n4-tag{left:-2%;top:-4%}
.calm .n4-cover{transform:rotate(1.5deg)}
@media(prefers-reduced-motion:reduce){.n4-cover{transform:rotate(1.5deg)}}

/* 3. Wiel: geen blauwe tikmarkering en geen focusrand na een tik; toetsenbordfocus blijft zichtbaar (:focus-visible) */
.wheelbox,.wheel,.sector{-webkit-tap-highlight-color:transparent}
.sector:focus:not(:focus-visible){outline:none}
.sector:focus-visible{outline:none}
body[data-v] .w4 .sector:focus-visible .shape,body[data-v] .w4 .sector.on:focus-visible .shape{stroke:var(--ma-yellow);stroke-width:10}
body[data-v] .w4 .sector:focus-visible,.w4 .sector.on:focus-visible{filter:drop-shadow(0 0 4px var(--ma-white)) drop-shadow(0 0 16px var(--ma-yellow))}

/* 4. Spotify-speler: eigen omlijsting, Spotify-speler pas na een klik */
.p5{position:relative;margin-top:28px;border:3px solid var(--ma-white);background:var(--ma-surface);box-shadow:var(--shadow),8px 8px 0 var(--ma-pink);transform:rotate(-1deg);max-width:560px}
.p5-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:var(--ma-yellow);color:var(--ma-ink);border-bottom:3px solid var(--ma-white);font:800 .8125rem/1 var(--f-display);text-transform:uppercase;letter-spacing:.06em}
.p5-bar .eq{height:18px}.p5-bar .eq i{width:4px;background:var(--ma-ink)}
.p5-stage{position:relative;height:352px;background:var(--ma-ink)}
.p5-play{position:absolute;inset:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:20px;border:0;cursor:pointer;color:var(--ma-white);font:inherit;background:linear-gradient(180deg,rgba(21,10,34,.35),rgba(21,10,34,.88)),var(--p5-img) center/cover}
.p5-disc{display:grid;place-items:center;width:92px;aspect-ratio:1;border-radius:50%;background:var(--ma-yellow);color:var(--ma-ink);border:3px solid var(--ma-white);box-shadow:var(--shadow),0 0 36px rgba(255,206,0,.45);transition:transform .25s var(--ease)}
.p5-disc svg{width:38px;height:38px;margin-left:5px;fill:currentColor}
.p5-lab{font:800 clamp(1.4rem,2.4vw,1.9rem)/1.05 var(--f-display);text-transform:uppercase;text-shadow:0 2px 12px rgba(21,10,34,.8)}
.p5-sub{max-width:30ch;font-size:.875rem;line-height:1.35;color:var(--ma-lilac);text-align:center}
.p5-play:hover .p5-disc{transform:scale(1.08) rotate(-6deg)}
.p5-play:focus-visible{outline:4px solid var(--ma-magenta);outline-offset:-8px}
.p5-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:var(--ma-ink)}
.p4-row{margin-top:26px}
@media(max-width:700px){.p5{transform:none;box-shadow:var(--shadow),6px 6px 0 var(--ma-pink)}.p5-stage{height:352px}}
.calm .p5,.calm .p5-disc{transform:none}
@media(prefers-reduced-motion:reduce){.p5{transform:none}.p5-play:hover .p5-disc{transform:none}}

/* edc-r6 */
/* Ronde 6: de header als gelaagd blok met sticker, stedenstrook en duidelijke knoppen.
   Alle beweging staat stil bij prefers-reduced-motion en ?still=1 (.calm). */

/* ---------------------------------------------------------------- 1. HEADER */
.h4{padding-bottom:calc(clamp(40px,5vw,72px) + 64px);align-items:center}
.h6{position:relative;max-width:min(760px,100%)}
.h6-eye{margin:0}
.h6-eye span{display:inline-block;background:var(--ma-yellow);color:var(--ma-ink);padding:7px 14px 6px;transform:rotate(-1.5deg);font-size:.8125rem;letter-spacing:.14em;text-transform:uppercase;box-shadow:4px 4px 0 var(--ma-magenta)}
.h4 .h6 h1{margin:22px 0 0;line-height:.9}
.h4 .h6 h1 .h6-a{display:flex;align-items:center;gap:16px;font-size:clamp(1.15rem,1.4vw + .85rem,2rem);letter-spacing:.16em;line-height:1.1;color:var(--ma-white)}
.h6-a::after{content:"";flex:0 1 clamp(48px,14vw,200px);height:4px;background:var(--ma-magenta)}
.h4 .h6 h1 .h6-b{font-size:clamp(3.4rem,7.2vw + 1rem,7.25rem);line-height:.88;margin-top:8px;letter-spacing:.005em;text-shadow:3px 3px 0 var(--ma-magenta),6px 6px 0 rgba(21,10,34,.9),0 0 38px rgba(255,206,0,.28);overflow-wrap:normal;max-width:6.2em}
.h6 .lead{margin-top:26px;max-width:30em;text-shadow:0 2px 14px rgba(21,10,34,.8)}
.h6-cta{margin-top:30px;align-items:center;gap:18px 22px}
.h6-go{flex-direction:column;gap:7px;min-height:72px;padding:0 38px;transform:rotate(-1.5deg)}
.h6-go-t{font-size:1.0625rem;letter-spacing:.16em}
.h6-go-s{font-size:.75rem;letter-spacing:.08em;font-weight:600;opacity:.85}
.h6-alt{min-height:56px}
/* de sticker van het negenjarig jubileum: hun eigen uitgesneden ontwerp, bovenaan rechts van de kop */
.h6-sticker{position:absolute;right:clamp(0px,2vw,24px);top:-18px;width:clamp(110px,12vw,176px);height:auto;transform-origin:50% 60%;transform:rotate(7deg);filter:drop-shadow(0 8px 14px rgba(8,2,20,.55));animation:stk 6s ease-in-out infinite alternate;pointer-events:none}
@keyframes stk{from{transform:rotate(5deg) translateY(0)}to{transform:rotate(10deg) translateY(-7px)}}
/* stedenstrook onderaan de header */
.h6-strip{position:absolute;left:0;right:0;bottom:0;z-index:2;overflow:hidden;border-top:1px solid rgba(255,255,255,.28);background:rgba(21,10,34,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.h6-strip-track{display:flex;width:max-content;animation:marq 70s linear infinite;padding:17px 0;font:700 .875rem/1 var(--f-body);letter-spacing:.2em;text-transform:uppercase;color:var(--ma-lilac)}
.h6-strip-track span{padding-right:28px;white-space:nowrap}
.h6-strip-track span::after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ma-magenta);margin-left:28px;vertical-align:middle}
.h6-strip:hover .h6-strip-track{animation-play-state:paused}
@media(max-width:860px){
 .h4{align-items:flex-start;padding-top:36px}
 .h4 .h6 h1 .h6-b{max-width:none}
 .h6-sticker{top:34px;right:-2px;width:92px}
 .h6-go{padding:0 22px}
 .h6 .lead{max-width:none}
}

/* ---------------------------------------------------------------- rustig voor wie dat vraagt (en ?still=1) */
.calm .h6-sticker,.calm .h6-strip-track{animation:none}
.calm .h6-strip-track{width:auto;flex-wrap:wrap;row-gap:10px;padding-inline:var(--gut);justify-content:center}
.calm .h6-strip{position:relative}
@media(prefers-reduced-motion:reduce){
 .h6-sticker,.h6-strip-track{animation:none}
 .h6-strip-track{width:auto;flex-wrap:wrap;row-gap:10px;padding-inline:var(--gut);justify-content:center}
 .h6-strip{position:relative}
}

/* edc-r7 */
/* Ronde 7: videovenster van de aftermovies. De speler is 16:9; het stilstaande beeld staat eronder tot YouTube geladen is. */
.lb-player{position:relative;aspect-ratio:16/9;background:var(--ma-ink);overflow:hidden}
.lb-player .lb-still{position:absolute;inset:0;height:100%}
.lb-player iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}
.lb-note{flex-direction:row;flex-wrap:wrap;justify-content:space-between;gap:8px 20px}
.lb-note a{color:var(--ma-yellow);text-underline-offset:3px}
.lb-close{border-radius:50%;border:2px solid var(--ma-white)}
.lb-close:hover,.lb-close:focus-visible{background:var(--ma-yellow);color:var(--ma-ink);border-color:var(--ma-yellow)}
.lb-close:focus-visible{outline:3px solid var(--ma-white);outline-offset:2px}

/* edc-r9 */
/* Ronde 9: (1) de grote koppen (h1, h2) in Inter vet; (2) de vaste Spotify-speler onderaan.
   Alleen home.html laadt dit bestand. Beweging staat stil bij prefers-reduced-motion en ?still=1 (.calm). */

/* ---------------------------------------------------------------- 1. KOPPEN IN INTER */
/* Inter lokaal (SIL OFL 1.1), variabel gewicht. Alleen lettertype, gewicht en letterafstand veranderen;
   de gele highlight (.y), de harde schaduw en de gelaagde kop in de header blijven zoals ze waren. */
@font-face{font-family:"Inter";font-weight:100 900;font-style:normal;font-display:swap;src:url(fonts/inter-variable.woff2) format("woff2")}
:root{--f-head:"Inter","DM Sans",system-ui,sans-serif}
h1,h2{font-family:var(--f-head);font-weight:800;letter-spacing:-.012em}
/* Inter is smaller dan Archivo Black en de hoofdletters staan dicht op elkaar bij 800: de gelaagde kop krijgt een fractie lucht,
   de kleine bovenregel houdt zijn eigen ruime letterafstand uit ronde 6 */
.h4 .h6 h1 .h6-b{letter-spacing:-.008em;font-weight:800}
.h4 .h6 h1 .h6-a{font-weight:700}

/* ---------------------------------------------------------------- 2. VASTE SPELER */
:root{--pw-h:60px}
body.pw-on{padding-bottom:calc(var(--pw-h) + env(safe-area-inset-bottom,0px))}
/* een focus of een anker dat naar een veld scrolt, belandt boven de balk */
html{scroll-padding-bottom:calc(var(--pw-h) + 24px)}
.pw{position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--ma-ink);border-top:3px solid var(--ma-yellow);box-shadow:0 -10px 30px rgba(8,2,20,.55)}
.pw-in{display:flex;align-items:center;gap:14px;max-width:calc(1240px + 2*var(--gut));margin-inline:auto;padding:0 var(--gut)}
.pw-bar{padding-bottom:env(safe-area-inset-bottom,0px)}
.pw-bar .pw-in{height:calc(var(--pw-h) - 3px)}
.pw-name{flex:1;min-width:0;font:700 .8125rem/1.2 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ma-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pw-name i{font-style:normal;color:var(--ma-lilac);font-weight:600}
.pw-btn{flex:none;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;cursor:pointer;color:var(--ma-ink);background:var(--ma-yellow);border-radius:50%;box-shadow:3px 3px 0 var(--ma-magenta);transition:transform 140ms var(--ease)}
.pw-btn svg{width:20px;height:20px;fill:currentColor}
.pw-play svg{margin-left:2px}
.pw-tog{background:transparent;color:var(--ma-white);border:2px solid var(--ma-white);box-shadow:none}
.pw-tog svg{fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .28s var(--ease)}
.pw[data-open] .pw-tog svg{transform:rotate(180deg)}
.pw-btn:hover{transform:scale(1.07)}
.pw-tog:hover{background:var(--ma-yellow);color:var(--ma-ink);border-color:var(--ma-yellow)}
.pw-btn:focus-visible{outline:3px solid var(--ma-white);outline-offset:3px;box-shadow:0 0 0 6px var(--ma-magenta)}
/* de lade: hoogte 0 en onzichtbaar tot hij open staat, zodat een verborgen speler niet met Tab bereikbaar is maar wel blijft spelen */
.pw-panel{height:0;overflow:hidden;visibility:hidden;transition:height .3s var(--ease),visibility 0s .3s}
.pw[data-open] .pw-panel{height:min(352px,58dvh,58vh);visibility:visible;transition:height .3s var(--ease),visibility 0s}
.pw-stage{height:min(352px,58dvh,58vh);width:min(100%,560px);padding:10px 0 12px;box-sizing:border-box}
.pw-panel .pw-in{align-items:flex-start}
.pw-stage iframe{display:block;width:100%;height:100%;border:0;background:var(--ma-ink);border-radius:12px}
.pw-wait{display:grid;place-items:center;height:100%;font:600 .875rem/1.3 var(--f-body);color:var(--ma-lilac)}
@media(max-width:700px){
 .pw-name{letter-spacing:.08em}
 .pw-stage{width:100%}
}
.calm .pw-panel,.calm .pw[data-open] .pw-panel,.calm .pw-btn,.calm .pw-tog svg{transition:none}
@media(prefers-reduced-motion:reduce){.pw-panel,.pw[data-open] .pw-panel,.pw-btn,.pw-tog svg{transition:none}.pw-btn:hover{transform:none}}
@media(print){.pw{display:none}}
.no-js .pw{display:none}

/* edc-r10 */
/* Ronde 10: de kop van event.html en edition.html weer op één middenas.
   Alleen deze twee pagina's laden dit bestand. */
.page-hero .wrap{text-align:center}
.page-hero .crumb{justify-content:center}
.hero-poster{grid-template-columns:1fr;justify-items:center;gap:clamp(20px,3vw,32px)}
.hero-poster>div{width:100%;max-width:760px;margin-inline:auto}
.hero-poster .poster{max-width:min(100%,420px)}
.hero-poster .facts{max-width:640px;margin-inline:auto;text-align:center}
.hero-poster .count{max-width:640px;margin-inline:auto}
.hero-poster .btn-row{justify-content:center}
.hero-poster .small{max-width:52ch;margin-inline:auto}
@media(max-width:560px){.hero-poster .facts{grid-template-columns:1fr}}
.page-hero .eyebrow,.ed-title .eyebrow,.page-hero h1{margin-inline:auto}

/* edc-r11 */
/* Ronde 11: kaarten en rijen met een aparte ticketknop (geen ingebedde links), en een rustig vlak waar een beeld ontbreekt. */
.ed,.ev{position:relative}
a.stretch{color:inherit;text-decoration:none}
a.stretch::after{content:"";position:absolute;inset:0;z-index:1}
.ed .go,.ev .btn,.ev-cta .btn{position:relative;z-index:2;text-decoration:none}
a.go:hover{color:var(--ma-white)}
.slot-n{background:repeating-linear-gradient(135deg,rgba(234,223,247,.05) 0 12px,transparent 12px 24px),var(--ma-surface)}
.travel{grid-template-columns:minmax(0,440px);justify-content:center;text-align:center}

/* edc-r12 */
/* Ronde 12: (1) vaste speler als echt onderdeel (balk + lade met hoes, lijst en volle Spotify-speler),
   (2) "What to expect" op event.html. Beweging staat stil bij prefers-reduced-motion en .calm. */

/* ---------------------------------------------------------------- 1. SPELER */
:root{--pw-h:76px}
.pw{background:linear-gradient(180deg,var(--ma-purple),var(--ma-ink));border-top:3px solid var(--ma-yellow);border-radius:20px 20px 0 0;box-shadow:0 -12px 36px rgba(8,2,20,.6)}
.pw-in{gap:14px}
.pw-bar .pw-in{height:calc(var(--pw-h) - 3px)}
.pw-art{flex:none;width:52px;height:52px;border-radius:10px;border:2px solid var(--ma-white);box-shadow:3px 3px 0 var(--ma-magenta);object-fit:cover;display:block}
.pw-now{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.pw-now b{font:800 1rem/1.15 var(--f-head);color:var(--ma-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pw-now i{font:600 .8125rem/1.2 var(--f-body);font-style:normal;color:var(--ma-lilac);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pw-btn{width:48px;height:48px}
.pw-play{width:52px;height:52px}
.pw-btn:focus-visible,.pw-link:focus-visible,.pw-back:focus-visible,.pt:focus-visible{outline:3px solid var(--ma-white);outline-offset:2px;box-shadow:0 0 0 6px var(--ma-magenta)}

.pw-panel{height:0;overflow:hidden;visibility:hidden;transition:height .32s var(--ease),visibility 0s .32s}
.pw[data-open] .pw-panel{height:min(660px,calc(100dvh - var(--pw-h) - 24px));visibility:visible;transition:height .32s var(--ease),visibility 0s}
.pw-grid{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:clamp(16px,2.4vw,32px);height:100%;max-width:calc(1240px + 2*var(--gut));margin-inline:auto;padding:20px var(--gut);box-sizing:border-box}
.pw-side{display:flex;flex-direction:column;min-height:0;gap:16px}
.pw-head{display:flex;gap:16px;align-items:flex-end}
.pw-cover{flex:none;width:132px;height:132px;border-radius:14px;border:3px solid var(--ma-white);box-shadow:5px 5px 0 var(--ma-magenta);object-fit:cover}
.pw-meta{min-width:0}
.pw-meta p{margin:0}
.pw-kick{font:800 .75rem/1 var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--ma-yellow);margin-bottom:6px!important}
.pw-title{font:800 1.75rem/1.05 var(--f-head);letter-spacing:-.012em;color:var(--ma-white)}
.pw-count{font:600 .875rem/1.3 var(--f-body);color:var(--ma-lilac);margin-top:6px!important}
.pw-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.pw-link,.pw-back{font:800 .75rem/1 var(--f-body);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;cursor:pointer;padding:10px 14px;border-radius:999px;border:2px solid var(--ma-white);background:transparent;color:var(--ma-white)}
.pw-link{background:var(--ma-yellow);border-color:var(--ma-yellow);color:var(--ma-ink)}
.pw-link:hover,.pw-back:hover{background:var(--ma-white);color:var(--ma-ink);border-color:var(--ma-white)}
.pw-list{list-style:none;margin:0;padding:0;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;border-radius:14px;background:rgba(8,2,20,.42);border:2px solid rgba(234,223,247,.18);counter-reset:none;scrollbar-color:var(--ma-magenta) transparent}
.pt{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:9px 14px;border:0;border-bottom:1px solid rgba(234,223,247,.1);background:transparent;color:var(--ma-white);text-align:left;cursor:pointer;font:inherit}
.pt:hover{background:rgba(234,223,247,.1)}
.pt[aria-current="true"]{background:rgba(238,42,123,.28);box-shadow:inset 4px 0 0 var(--ma-yellow)}
.pt-n{font:700 .8125rem/1 var(--f-body);color:var(--ma-lilac);text-align:right}
.pt-t{min-width:0;display:flex;flex-direction:column;gap:2px}
.pt-t b{font:700 .9375rem/1.2 var(--f-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-t i{font:500 .8125rem/1.2 var(--f-body);font-style:normal;color:var(--ma-lilac);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-d{font:600 .8125rem/1 var(--f-body);color:var(--ma-lilac);font-variant-numeric:tabular-nums}
.pw-stage{height:100%;min-height:480px;width:auto;padding:0;border-radius:16px;overflow:hidden;background:var(--ma-ink);border:3px solid var(--ma-white);box-shadow:6px 6px 0 var(--ma-magenta);box-sizing:border-box}
.pw-stage iframe{display:block;width:100%;height:100%;border:0;border-radius:0}
.pw-wait{display:grid;place-items:center;height:100%;padding:24px;text-align:center;font:600 .9375rem/1.4 var(--f-body);color:var(--ma-lilac)}

@media(max-width:820px){
 :root{--pw-h:68px}
 .pw{border-radius:16px 16px 0 0}
 .pw-art{width:44px;height:44px}
 .pw-now b{font-size:.9375rem}
 .pw-btn{width:44px;height:44px}.pw-play{width:48px;height:48px}
 .pw-in{gap:10px}
 .pw[data-open] .pw-panel{height:calc(100dvh - var(--pw-h) - 16px)}
 .pw-grid{display:block;overflow-y:auto;overscroll-behavior:contain;padding:16px var(--gut)}
 .pw-cover{width:84px;height:84px;box-shadow:4px 4px 0 var(--ma-magenta)}
 .pw-title{font-size:1.375rem}
 .pw-head{align-items:center}
 .pw-acts{margin-top:8px}
 .pw-stage{height:168px;min-height:168px;margin-top:16px}
 .pw-side{display:contents}
 .pw-head{order:1}.pw-stage{order:2}
 .pw-list{margin-top:16px;max-height:none;overflow:visible}
 .pw-grid{display:flex;flex-direction:column}
 .pw-list{order:3;flex:none}
}
.calm .pw-panel,.calm .pw[data-open] .pw-panel{transition:none}
@media(prefers-reduced-motion:reduce){.pw-panel,.pw[data-open] .pw-panel{transition:none}}

/* ---------------------------------------------------------------- 2. WHAT TO EXPECT */
.xp-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);grid-template-rows:1fr 1fr;gap:clamp(14px,2vw,24px);height:clamp(420px,46vw,620px)}
.xp-f{position:relative;margin:0;min-height:0}
.xp-a{grid-row:1/3}
.xp-f .slot{position:absolute;inset:0;aspect-ratio:auto;border-radius:18px}
.xp-b .slot{border-color:var(--ma-yellow)}
.xp-c{margin-left:clamp(0px,2.4vw,36px)}
.xp-c .slot{border-color:var(--ma-pink)}
.xp-f figcaption{position:absolute;left:14px;bottom:14px;z-index:2;max-width:calc(100% - 28px);padding:7px 12px;border-radius:999px;background:var(--ma-ink);color:var(--ma-white);border:2px solid var(--ma-yellow);font:800 .6875rem/1.25 var(--f-body);letter-spacing:.12em;text-transform:uppercase}
.xp-line{max-width:none;display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin:clamp(36px,5vw,64px) 0 0;padding-top:clamp(24px,3vw,36px);border-top:2px solid rgba(234,223,247,.18)}
.xp-pre{font:800 .875rem/1 var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--ma-yellow)}
.xp-st{display:flex;flex-wrap:wrap;gap:12px}
.xp-st b{display:inline-block;background:var(--ma-yellow);color:var(--ma-ink);border:3px solid var(--ma-white);padding:10px 22px;font:700 clamp(1.375rem,2.6vw,1.875rem)/1.1 var(--f-display);letter-spacing:.02em;text-transform:uppercase;box-shadow:4px 4px 0 var(--ma-magenta);transform:rotate(-1.4deg)}
.xp-st b:nth-child(2){transform:rotate(1.1deg)}
.xp-st b:nth-child(3){transform:rotate(-.7deg)}
.xp-st b::after{content:"✺";margin-left:14px;color:var(--ma-magenta)}
.xp-post{flex:1 1 260px;color:var(--ma-lilac);font-size:1.0625rem;line-height:1.5}
@media(max-width:700px){
 .xp-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto auto;height:auto}
 .xp-a{grid-column:1/3;grid-row:auto;height:min(62vw,300px)}
 .xp-b,.xp-c{height:min(46vw,200px);margin-left:0}
 .xp-f figcaption{font-size:.625rem;left:8px;bottom:8px;max-width:calc(100% - 16px);letter-spacing:.08em}
 .xp-line{flex-direction:column;align-items:flex-start}
 .xp-st b{padding:8px 16px}
}

/* edc-r13 */
/* Round 13: covers on the events list. One 4:3 cover per event, same grade; the row grows a picture column. */
.ev-cover{align-self:stretch;margin:-16px 0 -16px 0;min-height:104px;overflow:hidden;background:var(--ma-surface)}
.ev-cover img{display:block;width:100%;height:100%;object-fit:cover}
/* cover column only for rows that have a cover (.has-cover, set by tools/gen.mjs); rows without one keep the base grid of edc.css (date | title | chip | cta) */
.ev.has-cover{grid-template-columns:168px 104px minmax(0,1fr) auto auto;gap:8px 24px}
.ev.past .ev-cover img{filter:saturate(.8)}
@media(max-width:800px){
 .ev.has-cover{grid-template-columns:84px minmax(0,1fr)}
 .ev-cover{grid-column:1/-1;margin:-16px -16px 6px 0;min-height:0;aspect-ratio:3/2}
}

/* edc-r14 */
/* Ronde 14: finetunen, geen redesign. Geladen als laatste op alle pagina's; eerdere r-bestanden blijven ongewijzigd.
   Wat dit bestand doet (gemeten in audit/r14-*.mjs, zie RESULT-edc-14.md):
   1. beweging: drie tijden (fast/base/slow) en één easing
   2. staten: hover, active en focus op alles wat klikbaar is
   3. raakvlakken >= 44px op mobiel
   4. ritme: gelijke ruimte tussen hero en eerste sectie, gelijke rasterafstanden
   5. typografie: geen losse woorden, geen tekst onder 14px, bijschriften over beeld met eigen donkere ondergrond
   6. consistentie: evenementrij, kleine knoppen, chips en kaarten op elke pagina gelijk */

/* ------------------------------------------------------------------ 1. BEWEGING */
:root{--t-fast:.16s;--t-base:.28s;--t-slow:.52s;--tap:44px;--sp-1:8px;--sp-2:12px;--sp-3:16px;--sp-4:24px}
.btn{transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.ddbtn svg,.vtile .play,.tog::after,.pw-btn{transition:transform var(--t-fast) var(--ease)}
.ed{transition:transform var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease),filter var(--t-fast) var(--ease)}
.ev{transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),filter var(--t-fast) var(--ease)}
.album .slot,.p5-disc,.pw-tog svg{transition:transform var(--t-base) var(--ease)}
.chip4{transition:transform var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.sector{transition:transform var(--t-base) var(--ease),filter var(--t-base) var(--ease)}
.sector .shape{transition:fill var(--t-base) var(--ease)}
.vt{transition:filter var(--t-base) var(--ease),transform var(--t-fast) var(--ease)}
.pw-panel{transition:height var(--t-base) var(--ease),visibility 0s var(--t-base)}
.pw[data-open] .pw-panel{transition:height var(--t-base) var(--ease),visibility 0s}
.stag>.sg{transition:clip-path var(--t-slow) var(--ease)}
.hv-video{transition:opacity var(--t-slow) var(--ease)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition:none!important;scroll-behavior:auto!important}}

/* ------------------------------------------------------------------ 2. STATEN */
/* hover: één taal per soort; kleur- of onderstreepwissel voor links, lichte lift voor knoppen, helderheid voor kaarten */
.logo{transition:transform var(--t-fast) var(--ease)}
.logo:hover{transform:rotate(-4deg) scale(1.04)}
.lang a{transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.lang a:hover:not([aria-current]){background:rgba(234,223,247,.18);color:var(--ma-white)}
.ddbtn{transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.ddbtn:hover{transform:translateY(-1px);box-shadow:0 0 32px rgba(255,206,0,.65)}
.fchip{transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}
.fchip:hover{border-color:var(--ma-yellow);background:rgba(255,206,0,.14)}
.fchip[aria-pressed=true]:hover,.fchip[aria-selected=true]:hover{background:var(--ma-yellow);color:var(--ma-ink)}
.btn-tertiary{transition:text-decoration-color var(--t-fast) var(--ease),text-underline-offset var(--t-fast) var(--ease)}
.btn-tertiary:hover{text-decoration-color:var(--ma-white);text-underline-offset:9px}
.legal a,.ftr a,.mails a,.crumb a,.langnote a{transition:color var(--t-fast) var(--ease),text-decoration-color var(--t-fast) var(--ease)}
.legal a:hover,.mails a:hover,.crumb a:hover,.langnote a:hover{color:var(--ma-white);text-decoration:underline;text-decoration-color:var(--ma-yellow);text-decoration-thickness:2px;text-underline-offset:4px}
.ftr .soc a:hover,.ftr ul a:hover{color:var(--ma-white)}
.ev:hover .stretch,.ed:hover h3,.album:hover h3{color:var(--ma-white)}
.cb-more:hover{color:var(--ma-white)}
/* active: knoppen en chips zakken 1px, kaarten worden iets donkerder; de kaartrotatie blijft staan */
a.btn:active,button.btn:active,.ddbtn:active,.fchip:active,.pill:active,.chip4:active,.cchip:active,.lang a:active,.pw-btn:active,.pw-link:active,.pw-back:active,.burger:active,.cb-x:active,.cb-more:active{transform:translateY(1px)}
.ed:active,.ev:active,.album:active,.vt:active,.cty:active,.vtile:active{filter:brightness(.92)}
.btn-secondary:active{background:rgba(255,255,255,.18)}
.logo:active{transform:scale(.97)}
/* focus: één zichtbare rand overal (3px, merkroze, 2px afstand); op roze of gele vlakken wit met roze schaduw */
:focus-visible{outline:3px solid var(--ma-magenta);outline-offset:3px}
.btn:focus-visible,.ddbtn:focus-visible,.fchip:focus-visible,.pill:focus-visible,.lang a:focus-visible{outline-color:var(--ma-white);box-shadow:0 0 0 6px var(--ma-magenta)}
.lang a:focus-visible{outline-offset:-3px;box-shadow:none}
.sector:focus-visible{outline:none}
.hdr :focus-visible,.menu :focus-visible,.ftr :focus-visible{outline-offset:3px}

/* ------------------------------------------------------------------ 3. RAAKVLAKKEN (>= 44px op mobiel) */
.lang a{min-height:var(--tap);min-width:var(--tap);justify-content:center}
.lang{border-width:2px}
.cb-more{min-height:var(--tap)}
@media(max-width:800px){
 .cchip{min-height:var(--tap)}
 .legal{gap:0 24px}
 .legal a,.ftr li a,.ftr .soc a,.mails a,.crumb a,.langnote a{display:inline-flex;align-items:center;min-height:var(--tap)}
 .ftr ul{gap:0}
 .ftr .soc a{display:flex}
 .btn-sm,.subnav .btn{min-height:48px}
 .subnav a{min-height:var(--tap);display:inline-flex;align-items:center;padding-block:0}
 .pw-link,.pw-back{min-height:var(--tap);display:inline-flex;align-items:center}
}

/* ------------------------------------------------------------------ 4. RITME */
/* hero -> eerste sectie op de lijstpagina's en event.html: dezelfde ruimte (was 80 en 176). Secties met een eigen achtergrondband en pagina's met een wax-scheiding (boeken, edition) houden hun eigen opvulling */
.page-hero,.ed-hero{padding-block:clamp(36px,6vw,80px) clamp(28px,4vw,56px)}
.page-hero+.sec:not([class*=band]),.page-hero+section:not([class*=band]){padding-top:clamp(24px,3.5vw,48px)!important} /* !important: events, cities en fotos hebben 24px inline */
/* rasters: één schaal 8 / 12 / 16 / 24 */
.cards,.rooms,.travel{gap:var(--sp-4)}
.ev-list{gap:var(--sp-3)}
.cty .ev-list{gap:var(--sp-2)}
.chips,.fchips{gap:var(--sp-1)}

/* ------------------------------------------------------------------ 5. TYPOGRAFIE */
p,li,dd,figcaption,.lead,.small{text-wrap:pretty}
h1,h2,h3,.meta,.ev-main h3,.ed h3{text-wrap:balance}
/* niets onder 14px */
.xp-f figcaption{font-size:.875rem;letter-spacing:.06em;line-height:1.3;max-width:calc(100% - 24px);left:12px;bottom:12px}
.h6-eye span{font-size:.875rem}
.h6-go-s{font-size:1rem;opacity:1}
.pw-now i{font-size:.875rem}
.p5-bar{font-size:.875rem}
.p5-sub{font-weight:500}
.wph figcaption{font-size:1.0625rem;line-height:1.5;padding-top:44px;background:linear-gradient(0deg,rgba(21,10,34,.96) 0,rgba(21,10,34,.82) 55%,rgba(21,10,34,0))}
.vt-cap{background:linear-gradient(0deg,rgba(21,10,34,.94) 0,rgba(21,10,34,.78) 62%,rgba(21,10,34,0));padding-top:36px}
.vt-cap i{font-size:.9375rem;line-height:1.35;color:var(--ma-white);font-weight:600}
.vt-cap b{overflow-wrap:anywhere;hyphens:auto;max-width:100%}
.vt-cap i{text-wrap:balance}
.vt-cc,.cc-badge{background:var(--ct,var(--c))}
.small.muted,.langnote,.chip4 i{font-weight:500}

/* ------------------------------------------------------------------ 6. CONSISTENTIE */
/* evenementrij: chip en knop op dezelfde as, elke rij even hoog, op elke pagina.
   Rijen zonder cover (event.html) kregen sinds ronde 13 toch het raster met coverkolom: terug naar het raster zonder die kolom */
.ev:not(:has(.ev-cover)){grid-template-columns:104px minmax(0,1fr) auto auto}
@media(max-width:800px){.ev:not(:has(.ev-cover)){grid-template-columns:84px minmax(0,1fr)}}
.ev{align-items:center}
.ev .chip{align-self:center}
.ev-cta{align-self:center}
/* kleine knop is overal 48px hoog met dezelfde opvulling (was 44, 48 en 56) */
.btn-sm,.subnav .btn{min-height:48px;padding:0 20px}
/* kaarten en rijen zijn "revealed" (.rev.in zet transform op none en won van de hover); herstel de bedoelde staat, overal gelijk */
.ev.rev.in:hover{transform:translateX(6px);transition-duration:var(--t-fast)}
main:not(:has(.e4)) .ed.rev.in:nth-child(odd){transform:rotate(-.8deg)}
main:not(:has(.e4)) .ed.rev.in:nth-child(even){transform:rotate(.8deg)}
main:not(:has(.e4)) .ed.rev.in:hover{transform:rotate(0) translateY(-4px);transition-duration:var(--t-fast)}
@media(prefers-reduced-motion:reduce){.ev.rev.in:hover{transform:none}main:not(:has(.e4)) .ed.rev.in:nth-child(odd):hover{transform:rotate(-.8deg)}main:not(:has(.e4)) .ed.rev.in:nth-child(even):hover{transform:rotate(.8deg)}}

/* ------------------------------------------------------------------ 7. DISTILL / POLISH (Impeccable) */
/* het tekenglyph ✺ (lint en bijschriften) hangt van het systeemlettertype af (soms emoji-achtig): vervangen door een getekende 8-puntster in dezelfde kleur */
:root{--star:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.0 0.5L14.0 7.2L20.1 3.9L16.8 10.0L23.5 12.0L16.8 14.0L20.1 20.1L14.0 16.8L12.0 23.5L10.0 16.8L3.9 20.1L7.2 14.0L0.5 12.0L7.2 10.0L3.9 3.9L10.0 7.2z'/%3E%3C/svg%3E")}
.ribbon-track span::after,.xp-st b::after{content:"";display:inline-block;width:.8em;height:.8em;background:currentColor;-webkit-mask:var(--star) center/contain no-repeat;mask:var(--star) center/contain no-repeat}
.ribbon-track span::after{color:var(--ma-magenta);vertical-align:-.04em}
.xp-st b::after{color:var(--ma-magenta);vertical-align:-.02em}
/* niets beweegt zonder reden: de pulserende gloed hoort bij één knop (de hoofdactie in de hero), niet bij elke primaire knop */
@media(prefers-reduced-motion:no-preference){.btn-primary{animation:none}.h6-go.btn-primary{animation:pulse 3.4s ease-in-out infinite}}

/* ------------------------------------------------------------------ 8. NA REVIEW */
/* focusrand binnen de scrollcontainer (subnav, kaartenbaan) en boven de vaste cookiebanner */
.subnav a:focus-visible,.cty:focus-visible,.rail :focus-visible{outline-offset:-4px}
html:has(.cb:not([hidden])){scroll-padding-bottom:260px}
/* hover op de laatste klikbare dingen */
.cb-btns .btn:hover{filter:brightness(1.1);box-shadow:0 0 0 3px rgba(255,255,255,.4)}
.cb-x{transition:color var(--t-fast) var(--ease)}.cb-x:hover{color:var(--ma-yellow)}
a.cty{transition:filter var(--t-fast) var(--ease)}a.cty:hover{filter:brightness(1.12)}
.faq summary{transition:color var(--t-fast) var(--ease)}.faq summary:hover{color:var(--ma-yellow)}
/* toetsenbordgebruik: geen vertraagd scrollen, anders ziet het wiel de scroll na een Tab als nieuwe richting en toont het een ander land */
html.kb{scroll-behavior:auto}
@media(max-width:800px){.ftr .two li{margin-bottom:0}}

/* edc-r16 */
/* Round 16: repair + sync round. Loaded last. Sections: 1 share toast, 2 event rows, 3 Spotify player, 4 genre line. */

/* 1. share confirmation (event-actions.js) */
.toast{position:fixed;left:50%;bottom:28px;z-index:90;transform:translate(-50%,16px);max-width:calc(100vw - 32px);padding:14px 24px;background:var(--ma-yellow);color:var(--ma-ink);border:3px solid var(--ma-white);box-shadow:4px 4px 0 var(--ma-magenta);font:800 .875rem/1.2 var(--f-body);letter-spacing:.1em;text-transform:uppercase;opacity:0;pointer-events:none;transition:opacity var(--t-base,.28s) var(--ease),transform var(--t-base,.28s) var(--ease)}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media(prefers-reduced-motion:reduce){.toast{transition:none}}

/* 2. event rows: the cover column belongs to .has-cover rows only (edc-r13.css); keep the cover the same 4:3 picture everywhere */
.ev.has-cover .ev-cover img{aspect-ratio:4/3}
.n4-covers .n4-cover img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}

/* 3. Spotify player: no yellow line, narrow (about 20% of the width on desktop) and centred, one panel when open (the player's own track list) */
.pw{border-top:0;left:50%;right:auto;width:clamp(300px,20vw,380px);transform:translateX(-50%)}
.pw-bar .pw-in{padding:0 12px;gap:10px}
.pw-art{width:44px;height:44px}
.pw-btn{width:44px;height:44px}.pw-play{width:44px;height:44px}
.pw-grid{display:block;max-width:none;padding:0 12px 12px;overflow:hidden}
.pw-side{display:none}
.pw-stage{height:100%;min-height:0;box-shadow:none;border:0;border-radius:12px}
.pw[data-open] .pw-panel{height:min(420px,calc(100dvh - var(--pw-h) - 24px))}
@media(max-width:800px){.pw{width:min(94vw,380px)}.pw[data-open] .pw-panel{height:min(420px,calc(100dvh - var(--pw-h) - 16px))}}

/* edc-r17 */
/* ronde 17: eigen poster van het event in zijn eigen verhouding, en een rustiger achtergrond voor de Next stop-sectie */
.n4-cover.n4-poster img{aspect-ratio:auto;object-fit:contain;background:var(--ma-ink)}
/* één doorlopende achtergrond over de wiel-sectie en Next stop heen, zodat ze in elkaar overlopen */
.flow{position:relative;background:var(--ma-ink);overflow:hidden;isolation:isolate}
.flow::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:
  radial-gradient(70vmax 70vmax at 6% 2%, rgba(102,45,145,.50), transparent 70%),
  radial-gradient(62vmax 62vmax at 94% 24%, rgba(238,42,123,.22), transparent 70%),
  radial-gradient(58vmax 58vmax at 30% 98%, rgba(109,204,167,.16), transparent 70%)}
.flow > .wsec.w4,
.flow > .sec.n4.band-purple{background:transparent}
.flow .w4-bg{display:none}

/* Next stop: het eigen artwork groter en het blok in balans */
.sec.n4 .n4-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.18fr)}
.sec.n4 .n4-photos{padding-bottom:0;margin-top:0}
.sec.n4 .n4-cover.n4-poster{transform:none}
@media(max-width:860px){.sec.n4 .n4-grid{grid-template-columns:1fr}}

/* Next stop: geen wax-patroonlaag meer, zodat de achtergrond net zo rustig is als de sectie erboven */
.sec.n4 .n4-bg{display:none}

/* koppen in Chivo 900, gekozen door Brian; bodytekst blijft DM Sans.
   --f-head is de variabele die ronde 9 voor h1 en h2 gebruikt, --f-display de rest van het grote werk. */
:root{--f-head:"Chivo","DM Sans",system-ui,sans-serif;--f-display:"Chivo","DM Sans",system-ui,sans-serif}
h1,h2,h3,.display{font-weight:900}

/* spaarknop in de vaste speler: rond, rechts, met genoeg ruimte voor de titel ernaast */
.pw{width:clamp(320px,28vw,400px)}
.pw-save{flex:none;display:grid;place-items:center;width:44px;height:44px;margin-left:auto;
  color:var(--ma-ink);background:var(--ma-white);border-radius:50%;text-decoration:none;
  box-shadow:3px 3px 0 var(--ma-magenta);transition:transform 140ms var(--ease)}
.pw-save svg{width:20px;height:20px}
.pw-save:hover{transform:scale(1.07)}
.pw-save:focus-visible{outline:3px solid var(--ma-white);outline-offset:3px;box-shadow:0 0 0 6px var(--ma-magenta)}
.pw-now{min-width:0}
.pw-now b,.pw-now i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}

/* landen zonder foto: ontworpen cover in de vlagkleuren, met de landnaam in de huisstijl */
.slot-typo{position:relative;display:grid;place-items:center;overflow:hidden;border-radius:inherit;
  background:linear-gradient(115deg,var(--f1) 0 33%,var(--f2) 33% 66%,var(--f3) 66% 100%)}
.slot-typo::after{content:"";position:absolute;inset:0;
  background:radial-gradient(90% 130% at 18% 8%, rgba(21,10,34,.10), rgba(21,10,34,.86) 72%)}
.slot-typo .typo-code{position:absolute;z-index:1;top:14px;left:16px;font:900 .75rem/1 var(--f-body);
  letter-spacing:.2em;color:var(--ma-white);opacity:.9}
.slot-typo .typo-name{position:relative;z-index:1;font:900 clamp(1.3rem,2.6vw,2.2rem)/1 var(--f-head);
  color:var(--ma-white);text-transform:uppercase;letter-spacing:-.02em;text-shadow:0 2px 26px rgba(0,0,0,.55)}

/* cover in huisstijl voor afgelopen edities: stad, maand en land, geen feestfoto */
.cover-design{position:relative;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;
  width:100%;height:100%;padding:10px 12px;overflow:hidden;border-radius:inherit;background:var(--ma-ink)}
.cover-design img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.6}
.cover-design::before{content:"";position:absolute;inset:0;
  background:radial-gradient(130% 130% at 10% 6%, var(--c), transparent 62%);opacity:.55}
.cover-design::after{content:"";position:absolute;inset:0;opacity:.16;
  background-image:repeating-linear-gradient(135deg, rgba(255,255,255,.5) 0 1px, transparent 1px 11px),
                   repeating-linear-gradient(45deg, rgba(255,255,255,.35) 0 1px, transparent 1px 17px)}
.cover-design u{position:absolute;z-index:1;top:8px;left:12px;text-decoration:none;color:rgba(255,255,255,.7);
  font:900 .58rem/1 var(--f-body);letter-spacing:.22em}
.cover-design b{position:relative;z-index:1;color:#fff;text-transform:uppercase;letter-spacing:-.02em;
  font:900 clamp(.9rem,1.35vw,1.15rem)/1 var(--f-head);text-shadow:0 1px 14px rgba(0,0,0,.5)}
.cover-design i{position:relative;z-index:1;font-style:normal;color:#fff;opacity:.82;
  font:800 .6rem/1 var(--f-body);letter-spacing:.18em;text-transform:uppercase}

/* stad aanvragen per land */
.ask-wrap{margin-top:14px}
.ask-wrap .ask-open{width:100%;justify-content:center}
.ask-form{margin-top:12px;padding:14px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10)}
.ask-titel{margin:0 0 10px;font:800 .95rem/1.2 var(--f-head);color:#fff}
.ask-velden{display:grid;gap:10px}
.ask-velden label{display:grid;gap:4px}
.ask-velden span{font:700 .68rem/1 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.ask-velden input{width:100%;padding:11px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.18);
  background:rgba(0,0,0,.28);color:#fff;font:600 .95rem/1.2 var(--f-body)}
.ask-velden input:focus{outline:2px solid var(--ma-yellow);outline-offset:1px}
.ask-acties{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}
.ask-uitleg{font:500 .72rem/1.35 var(--f-body);color:rgba(255,255,255,.55);max-width:26ch}
.ask-fout{margin:8px 0 0;color:#FF8A8A;font:700 .78rem/1.3 var(--f-body)}
.ask-klaar{margin:0;color:var(--ma-mint);font:700 .85rem/1.35 var(--f-body)}
@media(min-width:520px){.ask-velden{grid-template-columns:1fr 1fr}}

/* leespagina's: privacy, terms, cookies */
.wrap-narrow{max-width:820px}
.legal-page{padding-top:clamp(26px,5vw,60px);padding-bottom:clamp(40px,7vw,90px)}
.legal-body{font-size:1.02rem;line-height:1.7;color:rgba(255,255,255,.86)}
.legal-body h2{margin:2em 0 .6em;font:800 clamp(1.15rem,2vw,1.5rem)/1.2 var(--f-head);color:#fff}
.legal-body h3{margin:1.6em 0 .5em;font:700 1.05rem/1.3 var(--f-head);color:#fff}
.legal-body p{margin:0 0 1em}
.legal-body ul,.legal-body ol{margin:0 0 1.2em 1.3em;display:grid;gap:.45em}
.legal-body li{padding-left:.2em}
.legal-body a{color:var(--ma-yellow);text-decoration:underline;text-underline-offset:2px}
.legal-body strong{color:#fff}
.legal-body .lead{color:rgba(255,255,255,.7)}
