/* One opaque drawing surface per map. Applies in windowed classroom use too. */
body.mvStableRaster :is(.mapStage,.euCanvas,.worldCanvas,#mfMapCanvas,#usStage,#cnStage){background:#d9ebee!important;background-image:none!important;overflow:hidden;contain:paint;isolation:isolate}
body.mvStableRaster .mapStage::before{content:none!important;background-image:none!important}
body.mvStableRaster :is(.worldGraticule,rect[fill="url(#euGrid)"],rect[fill="url(#rfGrid)"],rect[fill="url(#efGrid)"],rect[fill="url(#npGrid)"]){display:none!important}
body.mvStableRaster :is(#mainMap,#canaryMap,#euMap,#rfMap,#efMap,#npMap,#worldSvg,#wpSvg,#mfSvg,#usMapLower,#usMapAlaska,#usMapHawaii,#cnMap){overflow:hidden;filter:none!important;transition:none!important;animation:none!important}
body.mvStableRaster :is(#mainMap,#canaryMap,#euMap,#rfMap,#efMap,#npMap,#worldSvg,#wpSvg,#mfSvg,#usMapLower,#usMapAlaska,#usMapHawaii,#cnMap) *{filter:none!important;transition:none!important;animation:none!important}
body.mvStableRaster :is(.mvToastPlaying,.mvMapPulse,.mvCounterPulse,.mvContinueHint){animation:none!important;transition:none!important}
body.mvStableRaster .province:not(.group):not(.correct):not(.visited):not(.selected):not(.conquestCurrent):not(.conquered):not(.routeDone):not(.handDone):not(.targetHint):not(.guessedWrong){fill:#c2d3cf;stroke:#668c8d;opacity:1;stroke-width:1.35}
body.mvStableRaster .province.dimmed{opacity:1!important}
body.mvStableRaster .npProvince:not(.npCorrect):not(.npHint):not(.npWrong):not(.npHintGroup){fill:#c6d9d2;stroke:#72918e;stroke-width:1.35}
body.mvStableRaster .euCountry:not(.euSelected):not(.euCorrect):not(.euHint):not(.euWrong):not(.euJourneyFocus):not(.euJourneyDone){stroke:#72918e;stroke-width:1.3}
body.mvStableRaster :is(.photoImage,.npPhotoStage img){filter:none!important}
.mvDisplaySettings{margin:16px 0 0;padding:12px;border:1px solid #bed2cc;border-radius:12px;color:#234e59;background:#f0f7f1;font-size:16px}
.mvDisplaySettings legend{font-weight:850}.mvDisplaySettings p{line-height:1.4;margin:0 0 10px}.mvDisplaySettings>div{display:flex;gap:8px;flex-wrap:wrap}.mvDisplaySettings button{min-height:44px;border:1px solid #9ebfb5;background:white;color:#214d58;border-radius:9px;padding:8px 12px;font:750 16px system-ui}.mvDisplaySettings button[aria-pressed=true]{background:#175d69;color:white;border-color:#175d69}
/* The same touch layout remains mounted in Full HD and 4K. */
body.mvTablet{--mv-board-font:clamp(16px,1.2vw,28px);--mv-board-title:clamp(22px,1.75vw,44px);--mv-board-control:clamp(44px,3vw,72px);--mv-board-bar:clamp(60px,calc(60px + (100vw - 1400px)*.025),104px)}
body.mvTablet .mvTabletBar{height:calc(var(--mv-board-bar) + env(safe-area-inset-top,0px));padding:8px 12px;gap:12px}
body.mvTablet .mvTabletIcon{width:var(--mv-board-control);height:var(--mv-board-control);min-width:var(--mv-board-control);font-size:clamp(24px,1.7vw,36px)}
body.mvTablet .mvTabletIcon svg{width:clamp(25px,1.65vw,36px);height:clamp(25px,1.65vw,36px)}
body.mvTablet .mvTabletIdentity strong{font-size:clamp(15px,1.15vw,28px)}body.mvTablet .mvTabletIdentity span{font-size:clamp(10px,.7vw,16px)}
body.mvTablet .mvTabletMode{width:clamp(185px,30vw,540px);min-height:var(--mv-board-control);font-size:var(--mv-board-font)}
body.mvTablet.mvDesktop :is(#app:not(.mobileApp),#euApp,#rfApp,#efApp,#npApp,#worldApp,#wpApp,#mfApp,#usApp,#cnApp){padding-top:calc(var(--mv-board-bar) + env(safe-area-inset-top,0px))!important}
body.mvTablet :is(.mvTabletFoot,.euPanel){font-size:var(--mv-board-font)!important}
body.mvTablet :is(#mobileTaskTitle,.euTask h1,.worldMobileQuestion,#mfTaskTitle,#usQuestion,#cnQuestion){font-size:var(--mv-board-title)!important;line-height:1.2!important}
body.mvTablet :is(#mobileTaskMeta,.euTaskMeta,.worldMobileMeta,#mfTaskMeta,#usOverline,#cnOverline){font-size:clamp(13px,.85vw,21px)!important}
body.mvTablet :is(#mobileDockBody,.euDetails,.euInstruction,.worldMobileInstruction,#mfTaskHint,#usInstruction,#cnInstruction,#usSelectedCard,#cnInfo){font-size:var(--mv-board-font)!important;line-height:1.4}
body.mvTablet :is(.mvTabletFoot,.euPanel) :is(button,.btn,.euChoice,.wpAnswer,.mobileAnswer){min-height:var(--mv-board-control)!important;font-size:var(--mv-board-font)!important;line-height:1.25}
body.mvTablet :is(.euMapTools,.mvTabletMapTools) button,body.mvTablet #app .mapActions .btn,body.mvTablet :is(.usMapButtons,.cnMapButtons) button{width:var(--mv-board-control)!important;height:var(--mv-board-control)!important;min-height:var(--mv-board-control)!important}
body.mvTablet :is(.euMapTools,.mvTabletMapTools) button svg,body.mvTablet #app .mapActions .btn svg{width:clamp(22px,1.5vw,34px);height:clamp(22px,1.5vw,34px)}
body.mvTablet .mvContinueHint{font-size:clamp(16px,1vw,26px);max-width:calc(100% - 28px)}
@media(min-width:1700px){
 body.mvTablet :is(.mobileDialog,.worldSettingsDialog,.mvTabletDialog,#mfDialog){width:min(980px,94vw)!important;font-size:var(--mv-board-font)}
 body.mvTablet dialog :is(button,select,input){min-height:var(--mv-board-control)!important;font-size:var(--mv-board-font)!important}
 body.mvTablet dialog :is(label,p,.fieldLabel){font-size:var(--mv-board-font)}
 body.mvTablet .mvDisplaySettings{font-size:var(--mv-board-font)}
}
@media(orientation:landscape){
 body.mvTablet.mvDesktop #app:not(.mobileApp) .mobileWorkspace,body.mvTablet.mvDesktop :is(.euWorkspace,.worldWorkspace,.usWorkspace,.cnWorkspace){grid-template-columns:minmax(0,1fr) clamp(300px,27vw,640px)!important}
 body.mvTablet.mvDesktop #mfApp{grid-template-columns:minmax(0,1fr) clamp(300px,27vw,640px)!important}
 body.mvTablet :is(.mvTabletFoot,.euPanel){padding:clamp(14px,1.1vw,28px)!important;gap:clamp(8px,.7vw,18px)}
 body.mvTablet #app .mapStage{grid-template-rows:minmax(0,1fr) clamp(92px,7vw,160px)!important}
 body.mvTablet.mvDesktop #app:not(.mobileApp) .inset{width:clamp(260px,20vw,600px)!important;grid-template-columns:minmax(180px,1fr) clamp(80px,6vw,140px);grid-template-rows:clamp(18px,1vw,30px) minmax(0,1fr)}
 body.mvTablet #app .inset h4{font-size:clamp(10px,.7vw,17px)}body.mvTablet .mvTabletCanaryButton{font-size:clamp(12px,.85vw,20px);max-width:140px;min-height:var(--mv-board-control)}
 body.mvTablet #app.mvTabletCanaries .mapStage{grid-template-rows:minmax(0,1fr)!important}
 body.mvTablet .npApp .npChoiceGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
 body.mvTablet :is(.usWorkspace,.cnWorkspace){padding:0!important;gap:0!important}
}
