/*
  Tsubomi 19.1 — Mobile Stability Layer
  Dernière couche CSS publique : corrige l'empilement du menu, le verrouillage
  du viewport et la coexistence de la barre rapide avec les commandes flottantes.
*/
:root{
  --tsb-menu-layer:1010;
  --tsb-menu-backdrop-layer:990;
  --tsb-mobile-dock-reserve:0px;
}

/* Le voile ne doit jamais flouter le menu, qui vit dans le stacking context du header. */
.site-header{z-index:1000!important;isolation:isolate}
.tsb-menu-backdrop{
  z-index:var(--tsb-menu-backdrop-layer)!important;
  background:rgba(0,0,0,.58)!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
}
.main-nav.open{z-index:var(--tsb-menu-layer)!important}

/* Un menu ouvert devient l'unique interaction prioritaire. */
@media(max-width:1239px){
  body.tsb-menu-open{
    position:fixed!important;
    left:0!important;right:0!important;
    width:100%!important;max-width:100%!important;
    top:var(--tsb-menu-scroll,0px)!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
    touch-action:none!important;
  }
  body.tsb-menu-open .main-nav.open{touch-action:pan-y!important}
  body.tsb-menu-open .main-nav.open a{touch-action:manipulation!important}

  /* Les panneaux secondaires sont temporairement cachés, sans perdre leur état. */
  body.tsb-menu-open .rgpd,
  body.tsb-menu-open .tsubomi-assistant-launcher,
  body.tsb-menu-open .tsubomi-assistant-greeting,
  body.tsb-menu-open .cortex-orb,
  body.tsb-menu-open .cortex-dock,
  body.tsb-menu-open .tsb-easy-dock{
    opacity:0!important;
    visibility:hidden!important;
    pointer-events:none!important;
  }

  .main-nav,.main-nav.open{
    max-height:calc(var(--visual-vh,100vh) - var(--tsb-simple-nav-top,74px) - max(12px,env(safe-area-inset-bottom)))!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch!important;
  }
}

/* Barre d'accès rapide : réserve de place cohérente pour les boutons flottants. */
@media(max-width:900px){
  :root{--tsb-mobile-dock-reserve:calc(var(--tsb-ease-dock-h,64px) + 24px + env(safe-area-inset-bottom))}
  body:not([data-page="lecteur"]){
    padding-bottom:calc(var(--tsb-ease-dock-h,64px) + 30px + env(safe-area-inset-bottom))!important;
  }
  .tsb-easy-dock{
    z-index:1270!important;
    bottom:max(8px,env(safe-area-inset-bottom))!important;
  }

  /* Sur téléphone, les deux actions flottantes se placent sur la même ligne au-dessus du dock. */
  .tsubomi-assistant-launcher{
    right:max(12px,env(safe-area-inset-right))!important;
    bottom:calc(var(--tsb-mobile-dock-reserve) + var(--rgpd-space,0px) + 8px)!important;
  }
  .cortex-orb{
    right:calc(max(12px,env(safe-area-inset-right)) + 64px)!important;
    bottom:calc(var(--tsb-mobile-dock-reserve) + var(--rgpd-space,0px) + 8px)!important;
  }
  .tsubomi-assistant-greeting{
    bottom:calc(var(--tsb-mobile-dock-reserve) + var(--rgpd-space,0px) + 72px)!important;
  }
  .cortex-dock{
    bottom:calc(var(--tsb-mobile-dock-reserve) + var(--rgpd-space,0px) + 76px)!important;
    max-height:calc(var(--visual-vh,100vh) - var(--tsb-mobile-dock-reserve) - var(--rgpd-space,0px) - 92px)!important;
  }
}

/* Quand l'aide est ouverte, la barre rapide s'efface pour libérer le bas de l'écran. */
html.tsb-assistant-open .tsb-easy-dock,
html.tsb-assistant-active .tsb-easy-dock,
html.tsb-cortex-active .tsb-easy-dock,
html.tsb-rgpd-active .tsb-easy-dock{display:none!important}

/* Petits iPhone / écrans étroits : aucun contrôle ne doit dépasser. */
@media(max-width:430px){
  .header-inner{width:100%!important;max-width:100%!important;padding-left:10px!important;padding-right:10px!important}
  .brand{max-width:40vw!important}
  .mobile-toggle,.cortex-search-button{min-width:0!important;max-width:40vw!important}
  .main-nav,.main-nav.open{
    left:max(8px,env(safe-area-inset-left))!important;
    right:max(8px,env(safe-area-inset-right))!important;
    width:auto!important;
    border-radius:16px!important;
  }
  .tsb-easy-dock a{font-size:.74rem!important;line-height:1.08!important;padding-inline:4px!important}
}

/* Aucun composant fixe ne doit créer un débordement horizontal. */
.tsb-easy-dock,.tsubomi-assistant-launcher,.tsubomi-assistant-greeting,.cortex-orb,.cortex-dock,.rgpd,.main-nav{
  max-inline-size:calc(100vw - 8px)!important;
}
