/*
 * Los formularios de pedido en el móvil.
 *
 * ─────────────────────────────────────────────────────────────────────────────
 * EL PROBLEMA
 * ─────────────────────────────────────────────────────────────────────────────
 *
 * Lo que dijo el cliente: *«en el pedido de un hosting, el campo y la extensión salen muy pequeños en
 * el móvil, y puedes bajar "verificar" abajo»*.
 *
 * Medido en un móvil de 360 px, tenía razón y era peor de lo que se ve a simple vista:
 *
 *     la pantalla .......................... 360 px
 *     la columna de las pestañas ...........  95 px   ← se los queda para ella
 *     la columna del contenido ............. 176 px   ← aquí tienen que caber los campos
 *
 *     el campo del dominio .................  34 × 32 px
 *     la extensión .........................  74 × 32 px
 *     el botón de comprobar ................  60 × 32 px, con letra de 12 px
 *
 * Y la página **se iba de lado**, porque el campo (34) más la extensión (74) no caben en los 88 px
 * que quedaban de fila.
 *
 * ─────────────────────────────────────────────────────────────────────────────
 * POR QUÉ ESTOS NÚMEROS Y NO OTROS
 * ─────────────────────────────────────────────────────────────────────────────
 *
 * **44 px de alto y 16 px de letra.** No son gusto personal:
 *
 *   · 44 px es el mínimo que recomiendan las guías de accesibilidad para algo que se pulsa con el
 *     dedo. Con 32 px se falla la mitad de las veces, y el cliente se cabrea.
 *
 *   · 16 px es el umbral por debajo del cual los navegadores de móvil **amplían la página solos** al
 *     enfocar un campo. Esa ampliación automática es justo lo que hace que después «todo se
 *     descuadre» y haya que arrastrar con el dedo. Con 16 px o más, no amplían.
 *
 * Por eso no se toca sólo el campo del dominio: se suben todos los campos y botones del pedido, que
 * venían con la clase «pequeña» (`-sm`) de fábrica, pensada para un escritorio.
 *
 * ─────────────────────────────────────────────────────────────────────────────
 * POR QUÉ SÓLO EN PANTALLAS ESTRECHAS
 * ─────────────────────────────────────────────────────────────────────────────
 *
 * En un ordenador las pestañas al lado y los campos compactos están bien: hay sitio de sobra y el
 * formulario queda recogido. El cambio es sólo por debajo de 768 px, que es donde el sitio se acaba.
 *
 * ─────────────────────────────────────────────────────────────────────────────
 * LAS PESTAÑAS, ENCIMA Y EN FILA
 * ─────────────────────────────────────────────────────────────────────────────
 *
 * Las cuatro pestañas (Registrar, Transferir, Dominio propio, Subdominio) van en una columna a la
 * izquierda y se llevan 95 px de los 360. Puestas encima y en fila, el formulario recupera ese ancho:
 * de 176 px a unos 311.
 *
 * Se buscan con `:has()` —«la fila que CONTIENE las pestañas»— porque al navegador hay que decirle
 * que cambie el padre, y desde el padre no se puede saber si dentro hay pestañas. Los navegadores que
 * no entienden `:has()` (Chrome anterior a 105, de 2022) se quedan con las pestañas al lado, que es
 * como estaban: no se rompe nada, sólo no se aprovecha el ancho.
 *
 * ─────────────────────────────────────────────────────────────────────────────
 * EL BOTÓN, DEBAJO
 * ─────────────────────────────────────────────────────────────────────────────
 *
 * Lo pidió el cliente, y los números le dan la razón: teniéndolo al lado, el botón se lleva 68 px de
 * la fila y ésos son exactamente los que le faltan al campo del dominio. Debajo y a lo ancho, el
 * campo se queda con toda la fila y el botón se acierta con el dedo a la primera.
 */

