/* G-STOCK PROD — Responsive mobile/tablette global (hors tableau de bord)
   Objectif: zéro débordement horizontal de page, tableaux lisibles en cartes,
   modales/formulaires/actions utilisables sur téléphone et tablette. */

html, body { max-width: 100%; overflow-x: hidden; }
.app-content { min-width: 0; }
.app-content > * { max-width: 100%; }
img, svg, canvas, video { max-width: 100%; height: auto; }

/* Les conteneurs Bootstrap ne doivent jamais agrandir la page. */
.container, .container-fluid, .row, [class*="col-"] { min-width: 0; }
.row { --bs-gutter-x: 1rem; }

/* Champs et contrôles */
.form-control, .form-select, .input-group, .btn-group, .dropdown, textarea, select, input {
  max-width: 100%;
}
.input-group > .form-control,
.input-group > .form-select { min-width: 0; }

/* Tables desktop/tablette : défilement uniquement dans leur zone, jamais sur toute la page. */
.table-responsive,
.gstock-table-scroll {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
table.gstock-responsive-table { width: 100%; max-width: 100%; }

/* Modales */
.modal-dialog { max-width: min(96vw, 1140px); margin-left: auto; margin-right: auto; }
.modal-content { max-width: 100%; overflow: hidden; }
.modal-body { max-width: 100%; overflow-x: hidden; }
.modal-body .table-responsive,
.modal-body .gstock-table-scroll { max-width: 100%; }

/* Longs textes / nombres / mails */
.gstock-break,
.gstock-mobile-card td,
.gstock-responsive-table td { overflow-wrap: anywhere; word-break: break-word; }

@media (max-width: 991.98px) {
  .app-content { padding: 14px 12px !important; }

  /* En-têtes et barres d'actions : retour à la ligne naturel. */
  .app-content .d-flex,
  .modal .d-flex { min-width: 0; }
  .app-content .d-flex.flex-wrap,
  .modal .d-flex.flex-wrap { row-gap: .55rem; }

  /* Les grands groupes de boutons restent dans l'écran. */
  .gstock-mobile-actions,
  .page-actions,
  .toolbar,
  .actions-bar {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: .5rem !important;
    max-width: 100%;
  }
  .gstock-mobile-actions > *,
  .page-actions > *,
  .toolbar > *,
  .actions-bar > * { min-width: 0; }

  /* Cartes / filtres */
  .card, .alert, .modal-content { border-radius: 12px; }
  .card-body { padding: 1rem; }

  /* Évite les largeurs fixes héritées du desktop. */
  .app-content [style*="min-width"],
  .modal [style*="min-width"] { min-width: 0 !important; }
  .app-content [style*="width:"] { max-width: 100%; }
}

@media (max-width: 767.98px) {
  body { font-size: 15px; }
  .app-content { padding: 12px 10px !important; }
  h1 { font-size: 1.55rem; }
  h2 { font-size: 1.35rem; }
  h3 { font-size: 1.18rem; }

  /* Modale plein écran confortable sans sortir du viewport. */
  .modal { padding: 0 !important; }
  .modal-dialog,
  .modal-dialog.modal-lg,
  .modal-dialog.modal-xl,
  .modal-dialog.modal-sm {
    width: calc(100vw - 16px) !important;
    max-width: calc(100vw - 16px) !important;
    margin: 8px auto !important;
  }
  .modal-header { padding: .85rem .95rem; align-items: flex-start; }
  .modal-title { font-size: 1.15rem; line-height: 1.3; min-width: 0; overflow-wrap: anywhere; }
  .modal-body { padding: .9rem; }
  .modal-footer { padding: .75rem .9rem; gap: .5rem; flex-wrap: wrap; }
  .modal-footer .btn { flex: 1 1 auto; }

  /* Formulaires : une colonne sur téléphone. */
  .app-content .row > [class*="col-md-"],
  .app-content .row > [class*="col-lg-"],
  .app-content .row > [class*="col-xl-"],
  .modal .row > [class*="col-md-"],
  .modal .row > [class*="col-lg-"],
  .modal .row > [class*="col-xl-"] {
    width: 100%;
    max-width: 100%;
    flex: 0 0 100%;
  }
  .form-control, .form-select, .btn { min-height: 44px; }
  textarea.form-control { min-height: 90px; }

  /* Boutons adjacents : largeur raisonnable, retour ligne automatique. */
  .btn-group:not(.btn-group-sm),
  .input-group { width: 100%; }
  .gstock-mobile-actions .btn { flex: 1 1 145px; }

  /* ---------- TABLEAUX -> CARTES ---------- */
  .gstock-table-scroll { overflow: visible !important; }
  table.gstock-responsive-table {
    display: block !important;
    width: 100% !important;
    border: 0 !important;
    background: transparent !important;
  }
  table.gstock-responsive-table > thead {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }
  table.gstock-responsive-table > tbody,
  table.gstock-responsive-table > tfoot { display: block !important; width: 100% !important; }
  table.gstock-responsive-table > tbody > tr,
  table.gstock-responsive-table > tfoot > tr {
    display: block !important;
    width: 100% !important;
    margin: 0 0 12px !important;
    padding: 6px 12px !important;
    background: #fff !important;
    border: 1px solid #dbe7e5 !important;
    border-radius: 12px !important;
    box-shadow: 0 3px 12px rgba(16,42,42,.06);
  }
  table.gstock-responsive-table > tbody > tr.table-light,
  table.gstock-responsive-table > tbody > tr.table-secondary,
  table.gstock-responsive-table > tbody > tr.table-info,
  table.gstock-responsive-table > tbody > tr.table-warning,
  table.gstock-responsive-table > tbody > tr.table-danger,
  table.gstock-responsive-table > tbody > tr.table-success { background: #fff !important; }

  table.gstock-responsive-table > tbody > tr > td,
  table.gstock-responsive-table > tbody > tr > th,
  table.gstock-responsive-table > tfoot > tr > td,
  table.gstock-responsive-table > tfoot > tr > th {
    display: grid !important;
    grid-template-columns: minmax(105px, 42%) minmax(0, 58%);
    align-items: start;
    gap: 10px;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    padding: 9px 0 !important;
    border: 0 !important;
    border-bottom: 1px solid #edf2f1 !important;
    text-align: right !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    vertical-align: top !important;
  }
  table.gstock-responsive-table > tbody > tr > td:last-child,
  table.gstock-responsive-table > tbody > tr > th:last-child,
  table.gstock-responsive-table > tfoot > tr > td:last-child,
  table.gstock-responsive-table > tfoot > tr > th:last-child { border-bottom: 0 !important; }

  table.gstock-responsive-table td::before,
  table.gstock-responsive-table th::before {
    content: attr(data-label);
    display: block;
    color: #254744;
    font-weight: 800;
    text-align: left;
    line-height: 1.25;
  }
  table.gstock-responsive-table td[data-label=""]::before,
  table.gstock-responsive-table th[data-label=""]::before { display: none; }

  table.gstock-responsive-table td > *,
  table.gstock-responsive-table th > * { max-width: 100%; }
  table.gstock-responsive-table td .btn,
  table.gstock-responsive-table th .btn { min-height: 38px; }
  table.gstock-responsive-table td .btn-group,
  table.gstock-responsive-table td .d-flex { justify-content: flex-end; flex-wrap: wrap; gap: .35rem; }

  /* Lignes de total/colspan : présentation simple pleine largeur. */
  table.gstock-responsive-table tr.gstock-total-row > td,
  table.gstock-responsive-table tr.gstock-total-row > th,
  table.gstock-responsive-table td[colspan],
  table.gstock-responsive-table th[colspan] {
    display: block !important;
    width: 100% !important;
    text-align: left !important;
    padding: 8px 0 !important;
  }
  table.gstock-responsive-table td[colspan]::before,
  table.gstock-responsive-table th[colspan]::before { display: none !important; }

  /* Tables explicitement conservées (petites matrices / lignes de saisie) */
  table.gstock-keep-table {
    display: table !important;
    min-width: 650px !important;
  }
  table.gstock-keep-table > thead { position: static !important; width: auto !important; height: auto !important; clip: auto !important; overflow: visible !important; white-space: normal !important; }
  table.gstock-keep-table > tbody { display: table-row-group !important; }
  table.gstock-keep-table > tbody > tr { display: table-row !important; padding: 0 !important; border-radius: 0 !important; box-shadow: none !important; }
  table.gstock-keep-table > tbody > tr > td,
  table.gstock-keep-table > tbody > tr > th { display: table-cell !important; text-align: inherit !important; padding: .5rem !important; border: 1px solid var(--bs-border-color) !important; }
  table.gstock-keep-table td::before,
  table.gstock-keep-table th::before { display: none !important; }

  /* Recherche + bouton Liste : toujours dans l'écran. */
  .gstock-search-line,
  .input-group.gstock-search-line { width: 100%; display: flex; flex-wrap: nowrap; }
  .gstock-search-line .form-control { flex: 1 1 auto; min-width: 0; }
  .gstock-search-line .btn { flex: 0 0 auto; width: auto; white-space: nowrap; }

  /* Totaux et chiffres */
  .gstock-summary { width: 100%; text-align: left !important; }
  .gstock-summary * { overflow-wrap: anywhere; }
}

@media (max-width: 420px) {
  .app-content { padding-left: 8px !important; padding-right: 8px !important; }
  .card-body, .modal-body { padding-left: .75rem; padding-right: .75rem; }
  table.gstock-responsive-table > tbody > tr > td,
  table.gstock-responsive-table > tbody > tr > th,
  table.gstock-responsive-table > tfoot > tr > td,
  table.gstock-responsive-table > tfoot > tr > th {
    grid-template-columns: minmax(92px, 40%) minmax(0, 60%);
    gap: 8px;
  }
  .gstock-mobile-actions .btn { flex-basis: 120px; }
}
