/* Touch layout. Keep browser zoom available and respect device cutouts. */
html{-webkit-text-size-adjust:100%;scroll-padding-bottom:110px}
body{overflow-wrap:anywhere}
main,section,.workspace,.layout,.layout>*,.box,.course-form>*,.routine>*,.rubric-row>*,.course-module summary>span{min-width:0}
button,a,input,textarea,select,summary{-webkit-tap-highlight-color:transparent}
button,summary{touch-action:manipulation}
input,textarea,select{max-width:100%}
textarea{resize:vertical;scroll-margin-block:100px}
input[type=checkbox]{accent-color:#69aa42;flex-shrink:0}
.row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.menu button{min-height:48px}
.order-row>span:first-child{min-width:0}
.order-row>span:last-child{display:flex;gap:8px;flex-shrink:0}
.order-row button{min-width:44px;min-height:44px}
.key{flex-shrink:0}
.course-module>summary{min-height:80px}
.course-module>summary>span:nth-child(2){flex:1}
.module-status{flex-shrink:0}
.final-check,.module-content>label.tiny,.history>label.tiny,.box>label.tiny{display:flex;align-items:flex-start;gap:10px;min-height:44px;padding-block:10px}
.final-check input,.module-content>label.tiny input,.history>label.tiny input,.box>label.tiny input{width:21px;height:21px;margin:0}
@media(max-width:760px){
 .shell{display:block}
 aside{position:fixed;inset:auto 0 0;height:auto;min-height:74px;z-index:4;padding:6px max(6px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));background:#fff;border-top:1px solid #dfe7ed;border-right:0;box-shadow:0 -4px 20px #20324708}
 aside .logo,.side-note{display:none}
 .menu{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;margin:0}
 .menu button{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:4px;min-width:0;min-height:57px;padding:5px 1px;font-size:10px;line-height:1.2;border:0;border-radius:10px;letter-spacing:0}
 .menu button span{font-size:22px;line-height:25px}
 .menu button.on{background:#edf6e7;color:#3a7727}
 .workspace{padding:0 max(16px,env(safe-area-inset-right)) calc(105px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
 .top{padding:16px 0;gap:12px}
 .top strong{font-size:11px;letter-spacing:.5px}
 .pills{gap:12px;font-size:12px;flex-shrink:0}
 .layout{grid-template-columns:minmax(0,1fr);gap:20px;padding-top:22px}
 .rail{display:block}.rail .coach,.rail .week-box{display:none}.rail .box{margin-bottom:16px}
 .box{padding:20px 18px;border-radius:16px}
 h1{font-size:28px;line-height:1.25}
 p{font-size:15px;line-height:1.75;color:#60768b}
 .tiny{font-size:12px;line-height:1.65;color:#718498}
 .intro{font-size:11px;line-height:1.6;letter-spacing:1.1px}
 .btn{min-height:50px;max-width:100%;padding:15px 18px;font-size:13px;white-space:normal;line-height:1.5}
 .box>.btn,.module-content p>.btn,.final-project>.btn,.final-project>p>.btn{width:100%}
 .course-hero{margin-top:20px;padding:27px 22px;border-radius:20px}
 .course-hero h1{font-size:32px;line-height:1.2}
 .course-hero p{font-size:14px}
 .course-badges{gap:8px;display:grid;grid-template-columns:1fr 1fr}
 .course-badges span{padding:8px 9px;font-size:10px;line-height:1.5;text-align:center}
 .course-metrics{margin:16px 0 22px;grid-template-columns:1fr 1fr}
 .course-metrics>div{padding:18px 16px}
 .course-metrics>div:last-child{grid-column:1/-1;border-top:1px solid #e0e7ee}
 .course-metrics b{font-size:21px;line-height:1.4}
 .course-metrics span{font-size:12px}
 .course-form{grid-template-columns:minmax(0,1fr);gap:0}
 .course-form input,.rubric-row select,.note,.numeric{font-size:16px;min-height:50px;line-height:1.6}
 .note{min-height:160px;padding:13px}
 .course-form input[type=date]{min-width:0;min-height:52px;display:block;width:100%;appearance:none;-webkit-appearance:none}
 .field-label,.course-form label{font-size:14px;line-height:1.5}
 .routine{grid-template-columns:1fr 1fr;gap:20px 14px}
 .routine b{font-size:12px;line-height:1.5}
 .routine p{font-size:13px}
 .course-module>summary{padding:17px 14px;gap:11px}
 .course-module summary strong{font-size:15px;line-height:1.5}
 .course-module summary small{font-size:11px;line-height:1.5}
 .module-index{width:36px;height:42px;font-size:17px}
 .module-content{padding:0 16px 20px}
 .module-content ol{padding-left:22px}
 .module-content li{font-size:15px}
 .module-status{font-size:23px}
 .outcome{padding:16px}
 .final-project{padding:20px 16px;border-radius:18px}
 .final-project h2{font-size:23px;line-height:1.4}
 .rubric-row{grid-template-columns:minmax(0,1fr)}
 .rubric-row .evidence{grid-column:1;min-height:110px;font-size:16px}
 .rubric-row select{width:100%;padding:13px}
 .final-check{font-size:14px;line-height:1.7}
 .skill-grid{grid-template-columns:minmax(0,1fr)}
 .node-wrap{width:200px;max-width:calc(100% - 64px)}
 .node-wrap:nth-child(3n+1){transform:translateX(-28px)}
 .node-wrap:nth-child(3n+2){transform:translateX(28px)}
 .node-label{font-size:14px;line-height:1.5}
 .node-sub{font-size:12px;line-height:1.5}
 .chapter{padding:22px 19px}
 .chapter h2{font-size:22px;line-height:1.35}
 .lesson{margin:0 auto;padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));min-height:100vh;min-height:100dvh}
 .lesson-top{position:sticky;top:0;background:#f7f9fc;z-index:2;gap:12px;margin:0 -4px 22px;padding:8px 4px;border-bottom:1px solid #e6ecf2}
 .lesson-top .icon-btn{min-height:44px;min-width:44px}
 .lesson-top .track{min-width:0}
 .lesson-top small{font-size:12px}
 .lesson h1{font-size:25px;line-height:1.35}
 .exercise{min-height:0;padding-bottom:10px}
 .scenario{padding:15px;font-size:14px;line-height:1.8;margin:20px 0}
 .option{min-height:60px;padding:15px 12px;gap:11px;font-size:15px;line-height:1.6;align-items:flex-start}
 .option .key{margin-top:2px}
 .order-row{padding:12px;gap:10px;font-size:14px;line-height:1.6}
 .bottom{position:sticky;bottom:0;z-index:3;display:flex;flex-direction:column;gap:10px;padding:14px 0 calc(12px + env(safe-area-inset-bottom));margin:16px 0 0;background:#f7f9fc;border-top:1px solid #dfe7ee}
 .bottom .btn{width:100%;min-height:52px;order:0}
 .bottom>.tiny{order:1;text-align:center;font-size:11px}
 .feedback{padding:18px;margin-top:22px}
 .feedback p{font-size:14px}
 .summary{padding-top:24px}
 .summary .mascot{width:92px;height:92px;font-size:50px}
 .summary h1{font-size:28px}
 .summary-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:23px 0}
 .summary-stats .box{min-width:0;padding:15px 6px;margin:0}
 .summary-stats strong{font-size:23px}
 .summary-stats .tiny{font-size:9px}
 .summary .row{display:grid;grid-template-columns:1fr;gap:14px}
 .summary .row>.btn{width:100%}
 .import input{display:block;width:100%;margin-top:12px;font-size:13px;padding:10px 0;min-height:48px}
 .import input::file-selector-button{border:1px solid #d4dfe9;border-radius:8px;padding:12px;background:#edf2f8;color:#425b70;max-width:100%;margin-right:9px}
 .toast{bottom:calc(90px + env(safe-area-inset-bottom));width:max-content;max-width:calc(100% - 32px);padding:14px 18px;font-size:13px;line-height:1.6}
 details,textarea,input{scroll-margin-top:85px}
}
@media(max-width:390px){
 .top strong{font-size:0;letter-spacing:0}.top strong:before{content:'LEAD';font-size:19px;color:#47723d;letter-spacing:1px}
 .pills{gap:10px;font-size:11px}
 .course-hero{padding:24px 18px}.course-hero h1{font-size:29px}
 .routine{grid-template-columns:1fr;gap:12px}
 .order-row{align-items:flex-start;flex-direction:column}
 .order-row>span:last-child{align-self:flex-end}
 .summary-stats strong{font-size:21px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
