/* ===========================================================================
   usecase_mobile.css
   ---------------------------------------------------------------------------
   Mise en page des pages de cas d'usage (useCase*.php).
   Cible par la classe oc-page-usecase posee sur <body>.
   Appele par css/cssUsecaseMobile.php

   Mesure a 1200px avant correction :
     clientWidth 1200, scrollWidth 1450  -> debordement de 250px
     tous les blocs debordent de 235px a l'identique
     -> cause unique : le min-width 1450px de #content (default.css)
   =========================================================================== */


/* ---------------------------------------------------------------------------
   1. Texte -- toutes largeurs
   --------------------------------------------------------------------------- */

body.oc-page-usecase #content p.pb-5 {
    font-size: 16px !important;
    line-height: 1.55 !important;
    text-align: justify !important;
    -webkit-hyphens: auto;
    hyphens: auto;
}


/* ---------------------------------------------------------------------------
   2. Liberation de la largeur en dessous de 1450px
   ---------------------------------------------------------------------------
   default.css impose min-width:1450px a #content pour eviter la compression
   des menus au zoom. Entre 992 et 1449px la page deborde donc de la fenetre.
   On ne touche pas a default.css : la regle est levee ici seulement.
   --------------------------------------------------------------------------- */

@media (max-width: 1449px) {

    body.oc-page-usecase #content,
    body.oc-page-usecase #content > .row,
    body.oc-page-usecase #content > form,
    body.oc-page-usecase #content .container,
    body.oc-page-usecase #content .container-fluid {
        min-width: 0 !important;
        max-width: 100% !important;
    }

    body.oc-page-usecase {
        overflow-x: hidden;
    }
}


/* ---------------------------------------------------------------------------
   3. Tableaux -- en dessous de 1450px
   ---------------------------------------------------------------------------
   Les deux blocs n'ont pas la meme structure :
     tableau 0  .col-12 dans .col-4.offset-1
     tableau 1  .tableHandy dans .col-4.offset-0, margin-left:17% en inline
   Le titre etant dans un .col-6, on aligne les deux conteneurs sur 50%.
   --------------------------------------------------------------------------- */

@media (max-width: 1449px) {

    body.oc-page-usecase #content .col-4.offset-0,
    body.oc-page-usecase #content .col-4.offset-1,
    body.oc-page-usecase #content .col-4.offset-2 {
        flex: 0 0 50% !important;
        max-width: 50% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding-left: 15px !important;
        padding-right: 15px !important;
    }

    body.oc-page-usecase #content .col-4 > .col-12 {
        width: 100% !important;
        max-width: 100% !important;
        flex: 0 0 100% !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    body.oc-page-usecase #content .tableHandy {
        width: 100% !important;
        max-width: 100% !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    body.oc-page-usecase #content .table-stripedBlue {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    body.oc-page-usecase #content .table-stripedBlue th,
    body.oc-page-usecase #content .table-stripedBlue td {
        white-space: nowrap !important;
        padding: 6px 8px !important;
    }
}


/* ---------------------------------------------------------------------------
   4. Schemas -- en dessous de 1000px
   --------------------------------------------------------------------------- */

@media (max-width: 999px) {

    body.oc-page-usecase #content .example-image-link {
        display: block;
        width: 100%;
        max-width: 300px;
        margin-left: auto;
        margin-right: auto;
    }

    body.oc-page-usecase #content .example-image-link img {
        width: 100% !important;
        height: auto !important;
        max-width: 300px;
    }
}


/* ---------------------------------------------------------------------------
   Note de portee
   ---------------------------------------------------------------------------
   La page n'est pas prevue en dessous de 768px : aucun repli au-dela.
   A 768px il reste environ 730px utiles pour 698px de contenu de tableau,
   le nowrap des cellules tient donc sans compression.
   --------------------------------------------------------------------------- */


/* ---------------------------------------------------------------------------
   5. Empilement des blocs en dessous de 900px
   ---------------------------------------------------------------------------
   Cote a cote, chaque bloc ne dispose que d'une demi-page. Le tableau des
   resultats demande 698px de contenu : il ne peut pas y tenir.
   --------------------------------------------------------------------------- */

