/* Leesmuizen – site.css */
@font-face{font-family:"Fredoka";src:url(/assets/fonts/fredoka-latin.woff2) format("woff2");font-weight:300 700;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Fredoka";src:url(/assets/fonts/fredoka-latinext.woff2) format("woff2");font-weight:300 700;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Andika";src:url(/assets/fonts/andika-400-latin.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122}
@font-face{font-family:"Andika";src:url(/assets/fonts/andika-700-latin.woff2) format("woff2");font-weight:700;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122}
@font-face{font-family:"Andika";src:url(/assets/fonts/andika-400-latinext.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0100-02BA,U+1E00-1E9F}

:root{
  --red:#c0241d;--red-d:#8e1a15;--yellow:#f6c445;--orange:#f08a24;--grey:#8f8a83;--cream:#fff8e7;--ink:#3b2a1e;
  --f-title:"Fredoka",ui-rounded,"Arial Rounded MT Bold","Trebuchet MS",system-ui,sans-serif;
  --f-read:"Andika","Verdana",system-ui,sans-serif;
  --radius:18px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--f-read);color:var(--ink);background:var(--cream);
  background-image:radial-gradient(circle at 12px 12px,rgba(192,36,29,.06) 2.5px,transparent 3px);background-size:28px 28px;
  line-height:1.5;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:var(--red-d)}
:focus-visible{outline:4px solid var(--orange);outline-offset:3px;border-radius:6px}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.skip{position:absolute;left:-999px;top:8px;background:#fff;padding:.5em 1em;z-index:100;border-radius:8px}
.skip:focus{left:8px}
.kbd{display:inline-block;min-width:1.7em;text-align:center;border:2px solid currentColor;border-bottom-width:4px;border-radius:7px;padding:0 .3em;font-weight:700;line-height:1.3;font-family:var(--f-title)}

/* ---------- Balk ---------- */
.topbar{position:relative;background:linear-gradient(180deg,#d42c24 0%,var(--red) 55%,var(--red-d) 100%);color:#fff;
  box-shadow:0 6px 0 var(--yellow),0 10px 24px rgba(80,20,10,.25);z-index:5}
.topbar::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.12;
  background-image:radial-gradient(circle,#fff 1.5px,transparent 2px);background-size:22px 22px}
.topbar__inner{position:relative;z-index:1;max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem 1.25rem;min-height:84px}
.brand{display:flex;align-items:center;gap:.9rem;text-decoration:none;color:inherit}
.brand__logo{width:92px;height:92px;margin:-4px 0 -26px;filter:drop-shadow(0 4px 6px rgba(0,0,0,.35));transition:transform .4s cubic-bezier(.3,1.6,.5,1)}
.brand:hover .brand__logo{transform:rotate(-8deg) scale(1.05)}
.brand__name{font-family:var(--f-title);font-weight:700;font-size:clamp(2rem,5vw,3.1rem);letter-spacing:.02em;line-height:1;
  color:var(--yellow);text-shadow:0 3px 0 var(--red-d),0 5px 10px rgba(0,0,0,.25);-webkit-text-stroke:1px rgba(120,30,10,.35)}
.brand__name span{display:inline-block;transition:transform .3s}
.brand__name span:nth-child(odd){transform:translateY(-2px) rotate(-3deg)}
.brand__name span:nth-child(even){transform:translateY(2px) rotate(3deg)}
.brand__name .l5,.brand__name .l6,.brand__name .l7,.brand__name .l8,.brand__name .l9,.brand__name .l10{color:#fff}
.brand:hover .brand__name span{transform:translateY(-4px)}
.mainnav{display:flex;gap:.4rem;flex-wrap:wrap}
.mainnav a{font-family:var(--f-title);font-weight:600;font-size:1.1rem;color:#fff;text-decoration:none;padding:.45em .95em;border-radius:999px;background:rgba(255,255,255,.14);border:2px solid rgba(255,255,255,.25)}
.mainnav a:hover{background:var(--yellow);color:var(--red-d);border-color:var(--yellow)}

/* ---------- Intro ---------- */
.hero{max-width:900px;margin:0 auto;padding:3rem 1.25rem 1rem;text-align:center}
.hero h1{font-family:var(--f-title);font-weight:700;color:var(--red);font-size:clamp(1.7rem,4.2vw,2.6rem);margin:.2em 0 .3em;line-height:1.15}
.hero p{font-size:1.1rem;margin:0 auto;max-width:42em}

/* ---------- Staande boekjes ---------- */
.books{max-width:1200px;margin:0 auto;padding:1.5rem 1.25rem 4rem}
.books__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:3rem 2rem;justify-items:center}
.book-item{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:240px}
.book{--bw:168px;--bh:252px;--bd:26px;position:relative;display:block;width:var(--bw);height:var(--bh);perspective:1100px;text-decoration:none;color:inherit;margin:10px 0 18px;border-radius:4px}
.book__body{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateY(-24deg);transition:transform .5s cubic-bezier(.2,.9,.3,1.2)}
.book:hover .book__body,.book:focus-visible .book__body{transform:rotateY(-8deg) translateY(-10px) rotateZ(-1.5deg)}
.book:active .book__body{transform:rotateY(-4deg) translateY(-4px) scale(.98)}
.book__cover{position:absolute;inset:0;transform:translateZ(calc(var(--bd)/2));border-radius:2px 6px 6px 2px;overflow:hidden;background:var(--c1);
  box-shadow:inset 4px 0 6px -2px rgba(255,255,255,.25),inset -1px 0 0 rgba(0,0,0,.2)}
.book__cover::before{content:"";position:absolute;left:0;top:0;bottom:0;width:12px;z-index:3;background:linear-gradient(90deg,rgba(0,0,0,.35),rgba(255,255,255,.25) 40%,rgba(0,0,0,.18) 70%,transparent)}
.book__pages{position:absolute;left:0;top:4px;width:calc(var(--bd) - 2px);height:calc(var(--bh) - 8px);
  transform:translateX(calc(var(--bw) - var(--bd)/2 - 3px)) rotateY(90deg);
  background:linear-gradient(90deg,#fffdf6,#e9e2cf 8%,#fffdf6 16%,#ece5d2 24%,#fffdf6 32%,#e9e2cf 40%,#fffdf6 48%,#ece5d2 56%,#fffdf6 64%,#e9e2cf 72%,#fffdf6 80%,#ddd5c0)}
.book__body::after{content:"";position:absolute;inset:0;transform:translateZ(calc(var(--bd)/-2));background:var(--c2);border-radius:2px 6px 6px 2px}
.book__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.book__shine{position:absolute;inset:0;z-index:4;pointer-events:none;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.22) 45%,transparent 60%);transform:translateX(-60%);transition:transform .7s}
.book:hover .book__shine{transform:translateX(60%)}
.book__shadow{position:absolute;left:-6%;right:-22%;bottom:-16px;height:26px;border-radius:50%;background:radial-gradient(closest-side,rgba(60,30,10,.38),transparent);z-index:-1;transition:transform .5s,opacity .5s}
.book:hover .book__shadow{transform:scale(.9);opacity:.7}
.book-meta__title{font-family:var(--f-title);font-weight:600;font-size:1.2rem;margin:.5rem 0 .1rem;line-height:1.2}
.book-meta__sub{margin:0 0 .4rem;font-size:.95rem;color:#6b5a4c}
.book-meta__tags{margin:0}
.tag{display:inline-block;font-size:.8rem;font-weight:700;padding:.15em .7em;border-radius:999px;background:#fff;border:2px solid #e8dcc3}

/* Tijdelijke cover (tot de eigen cover-afbeelding er is) */
.cover-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:20px 14px 12px 22px;color:var(--ink);--ic2:var(--acc);
  background:linear-gradient(160deg,var(--c1),var(--c2))}
.cover-ph__pattern{position:absolute;inset:0;opacity:.5}
.cover-ph>*:not(.cover-ph__pattern){position:relative}
.cover-ph__series{font-family:var(--f-title);font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;background:var(--acc);color:var(--c2);padding:.15em .6em;border-radius:999px}
.cover-ph__title{font-family:var(--f-title);font-weight:700;font-size:1.28rem;line-height:1.1;text-align:center;margin-top:.5rem;text-shadow:0 2px 0 rgba(0,0,0,.25)}
.cover-ph__emblem{width:72px;height:72px;margin:auto 0 .4rem;color:var(--ink);filter:drop-shadow(0 3px 2px rgba(0,0,0,.25))}
.cover-ph__brand{display:flex;align-items:center;gap:.35rem;font-family:var(--f-title);font-weight:600;font-size:.75rem;opacity:.95}
.font-andika .cover-ph__title{font-family:var(--f-read)}

/* Thema-patronen (CSS/SVG, geen afbeeldingen) */
.preset-library .cover-ph__pattern{background:repeating-linear-gradient(90deg,transparent 0 18px,rgba(255,255,255,.07) 18px 22px),radial-gradient(circle at 50% 120%,rgba(246,196,69,.35),transparent 60%)}
.preset-jungle .cover-ph__pattern{opacity:.35;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Cpath d='M8 40C6 24 18 10 34 10c0 18-12 30-26 30z' fill='%23bfe8a3'/%3E%3Cpath d='M52 58c-2-10 6-20 16-20 0 12-8 20-16 20z' fill='%2395d17a'/%3E%3C/svg%3E");background-size:60px 60px}
.preset-space .cover-ph__pattern{opacity:.9;background-image:radial-gradient(1.5px 1.5px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 60px 80px,#fff,transparent),radial-gradient(2px 2px at 110px 20px,#ffe9a8,transparent),radial-gradient(1px 1px at 90px 140px,#fff,transparent),radial-gradient(1.5px 1.5px at 140px 110px,#cfe0ff,transparent),radial-gradient(1px 1px at 30px 170px,#fff,transparent);background-size:160px 190px}
.preset-sea .cover-ph__pattern{opacity:.35;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='28'%3E%3Cpath d='M0 14q10-10 20 0t20 0 20 0 20 0' stroke='%23ffffff' stroke-width='3' fill='none'/%3E%3C/svg%3E");background-size:80px 28px}

/* ---------- Lezer (dialog) ---------- */
html.has-reader{overflow:hidden}
.reader{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;
  background:radial-gradient(ellipse at 50% 40%,color-mix(in srgb,var(--c1,#c0241d) 55%,#000) 0%,color-mix(in srgb,var(--c2,#5b1410) 70%,#000) 100%);color:#fff;
  display:none;flex-direction:column;overflow:hidden}
.reader[open]{display:flex}
.reader::backdrop{background:rgba(20,10,5,.6)}
.reader__bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 1rem .4rem 1.25rem}
.reader__title{font-family:var(--f-title);font-weight:600;font-size:clamp(1.1rem,3vw,1.6rem);margin:0;line-height:1.2}
.btn-icon{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;border:3px solid rgba(255,255,255,.7);background:rgba(255,255,255,.12);color:#fff;cursor:pointer;flex:none;padding:0}
.btn-icon svg{width:24px;height:24px}
.btn-icon:hover{background:var(--acc,var(--yellow));border-color:var(--acc,var(--yellow));color:#222}
.btn-icon:disabled{opacity:.25;cursor:default;background:transparent;color:#fff;border-color:rgba(255,255,255,.5)}
.nav--prev svg{transform:scaleX(-1)}
.reader__stage{flex:1;display:flex;align-items:center;justify-content:center;gap:1rem;padding:0 1rem;min-height:0}
.reader__status{text-align:center;margin:.3rem 0 .9rem;font-family:var(--f-title);font-size:1rem;opacity:.9}

.spread{position:relative;perspective:2800px;touch-action:pan-y;user-select:none;-webkit-user-select:none;
  --pw:min(42vw,calc((100dvh - 150px)*.68),520px);width:calc(var(--pw)*2);height:calc(var(--pw)*1.5)}
.spread.single{--pw:min(calc(100vw - 150px),calc((100dvh - 150px)*.66),520px);width:var(--pw)}
.spread::before{content:"";position:absolute;inset:-10px -12px -14px;border-radius:14px;background:color-mix(in srgb,var(--c2,#5b1410) 80%,#000);box-shadow:0 20px 50px rgba(0,0,0,.5)}
.spread.single::before{inset:-8px -10px -12px -8px}
.slot,.leaf{position:absolute;top:0;width:var(--pw);height:100%}
.slot--l{left:0}.slot--r{left:var(--pw)}
.single .slot--r{display:none}
.single .slot--l{left:0}
.leaf{transform-style:preserve-3d;z-index:5;will-change:transform}
.leaf--r{left:var(--pw);transform-origin:left center}
.leaf--l{left:0;transform-origin:right center}
.single .leaf--r{left:0;transform-origin:left center}
.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.face--back{transform:rotateY(180deg)}
.shade{position:absolute;inset:0;pointer-events:none;opacity:0;z-index:3}
.leaf--r .face--front .shade,.slot--r .shade{background:linear-gradient(90deg,rgba(0,0,0,.45),rgba(0,0,0,.08) 40%,rgba(255,255,255,.08))}
.leaf--r .face--back .shade,.slot--l .shade{background:linear-gradient(270deg,rgba(0,0,0,.45),rgba(0,0,0,.08) 40%,rgba(255,255,255,.08))}
.leaf--l .face--front .shade{background:linear-gradient(270deg,rgba(0,0,0,.45),rgba(0,0,0,.08) 40%,rgba(255,255,255,.08))}
.leaf--l .face--back .shade{background:linear-gradient(90deg,rgba(0,0,0,.45),rgba(0,0,0,.08) 40%,rgba(255,255,255,.08))}

/* Bladzijde */
.page{position:absolute;inset:0;background:var(--paper,#fff8e7);color:var(--pink,#3b2a1e);overflow:hidden;--ic2:var(--acc);
  display:flex;flex-direction:column;padding:8% 9% 11%;font-family:var(--f-read);font-size:clamp(1rem,calc(var(--pw)*.047),1.45rem);line-height:1.55}
.page--l{border-radius:8px 2px 2px 8px;box-shadow:inset -18px 0 24px -14px rgba(0,0,0,.28)}
.page--r{border-radius:2px 8px 8px 2px;box-shadow:inset 18px 0 24px -14px rgba(0,0,0,.28)}
.single .page{border-radius:2px 8px 8px 2px;box-shadow:inset 10px 0 18px -12px rgba(0,0,0,.3)}
.page::before{content:"";position:absolute;inset:3.2%;border:2px dashed color-mix(in srgb,var(--pacc) 45%,transparent);border-radius:12px;pointer-events:none}
.page__text{margin:auto 0;position:relative}
.page__text p{margin:0 0 .7em}
.page__art{width:26%;max-width:110px;aspect-ratio:1;margin:0 auto .6em;color:var(--pacc);display:block;flex:none}
.page__num{position:absolute;bottom:4.5%;left:0;right:0;text-align:center;font-family:var(--f-title);font-weight:600;font-size:.8em;color:var(--pacc)}
.page__corner{position:absolute;width:9%;aspect-ratio:1;color:var(--pacc);opacity:.55}
.page__corner--tl{top:5.5%;left:6%}.page__corner--br{bottom:5.5%;right:6%;transform:rotate(180deg)}
.page--title{text-align:center;justify-content:center;background:linear-gradient(160deg,var(--c1),var(--c2));color:var(--ink)}
.page--title::before{border-color:color-mix(in srgb,var(--acc) 70%,transparent)}
.page--title h3{font-family:var(--f-title);font-weight:700;font-size:1.9em;line-height:1.1;margin:.2em 0;text-shadow:0 2px 0 rgba(0,0,0,.25)}
.font-andika .page--title h3{font-family:var(--f-read)}
.page--title .page__art{width:40%;max-width:170px;color:var(--ink)}
.page--title .meta{font-size:.8em;opacity:.9;margin:.3em 0}
.page--end{text-align:center;justify-content:center}
.page--end h3{font-family:var(--f-title);color:var(--pacc);font-size:1.6em;margin:.2em 0}
.page--end button{font:inherit;font-family:var(--f-title);font-weight:600;background:var(--pacc);color:#fff;border:0;border-radius:999px;padding:.6em 1.3em;cursor:pointer;margin-top:.6em}
.page--blank::before{display:none}
/* thema-tint op het papier */
.preset-space .page:not(.page--title){background:linear-gradient(180deg,var(--paper),color-mix(in srgb,var(--paper) 88%,#7a6cff))}
.preset-jungle .page:not(.page--title){background:linear-gradient(180deg,var(--paper),color-mix(in srgb,var(--paper) 85%,#7cc35b))}
.preset-sea .page:not(.page--title){background:linear-gradient(180deg,var(--paper) 70%,color-mix(in srgb,var(--paper) 80%,#5bb7e0))}
.preset-library .page:not(.page--title){background:var(--paper)}
.preset-jungle .page::before{border-style:dotted;border-width:3px}
.preset-space .page::before{border-style:solid;border-width:1px}
.preset-sea .page::before{border-style:dashed;border-radius:24px}

.story-plain{max-width:42em;margin:0 auto 3rem;padding:1.5rem;background:#fff;border-radius:var(--radius)}
.js .story-plain{display:none}

/* ---------- Footer ---------- */
.footer{background:#3b2a1e;color:#f3e7d3;text-align:center;padding:1.4rem 1rem;font-size:.95rem}
.footer p{margin:.2rem 0}
.footer a{color:var(--yellow)}

/* ---------- Gewone pagina ---------- */
.prose{max-width:46em;margin:0 auto;padding:2.5rem 1.25rem 4rem}
.prose h1{font-family:var(--f-title);color:var(--red)}
.prose h2{font-family:var(--f-title)}

/* ---------- Mobiel ---------- */
@media (max-width:640px){
  .topbar__inner{min-height:68px;padding:.5rem .8rem}
  .brand__logo{width:64px;height:64px;margin:-2px 0 -20px}
  .brand{gap:.5rem}
  .brand__name{font-size:1.75rem}
  .mainnav a{font-size:.95rem;padding:.35em .7em}
  .mainnav a:first-child{display:none}
  .hero{padding-top:2.2rem}
  .books__grid{grid-template-columns:repeat(2,1fr);gap:2.2rem .8rem}
  .book{--bw:128px;--bh:192px;--bd:20px}
  .cover-ph{padding:14px 10px 10px 16px}
  .cover-ph__title{font-size:1rem}
  .cover-ph__emblem{width:52px;height:52px}
  .book-meta__title{font-size:1.02rem}
  .book-meta__sub{font-size:.85rem}
  .reader__stage{padding:0 .4rem;gap:.3rem;position:relative}
  .spread.single{--pw:min(calc(100vw - 28px),calc((100dvh - 190px)*.66))}
  .nav{position:absolute;bottom:-62px;z-index:10}
  .nav--prev{left:18%}.nav--next{right:18%}
  .reader__status{margin-top:4.6rem}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  .book__body{transform:rotateY(-14deg)}
}
.page--endpaper{background:linear-gradient(160deg,var(--c2),var(--c1))!important;justify-content:center;align-items:center;--ic2:var(--acc)}
.page--endpaper::before{display:none}
.page--endpaper .page__art{width:30%;color:var(--ink);opacity:.35}
.preset-space .page--endpaper{background-image:radial-gradient(1.5px 1.5px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 60px 80px,#fff,transparent),radial-gradient(2px 2px at 110px 20px,#ffe9a8,transparent),linear-gradient(160deg,var(--c2),var(--c1))!important;background-size:160px 190px,160px 190px,160px 190px,100% 100%!important}

/* ---------- Mascotte & beweging ---------- */
.hero{display:grid;grid-template-columns:1fr auto;align-items:center;gap:1.5rem;text-align:left;max-width:1000px;position:relative}
.hero__hi{font-family:var(--f-title);font-weight:600;color:var(--orange);font-size:1.25rem;margin:0;transform:rotate(-2deg);display:inline-block}
.hero__mascot{position:relative;width:230px;height:240px}
.mouse{display:block;overflow:visible}
.mouse--hero{width:100%;height:100%;animation:bob 3.2s ease-in-out infinite}
.mouse .m-wave{transform-origin:146px 128px;animation:wave 2.6s ease-in-out infinite}
.mouse .m-eyes{transform-origin:100px 76px;animation:blink 4.5s infinite}
.mouse .m-page{transform-origin:100px 150px;animation:flip 4s ease-in-out infinite}
.mouse .m-tail{transform-origin:140px 180px;animation:tail 3s ease-in-out infinite}
.mouse .m-ear-l{transform-origin:62px 60px;animation:earl 5s ease-in-out infinite}
.mouse .m-ear-r{transform-origin:138px 60px;animation:earr 5s ease-in-out infinite .4s}
.mouse .m-head{transform-origin:100px 120px;animation:tilt 6s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes wave{0%,55%,100%{transform:rotate(0)}62%{transform:rotate(-22deg)}70%{transform:rotate(8deg)}78%{transform:rotate(-22deg)}86%{transform:rotate(6deg)}}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
@keyframes flip{0%,40%{transform:scaleX(1)}60%,100%{transform:scaleX(-1)}}
@keyframes tail{0%,100%{transform:rotate(0)}50%{transform:rotate(-12deg)}}
@keyframes earl{0%,80%,100%{transform:rotate(0)}85%{transform:rotate(-10deg)}90%{transform:rotate(4deg)}}
@keyframes earr{0%,80%,100%{transform:rotate(0)}85%{transform:rotate(10deg)}90%{transform:rotate(-4deg)}}
@keyframes tilt{0%,100%{transform:rotate(0)}30%{transform:rotate(-4deg)}60%{transform:rotate(3deg)}}

.sparkles{position:absolute;inset:-20px;pointer-events:none}
.sparkle{position:absolute;width:18px;height:18px;color:var(--yellow);animation:twinkle 2.8s ease-in-out infinite;filter:drop-shadow(0 1px 0 rgba(184,93,14,.5))}
.sparkle.s1{left:2%;top:12%}.sparkle.s2{right:4%;top:2%;width:24px;height:24px;animation-delay:.5s;color:var(--orange)}
.sparkle.s3{left:-6%;top:58%;width:14px;height:14px;animation-delay:1.1s}.sparkle.s4{right:-4%;top:46%;animation-delay:1.6s}
.sparkle.s5{left:30%;top:-4%;width:12px;height:12px;animation-delay:2s;color:var(--red)}.sparkle.s6{right:18%;bottom:2%;width:14px;height:14px;animation-delay:.9s;color:var(--orange)}
.sparkle.s7{left:8%;bottom:6%;width:20px;height:20px;animation-delay:2.3s}.sparkle.s8{right:40%;top:30%;width:10px;height:10px;animation-delay:1.4s;color:#fff}
@keyframes twinkle{0%,100%{transform:scale(.4) rotate(0);opacity:.2}50%{transform:scale(1) rotate(45deg) translateY(-6px);opacity:1}}

/* Wandelende muis in de balk */
.walker{position:absolute;left:0;bottom:-5px;width:58px;height:32px;z-index:0;animation:walk 34s linear infinite;pointer-events:none}
.walker svg{width:100%;height:100%;display:block}
.w-leg{transform-box:fill-box;transform-origin:50% 0;animation:leg .5s ease-in-out infinite alternate}
.w-leg--b{animation-delay:-.5s}
.w-tail{transform-origin:14px 32px;animation:tail 1s ease-in-out infinite}
.w-head{transform-origin:60px 30px;animation:nod .5s ease-in-out infinite alternate}
@keyframes leg{from{transform:rotate(25deg)}to{transform:rotate(-25deg)}}
@keyframes nod{from{transform:translateY(0)}to{transform:translateY(1.5px)}}
@keyframes walk{0%{transform:translateX(-70px) scaleX(1)}47%{transform:translateX(calc(100vw + 10px)) scaleX(1)}50%{transform:translateX(calc(100vw + 10px)) scaleX(-1)}97%{transform:translateX(-70px) scaleX(-1)}100%{transform:translateX(-70px) scaleX(1)}}
.topbar{overflow:visible}
.brand,.mainnav{position:relative;z-index:2}

/* Muis die achter een boekje piept */
.book-item{position:relative}
.book{z-index:1}
.peek{position:absolute;top:8px;left:50%;width:76px;margin-left:-38px;z-index:0;transform:translateY(30px);transition:transform .45s cubic-bezier(.3,1.6,.5,1)}
.peek svg{display:block;width:100%}
.book-item:hover .peek,.book-item:focus-within .peek{transform:translateY(-52px) rotate(-6deg)}
.book-item:nth-child(even):hover .peek{transform:translateY(-52px) rotate(6deg)}
.book:hover .book__body{animation:hop .6s cubic-bezier(.3,1.5,.5,1)}
@keyframes hop{0%{transform:rotateY(-24deg)}50%{transform:rotateY(-10deg) translateY(-16px) rotateZ(-2deg)}100%{transform:rotateY(-8deg) translateY(-10px) rotateZ(-1.5deg)}}

/* Lezer + footer */
.reader__head{display:flex;align-items:center;gap:.6rem}
.mouse--mini{width:46px;height:48px;flex:none}
.mouse--end{width:44%;max-width:170px;margin:0 auto .3em;animation:bob 2.6s ease-in-out infinite}
.footer{position:relative}
.mouse--footer{width:70px;height:74px;margin:-52px auto 4px}

@media (max-width:640px){
  .hero{grid-template-columns:1fr;text-align:center;gap:.2rem}
  .hero__mascot{order:-1;width:140px;height:146px;margin:0 auto}
  .walker{width:44px;height:24px;bottom:-4px}
  .peek{width:60px;margin-left:-30px}
}
@media (prefers-reduced-motion:reduce){
  .mouse,.mouse *,.sparkle,.walker,.walker *,.book:hover .book__body{animation:none!important}
  .walker{display:none}
}

/* ---------- Fase 2: platte 2D-covers (geen rug, geen paginarand) ---------- */
.book{perspective:none;border-radius:14px}
.book__body{transform:none;transform-style:flat;transition:transform .45s cubic-bezier(.3,1.5,.5,1)}
.book__body::after,.book__cover::before,.book__pages,.book__shadow{display:none}
.book__cover{transform:none;border-radius:14px;box-shadow:0 10px 22px -8px rgba(70,35,10,.45),0 2px 0 rgba(70,35,10,.12)}
.book:hover .book__body,.book:focus-visible .book__body{transform:translateY(-10px) rotate(-2deg)}
.book:active .book__body{transform:translateY(-3px) scale(.98)}
.book:hover .book__body{animation:hop2 .55s cubic-bezier(.3,1.5,.5,1)}
@keyframes hop2{0%{transform:none}45%{transform:translateY(-18px) rotate(-3deg)}100%{transform:translateY(-10px) rotate(-2deg)}}
@media (max-width:640px){.book__body{transform:none}}
@media (prefers-reduced-motion:reduce){.book:hover .book__body{animation:none!important}}

/* ---------- Cover-scènes (handgetekende SVG, zachte lus; sneller bij hover) ---------- */
.scene,.cover-ph>.scene{position:absolute;inset:0;width:100%;height:100%;display:block;--sp:1}
.book:hover .scene,.book:focus-visible .scene{--sp:.45}
.scene *{transform-box:view-box}
.cover-ph--scene{padding:14px 12px 10px;justify-content:flex-start}
.cover-ph--scene>*:not(.scene){position:relative;z-index:2}
.cover-ph--scene .cover-ph__title{font-size:1.32rem;margin-top:.35rem;padding:0 .2rem;text-shadow:0 2px 0 rgba(0,0,0,.45),0 0 10px rgba(0,0,0,.35);-webkit-text-stroke:.4px rgba(0,0,0,.25)}
.cover-ph--scene .cover-ph__series{box-shadow:0 2px 0 rgba(0,0,0,.25)}
.cover-ph--scene .cover-ph__brand{margin-top:auto;background:rgba(255,255,255,.88);color:#8e1a15;padding:.1rem .55rem .1rem .15rem;border-radius:999px;font-size:.68rem;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.cover-ph--scene .cover-ph__brand img{width:22px;height:22px}
.preset-space .cover-ph--scene .cover-ph__brand,.preset-jungle .cover-ph--scene .cover-ph__brand{color:#1b1747}
.book:hover .book__cover{box-shadow:0 18px 26px -10px rgba(70,35,10,.5),0 2px 0 rgba(70,35,10,.12)}

/* bibliotheek: Mila met zaklamp */
.sc-beam{transform-origin:128px 214px;animation:sc-sweep calc(5s*var(--sp)) ease-in-out infinite alternate}
.sc-torch{transform-origin:116px 220px;animation:sc-torch calc(5s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-sweep{from{transform:rotate(-46deg)}to{transform:rotate(4deg)}}
@keyframes sc-torch{from{transform:rotate(-14deg)}to{transform:rotate(4deg)}}
.sc-glow{animation:sc-glow calc(5s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-glow{0%,60%{opacity:.35}100%{opacity:1}}
.sc-dust circle{transform-box:fill-box;transform-origin:center;animation:sc-twinkle calc(2.4s*var(--sp)) ease-in-out infinite}
.sc-dust circle:nth-child(2n){animation-delay:-.8s}.sc-dust circle:nth-child(3n){animation-delay:-1.6s}
.sc-mouse{animation:sc-bob calc(3s*var(--sp)) ease-in-out infinite}
.sc-mouse .sc-head{transform-origin:100px 222px;animation:sc-tilt calc(5s*var(--sp)) ease-in-out infinite}
.sc-tail{transform-origin:76px 248px;animation:sc-sway calc(2.6s*var(--sp)) ease-in-out infinite alternate}
.sc-blink{transform-box:fill-box;transform-origin:center;animation:sc-blink 5s infinite}
@keyframes sc-twinkle{0%,100%{opacity:.15;transform:scale(.5)}50%{opacity:1;transform:scale(1.3)}}
@keyframes sc-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes sc-tilt{0%,100%{transform:rotate(0)}35%{transform:rotate(-6deg)}70%{transform:rotate(5deg)}}
@keyframes sc-sway{from{transform:rotate(-8deg)}to{transform:rotate(8deg)}}
@keyframes sc-blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}

/* jungle: Lotte schommelt */
.sc-sloth{transform-origin:100px 114px;animation:sc-swing calc(6s*var(--sp)) ease-in-out infinite alternate}
.sc-sloth .sc-head{transform-origin:100px 190px;animation:sc-tilt calc(8s*var(--sp)) ease-in-out infinite}
@keyframes sc-swing{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}
.sc-vine{transform-origin:28px 112px;animation:sc-swing calc(7s*var(--sp)) ease-in-out infinite alternate-reverse}
.sc-leaf{transform-box:fill-box;transform-origin:center;animation:sc-fall calc(9s*var(--sp)) linear infinite}
.sc-leaf.l2{animation-delay:-3s;animation-duration:calc(11s*var(--sp))}.sc-leaf.l3{animation-delay:-6.5s}
@keyframes sc-fall{0%{transform:translate(0,0) rotate(0);opacity:0}8%{opacity:1}50%{transform:translate(-18px,130px) rotate(200deg)}90%{opacity:1}100%{transform:translate(12px,270px) rotate(400deg);opacity:0}}
.sc-fly{animation:sc-flypath calc(12s*var(--sp)) ease-in-out infinite}
.sc-wings{transform-box:fill-box;transform-origin:center;animation:sc-flap .22s ease-in-out infinite alternate}
@keyframes sc-flap{from{transform:scaleX(1)}to{transform:scaleX(.25)}}
@keyframes sc-flypath{0%{transform:translate(160px,240px)}25%{transform:translate(140px,200px) rotate(-10deg)}50%{transform:translate(170px,160px)}75%{transform:translate(150px,215px) rotate(10deg)}100%{transform:translate(160px,240px)}}

/* ruimte: Pip vertrekt */
.sc-star{transform-box:fill-box;transform-origin:center;animation:sc-twinkle calc(3s*var(--sp)) ease-in-out infinite}
.sc-star.st1{animation-delay:-.7s}.sc-star.st2{animation-delay:-1.5s}.sc-star.st3{animation-delay:-2.2s}
.sc-planet{animation:sc-pass calc(24s*var(--sp)) linear infinite}
@keyframes sc-pass{from{transform:translate(240px,120px) rotate(0)}to{transform:translate(-40px,250px) rotate(-40deg)}}
.sc-rocket{transform-origin:100px 200px;animation:sc-lift calc(2.4s*var(--sp)) ease-in-out infinite}
@keyframes sc-lift{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-9px) rotate(1deg)}}
.sc-flame{transform-origin:100px 236px;animation:sc-flicker .16s ease-in-out infinite alternate}
@keyframes sc-flicker{from{transform:scale(1,1)}to{transform:scale(.86,1.18)}}
.sc-smoke circle{transform-box:fill-box;transform-origin:center;animation:sc-puff calc(2.4s*var(--sp)) ease-in-out infinite}
.sc-smoke circle:nth-child(2n){animation-delay:-1.2s}
@keyframes sc-puff{0%,100%{transform:scale(.85);opacity:.75}50%{transform:scale(1.15);opacity:1}}

/* zee: Otto leest */
.sc-otto{animation:sc-bob calc(3.6s*var(--sp)) ease-in-out infinite}
.sc-arm{transform-box:fill-box;transform-origin:50% 0;animation:sc-wiggle calc(2.2s*var(--sp)) ease-in-out infinite alternate}
.sc-arm.a2{animation-delay:-.4s}.sc-arm.a3{animation-delay:-.9s}.sc-arm.a4{animation-delay:-1.3s}.sc-arm.a5{animation-delay:-1.7s}.sc-arm.a6{animation-delay:-2s}
@keyframes sc-wiggle{from{transform:rotate(-10deg)}to{transform:rotate(10deg)}}
.sc-obook{transform-origin:100px 240px;animation:sc-tilt calc(4s*var(--sp)) ease-in-out infinite}
.sc-weed{transform-box:fill-box;transform-origin:50% 100%;animation:sc-sway calc(4s*var(--sp)) ease-in-out infinite alternate}
.sc-weed.w2{animation-delay:-1.5s}.sc-weed.w3{animation-delay:-2.6s}
.sc-bubbles circle{animation:sc-rise calc(6s*var(--sp)) ease-in infinite}
.sc-bubbles .b2{animation-delay:-1.5s}.sc-bubbles .b3{animation-delay:-3s}.sc-bubbles .b4{animation-delay:-4.2s}.sc-bubbles .b5{animation-delay:-5s}
@keyframes sc-rise{0%{transform:translate(0,0);opacity:0}10%{opacity:1}50%{transform:translate(5px,-120px)}90%{opacity:.9}100%{transform:translate(-4px,-250px);opacity:0}}
.sc-fish.f1{animation:sc-swim1 calc(14s*var(--sp)) linear infinite}
.sc-fish.f2{animation:sc-swim2 calc(19s*var(--sp)) linear infinite;animation-delay:-8s}
@keyframes sc-swim1{0%{transform:translate(220px,118px)}50%{transform:translate(90px,126px)}100%{transform:translate(-40px,116px)}}
@keyframes sc-swim2{0%{transform:translate(230px,250px)}50%{transform:translate(100px,242px)}100%{transform:translate(-30px,252px)}}

@media (prefers-reduced-motion:reduce){
  .scene *{animation:none!important}
  .sc-planet{transform:translate(40px,215px)}.sc-fish.f1{transform:translate(150px,118px)}.sc-fish.f2{transform:translate(30px,248px)}.sc-fly{transform:translate(160px,235px)}
}

/* ---------- Menubalk (onder de rode balk, uit data/menu.json) ---------- */
.menubar{background:#fff7e3;border-bottom:3px solid #f0dfb8;box-shadow:0 2px 0 rgba(120,70,20,.06);position:relative;z-index:3}
.menubar__list{list-style:none;margin:0 auto;padding:.85rem 1.25rem .45rem;max-width:1200px;scroll-padding-inline:1.25rem;display:flex;gap:.45rem;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.menubar__list::-webkit-scrollbar{display:none}
.menubar__list li{flex:none;scroll-snap-align:start}
.menubar__item{display:flex;align-items:center;gap:.4rem;font-family:var(--f-title);font-weight:600;font-size:1.05rem;color:var(--red-d);text-decoration:none;padding:.38em .95em .38em .55em;border-radius:999px;border:2px solid transparent;transition:background .2s,transform .2s;--ic2:#fff3c4}
.menubar__item svg{width:26px;height:26px;color:var(--red-d);transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.menubar__item:hover{background:#ffe9a8}
.menubar__item:hover svg{transform:rotate(-10deg) scale(1.15)}
.menubar__item[aria-current="page"]{background:var(--red);color:#fff;border-color:var(--red-d);box-shadow:0 3px 0 var(--red-d);--ic2:var(--yellow)}
.menubar__item[aria-current="page"] svg{color:#fff}
.menubar__item:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
@media (max-width:640px){
  .menubar__list{padding:.7rem .8rem .45rem;scroll-padding-inline:.8rem;mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .menubar__item{font-size:.98rem}
}

/* Menu: schuif-hints (fades + pijltjes), aangestuurd door menu.js */
.menubar.mb-js .menubar__list{--mbl:#000;--mbr:#000;mask-image:linear-gradient(90deg,var(--mbl) 0,var(--mbl) 18px,#000 64px,#000 calc(100% - 64px),var(--mbr) calc(100% - 18px),var(--mbr) 100%);-webkit-mask-image:linear-gradient(90deg,var(--mbl) 0,var(--mbl) 18px,#000 64px,#000 calc(100% - 64px),var(--mbr) calc(100% - 18px),var(--mbr) 100%)}
.menubar.mb-prev .menubar__list{--mbl:transparent}
.menubar.mb-next .menubar__list{--mbr:transparent}
.menubar__more{position:absolute;top:50%;z-index:2;width:34px;height:34px;margin-top:-13px;padding:0;border-radius:50%;border:2px solid var(--sz-actshadow,var(--red-d));background:var(--sz-act,var(--red));color:var(--sz-actink,#fff);display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 0 var(--sz-actshadow,var(--red-d)),0 3px 8px rgba(0,0,0,.18);transition:transform .15s}
.menubar__more[hidden]{display:none}
.menubar__more svg{width:18px;height:18px}
.menubar__more--prev{left:4px}.menubar__more--prev svg{transform:scaleX(-1)}
.menubar__more--next{right:4px}
.menubar__more:active{transform:scale(.92)}
.menubar__more:focus-visible{outline:3px solid var(--sz-menuink,var(--orange));outline-offset:2px}
.menubar--nudge .menubar__list li{animation:mb-nudge 1.2s ease-in-out .5s 1}
.menubar--nudge .menubar__more--next{animation:mb-poke 1.2s ease-in-out .5s 1}
@keyframes mb-nudge{0%,100%{transform:translateX(0)}40%,55%{transform:translateX(-44px)}}
@keyframes mb-poke{0%,100%{transform:translateX(0)}40%,55%{transform:translateX(4px) scale(1.12)}}
@media (prefers-reduced-motion:reduce){.menubar--nudge .menubar__list li,.menubar--nudge .menubar__more--next{animation:none!important}}
@media print{.menubar__more{display:none}}

/* ---------- Welkomstpagina ---------- */
.welcome{max-width:1060px;margin:0 auto;padding:2.6rem 1.25rem 1rem;display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:center}
.welcome h1{font-family:var(--f-title);font-weight:700;color:var(--red);font-size:clamp(2rem,5vw,3.2rem);line-height:1.1;margin:.15em 0 .35em}
.welcome__brand{color:var(--orange);display:inline-block;animation:sc-bob 3s ease-in-out infinite}
.welcome__intro{font-size:1.18rem;max-width:34em;margin:0 0 1.2rem}
.welcome__mascot{width:260px;height:270px}
.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--f-title);font-weight:600;text-decoration:none;border-radius:999px;background:var(--red);color:#fff;padding:.6em 1.3em;box-shadow:0 4px 0 var(--red-d);transition:transform .15s,box-shadow .15s;border:0;cursor:pointer;font-size:1.05rem}
.btn svg{width:22px;height:22px;color:#fff}
.btn:hover{transform:translateY(-2px);box-shadow:0 6px 0 var(--red-d)}
.btn:active{transform:translateY(2px);box-shadow:0 2px 0 var(--red-d)}
.btn--big{font-size:1.25rem}
.btn--alt{background:var(--yellow);color:#5a3b00;box-shadow:0 4px 0 #d39b12}
.btn--alt svg{color:#5a3b00}
.tiles{max-width:1060px;margin:0 auto;padding:1rem 1.25rem 4rem}
.tiles__title{font-family:var(--f-title);color:var(--red-d);font-size:1.5rem;margin:0 0 1rem}
.tiles__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem}
.tile{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit;background:#fff;border-radius:22px;padding:1.1rem 1.2rem 1.2rem;border:3px solid #f0dfb8;box-shadow:0 6px 0 #f0dfb8;transition:transform .3s cubic-bezier(.3,1.5,.5,1),box-shadow .3s}
.tile:hover,.tile:focus-visible{transform:translateY(-6px) rotate(-1deg);box-shadow:0 12px 0 #f0dfb8}
.tile--bladwijzers:hover{transform:translateY(-6px) rotate(1deg)}
.tile__art{display:flex;align-items:center;justify-content:center;height:150px;border-radius:16px;margin-bottom:.8rem;background:linear-gradient(160deg,#ffe9a8,#ffd27a);overflow:hidden;position:relative}
.tile--bladwijzers .tile__art{background:linear-gradient(160deg,#cfe6ff,#9cc8f5)}
.tile__icon{width:96px;height:96px;color:var(--red-d);animation:sc-bob 2.6s ease-in-out infinite}
.tile__minis{display:flex;gap:.6rem;align-items:flex-end}
.mini{position:relative;display:block;width:68px;height:102px;border-radius:9px;overflow:hidden;background:linear-gradient(160deg,var(--c1),var(--c2));box-shadow:0 6px 12px -6px rgba(0,0,0,.45);transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.mini:nth-child(1){transform:rotate(-7deg)}.mini:nth-child(2){transform:translateY(-8px)}.mini:nth-child(3){transform:rotate(7deg)}
.tile:hover .mini:nth-child(1){transform:rotate(-12deg) translate(-6px,-6px)}.tile:hover .mini:nth-child(2){transform:translateY(-16px)}.tile:hover .mini:nth-child(3){transform:rotate(12deg) translate(6px,-6px)}
.mini .scene{--sp:1.3}
.mini__ic{width:60%;height:60%;margin:20%;color:#fff}
.tile__label{font-family:var(--f-title);font-weight:700;font-size:1.6rem;color:var(--red)}
.tile__intro{margin:.2rem 0 .9rem;font-size:1.05rem}
.tile__go{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;gap:.4rem;font-family:var(--f-title);font-weight:600;color:#fff;background:var(--red);padding:.4em 1em;border-radius:999px;box-shadow:0 3px 0 var(--red-d)}
.tile__go svg{width:18px;height:18px;color:#fff;transition:transform .3s}
.tile:hover .tile__go svg{transform:translateX(4px)}
.hero--compact{padding-top:1.6rem}
.hero--compact .hero__mascot{width:150px;height:156px}
@media (max-width:640px){
  .welcome{grid-template-columns:1fr;text-align:center;padding-top:1.4rem;gap:.4rem}
  .welcome__mascot{order:-1;margin:0 auto;width:170px;height:176px}
  .welcome__intro{margin:0 auto 1.1rem}
  .hero--compact .hero__mascot{width:110px;height:114px}
}
@media (prefers-reduced-motion:reduce){.welcome__brand,.tile__icon{animation:none!important}.tile,.mini,.btn{transition:none}}
.topbar{z-index:4}

/* ===== Covers: Agent Mo (spy) & Lina (code) ===== */
.preset-spy .cover-ph__title,.preset-code .cover-ph__title{text-shadow:0 2px 0 rgba(0,0,0,.45)}
.sc-win{animation:sc-win calc(4s*var(--sp)) steps(1) infinite}.sc-win.w1{animation-delay:-1.3s}.sc-win.w2{animation-delay:-2.6s;animation-duration:calc(6s*var(--sp))}
@keyframes sc-win{0%,60%{opacity:1}61%,100%{opacity:.25}}
.sc-spot{animation:sc-spot calc(7s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-spot{from{transform:translate(-60px,150px) scale(1.1)}to{transform:translate(60px,250px) scale(.9)}}
.sc-code text{animation:sc-codefloat calc(5s*var(--sp)) ease-in-out infinite}.sc-code .c2{animation-delay:-2.5s}
@keyframes sc-codefloat{0%,100%{opacity:.15;transform:translateY(4px)}50%{opacity:.9;transform:translateY(-4px)}}
.sc-prints ellipse{animation:sc-print calc(4s*var(--sp)) linear infinite;opacity:0}
.sc-prints .p2{animation-delay:calc(.5s*var(--sp))}.sc-prints .p3{animation-delay:calc(1s*var(--sp))}.sc-prints .p4{animation-delay:calc(1.5s*var(--sp))}
@keyframes sc-print{0%{opacity:0}10%,55%{opacity:.85}80%,100%{opacity:0}}
.sc-mo{animation:sc-bob calc(3.4s*var(--sp)) ease-in-out infinite}
.sc-mo .sc-head{transform-origin:100px 214px;animation:sc-tilt calc(6s*var(--sp)) ease-in-out infinite}
.sc-mag{transform-origin:124px 238px;animation:sc-search calc(3s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-search{from{transform:rotate(-10deg)}to{transform:rotate(18deg) translateY(4px)}}
.sc-glint{animation:sc-glint calc(3.5s*var(--sp)) ease-in-out infinite}
@keyframes sc-glint{0%,80%,100%{opacity:0}88%{opacity:1}}
.sc-robot{animation:sc-bob calc(2.8s*var(--sp)) ease-in-out infinite}
.sc-led{animation:sc-led calc(1.4s*var(--sp)) steps(1) infinite}
@keyframes sc-led{0%,50%{fill:#ff5ab1}51%,100%{fill:#39f2a0}}
.sc-eyes{transform-box:fill-box;transform-origin:center;animation:sc-blink calc(4s*var(--sp)) linear infinite}
.sc-rbook{transform-origin:100px 230px;animation:sc-tilt calc(4s*var(--sp)) ease-in-out infinite}
.sc-bits text{animation:sc-rise2 calc(6s*var(--sp)) linear infinite;opacity:0}
.sc-bits .k2{animation-delay:calc(-1.5s*var(--sp))}.sc-bits .k3{animation-delay:calc(-3s*var(--sp))}.sc-bits .k4{animation-delay:calc(-4.5s*var(--sp))}
@keyframes sc-rise2{0%{opacity:0;transform:translateY(20px)}20%,70%{opacity:.85}100%{opacity:0;transform:translateY(-50px)}}
.sc-cursor{animation:sc-led2 1s steps(1) infinite}
@keyframes sc-led2{0%,50%{opacity:1}51%,100%{opacity:0}}
@media (prefers-reduced-motion:reduce){
  .sc-win,.sc-spot,.sc-code text,.sc-prints ellipse,.sc-mo,.sc-mo .sc-head,.sc-mag,.sc-glint,.sc-robot,.sc-led,.sc-eyes,.sc-rbook,.sc-bits text,.sc-cursor{animation:none!important}
  .sc-prints ellipse,.sc-bits text{opacity:.7}.sc-spot{transform:translate(0,200px)}
}

/* ===== Cover: Het Dodenorkest (abbey) ===== */
.preset-abbey .cover-ph__title{margin-top:1.3rem;text-shadow:0 2px 0 rgba(0,0,0,.6),0 0 12px rgba(184,255,74,.35)}
.sc-skel{transform-origin:38px 268px;animation:sc-dance calc(1.6s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-dance{from{transform:rotate(-7deg) translateY(0)}to{transform:rotate(7deg) translateY(-4px)}}
.sc-drum{animation:sc-bob calc(1.2s*var(--sp)) ease-in-out infinite}
.sc-skeyes,.sc-jeyes,.sc-oneyes{transform-box:fill-box;transform-origin:center;animation:sc-blink calc(4.5s*var(--sp)) linear infinite}
.sc-jeyes{animation-delay:-1.7s}.sc-oneyes{animation-duration:calc(6s*var(--sp));animation-delay:-3s}
.sc-jo{transform-origin:100px 270px;animation:sc-josway calc(3.2s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-josway{from{transform:rotate(-2deg)}to{transform:rotate(2deg)}}
.sc-baton{transform-origin:108px 207px;animation:sc-baton calc(.9s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-baton{from{transform:rotate(-14deg)}to{transform:rotate(16deg)}}
.sc-onn{transform-origin:100px 260px;animation:sc-onn calc(5s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-onn{from{transform:scale(.97)}to{transform:scale(1.04)}}
.sc-notes g{animation:sc-rise2 calc(4.5s*var(--sp)) linear infinite;opacity:0}
.sc-notes .n2{animation-delay:calc(-1.5s*var(--sp))}.sc-notes .n3{animation-delay:calc(-3s*var(--sp))}
.sc-abglow{animation:sc-abglow calc(3s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-abglow{from{opacity:.35}to{opacity:1}}
.sc-bat{animation:sc-batfly calc(9s*var(--sp)) ease-in-out infinite}
@keyframes sc-batfly{0%,100%{transform:translate(0,0)}25%{transform:translate(40px,-14px)}50%{transform:translate(90px,4px)}75%{transform:translate(40px,10px)}}
@media (prefers-reduced-motion:reduce){
  .sc-skel,.sc-drum,.sc-skeyes,.sc-jeyes,.sc-oneyes,.sc-jo,.sc-baton,.sc-onn,.sc-notes g,.sc-abglow,.sc-bat{animation:none!important}
  .sc-notes g{opacity:.8}.sc-abglow{opacity:.8}
}

/* ===== Cover: Het (niet) gewoon zesde (school) ===== */
.preset-school .cover-ph__series{align-self:flex-start}
.preset-school .cover-ph--scene .cover-ph__title{font-size:1.1rem;margin-top:.3rem;text-shadow:0 2px 0 rgba(0,0,0,.55),0 0 10px rgba(0,0,0,.4)}
.preset-school .cover-ph__credit{margin-top:auto;margin-bottom:.25rem}
.preset-school .cover-ph--scene .cover-ph__credit+.cover-ph__brand{margin-top:0}
@media (max-width:640px){.preset-school .cover-ph--scene .cover-ph__title{font-size:.86rem}}
.sc-zkey{transform-box:fill-box;transform-origin:center;animation:sc-zfloat calc(3.4s*var(--sp)) ease-in-out infinite alternate}
@keyframes sc-zfloat{from{transform:translateY(-3px) rotate(-6deg)}to{transform:translateY(3px) rotate(6deg)}}
.sc-zkey.k2,.sc-zkey.k6{animation-delay:calc(-.9s*var(--sp))}.sc-zkey.k3,.sc-zkey.k7{animation-delay:calc(-1.8s*var(--sp))}.sc-zkey.k4,.sc-zkey.k8{animation-delay:calc(-2.7s*var(--sp))}
.sc-zglint{animation:sc-glint calc(3s*var(--sp)) linear infinite;opacity:0}
.sc-zkey.k2 .sc-zglint,.sc-zkey.k5 .sc-zglint{animation-delay:-1s}.sc-zkey.k3 .sc-zglint,.sc-zkey.k8 .sc-zglint{animation-delay:-2s}
.sc-zdoor{transform-origin:100px 262px;animation:sc-zrattle calc(4.5s*var(--sp)) linear infinite}
@keyframes sc-zrattle{0%,84%,100%{transform:rotate(0)}86%{transform:rotate(-.8deg)}88%{transform:rotate(.8deg)}90%{transform:rotate(-.6deg)}92%{transform:rotate(.4deg)}94%{transform:rotate(0)}}
.sc-zlock{transform-origin:118px 182px;animation:sc-zjig calc(4.5s*var(--sp)) linear infinite}
@keyframes sc-zjig{0%,84%,100%{transform:rotate(0)}87%{transform:rotate(14deg)}90%{transform:rotate(-12deg)}93%{transform:rotate(6deg)}96%{transform:rotate(0)}}
.sc-zlight{animation:sc-abglow calc(2.2s*var(--sp)) ease-in-out infinite alternate}
.sc-znote{animation:sc-znote calc(7s*var(--sp)) ease-in-out infinite}
@keyframes sc-znote{0%{transform:translate(215px,150px) rotate(0)}45%{transform:translate(120px,118px) rotate(-30deg)}75%,100%{transform:translate(-20px,170px) rotate(-70deg)}}
.sc-zcoat{transform-origin:17px 134px;animation:sc-sway calc(5s*var(--sp)) ease-in-out infinite alternate}
@media (prefers-reduced-motion:reduce){
  .sc-zkey,.sc-zglint,.sc-zdoor,.sc-zlock,.sc-zlight,.sc-znote,.sc-zcoat{animation:none!important}
  .sc-zglint{opacity:0}.sc-zlight{opacity:.8}.sc-znote{transform:translate(160px,62px) rotate(-12deg)}
}

/* ===== Tekstboek (geen prenten): rustige leesbladzijde + briefje ===== */
.page--txt{justify-content:center;padding:10% 10% 12%;line-height:1.62;text-align:left;hyphens:manual;text-wrap:pretty}
.page--txt .page__text{margin:auto 0}
.page--txt .page__text p{margin:0 0 .85em}
.page--txt:not(.page--letter) .page__text p:first-child::first-letter{font-family:var(--f-title);font-weight:700;font-size:1.4em;line-height:0;color:var(--pacc)}
.page--txt .page__text p:last-child{margin-bottom:0}
.txt-letter{--lh:1.55em;font-size:.94em;line-height:var(--lh);background:#fffbea;color:#22262e;padding:var(--lh) 1.1em var(--lh) 2.1em;border-radius:3px;transform:rotate(-1deg);
  background-image:linear-gradient(90deg,transparent 1.45em,rgba(200,60,50,.45) 1.45em,rgba(200,60,50,.45) calc(1.45em + 2px),transparent calc(1.45em + 2px)),repeating-linear-gradient(transparent 0 calc(var(--lh) - 1px),rgba(70,110,180,.28) calc(var(--lh) - 1px) var(--lh));
  box-shadow:0 2px 0 rgba(0,0,0,.08),0 10px 22px rgba(30,20,10,.22)}
.page--txt .txt-letter p{margin:0}
.page--txt .txt-letter p+p{margin-top:var(--lh)}
.txt-letter::before{content:"";position:absolute;top:-.75em;left:50%;width:4.2em;height:1.4em;transform:translateX(-50%) rotate(3deg);background:rgba(255,214,90,.75);box-shadow:0 1px 2px rgba(0,0,0,.12)}

/* ===== Rol-muizen (outfits) ===== */
.mouse .m-hat{transform-origin:100px 42px;animation:hat-tip 5s ease-in-out infinite}
@keyframes hat-tip{0%,80%,100%{transform:rotate(0)}88%{transform:rotate(-8deg) translateY(-4px)}}
.mouse .m-needle{transform-origin:178px 78px;animation:needle 3s ease-in-out infinite}
@keyframes needle{0%,100%{transform:rotate(-30deg)}40%{transform:rotate(40deg)}70%{transform:rotate(-10deg)}}
.mouse .m-route{animation:route 1.6s linear infinite}
@keyframes route{from{stroke-dashoffset:0}to{stroke-dashoffset:-20}}
.mouse .m-glint{animation:sc-glint 3.2s ease-in-out infinite}
.mouse .m-screenglow{animation:glowpulse 2.4s ease-in-out infinite}
@keyframes glowpulse{0%,100%{opacity:.12}50%{opacity:.3}}
.mouse .m-bits text{animation:sc-rise2 4.5s linear infinite;opacity:0}.mouse .m-bits .b2{animation-delay:-1.5s}.mouse .m-bits .b3{animation-delay:-3s}
.mouse--hacker .m-head{animation:nod 1.2s ease-in-out infinite}
@keyframes nod{0%,100%{transform:rotate(0)}50%{transform:rotate(3deg) translateY(2px)}}
.mouse--hacker .m-head{transform-origin:100px 120px}
.mouse--hacker .m-cheese{animation:glowpulse2 2.4s ease-in-out infinite}
@keyframes glowpulse2{0%,100%{opacity:.6}50%{opacity:1}}

/* ===== Categoriepagina's ===== */
.cat-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:1fr auto;align-items:center;gap:1.5rem;padding:2.5rem max(1.25rem,calc((100% - 1000px)/2)) 2rem;margin-bottom:1rem}
.cat-decor{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cat-hero__text,.cat-hero__mascot{position:relative}
.cat-hero__mascot{width:320px;height:270px}
.cat-hero h1{font-family:var(--f-title);font-weight:700;font-size:clamp(1.9rem,4.6vw,3rem);line-height:1.1;margin:.15em 0 .35em}
.cat-hero__age{display:inline-block;font-size:.6em;vertical-align:middle;padding:.15em .55em;border-radius:999px;transform:rotate(-4deg)}
.cat-hero__intro{font-size:1.12rem;max-width:36em;margin:0 0 .6rem}
.cat-hero__count{margin:0;font-weight:600}
.cat-hero__tag{display:inline-block;margin:0;font-family:var(--f-title);font-weight:600;padding:.25em .8em;border-radius:999px}
.cat-empty{text-align:center;font-size:1.2rem;padding:2rem}
/* avonturiers: schatkaart */
.cat--avonturiers{background:#f6e7c1;color:#4a3216}
.cat-hero.cat--avonturiers{border-bottom:6px dashed #c9a46a}
.cat--avonturiers h1{color:#8a4a12}.cat--avonturiers .cat-hero__age{background:#e04b4b;color:#fff}
.cat--avonturiers .cat-hero__tag{background:#4f9b3f;color:#fff}
.cat--avonturiers a{color:#8a4a12}
.cd-trail{animation:trail 1.68s linear infinite}
@keyframes trail{from{stroke-dashoffset:0}to{stroke-dashoffset:-28}}
.cd-needle{animation:needle 4s ease-in-out infinite;transform-origin:0 0}
.cd-x{transform-box:fill-box;transform-origin:center;animation:xpulse 1.8s ease-in-out infinite}
@keyframes xpulse{0%,100%{transform:scale(1)}50%{transform:scale(1.2)}}
.cd-palm{transform-origin:1110px 200px;animation:sc-sway 4s ease-in-out infinite alternate}
/* agenten: nacht, schijnwerper, voetsporen */
.cat--agenten{background:linear-gradient(160deg,#14162e,#2b2f5c 60%,#3b3070);color:#e8e6f5}
.cat--agenten h1{color:#ffd23f}.cat--agenten .cat-hero__age{background:#ffd23f;color:#14162e}
.cat--agenten .cat-hero__tag{background:#15151f;color:#7ef0ff;border:2px dashed #7ef0ff;font-family:monospace;letter-spacing:.05em}
.cat--agenten a{color:#7ef0ff}
.cd-spot{animation:cd-spot 9s ease-in-out infinite alternate}
@keyframes cd-spot{from{transform:translateX(-200px)}to{transform:translateX(700px)}}
.cd-prints g{opacity:0;animation:sc-print 6s linear infinite}
.cd-prints .p2{animation-delay:.5s}.cd-prints .p3{animation-delay:1s}.cd-prints .p4{animation-delay:1.5s}.cd-prints .p5{animation-delay:2s}.cd-prints .p6{animation-delay:2.5s}
.cd-code text{animation:sc-codefloat 6s ease-in-out infinite}.cd-code text:nth-child(2){animation-delay:-2s}.cd-code text:nth-child(3){animation-delay:-4s}
.cd-mag{animation:cd-mag 8s ease-in-out infinite alternate}
@keyframes cd-mag{from{transform:translate(690px,90px) scale(.7)}to{transform:translate(770px,130px) scale(.7) rotate(15deg)}}
/* hackers: neon terminal */
.cat--hackers{background:radial-gradient(ellipse at 50% 110%,#0f3a3a,#0b1622 60%);color:#d8fff0}
.cat--hackers h1{color:#39f2a0;text-shadow:0 0 18px rgba(57,242,160,.55)}
.cat--hackers .cat-hero__age{background:#ff5ab1;color:#fff;box-shadow:0 0 14px rgba(255,90,177,.6)}
.cat--hackers a{color:#7ef0ff}
.cat-hero__term{display:inline-block;margin:0;font-family:monospace;font-size:1.1rem;background:#06101a;border:2px solid #39f2a0;border-radius:8px;padding:.35em .8em;color:#39f2a0;box-shadow:0 0 16px rgba(57,242,160,.35)}
.cat-hero__typed{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:bottom;border-right:.6em solid #39f2a0;animation:typing 4s steps(18) infinite,caret .8s steps(1) infinite;max-width:18ch}
@keyframes typing{0%{width:0}50%,90%{width:18ch}100%{width:18ch}}
@keyframes caret{50%{border-color:transparent}}
.cd-fall text{animation:cd-fall 7s linear infinite;opacity:0}
.cd-fall .f1{animation-delay:-1.4s;animation-duration:9s}.cd-fall .f2{animation-delay:-2.8s}.cd-fall .f3{animation-delay:-4.2s;animation-duration:8s}.cd-fall .f4{animation-delay:-5.6s}
@keyframes cd-fall{0%{transform:translateY(-20px);opacity:0}15%{opacity:.5}85%{opacity:.35}100%{transform:translateY(420px);opacity:0}}
@media (max-width:640px){.cat-hero{grid-template-columns:1fr;text-align:center}.cat-hero__mascot{width:250px;height:212px;margin:0 auto;grid-row:1}.cat-hero__intro{margin-inline:auto}}
@media (prefers-reduced-motion:reduce){
  .mouse .m-hat,.mouse .m-needle,.mouse .m-route,.mouse .m-glint,.mouse .m-screenglow,.mouse .m-bits text,.mouse--hacker .m-head,.mouse--hacker .m-cheese,
  .cd-trail,.cd-needle,.cd-x,.cd-palm,.cd-spot,.cd-prints g,.cd-code text,.cd-mag,.cat-hero__typed,.cd-fall text{animation:none!important}
  .cd-prints g,.mouse .m-bits text{opacity:.7}.cd-fall text{opacity:.3;transform:translateY(200px)}.cat-hero__typed{width:auto}
}
/* welkomsttegels voor categorieën */
.tile__cat{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center}
.mouse--tile{width:140px;height:146px;animation:sc-bob 3s ease-in-out infinite}
.tile:hover .mouse--tile{animation-duration:1.2s}
.tile__age{position:absolute;top:10px;right:12px;font-family:var(--f-title);font-weight:700;font-size:1.3rem;padding:.1em .55em;border-radius:999px;transform:rotate(6deg)}
.tile__cat.cat--avonturiers .tile__age{background:#e04b4b;color:#fff}
.tile__cat.cat--agenten .tile__age{background:#ffd23f;color:#14162e}
.tile__cat.cat--hackers .tile__age{background:#ff5ab1;color:#fff}
.tile--cat .tile__art{background:none}
@media (prefers-reduced-motion:reduce){.mouse--tile{animation:none}}

/* ===== Voorleesverhaaltjes (Kleine superheldjes 3+) ===== */
.reader--big .spread{--pw:min(44vw,calc((100dvh - 140px)*.7),600px)}
.reader--big .spread.single{--pw:min(calc(100vw - 120px),calc((100dvh - 150px)*.68),600px)}
.page--pic{padding:5% 5% 9%;justify-content:flex-start}
.page--pic::before{display:none}
.page__scene{flex:none;border-radius:14px;overflow:hidden;box-shadow:0 4px 0 color-mix(in srgb,var(--pacc) 35%,transparent);position:relative}
.page__scene .pgscene{display:block;width:100%;height:auto}
.page--pic .page__text{margin:auto 0;text-align:center}
.reader--big .page{font-family:var(--f-title);font-weight:600;line-height:1.3}
.reader--big .page--pic .page__text p{font-size:calc(var(--pw)*.072);margin:0 0 .35em}
.reader--big .page--pic .page__text p+p{color:var(--pacc)}
.reader--big .page--title h3{font-size:calc(var(--pw)*.09)}
.reader__speak{font-size:1rem;padding:.5em 1.1em;background:var(--yellow);color:#3b2a1e;box-shadow:0 4px 0 #c98f00;margin-left:auto}
.reader__speak svg{width:24px;height:24px}
.reader__speak.is-speaking{background:#fff;animation:sc-bob 1s ease-in-out infinite}
.reader__speak[hidden]{display:none}

/* pagina-prenten animaties */
.pgscene .pg-clouds g{animation:pg-drift 14s linear infinite alternate}.pgscene .pg-clouds .c2{animation-duration:18s;animation-direction:alternate-reverse}.pgscene .pg-clouds .c3{animation-duration:11s}
@keyframes pg-drift{from{transform:translateX(-20px)}to{transform:translateX(24px)}}
.pgscene .pg-sm,.scene .pg-sm{animation:pg-fly 2.4s ease-in-out infinite}
@keyframes pg-fly{0%,100%{transform:translate(-6px,4px) rotate(-3deg)}50%{transform:translate(6px,-6px) rotate(2deg)}}
.pg-cape{transform-origin:-6px -10px;animation:pg-flutter .5s ease-in-out infinite alternate}
@keyframes pg-flutter{from{transform:scaleY(1) skewX(0)}to{transform:scaleY(.8) skewX(8deg)}}
.pg-cape2,.mouse .m-cape{transform-box:fill-box;transform-origin:50% 0;animation:pg-flutter2 1.1s ease-in-out infinite alternate}
@keyframes pg-flutter2{from{transform:skewX(-6deg)}to{transform:skewX(6deg) scaleX(1.06)}}
.pg-speed{animation:pg-speed .6s linear infinite}
@keyframes pg-speed{from{transform:translateX(20px);opacity:0}50%{opacity:.9}to{transform:translateX(-30px);opacity:0}}
.pg-star{transform-box:fill-box;transform-origin:center;animation:sc-twinkle 2.2s ease-in-out infinite}.pg-star.s1{animation-delay:-.6s}.pg-star.s2{animation-delay:-1.2s}.pg-star.s3{animation-delay:-1.7s}
.pg-rays{animation:pg-spin 30s linear infinite}
@keyframes pg-spin{to{transform:rotate(360deg)}}
.pg-smstand{animation:pg-hero 2.6s ease-in-out infinite}
@keyframes pg-hero{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.pg-smhead,.pg-bhead{transform-box:fill-box;transform-origin:50% 100%;animation:sc-tilt 4s ease-in-out infinite}
.pg-shake{transform-box:fill-box;transform-origin:50% 100%;animation:pg-shake 1.6s ease-in-out infinite}
@keyframes pg-shake{0%,100%{transform:rotate(0)}20%{transform:rotate(-6deg)}40%{transform:rotate(6deg)}60%{transform:rotate(0)}}
.pg-ktail{transform-box:fill-box;transform-origin:0 100%;animation:sc-sway 1s ease-in-out infinite alternate}
.pg-crown{transform-box:fill-box;transform-origin:50% 100%;animation:sc-sway 5s ease-in-out infinite alternate}
.pg-bubble{transform-box:fill-box;transform-origin:20% 100%;animation:pg-pop 1.4s ease-in-out infinite}
@keyframes pg-pop{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.pg-float{animation:sc-bob 1.8s ease-in-out infinite}
.pg-ripple ellipse{transform-box:fill-box;transform-origin:center;animation:pg-ripple 2s ease-out infinite}.pg-ripple .r2{animation-delay:1s}
@keyframes pg-ripple{from{transform:scale(.6);opacity:1}to{transform:scale(2.6);opacity:0}}
.pg-duck{transform-box:fill-box;transform-origin:50% 100%;animation:sc-tilt 3s ease-in-out infinite}
.pg-breathe{transform-box:fill-box;transform-origin:50% 100%;animation:pg-breathe 3s ease-in-out infinite}
@keyframes pg-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
.pg-zzz text{animation:pg-z 3s ease-in-out infinite;opacity:0}.pg-zzz .z2{animation-delay:1s}.pg-zzz .z3{animation-delay:2s}
@keyframes pg-z{0%{opacity:0;transform:translate(0,10px)}30%,70%{opacity:1}100%{opacity:0;transform:translate(10px,-14px)}}
.pg-cape3{transform-box:fill-box;transform-origin:50% 0;animation:sc-sway 3s ease-in-out infinite alternate}
.pg-moon{animation:sc-glow 4s ease-in-out infinite alternate}
.pg-pow{transform-box:fill-box;transform-origin:center;animation:pg-powa 1.6s cubic-bezier(.3,1.6,.5,1) infinite}
@keyframes pg-powa{0%,100%{transform:scale(1) rotate(-4deg)}50%{transform:scale(1.15) rotate(4deg)}}
.pg-jump{animation:pg-jump 1.4s cubic-bezier(.3,1.4,.5,1) infinite}
@keyframes pg-jump{0%,100%{transform:translateY(0)}40%{transform:translateY(-16px)}}
.pg-bfist{transform-box:fill-box;transform-origin:0 100%;animation:pg-fist 1.4s ease-in-out infinite}
@keyframes pg-fist{0%,100%{transform:rotate(0)}50%{transform:rotate(-10deg)}}
.pg-blocks .bk{animation:pg-drop 3s cubic-bezier(.3,1.5,.5,1) infinite}.pg-blocks .b1{animation-delay:.25s}.pg-blocks .b2{animation-delay:.5s}
@keyframes pg-drop{0%{transform:translateY(-40px);opacity:0}20%,85%{transform:translateY(0);opacity:1}100%{opacity:1}}
.pg-brush{transform-box:fill-box;transform-origin:0 100%;animation:pg-brush .35s ease-in-out infinite alternate}
@keyframes pg-brush{from{transform:translate(-3px,0) rotate(-6deg)}to{transform:translate(3px,-2px) rotate(6deg)}}
.pg-bubbles circle{animation:sc-rise2 2.6s linear infinite;opacity:0}.pg-bubbles .b2{animation-delay:-.6s}.pg-bubbles .b3{animation-delay:-1.3s}.pg-bubbles .b4{animation-delay:-1.9s}
.pg-hug{transform-box:fill-box;transform-origin:50% 100%;animation:pg-breathe 2s ease-in-out infinite}
.pg-hearts path{animation:sc-rise2 3s linear infinite;opacity:0}.pg-hearts .h2{animation-delay:-1s}.pg-hearts .h3{animation-delay:-2s}
.pg-beye{transform-box:fill-box;transform-origin:center;animation:sc-blink 4s linear infinite}
/* covers hero/bear: sneller bij hover via --sp */
.scene .pg-sm{animation-duration:calc(2.4s*var(--sp))}.scene .pg-jump{animation-duration:calc(1.6s*var(--sp))}
/* superhelden categorie */
.cat--superhelden{background:linear-gradient(160deg,#4fb3ff,#2e6bd6 70%);color:#fff}
.cat--superhelden h1{color:#ffd23f;text-shadow:0 4px 0 #e23b3b,0 6px 12px rgba(0,0,0,.25);-webkit-text-stroke:1px #a81f1f}
.cat--superhelden .cat-hero__age{background:#e23b3b;color:#fff;box-shadow:0 3px 0 #a81f1f}
.cat--superhelden .cat-hero__tag{background:#ffd23f;color:#e23b3b;font-weight:700;transform:rotate(-3deg)}
.cat--superhelden a{color:#fff3a8}
.tile__cat.cat--superhelden .tile__age{background:#e23b3b;color:#fff}
.mouse--hero .m-fist,.mouse .m-fist{transform-origin:146px 128px}
.mouse .m-pow{transform-box:fill-box;transform-origin:center;animation:pg-powa 1.6s cubic-bezier(.3,1.6,.5,1) infinite}
@media (prefers-reduced-motion:reduce){
  .pgscene *,.scene .pg-sm,.scene .pg-jump,.scene .pg-cape,.scene .pg-cape2,.scene .pg-star,.scene .pg-rays,.scene .pg-pow,.scene .pg-bfist,.scene .pg-smhead,.scene .pg-bhead,.mouse .m-cape,.mouse .m-pow,.cat-decor .pg-rays,.cat-decor .pg-pow,.cat-decor .pg-star,.reader__speak.is-speaking{animation:none!important}
  .pg-zzz text,.pg-bubbles circle,.pg-hearts path{opacity:.8}
}
@media (max-width:640px){.reader--big .spread.single{--pw:min(calc(100vw - 36px),calc((100dvh - 210px)*.68),600px)}}

/* ===== Bladwijzers ===== */
.bm-hero{max-width:1060px;margin:0 auto;padding:2.4rem 1.25rem .5rem}
.bm-hero h1{font-family:var(--f-title);font-weight:700;color:var(--red);font-size:clamp(2rem,5vw,3rem);margin:.1em 0 .3em}
.bm-hero p{font-size:1.15rem;max-width:40em}
.welcome__hi{font-family:var(--f-title);color:var(--orange);font-weight:600;margin:0}
.bm-list,.designer{max-width:1060px;margin:0 auto;padding:1.5rem 1.25rem}
.bm-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:1.2rem}
.bm-card{background:#fff;border-radius:18px;padding:1rem;box-shadow:0 5px 0 #f0dcb8;border:3px solid #f6e7c8;text-align:center}
.bm-card__imgs{display:flex;gap:.5rem;justify-content:center}
.bm-card__imgs img{width:46%;height:auto;border-radius:6px;box-shadow:0 4px 10px rgba(0,0,0,.18);transition:transform .2s}
.bm-card__imgs img:first-child{transform:rotate(-3deg)}.bm-card__imgs img:last-child{transform:rotate(3deg)}
.bm-card:hover .bm-card__imgs img{transform:rotate(0) translateY(-4px)}
.bm-card h3{font-family:var(--f-title);color:var(--red-d);margin:.8rem 0 .1rem;font-size:1.3rem}
.bm-card__slogan{margin:0 0 .7rem;font-style:italic}
.bm-card__dl{margin:0;font-size:.85rem;display:flex;flex-direction:column;align-items:center;gap:.3rem}.bm-card__dl .btn{font-size:.95rem;margin-bottom:.5rem}
.bm-card__svg{color:var(--red-d)}
.bm-tips{margin-top:1.8rem;background:#fff8e7;border:3px dashed #f0c86a;border-radius:18px;padding:1rem 1.4rem}
.bm-tips h3{font-family:var(--f-title);margin:.2rem 0 .4rem;color:var(--red-d)}
.designer__intro{margin-top:-.4rem}
.designer__grid{display:grid;grid-template-columns:1fr 300px;gap:2rem;align-items:start}
.designer__form fieldset{border:3px solid #f6e7c8;border-radius:18px;background:#fff;margin:0 0 1rem;padding:.8rem 1.1rem 1rem}
.designer__form legend{font-family:var(--f-title);font-weight:700;color:var(--red-d);padding:0 .4rem;font-size:1.1rem}
.designer__form label{font-weight:700;font-size:.95rem}
.dz-full{display:block;margin:.5rem 0}
.dz-full input[type=text],.dz-full input[type=file],.dz-full input[type=range]{display:block;width:100%;margin-top:.25rem;font:inherit;font-weight:400}
.designer__form input[type=text],.designer__form select{padding:.45em .6em;border:2px solid #e3cfa6;border-radius:10px;font:inherit;font-weight:400;background:#fffdf7}
.dz-row{display:flex;flex-wrap:wrap;gap:1rem;margin:.5rem 0}.dz-row label{display:flex;align-items:center;gap:.5rem}
.dz-row input[type=color]{width:46px;height:36px;border:2px solid #e3cfa6;border-radius:8px;padding:0;background:none}
.dz-check{display:flex;align-items:center;gap:.5rem;margin:.6rem 0}
.dz-templates{display:flex;flex-wrap:wrap;gap:.6rem}
.dz-tpl{display:flex;flex-direction:column;align-items:center;gap:.2rem;cursor:pointer;font-size:.8rem}
.dz-tpl input{position:absolute;opacity:0;pointer-events:none}
.dz-tpl img,.dz-tpl__plain{width:44px;height:132px;border-radius:6px;border:3px solid transparent;box-shadow:0 2px 6px rgba(0,0,0,.2);object-fit:cover}
.dz-tpl__plain{display:block;background:repeating-linear-gradient(45deg,#4fb3ff 0 8px,#7cc8ff 8px 16px)}
.dz-tpl input:checked~img,.dz-tpl input:checked~.dz-tpl__plain{border-color:var(--red);transform:translateY(-3px)}
.dz-tpl input:focus-visible~img,.dz-tpl input:focus-visible~.dz-tpl__plain{outline:3px solid var(--orange);outline-offset:2px}
.dz-plain{display:none}.is-plain .dz-plain{display:flex}
.dz-stickers{display:flex;flex-wrap:wrap;gap:.5rem}
.dz-st{font-size:1.6rem;width:52px;height:52px;border-radius:14px;border:3px solid #f6e7c8;background:#fffdf7;cursor:pointer;transition:transform .15s}
.dz-st:hover{transform:scale(1.12) rotate(-6deg)}
.dz-hint{font-size:.9rem;margin:.5rem 0}
.btn--small{font-size:.9rem;padding:.45em 1em}
.designer__preview{position:sticky;top:1rem;text-align:center}
.dz-canvas{width:200px;height:600px;border-radius:8px;box-shadow:0 10px 26px rgba(0,0,0,.25);touch-action:none;cursor:grab;background:#eee}
.designer__preview .dz-check{justify-content:center}
.designer__preview p{margin:.5rem 0}
.dz-status{min-height:1.4em;font-weight:700;color:var(--red-d)}
@media (max-width:760px){.designer__grid{grid-template-columns:1fr}.designer__preview{position:static;order:-1}.dz-canvas{width:160px;height:480px}}

/* ===== 5 kleine katjes (serie van Haylie) ===== */
svg .kt-cat,svg .kt-tail,svg .kt-head,svg .kt-eyes,svg .kt-point,svg .kt-steam path,svg .kt-stink path,svg .kt-drop,svg .kt-sun,svg .kt-flower,svg .kt-bfly,svg .kt-wing,svg .kt-hearts path,svg .kt-roll,svg .kt-spin,svg .kt-tagw,svg .kt-vase,svg .kt-pop,svg .kt-shards,svg .kt-scribble,svg .kt-bush,svg .kt-fly,svg .kt-bubble2 circle,svg .kt-whoosh,svg .kt-shoutlines,svg .kt-curtain{transform-box:fill-box}
svg .kt-cat{transform-origin:50% 100%}
svg .kt-bob{animation:kt-bob 2.2s ease-in-out infinite}
svg .kt-hop{animation:kt-hop 1.3s cubic-bezier(.3,0,.4,1) infinite}
svg .kt-d2{animation-delay:-.6s}
svg .kt-tremble{animation:kt-tremble .18s linear infinite}
svg .kt-stomp{animation:kt-stomp .9s ease-in-out infinite}
svg .kt-breathe{animation:kt-breathe 3s ease-in-out infinite}
svg .kt-lean{animation:kt-lean 2.6s ease-in-out infinite}
svg .kt-jolt{animation:kt-jolt 2.4s ease-out infinite}
svg .kt-shout{animation:kt-shout 1.4s ease-in-out infinite}
svg .kt-peek{animation:kt-peek 3.4s ease-in-out infinite}
svg .kt-p1{animation-delay:-.5s}svg .kt-p2{animation-delay:-1s}svg .kt-p3{animation-delay:-1.5s}svg .kt-p4{animation-delay:-2s}
svg .kt-tail{transform-origin:0 100%;animation:kt-tail 1.6s ease-in-out infinite alternate}
svg .kt-head{transform-origin:50% 90%;animation:kt-headtilt 3.2s ease-in-out infinite}
svg .kt-tremble .kt-head,svg .kt-stomp .kt-head{animation:none}
svg .kt-eyes{transform-origin:50% 50%;animation:sc-blink 4s infinite}
svg .kt-point{transform-origin:0 100%;animation:kt-point 1.2s ease-in-out infinite}
svg .kt-steam path{transform-origin:50% 100%;animation:kt-steam 1.4s ease-out infinite}svg .kt-steam .s2{animation-delay:-.7s}
svg .kt-stink path{animation:kt-stink 1.8s ease-in-out infinite}svg .kt-stink .s2{animation-delay:-.9s}
svg .kt-drop{animation:kt-drop 1.6s ease-in infinite}
svg .kt-sun{transform-origin:50% 50%;animation:pg-spin 20s linear infinite}
svg .kt-flower{transform-origin:50% 100%;animation:sc-sway 2.6s ease-in-out infinite alternate}svg .kt-flower.f1{animation-duration:3.2s}svg .kt-flower.f2{animation-duration:2.2s;animation-direction:alternate-reverse}
svg .kt-bfly{animation:kt-bfly 7s ease-in-out infinite}svg .kt-bfly.b2{animation-duration:9s;animation-direction:reverse}
svg .kt-wing{transform-origin:100% 50%;animation:kt-wing .3s ease-in-out infinite alternate}svg .kt-wing--r{transform-origin:0 50%}
svg .kt-hearts path{transform-origin:50% 50%;animation:kt-heart 3s ease-in-out infinite}svg .kt-hearts .h1{animation-delay:-1s}svg .kt-hearts .h2{animation-delay:-2s}
svg .kt-roll{animation:kt-roll 3s ease-in-out infinite alternate}
svg .kt-spin{transform-origin:50% 50%;animation:kt-spin 3s ease-in-out infinite alternate}
svg .kt-tagw{transform-origin:50% 0;animation:sc-sway 2.4s ease-in-out infinite alternate}
svg .kt-tip{transform-origin:70% 100%;animation:kt-tip 3.6s ease-in infinite}
svg .kt-wobble{transform-origin:50% 100%;animation:pg-shake 2.4s ease-in-out infinite}
svg .kt-pop{transform-origin:50% 100%;animation:kt-pop 2.4s cubic-bezier(.3,1.6,.5,1) infinite}
svg .kt-shards{transform-origin:50% 100%;animation:kt-shards 2.4s ease-out infinite}
svg .kt-scribble,svg .kt-shoutlines,svg .kt-whoosh{animation:kt-flash .9s steps(2) infinite}
svg .kt-bush{transform-origin:50% 100%;animation:kt-bush 2.8s ease-in-out infinite}
svg .kt-fly{animation:kt-flyb 2.2s linear infinite}
svg .kt-bubble2 circle{transform-origin:50% 50%;animation:pg-pop 1.6s ease-in-out infinite}
svg .kt-curtain{transform-origin:50% 0;animation:kt-curtain 4s ease-in-out infinite alternate}
@keyframes kt-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px) scaleY(1.02)}}
@keyframes kt-hop{0%,100%{transform:translateY(0) scale(1.06,.94)}15%{transform:translateY(0) scale(1)}45%{transform:translateY(-14px) scale(.97,1.04)}75%{transform:translateY(0) scale(1)}}
@keyframes kt-tremble{0%{transform:translateX(-1px) rotate(-1deg)}50%{transform:translateX(1px) rotate(1deg)}100%{transform:translateX(-1px) rotate(-1deg)}}
@keyframes kt-stomp{0%,100%{transform:translateY(0) scale(1)}25%{transform:translateY(-6px) rotate(-3deg)}50%{transform:translateY(0) scale(1.05,.95)}75%{transform:translateY(-6px) rotate(3deg)}}
@keyframes kt-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025,1.04)}}
@keyframes kt-lean{0%,100%{transform:rotate(0)}50%{transform:rotate(-6deg) translateX(-3px)}}
@keyframes kt-jolt{0%,8%{transform:translateY(0)}14%{transform:translateY(-10px)}22%,100%{transform:translateY(0)}}
@keyframes kt-shout{0%,100%{transform:scale(1)}40%{transform:scale(1.05) rotate(-2deg)}}
@keyframes kt-peek{0%,100%{transform:translateY(16px)}35%,70%{transform:translateY(0)}}
@keyframes kt-tail{from{transform:rotate(-10deg)}to{transform:rotate(14deg)}}
@keyframes kt-headtilt{0%,100%{transform:rotate(0)}30%{transform:rotate(-5deg)}65%{transform:rotate(4deg)}}
@keyframes kt-point{0%,100%{transform:rotate(0)}50%{transform:rotate(-14deg)}}
@keyframes kt-steam{0%{transform:translateY(4px) scale(.5);opacity:0}30%{opacity:1}100%{transform:translateY(-12px) scale(1.15);opacity:0}}
@keyframes kt-stink{0%{transform:translateY(4px);opacity:0}40%{opacity:1}100%{transform:translateY(-10px);opacity:0}}
@keyframes kt-drop{0%{transform:translateY(0);opacity:1}80%{transform:translateY(10px);opacity:1}100%{transform:translateY(12px);opacity:0}}
@keyframes kt-bfly{0%,100%{transform:translate(0,0)}25%{transform:translate(-30px,-14px)}50%{transform:translate(-10px,-28px)}75%{transform:translate(24px,-8px)}}
@keyframes kt-wing{from{transform:scaleX(1)}to{transform:scaleX(.35)}}
@keyframes kt-heart{0%{transform:translateY(8px) scale(.6);opacity:0}30%{opacity:1}100%{transform:translateY(-22px) scale(1.1);opacity:0}}
@keyframes kt-roll{from{transform:translateX(-26px)}to{transform:translateX(26px)}}
@keyframes kt-spin{from{transform:rotate(-200deg)}to{transform:rotate(200deg)}}
@keyframes kt-tip{0%,20%{transform:rotate(0)}26%{transform:rotate(-8deg)}32%{transform:rotate(10deg)}40%{transform:rotate(-12deg)}55%,80%{transform:rotate(-38deg)}92%,100%{transform:rotate(0)}}
@keyframes kt-pop{0%,100%{transform:scale(1)}10%{transform:scale(1.15)}20%{transform:scale(.96)}30%{transform:scale(1)}}
@keyframes kt-shards{0%{transform:translateY(-6px)}12%{transform:translateY(0)}18%{transform:translateY(-2px)}24%,100%{transform:translateY(0)}}
@keyframes kt-flash{0%{opacity:1}100%{opacity:.25}}
@keyframes kt-bush{0%,100%{transform:rotate(0)}50%{transform:rotate(1.4deg) scale(1.01)}}
@keyframes kt-flyb{0%{transform:translate(0,0)}25%{transform:translate(12px,-8px)}50%{transform:translate(0,-14px)}75%{transform:translate(-12px,-6px)}100%{transform:translate(0,0)}}
@keyframes kt-curtain{from{transform:skewX(0)}to{transform:skewX(3deg)}}
.cover-ph__credit{font-family:var(--f-title);font-size:.62rem;font-weight:600;font-style:italic;background:rgba(255,255,255,.82);color:#9c3d12;border-radius:999px;padding:.05rem .5rem;margin-top:.3rem;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.preset-katjes .cover-ph--scene .cover-ph__brand{color:#9c3d12}
.preset-katjes .cover-ph__series{background:#fff;color:#e0662a}
.book__ribbon{position:absolute;top:10px;right:0;z-index:3;background:#c62828;color:#fff;font-family:var(--f-title);font-weight:700;font-size:.78rem;padding:.2em .7em .2em .8em;border-radius:6px 0 0 6px;box-shadow:0 3px 0 #a81f1f;transform:rotate(4deg);animation:kt-ribbon 2.4s ease-in-out infinite}
@keyframes kt-ribbon{0%,100%{transform:rotate(4deg)}50%{transform:rotate(4deg) scale(1.08)}}
.tag--new{background:#c62828;border-color:#a81f1f;color:#fff}
.tag--series{background:#fff1e0;border-color:#f0b27a;color:#9c3d12}
.page--title .meta--credit{font-style:italic;color:inherit;font-size:.9em;font-weight:600;opacity:.95}
.preset-katjes .page--pic{background:linear-gradient(#fff5e4,#ffe9cc)}
.preset-katjes .page--pic .page__text{font-family:var(--f-title);font-weight:600;font-size:1.12em;line-height:1.35}
.preset-katjes .page__scene{border:4px solid #fff;box-shadow:0 0 0 3px #f6b97a,0 6px 0 rgba(224,102,42,.25)}
@media (prefers-reduced-motion:reduce){svg [class*="kt-"],.book__ribbon{animation:none!important}}

/* ===== Levendige scènes (tegels, categoriekoppen, bladwijzers) ===== */
.ls{display:block;width:100%;height:100%;overflow:hidden}
.tile__cat .ls,.tile__art>.ls{position:absolute;inset:0}
.tile__cat .tile__age{z-index:2}
.cat-hero__mascot .ls{overflow:visible}
.ls .ls-rays{transform-origin:0 0;animation:pg-spin 24s linear infinite}
.ls .ls-cloudfall>g{animation:ls-fall 2.4s linear infinite}.ls .d2{animation-delay:-.8s!important}.ls .d3{animation-delay:-1.6s!important}
.ls .ls-speed path{animation:ls-speed .8s linear infinite}
.ls .ls-fly{animation:ls-fly 2.4s ease-in-out infinite}
.ls .ls-pow{transform-box:fill-box;transform-origin:center;animation:ls-pow 1.6s cubic-bezier(.3,1.6,.5,1) infinite}
.ls .pg-star{transform-box:fill-box;transform-origin:center;animation:ls-twinkle 1.8s ease-in-out infinite}.ls .pg-star.s1{animation-delay:-.5s}.ls .pg-star.s2{animation-delay:-1s}.ls .pg-star.s3{animation-delay:-1.4s}
.ls .ls-sun{transform-box:fill-box;transform-origin:center;animation:ls-pulse 3s ease-in-out infinite}
.ls .ls-palm{transform-box:fill-box;transform-origin:50% 100%;animation:sc-sway 3s ease-in-out infinite alternate}
.ls .ls-unroll{transform-box:fill-box;transform-origin:0 50%;animation:ls-unroll 4s ease-in-out infinite}
.ls .ls-bird{animation:ls-bird 6s linear infinite}
.ls .ls-flap{transform-box:fill-box;transform-origin:100% 100%;animation:ls-flap .25s ease-in-out infinite alternate}
.ls .ls-look{animation:ls-look 5s ease-in-out infinite}
.ls .ls-wander{animation:ls-wander 5s ease-in-out infinite}
.ls .ls-spot{animation:ls-spot 5s ease-in-out infinite alternate}
.ls .ls-prints g{opacity:0;animation:ls-print 3s linear infinite}
.ls .ls-prints .p1{animation-delay:.3s}.ls .ls-prints .p2{animation-delay:.6s}.ls .ls-prints .p3{animation-delay:.9s}.ls .ls-prints .p4{animation-delay:1.2s}.ls .ls-prints .p5{animation-delay:1.5s}
.ls .ls-env{transform-box:fill-box;transform-origin:center;animation:ls-env 1.4s ease-in-out infinite}
.ls .ls-blink{animation:kt-flash .7s steps(2) infinite}
.ls .ls-sneak{animation:ls-sneak 3s ease-in-out infinite}
.ls .ls-tiptoe{animation:ls-tiptoe .5s ease-in-out infinite alternate}
.ls .ls-code{animation:ls-code 6s linear infinite}
.ls .ls-led{animation:kt-flash .6s steps(2) infinite}
.ls .ls-reye{transform-box:fill-box;transform-origin:center;animation:sc-blink 3s infinite}
.ls .ls-robot>*{animation:none}
.ls .ls-type .m-laptop{animation:ls-typing .25s steps(2) infinite}
.ls .ls-cursor{animation:kt-flash .8s steps(2) infinite}
.ls .ls-fan{transform-box:fill-box;transform-origin:50% 100%;animation:ls-wiggle 1.8s ease-in-out infinite alternate}
.ls .ls-fan.f1{animation-delay:-.4s}.ls .ls-fan.f2{animation-delay:-.9s}.ls .ls-fan.f3{animation-delay:-1.3s}
.ls .ls-slide{animation:ls-slide 3.2s cubic-bezier(.5,0,.3,1) infinite}
@keyframes ls-fall{from{transform:translateY(-60px)}to{transform:translateY(240px)}}
@keyframes ls-speed{0%{transform:translateY(-10px);opacity:0}40%{opacity:1}100%{transform:translateY(20px);opacity:0}}
@keyframes ls-fly{0%,100%{transform:translateY(10px) rotate(-3deg)}50%{transform:translateY(-14px) rotate(3deg)}}
@keyframes ls-pow{0%,100%{transform:scale(.9) rotate(-6deg)}20%{transform:scale(1.25) rotate(6deg)}40%{transform:scale(1) rotate(0)}}
@keyframes ls-twinkle{0%,100%{transform:scale(.5);opacity:.4}50%{transform:scale(1.15);opacity:1}}
@keyframes ls-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
@keyframes ls-unroll{0%,10%{transform:scaleX(.08)}40%,85%{transform:scaleX(1)}100%{transform:scaleX(.08)}}
@keyframes ls-bird{0%{transform:translate(-30px,0)}50%{transform:translate(130px,-14px)}100%{transform:translate(300px,4px)}}
@keyframes ls-flap{from{transform:scaleY(1)}to{transform:scaleY(-.6)}}
@keyframes ls-look{0%,40%{transform:scaleX(1)}50%,90%{transform:scaleX(-1)}100%{transform:scaleX(1)}}
@keyframes ls-wander{0%,100%{transform:translateX(-6px)}45%{transform:translateX(14px)}}
@keyframes ls-spot{from{transform:translateX(-50px)}to{transform:translateX(60px)}}
@keyframes ls-print{0%{opacity:0}10%,60%{opacity:.9}80%,100%{opacity:0}}
@keyframes ls-env{0%,100%{transform:scale(1) rotate(-4deg)}50%{transform:scale(1.14) rotate(4deg)}}
@keyframes ls-sneak{0%,100%{transform:translateX(0)}50%{transform:translateX(58px)}}
@keyframes ls-tiptoe{from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-5px) rotate(2deg)}}
@keyframes ls-code{from{transform:translateY(0)}to{transform:translateY(-216px)}}
@keyframes ls-typing{from{transform:translateY(0)}to{transform:translateY(1.5px)}}
@keyframes ls-wiggle{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}
@keyframes ls-slide{0%{transform:translateY(-40px);opacity:0}15%{opacity:1}55%,85%{transform:translateY(46px);opacity:1}100%{transform:translateY(46px);opacity:0}}
.bm-hero{display:grid;grid-template-columns:1fr 300px;gap:1.5rem;align-items:center}
.bm-hero__art{width:300px;height:254px;border-radius:24px;overflow:hidden;box-shadow:0 10px 24px -10px rgba(30,60,110,.45)}
@media (max-width:760px){.bm-hero{grid-template-columns:1fr}.bm-hero__art{width:100%;max-width:340px;height:auto;aspect-ratio:260/220;margin:0 auto}}
@media (prefers-reduced-motion:reduce){.ls,.ls *{animation:none!important}.ls .ls-prints g{opacity:.9}.ls .ls-slide{transform:translateY(46px)}}

/* ===== Bladwijzers in de boekjeslezer ===== */
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.bm-corner{position:absolute;top:0;right:7%;z-index:4;width:34px;height:44px;padding:0 0 8px;border:0;cursor:pointer;
  background:var(--pacc,var(--c2,#e0662a));color:#fff;opacity:.5;clip-path:polygon(0 0,100% 0,100% 100%,50% 80%,0 100%);
  display:grid;place-items:center;transition:opacity .2s,transform .2s;transform-origin:top center}
.page--l .bm-corner{right:auto;left:7%}
.bm-corner svg{width:18px;height:18px}
.bm-corner svg path:first-child{fill:rgba(255,255,255,.35)}
.bm-corner:hover,.bm-corner:focus-visible{opacity:1;transform:scaleY(1.15)}
.bm-corner:focus-visible{outline:3px solid #1d6fe0;outline-offset:2px;clip-path:none;border-radius:4px}
.leaf .bm-corner{visibility:hidden}
.bm-tab{position:absolute;z-index:6;top:-34px;right:calc(7% - 3px);width:40px;height:104px;padding:0;border:0;background:none;cursor:pointer;
  overflow:hidden;border-radius:5px 5px 0 0;filter:drop-shadow(0 4px 4px rgba(0,0,0,.35))}
.slot--l .bm-tab,.face--back .bm-tab{right:auto;left:calc(7% - 3px)}
.bm-tab img{display:block;width:40px;height:120px;border-radius:5px 5px 0 0}
.bm-tab::after{content:"";position:absolute;left:0;right:0;bottom:0;height:22px;background:linear-gradient(transparent,rgba(0,0,0,.18))}
.bm-tab:hover img,.bm-tab:focus-visible img{transform:translateY(-6px);transition:transform .2s}
.bm-tab:focus-visible{outline:3px solid #1d6fe0;outline-offset:2px}
.bm-jump{position:absolute;z-index:7;top:-30px;width:32px;height:40px;padding:0;border:0;background:none;cursor:pointer;overflow:hidden;
  border-radius:4px 4px 0 0;filter:drop-shadow(0 3px 3px rgba(0,0,0,.4));transition:transform .2s}
.bm-jump img{display:block;width:32px;height:96px}
.bm-jump--l{left:10px;transform:rotate(-4deg)}.bm-jump--r{right:10px;transform:rotate(4deg)}
.bm-jump:hover,.bm-jump:focus-visible{transform:translateY(-6px)}
.bm-jump:focus-visible{outline:3px solid #1d6fe0;outline-offset:2px}
.bm-picker{position:absolute;inset:0;z-index:60;display:grid;place-items:center;background:rgba(20,10,5,.6);padding:1rem}
.bm-picker[hidden]{display:none}
.bm-picker__box{background:#fff8e7;color:#3b2a1e;border-radius:20px;padding:1.1rem 1.2rem 1rem;box-shadow:0 20px 50px rgba(0,0,0,.5);max-width:min(680px,100%);
  animation:bm-pop .25s ease-out}
.bm-picker__title{font-family:var(--f-title);margin:0 0 .7rem;font-size:1.3rem;text-align:center;color:#3b2a1e}
.bm-picker__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);gap:.55rem}
.bm-opt{display:flex;flex-direction:column;align-items:center;gap:.3rem;width:100%;padding:.45rem .2rem .35rem;border:3px solid transparent;border-radius:14px;
  background:#fff;cursor:pointer;font-family:var(--f-title);font-weight:600;font-size:.85rem;color:#3b2a1e;box-shadow:0 3px 0 rgba(0,0,0,.08);transition:transform .15s}
.bm-opt img{width:50px;height:150px;border-radius:5px;box-shadow:0 3px 8px rgba(0,0,0,.2)}
.bm-opt:hover,.bm-opt:focus-visible{transform:translateY(-4px);border-color:#ffc83d}
.bm-opt:focus-visible{outline:3px solid #1d6fe0;outline-offset:2px}
.bm-opt[aria-pressed="true"]{border-color:#e23b3b}
.bm-picker__foot{display:flex;justify-content:center;gap:.6rem;margin-top:.9rem;flex-wrap:wrap}
.bm-picker__foot .btn{font-size:1rem;padding:.5em 1.1em}
.bm-picker__remove{background:#e23b3b;color:#fff;box-shadow:0 4px 0 #a81f1f}
.bm-picker__cancel{background:#fff;color:#3b2a1e;box-shadow:0 4px 0 #d9c7a5}
@keyframes bm-pop{from{transform:scale(.9);opacity:0}to{transform:none;opacity:1}}
.bm-resume{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);z-index:30;display:flex;align-items:center;gap:.6rem;
  background:#fff8e7;color:#3b2a1e;border-radius:999px;padding:.35rem .4rem .35rem .8rem;box-shadow:0 8px 24px rgba(0,0,0,.4);
  font-family:var(--f-title);font-size:.95rem;white-space:nowrap;animation:bm-pop .3s ease-out}
.bm-resume[hidden]{display:none}
.bm-resume__img{width:16px;height:48px;object-fit:cover;object-position:top;border-radius:3px}
.bm-resume__go{font-size:.95rem;padding:.45em 1em;background:#e23b3b;color:#fff;box-shadow:0 3px 0 #a81f1f}
.bm-resume__x{width:34px;height:34px}
.bm-resume__x svg{width:16px;height:16px}
.book__bm{position:absolute;z-index:4;top:-12px;left:16px;width:26px;height:64px;overflow:hidden;border-radius:4px 4px 0 0;
  filter:drop-shadow(0 3px 3px rgba(0,0,0,.35));pointer-events:none}
.book__bm img{display:block;width:26px;height:78px}
@media (max-width:700px){
  .bm-picker__list{grid-template-columns:repeat(4,1fr);gap:.4rem}
  .bm-opt{font-size:.75rem;padding:.35rem .1rem .3rem}
  .bm-opt img{width:38px;height:114px}
  .bm-picker__box{padding:.9rem .7rem .8rem}
  .bm-resume{bottom:auto;top:3.4rem;font-size:.85rem;white-space:normal;width:max-content;max-width:calc(100vw - 20px)}
  .bm-resume__txt{display:none}
  .bm-tab{top:-26px;width:34px;height:88px}.bm-tab img{width:34px;height:102px}
}
@media (prefers-reduced-motion:reduce){.bm-picker__box,.bm-resume{animation:none}.bm-tab img,.bm-jump,.bm-corner{transition:none}}
.bm-picker [hidden],.bm-resume [hidden]{display:none!important}
.bm-tab{top:-50px;width:48px;height:108px}.bm-tab img{width:48px;height:144px}
@media (max-width:700px){.bm-tab{top:-30px;width:38px;height:84px}.bm-tab img{width:38px;height:114px}}
.bm-resume__x{background:transparent;color:#3b2a1e;border:2px solid #d9c7a5}
@media (max-width:700px){.bm-resume{top:auto;bottom:6px}.bm-picker__title{font-size:1.1rem}}
