@font-face{font-family:"Fredoka";src:url(../fonts/fredoka-latin-wght-normal.woff2) format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"Nunito";src:url(../fonts/nunito-latin-wght-normal.woff2) format("woff2");font-weight:200 1000;font-display:swap}
:root{
  --ink:#1F1B4D; --ink2:#5B5784; --violet:#6C4BFF; --violet2:#5537E0; --sun:#FFB000; --orange:#FF8A00; --pink:#FF5C8A;
  --green:#22C55E; --green2:#16A34A; --red:#FF5A5A; --card:#fff; --line:#E9E6FF;
  --c:#6C4BFF; --bg:#EEE9FF; --r:28px; --shadow:0 10px 30px rgba(42,27,140,.12),0 2px 6px rgba(42,27,140,.06);
  --safe-top:env(safe-area-inset-top,0px); --safe-bot:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%}
body{font-family:"Nunito",system-ui,sans-serif;color:var(--ink);background:linear-gradient(180deg,#CFE9FF 0%,#EAF4FF 45%,#FFF6E6 100%);background-attachment:fixed;overflow-x:hidden;-webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none}
input,select,textarea{user-select:text;-webkit-user-select:text}
h1,h2,h3,.logo,.btn,.node-label b,.wm-word,.pr-sentence{font-family:"Fredoka","Nunito",sans-serif}
h1,h2,h3{margin:.2em 0 .4em;line-height:1.1}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}
button:focus-visible{outline:4px solid rgba(108,75,255,.5);outline-offset:3px}
img.em{width:1.25em;height:1.25em;vertical-align:-.25em;display:inline-block;pointer-events:none}
img.em.xs{width:1em;height:1em;vertical-align:-.15em} img.em.sm{width:1.35em;height:1.35em} img.em.md{width:2em;height:2em} img.em.lg{width:2.6em;height:2.6em} img.em.xl{width:3.4em;height:3.4em}
.em-fb{font-size:1.1em}
[hidden]{display:none!important}

/* Himmel */
#sky{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.cloud{position:absolute;background:#fff;border-radius:999px;opacity:.7;animation:drift linear infinite}
.cloud::before,.cloud::after{content:"";position:absolute;background:#fff;border-radius:50%}
.cloud::before{width:55%;height:160%;left:15%;top:-70%}.cloud::after{width:40%;height:120%;right:12%;top:-45%}
.c1{width:180px;height:50px;top:20%;left:-200px;animation-duration:70s}
.c2{width:120px;height:36px;top:30%;left:-150px;animation-duration:95s;animation-delay:-40s;opacity:.7}
.c3{width:220px;height:60px;top:58%;left:-260px;animation-duration:120s;animation-delay:-70s;opacity:.6}
.c4{width:140px;height:40px;top:13%;left:-160px;animation-duration:85s;animation-delay:-20s;opacity:.6}
@keyframes drift{to{transform:translateX(calc(100vw + 300px))}}
.hill{position:absolute;bottom:-60px;border-radius:50%}
.h1{width:80vw;height:220px;left:-15vw;background:#BFF0C9;opacity:.7}
.h2{width:90vw;height:260px;right:-30vw;background:#A9E6B8;opacity:.6;bottom:-120px}

/* Topbar */
#topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(10px + var(--safe-top)) 14px 10px;background:rgba(255,255,255,.72);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid rgba(108,75,255,.1)}
.tb-profile{display:flex;align-items:center;gap:8px;font-weight:800;font-size:17px;padding:4px 14px 4px 4px;border-radius:999px;background:#fff;box-shadow:0 3px 0 var(--line);max-width:42vw;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.tb-profile .av{width:38px;height:38px;border-radius:50%;background:#F1EDFF;display:grid;place-items:center;flex:none}
.tb-profile .av img{width:28px;height:28px}
.tb-stats{display:flex;gap:6px;align-items:center}
.pill{display:flex;align-items:center;gap:5px;height:42px;padding:0 12px;border-radius:999px;background:#fff;font-weight:900;font-size:17px;box-shadow:0 3px 0 var(--line);transition:transform .15s}
.pill img{width:24px;height:24px}.pill:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}
.pill-icon{padding:0;width:42px;justify-content:center;font-size:20px}
.pill-star b{color:#C77800}.pill-fire b{color:#E8590C}
.pill-fire:not(.lit) img{filter:grayscale(1);opacity:.5}
.pill.bump{animation:bump .45s}
@keyframes bump{40%{transform:scale(1.25)}}

main{max-width:1080px;margin:0 auto;padding:14px 16px calc(40px + var(--safe-bot))}
main.enter>section{animation:enter .45s cubic-bezier(.2,.9,.3,1.2)}
@keyframes enter{from{opacity:0;transform:translateY(18px)}}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:22px}
.card.glass{background:rgba(255,255,255,.88);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;align-items:center;margin-top:12px}
.small,small{font-size:.86em;color:var(--ink2)}
.big{font-size:1.15em}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 22px;border-radius:18px;font-weight:600;font-size:19px;transition:transform .12s,box-shadow .12s,filter .15s;position:relative;white-space:nowrap}
.btn:active{transform:translateY(3px)}
.btn.primary{background:linear-gradient(180deg,#8A6BFF,#6C4BFF);color:#fff;box-shadow:0 5px 0 #4B2FD6,0 10px 20px rgba(108,75,255,.3)}
.btn.primary:active{box-shadow:0 2px 0 #4B2FD6}
.btn.soft{background:#fff;color:var(--ink);box-shadow:0 4px 0 #DCD6FF,inset 0 0 0 2px #E9E6FF}
.btn.soft:active{box-shadow:0 1px 0 #DCD6FF,inset 0 0 0 2px #E9E6FF}
.btn.ghost{background:rgba(255,255,255,.5);color:var(--ink2);box-shadow:inset 0 0 0 2px #DCD6FF}
.btn.xl{min-height:62px;font-size:23px;padding:0 30px;border-radius:22px}
.btn.sm{min-height:34px;font-size:14px;padding:0 12px;border-radius:12px}
.btn.round{width:50px;min-height:50px;padding:0;border-radius:50%;font-size:24px;background:#fff;box-shadow:0 4px 0 #DCD6FF;flex:none}
.link{color:var(--ink2);font-weight:800;text-decoration:underline;text-underline-offset:3px;padding:10px}

/* Ollie */
.ollie-wrap{width:150px;flex:none;position:relative}
.ollie-wrap.sm{width:76px}.ollie-wrap.md{width:130px}.ollie-wrap.lg{width:200px}.ollie-wrap.xl{width:min(250px,52vw)}
.ollie{width:100%;height:auto;overflow:visible;display:block}
.o-body{transform-origin:100px 210px;animation:breathe 3.2s ease-in-out infinite}
@keyframes breathe{50%{transform:translateY(-4px) scale(1.012,.99)}}
.o-pupils{transition:transform .5s cubic-bezier(.3,1.5,.5,1)}
.o-lids ellipse{transform-box:fill-box;transform-origin:center top;transform:scaleY(0);animation:blink 4.6s infinite}
@keyframes blink{0%,46%,52%,100%{transform:scaleY(0)}49%{transform:scaleY(1)}}
.o-eyes-happy{display:none}
.o-wing{transform-box:fill-box}.o-wing-l{transform-origin:100% 0}.o-wing-r{transform-origin:0 0}
.o-beak-low{transform-box:fill-box;transform-origin:center top}
.o-shadow{transform-origin:100px 222px;animation:shad 3.2s ease-in-out infinite}
@keyframes shad{50%{transform:scaleX(.92)}}
.mood-talk .o-beak-low{animation:talk .22s ease-in-out infinite alternate}
@keyframes talk{to{transform:translateY(6px) scaleY(1.35)}}
.mood-talk .o-wing-r{animation:wave 1.2s ease-in-out infinite}
@keyframes wave{50%{transform:rotate(-14deg)}}
.mood-happy .o-eyes-open{display:none}.mood-happy .o-eyes-happy{display:block}
.mood-happy .o-body{animation:hop .7s cubic-bezier(.3,1.6,.5,1) infinite alternate}
@keyframes hop{to{transform:translateY(-14px) scale(1.02)}}
.mood-happy .o-wing-l{animation:flapL .35s ease-in-out infinite alternate}.mood-happy .o-wing-r{animation:flapR .35s ease-in-out infinite alternate}
@keyframes flapL{to{transform:rotate(28deg)}}@keyframes flapR{to{transform:rotate(-28deg)}}
.mood-listen .o-body{animation:tilt 1.6s ease-in-out infinite alternate}
@keyframes tilt{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}
.mood-listen .o-pupils{transform:translate(0,-3px)}
.mood-think .o-pupils{transform:translate(5px,-6px)}
.mood-think .o-brow-l{transform:translateY(-4px)}

/* Sprechblase */
.bubble{position:relative;background:#fff;border-radius:22px;padding:14px 18px;font-weight:800;font-size:18px;line-height:1.3;box-shadow:var(--shadow);max-width:420px}
.bubble::before{content:"";position:absolute;left:-9px;top:50%;width:22px;height:22px;background:#fff;transform:translateY(-50%) rotate(45deg);border-radius:4px}
.bubble span{position:relative}
.bubble.pop{animation:bpop .35s cubic-bezier(.3,1.6,.5,1)}
@keyframes bpop{from{transform:scale(.85);opacity:.4}}

/* Willkommen */
.welcome{display:flex;flex-direction:column;align-items:center;gap:20px;padding-top:3vh}
.hero{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.hero-ollie{display:flex;align-items:center;gap:18px}
.hero-ollie .bubble{max-width:270px;text-align:left}
.logo{font-size:clamp(46px,9vw,78px);margin:6px 0 0;color:var(--violet);letter-spacing:-.5px;text-shadow:0 4px 0 #fff,0 8px 18px rgba(108,75,255,.25)}
.logo span{color:var(--orange)}
.tag{font-weight:900;color:var(--ink2);margin:0;font-size:19px}
.welcome .card{width:min(640px,100%);text-align:center}
.input{width:100%;font:inherit;font-size:24px;font-weight:800;padding:16px 20px;border-radius:18px;border:3px solid var(--line);background:#FBFAFF;color:var(--ink);text-align:center;outline:none;transition:border .2s,box-shadow .2s}
.input:focus{border-color:var(--violet);box-shadow:0 0 0 5px rgba(108,75,255,.15)}
.shake{animation:shake .4s}@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.avatars{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:8px}
.avatar{aspect-ratio:1;border-radius:20px;background:#F5F3FF;display:grid;place-items:center;transition:transform .15s,box-shadow .2s}
.avatar img{width:70%!important;height:70%!important}
.avatar.sel{background:#fff;box-shadow:0 0 0 4px var(--violet);transform:scale(1.06)}
.levels{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}
.level{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px;border-radius:22px;background:#F5F3FF;font-size:20px;transition:all .2s}
.level.sel{background:#fff;box-shadow:0 0 0 4px var(--violet)}
.level small{font-size:14px}
.profiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}
.prof{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 8px;border-radius:22px;background:#F5F3FF;font-size:19px;transition:transform .15s}
.prof:hover{transform:translateY(-3px)}.prof.add{background:transparent;box-shadow:inset 0 0 0 3px #DCD6FF}
.prof .plus{font-size:44px;line-height:1;color:var(--violet);font-weight:900}

/* Home */
.home-head{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.home-ollie{display:flex;align-items:center;gap:16px;flex:1;min-width:280px}
.goal{display:flex;align-items:center;gap:12px;padding:12px 18px;border-radius:24px}
.goal b{display:block;font-family:Fredoka;font-size:18px}
.goal-ring{position:relative;width:64px;height:64px}
.goal-ring svg,.node-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.goal-ring b{position:absolute;inset:0;display:grid;place-items:center;font-size:15px}
.count-row{display:flex;align-items:center;gap:8px}
.mini-bar{width:56px;height:6px;border-radius:99px;background:#F1EFFA;overflow:hidden;flex:none}
.mini-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#FFB000,#FF8A00);border-radius:99px}
.goal .mini-bar{width:64px;height:7px;border-radius:4px}
.goal .mini-bar i{border-radius:4px}
.goal .count-row b{font-family:Fredoka;font-size:18px;font-variant-numeric:tabular-nums;color:var(--ink)}
.lesson-count-row{flex:none}
.trk{fill:none;stroke:#EEEAFE;stroke-width:10}
svg .bar{fill:none;stroke:var(--green);stroke-width:10;stroke-linecap:round;transition:stroke-dasharray 1s}
.free-cta{margin:18px 0 6px;width:100%;display:flex;align-items:center;gap:14px;text-align:left;padding:14px 20px;border-radius:28px;color:#fff;background:linear-gradient(120deg,#FF7A59 0%,#FF5C8A 50%,#B15CFF 100%);background-size:200% 100%;box-shadow:0 6px 0 #C93D6E,0 16px 30px rgba(255,92,138,.3);animation:shine 6s ease-in-out infinite;transition:transform .15s}
.free-cta:active{transform:translateY(4px);box-shadow:0 2px 0 #C93D6E}
@keyframes shine{50%{background-position:100% 0}}
.fc-text{flex:1}.fc-text b{font-family:Fredoka;font-size:26px;display:block}.fc-text small{color:#fff;opacity:.95;font-size:15px;font-weight:700}
.fc-go{width:70px;height:70px;border-radius:50%;background:rgba(255,255,255,.25);display:grid;place-items:center;flex:none;animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.6)}70%{box-shadow:0 0 0 18px rgba(255,255,255,0)}100%{box-shadow:0 0 0 0 rgba(255,255,255,0)}}
.map-title{text-align:center;font-size:28px;margin:26px 0 6px}
.map{position:relative;display:flex;flex-direction:column;gap:8px;padding:10px 0 30px}
.map-path{position:absolute;left:0;top:0;pointer-events:none;z-index:0;overflow:visible}
.pth-bg{fill:none;stroke:#fff;stroke-width:22;stroke-linecap:round;opacity:.9}
.pth{fill:none;stroke:#C9BEFF;stroke-width:6;stroke-dasharray:2 16;stroke-linecap:round;animation:dash 1.6s linear infinite}
@keyframes dash{to{stroke-dashoffset:-36}}
.node{position:relative;z-index:1;display:flex;align-items:center;gap:14px;width:max-content;max-width:92%;animation:nodeIn .6s both cubic-bezier(.3,1.5,.5,1);animation-delay:var(--d);text-align:left}
@keyframes nodeIn{from{opacity:0;transform:scale(.6)}}
.node.pos0{margin-left:6%}.node.pos1{margin-left:34%}.node.pos2{margin-left:auto;margin-right:5%;flex-direction:row-reverse;text-align:right}.node.pos3{margin-left:30%}
.node-ring{position:relative;width:118px;height:118px;flex:none;border-radius:50%;background:#fff;box-shadow:0 7px 0 rgba(0,0,0,.08),0 12px 24px rgba(0,0,0,.08);transition:transform .2s}
.node-ring svg{position:absolute;inset:0}.node-ring .bar{stroke:var(--c);stroke-width:8}.node-ring .trk{stroke-width:8;stroke:#F1EFFA}
.node-face{position:absolute;inset:12px;border-radius:50%;background:var(--bg);display:grid;place-items:center}
.node-em{width:58px!important;height:58px!important;transition:transform .3s}
.node:hover .node-ring,.node:focus-visible .node-ring{transform:translateY(-4px) rotate(-3deg)}
.node:hover .node-em{transform:scale(1.12) rotate(6deg)}
.node:active .node-ring{transform:translateY(3px)}
.node.next .node-ring,.node.current .node-ring{animation:float 2.4s ease-in-out infinite;box-shadow:0 0 0 6px rgba(255,255,255,.9),0 0 0 12px color-mix(in srgb,var(--c) 35%,transparent),0 14px 30px rgba(0,0,0,.12)}
.node.current,.node.next{transform:scale(1.05);filter:drop-shadow(0 10px 18px rgba(42,27,140,.18))}
.node.locked{filter:grayscale(.6);opacity:.82}
.node.locked .node-ring{box-shadow:0 5px 0 rgba(0,0,0,.06)}
.node.locked:hover .node-ring,.node.locked:focus-visible .node-ring{transform:none}
.node-lock{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.12);z-index:2}
.node-lock img{width:14px;height:14px}
.node-lock-hint{display:block;font-size:.75rem;line-height:1.25;color:#718096;font-weight:600;margin-top:3px}
.node-stars .ns-empty{opacity:.12;letter-spacing:1px;margin-left:4px;color:#B5B1CF;font-size:.8rem;filter:grayscale(1)}
.node:not(.locked) .node-stars .ns-empty{opacity:.22}
@keyframes float{50%{transform:translateY(-8px)}}
.node-crown{position:absolute;top:-22px;left:50%;transform:translateX(-50%) rotate(-8deg)}.node-crown img{width:40px;height:40px}
.node-here{position:absolute;bottom:-8px;right:-10px;width:46px;height:46px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 3px 8px rgba(0,0,0,.15);animation:bob 1.2s ease-in-out infinite alternate}
.node-here img{width:32px;height:32px}
@keyframes bob{to{transform:translateY(-5px)}}
.node-label{display:flex;flex-direction:column;background:rgba(255,255,255,.94);padding:10px 16px;border-radius:18px;box-shadow:0 3px 0 rgba(0,0,0,.05)}
.node-label b{font-size:21px;color:var(--ink)}.node-label small{font-weight:800}
.node-stars{font-weight:600;font-size:.82rem;color:#4a5568;margin-top:2px}
.node-stars .ns-filled{font-weight:600;color:#4a5568}
.node:not(.locked) .node-stars .ns-filled{color:#ed8936}
.node-go{color:#FF9F1C;font-weight:800}

/* Welt */
.world-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.world-head h1{font-size:clamp(28px,5vw,40px);margin:0}.world-head p{margin:2px 0 0;font-weight:800;color:var(--ink2)}
.wh-em{width:84px;height:84px;border-radius:26px;background:var(--bg);display:grid;place-items:center;box-shadow:inset 0 -6px 0 rgba(0,0,0,.05);flex:none}
.wh-em img{width:56px!important;height:56px!important}
.tabs{display:flex;gap:8px;background:rgba(255,255,255,.7);padding:6px;border-radius:20px;width:max-content;max-width:100%;margin:0 auto 14px}
.tab{padding:10px 18px;border-radius:15px;font-weight:900;font-size:17px;color:var(--ink2)}
.tab.sel{background:#fff;color:var(--ink);box-shadow:0 3px 0 var(--line)}
.btn.start{display:flex;margin:0 auto 18px;color:#fff;background:linear-gradient(180deg,color-mix(in srgb,var(--c) 75%,#fff),var(--c));box-shadow:0 5px 0 color-mix(in srgb,var(--c) 70%,#000),0 12px 24px color-mix(in srgb,var(--c) 30%,transparent)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
.tile{background:#fff;border-radius:22px;padding:14px 10px 12px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;box-shadow:0 5px 0 var(--line);animation:nodeIn .5s both;animation-delay:var(--d);transition:transform .15s}
.tile:hover{transform:translateY(-3px)}.tile:active{transform:translateY(3px);box-shadow:0 2px 0 var(--line)}
.tile.done{box-shadow:0 5px 0 color-mix(in srgb,var(--c) 45%,#fff);background:linear-gradient(180deg,#fff 60%,var(--bg))}
.tile-em{width:52px!important;height:52px!important;margin-bottom:4px}
.tile b{font-family:Fredoka;font-size:18px;line-height:1.15}.tile small{font-size:13px}
.tile-stars i{font-style:normal;color:#E5E1F5;font-size:16px;opacity:.25;filter:grayscale(1)}.tile-stars i.on{color:var(--sun);text-shadow:0 2px 0 #E09000;opacity:1;filter:none;font-size:18px}
.tile.current{transform:scale(1.05);box-shadow:0 8px 0 var(--line),0 14px 28px rgba(42,27,140,.16)}
.tile.current:hover{transform:scale(1.05) translateY(-3px)}

/* Lektion */
.lesson-top{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.lesson-top.sticky-prog{position:sticky;top:calc(58px + var(--safe-top));z-index:15;background:rgba(255,255,255,.82);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:8px 10px;border-radius:16px;margin:0 0 12px;box-shadow:0 2px 10px rgba(42,27,140,.06)}
.lesson-count{font-variant-numeric:tabular-nums;font-weight:700;min-width:48px;text-align:right}
.progress{flex:1;display:flex;gap:4px;height:16px}
.seg{flex:1;border-radius:99px;background:rgba(255,255,255,.85);box-shadow:inset 0 2px 0 rgba(0,0,0,.05)}
.seg.done{background:var(--c)}.seg.star:not(.done):not(.cur){background:color-mix(in srgb,var(--c) 35%,#fff)}
.seg.cur{background:linear-gradient(90deg,var(--c),color-mix(in srgb,var(--c) 40%,#fff));animation:segPulse 1.4s ease-in-out infinite}
@keyframes segPulse{50%{opacity:.6}}
.lesson-count{font-weight:700;color:var(--ink2);min-width:48px;text-align:right;font-variant-numeric:tabular-nums}
.practice{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.pr-ollie{display:flex;align-items:center;gap:14px;min-height:120px}
.pr-ollie .bubble{font-size:1.15rem;font-weight:700;line-height:1.35;max-width:min(420px,70vw);text-align:center}
.pr-ollie .ollie-wrap{width:120px}
.pr-card{text-align:center;position:relative;overflow:hidden;padding:20px 18px 24px}
.pr-card::before{content:"";position:absolute;inset:0 0 auto 0;height:170px;background:radial-gradient(120% 100% at 50% 0%,var(--bg,#EEE9FF),transparent 70%);pointer-events:none}
.pr-pic{position:relative;display:inline-grid;place-items:center;width:150px;height:150px;border-radius:44px;background:#fff;box-shadow:0 8px 0 rgba(0,0,0,.05),0 18px 34px rgba(0,0,0,.08);margin:4px auto 14px;animation:picIn .7s cubic-bezier(.3,1.6,.5,1)}
.pr-pic .pic{width:104px;height:104px;animation:wiggle 4s ease-in-out infinite}
@keyframes picIn{from{transform:scale(.3) rotate(-20deg);opacity:0}}
@keyframes wiggle{0%,80%,100%{transform:rotate(0)}85%{transform:rotate(-8deg) scale(1.05)}90%{transform:rotate(8deg) scale(1.05)}95%{transform:rotate(-4deg)}}
.playing .pr-pic .pic{animation:beat .5s ease-in-out infinite alternate}
@keyframes beat{to{transform:scale(1.08)}}
.pr-sentence{position:relative;font-size:clamp(30px,6.2vw,50px);font-weight:600;line-height:1.25;display:flex;flex-wrap:wrap;justify-content:center;gap:2px 3px;margin:0 auto 6px;max-width:900px}
.wd{padding:0 7px 2px;border-radius:14px;transition:background .15s,color .15s,transform .15s;border-bottom:4px solid transparent}
.wd.hl{background:var(--sun);color:#fff;transform:translateY(-3px) scale(1.06);box-shadow:0 4px 0 #E09000}
.wd.ok{color:var(--green2);border-bottom-color:#B8F0CB}
.wd.close{color:#E07800;border-bottom-color:#FFD08A;background:#FFF4E0;animation:nudge 1.2s ease-in-out 2}
.wd.miss{color:#E03E3E;border-bottom-color:#FFC2C2;background:#FFF0F0;animation:nudge 1.2s ease-in-out 2}
.wd.tap{transform:scale(1.15)}
@keyframes nudge{20%{transform:rotate(-4deg)}40%{transform:rotate(4deg)}60%{transform:rotate(0)}}
.pr-de{position:relative;font-weight:800;color:var(--ink2);font-size:18px;margin-bottom:8px}
.melody{position:relative;display:inline-flex;align-items:center;gap:8px;font-weight:700;color:#718096;font-size:.9rem;background:#F7F5FF;padding:6px 14px 6px 8px;border-radius:18px;max-width:100%;text-align:center;flex-wrap:wrap;justify-content:center;margin:0 auto}
.mel-arrow{font-size:22px;font-weight:900;color:var(--orange);line-height:1;flex:none}
.melody svg{width:70px;height:20px}.melody path{fill:none;stroke:var(--orange);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.melody path:first-child{stroke-dasharray:140;stroke-dashoffset:140;animation:draw 1.5s .4s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.pr-controls{display:flex;justify-content:center;gap:10px;margin:14px 0 6px;flex-wrap:wrap}
.listen-btn,.pr-controls .btn[data-a="listen"],.pr-controls .btn[data-a="slow"]{min-height:42px;font-size:.98rem;font-weight:600;padding:8px 14px}
.pr-controls .btn{min-height:42px}
.listen-btn.heard{box-shadow:0 4px 0 #FFD08A,inset 0 0 0 2px #FFE1A6;background:#FFF8E8;font-weight:800}
.mic-zone{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:10px}
.mic{position:relative;width:128px;height:128px;font-size:2.2rem;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FF8FB1,#FF5C8A 55%,#E93D72);box-shadow:0 8px 0 #C02B5E,0 18px 34px rgba(255,92,138,.4);display:grid;place-items:center;transition:transform .15s;--lvl:0}
.mic:active{transform:translateY(5px);box-shadow:0 3px 0 #C02B5E}
.mic .mic-em{width:62px;height:62px;position:relative;z-index:2;filter:drop-shadow(0 3px 0 rgba(0,0,0,.15))}
.mic-ring{position:absolute;inset:0;border-radius:50%;border:4px solid #FF5C8A;opacity:0}
.mic.invite .mic-ring{animation:ring 1.6s ease-out infinite}.mic.invite .r2{animation-delay:.8s}
.mic.invite{animation:invite 1.6s ease-in-out infinite}
@keyframes invite{50%{transform:scale(1.06)}}
.mic.retry-pulse{animation:retryPulse 1s ease-in-out infinite}
@keyframes retryPulse{0%,100%{transform:scale(1);box-shadow:0 8px 0 #C02B5E,0 18px 34px rgba(255,92,138,.4)}50%{transform:scale(1.1);box-shadow:0 8px 0 #C02B5E,0 0 0 14px rgba(255,92,138,.35),0 18px 34px rgba(255,92,138,.5)}}
@keyframes ring{from{transform:scale(1);opacity:.8}to{transform:scale(1.7);opacity:0}}
.mic-lvl{position:absolute;inset:-10px;border-radius:50%;background:rgba(255,92,138,.25);transform:scale(calc(.85 + var(--lvl)*.5));transition:transform .08s;opacity:0}
.rec .mic,.mic.on{background:radial-gradient(circle at 35% 30%,#7CF0A8,#22C55E 55%,#159947);box-shadow:0 8px 0 #0F7A38,0 18px 34px rgba(34,197,94,.45);animation:none}
.rec .mic .mic-ring,.mic.on .mic-ring{border-color:#22C55E;animation:ring 1s ease-out infinite}.rec .mic .r2,.mic.on .r2{animation-delay:.5s}
.rec .mic-lvl,.mic.on .mic-lvl{opacity:1;background:rgba(34,197,94,.25)}
.mic-label{font-weight:900;color:var(--ink2)}
.mic-retry{display:none;margin-top:8px;min-height:48px;font-size:1rem;font-weight:700;padding:12px 22px;border-radius:24px;background:#ff6b9d;color:#fff;box-shadow:0 5px 0 #C02B5E,0 12px 24px rgba(255,107,157,.35)}
.bubble.mic-err{max-width:260px;font-size:.95rem;line-height:1.35;font-weight:700;text-align:left}
.pr-ollie .bubble.mic-err,.fi-ollie .bubble.mic-err{max-width:260px;font-size:.95rem;line-height:1.35}
.mic-zone.perm-denied .mic-retry{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.mic-zone.perm-denied .mic{opacity:.55;filter:grayscale(.2)}
.mic-zone.perm-denied .mic-label{display:none}
.fi-controls.perm-denied .mic-retry{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.fi-controls.perm-denied .mic{opacity:.55;filter:grayscale(.2)}
.fi-controls.perm-denied .mic-label{display:none}
.live{min-height:26px;font-weight:800;font-style:italic;color:var(--violet);font-size:18px}
.mic.small{width:90px;height:90px;margin:12px auto}.mic.small .mic-em{width:44px;height:44px}
.mic.de{background:radial-gradient(circle at 35% 30%,#FFC46B,#FF9F1C 55%,#F07C00);box-shadow:0 8px 0 #C56200,0 18px 34px rgba(255,159,28,.4)}
.mic.de .mic-ring{border-color:#FF9F1C}

/* Mic highlight while prosody (melody) or mic-error hint is shown */
.practice:has(.melody) .mic:not(.on),
:is(.practice,.free,.fi-controls):has(.bubble.mic-err) .mic:not(.on),
.mic.hint-glow:not(.on){box-shadow:0 8px 0 #C02B5E,0 0 0 6px rgba(255,92,138,.38),0 18px 34px rgba(255,92,138,.4);animation:micHintGlow 1.8s ease-in-out infinite}
@keyframes micHintGlow{0%,100%{transform:scale(1);box-shadow:0 8px 0 #C02B5E,0 0 0 6px rgba(255,92,138,.28),0 18px 34px rgba(255,92,138,.4)}50%{transform:scale(1.05);box-shadow:0 8px 0 #C02B5E,0 0 0 6px rgba(255,92,138,.5),0 18px 34px rgba(255,92,138,.5)}}
.mic.de.hint-glow:not(.on),
.free:has(.bubble.mic-err) .mic.de:not(.on){box-shadow:0 8px 0 #C56200,0 0 0 6px rgba(255,92,138,.38),0 18px 34px rgba(255,159,28,.4);animation:micHintGlowDe 1.8s ease-in-out infinite}
@keyframes micHintGlowDe{0%,100%{transform:scale(1);box-shadow:0 8px 0 #C56200,0 0 0 6px rgba(255,92,138,.28),0 18px 34px rgba(255,159,28,.4)}50%{transform:scale(1.05);box-shadow:0 8px 0 #C56200,0 0 0 6px rgba(255,92,138,.5),0 18px 34px rgba(255,159,28,.5)}}

/* Feedback */
.feedback{position:relative;margin:16px auto 0;max-width:640px;padding:18px;border-radius:24px;animation:fbIn .5s cubic-bezier(.3,1.5,.5,1)}
@keyframes fbIn{from{opacity:0;transform:translateY(20px) scale(.95)}}
.feedback.pass{background:linear-gradient(180deg,#EFFFF4,#DFF9E8);box-shadow:inset 0 0 0 3px #B8F0CB}
.pr-card.successPulse,.feedback.pass.successPulse{animation:successPulse .75s ease-out}
@keyframes successPulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55),inset 0 0 0 3px #86EFAC}40%{box-shadow:0 0 0 10px rgba(34,197,94,.28),inset 0 0 0 4px #22C55E}100%{box-shadow:0 0 0 0 rgba(34,197,94,0),inset 0 0 0 3px #B8F0CB}}
.feedback.fail{background:linear-gradient(180deg,#FFF9EC,#FFF1D6);box-shadow:inset 0 0 0 3px #FFE1A6}
.feedback.self{background:#F5F3FF;box-shadow:inset 0 0 0 3px #E2DBFF}
.stars3{display:flex;justify-content:center;align-items:flex-end;gap:8px;margin-bottom:4px}
.stars3 .s img{width:58px;height:58px;filter:grayscale(1) brightness(1.15);opacity:.22}
.stars3 .s:nth-child(2) img{width:74px;height:74px}
.stars3 .s.on img{opacity:1;filter:saturate(1.35) brightness(1.06) drop-shadow(0 0 10px rgba(255,190,0,.85)) drop-shadow(0 3px 0 #E09000);animation:starPop .6s both cubic-bezier(.3,1.8,.5,1);animation-delay:var(--d)}
@keyframes starPop{0%{transform:scale(0) rotate(-90deg)}100%{transform:scale(1) rotate(0)}}
.stars3 .s.on.newest img{animation:starPopNewest .65s both cubic-bezier(.3,1.8,.5,1);animation-delay:var(--d)}
@keyframes starPopNewest{0%{transform:scale(0) rotate(-32deg)}50%{transform:scale(1.32) rotate(18deg)}100%{transform:scale(1) rotate(-6deg)}}
.stars3.burst{position:relative}
.starburst{position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;pointer-events:none;background:radial-gradient(circle,#FFB000 0%,transparent 70%);animation:starburst .7s ease-out both}
.starburst::before,.starburst::after{content:"";position:absolute;inset:-28px;border-radius:50%;border:3px solid rgba(255,176,0,.55);animation:starburstRing .7s ease-out both}
.starburst::after{inset:-48px;animation-delay:.08s;border-color:rgba(255,92,138,.4)}
@keyframes starburst{0%{transform:scale(.2);opacity:1}100%{transform:scale(6);opacity:0}}
@keyframes starburstRing{0%{transform:scale(.3);opacity:.9}100%{transform:scale(1.4);opacity:0}}
.stars3.dim .s img{width:44px;height:44px}.stars3.dim .s:nth-child(2) img{width:52px;height:52px}
.fb-msg{font-family:Fredoka;font-size:26px;font-weight:600;margin:6px 0}
.fb-msg small{font-family:Nunito;font-size:15px}
.fb-heard{margin:4px 0;font-weight:700;color:var(--ink2)}.fb-heard i{color:var(--ink)}
.fb-detail{font-weight:800;margin:8px 0}
.fb-coach{display:flex;gap:10px;align-items:flex-start;text-align:left;background:rgba(255,255,255,.8);border-radius:16px;padding:10px 14px;margin:10px 0;font-weight:700;line-height:1.35}
.fb-coach img{width:28px!important;height:28px!important;flex:none}
.wchip{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;margin:3px;border-radius:12px;font-weight:900;font-size:18px;background:#fff;box-shadow:0 3px 0 #FFD08A;color:#E07800}
.wchip.miss{color:#E03E3E;box-shadow:0 3px 0 #FFC2C2}
.tipcard{display:flex;gap:12px;align-items:flex-start;text-align:left;background:#fff;border-radius:18px;padding:12px 14px;margin:10px 0;box-shadow:0 3px 0 #FFE1A6;font-weight:700;line-height:1.35}
.tipcard img{width:34px!important;height:34px!important;flex:none}
.self-rate .smile{flex-direction:column;min-height:auto;padding:10px 16px;background:#fff;box-shadow:0 4px 0 #DCD6FF;border-radius:20px}
.fb-q{font-weight:900;margin:12px 0 0}

/* Overlay / Modal */
.overlay{position:fixed;inset:0;z-index:50;background:rgba(31,27,77,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;padding:20px;animation:fade .25s}
@keyframes fade{from{opacity:0}}
.modal{background:#fff;border-radius:32px;padding:26px;max-width:460px;width:100%;text-align:center;position:relative;box-shadow:0 30px 80px rgba(0,0,0,.25)}
.modal .ollie-wrap{margin:0 auto}
.pop-in{animation:popIn .5s cubic-bezier(.3,1.6,.5,1)}
@keyframes popIn{from{transform:scale(.6);opacity:0}}
.x{position:absolute;top:12px;right:16px;font-size:34px;color:var(--ink2);width:44px;height:44px}
.wm-h{font-weight:900;color:var(--ink2);margin:0}.wm-word{font-size:56px;font-weight:600;margin:6px 0}
.wm-res{min-height:30px;font-weight:800;margin-top:8px}.wm-tip{box-shadow:0 3px 0 #E2DBFF;background:#F7F5FF;font-size:15px}.word-modal .mic-label{margin:6px 0 4px}.wm-res .ok{color:var(--green2)}

/* Toast */
#toast{position:fixed;left:50%;top:calc(80px + var(--safe-top));transform:translate(-50%,-30px);opacity:0;z-index:60;background:#fff;border-radius:22px;padding:14px 20px;font-weight:800;box-shadow:0 18px 40px rgba(31,27,77,.25);pointer-events:none;transition:all .4s cubic-bezier(.3,1.5,.5,1);text-align:center;max-width:90vw}
#toast.show{opacity:1;transform:translate(-50%,0)}
.t-badge{display:flex;align-items:center;gap:12px;text-align:left}
#confetti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:70}
.flystar{position:fixed;left:0;top:0;z-index:80;pointer-events:none}.flystar img{width:40px;height:40px}

/* Fertig */
.done-screen{display:grid;place-items:center;min-height:70vh}
.done-card{text-align:center;max-width:560px;width:100%}
.trophy-em{width:120px!important;height:120px!important;animation:trophy 1.2s cubic-bezier(.3,1.6,.5,1)}
@keyframes trophy{0%{transform:scale(0) rotate(-30deg)}60%{transform:scale(1.2) rotate(8deg)}}
.done-screen h1{font-size:44px;color:var(--c)}
.done-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.done-stats div{background:var(--bg);border-radius:20px;padding:12px 6px;display:flex;flex-direction:column;align-items:center}
.done-stats b{font-family:Fredoka;font-size:28px}
.done-screen .ollie-wrap{margin:0 auto}

/* Frei */
.free-in{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:center}
.fi-ollie{display:flex;flex-direction:column-reverse;align-items:center;gap:12px}
.fi-ollie .bubble{max-width:260px;text-align:center}.fi-ollie .bubble::before{left:50%;top:auto;bottom:-9px;transform:translateX(-50%) rotate(45deg)}
.fi-controls{display:flex;flex-direction:column;align-items:center;gap:8px}
.type-row{display:flex;gap:8px;width:100%;max-width:560px}.type-row .input{font-size:19px;padding:12px 16px;text-align:left}
.sugg{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:620px}
.chip{background:#F5F3FF;border-radius:99px;padding:8px 14px;font-weight:800;font-size:15px;color:var(--ink2);transition:background .15s,transform .15s}
.chip:hover{background:#ECE7FF}
.sugg-title{font-family:Fredoka,Nunito,sans-serif;font-weight:700;font-size:18px;margin:0 0 4px;color:var(--ink)}
.sugg-big{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:640px;margin-bottom:8px}
.chip-big{font-size:1.05rem;font-weight:600;padding:11px 16px;border-radius:22px;background:#fff;border:2px solid #e2e8f0;box-shadow:none;color:var(--ink);min-height:48px;text-align:center;line-height:1.25;transition:background .15s,transform .15s,border-color .15s,color .15s}
.chip-big:hover{background:#faf5ff;border-color:#cbd5e0}
button.chip-big.selected,.chip-big.selected{background:#faf5ff;color:#805ad5;border-color:#805ad5;transform:scale(.98)}
.chip-big:active{transform:scale(.96)}
.free .mic-label,.free-speak-hint{opacity:.65;font-size:.88rem;font-weight:700}
.adv-toggle{margin-top:10px;font-size:16px;min-height:44px;flex-wrap:wrap;gap:6px}
.adv-toggle small{font-size:13px;font-weight:700;opacity:.8}
.adv-panel{margin-top:8px;width:100%;max-width:560px}
.fb-point{background:rgba(255,255,255,.75);border-radius:14px;padding:8px 12px}
.translation{margin:16px 0;text-align:center}
.tr-row{display:flex;align-items:center;justify-content:center;gap:10px;font-size:22px;font-weight:800;flex-wrap:wrap}
.tr-row.en b{font-family:Fredoka;font-size:clamp(26px,5vw,38px);color:var(--violet)}
.tr-arrow{font-size:28px;color:var(--ink2);animation:bob .8s ease-in-out infinite alternate}
.tr-eng{display:block;margin-top:6px}
.history{margin-top:16px}.hist{display:flex;justify-content:space-between;gap:12px;width:100%;text-align:left;padding:10px 12px;border-radius:14px;font-weight:700}
.hist:nth-child(odd){background:#FAF9FF}.hist b{color:var(--violet)}

/* Abzeichen */
.wardrobe{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:center}
.wd-ollie{background:radial-gradient(circle,#F1ECFF,#fff 70%);border-radius:50%;padding:10px}
div.bar{height:14px;background:#F1EFFA;border-radius:99px;overflow:hidden}
div.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--sun),var(--orange));border-radius:99px}
.acc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.acc-item{background:#F7F5FF;border-radius:18px;padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;transition:transform .15s}
.acc-item .acc-e{font-size:32px}.acc-item.on{background:#fff;box-shadow:0 0 0 3px var(--violet)}
.acc-item.locked{opacity:.55;cursor:default}
.sec-title{margin:22px 0 10px;font-size:26px;text-align:center}
.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.badge{background:#fff;border-radius:22px;padding:14px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;box-shadow:0 4px 0 var(--line)}
.badge .badge-em{width:52px!important;height:52px!important;filter:grayscale(1) opacity(.3)}
.badge:not(.has) b{color:#B5B1CF}.badge.has{background:linear-gradient(180deg,#fff,#FFF6DF);box-shadow:0 4px 0 #FFD98A}
.badge.has .badge-em{filter:none;animation:nodeIn .6s both}
.badge small{font-size:12px}
.week{margin-top:16px}.weekbars{display:flex;gap:10px;height:130px;align-items:flex-end}
.wb{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}
.wb i{display:block;width:100%;max-width:40px;border-radius:10px 10px 4px 4px;background:#D9D2FF}.wb i.goal{background:linear-gradient(180deg,#7CF0A8,#22C55E)}
.wb span{font-weight:900;font-size:13px}

/* Lehrkraft */
.teacher .card{margin-bottom:16px}
.prose{line-height:1.55;font-size:16.5px;user-select:text;-webkit-user-select:text}.prose h2{margin-top:18px;font-size:24px;color:var(--violet)}
.prose ul{padding-left:20px}.prose li{margin:6px 0}
.tablewrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:15px}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#F7F5FF}
.settings label{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-weight:800;padding:10px 0;border-bottom:1px solid var(--line)}
.settings select{font:inherit;font-weight:700;padding:10px 12px;border-radius:12px;border:2px solid var(--line);background:#FBFAFF;color:var(--ink);max-width:100%}
.settings label.check{justify-content:flex-start}.settings input[type=checkbox]{width:24px;height:24px;accent-color:var(--violet)}
.status{list-style:none;padding:0;margin:0}.status li{padding:8px 12px;border-radius:12px;margin:6px 0;font-size:15px}
.status li.ok{background:#EFFFF4}.status li.mid{background:#FFF9EC}.status li.no{background:#FFF0F0}
.pa{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 0;border-bottom:1px dashed var(--line)}
.pa select{padding:4px 8px;border-radius:10px;border:2px solid var(--line);font:inherit}
.credits{color:var(--ink2)}

/* Responsiv */
@media (min-width:900px){
  .practice{grid-template-columns:230px minmax(0,1fr);align-items:start}
  .pr-ollie{flex-direction:column-reverse;position:sticky;top:90px}
  .pr-ollie .ollie-wrap{width:190px}
  .pr-ollie .bubble::before{left:50%;top:auto;bottom:-9px;transform:translateX(-50%) rotate(45deg)}
  .pr-ollie .bubble{text-align:center}
}
@media (max-width:640px){
  main{padding:10px 12px 40px}
  #topbar{padding:calc(8px + var(--safe-top)) 10px 8px}
  #tbName{display:none}.tb-profile{padding:3px}
  .pill{height:38px;padding:0 10px;font-size:15px}.pill-icon{width:38px;padding:0}.pill img{width:21px;height:21px}
  .tb-stats{gap:4px}
  .bubble{font-size:16px;padding:11px 14px}
  .home-ollie{min-width:0}.home-ollie .ollie-wrap{width:92px}
  .goal{width:100%;justify-content:center}
  .free-cta{padding:12px 14px}.fc-text b{font-size:21px}.fc-text small{font-size:13px}.fc-go{width:54px;height:54px}.fc-ollie{display:none}
  .node-ring{width:96px;height:96px}.node-em{width:46px!important;height:46px!important}
  .node.pos0{margin-left:0}.node.pos1{margin-left:16%}.node.pos2{margin-left:auto;margin-right:0}.node.pos3{margin-left:12%}
  .node-label b{font-size:18px}.node-label{padding:8px 12px}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .pr-ollie{min-height:90px}.pr-ollie .ollie-wrap{width:84px}
  .pr-pic{width:116px;height:116px;border-radius:34px;margin-bottom:8px}.pr-pic .pic{width:80px;height:80px}
  .pr-card{padding:16px 12px 20px}
  .mic{width:118px;height:118px}
  .btn{font-size:17px;min-height:48px;padding:0 16px}.btn.xl{font-size:20px;min-height:56px}
  .free-in{grid-template-columns:1fr}.fi-ollie .ollie-wrap{width:96px}
  .wardrobe{grid-template-columns:1fr;justify-items:center}
  .avatars{grid-template-columns:repeat(4,1fr)}
  .hero-ollie{flex-direction:column}.hero-ollie .bubble::before{left:50%;top:-9px;transform:translateX(-50%) rotate(45deg)}.hero-ollie .bubble{text-align:center}
  .world-head .wh-em{width:64px;height:64px;border-radius:20px}.wh-em img{width:42px!important;height:42px!important}
  .type-row{flex-direction:column}
  .world-head{gap:10px}.world-head h1{font-size:25px;line-height:1.1}.world-head p{font-size:14px}.btn.round.back{width:44px;min-height:44px;font-size:21px}
  .world-head .wh-em{width:54px;height:54px;border-radius:17px}.world-head .wh-em img{width:36px!important;height:36px!important}
  .wd-ollie .ollie-wrap{width:140px}
  .fb-msg{font-size:23px}
}

@media (max-width:480px){
  .mic{width:112px;height:112px;font-size:2rem}
  .mic .mic-em{width:54px;height:54px}
  .pr-ollie .bubble{font-size:1.15rem;font-weight:700;padding:10px 12px;max-width:min(280px,68vw);text-align:center}
  .pr-ollie{gap:10px;min-height:80px}
  .pr-ollie .ollie-wrap{width:72px}
  .pr-controls{gap:8px}
  .pr-controls .btn{font-size:.98rem;min-height:42px;padding:8px 14px}
  .listen-btn,.pr-controls .btn[data-a="listen"],.pr-controls .btn[data-a="slow"]{min-height:42px;font-size:.98rem;font-weight:600;padding:8px 14px}
  .chip-big{font-size:1.05rem;font-weight:600;padding:11px 16px;min-height:48px;width:100%;max-width:340px;border-radius:22px}
  .lesson-top.sticky-prog{top:calc(48px + var(--safe-top));padding:6px 8px}
  .melody{font-size:.9rem;gap:6px;color:#718096;text-align:center}
  .mel-arrow{font-size:18px}
  .node.current,.node.next{transform:scale(1.03)}
  .tile.current{transform:scale(1.03)}
  .fb-msg{font-size:20px}
}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}}

.thinking{display:inline-flex;gap:6px;align-items:center;height:26px}
.thinking i{width:10px;height:10px;border-radius:50%;background:var(--violet);animation:think 1s ease-in-out infinite}
.thinking i:nth-child(2){animation-delay:.15s}.thinking i:nth-child(3){animation-delay:.3s}
@keyframes think{50%{transform:translateY(-8px);opacity:.4}}

.translation{display:flex;flex-direction:column;align-items:center;gap:4px;margin:18px 0 10px;text-align:center}
.tr-said{background:#fff;border-radius:99px;padding:10px 18px;font-weight:800;font-size:18px;box-shadow:var(--shadow)}
.tr-said b{color:var(--violet)}

/* ---------- Lernstand: Code-Eingabe ---------- */
.code-card .cc-head{display:flex;align-items:center;gap:14px;text-align:left;margin-bottom:12px}
.code-card .cc-head h2{margin:0}.code-card .cc-head p{margin:2px 0 0;color:var(--ink2,#5b5577);font-size:16px}
.code-form{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.code-input{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;letter-spacing:.12em;text-transform:uppercase;font-size:28px;padding:14px 12px}
.code-input::placeholder{letter-spacing:.04em;text-transform:none;font-family:inherit;font-size:20px;font-weight:700;color:#aaa3c8}
.code-form .btn{min-height:62px;font-size:22px;padding:0 26px}
.code-msg{grid-column:1/-1;margin:0;min-height:1.2em;font-weight:700;color:#C2410C;font-size:16px}
.ob-code{display:flex;align-items:center;justify-content:center;gap:8px;background:#E8FBF0;color:#146C43;border-radius:16px;padding:10px 14px;margin-bottom:10px;font-size:17px}
.prof .pcode{font-size:12px;color:#6C4BFF;font-weight:800;letter-spacing:.04em;display:flex;align-items:center;gap:3px}
.guest-cta{width:100%;display:flex;align-items:center;gap:12px;text-align:left;margin:16px 0 0;padding:12px 16px;border-radius:22px;background:#FFF8E1;border:3px dashed #FFB000;color:var(--ink)}
.guest-cta span:nth-child(2){flex:1;display:flex;flex-direction:column}.guest-cta small{color:#6b6480;font-size:14px}
.guest-cta .gc-go{background:#FFB000;color:#fff;font-weight:900;border-radius:14px;padding:10px 14px;white-space:nowrap;box-shadow:0 4px 0 #C98A00}
.class-strip{margin:14px 0 0;padding:8px 14px;border-radius:16px;background:rgba(255,255,255,.75);font-size:15px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center}
.node-pin{position:absolute;top:-10px;right:-6px;transform:rotate(12deg)}.node-pin img{width:34px;height:34px}
.code-modal .cm-em{margin-bottom:4px}.code-modal p{font-size:17px}
.pcode-card{text-align:center}
.pcode-box{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:26px;font-weight:800;letter-spacing:.08em;background:#F5F3FF;border:3px solid #D9D1FF;border-radius:18px;padding:14px;margin:10px auto;word-break:break-word;max-width:560px;line-height:1.5}
@media (max-width:480px){.code-form{grid-template-columns:1fr}.code-input{font-size:24px}.guest-cta .gc-go{display:none}.pcode-box{font-size:20px}}

/* Short phone (e.g. 390x640): avoid mic/bubble/retry collisions */
@media (max-width:420px) and (max-height:700px){
  .pr-ollie{min-height:auto;gap:6px;margin-bottom:4px}
  .pr-ollie .ollie-wrap{width:56px}
  .pr-ollie .bubble{max-width:min(260px,72vw);font-size:.95rem;line-height:1.35;padding:8px 10px;font-weight:700}
  .pr-ollie .bubble.mic-err{max-width:min(260px,72vw)}
  .pr-pic{width:88px;height:88px;border-radius:28px;margin-bottom:4px}.pr-pic .pic{width:58px;height:58px}
  .pr-sentence{font-size:clamp(24px,6vw,36px);margin-bottom:2px}
  .pr-de{font-size:15px;margin-bottom:4px}
  .melody{font-size:.85rem;padding:4px 10px;gap:4px;margin:2px auto}
  .mel-arrow{font-size:16px}
  .pr-controls{margin:8px 0 2px;gap:6px}
  .pr-controls .btn{font-size:.98rem;min-height:42px;padding:8px 14px}
  .listen-btn,.pr-controls .btn[data-a="listen"],.pr-controls .btn[data-a="slow"]{min-height:42px;font-size:.98rem;font-weight:600;padding:8px 14px}
  .mic{width:96px;height:96px}
  .mic .mic-em{width:46px;height:46px}
  .mic-zone{margin-top:4px;gap:4px}
  .mic-retry{min-height:48px;margin-top:4px;font-size:.95rem;padding:10px 18px}
  .pr-card{padding:12px 10px 14px}
  .feedback{padding:12px;margin-top:8px}
  .live{min-height:18px;font-size:15px}
  .practice{gap:8px}
}

/* v11: Feedback-Sterne – verdiente Sterne kräftig gold, unverdiente klar leer (nicht mit Karten-Sternen verwechseln) */
.stars3 .s{position:relative;display:inline-block}
.stars3 .s:not(.on) img{opacity:.22!important;filter:grayscale(1) brightness(1.15)!important}
.stars3 .s.on img{opacity:1!important}
/* v11: Freies Sprechen im Fokus – großes Mikro, Ideen klein/eingeklappt */
.mic.mic-free{width:168px;height:168px;margin:6px 0 2px}
.mic.mic-free .mic-em{width:80px;height:80px}
.free-speak-hint{font-size:1.1rem;font-weight:700}
.free-type{max-width:420px;width:100%;opacity:.9}
.free-type .input{font-size:.95rem}
.ideas{width:100%;max-width:560px;text-align:center;margin-top:2px}
.ideas summary{cursor:pointer;display:inline-block;font-size:.9rem;font-weight:600;color:#6b6790;padding:6px 12px;border-radius:999px;list-style:none}
.ideas summary::-webkit-details-marker{display:none}
.ideas summary::after{content:" ▸"}.ideas[open] summary::after{content:" ▾"}
.sugg-small{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:6px}
.chip-big.chip-idea{font-size:.85rem;padding:6px 11px;min-height:34px;border-width:1px;color:#5a5677}
@media (max-width:420px){.mic.mic-free{width:150px;height:150px}}
/* v11: Meine Sätze (freies Sprechen) */
.freelog{margin-top:16px;padding:12px 14px}
.freelog summary{cursor:pointer;font-size:1.1rem;list-style:none;display:flex;align-items:center;gap:8px}
.freelog summary::-webkit-details-marker{display:none}
.freelog summary::after{content:"▸";margin-left:auto;color:#8a86a8}.freelog[open] summary::after{content:"▾"}
.fl-count{background:var(--violet,#6C4BFF);color:#fff;border-radius:999px;font-size:.8rem;padding:2px 9px;font-weight:700}
.fl-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.fl-item{display:flex;align-items:center;gap:8px;background:#FAF9FF;border-radius:14px;padding:6px 8px}
.fl-play{flex:none;width:40px;height:40px;border-radius:50%;background:#fff;border:2px solid #e2dcff;display:grid;place-items:center}
.fl-text{flex:1;min-width:0;flex-direction:column;align-items:flex-start;gap:2px;padding:4px 6px!important;background:none!important}
.fl-de{font-weight:600;color:#4a4766;font-size:.92rem}
.fl-meta{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.fl-meta small{color:#8a86a8;font-size:.75rem}
.fl-stars .s{font-size:1.15rem;line-height:1;color:#d9d6e8;opacity:.6}
.fl-stars .s.on{color:#FFB800;opacity:1;text-shadow:0 0 6px rgba(255,190,0,.9),0 1px 0 #E09000}
