/* 尺寸与滚动规则独立于原始视觉：由实际导航高度分配可用空间。 */
html{height:100%;scroll-behavior:auto}
body{height:100vh;height:100dvh;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}
button,input,select,textarea,a{touch-action:manipulation}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #97b3e7;outline-offset:2px}
.proto-nav{position:relative;min-width:0;gap:10px;padding:10px 20px;padding-top:max(10px,env(safe-area-inset-top,0px))}
.proto-nav .brand{min-width:0;overflow-wrap:anywhere}
.proto-tabs{min-width:0;align-items:center}
.proto-tabs button,.proto-tabs a{min-height:40px;display:inline-flex;align-items:center;justify-content:center;white-space:normal;text-align:center}
.stage{min-height:0;overflow:auto;padding:20px;align-items:stretch}
.phone-wrap{display:grid;grid-template-columns:minmax(0,420px) minmax(0,300px);gap:26px;align-items:stretch;width:100%;max-width:746px;min-height:0;height:100%}
.phone{width:100%;height:100%;max-height:900px;min-width:0;min-height:0;padding:10px;border-radius:40px}
.screen{min-width:0;min-height:0;border-radius:30px}
.screens{min-width:0;min-height:0;flex:1 1 0}
.pg{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scroll-padding:16px;animation:none}
.pg>*{flex-shrink:0}
.pg-body{flex:none;min-width:0;overflow:visible;padding:0 clamp(12px,4vw,20px) 24px}
.pg-head{position:sticky;top:0;z-index:4;align-items:flex-start;min-width:0;padding:10px 16px;background:var(--bg)}
.pg-head h3{min-width:0;overflow-wrap:anywhere;line-height:1.5;padding-top:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pg-head .back-btn{width:42px;height:42px;flex:none;font-size:24px}
.tabbar,.screen.care .tabbar{height:auto;min-height:64px;flex:0 0 auto;padding:4px max(4px,env(safe-area-inset-right,0px)) max(4px,env(safe-area-inset-bottom,0px)) max(4px,env(safe-area-inset-left,0px))}
.tabbar button{min-width:0;min-height:52px;padding:5px 4px;line-height:1.4}
.screen.care .tabbar button{min-height:64px}
#message{flex:none;max-height:25%;overflow:auto;overflow-wrap:anywhere}
.side-notes{min-width:0;width:auto;max-width:none;align-self:start}
.pg-login{justify-content:flex-start;padding:clamp(18px,7vh,60px) 0 20px}
.login-hero{margin-top:0;padding:0 clamp(18px,6vw,30px);margin-bottom:24px}
.login-panel{padding:0 clamp(18px,6vw,24px) 12px}
.form{min-width:0;padding:0 clamp(12px,4vw,24px) 24px}
.form input,.form select,.form textarea{min-width:0;max-width:100%;font-size:16px;line-height:1.5;min-height:48px}
.form textarea{min-height:180px;resize:vertical;overflow:auto}
.form input[type=date]{display:block;-webkit-appearance:none;appearance:none}
.form label,.service-note,.panel-card,.panel-card p,.task,.q-stem,.q-opt,.reading-material,.msg .bubble,.plan-hero,.progress-row,.me-card{overflow-wrap:anywhere;word-break:normal;min-width:0}
.btn-primary,.btn-ghost{min-height:48px;line-height:1.5;white-space:normal;overflow-wrap:anywhere}
.q-stem{font-size:16px;line-height:1.8;white-space:pre-wrap}
.q-opt{min-height:50px;font-size:16px;line-height:1.6}
.q-opt .k{flex:none}.q-opt>span:last-child{flex:1;min-width:0}
.quiz-top,.home-date,.gap-hero .label,.gap-hero .scale,.streak-line,.sec-title,.slice-meta{gap:8px;flex-wrap:wrap}
.quiz-top .qn{flex-shrink:0}.quiz-top>span:last-child{min-width:0}
.home-date b{max-width:100%;overflow-wrap:anywhere}
.gap-hero .gap-num.text{font-size:clamp(23px,6.4vw,30px);line-height:1.4;letter-spacing:0}
.gap-hero .scale>span{min-width:0}
.row-actions{min-width:0}.row-actions>*{min-width:0;flex:1 1 0}
.panel-card h4{overflow-wrap:anywhere}
.progress-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start}
.progress-row>b{white-space:normal;text-align:right}
.me-card>div:last-child{min-width:0}.me-list .grow{min-width:0}
.catalog-tabs button{min-height:44px;flex:0 1 auto;line-height:1.5}
.reading-material summary{min-height:44px;line-height:1.6}
.reading-material p{font-size:16px;line-height:1.85}
.chips{position:static;min-width:0}.chips button{min-height:44px;white-space:normal;text-align:left;max-width:100%}
.share-card::before{content:""}.share-card .sc-foot{gap:12px;flex-wrap:wrap}
.screen.care .q-stem,.screen.care .q-opt,.screen.care .panel-card p,.screen.care .form label,.screen.care .form input,.screen.care .form select,.screen.care .form textarea,.screen.care .reading-material p,.screen.care .reading-material summary,.screen.care .service-note,.screen.care .msg .bubble,.screen.care .chips button{font-size:19px;line-height:1.85}
.screen.care .btn-primary,.screen.care .btn-ghost,.screen.care .catalog-tabs button{min-height:56px;font-size:19px}
.screen.care .progress-row{grid-template-columns:minmax(0,1fr);font-size:17px}.screen.care .progress-row>b{text-align:left}
@media(max-width:1023px){
 .stage{padding:0;overflow:hidden}.phone-wrap{grid-template-columns:minmax(0,1fr);max-width:none;gap:0}
 .phone{width:100%;max-height:none;padding:0;border-radius:0;box-shadow:none;background:var(--bg)}
 .screen{border-radius:0}.statusbar,.side-notes{display:none}
 .pg-body,.home-top,.home-cta,.form{padding-left:max(18px,env(safe-area-inset-left,0px));padding-right:max(18px,env(safe-area-inset-right,0px))}
 .proto-nav{padding:8px max(12px,env(safe-area-inset-right,0px)) 8px max(12px,env(safe-area-inset-left,0px));padding-top:max(8px,env(safe-area-inset-top,0px));flex-wrap:nowrap}
 .proto-nav .brand{font-size:13px;flex:1}.proto-nav .brand small{display:none}.proto-tabs{margin-left:0;flex:none;gap:0}
 .proto-tabs #show-student{display:none}.proto-tabs a{display:inline-flex;font-size:0;padding:7px 12px;min-height:40px}
 .proto-tabs a::after{content:"老师后台";font-size:12px}
}
@media(min-width:601px) and (max-width:1023px){
 .pg-body,.home-top,.home-cta,.form{padding-left:max(24px,calc((100% - 680px)/2),env(safe-area-inset-left,0px));padding-right:max(24px,calc((100% - 680px)/2),env(safe-area-inset-right,0px))}
 .login-hero,.login-panel{width:min(100%,540px);margin-left:auto;margin-right:auto}
}
@media(max-width:359px){.pg-body,.home-top,.home-cta,.form{padding-left:12px;padding-right:12px}.q-stem{padding:13px}.q-opt{padding:11px 12px;gap:8px}.progress-row{grid-template-columns:minmax(0,1fr)}.progress-row>b{text-align:left}.home-date{align-items:flex-start}.gap-hero{padding:16px 14px}}
@media(max-height:500px){.proto-nav{padding-top:4px;padding-bottom:4px}.proto-tabs a{min-height:36px}.tabbar,.screen.care .tabbar{min-height:52px}.tabbar button{min-height:44px}.screen.care .tabbar button{min-height:52px}.pg-login{padding-top:18px}.login-mark{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.stamp{transform:rotate(-8deg) scale(1)}}

.resource-entry{margin-bottom:14px}.resource-filters{padding:0}.resource-filters input,.resource-filters select{width:100%}.resource-filters label{display:block}

#care-exit[hidden]{display:none}.care-exit{flex:0 0 auto;min-height:44px;border:0;border-top:1px solid var(--line);background:var(--accent-faint);color:var(--accent-d);font-size:16px;padding:8px 12px;line-height:1.5}
[hidden]{display:none!important}

.review-stem{white-space:pre-wrap;overflow-wrap:anywhere;font-weight:600}.review-option{padding:8px;border:1px solid var(--line);border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere}.review-correct{background:#edf5ed;border-color:#54855b}.review-selected{border-color:var(--risk)}.review-option span{font-size:12px}