@media (max-width: 899px) {

    body.oc-page-usecase #content .row > .col-6,
    body.oc-page-usecase #content .col-4.offset-0,
    body.oc-page-usecase #content .col-4.offset-1,
    body.oc-page-usecase #content .col-4.offset-2 {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding-left: 10px !important;
        padding-right: 10px !important;
    }

    body.oc-page-usecase #content .alert.title_backGrBlue {
        max-width: 100% !important;
        margin-left: auto !important;
        margin-right: auto !important;
    }

    body.oc-page-usecase #content .col-4.offset-0,
    body.oc-page-usecase #content .col-4.offset-1,
    body.oc-page-usecase #content .col-4.offset-2 {
        margin-bottom: 30px !important;
    }

    body.oc-page-usecase #content .table-stripedBlue {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: auto !important;
        margin-right: auto !important;
    }
}


/* ---------------------------------------------------------------------------
   7. Centrage de #content sur la page
   ---------------------------------------------------------------------------
   Le min-width leve en section 2 laissait #content cale a gauche.
   Les .row de Bootstrap portent margin:-15px sans conteneur qui compense.
   --------------------------------------------------------------------------- */

@media (max-width: 1449px) {

    body.oc-page-usecase #content {
        margin-left: auto !important;
        margin-right: auto !important;
        padding-left: 15px !important;
        padding-right: 15px !important;
        box-sizing: border-box;
    }

    body.oc-page-usecase #content .row {
        margin-left: 0 !important;
        margin-right: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
    }
}


/* ---------------------------------------------------------------------------
   8. Colonne figee de handyBlock.css
   ---------------------------------------------------------------------------
   handyBlock.css pose sous 992px un position:sticky avec fond blanc opaque
   sur la premiere colonne, qui masque l'alternance des lignes. Les tableaux
   tenant en pleine largeur depuis l'empilement, elle est inutile ici.
   --------------------------------------------------------------------------- */

@media (max-width: 991px) {

    body.oc-page-usecase #content .table-stripedBlue th:first-child,
    body.oc-page-usecase #content .table-stripedBlue td:first-child {
        position: static !important;
        left: auto !important;
        z-index: auto !important;
        background: transparent !important;
    }
}


/* ---------------------------------------------------------------------------
   9. Suites du deplacement des bandeaux de titre
   ---------------------------------------------------------------------------
   Les titres sont passes du .row margin-top-30 a l'interieur du <form>,
   chacun dans la colonne de son tableau. Effets de bord sous 900px :
   la regle .row > .col-6 atteint le conteneur du bouton "enter".
   --------------------------------------------------------------------------- */

@media (max-width: 899px) {

    body.oc-page-usecase #content #boutons_calcul {
        text-align: center;
    }

    body.oc-page-usecase #content .col-6.offset-3 {
        flex: 0 0 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
        text-align: center !important;
    }

    body.oc-page-usecase #content .alert.title_backGrBlue {
        margin-bottom: 12px !important;
    }
}


/* ---------------------------------------------------------------------------
   10. Tableau des systemes issus des catalogues
   ---------------------------------------------------------------------------
   Ce 3e tableau n'apparait qu'apres soumission. Mesure a 1200px :
     24 colonnes, largeur reelle 1314px dans un <form> de 1140
     -> deborde a 1389, scrollWidth de la page a 1389
     titre deja centre (338 de blanc de chaque cote) : ne pas y toucher

   Il est enfant direct du <form>, qui n'a qu'un seul autre enfant direct
   (le .col-12 des deux premiers tableaux) : le selecteur "form >" l'atteint
   lui seul, sans wrapper ajoute dans le PHP.

   Le defilement est porte par le tableau lui-meme via display:block, ce qui
   evite d'ajouter un conteneur : un <table> en display:block accepte
   overflow-x, contrairement au display:table par defaut.
   --------------------------------------------------------------------------- */

body.oc-page-usecase #content form > table.table-stripedBlue {
    display: block;
    width: -moz-fit-content;
    width: fit-content;
    max-width: 100%;
    margin-left: auto !important;
    margin-right: auto !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}


