/*
  TSUBOMI Layout Guardian v1
  Dernière couche CSS de sécurité visuelle.
  Objectifs :
  - empêcher les éléments fixes de se chevaucher ;
  - fiabiliser l'en-tête et les menus sur iOS/WebKit ;
  - conserver une mise en page lisible sur très petits écrans, zoom, split-screen et PWA ;
  - ne jamais retirer une fonctionnalité : on adapte uniquement sa présentation.
*/
:root{
  --tsb-guardian-gap:12px;
  --tsb-guardian-edge:16px;
  --tsb-header-bottom:74px;
  --tsb-assistant-launcher-h:0px;
  --tsb-cortex-orb-h:0px;
  --tsb-guardian-rgpd:var(--rgpd-space,0px);
}

html,body{max-width:100%;overflow-x:hidden}
[data-site-header],.site-header,.header-inner,.brand,.header-actions,.main-nav,body>main{min-width:0;max-width:100%}
.site-header{isolation:isolate}
.header-inner>*{min-width:0}
.brand{max-width:min(34vw,280px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.brand-logo{
  -webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;
  width:34px!important;height:34px!important;max-width:34px!important;max-height:34px!important;
  object-fit:contain!important;-o-object-fit:contain!important;background:transparent!important;
  overflow:hidden!important;position:relative!important;inset:auto!important;
}
.header-actions{min-width:0;max-width:100%}
.cortex-search-button{max-width:100%;white-space:nowrap}

/* Un menu fermé ne doit laisser aucun calque fixe/compositing actif sur Safari. */
html.adaptive-menu .main-nav:not(.open){
  display:none!important;visibility:hidden!important;pointer-events:none!important;
  position:absolute!important;left:-10000px!important;right:auto!important;top:-10000px!important;
  width:1px!important;height:1px!important;min-width:0!important;min-height:0!important;max-height:1px!important;
  margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;
  -webkit-transform:none!important;transform:none!important;will-change:auto!important;overflow:hidden!important;
}
html.adaptive-menu .main-nav.open{
  left:max(10px,env(safe-area-inset-left))!important;
  right:max(10px,env(safe-area-inset-right))!important;
  top:calc(var(--tsb-header-bottom,74px) + 6px)!important;
  width:auto!important;height:auto!important;max-height:min(72vh,620px)!important;
  max-height:min(72dvh,620px)!important;
  visibility:visible!important;pointer-events:auto!important;
}

/* Les éléments masqués sont réellement retirés du rendu. */
.tsubomi-assistant-panel[hidden],.cortex-dock[hidden],.important-info-layer[hidden],.cortex-overlay[hidden]{
  display:none!important;visibility:hidden!important;pointer-events:none!important;
}

/* Coordination des deux boutons flottants : plus de superposition visuelle. */
.tsubomi-assistant-launcher{
  right:max(var(--tsb-guardian-edge),env(safe-area-inset-right))!important;
  bottom:calc(var(--tsb-guardian-rgpd) + max(var(--tsb-guardian-edge),env(safe-area-inset-bottom)))!important;
  max-width:calc(100vw - var(--tsb-guardian-edge) - var(--tsb-guardian-edge))!important;
}
.tsubomi-assistant-greeting{
  right:max(var(--tsb-guardian-edge),env(safe-area-inset-right))!important;
  bottom:calc(var(--tsb-guardian-rgpd) + max(var(--tsb-guardian-edge),env(safe-area-inset-bottom)) + var(--tsb-assistant-launcher-h) + var(--tsb-guardian-gap))!important;
  max-width:calc(100vw - var(--tsb-guardian-edge) - var(--tsb-guardian-edge))!important;
}
.cortex-orb{
  right:max(var(--tsb-guardian-edge),env(safe-area-inset-right))!important;
  bottom:calc(var(--tsb-guardian-rgpd) + max(var(--tsb-guardian-edge),env(safe-area-inset-bottom)) + var(--tsb-assistant-launcher-h) + var(--tsb-guardian-gap))!important;
}
.cortex-dock{
  right:max(var(--tsb-guardian-edge),env(safe-area-inset-right))!important;
  bottom:calc(var(--tsb-guardian-rgpd) + max(var(--tsb-guardian-edge),env(safe-area-inset-bottom)) + var(--tsb-assistant-launcher-h) + var(--tsb-cortex-orb-h) + var(--tsb-guardian-gap) + var(--tsb-guardian-gap))!important;
  max-width:calc(100vw - var(--tsb-guardian-edge) - var(--tsb-guardian-edge))!important;
  max-height:calc(var(--visual-vh,100vh) - var(--tsb-guardian-rgpd) - var(--tsb-assistant-launcher-h) - var(--tsb-cortex-orb-h) - 64px)!important;
}
html.tsb-assistant-active .cortex-orb,html.tsb-assistant-active .cortex-dock{
  opacity:0!important;pointer-events:none!important;visibility:hidden!important;
}
html.tsb-cortex-active .tsubomi-assistant-launcher,html.tsb-cortex-active .tsubomi-assistant-greeting{
  opacity:0!important;pointer-events:none!important;visibility:hidden!important;
}
html.tsb-rgpd-active .tsubomi-assistant-launcher,html.tsb-rgpd-active .tsubomi-assistant-greeting,html.tsb-rgpd-active .cortex-orb,html.tsb-rgpd-active .cortex-dock{
  opacity:0!important;pointer-events:none!important;visibility:hidden!important;
}

/* En-tête compact : le moteur JS active ces classes uniquement si nécessaire. */
html.tsb-header-compact .header-inner{gap:8px!important}
html.tsb-header-compact .brand{font-size:1.08rem!important;gap:6px!important;max-width:32vw}
html.tsb-header-compact .brand-logo{width:28px!important;height:28px!important;max-width:28px!important;max-height:28px!important}
html.tsb-header-compact .mobile-toggle,
html.tsb-header-compact .cortex-search-button{padding:9px 11px!important;min-height:44px!important}
html.tsb-header-tight .brand{font-size:1rem!important;max-width:29vw}
html.tsb-header-tight .brand-logo{width:24px!important;height:24px!important;max-width:24px!important;max-height:24px!important}
html.tsb-header-tight .mobile-toggle,
html.tsb-header-tight .cortex-search-button{padding:8px 9px!important}
html.tsb-header-tight .cortex-search-button .kbd{display:none!important}

/* Sur téléphone moderne, trois zones stables : marque / menu / recherche. */
@supports(display:grid){
  @media(max-width:640px){
    .header-inner{
      display:grid!important;
      grid-template-columns:minmax(0,1fr) auto auto!important;
      align-items:center!important;
      gap:8px!important;
      height:auto!important;min-height:64px!important;
      padding-top:8px!important;padding-bottom:8px!important;
    }
    .brand{grid-column:1;max-width:none!important;width:auto!important}
    .mobile-toggle{grid-column:2;margin:0!important}
    .header-actions{grid-column:3;margin:0!important;display:flex!important;justify-content:flex-end!important}
    .header-actions .desktop-only{display:none!important}
    .main-nav{grid-column:1/-1}
    .cortex-search-button{margin:0!important}
  }
}

/* iOS/WebKit étroit : mode sûr sans calque sticky GPU fantôme.
   Le header reste fonctionnel mais défile avec la page sur iPhone/iPad étroit. */
@media(max-width:640px){
  html.tsb-platform-ios .site-header,
  html[data-ios-webkit="true"] .site-header{
    position:relative!important;top:auto!important;
    -webkit-backdrop-filter:none!important;backdrop-filter:none!important;
    -webkit-transform:none!important;transform:none!important;will-change:auto!important;
    -webkit-backface-visibility:visible!important;backface-visibility:visible!important;
    contain:none!important;background:#09090e!important;
  }
  html.tsb-platform-ios .site-header *,
  html[data-ios-webkit="true"] .site-header *{
    -webkit-transform:none!important;transform:none!important;will-change:auto!important;
  }
  html.tsb-platform-ios .hero,
  html.tsb-platform-ios .hero-copy,
  html.tsb-platform-ios .hero-showcase,
  html.tsb-platform-ios .release-window,
  html[data-ios-webkit="true"] .hero,
  html[data-ios-webkit="true"] .hero-copy,
  html[data-ios-webkit="true"] .hero-showcase,
  html[data-ios-webkit="true"] .release-window{
    -webkit-transform:none!important;transform:none!important;will-change:auto!important;
    -webkit-backface-visibility:visible!important;backface-visibility:visible!important;
    contain:none!important;
  }
  html.tsb-platform-ios .hero,html[data-ios-webkit="true"] .hero{overflow:hidden!important}
  html.tsb-platform-ios .brand-logo,html[data-ios-webkit="true"] .brand-logo{
    -webkit-transform:none!important;transform:none!important;will-change:auto!important;
    -webkit-backface-visibility:visible!important;backface-visibility:visible!important;
    clip-path:inset(0);-webkit-clip-path:inset(0);
  }
  html.tsb-platform-ios video.tsb-video-pending,
  html[data-ios-webkit="true"] video.tsb-video-pending{opacity:0!important;background:transparent!important}
}

/* Accueil mobile : chaque bloc suit le flux, aucune superposition. */
@media(max-width:760px){
  .hero{min-height:0!important;grid-template-columns:1fr!important;align-items:stretch!important;gap:22px!important;padding-top:26px!important}
  .hero-copy,.hero-showcase{position:relative!important;min-width:0!important;width:100%!important;max-width:100%!important}
  .hero-copy{z-index:1!important}.hero-showcase{z-index:0!important;min-height:0!important}
  .hero-copy h1{max-width:100%!important;overflow-wrap:normal!important;word-break:normal!important}
  .release-window{min-height:280px!important;width:100%!important;max-width:100%!important}
}
@media(max-width:430px){
  .container{width:calc(100% - 20px)!important}
  .hero-copy h1{font-size:clamp(2.55rem,15vw,4rem)!important;line-height:.93!important;letter-spacing:-.045em!important}
  .hero-copy p{font-size:1rem!important;line-height:1.55!important}
  .hero-actions{display:grid!important;grid-template-columns:1fr!important;width:100%!important}
  .hero-actions .btn{width:100%!important;justify-content:center!important;text-align:center!important}
  .release-window-head{padding:16px!important;gap:10px!important}
  .release-window-head>div:first-child{min-width:0}
  .release-controls{flex:0 0 auto}
  .release-controls .icon-btn{width:46px!important;height:46px!important;min-width:46px!important;padding:0!important}
  .release-empty{padding:34px 18px!important}
}
@media(max-width:350px){
  html.tsb-header-tight .brand-logo{display:none!important}
  html.tsb-header-tight .brand{max-width:28vw!important}
  .cortex-search-button{font-size:.92rem!important}
}

/* Les fenêtres flottantes restent dans le viewport même avec zoom/clavier virtuel. */
.tsubomi-assistant-panel,.important-info-card,.cortex-dock,.rgpd{max-width:calc(100vw - 12px)!important}
@media(max-width:640px){
  .tsubomi-assistant-panel{max-height:calc(var(--visual-vh,100vh) - var(--tsb-guardian-rgpd))!important}
  .rgpd{left:8px!important;right:8px!important;bottom:max(8px,env(safe-area-inset-bottom))!important}
}


.tsb-guardian-constrained{max-width:calc(100vw - 12px)!important;margin-left:auto!important;margin-right:auto!important;}

/* Anciennes plateformes : pas de dépendance aux fonctions CSS modernes pour cette couche. */
.tsb-no-grid .header-inner{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}
.tsb-no-grid .brand{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}

@media(prefers-reduced-motion:reduce){
  .tsubomi-assistant-launcher,.cortex-orb,.cortex-dock,.site-header{transition:none!important;animation:none!important}
}
