/* zwemschool-lesroute: lesroute in twaalf stappen (Pro-block list-10 als block-port), het bad in
   ASCII-water (React Bits Pro liquid-ascii, origineel gecompileerd met pauzepatch) en de gedeelde
   bal uit orbital-type. Alles gescoped onder .msm-zwemschool-lesroute. */
.msm-zwemschool-lesroute{--zlr-p:var(--m-primary,#ef6e4a);--zlr-bg:var(--m-bg,#dfeff0);--zlr-ink:var(--m-ink,#123b45);--zlr-s:var(--m-surface,#f8ffff);--zlr-mu:var(--m-muted,#53747b);--zlr-a:var(--m-accent2,#2f7f8c);--zlr-l:var(--m-line,#c2dcdf);--zlr-fd:var(--m-font-display,"Baloo 2","Segoe UI",system-ui,sans-serif);--zlr-fb:var(--m-font-body,"Noto Sans","Segoe UI",system-ui,sans-serif);--zlr-ease:cubic-bezier(0.2,0,0,1);--zlr-ink8:color-mix(in srgb,var(--m-ink,#123b45) 8%,transparent);--zlr-ink66:color-mix(in srgb,var(--m-ink,#123b45) 66%,transparent);position:relative;scroll-margin-top:112px;padding:clamp(56px,8vw,104px) 0;background:var(--zlr-s);color:var(--zlr-ink);font-family:var(--zlr-fb);font-size:16px;line-height:1.5}
.msm-zwemschool-lesroute *{box-sizing:border-box}
.msm-zwemschool-lesroute [hidden]{display:none!important}
.msm-zwemschool-lesroute .zlr-wrap{width:min(1180px,100% - 32px);margin:0 auto}

/* kop met de bal */
.msm-zwemschool-lesroute .zlr-head{display:grid;grid-template-columns:140px minmax(0,1fr);gap:28px;align-items:center;max-width:860px;margin:0 0 32px}
.msm-zwemschool-lesroute .zlr-orb{position:relative;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle at 38% 32%,var(--zlr-s) 0,color-mix(in srgb,var(--zlr-a) 85%,var(--zlr-ink)) 72%);box-shadow:0 18px 40px -22px color-mix(in srgb,var(--zlr-ink) 55%,transparent);overflow:hidden}
.msm-zwemschool-lesroute .zlr-orb-fallback{position:absolute;inset:0;display:grid;place-items:center;color:var(--zlr-s);font:700 15px/1 var(--zlr-fd);letter-spacing:.14em;text-transform:uppercase}
.msm-zwemschool-lesroute .zlr-orb.is-live .zlr-orb-fallback{display:none}
.msm-zwemschool-lesroute .zlr-orb.is-live{background:color-mix(in srgb,var(--zlr-a) 92%,var(--zlr-ink))}
.msm-zwemschool-lesroute .zlr-orb .orbital-type{position:absolute;inset:0;isolation:isolate;width:100%;height:100%;min-height:0;overflow:hidden}
.msm-zwemschool-lesroute .zlr-orb .orbital-type__content{position:relative;z-index:10;width:100%;height:100%}
.msm-zwemschool-lesroute .zlr-kicker{margin:0 0 8px;color:var(--zlr-a);font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.msm-zwemschool-lesroute .zlr-title{margin:0;font:700 clamp(34px,5vw,58px)/1.04 var(--zlr-fd);letter-spacing:-.015em;color:var(--zlr-ink);text-wrap:balance}
.msm-zwemschool-lesroute .zlr-intro{margin:12px 0 0;max-width:60ch;color:var(--zlr-mu);font-size:18px}

.msm-zwemschool-lesroute .zlr-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(20px,3vw,40px);align-items:start}
.msm-zwemschool-lesroute .zlr-tankcol{position:sticky;top:112px}
/* het bad: liquid-ascii vult de tank, de stilstaande foto is de stand zonder JavaScript */
.msm-zwemschool-lesroute .zlr-tank{position:relative;height:320px;border:1px solid var(--zlr-l);border-radius:20px;background:var(--zlr-s);overflow:hidden}
.msm-zwemschool-lesroute .zlr-liquid{position:absolute;inset:0}
.msm-zwemschool-lesroute .zlr-still{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.msm-zwemschool-lesroute .zlr-tank.is-live .zlr-still{display:none}
/* originele liquid-ascii.css (gescoped) */
.msm-zwemschool-lesroute .liquid-ascii-container{position:relative;overflow:hidden;cursor:pointer}
.msm-zwemschool-lesroute .liquid-ascii-pre{position:absolute;inset:0;margin:0;padding:0;overflow:hidden;user-select:none;white-space:pre}
/* eigen: de pre hangt aan de onderrand, zodat de bodem van de tank (de laatste regels) in beeld blijft */
.msm-zwemschool-lesroute .zlr-liquid .liquid-ascii-pre{top:auto;bottom:0;height:auto}
.msm-zwemschool-lesroute .liquid-ascii-content{position:relative;z-index:10;pointer-events:none}
.msm-zwemschool-lesroute .zlr-tankcaption{margin:12px 0 0;color:var(--zlr-mu);font-size:14px}

/* list-10 (block-port): kop, voortgang, kaart met gelinieerde rijen */
.msm-zwemschool-lesroute .zlr-listcol{min-width:0}
.msm-zwemschool-lesroute .zlr-top{margin:0 0 16px}
.msm-zwemschool-lesroute .zlr-listtitle{margin:0;font-size:16px;line-height:20px;font-weight:500;letter-spacing:-.015em;color:var(--zlr-ink);text-wrap:balance}
.msm-zwemschool-lesroute .zlr-listsub{margin:4px 0 0;font-size:13px;line-height:18px;color:var(--zlr-ink66)}
.msm-zwemschool-lesroute .zlr-progressrow{display:flex;min-height:36px;align-items:center;margin-top:12px}
.msm-zwemschool-lesroute .zlr-progress{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px}
.msm-zwemschool-lesroute .zlr-track{position:relative;display:block;height:6px;width:100%;overflow:hidden;border-radius:999px;background:color-mix(in srgb,var(--zlr-ink) 7%,transparent)}
.msm-zwemschool-lesroute .zlr-fill{display:block;height:100%;background:var(--zlr-ink);transition:width 120ms var(--zlr-ease)}
.msm-zwemschool-lesroute .zlr-progresstext{flex-shrink:0;font-size:13px;line-height:18px;color:var(--zlr-ink66);font-variant-numeric:tabular-nums}
.msm-zwemschool-lesroute .zlr-done{display:flex;width:100%;align-items:center;gap:10px}
.msm-zwemschool-lesroute .zlr-done-icon{display:flex;width:28px;height:28px;flex-shrink:0;align-items:center;justify-content:center}
.msm-zwemschool-lesroute .zlr-done-icon svg{width:18px;height:18px;fill:none;stroke:color-mix(in srgb,var(--zlr-ink) 80%,transparent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.msm-zwemschool-lesroute .zlr-done-text{margin:0;min-width:0;flex:1;font-size:13px;line-height:18px;color:var(--zlr-ink)}
.msm-zwemschool-lesroute .zlr-btn{position:relative;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;gap:8px;border:1px solid color-mix(in srgb,var(--zlr-ink) 12%,transparent);border-radius:6px;background:var(--zlr-s);color:var(--zlr-ink);box-shadow:0 1px 2px -1px rgba(0,0,0,.12);font:500 14px/16px var(--zlr-fb);white-space:nowrap;cursor:pointer;user-select:none;transition:color 120ms var(--zlr-ease),background-color 120ms var(--zlr-ease),border-color 120ms var(--zlr-ease),box-shadow 120ms var(--zlr-ease),scale 120ms var(--zlr-ease)}
.msm-zwemschool-lesroute .zlr-btn-md{height:32px;padding:0 16px}
.msm-zwemschool-lesroute .zlr-btn:hover{border-color:color-mix(in srgb,var(--zlr-ink) 32%,transparent);background:linear-gradient(to bottom,color-mix(in srgb,var(--zlr-ink) 3%,var(--zlr-s)),color-mix(in srgb,var(--zlr-ink) 3%,var(--zlr-s)))}
.msm-zwemschool-lesroute .zlr-btn:active{scale:.98;box-shadow:inset 0 1px 2px rgba(0,0,0,.12);transition-duration:60ms}
.msm-zwemschool-lesroute .zlr-btn:focus-visible,.msm-zwemschool-lesroute .zlr-checkbtn:focus-visible,.msm-zwemschool-lesroute .zlr-link:focus-visible{outline:2px solid var(--zlr-ink);outline-offset:2px}
.msm-zwemschool-lesroute .zlr-frame{position:relative;display:flex;min-width:0;flex-direction:column;overflow:hidden;border-radius:10px;border:1px solid color-mix(in srgb,var(--zlr-ink) 10%,transparent);background:var(--zlr-s)}
.msm-zwemschool-lesroute .zlr-scroll{max-height:620px;overflow-y:auto;padding:8px;touch-action:pan-y}
.msm-zwemschool-lesroute .zlr-steps{list-style:none;margin:0;padding:0}
.msm-zwemschool-lesroute .zlr-steps>li+li{border-top:1px solid var(--zlr-ink8)}
.msm-zwemschool-lesroute .zlr-grouphead{display:flex;align-items:center;gap:12px;padding:12px 8px 6px}
.msm-zwemschool-lesroute .zlr-grouprope{display:block;flex:1;height:12px;border-radius:6px;background:url(/modules/zwemschool-lesroute/1.0.0/assets/photo-v1/baanlijn.webp) repeat-x center/auto 100%,var(--zlr-bg)}
.msm-zwemschool-lesroute .zlr-groupname{order:-1;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--zlr-a)}
.msm-zwemschool-lesroute .zlr-step{position:relative;display:flex;min-height:56px;width:100%;min-width:0;align-items:center;gap:0 12px;padding:8px 8px;border-radius:6px;text-align:left;color:var(--zlr-ink);transition:background-color 120ms var(--zlr-ease)}
.msm-zwemschool-lesroute .zlr-step:not(.is-done):hover{background:color-mix(in srgb,var(--zlr-ink) 5%,transparent)}
.msm-zwemschool-lesroute .zlr-step.is-locked{cursor:not-allowed}
.msm-zwemschool-lesroute .zlr-check{position:relative;display:inline-flex;width:28px;height:28px;flex-shrink:0;align-items:center;justify-content:center}
.msm-zwemschool-lesroute .zlr-num{font-size:13px;font-weight:700;color:var(--zlr-ink66);font-variant-numeric:tabular-nums}
.msm-zwemschool-lesroute .zlr-step.is-js .zlr-num{display:none}
.msm-zwemschool-lesroute .zlr-checkbtn{position:relative;display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;padding:0;border:1px solid color-mix(in srgb,var(--zlr-ink) 50%,transparent);border-radius:4px;background:var(--zlr-s);box-shadow:0 1px 2px -1px rgba(0,0,0,.12);cursor:pointer;transition:background-color 120ms var(--zlr-ease),border-color 120ms var(--zlr-ease),box-shadow 120ms var(--zlr-ease)}
.msm-zwemschool-lesroute .zlr-checkbtn::after{content:"";position:absolute;inset:-13px}
.msm-zwemschool-lesroute .zlr-checkbtn svg{width:12px;height:12px;fill:none;stroke:var(--zlr-s);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;opacity:0;pointer-events:none}
.msm-zwemschool-lesroute .zlr-checkbtn:hover:not([aria-pressed="true"]):not(:disabled){border-color:var(--zlr-ink)}
.msm-zwemschool-lesroute .zlr-checkbtn:active:not([aria-pressed="true"]){background:var(--zlr-ink8)}
.msm-zwemschool-lesroute .zlr-checkbtn[aria-pressed="true"]{border-color:transparent;background:var(--zlr-p)}
.msm-zwemschool-lesroute .zlr-checkbtn[aria-pressed="true"] svg{opacity:1}
.msm-zwemschool-lesroute .zlr-checkbtn:disabled{cursor:not-allowed;border-color:color-mix(in srgb,var(--zlr-ink) 40%,transparent);box-shadow:none}
.msm-zwemschool-lesroute .zlr-stepcontent{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}
.msm-zwemschool-lesroute .zlr-steptitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:16px;font-weight:500;color:var(--zlr-ink)}
.msm-zwemschool-lesroute .zlr-stepline{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:18px;color:var(--zlr-ink66)}
.msm-zwemschool-lesroute .zlr-step.is-done .zlr-steptitle{text-decoration:line-through;color:var(--zlr-ink66)}
.msm-zwemschool-lesroute .zlr-step.is-locked .zlr-steptitle{color:var(--zlr-ink66)}
.msm-zwemschool-lesroute .zlr-role{display:inline-flex;height:28px;flex-shrink:0;align-items:center;padding:0 12px;border:1px solid color-mix(in srgb,var(--zlr-ink) 12%,transparent);border-radius:6px;background:var(--zlr-s);box-shadow:0 1px 2px -1px rgba(0,0,0,.12);font-size:13px;line-height:16px;font-weight:500;color:var(--zlr-ink);white-space:nowrap}
.msm-zwemschool-lesroute .zlr-fade{position:absolute;left:0;right:0;height:32px;pointer-events:none;opacity:0;transition:opacity 120ms var(--zlr-ease)}
.msm-zwemschool-lesroute .zlr-fade-top{top:0;background:linear-gradient(to bottom,var(--zlr-s),transparent)}
.msm-zwemschool-lesroute .zlr-fade-bottom{bottom:0;background:linear-gradient(to top,var(--zlr-s),transparent)}
.msm-zwemschool-lesroute .zlr-frame.is-start .zlr-fade-top,.msm-zwemschool-lesroute .zlr-frame.is-end .zlr-fade-bottom{opacity:1}
.msm-zwemschool-lesroute .zlr-storage{margin:10px 0 0;font-size:13px;color:var(--zlr-mu)}
.msm-zwemschool-lesroute .zlr-note{margin:18px 0 0;color:var(--zlr-mu);font-size:15px}
.msm-zwemschool-lesroute .zlr-readmore{margin:8px 0 0;font-size:15px}
.msm-zwemschool-lesroute .zlr-link{color:var(--zlr-a);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.msm-zwemschool-lesroute .zlr-link:hover{color:var(--zlr-ink)}

@media (max-width:900px){
.msm-zwemschool-lesroute .zlr-grid{grid-template-columns:1fr}
.msm-zwemschool-lesroute .zlr-tankcol{position:static}
.msm-zwemschool-lesroute .zlr-scroll{max-height:none}
.msm-zwemschool-lesroute .zlr-steptitle,.msm-zwemschool-lesroute .zlr-stepline{white-space:normal}
}
@media (max-width:767px){
.msm-zwemschool-lesroute .zlr-head{grid-template-columns:88px minmax(0,1fr);gap:16px}
.msm-zwemschool-lesroute .zlr-orb{width:88px;height:88px}
.msm-zwemschool-lesroute .zlr-orb-fallback{font-size:10px}
.msm-zwemschool-lesroute .zlr-intro{font-size:16px}
.msm-zwemschool-lesroute .zlr-tank{height:260px}
.msm-zwemschool-lesroute .zlr-role{height:auto;padding:4px 8px;font-size:12px}
}
@media (prefers-reduced-motion:reduce){
.msm-zwemschool-lesroute .zlr-fill,.msm-zwemschool-lesroute .zlr-btn,.msm-zwemschool-lesroute .zlr-checkbtn,.msm-zwemschool-lesroute .zlr-step,.msm-zwemschool-lesroute .zlr-fade{transition:none}
.msm-zwemschool-lesroute .zlr-btn:active{scale:1}
}
