@php
// El frame-simulador sólo tiene sentido en un desktop: en un dispositivo
// móvil o tablet real vamos a pantalla completa (con rotación y safe-areas).
$isHandheld = \App\Support\DeviceDetector::isHandheld(request()->userAgent());
$preview = config('app.mobile_preview', true) && ! $isHandheld;
@endphp
{{-- Sin user-scalable=no: bloquear el zoom incumple WCAG 1.4.4 (iOS además
lo ignora). El auto-zoom de iOS al enfocar campos se evita con inputs
de 16px, no capando el viewport. --}}
{{-- app.* es la aplicación: el SEO vive en fermenty.es — no indexar estas carcasas --}}
@yield('title', 'Fermenty') — Fermenty
{{-- Preconnect al API: todas las pantallas hacen fetch CORS a api.* --}}
@vite(['resources/scss/mobile.scss'])
@include('layouts.favicon', ['manifest' => 'app.webmanifest'])
{{-- "Añadir a pantalla de inicio": sin esto Safari abre en modo navegador
normal (con barra de URL) en vez de a pantalla completa. --}}
@stack('styles')
{{-- ── fmApi: cliente único (igual que hará Flutter) ──────────────── --}}
@php $bare = trim($__env->yieldContent('bare')) === '1'; @endphp
@unless($preview)
{{-- Splash de carga (sólo dispositivo real): autosuficiente con estilos inline
para que pinte antes de que llegue el CSS/JS en conexiones lentas. --}}
@endif
{{-- Alpine self-hosted (copia de alpinejs@3 cdn.min.js) — sin CDN de terceros en el
critical path. Se inyecta tras la sonda de sesión compartida (fmSsoProbe): con
token local o sin sesión web arranca al instante; si hay sesión del panel, entra
con ella antes de que las pantallas pregunten. --}}
@stack('scripts')