/* Shared exercise density. Keep natural scrolling for long tasks and browser zoom. */
body.exercise-fit{--task-art:clamp(130px,27dvh,235px)}
body.exercise-fit>header,body.exercise-fit .app-portal-nav{min-height:48px;padding-top:8px;padding-bottom:8px}
body.exercise-fit>main,body.exercise-fit main.portal-shell{padding-top:12px!important;padding-bottom:24px!important}
body.exercise-fit main>h1,body.exercise-fit .game-heading>h1{font-size:clamp(1.3rem,2.5vw,1.85rem);line-height:1.2;margin:10px 0 14px}
body.exercise-fit main>header{margin-bottom:8px}
/* Reading practice: remove stacked empty rows and oversized letter margins. */
body.exercise-fit[data-practice] .sheet{padding:16px 20px}
body.exercise-fit[data-practice] .prompt{font-size:clamp(1.15rem,2.3vw,1.45rem);line-height:1.3;margin:14px 0}
body.exercise-fit[data-practice] .target{font-size:clamp(2.8rem,9dvh,5rem);line-height:1.15;margin:14px 0}
body.exercise-fit[data-practice] .passage{font-size:clamp(1.2rem,2.6vw,1.7rem);line-height:1.5;margin:12px 0;padding:14px}
body.exercise-fit[data-practice] .built{font-size:clamp(2rem,6dvh,3rem);line-height:1.1;min-height:0;margin:8px 0}
body.exercise-fit[data-practice] .choices{margin:12px auto;gap:10px}
body.exercise-fit[data-practice] .choice{min-height:64px;padding:10px 16px}
body.exercise-fit[data-practice] .controls{margin-top:12px;gap:9px}
body.exercise-fit[data-practice] .feedback{min-height:0;margin:9px 0}
body.exercise-fit[data-practice] .note:empty,body.exercise-fit[data-practice] .feedback:empty,body.exercise-fit[data-practice] .target:empty{display:none}
body.exercise-fit[data-practice] .note{line-height:1.4;margin:8px 0}
body.exercise-fit[data-lesson] .reading-box{padding:14px 18px}
body.exercise-fit[data-lesson] #target{font-size:clamp(3rem,11dvh,5rem);margin:14px 0}
body.exercise-fit[data-lesson] #note{min-height:0;line-height:1.4;margin:10px 0}
body.exercise-fit .r-card{padding:14px 18px}
body.exercise-fit .r-label{margin:10px 0 6px}
body.exercise-fit .r-letter{min-height:0;font-size:clamp(5rem,21dvh,9rem);line-height:1.1;padding:10px 0}
body.exercise-fit .r-blend{min-height:0;font-size:clamp(2.6rem,12dvh,5rem);padding:16px 0}
body.exercise-fit .r-art img{height:var(--task-art)}
body.exercise-fit .r-choices{margin:12px 0;gap:10px}
body.exercise-fit .r-choice{min-height:82px;padding:8px}
body.exercise-fit .r-choice img{height:clamp(90px,19dvh,160px)}
body.exercise-fit .r-controls{margin:12px 0 5px;gap:10px}
/* Spoken words, English, pronunciation and colors. */
body.exercise-fit #game.panel,body.exercise-fit #theme-game.panel{padding:14px 18px}
body.exercise-fit .track{margin:8px 0 10px}
body.exercise-fit .learning .model img{height:var(--task-art)}
body.exercise-fit .controls,body.exercise-fit .en-controls{margin-top:12px;margin-bottom:8px;gap:10px}
body.exercise-fit .en-play{padding:14px 18px}
body.exercise-fit .en-model>img{height:var(--task-art)}
body.exercise-fit .en-picture-choice img{height:clamp(95px,21dvh,175px)}
body.exercise-fit .en-feedback{min-height:0;margin:8px 0}
body.exercise-fit .practice{padding:12px 18px;margin:10px auto 16px}
body.exercise-fit .practice .actions{margin:10px 0}
body.exercise-fit .practice .practice-art{width:clamp(120px,25dvh,200px);margin:8px auto}
body.exercise-fit .practice #feedback{min-height:0;margin:8px 0}
body.exercise-fit .practice .actions button{min-height:52px;padding:10px 20px}
body.exercise-fit .dw .panel{padding:14px 18px;margin:12px 0}
body.exercise-fit .dw .animal{width:var(--task-art)}
body.exercise-fit .dw #prompt{min-height:0;margin:8px 0;line-height:1.4}
body.exercise-fit .dw .controls{margin:12px 0}
body.exercise-fit .colors-app{padding:14px 20px}
body.exercise-fit #color-prompt{margin:12px 0 6px;font-size:clamp(1.35rem,3vw,1.8rem)}
body.exercise-fit .color-model{height:var(--task-art)}
body.exercise-fit .color-options{margin-top:12px;gap:10px}
body.exercise-fit .color-actions{margin:12px 0 6px}
/* Calendar. */
body.exercise-fit .calendar-app{padding:14px 20px}
body.exercise-fit .calendar-app #prompt{margin:12px 0;font-size:clamp(1.2rem,2.4vw,1.6rem)}
body.exercise-fit .calendar-app #view{margin:10px auto}
body.exercise-fit .calendar-app .week-track{margin:14px auto}
body.exercise-fit .calendar-app .week-answers{margin-top:18px}
body.exercise-fit .calendar-app .hero-day{min-height:125px}
body.exercise-fit .calendar-app .week-learn{margin:14px auto}
body.exercise-fit .calendar-app #feedback:empty{display:none}
body.exercise-fit .calendar-app .actions{margin:12px 0 4px}
/* Maths and tests: preserve the work area, shorten surrounding chrome. */
body.exercise-fit .foundation-scene{min-height:0;padding:16px}
body.exercise-fit .f-question-row{min-height:0}
body.exercise-fit .f-question-row h2{margin:8px 0}
body.exercise-fit .f-feedback{min-height:0;margin:8px 0;padding:4px}
body.exercise-fit .foundation-main .shape-choice{min-height:130px}
body.exercise-fit .shape-choice svg{height:clamp(95px,21dvh,160px)}
body.exercise-fit .test-wrap{padding-top:12px}
body.exercise-fit .question-card{padding:16px 20px}
body.exercise-fit .question-card #question-text{margin:10px 0}
body.exercise-fit .question-nav{margin-top:12px}
/* Short displays: reduce decoration before reducing interactive targets. */
@media(max-height:780px){body.exercise-fit{--task-art:clamp(110px,24dvh,185px)}body.exercise-fit .sheet,body.exercise-fit .r-card,body.exercise-fit .calendar-app{padding-top:12px;padding-bottom:12px}body.exercise-fit main>h1{margin:6px 0 10px}body.exercise-fit .r-parent{margin:12px 0}body.exercise-fit[data-practice] .target{margin:10px 0;font-size:clamp(2.6rem,8dvh,4rem)}body.exercise-fit .calendar-app .week-answer>button:first-child{min-height:82px}body.exercise-fit .calendar-app .weekday-card,body.exercise-fit .weekday-slot{min-height:68px}body.exercise-fit .calendar-app .hero-day{min-height:100px}}
@media(max-width:600px){body.exercise-fit>main{padding-left:12px!important;padding-right:12px!important}body.exercise-fit[data-practice] .sheet,body.exercise-fit .calendar-app,body.exercise-fit .r-card,body.exercise-fit .colors-app{padding:12px}body.exercise-fit[data-practice] .choice{min-height:60px;padding:9px;font-size:1.2rem}body.exercise-fit[data-practice] .tile{font-size:2rem}body.exercise-fit .controls button,body.exercise-fit .en-controls button,body.exercise-fit .r-controls button{min-height:48px}body.exercise-fit .calendar-app .week-track{margin:10px auto}body.exercise-fit .calendar-app .week-answers{margin:14px auto 8px}}
body.exercise-fit .en-game{padding:14px 18px}
body.exercise-fit .journey-instruction{margin:8px 0;min-height:0}
body.exercise-fit .journey-scene{height:clamp(260px,43dvh,420px)}
body.exercise-fit .f-progress{margin:8px 0}
body.exercise-fit.app-nav-clock .clock{max-width:clamp(220px,38dvh,340px)}
body.exercise-fit.app-nav-clock .bottom{margin-top:10px}
body.exercise-fit.app-nav-clock .panel{padding:16px}
body.exercise-fit .bear-wrap .game-heading,body.exercise-fit .shop-wrap .game-heading{margin:8px 0 12px}
@media(max-height:780px){body.exercise-fit .arena,body.exercise-fit .pair-level .arena{height:clamp(205px,34dvh,265px);min-height:205px}body.exercise-fit .bear-target{max-height:100%}body.exercise-fit .toy-shop{height:calc(100svh - 145px);min-height:400px;max-height:650px}body.exercise-fit .journey-scene{height:clamp(240px,40dvh,330px)}}
