@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. --}}
Fermenty
@endunless @if($preview)

@yield('screen-label', 'pantalla')

@unless($bare) @include('mobile.partials.topbar') @endunless
@yield('content')
@unless($bare) @include('mobile.partials.bottomnav') @endunless @include('mobile.partials.login-sheet') @include('mobile.partials.premium-sheet')
@else
@unless($bare) @include('mobile.partials.topbar') @endunless
@yield('content')
@unless($bare) @include('mobile.partials.bottomnav') @endunless @include('mobile.partials.login-sheet') @include('mobile.partials.premium-sheet')
@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')