@if(session('gps_status'))
{{ session('gps_status') }}
@endif
@if($errors->has('gps'))
{{ $errors->first('gps') }}
@endif
@if(session('ride_together_status'))
{{ session('ride_together_status') }}
@endif
@if($errors->has('ride_together') || $errors->has('scheduled_for') || $errors->has('visibility_scope'))
{{ $errors->first() }}
@endif
{{ __('ui.visit_open_now') }}{{ $openCount }}
{{ __('ui.visit_done_today') }}{{ $doneCount }}
{{ __('ui.visit_hours') }}{{ $todayOpen && $todayClose ? $todayOpen->format('H:i').'โ'.$todayClose->format('H:i') : 'โ' }}
{{ __('ui.visit_weather') }}{{ $weather?->temperature_c !== null ? rtrim(rtrim(number_format((float)$weather->temperature_c,1,',',''),'0'),',').'ยฐC' : 'โ' }}
{{ __('ui.wishlist_title_short') }}{{ $wishlistCount }}
@if($isGroupMode)
{{ __('ui.visit_v2_roadbook_short') }}{{ $pendingProgramCount }}
@endif
{{ __('ui.visit_advisor_kicker') }}
{{ __('ui.visit_advisor_title') }}
{{ __('ui.visit_advisor_intro') }}
{{ __('ui.visit_advisor_strategy_'.$advisorStrategy) }}
โก{{ __('ui.visit_advisor_actionable') }}{{ data_get($advisorContext, 'actionable_count', 0) }}
๐งญ{{ __('ui.visit_advisor_walk_limit') }}{{ data_get($advisorContext, 'max_walk_distance_m') ? data_get($advisorContext, 'max_walk_distance_m').' m' : __('ui.visit_advisor_unlimited') }}
โณ{{ __('ui.visit_advisor_closing') }}{{ $advisorMinutesToClose !== null && $advisorMinutesToClose >= 0 ? trans_choice('ui.visit_advisor_minutes_left', $advisorMinutesToClose, ['count' => $advisorMinutesToClose]) : 'โ' }}
{{ $advisorWeatherIcon }}{{ __('ui.visit_weather') }}{{ data_get($advisorWeather, 'enabled') ? $advisorWeatherLabel : __('ui.visit_advisor_weather_off') }}
@if(data_get($advisorWeather, 'enabled') && $advisorWeatherState !== 'normal')
{{ $advisorWeatherState === 'severe' ? 'โ ๏ธ' : '๐ฆ๏ธ' }}
{{ __('ui.visit_advisor_weather_'.$advisorWeatherState.'_title') }}{{ __('ui.visit_advisor_weather_'.$advisorWeatherState.'_text') }}
@endif
โ {{ __('ui.visit_advisor_no_gps_note') }}
@if($activeChallenges->isNotEmpty())
@foreach($activeChallenges as $challengeParticipant)
@php
$activeChallenge = $challengeParticipant->challenge;
$challengeTarget = max(1, (int) data_get($activeChallenge?->rules, 'target_score', 1));
$challengeScore = (int) $challengeParticipant->score;
$challengeProgress = min(100, (int) round(($challengeScore / $challengeTarget) * 100));
$challengeSystemKey = 'challenge_official_'.$activeChallenge?->period_kind.'_'.$activeChallenge?->challenge_type.'_title';
$challengeTitle = $activeChallenge?->is_system && __($challengeSystemKey) !== $challengeSystemKey ? __($challengeSystemKey) : $activeChallenge?->name;
@endphp
{{ $activeChallenge?->challenge_type === 'coasters' || $activeChallenge?->challenge_type === 'new_coasters' ? '๐ข' : ($activeChallenge?->challenge_type === 'manufacturers' ? 'โ๏ธ' : ($activeChallenge?->challenge_type === 'parks' ? '๐ฐ' : '๐ก')) }}{{ $challengeTitle }}
{{ $challengeScore }} / {{ $challengeTarget }}
@endforeach
@endif
@if($proximityReference)
โ
{{ __('ui.visit_v3_proximity_kicker') }}
{{ $proximityReference['name'] }}
{{ $proximityReference['type'] === 'last_ride' ? __('ui.visit_v3_proximity_last_ride') : __('ui.visit_v3_proximity_roadbook') }}
โ {{ __('ui.visit_v3_no_gps') }}
@endif
@if($isGroupMode && $nextProgramItem)
@php
$nextProgramAttraction = $nextProgramItem->attraction;
$nextProgramLive = $nextProgramAttraction?->liveStatus;
$nextProgramInsight = $nextProgramAttraction ? ($liveInsights->get((int) $nextProgramAttraction->id) ?? []) : [];
$nextProgramFresh = (bool) ($nextProgramInsight['is_fresh'] ?? false);
$nextProgramWait = $nextProgramInsight['display_wait_minutes'] ?? null;
$nextProgramWaitKind = $nextProgramInsight['wait_kind'] ?? 'unavailable';
$nextProgramTrend = $nextProgramInsight['trend'] ?? 'unknown';
$nextProgramStatus = $nextProgramInsight['status'] ?? 'unknown';
$nextProgramStatusLabel = match($nextProgramStatus) {
'open', 'operating' => __('ui.live_status_open'),
'down' => __('ui.live_status_down'),
'closed' => __('ui.live_status_closed'),
'refurbishment' => __('ui.live_status_refurbishment'),
default => __('ui.live_status_unknown'),
};
@endphp
{{ __('ui.visit_v2_next_step_kicker') }}{{ $programStatusIcons[$nextProgramItem->status] ?? 'โ' }} {{ __('ui.group_visit_program_status_'.$nextProgramItem->status) }}
{{ $programTypeIcons[$nextProgramItem->item_type] ?? 'โจ' }}
{{ $nextProgramItem->scheduled_at ? $nextProgramItem->scheduled_at->timezone($park->timezone)->format('H:i') : __('ui.group_visit_program_flexible') }}
ยท {{ $nextProgramItem->team?->name ?: __('ui.group_visit_program_everyone') }}
{{ $nextProgramItem->title }}
@if($nextProgramItem->note)
{{ $nextProgramItem->note }}
@endif
@if($nextProgramAttraction)
{{ $nextProgramStatusLabel }}
โฑ {{ $nextProgramWaitKind === 'walk_on' ? __('ui.live_walk_on_short') : ($nextProgramWait ?? 'โ') }} min
{{ $nextProgramWaitKind === 'unconfirmed_zero' ? __('ui.live_wait_unconfirmed') : ($nextProgramFresh ? __('ui.live_no_wait') : __('ui.live_data_stale_short')) }}
@if($nextProgramTrend === 'up') โ @elseif($nextProgramTrend === 'down') โ @else โ @endif {{ __('ui.live_trend_'.$nextProgramTrend) }}
@endif
@if($nextProgramAttraction)
@endif
@endif
@if($nextSuggested)
@php
$nextSuggestedTranslation = $nextSuggested->translations->firstWhere('locale', app()->getLocale()) ?? $nextSuggested->translations->firstWhere('locale', 'en');
$nextSuggestedName = $nextSuggestedTranslation?->name ?: $nextSuggested->official_name;
$nextSuggestedDistance = $nextSuggested->visit_mode_distance_m;
$nextSuggestedDistanceLabel = $nextSuggestedDistance === null
? null
: ($nextSuggestedDistance < 1000
? ((int) round($nextSuggestedDistance / 10) * 10).' m'
: number_format($nextSuggestedDistance / 1000, 1, app()->getLocale() === 'fr' ? ',' : '.', '').' km');
$nextSuggestedForecast = $nextSuggested->visit_mode_wait_forecast ?? [];
$nextSuggestedForecastBest = ($nextSuggestedForecast['recommendation'] ?? null) === 'wait'
? ($nextSuggestedForecast['best_later_window'] ?? $nextSuggestedForecast['best_remaining_window'] ?? $nextSuggestedForecast['best_window'] ?? null)
: ($nextSuggestedForecast['best_remaining_window'] ?? $nextSuggestedForecast['best_window'] ?? null);
@endphp
{{ __('ui.visit_advisor_primary_kicker') }}
{{ __('ui.visit_advisor_action_'.$nextSuggested->visit_mode_advisor_action) }}
{{ $nextSuggestedName }}
{{ __('ui.visit_advisor_primary_intro') }}
{{ __('ui.visit_advisor_confidence') }} ยท {{ __('ui.visit_advisor_confidence_'.$nextSuggested->visit_mode_advisor_confidence) }}
@if(in_array('roadbook_now',$nextSuggested->visit_mode_suggestion_reasons,true))โท {{ __('ui.visit_reason_roadbook_now') }}@endif
@if(in_array('roadbook',$nextSuggested->visit_mode_suggestion_reasons,true))โท {{ __('ui.visit_reason_roadbook') }}@endif
@if(in_array('wishlist',$nextSuggested->visit_mode_suggestion_reasons,true))โ
{{ __('ui.wishlist_priority') }}@endif
@if(in_array('new_coaster',$nextSuggested->visit_mode_suggestion_reasons,true))โฆ {{ __('ui.visit_reason_new_coaster') }}@endif
@if(in_array('personal',$nextSuggested->visit_mode_suggestion_reasons,true)){{ __('ui.visit_reason_personal') }}@endif
@if(in_array('low_wait',$nextSuggested->visit_mode_suggestion_reasons,true) && $nextSuggested->visit_mode_wait !== null){{ __('ui.visit_reason_low_wait') }}@endif
@if(in_array('wait_dropping',$nextSuggested->visit_mode_suggestion_reasons,true))โ {{ __('ui.visit_reason_wait_dropping') }}@endif
@if(in_array('wait_stable',$nextSuggested->visit_mode_suggestion_reasons,true))โ {{ __('ui.visit_reason_wait_stable') }}@endif
@if(in_array('historical_good_time',$nextSuggested->visit_mode_suggestion_reasons,true))โด {{ __('ui.visit_reason_historical_good_time') }}@endif
@if(in_array('roadbook_soon',$nextSuggested->visit_mode_suggestion_reasons,true))โท {{ __('ui.visit_reason_roadbook_soon') }}@endif
@if(in_array('weather_shelter',$nextSuggested->visit_mode_suggestion_reasons,true))โ {{ __('ui.visit_reason_weather_shelter') }}@endif
@if(in_array('closing_window',$nextSuggested->visit_mode_suggestion_reasons,true))โณ {{ __('ui.visit_reason_closing_window') }}@endif
@if(in_array('nearby',$nextSuggested->visit_mode_suggestion_reasons,true))โ {{ __('ui.visit_reason_nearby') }}@endif
visit_mode_wait === null) hidden @endif>
{{ __('ui.visit_v2_current_wait') }}{{ $nextSuggested->visit_mode_wait_kind === 'walk_on' ? __('ui.live_walk_on_short') : ($nextSuggested->visit_mode_wait ?? 'โ') }}visit_mode_wait_kind === 'walk_on') hidden @endif>min
visit_mode_wait_trend === 'unknown') hidden @endif>@if($nextSuggested->visit_mode_wait_trend === 'up') โ @elseif($nextSuggested->visit_mode_wait_trend === 'down') โ @else โ @endif {{ __('ui.live_trend_'.$nextSuggested->visit_mode_wait_trend) }}visit_mode_wait_trend_delta === null || $nextSuggested->visit_mode_wait_trend === 'stable') hidden @endif>{{ ($nextSuggested->visit_mode_wait_trend_delta ?? 0) > 0 ? '+' : '' }}{{ $nextSuggested->visit_mode_wait_trend_delta ?? '' }} min
visit_mode_wait !== null) hidden @endif>
{{ __('ui.visit_v2_current_wait') }}โ{{ $nextSuggested->visit_mode_wait_kind === 'unconfirmed_zero' ? __('ui.live_wait_unconfirmed') : __('ui.live_no_wait') }}
@if($nextSuggestedDistanceLabel !== null)
{{ __('ui.visit_v3_distance_label') }}
{{ $nextSuggestedDistanceLabel }}
{{ $nextSuggested->visit_mode_walk_minutes ? trans_choice('ui.visit_advisor_walk_minutes', $nextSuggested->visit_mode_walk_minutes, ['count' => $nextSuggested->visit_mode_walk_minutes]) : __('ui.visit_v3_distance_approx') }}
@endif
@if(($nextSuggestedForecast['available'] ?? false) && ($nextSuggestedForecast['current_typical_minutes'] ?? null) !== null)
{{ __('ui.wait_forecast_kicker') }}
{{ __('ui.visit_forecast_typical', ['minutes' => $nextSuggestedForecast['current_typical_minutes']]) }}
@if(($nextSuggestedForecast['recommendation'] ?? null) === 'wait' && $nextSuggestedForecastBest)
{{ __('ui.visit_forecast_best_later', ['time' => $nextSuggestedForecastBest['label'], 'minutes' => $nextSuggestedForecastBest['median']]) }}
@else
{{ __('ui.wait_forecast_recommendation_'.$nextSuggestedForecast['recommendation']) }}
@endif
@endif
@endif
@if($isGroupMode && $visibleProgramItems->isNotEmpty())
@foreach($visibleProgramItems->take(8) as $programItem)
@php
$programAttraction = $programItem->attraction;
$programLive = $programAttraction?->liveStatus;
$programInsight = $programAttraction ? ($liveInsights->get((int) $programAttraction->id) ?? []) : [];
$programFresh = (bool) ($programInsight['is_fresh'] ?? false);
$programWait = $programInsight['display_wait_minutes'] ?? null;
$programWaitKind = $programInsight['wait_kind'] ?? 'unavailable';
@endphp
{{ $loop->iteration }}
{{ $programTypeIcons[$programItem->item_type] ?? 'โจ' }}
{{ $programItem->scheduled_at ? $programItem->scheduled_at->timezone($park->timezone)->format('H:i') : __('ui.group_visit_program_flexible') }} ยท {{ $programItem->team?->name ?: __('ui.group_visit_program_everyone') }}
{{ $programItem->title }}
{{ $programStatusIcons[$programItem->status] ?? 'โ' }} {{ __('ui.group_visit_program_status_'.$programItem->status) }}
@if($programAttraction)
{{ $programWaitKind === 'walk_on' ? __('ui.live_walk_on_short') : ($programWait ?? 'โ') }} min
{{ $programWaitKind === 'unconfirmed_zero' ? __('ui.live_wait_unconfirmed') : 'โ' }}
โ
@endif
@endforeach
@endif
{{ __('ui.ride_together_v2_kicker') }}
{{ __('ui.ride_together_v2_visit_title') }}
{{ $isGroupMode ? __('ui.ride_together_v2_visit_group_intro') : __('ui.ride_together_v2_visit_intro') }}
has('attraction_id') || $errors->has('scheduled_for')) open @endif>
{{ __('ui.ride_together_v2_quick_create') }}
@if($rideTogetherPosts->isNotEmpty())
@foreach($rideTogetherPosts->take(8) as $ridePost)
@php
$rideTranslation = $ridePost->attraction?->translations?->firstWhere('locale', app()->getLocale()) ?? $ridePost->attraction?->translations?->firstWhere('locale', 'en');
$rideName = $rideTranslation?->name ?: $ridePost->attraction?->official_name ?: __('ui.ride_together_attraction');
$rideTime = $ridePost->scheduled_for?->timezone($park->timezone ?: config('app.timezone'));
$rideJoined = $ridePost->participants->where('status', 'joined');
$rideIsJoined = $rideJoined->contains('user_id', auth()->id());
$rideIsOwner = $ridePost->created_by_user_id === auth()->id();
$rideIsFull = $ridePost->max_participants && $rideJoined->count() >= $ridePost->max_participants;
$rideScope = in_array($ridePost->visibility_scope, ['public', 'group', 'team'], true) ? $ridePost->visibility_scope : 'public';
@endphp
{{ __('ui.ride_together_v2_scope_'.$rideScope) }}@if($rideScope === 'team' && $ridePost->team) ยท {{ $ridePost->team->emoji }} {{ $ridePost->team->name }}@endif{{ $rideTime?->format('H:i') ?: 'โ' }}
{{ $rideName }}
๐ฅ {{ $rideJoined->count() }}/{{ $ridePost->max_participants ?: 'โ' }}
@if($ridePost->meeting_point)
๐ {{ $ridePost->meeting_point }}
@endif
@if($ridePost->programItem)
โท {{ __('ui.ride_together_v2_from_roadbook') }}
@endif
@if($ridePost->note){{ $ridePost->note }}
@endif
{{ __('ui.ride_together_by', ['name' => $ridePost->creator?->username ? '@'.$ridePost->creator->username : ($ridePost->creator?->name ?: 'โ')]) }}
@if($rideIsOwner)
โ {{ __('ui.ride_together_yours') }}
@elseif($rideIsJoined)
@elseif(!$rideIsFull)
@else{{ __('ui.ride_together_full_label') }}@endif
@endforeach
@else
๐ข{{ __('ui.ride_together_v2_empty_title') }}{{ __('ui.ride_together_v2_visit_empty') }}
@endif
@if($suggested->isNotEmpty())
{{ __('ui.visit_suggested_kicker') }}
{{ __('ui.visit_v2_other_suggestions') }}
@foreach($suggested as $attraction)
@php $tr=$attraction->translations->firstWhere('locale',app()->getLocale()) ?? $attraction->translations->firstWhere('locale','en'); $name=$tr?->name ?: $attraction->official_name; @endphp
{{ __('ui.visit_advisor_action_'.$attraction->visit_mode_advisor_action) }}@if($attraction->visit_mode_is_wishlisted)โ
{{ __('ui.wishlist_priority') }}@endif
{{ $attraction->zone?->official_name ?: $parkName }}{{ $name }}
@if(in_array('roadbook_now',$attraction->visit_mode_suggestion_reasons,true))โท {{ __('ui.visit_reason_roadbook_now') }}@endif
@if(in_array('roadbook',$attraction->visit_mode_suggestion_reasons,true))โท {{ __('ui.visit_reason_roadbook') }}@endif
@if(in_array('new_coaster',$attraction->visit_mode_suggestion_reasons,true))โฆ {{ __('ui.visit_reason_new_coaster') }}@endif
@if(in_array('personal',$attraction->visit_mode_suggestion_reasons,true)){{ __('ui.visit_reason_personal') }}@endif
@if(in_array('low_wait',$attraction->visit_mode_suggestion_reasons,true) && $attraction->visit_mode_wait !== null){{ __('ui.visit_reason_low_wait') }}@endif
@if(in_array('wait_dropping',$attraction->visit_mode_suggestion_reasons,true))โ {{ __('ui.visit_reason_wait_dropping') }}@endif
@if(in_array('historical_good_time',$attraction->visit_mode_suggestion_reasons,true))โด {{ __('ui.visit_reason_historical_good_time') }}@endif
@if(in_array('roadbook_soon',$attraction->visit_mode_suggestion_reasons,true))โท {{ __('ui.visit_reason_roadbook_soon') }}@endif
@if(in_array('weather_shelter',$attraction->visit_mode_suggestion_reasons,true))โ {{ __('ui.visit_reason_weather_shelter') }}@endif
@if(in_array('closing_window',$attraction->visit_mode_suggestion_reasons,true))โณ {{ __('ui.visit_reason_closing_window') }}@endif
@if(in_array('nearby',$attraction->visit_mode_suggestion_reasons,true))โ {{ __('ui.visit_reason_nearby') }}@endif
โฑ {{ $attraction->visit_mode_wait !== null ? ($attraction->visit_mode_wait_kind === 'walk_on' ? __('ui.live_walk_on_short') : $attraction->visit_mode_wait.' min') : ($attraction->visit_mode_wait_kind === 'unconfirmed_zero' ? __('ui.live_wait_unconfirmed') : __('ui.live_no_wait')) }}
@if($attraction->visit_mode_distance_m !== null)
โ {{ $attraction->visit_mode_distance_m < 1000 ? ((int) round($attraction->visit_mode_distance_m / 10) * 10).' m' : number_format($attraction->visit_mode_distance_m / 1000, 1, app()->getLocale() === 'fr' ? ',' : '.', '').' km' }}
@if($attraction->visit_mode_walk_minutes)๐ถ ~{{ $attraction->visit_mode_walk_minutes }} min@endif
@endif
@endforeach
@endif
@if($advisorWatchlist->isNotEmpty())
{{ __('ui.visit_advisor_watch_kicker') }}{{ __('ui.visit_advisor_watch_title') }}
{{ __('ui.visit_advisor_watch_intro') }}
@foreach($advisorWatchlist as $watchAttraction)
@php $watchTr=$watchAttraction->translations->firstWhere('locale',app()->getLocale()) ?? $watchAttraction->translations->firstWhere('locale','en'); $watchName=$watchTr?->name ?: $watchAttraction->official_name; @endphp
{{ __('ui.visit_advisor_action_'.$watchAttraction->visit_mode_advisor_action) }}{{ $watchName }}
{{ $watchAttraction->visit_mode_wait !== null ? $watchAttraction->visit_mode_wait.' min' : 'โ' }}@if($watchAttraction->visit_mode_walk_minutes)๐ถ ~{{ $watchAttraction->visit_mode_walk_minutes }} min@endif
@if(in_array('over_wait',$watchAttraction->visit_mode_advisor_risks,true)){{ __('ui.visit_advisor_risk_over_wait') }}
@elseif(in_array('wait_rising',$watchAttraction->visit_mode_advisor_risks,true)){{ __('ui.visit_advisor_risk_wait_rising') }}
@elseif(in_array('historical_better_later',$watchAttraction->visit_mode_advisor_risks,true)){{ __('ui.visit_advisor_risk_historical_better_later') }}
@elseif(in_array('far_walk',$watchAttraction->visit_mode_advisor_risks,true)){{ __('ui.visit_advisor_risk_far_walk') }}
@elseif(in_array('weather_exposed',$watchAttraction->visit_mode_advisor_risks,true)){{ __('ui.visit_advisor_risk_weather') }}
@else{{ __('ui.visit_advisor_risk_generic') }}@endif
@endforeach
@endif
{{ __('ui.visit_advisor_settings_kicker') }}
{{ __('ui.visit_advisor_settings_title') }}
{{ __('ui.visit_all_attractions') }}
{{ __('ui.visit_plan_day') }}
@if($isGroupMode)@endif
{{ __('ui.visit_filter_empty') }}
@foreach($attractions as $attraction)
@php
$tr = $attraction->translations->firstWhere('locale', app()->getLocale()) ?? $attraction->translations->firstWhere('locale', 'en');
$name = $tr?->name ?: $attraction->official_name;
$live = $attraction->liveStatus;
$isFresh = $attraction->visit_mode_live_fresh;
$status = $attraction->visit_mode_is_open ? 'open' : (($isFresh && $live) ? ($live->operational_status ?: 'unknown') : 'unknown');
$statusLabel = match($status) {
'open', 'operating' => __('ui.live_status_open'),
'down' => __('ui.live_status_down'),
'closed' => __('ui.live_status_closed'),
'refurbishment' => __('ui.live_status_refurbishment'),
default => __('ui.live_status_unknown'),
};
$trendSymbol = match($attraction->visit_mode_wait_trend) {
'up' => 'โ',
'down' => 'โ',
default => 'โ',
};
$distanceLabel = null;
if ($attraction->visit_mode_distance_m !== null) {
$distanceLabel = $attraction->visit_mode_distance_m < 1000
? ((int) round($attraction->visit_mode_distance_m / 10) * 10).' m'
: number_format($attraction->visit_mode_distance_m / 1000, 1, app()->getLocale() === 'fr' ? ',' : '.', '').' km';
}
$rideTogetherPost = $attraction->visit_mode_ride_together_post;
$rideTogetherCount = $attraction->visit_mode_ride_together_posts->count();
$cardForecast = $attraction->visit_mode_wait_forecast ?? [];
$cardForecastBest = ($cardForecast['recommendation'] ?? null) === 'wait'
? ($cardForecast['best_later_window'] ?? $cardForecast['best_remaining_window'] ?? $cardForecast['best_window'] ?? null)
: ($cardForecast['best_remaining_window'] ?? $cardForecast['best_window'] ?? null);
@endphp
{{ $attraction->coaster ? 'โ' : 'โ' }}
{{ $attraction->zone?->official_name ?: $parkName }}
{{ $name }}
@if(isset($attraction->visit_mode_advisor_action))
{{ __('ui.visit_advisor_action_'.$attraction->visit_mode_advisor_action) }}
@endif
@if($attraction->visit_mode_is_wishlisted)
โ
{{ __('ui.wishlist_priority') }}
@endif
@if($attraction->visit_mode_is_in_program)
โท {{ __('ui.visit_v2_in_roadbook') }}
@endif
@if($attraction->visit_mode_is_personal_match)
โฆ {{ __('ui.reco_for_you') }}
@endif
@if($attraction->visit_mode_is_new_for_user)
๏ผ {{ __('ui.visit_new_for_collection') }}
@endif
@if($distanceLabel !== null)
โ {{ $distanceLabel }}
@if($attraction->visit_mode_walk_minutes)
ยท ~{{ $attraction->visit_mode_walk_minutes }} min
@endif
@endif
@if(($cardForecast['available'] ?? false) && ($cardForecast['current_typical_minutes'] ?? null) !== null)
โด {{ __('ui.visit_forecast_typical', ['minutes' => $cardForecast['current_typical_minutes']]) }}
@if(($cardForecast['recommendation'] ?? null) === 'wait' && $cardForecastBest)
ยท {{ __('ui.visit_forecast_best_later', ['time' => $cardForecastBest['label'], 'minutes' => $cardForecastBest['median']]) }}
@endif
@endif
@if($rideTogetherPost)
๐ข {{ $rideTogetherCount }} {{ __('ui.ride_together_v2_live_badge') }}
@endif
{{ $statusLabel }}
visit_mode_wait === null ? 'hidden' : '' }}>
{{ $attraction->visit_mode_wait_kind === 'walk_on' ? __('ui.live_walk_on_short') : ($attraction->visit_mode_wait ?? 'โ') }}
visit_mode_wait_kind === 'walk_on' ? 'hidden' : '' }}>min
visit_mode_wait_trend === 'unknown' ? 'hidden' : '' }}>
{{ $trendSymbol }}
{{ __('ui.live_trend_'.$attraction->visit_mode_wait_trend) }}
visit_mode_wait_trend_delta === null || $attraction->visit_mode_wait_trend === 'stable' ? 'hidden' : '' }}>{{ ($attraction->visit_mode_wait_trend_delta ?? 0) > 0 ? '+' : '' }}{{ $attraction->visit_mode_wait_trend_delta ?? '' }} min
visit_mode_wait !== null ? 'hidden' : '' }} class="visit-no-wait">
{{ $attraction->visit_mode_wait_kind === 'unconfirmed_zero' ? __('ui.live_wait_unconfirmed') : ($isFresh ? __('ui.live_no_wait') : __('ui.live_data_stale_short')) }}
@endforeach