/* Interfaz móvil de la pantalla del proyecto: las mismas piezas, apiladas en capas que se
   deslizan de costado.

   No hay una segunda versión de nada. Son los mismos `.panel-jerarquia`, `.vista-escena` y
   `.panel-info` del escritorio, reposicionados acá dentro de un único `@media`. El JS
   (componentes/movil.js) solo decide qué capa está adelante:

     .vista.movil-panel  la jerarquía del proyecto
     .vista.movil-escena el visor a pantalla completa
     .vista.hoja-abierta hoja inferior con descripción y comentarios

   El resto de la app no necesita capas: la cabeza se pliega en un menú (css/marco.css), la
   galería es una grilla que pierde columnas (css/galeria.css) y el visor de un splat es una
   sola pantalla con sus controles encima (css/vista.css).

   Colores, radios y espaciados salen todos de tokens.css y tema.css, como en el resto. */

/* Marcas de visibilidad: en escritorio lo móvil no existe. */
.solo-movil {
  display: none !important;
}

@media (max-width: 767px) {
  :root {
    --barra-movil: 52px;
    --desliz: 280ms cubic-bezier(0.22, 0.61, 0.36, 1);
    --seguro-abajo: env(safe-area-inset-bottom, 0px);
  }

  .solo-movil {
    display: inline-flex !important;
  }

  .solo-movil.bloque {
    display: flex !important;
  }

  .no-movil {
    display: none !important;
  }

  /* ---------- La pantalla del proyecto ---------- */

  .vista:not(.vista-limpia) {
    position: relative; /* ancla del menú de tres puntos */
    grid-template-rows: var(--barra-movil) minmax(0, 1fr) auto;
  }

  .vista-barra {
    padding: 0 var(--esp-3);
    gap: var(--esp-1);
  }

  /* El título y las acciones de escritura bajan al pie. */
  .vista-barra .vista-titulo,
  .vista-barra > [data-editar],
  .vista-barra > [data-borrar] {
    display: none;
  }

  .vista-marca {
    flex: 1;
    text-align: center;
    color: var(--texto);
    font-family: var(--fuente-marca);
    font-weight: var(--peso-bold);
    letter-spacing: 0.08em;
    font-size: 0.78rem;
    text-decoration: none;
  }

  /* Compartir / embed / descargar entran en el menú de tres puntos. */
  .vista-acciones {
    position: static;
  }

  /* La estrella de calidad queda en la barra, solo el ícono: el rótulo no entra.
     `font-size: 0` apaga el texto suelto del botón sin tocar su lista desplegable. */
  .vista-acciones .menu-boton {
    font-size: 0;
    gap: 0;
    padding: var(--esp-2);
  }

  .vista-acciones .menu-lista {
    font-size: var(--t-cuerpo);
  }

  .vista-acciones [data-acciones] {
    position: absolute;
    top: var(--barra-movil);
    right: var(--esp-2);
    z-index: 36;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: var(--esp-1);
    padding: var(--esp-2);
    background: var(--noche);
    border: 1px solid var(--borde);
    border-radius: var(--r-card);
    box-shadow: var(--sombra-flotante);
    min-width: 12rem;
  }

  .vista-acciones.abierta [data-acciones] {
    display: flex;
  }

  .vista-acciones [data-acciones] .boton {
    justify-content: flex-start;
    width: 100%;
  }

  /* Bottom bar de las escenas: nombre del splat, el detalle y eliminar. */
  .vista-pie {
    display: flex;
    align-items: center;
    gap: var(--esp-2);
    padding: var(--esp-2) var(--esp-3) calc(var(--esp-2) + var(--seguro-abajo));
    background: var(--panel-solido);
    border-top: 1px solid var(--borde);
  }

  .vista-pie-nombre {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: var(--peso-semibold);
    font-size: var(--t-cuerpo);
  }

  /* ---------- Cuerpo: el visor manda, los paneles son capas ---------- */

  .vista-cuerpo {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr);
  }

  .vista-cuerpo > .vista-escena {
    grid-area: 1 / 1;
  }

  .panel-tirador {
    display: none;
  }

  /* La jerarquía como capa que entra desde la izquierda. */
  .vista-cuerpo > .panel-jerarquia {
    position: absolute;
    inset: 0;
    z-index: 30;
    width: 100%;
    border-right: 0;
    padding: 0;
    gap: 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    transform: translateX(-100%);
    transition: transform var(--desliz);
  }

  .vista.movil-panel .vista-cuerpo > .panel-jerarquia {
    transform: none;
  }

  /* Top bar de la jerarquía: volver a mis proyectos, título con subtítulo, X. */
  .panel-barra {
    display: flex;
    align-items: center;
    gap: var(--esp-2);
    min-height: var(--barra-movil);
    padding: 0 var(--esp-3);
    border-bottom: 1px solid var(--borde);
  }

  .panel-barra-titulo {
    flex: 1;
    min-width: 0;
    display: grid;
  }

  .panel-barra-titulo strong,
  .panel-barra-titulo span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .panel-barra-titulo strong {
    font-size: var(--t-cuerpo);
  }

  .vista-cuerpo > .panel-jerarquia > [data-jerarquia] {
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
    padding: var(--esp-4) var(--esp-3);
  }

  /* El toque tiene que sentirse: el highlight antes de que la capa se vaya. */
  .nodo:active:not(:disabled) {
    background: var(--panel-activo);
  }

  /* En 375px los nombres largos tienen que recortarse, no empujar el panel. */
  .vista-cuerpo > .panel-jerarquia .nodo-fila,
  .vista-cuerpo > .panel-jerarquia .nodo,
  .vista-cuerpo > .panel-jerarquia .nodo-agregar {
    min-width: 0;
    max-width: 100%;
  }

  .vista-cuerpo > .panel-jerarquia > [data-documentos] {
    margin-top: 0;
    padding: var(--esp-3) var(--esp-3) calc(var(--esp-3) + var(--seguro-abajo));
  }

  /* Hoja inferior: el panel de la derecha sube desde el pie. */
  .vista-cuerpo > .panel-info {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 35;
    max-height: 74dvh;
    border-left: 0;
    border-top: 1px solid var(--borde);
    border-radius: var(--r-card) var(--r-card) 0 0;
    padding: var(--esp-3) var(--esp-4) calc(var(--esp-5) + var(--seguro-abajo));
    gap: var(--esp-4);
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translateY(101%);
    transition: transform var(--desliz);
    box-shadow: 0 -12px 32px rgba(0, 0, 0, 0.45);
  }

  .vista.hoja-abierta .vista-cuerpo > .panel-info {
    transform: none;
  }

  /* El tirador de la hoja: la pista visual de que se baja con el dedo. */
  .hoja-tirador {
    position: sticky;
    top: 0;
    justify-self: center;
    width: 44px;
    height: 4px;
    margin-bottom: var(--esp-2);
    border-radius: var(--r-pastilla);
    background: var(--texto-3);
  }

  .hoja-boton {
    gap: var(--esp-2);
  }

  /* El editor de prueba se sale de una pantalla chica: queda para escritorio. */
  .editor {
    display: none;
  }

  /* Las páginas comunes, con menos aire a los costados. */
  .pagina {
    padding: var(--esp-5) var(--esp-4) var(--esp-6);
  }
}

/* Teléfono apoyado: la hoja no puede taparlo todo. */
@media (max-width: 767px) and (orientation: landscape) {
  .vista-cuerpo > .panel-info {
    max-height: 88dvh;
  }
}