/* ---------------------------------------------------------------------------
   10. Tableau des systemes issus des catalogues
   ---------------------------------------------------------------------------
   Ce 3e tableau n'apparait qu'apres soumission. Mesure a 1200px :
     24 colonnes, largeur reelle 1314px dans un <form> de 1140
     -> deborde a 1389, scrollWidth de la page a 1389
     titre deja centre (338 de blanc de chaque cote) : ne pas y toucher

   Il est enfant direct du <form>, qui n'a qu'un seul autre enfant direct
   (le .col-12 des deux premiers tableaux) : le selecteur "form >" l'atteint
   lui seul, sans wrapper ajoute dans le PHP.

   Le defilement est porte par le tableau lui-meme via display:block, ce qui
   evite d'ajouter un conteneur : un <table> en display:block accepte
   overflow-x, contrairement au display:table par defaut.
   --------------------------------------------------------------------------- */

body.oc-page-usecase #content form > table.table-stripedBlue {
    display: block;
    width: -moz-fit-content;
    width: fit-content;
    max-width: 100%;
    margin-left: auto !important;
    margin-right: auto !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}


/* ---------------------------------------------------------------------------
   11. Tableau de la liste des "Handy Calculations"
   ---------------------------------------------------------------------------
   4e tableau, sous le 3e. Mesure a 1200px :
     4 colonnes mais 1528px de large dans un .col-12 de 1080
     -> deborde a 1603, scrollWidth de la page a 1603
     son titre (h3 4) est deja centre a 338->863 : ne pas y toucher

   Il est seul dans un .collapse, contrairement aux trois premiers : ce
   selecteur l'isole sans wrapper ajoute dans le PHP.

   Meme mecanique qu'en section 10 : display:block permet l'overflow-x sur
   le <table>, fit-content + margin auto le centrent tant qu'il tient.
   --------------------------------------------------------------------------- */

body.oc-page-usecase #content .collapse table.table-stripedBlue {
    display: block;
    width: -moz-fit-content;
    width: fit-content;
    max-width: 100%;
    margin-left: auto !important;
    margin-right: auto !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}


/* ---------------------------------------------------------------------------
   12. Boutons de navigation en haut de page
   ---------------------------------------------------------------------------
   Quatre boutons (about, caution, parameters, tutorial) dans un <ul> dont
   les <li> sont en display:inline. Mesure a 800px :
     largeur cumulee des boutons ~435px pour un <ul> de 443
     -> "tutorial" passe a la ligne suivante (haut 500 contre 462)
     le .col-8 porte margin-left:16% en inline, qui decentre l'ensemble

   On rend au .col-8 la pleine largeur sans marge, et on passe le <ul> en
   flex avec nowrap : les boutons restent sur une ligne et centres.
   Le style inline bat toute regle externe, d'ou le !important.
   --------------------------------------------------------------------------- */

/* IMPORTANT : ne pas viser .col-8 seul -- la classe porte aussi la colonne
   du texte (.col-8.offset-1), et l'elargir libere les schemas flottants
   qui remontent alors au-dessus du texte.
   On restreint au .col-8 qui contient le <ul> des boutons. */
body.oc-page-usecase #content .col-8:not(.offset-1):has(> div > ul) {
    flex: 0 0 100% !important;
    max-width: 100% !important;
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}

body.oc-page-usecase #content .col-8:not(.offset-1) > div > ul {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: center;
    gap: 8px;
    list-style: none;
    padding-left: 0;
    margin-left: auto;
    margin-right: auto;
}

body.oc-page-usecase #content .col-8:not(.offset-1) > div > ul > li {
    display: block;
    flex: 0 0 auto;
}

/* margin-left-10 sur chaque bouton fait doublon avec le gap du flex. */
body.oc-page-usecase #content .col-8:not(.offset-1) > div > ul > li > .btn {
    margin-left: 0 !important;
    white-space: nowrap;
}


