/* Live maze geometry and independent generated character sprites. */
body.rrdd-adventure #read.penguin-maze .reading-card{background:linear-gradient(#c9f7ffb3,#e8fbffa6),url('art/maze-ocean-v1.webp') center/cover;overflow:hidden!important;padding:8px 12px!important}
body.rrdd-adventure #read.penguin-maze #mini{display:grid!important;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto auto minmax(0,1fr)!important;gap:4px!important;width:100%;max-width:none!important;height:100%;min-height:0}
body.rrdd-adventure #read.penguin-maze #miniRound{grid-row:1;grid-column:1;font-size:12px;line-height:1.2;text-align:center;margin:0}
body.rrdd-adventure #read.penguin-maze #miniQuestion{grid-row:2;grid-column:1;font-size:clamp(22px,3vw,34px)!important;line-height:1.1!important;margin:0!important;padding:0!important;text-align:center;color:#124c70;text-shadow:0 2px white}
body.rrdd-adventure #read.penguin-maze :is(#hearMini,.tap-note,#miniChoices,#confirmMini,#polarBoard,#spellingBoard,#orcaColourBoard,#circusBoard,#fireworkBoard){display:none!important}
body.rrdd-adventure #read.penguin-maze #penguinBoard{grid-row:3;grid-column:1;display:flex!important;flex-direction:column;gap:5px;width:100%;height:100%;min-height:0;overflow:hidden;container-type:size}
.maze-stage{flex:1;min-height:0;min-width:0;display:grid;place-items:center;padding:2px 6px;box-sizing:border-box}
.maze-world{position:relative;isolation:isolate;overflow:hidden;border:4px solid #e8ffff;border-radius:24px;background:#14b3d1 url('art/maze-ocean-v1.webp') center/cover;box-shadow:0 6px 0 #087caa66,0 12px 26px #087caa33;touch-action:none;user-select:none;-webkit-user-select:none;box-sizing:content-box}
.maze-world:focus-visible{outline:3px solid #ffc74e;outline-offset:2px}
.maze-map{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.maze-channel{fill:#069db864;stroke:#b8fbff70;stroke-width:2}
.maze-current{fill:none;stroke:#dcffff;stroke-width:3;opacity:.38;stroke-dasharray:12 8;animation:maze-current 4s linear infinite}
.maze-trail circle{fill:#e5ffffa6;stroke:#73dae9;stroke-width:3}
.maze-penguin,.maze-goal,.maze-hint{position:absolute;transform:translate(-50%,-50%);pointer-events:none}
.maze-penguin{z-index:5;width:calc(94% / var(--cols));height:calc(98% / var(--rows));transition:left .32s ease-in-out,top .32s ease-in-out;filter:drop-shadow(0 5px 3px #14527655)}
.maze-penguin-sprite{display:block;width:100%;height:100%;object-fit:contain;animation:maze-bob 2.2s ease-in-out infinite;transform-origin:center bottom}
.maze-penguin-sprite.maze-face-left{scale:-1 1}
.maze-goal{z-index:3;width:calc(86% / var(--cols));height:calc(86% / var(--rows));filter:drop-shadow(0 0 9px #fff56d);animation:maze-goal 2s ease-in-out infinite}
.maze-goal::before{content:'';position:absolute;inset:-12%;border-radius:50%;background:radial-gradient(circle,#fffbd2aa,transparent 70%);z-index:-1}
.maze-fish{width:100%;height:100%;object-fit:contain}
.maze-hint{z-index:2;width:calc(76% / var(--cols));height:calc(76% / var(--rows));border:4px dashed #ffe16f;border-radius:14px;box-sizing:border-box;box-shadow:0 0 14px #fff8bc;animation:maze-hint 1s ease-in-out infinite}
.maze-bubbles{position:absolute;inset:0;z-index:6;pointer-events:none;overflow:hidden}
.maze-bubbles i{position:absolute;left:calc(12% + var(--i)*11%);bottom:-16px;width:clamp(8px,1.4vw,18px);aspect-ratio:1;border:2px solid #d6ffffcc;border-radius:50%;background:#b7ffff33;box-shadow:inset 1px 2px 2px white;animation:maze-bubble calc(4s + var(--i)*.2s) calc(var(--i)*-.6s) linear infinite}
.maze-swimming .maze-penguin-sprite{animation:maze-waddle .35s ease-in-out 2}
.maze-bump .maze-penguin{animation:maze-bump .35s ease-in-out}
.maze-won .maze-goal{animation:maze-catch .65s ease both}
.maze-won .maze-penguin-sprite{animation:maze-cheer .6s ease 2}
.maze-won .maze-bubbles i{animation-duration:1.1s;background:#fff69c88;border-color:#fff5a6}
.maze-controls{flex:none;display:flex;flex-direction:column;align-items:center;gap:5px;min-height:0}
.maze-message{max-width:100%;margin:0!important;padding:4px 12px;border:2px solid #c5f5ff;border-radius:18px;background:#fffdf0ed;color:#164c6e;font-size:clamp(14px,1.6vw,20px);line-height:1.2;font-weight:800;text-align:center;box-sizing:border-box}
.maze-arrows{display:grid;grid-template-columns:repeat(4,minmax(44px,1fr));gap:10px;width:min(540px,100%)}
.maze-arrow{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-height:64px;padding:3px 8px;background:linear-gradient(#ffed8b,#ffd148);border:3px solid #fffbce;border-radius:20px;color:#125486;box-shadow:0 5px 0 #c78b29,0 7px 10px #177d9b33;touch-action:manipulation;font-weight:900;cursor:pointer}
.maze-arrow:active:not(:disabled){translate:0 3px;box-shadow:0 2px 0 #c78b29}.maze-arrow:disabled{opacity:.55;cursor:default}
.maze-arrow-icon{font:900 38px/1 system-ui;text-shadow:0 2px #ffffc0}.maze-arrow-word{font-size:13px;line-height:1.1}
.maze-arrow-icon svg{width:1em;height:1em;display:block;filter:drop-shadow(0 2px 0 #12548655)}
.maze-tools{display:flex;gap:8px;justify-content:center}.maze-tools button{min-height:44px;padding:4px 12px;border:2px solid #b5e9ed;border-radius:14px;background:#fff8e4;color:#16536e;box-shadow:0 2px 0 #7abcc6;font-size:12px;font-weight:800;touch-action:manipulation}
.maze-paused *{animation-play-state:paused!important}
@keyframes maze-current{to{stroke-dashoffset:-40}}
@keyframes maze-bob{50%{translate:0 -1%}}
@keyframes maze-goal{50%{filter:drop-shadow(0 0 16px #fff890);translate:0 -4%}}
@keyframes maze-bubble{to{translate:12px -700px;opacity:0}}
@keyframes maze-waddle{0%,100%{scale:.92;rotate:0deg}25%{scale:.92;rotate:-4deg}75%{scale:.92;rotate:4deg}}
@keyframes maze-bump{25%,75%{translate:-5px 0}50%{translate:5px 0}}
@keyframes maze-catch{to{scale:.15;opacity:0}}
@keyframes maze-cheer{50%{scale:.85;rotate:5deg}}
@keyframes maze-hint{50%{opacity:.4}}
@media(max-width:700px) and (orientation:portrait){
 body.rrdd-adventure #read.penguin-maze .reading-card{padding:5px 6px!important}
 body.rrdd-adventure #read.penguin-maze #miniQuestion{font-size:23px!important}
 .maze-stage{padding:2px 5px}.maze-world{border-width:3px;border-radius:18px}.maze-arrows{gap:6px}.maze-arrow{min-height:58px;border-radius:16px}.maze-arrow-icon{font-size:32px}.maze-arrow-word{font-size:11px}.maze-message{font-size:13px;padding:3px 8px}.maze-controls{gap:4px}
}
@media(min-width:900px) and (orientation:landscape){
 body.rrdd-adventure #read.penguin-maze #mini{max-width:calc(100dvh + 100px)!important}
 body.rrdd-adventure #read.penguin-maze #penguinBoard{display:grid!important;grid-template-columns:minmax(0,1fr) 260px;grid-template-rows:minmax(0,1fr);gap:12px}
 .maze-stage{grid-column:1;grid-row:1}.maze-controls{grid-column:2;grid-row:1;justify-content:center;gap:14px}.maze-arrows{grid-template-columns:repeat(2,minmax(44px,1fr));gap:12px;width:100%}.maze-arrow{min-height:84px}.maze-tools{width:100%;flex-direction:column}.maze-tools button{font-size:14px}.maze-message{font-size:18px;padding:10px;line-height:1.3}
}
@media(orientation:landscape) and (max-height:500px){
 body.rrdd-adventure #read.penguin-maze #miniQuestion{font-size:21px!important}
 body.rrdd-adventure #read.penguin-maze #penguinBoard{display:grid!important;grid-template-columns:minmax(0,1fr) 220px;grid-template-rows:minmax(0,1fr);gap:8px}
 .maze-stage{grid-column:1;grid-row:1}.maze-controls{grid-column:2;grid-row:1;justify-content:center;gap:4px}.maze-arrows{grid-template-columns:repeat(2,minmax(44px,1fr));gap:5px;width:100%}.maze-arrow{min-height:48px;padding:0 4px;border-radius:13px}.maze-arrow-icon{font-size:26px}.maze-arrow-word{font-size:10px}.maze-message{font-size:12px;padding:2px 6px}.maze-tools{gap:4px;width:100%}.maze-tools button{font-size:10px;padding:2px 4px;min-height:44px;flex:1}.maze-world{border-width:3px;border-radius:16px}
}
@media(prefers-reduced-motion:reduce){.maze-world *{animation:none!important;transition:none!important}}
