/* Navigation publique : hauteur de viewport stable, 3 panneaux indépendants.
   L'administration et ses formulaires conservent leur défilement normal. */
body[data-admin="0"] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
}
body[data-admin="0"] > header.festival-header {
    flex: 0 0 auto;
}
body[data-admin="0"] main#app {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    min-height: 0;
    width: 100%;
    margin: 0 auto;
    /* Le footer fixe recouvre la zone : l'espace est donné dans les panneaux. */
    padding-bottom: 0;
}
body[data-admin="0"] .public-swipe-stage {
    position: relative;
    flex: 1 1 0;
    width: 100%;
    min-height: 0;
    overflow: hidden;
    touch-action: pan-y;
    overscroll-behavior-x: contain;
    overflow-anchor: none;
}
body[data-admin="0"] .public-swipe-track {
    display: flex;
    align-items: stretch;
    width: 100%;
    height: 100%;
    transform: translate3d(-100%,0,0);
    will-change: transform;
    gap: 16px;
    background: #e4e9ec;
}
body[data-admin="0"] .public-swipe-panel {
    box-sizing: border-box;
    flex: 0 0 100%;
    width: 100%;
    min-width: 0;
    height: 100%;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    touch-action: pan-y;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
    overflow-anchor: none;
    /* La dernière fiche reste atteignable au-dessus du footer. */
    padding: 0 0 calc(96px + env(safe-area-inset-bottom, 0));
    background: var(--paper);
}
body[data-admin="0"] .public-swipe-stage img {
    -webkit-user-drag: none;
    user-select: none;
}
body[data-admin="0"] .public-swipe-stage.is-dragging {
    user-select: none;
}
@media (prefers-reduced-motion: reduce) {
    body[data-admin="0"] .public-swipe-track { transition: none !important; }
}
