/* Shared touch layout for both study pages. */
.phone-controls{display:none}
@media(max-width:760px){
 :root{--phone-controls-height:150px}
 html{scroll-padding-bottom:calc(var(--phone-controls-height) + env(safe-area-inset-bottom));-webkit-text-size-adjust:100%}
 body{min-width:0}
 main{width:100%;padding:20px 12px calc(var(--phone-controls-height) + env(safe-area-inset-bottom) + 24px)}
 button,[role=button],.subject-pages a,.subjects a{min-height:48px;touch-action:manipulation}
 button,input,select{font-size:16px}
 input,select{min-height:48px}
 button,.target,.case-file,.vax-file,.paper{overflow-wrap:anywhere}
 .header-inner,.header{padding:14px 12px;flex-wrap:wrap;gap:12px}
 .subject-pages,.subjects{width:100%;display:flex;order:3;gap:8px}
 .subject-pages a,.subjects a{flex:1;display:flex;align-items:center;justify-content:center;padding:10px 8px;font-size:14px;text-align:center}
 .intro,.titleline{margin-bottom:16px}
 h1{font-size:1.65rem;line-height:1.25}
 .game-tabs,.tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:8px;padding:3px 2px 12px;scroll-snap-type:x proximity;overscroll-behavior-x:contain;scrollbar-width:thin;margin-bottom:12px;max-width:100%}
 .game-tab,.tab{flex:0 0 auto;min-width:0;max-width:82vw;white-space:nowrap;scroll-snap-align:center;padding:12px 14px;font-size:14px;line-height:1.5}
 .game-tab .tab-number{display:inline;font-size:14px}.tab span{margin-right:7px}
 .game-surface{padding:18px 12px}
 .game-actions{flex-wrap:wrap}.game-actions .button{flex:1;font-size:14px}
 .direction,.segmented{min-width:0}.segmented{flex-wrap:wrap}.segmented button{flex:1 1 120px;min-width:0;font-size:14px}
 .progress-row,.progress-copy{flex-wrap:wrap}.progress-track{flex-basis:100%}.progress-copy{white-space:normal}
 .workspace,.reverse-workspace,.schedule-workspace,.adult-workspace{display:flex;flex-direction:column;gap:18px;min-width:0}
 .bank-panel,.schedule-workspace .bank-panel,.adult-workspace .bank-panel,.reverse-workspace .bank-panel{position:static!important;box-shadow:none;max-width:100%;padding:14px 10px}
 .bank-grid,.reverse-bank{display:flex;overflow-x:auto;gap:10px;padding:4px 4px 12px;scroll-snap-type:x proximity;overscroll-behavior-x:contain;scrollbar-width:thin;max-width:100%}
 .bank-grid .card,.reverse-bank .card{flex:0 0 min(240px,75vw);min-height:90px;font-size:16px;line-height:1.5;padding:12px;scroll-snap-align:start;transform:none}
 .bank-grid .card.selected,.reverse-bank .card.selected{padding:11px}.grip{display:none}
 .board-panel{width:100%}.target{scroll-margin-top:16px}.target-notice,.match,.bank-note,.capacity{font-size:14px;line-height:1.6}
 .content-note a{white-space:normal}.content-note{overflow-wrap:anywhere}
 .clinic-top,.vax-header{padding:16px 12px;flex-wrap:wrap}.clinic-score,.vax-score{padding:12px;gap:12px;font-size:14px}
 .clinic-desk,.vax-desk{display:flex;flex-direction:column;padding:16px 12px;gap:18px;min-width:0}
 .waiting-room,.case-file,.stamp-station,.vax-waiting,.vax-file,.vax-tray{width:100%;min-width:0}
 .waiting-room{grid-template-columns:80px minmax(0,1fr);gap:0 12px}.patient-photo{width:80px;height:80px}.patient-speech{font-size:16px;padding:10px}
 .case-file{padding:18px 14px}.file-identity{gap:12px}.measurements strong{font-size:1.85rem}.file-decision{min-height:0}.bmi-calculation{min-height:0}
 .stamp-option{font-size:16px}.bmi-guide>div{grid-template-columns:1fr}.clinic-reset,.vax-reset{font-size:14px}
 .vax-waiting{grid-template-columns:86px minmax(0,1fr);gap:12px}.vax-patient-name{font-size:14px}.vax-patient small{font-size:14px}.vax-speech{font-size:16px;padding:10px}.vax-room-note{font-size:14px;line-height:1.5}
 .vax-bank{grid-template-columns:repeat(2,minmax(0,1fr))}.vax-card{font-size:16px;cursor:pointer}.vax-chip{cursor:pointer}.vax-return{min-width:58px;padding:10px 4px;font-size:14px}.vax-drop{font-size:16px}.vax-file{padding:18px 12px}
 .desk{display:flex;flex-direction:column;gap:14px}.visitor{display:grid;grid-template-columns:60px minmax(0,1fr);gap:0 12px;position:static;width:100%;padding:10px 12px}
 .visitor .portrait{width:60px;grid-row:1/4;margin:0}.visitor h2{font-size:18px}.visitor .role{font-size:14px}.visitor .speech,.visitor .docchip{display:none}
 .paper{width:100%;padding:18px 12px;transform:none;box-shadow:3px 3px 0 #121823}.task-goal{font-size:18px}.case-brief{font-size:16px;line-height:1.65}.optiongrid{grid-template-columns:1fr}.learn-option{min-height:52px;font-size:16px}
 .toolbar{flex-wrap:wrap;gap:12px;padding:12px}.counters{font-size:14px;gap:10px}.toolbar-actions{margin-left:0}.restart{font-size:14px;padding:10px 12px}.subtabs{gap:8px}.subtabs button{flex:1;min-width:0;font-size:14px}
 .learning-intro{padding:12px;font-size:16px;line-height:1.6}.decisions{position:static;display:block;width:100%}.decisions .stamp{max-width:none}.decisions .book,.hintbutton{width:100%;font-size:16px}.nobook{min-height:48px;font-size:14px}
 .raw{padding:12px}.raw dl{grid-template-columns:minmax(0,1fr) minmax(0,1fr);font-size:14px}.raw dt,.raw dd{overflow-wrap:anywhere}
 .fraction-task{padding:16px 10px;gap:10px}.fraction{min-width:0;width:72%}.fraction label{gap:7px}.fraction label input{font-size:16px;min-width:0;padding:10px}.coefficient{font-size:16px}.number-task input{font-size:18px}
 .tablewrap{max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.tablewrap table{min-width:360px;font-size:14px}.tablewrap th,.tablewrap td{padding:9px 7px;line-height:1.45;overflow-wrap:anywhere}
 dialog{width:calc(100vw - 20px);max-height:85vh;max-height:85dvh}.dialoghead{padding:12px;gap:12px}.dialoghead h2{font-size:18px}.close{font-size:16px;flex-shrink:0}.bookcontent{padding:8px 12px 20px}
 .feedback{padding:16px 12px}.feedback,.vax-review,#bmi-result{scroll-margin-top:16px;scroll-margin-bottom:calc(var(--phone-controls-height) + 16px)}.feedback p{font-size:16px}.source-note{font-size:14px!important}.instruction{font-size:14px}.next{width:100%}
 .phone-controls{display:block;position:fixed;inset:auto 0 0;z-index:20;padding:10px max(12px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:#fff;color:#242c3b;border-top:1px solid #e7d9d2;box-shadow:0 -4px 18px #15213920}
 .phone-controls[data-theme=desk]{background:#192231;color:#e6e9ed;border-color:#545c68}
 .phone-selection{font-size:14px;line-height:1.5;margin:0 0 8px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
 .phone-buttons{display:flex;gap:8px}.phone-buttons button{min-width:0;flex:1;padding:11px 8px;border:1px solid #ddcbc2;border-radius:6px;background:#f5f6f9;color:#405373;font:600 14px/1.4 system-ui;min-height:48px}
 .phone-buttons .phone-primary{background:#ff5a14;color:#fff;border-color:#ff5a14;flex:1.6}.phone-controls[data-theme=desk] button{background:#2a3445;border-color:#646b77;color:#e3ece1}.phone-controls[data-theme=desk] .phone-primary{background:#e0c780;color:#302e20;border-color:#e0c780}
 .phone-buttons button:disabled{opacity:.45}.phone-controls[hidden]{display:none!important}
 footer{display:block;overflow-wrap:anywhere;font-size:14px}
}
@media(max-width:560px){
 .history-grid,.core-grid,.principle-grid,.vaccine-groups,.route-grid,.children-grid,.adult-grid{grid-template-columns:1fr}
 .history-grid .target{min-height:120px}.target-head{margin-bottom:10px}.core-grid .target-head{display:flex}.core-index{margin-bottom:0}.core-grid .target{min-height:120px}.principle-grid .target{min-height:120px}
}
@media(max-width:360px){.stamp-options,.vax-bank,.vax-protection>div{grid-template-columns:1fr}.phone-buttons button{font-size:14px;padding-left:5px;padding-right:5px}}
