/* Stable touch navigation: never transform the page or its fixed controls. */
#mobileSwipeSurface{transform:none!important;backface-visibility:visible!important;-webkit-backface-visibility:visible!important;will-change:auto!important}
@media(max-width:900px){
 #mobileSwipeSurface{touch-action:pan-y pinch-zoom}
 #mobileSwipePreview{position:fixed;inset:auto 16px calc(84px + env(safe-area-inset-bottom)) 16px;z-index:146;width:auto;max-width:420px;margin:auto;min-height:64px;display:flex;border:1px solid var(--line2);border-radius:12px;background:var(--bg3,#15161a);box-shadow:0 8px 24px #0005;opacity:0;visibility:hidden;overflow:hidden;pointer-events:none;transition:opacity 100ms ease,visibility 100ms}
 #mobileSwipePreview.show{visibility:visible;opacity:1}
 #mobileSwipePreview::before{inset:auto 0 0;height:3px;background:var(--gold,#c4b08a);transform:scaleX(var(--swipe-progress,0));transform-origin:left;transition:none}
 #mobileSwipePreview[data-dir=prev]::before{transform-origin:right}
 #mobileSwipePreview .mobile-swipe-preview-inner{display:block;width:100%;max-width:none;box-sizing:border-box;padding:12px 40px 12px 16px;transform:none;opacity:1;text-align:left}
 #mobileSwipePreview .mobile-swipe-preview-inner span{display:block;letter-spacing:0;text-transform:none;font-size:11px;font-weight:400;color:var(--muted)}
 #mobileSwipePreview .mobile-swipe-preview-inner strong{display:block;margin-top:3px;font-size:16px;font-weight:600;color:var(--text);overflow-wrap:anywhere}
 #mobileSwipePreview .mobile-swipe-preview-inner::after{position:absolute;right:15px;top:16px;margin:0;font-size:28px;color:var(--gold)}
}
@media(pointer:coarse), (max-width:900px){
 body :is(#content,.modal,#festivalChrome) button,body :is(#content,.modal) summary{min-height:44px!important;height:auto!important}
 body :is(#content,.modal) :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]){min-height:44px!important}
 body :is(#content,.modal) :is(.btn.icon,.ro-remove-person,[data-action=del-act]){min-width:44px!important}
 body :is(#content,.modal) :is(.ro-conflict-switch,.ro17-check){min-height:44px;align-items:center}
 body[data-view=festival] #content #addDay:not(.ro-page-context, .ro-page-context *),body .ro-page-context[data-view=festival] #content #addDay{min-height:44px!important;height:auto!important}
}
@media(max-width:1100px){
 body[data-view=admin] #content .ro17-activity-row:not(.ro-page-context, .ro-page-context *),body .ro-page-context[data-view=admin] #content .ro17-activity-row{grid-template-columns:minmax(0,1fr) auto!important;gap:8px!important;align-items:center}
 body[data-view=admin] #content .ro17-activity-row>.drag:not(.ro-page-context, .ro-page-context *),body .ro-page-context[data-view=admin] #content .ro17-activity-row>.drag{display:none}
 body[data-view=admin] #content .ro17-activity-row>.actname:not(.ro-page-context, .ro-page-context *),body .ro-page-context[data-view=admin] #content .ro17-activity-row>.actname{grid-column:1/-1;width:100%;min-width:0}
 body[data-view=admin] #content .ro17-activity-row>.ro17-check:not(.ro-page-context, .ro-page-context *),body .ro-page-context[data-view=admin] #content .ro17-activity-row>.ro17-check{min-width:0;white-space:normal}
 body[data-view=admin] #content .ro17-activity-row>[data-action=save-act]:not(.ro-page-context, .ro-page-context *),body .ro-page-context[data-view=admin] #content .ro17-activity-row>[data-action=save-act]{grid-column:1}
 body[data-view=admin] #content .ro17-activity-row>[data-action=del-act]:not(.ro-page-context, .ro-page-context *),body .ro-page-context[data-view=admin] #content .ro17-activity-row>[data-action=del-act]{grid-column:2}
}
@media(prefers-reduced-motion:reduce){#mobileSwipePreview{transition:none}}

/* Shared header and fixed actions are part of the same page gesture surface. */
@media(max-width:900px){
 .main,.ro-save-dock.on-page,#festivalChrome,#mobilePager,#mobilePager button{touch-action:pan-y pinch-zoom}
 #mobileSwipeSurface.mobile-page-entering{overflow-x:clip}
}

@media(max-width:900px){.main [data-mobile-page-pan]{touch-action:pan-y pinch-zoom}}