/* ---------------------------------------------------------------------------
   13. Centrage du 2e tableau au-dessus de 1450px
   ---------------------------------------------------------------------------
   Le .tableHandy porte padding-right:4% en style inline. La section 3 le
   neutralise, mais sous 1450px seulement : au-dela, le tableau (474px dans
   un conteneur de 493 a 1600px) se retrouve cale a gauche, les 19px restants
   passant tous a droite.

   Mesure a 1600px avant correction :
     tableau 0  176 -> 639, titre 161 -> 654   ecarts +15 / -15, symetrique
     tableau 1  951 -> 1425 dans un .tableHandy de 951 -> 1444

   On centre par les marges automatiques plutot qu'en annulant le padding :
   le tableau reste ainsi centre quelle que soit la largeur restante.
   --------------------------------------------------------------------------- */

@media (min-width: 1450px) {

    body.oc-page-usecase #content .tableHandy {
        padding-right: 0 !important;
    }

    body.oc-page-usecase #content .tableHandy > table.table-stripedBlue {
        margin-left: auto !important;
        margin-right: auto !important;
    }
}


/* ---------------------------------------------------------------------------
   14. Variante de useCaseSNR_camera.php
   ---------------------------------------------------------------------------
   Sur cette page le 2e tableau est dans un .col-4.offset-2 -- et non
   .col-4.offset-0 comme sur les deux autres cas d'usage. Les sections 3, 5
   et 9 ont donc ete etendues a offset-2.

   Le bouton "enter" y porte margin-left:40% en inline (35% ailleurs) : la
   regle .col-6.offset-3 de la section 9 le recentre sous 900px.

   Cette page n'a pas de 3e tableau : la section 10 ne s'y applique pas.
   Le </form> manquant a ete ajoute au prealable, sans quoi le .collapse se
   serait retrouve dans le formulaire.
   --------------------------------------------------------------------------- */


/* ---------------------------------------------------------------------------
   16. Largeur des .row au-dessus de 1450px
   ---------------------------------------------------------------------------
   La section 7 donne aux .row width:100% et annule leurs marges negatives,
   mais sous 1450px seulement. Au-dela, le .row du titre "Handy Calculations"
   retombe sur la largeur de son contenu.

   Mesure a 1600px avant correction :
     #content            0 -> 1600  (1600px)
     .row mb-3 parent    largeur 1600
     .row du titre     -15 ->  620  (635px)  <- trop etroit, decale a gauche

   Le titre y est correctement centre : c'est le .row qu'il faut elargir,
   pas le titre qu'il faut deplacer.
   --------------------------------------------------------------------------- */

@media (min-width: 1450px) {

    body.oc-page-usecase #content .row {
        margin-left: 0 !important;
        margin-right: 0 !important;
        width: 100%;
        max-width: 100%;
    }
}


/* ---------------------------------------------------------------------------
   17. Largeur du bloc #collapseUC3
   ---------------------------------------------------------------------------
   Le .collapse n'a aucune classe de colonne : il prend la largeur de son
   contenu et reste cale a gauche.

   Mesure a 1200px, bloc deplie :
     .collapse   15 -> 1057  (1042px) pour 1170px disponibles
     .row        15 -> 1057  (1042px)  marges deja a zero (section 7)
     .col-12     30 -> 1042  (1012px)
     tableau     45 -> 1027  (982px, contenu 980)

   Cible par l'identifiant, non par la classe .collapse : une version
   anterieure de cette regle visait .collapse et .collapse.show, ce qui
   melait la mise en page au mecanisme de repli de Bootstrap.
   Aucune propriete de display ici, pour la meme raison.
   --------------------------------------------------------------------------- */

body.oc-page-usecase #content #collapseUC3 {
    width: 100%;
    max-width: 100%;
}

/* Le tableau de #collapseUC3 est en display:block (section 11). Le
   width:100% !important de la section 3 le rend alors plus large que son
   contenu (982 pour 980 a 1200px) : l'excedent apparait en blanc a droite,
   comme une colonne vide dont l'en-tete bleu s'arreterait avant le bord.
   Invisible a 1600px (section 3 inactive) et sous 900px (le tableau defile).
   fit-content lui rend sa largeur reelle. */
body.oc-page-usecase #content #collapseUC3 table.table-stripedBlue {
    width: -moz-fit-content !important;
    width: fit-content !important;
}
