/* Tsubomi Platform Runtime — replis de rendu sans modifier les fonctions existantes. */
:root{
  --tsb-runtime-vw:100vw;
  --tsb-runtime-vh:100vh;
  --tsb-runtime-offset-top:0px;
  --tsb-runtime-offset-left:0px;
  --tsb-runtime-keyboard:0px;
}
html,body{width:100%;max-width:100%;}
body{min-height:100vh;min-height:var(--tsb-runtime-vh,100vh);}

/* iOS 11.0/11.1 utilisait constant(), les versions suivantes utilisent env(). */
.tsb-platform-ios body{
  padding-left:constant(safe-area-inset-left);
  padding-right:constant(safe-area-inset-right);
  padding-left:env(safe-area-inset-left,0px);
  padding-right:env(safe-area-inset-right,0px);
}
.tsb-platform-ios .site-header{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top,0px);}
.tsb-platform-ios .reader-footer,.tsb-platform-ios .rgpd{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom,0px);}
.tsb-platform-ios input,.tsb-platform-ios select,.tsb-platform-ios textarea{font-size:16px;}
.tsb-platform-ios .release-stream,.tsb-platform-ios .tabs,.tsb-platform-ios .admin-menu,.tsb-platform-ios .main-nav{-webkit-overflow-scrolling:touch;}

/* 100dvh n'est pas present sur les anciennes generations. */
.tsb-no-dvh .important-info-layer,.tsb-no-dvh .tsubomi-assistant-panel{max-height:calc(var(--tsb-runtime-vh,100vh) - 16px);}
.tsb-no-dvh .reader-stage{min-height:calc(var(--tsb-runtime-vh,100vh) - 64px);}
@supports (height:100dvh){body{min-height:100dvh}.important-info-layer{max-height:100dvh}}

/* Safari avant 14.1 ne gere pas gap sur flex. */
.tsb-no-flex-gap .toolbar>*+*,.tsb-no-flex-gap .header-actions>*+*,.tsb-no-flex-gap .hero-actions>*+*,.tsb-no-flex-gap .release-controls>*+*,.tsb-no-flex-gap .footer-social>*+*{margin-left:10px;}
.tsb-no-flex-gap .main-nav>*+*,.tsb-no-flex-gap .admin-menu>*+*{margin-left:6px;}
.tsb-no-flex-gap [data-layout="phone"] .main-nav>*+*{margin-left:0;margin-top:6px;}

/* Replis pour navigateurs qui ne comprennent pas aspect-ratio / object-fit. */
.tsb-no-aspect-ratio .media-box,.tsb-no-aspect-ratio .release-cover,.tsb-no-aspect-ratio .detail-cover{position:relative;overflow:hidden;}
.tsb-no-object-fit .media-box img,.tsb-no-object-fit .release-cover img,.tsb-no-object-fit .detail-cover img{width:100%;height:auto;}
.tsb-no-object-fit video{max-width:100%;height:auto;}

/* Sticky absent : mieux vaut un bloc normal qu'un element qui recouvre le contenu. */
.tsb-no-sticky .admin-menu,.tsb-no-sticky .reader-top,.tsb-no-sticky .site-header{position:relative!important;top:auto!important;}

/* IE/EdgeHTML et anciens WebViews : pas de dependance a Grid. */
.tsb-engine-trident .grid,.tsb-engine-edgehtml .grid,.tsb-engine-trident .feature-strip,.tsb-engine-edgehtml .feature-strip{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;}
.tsb-engine-trident .grid>*,.tsb-engine-edgehtml .grid>*{width:100%;min-width:0;}
@media(min-width:700px){.tsb-engine-trident .grid>*,.tsb-engine-edgehtml .grid>*{width:48%;margin:1%;}}

/* Tres vieux / tres petits ecrans : la lisibilite prime sur la densite. */
@media(max-width:320px){
  .container{width:auto!important;margin-left:8px!important;margin-right:8px!important;}
  .brand{font-size:1rem!important;}
  .hero-copy h1,.hero-title,.cortex-title{font-size:2rem!important;line-height:1!important;word-break:break-word;}
  .btn,button,input,select,textarea{max-width:100%;}
  .hero-actions,.toolbar,.header-actions{display:block!important;}
  .hero-actions>*,.toolbar>*,.header-actions>*{width:100%;margin:6px 0!important;}
  .release-window{border-radius:16px!important;}
}

/* Ecrans tactiles et stylets : cibles plus confortables. */
.tsb-touch-capable button,.tsb-touch-capable .btn,.tsb-touch-capable [role="button"]{min-height:44px;}

/* Pliables / multi-segments : ces regles sont ignorees proprement si la techno n'existe pas. */
@media (horizontal-viewport-segments:2){.container{padding-left:max(16px,env(viewport-segment-left 0 0));padding-right:max(16px,env(viewport-segment-right 1 0));}}
@media (vertical-viewport-segments:2){.tsubomi-assistant-panel,.important-info-card{max-height:env(viewport-segment-height 0 0);}}

/* Navigateurs modernes : autorise les nouvelles unites sans rendre le site dependant d'elles. */
@supports (width:1svw){:root{--tsb-modern-vw:100svw}}
@supports (height:1svh){:root{--tsb-modern-vh:100svh}}

@media print{.tsubomi-assistant-launcher,.tsubomi-assistant-panel,.rgpd,.important-info-layer{display:none!important}}