@media (max-width: 767.98px) {

    /* ── 1. Las pestañas, encima del formulario y en fila ───────────────────── */

    .order-index .d-flex:has(> nav.nav-pills.flex-column) {
        flex-direction: column;
        gap: 1rem;
    }

    /*
     * Y para los navegadores que no entienden `:has()`: se busca por la clase de la fila.
     *
     * Va en un bloque aparte y no en la misma regla a propósito. En una lista de selectores separados
     * por comas, **un solo selector que el navegador no entienda invalida la regla entera** — así que
     * juntarlos dejaría sin arreglo también a los navegadores modernos.
     *
     * En esta página `d-flex mb-3` es único (comprobado), pero sólo se usa como último recurso.
     */
    @supports not selector(:has(*)) {
        .order-index .d-flex.mb-3 {
            flex-direction: column;
            gap: 1rem;
        }
    }

    .order-index nav.nav-pills.flex-column {
        flex-direction: row;
        flex-wrap: wrap;
        /* La raya vertical y el hueco de la derecha ya no tienen sentido en fila. */
        margin-right: 0 !important;
        border-right: 0 !important;
        gap: .5rem !important;
    }

    .order-index nav.nav-pills.flex-column .nav-link {
        margin-right: 0 !important;
        /* Sin la raya que las separaba, cada pestaña necesita su propio borde para verse como tal. */
        border: 1px solid var(--tblr-border-color);
        border-radius: var(--tblr-border-radius);
    }

    /* ── 2. Los campos y los botones, de tamaño para el dedo ────────────────── */

    .order-index .form-control-sm,
    .order-index .form-select-sm {
        min-height: 44px;
        padding-top: .5rem;
        padding-bottom: .5rem;
        font-size: 16px;
    }

    .order-index .btn-sm {
        min-height: 44px;
        padding-top: .5rem;
        padding-bottom: .5rem;
        font-size: 16px;
    }

    /* ── 3. El botón de comprobar, debajo del campo ─────────────────────────── */

    /* La fila que lleva el campo con su extensión y, al lado, el botón de comprobar. */
    .order-index .d-flex.gap-2:has(> .input-group) {
        flex-wrap: wrap;
    }

    /*
     * El campo se queda con la fila entera. El `max-width` de 320 px viene escrito **en el propio
     * elemento** (`style="max-width: 320px"`), y lo escrito ahí gana sobre cualquier hoja de estilos:
     * hay que forzarlo con `!important` o no se aplica.
     */
    .order-index .d-flex.gap-2 > .input-group {
        flex: 1 1 100%;
        max-width: none !important;
    }

    /*
     * La extensión tiene su propio ancho escrito en el elemento (`width: 30%; max-width: 90px`), y en
     * un campo estrecho se queda en 30 px: no se lee ni «.com». Se le pone un mínimo legible.
     */
    .order-index .d-flex.gap-2 .form-select-sm {
        min-width: 84px;
    }

    /* Y el botón, a la línea de abajo y a lo ancho. */
    .order-index .d-flex.gap-2 > .btn {
        flex: 1 1 100%;
    }

    /* ── 4. El encabezado: el nombre del producto y el botón del carrito ────── */

    /*
     * Esta parte no la pidió el cliente, pero está en la misma página y es peor de lo que parece.
     *
     * El encabezado pone el nombre del producto a la izquierda y el botón del carrito a la derecha, en
     * una fila que no sabe partirse. En un móvil no caben: el botón se sale de la pantalla y **arrastra
     * toda la página**, que es justo el «descuadre» que se nota al intentar leer.
     *
     * Comprobado que ya pasaba antes de tocar nada: midiendo la página **sin** esta hoja de estilos, el
     * documento mide exactamente lo mismo (449 px). No lo ha traído este cambio.
     *
     * Dos cosas, y las dos hacen falta:
     *
     *   · que la fila pueda partirse, para que el carrito baje si de verdad no caben;
     *   · y que el nombre del producto pueda **encogerse**. Sin esto, un bloque de texto dentro de una
     *     fila flexible no baja de su palabra más larga, así que «Hébergement» empuja al carrito fuera
     *     por mucho que la fila sepa partirse.
     */
    .order-index .card-header .d-flex.justify-content-between {
        flex-wrap: wrap;
        gap: .5rem;
    }

    .order-index .card-header .d-flex.justify-content-between > div:first-child {
        min-width: 0;
    }
}
