PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.2.9
Yatra – Travel Booking & Tour Operator Software v3.0.2.9
3.0.16 3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 2.0.1 All 84 releases
yatra / templates / trip-listing-card.php

trip-listing-card.php in Yatra – Travel Booking & Tour Operator Software 3.0.2.9, at templates/trip-listing-card.php

561 lines 22.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Reusable Trip Listing Card Template
4 *
5 * This template uses Trip model getter methods for clean, reusable data access
6 * All trip-related data comes from the Trip model methods
7 *
8 * @package Yatra
9 * @var \Yatra\Models\Trip $trip The trip model object with getter methods
10 */
11
12 // Prevent direct access
13 if (!defined('ABSPATH')) {
14 exit;
15 }
16
17 // Ensure we have a trip object
18 if (!isset($trip) || !is_object($trip)) {
19 return;
20 }
21
22 // Convert stdClass to Trip model instance if needed
23 if (!($trip instanceof \Yatra\Models\Trip)) {
24 // Preserve review data before conversion
25 $original_reviews = $trip->reviews ?? null;
26 $original_average_rating = $trip->avg_rating ?? null;
27 $original_review_count = $trip->reviews_count ?? null;
28
29 $trip = \Yatra\Models\Trip::fromStdClass($trip);
30
31 // Restore review data after conversion
32 if ($original_reviews !== null) {
33 $trip->reviews = $original_reviews;
34 }
35 if ($original_average_rating !== null) {
36 $trip->avg_rating = $original_average_rating;
37 }
38 if ($original_review_count !== null) {
39 $trip->reviews_count = $original_review_count;
40 }
41 }
42
43
44 // Get all trip data using Trip model getter methods
45 $title = $trip->getTitle();
46 $duration = $trip->getDuration();
47 $difficulty = $trip->getDifficulty();
48 // Calculate rating directly from reviews array (working correctly)
49 $reviews = $trip->reviews ?? [];
50 $review_count = count($reviews);
51 $average_rating = 0;
52
53 if ($review_count > 0) {
54 $total_rating = 0;
55 foreach ($reviews as $review) {
56 $total_rating += (float) ($review->rating ?? 0);
57 }
58 $average_rating = round($total_rating / $review_count, 1);
59 }
60
61 $rating = [
62 'average_rating' => $average_rating,
63 'review_count' => $review_count,
64 'formatted_rating' => number_format($average_rating, 1),
65 'has_rating' => $average_rating > 0 && $review_count > 0,
66 ];
67 if (function_exists('yatra_trip_listing_card_rating_data')) {
68 $rating = array_merge($rating, yatra_trip_listing_card_rating_data($trip, $rating));
69 }
70
71 $pricing = $trip->getPricing();
72 $discount = $trip->getDiscount();
73 $image = $trip->getImage();
74 $permalink = $trip->getPermalink();
75 $destinations = $trip->getDestinations();
76 $categories = $trip->getCategories();
77 $activities = $trip->getActivities();
78
79 if (function_exists('yatra_trip_listing_filter_classification_duplicates')) {
80 [$destinations, $activities, $categories] = yatra_trip_listing_filter_classification_duplicates(
81 $destinations,
82 $activities,
83 $categories,
84 $trip
85 );
86 }
87
88 $starting_loc = method_exists($trip, 'getStartingLocation') ? $trip->getStartingLocation() : ($trip->starting_location ?? null);
89 $ending_loc = $trip->ending_location ?? null;
90 $starting_loc = is_string($starting_loc) ? trim($starting_loc) : '';
91 $ending_loc = is_string($ending_loc) ? trim($ending_loc) : '';
92 $yatra_card_location_line = '';
93 if ($starting_loc !== '' && $ending_loc !== '' && $starting_loc !== $ending_loc) {
94 $yatra_card_location_line = function_exists('yatra_format_trip_listing_route_line')
95 ? yatra_format_trip_listing_route_line($starting_loc, $ending_loc)
96 : $starting_loc . ' → ' . $ending_loc;
97 } elseif ($starting_loc !== '') {
98 $yatra_card_location_line = $starting_loc;
99 } elseif ($ending_loc !== '') {
100 $yatra_card_location_line = $ending_loc;
101 }
102
103 $yatra_traveler_type_labels = function_exists('yatra_trip_listing_traveler_type_labels_for_card')
104 ? yatra_trip_listing_traveler_type_labels_for_card($trip)
105 : [];
106
107 $yatra_trip_type_label = function_exists('yatra_trip_listing_trip_type_label')
108 ? yatra_trip_listing_trip_type_label($trip->trip_type ?? null)
109 : '';
110 $yatra_primary_category = !empty($categories[0]) ? $categories[0] : null;
111 $yatra_categories_additional = [];
112 foreach ($categories as $yatra_cat_row) {
113 if ($yatra_primary_category && isset($yatra_cat_row->id, $yatra_primary_category->id)
114 && (int) $yatra_cat_row->id === (int) $yatra_primary_category->id) {
115 continue;
116 }
117 $yatra_categories_additional[] = $yatra_cat_row;
118 }
119
120 $yatra_view_details_icon_slug = function_exists('yatra_trip_listing_card_cta_icon_slug')
121 ? yatra_trip_listing_card_cta_icon_slug($categories, $destinations, $difficulty)
122 : '';
123
124 // Check for group discounts availability
125 $has_group_discounts = false;
126 $group_discount_summary = '';
127 try {
128 // Call the group discount API to check availability
129 $api_url = rest_url('yatra/v1/discounts/group-discounts');
130 $response = wp_remote_post($api_url, [
131 'method' => 'GET',
132 'body' => [
133 'trip_ids' => [$trip->id]
134 ],
135 'headers' => [
136 'Content-Type' => 'application/json',
137 ],
138 ]);
139
140 if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200) {
141 $data = json_decode(wp_remote_retrieve_body($response), true);
142 if (isset($data[$trip->id]) && $data[$trip->id]['has_group_discounts']) {
143 $has_group_discounts = true;
144 $group_discount_summary = $data[$trip->id]['summary'];
145 }
146 }
147 } catch (Exception $e) {
148 // Silently fail if API call fails - don't break the page
149 $has_group_discounts = false;
150 }
151 ?>
152
153 <div class="yatra-trip-card">
154 <div class="yatra-trip-card-image">
155 <?php if (!empty($permalink)): ?>
156 <a href="<?php echo esc_url($permalink); ?>" class="yatra-trip-image-link">
157 <img src="<?php echo esc_url($image['url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>">
158 </a>
159 <?php else: ?>
160 <img src="<?php echo esc_url($image['url']); ?>" alt="<?php echo esc_attr($image['alt']); ?>">
161 <?php endif; ?>
162 <?php if ($discount['has_discount']): ?>
163 <div class="yatra-discount-badge">
164 <?php
165 printf(
166 /* translators: %s: discount text (e.g. "10%") */
167 esc_html__('%s OFF', 'yatra'),
168 esc_html($discount['discount_text'])
169 );
170 ?>
171 </div>
172 <?php endif; ?>
173 <?php if ($has_group_discounts): ?>
174 <div class="yatra-group-discount-badge" title="<?php echo esc_attr($group_discount_summary); ?>">
175 <svg width="12" height="12" fill="currentColor" viewBox="0 0 20 20">
176 <path d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
177 </svg>
178 <?php esc_html_e('Group Discounts', 'yatra'); ?>
179 </div>
180 <?php endif; ?>
181 <?php if (function_exists('yatra_wishlist_enabled') && yatra_wishlist_enabled()) : ?>
182 <button type="button" class="yatra-favorite-btn" data-trip-id="<?php echo esc_attr($trip->id); ?>" title="<?php esc_attr_e('Save to wishlist', 'yatra'); ?>" aria-label="<?php esc_attr_e('Save to wishlist', 'yatra'); ?>">
183 <svg width="16" height="16" fill="none" stroke="currentColor" viewBox="0 0 24 24">
184 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/>
185 </svg>
186 </button>
187 <?php endif; ?>
188 <!-- Difficulty level overlay on bottom-right -->
189 <?php if ($difficulty['has_difficulty'] && !empty($difficulty['icon'])): ?>
190 <div class="yatra-difficulty-overlay">
191 <?php echo yatra_svg_icon($difficulty['icon'], 'difficulty-icon'); ?>
192 <?php echo ' ' . esc_html($difficulty['level']); ?>
193 </div>
194 <?php endif; ?>
195 </div>
196 <div class="yatra-trip-content">
197 <?php if ($yatra_card_location_line !== '' || !empty($destinations)) : ?>
198 <div class="yatra-trip-destinations" role="group" aria-label="<?php esc_attr_e('Trip location', 'yatra'); ?>">
199 <svg class="location-icon" width="14" height="14" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true">
200 <path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd" />
201 </svg>
202 <?php if ($yatra_card_location_line !== '') : ?>
203 <span class="yatra-trip-card-location-text"><?php echo esc_html($yatra_card_location_line); ?></span>
204 <?php else : ?>
205 <?php
206 $destination_links = [];
207 foreach ($destinations as $destination) {
208 if (empty($destination->name)) {
209 continue;
210 }
211 $destination_permalink = function_exists('yatra_get_destination_permalink')
212 ? yatra_get_destination_permalink($destination)
213 : '#';
214 $destination_links[] = '<a href="' . esc_url($destination_permalink) . '" class="destination-link">' . esc_html($destination->name) . '</a>';
215 }
216 echo implode(', ', $destination_links);
217 ?>
218 <?php endif; ?>
219 </div>
220 <?php endif; ?>
221
222 <h3 class="yatra-trip-title">
223 <?php if (!empty($permalink)): ?>
224 <a href="<?php echo esc_url($permalink); ?>" class="yatra-trip-title-link"><?php echo esc_html($title); ?></a>
225 <?php else: ?>
226 <?php echo esc_html($title); ?>
227 <?php endif; ?>
228 </h3>
229
230 <?php if ($yatra_trip_type_label !== '' || $yatra_primary_category) : ?>
231 <div class="yatra-trip-card-meta">
232 <?php if ($yatra_trip_type_label !== '') : ?>
233 <span class="yatra-trip-type-chip"><?php echo esc_html($yatra_trip_type_label); ?></span>
234 <?php endif; ?>
235 <?php if ($yatra_primary_category && !empty($yatra_primary_category->name)) : ?>
236 <?php
237 $pc_link = function_exists('yatra_get_category_permalink')
238 ? yatra_get_category_permalink($yatra_primary_category)
239 : '';
240 ?>
241 <?php if ($pc_link !== '') : ?>
242 <a class="yatra-trip-primary-category-chip" href="<?php echo esc_url($pc_link); ?>"><?php echo esc_html($yatra_primary_category->name); ?></a>
243 <?php else : ?>
244 <span class="yatra-trip-primary-category-chip yatra-trip-primary-category-chip--text"><?php echo esc_html($yatra_primary_category->name); ?></span>
245 <?php endif; ?>
246 <?php endif; ?>
247 </div>
248 <?php endif; ?>
249
250 <!-- Short Description -->
251 <?php
252 $short_desc = $trip->getShortDescription();
253 if (!empty($short_desc)):
254 ?>
255 <p class="yatra-trip-short-description">
256 <?php echo \Yatra\Helpers\FormatHelper::sanitizeQuillHtml($short_desc); ?>
257 </p>
258 <?php endif; ?>
259
260 <!-- Trip Stats Row: scannable decision cues (duration, rating, group, difficulty, optional bookings) -->
261 <div class="yatra-trip-stats-row">
262 <?php if ($duration['has_duration']) : ?>
263 <div class="yatra-trip-stat">
264 <div class="yatra-stat-icon duration">
265 <?php echo yatra_svg_icon('calendar', ''); ?>
266 </div>
267 <div class="yatra-stat-content">
268 <span class="yatra-stat-value"><?php echo esc_html($duration['formatted']); ?></span>
269 <span class="yatra-stat-label"><?php esc_html_e('Duration', 'yatra'); ?></span>
270 </div>
271 </div>
272 <?php endif; ?>
273
274 <?php if (!empty($rating['has_rating'])) : ?>
275 <div class="yatra-trip-stat">
276 <div class="yatra-stat-icon rating">
277 <?php echo yatra_svg_icon('star', ''); ?>
278 </div>
279 <div class="yatra-stat-content">
280 <span class="yatra-stat-value"><?php echo esc_html($rating['formatted_rating']); ?></span>
281 <span class="yatra-stat-label">
282 <?php
283 printf(
284 /* translators: %d: number of reviews */
285 esc_html(_n('%d review', '%d reviews', (int) $rating['review_count'], 'yatra')),
286 (int) $rating['review_count']
287 );
288 ?>
289 </span>
290 </div>
291 </div>
292 <?php endif; ?>
293
294 <?php if (!empty($trip->min_travelers) || !empty($trip->max_travelers)) : ?>
295 <div class="yatra-trip-stat">
296 <div class="yatra-stat-icon group">
297 <?php echo yatra_svg_icon('users', ''); ?>
298 </div>
299 <div class="yatra-stat-content">
300 <span class="yatra-stat-value">
301 <?php
302 $min_travelers = $trip->min_travelers ?? 1;
303 $max_travelers = $trip->max_travelers ?? 20;
304 echo esc_html($min_travelers . '-' . $max_travelers);
305 ?>
306 </span>
307 <span class="yatra-stat-label"><?php esc_html_e('Group size', 'yatra'); ?></span>
308 </div>
309 </div>
310 <?php endif; ?>
311
312 <?php if (!empty($difficulty['has_difficulty']) && empty($difficulty['icon'])) : ?>
313 <div class="yatra-trip-stat">
314 <div class="yatra-stat-icon difficulty">
315 <?php echo yatra_svg_icon('mountain', ''); ?>
316 </div>
317 <div class="yatra-stat-content">
318 <span class="yatra-stat-value"><?php echo esc_html($difficulty['level']); ?></span>
319 <span class="yatra-stat-label"><?php esc_html_e('Difficulty', 'yatra'); ?></span>
320 </div>
321 </div>
322 <?php endif; ?>
323
324 <?php if (apply_filters('yatra_trip_listing_card_show_bookings_count', false, $trip) && !empty($trip->bookings_count) && (int) $trip->bookings_count > 0) : ?>
325 <div class="yatra-trip-stat">
326 <div class="yatra-stat-icon bookings">
327 <svg width="14" height="14" fill="currentColor" viewBox="0 0 20 20">
328 <path fill-rule="evenodd" d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" clip-rule="evenodd" />
329 </svg>
330 </div>
331 <div class="yatra-stat-content">
332 <span class="yatra-stat-value"><?php echo esc_html((string) (int) $trip->bookings_count); ?></span>
333 <span class="yatra-stat-label"><?php esc_html_e('Bookings', 'yatra'); ?></span>
334 </div>
335 </div>
336 <?php endif; ?>
337 </div>
338
339 <?php if (!empty($yatra_traveler_type_labels)) : ?>
340 <div class="yatra-trip-traveler-types" role="group" aria-label="<?php esc_attr_e('Traveler types', 'yatra'); ?>">
341 <svg class="yatra-trip-traveler-types-icon" width="14" height="14" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true">
342 <path fill-rule="evenodd" d="M4 4a2 2 0 00-2 2v8a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2H4zm2 2h8v2H6V6zm0 4h5v2H6v-2z" clip-rule="evenodd" />
343 </svg>
344 <div class="yatra-trip-traveler-types-inner">
345 <span class="yatra-trip-traveler-types-label"><?php esc_html_e('Traveler types', 'yatra'); ?></span>
346 <span class="yatra-trip-traveler-types-pills">
347 <?php foreach ($yatra_traveler_type_labels as $ttl) : ?>
348 <span class="yatra-traveler-tier-pill"><?php echo esc_html($ttl); ?></span>
349 <?php endforeach; ?>
350 </span>
351 </div>
352 </div>
353 <?php endif; ?>
354
355
356 <!-- Activities Only -->
357 <?php if (!empty($activities)) : ?>
358 <div class="yatra-trip-activities" role="group" aria-label="<?php esc_attr_e('Activities', 'yatra'); ?>">
359 <?php foreach (array_slice($activities, 0, 3) as $activity) : ?>
360 <a href="<?php echo esc_url(yatra_get_activity_permalink($activity)); ?>" class="yatra-tag activity-tag">
361 <?php echo esc_html($activity->name); ?>
362 </a>
363 <?php endforeach; ?>
364 </div>
365 <?php endif; ?>
366
367 <!-- Additional trip categories (primary chip is under title) -->
368 <?php if (!empty($yatra_categories_additional)) : ?>
369 <div class="yatra-trip-categories-compact" role="group" aria-label="<?php esc_attr_e('More categories', 'yatra'); ?>">
370 <div class="yatra-category-icon">
371 <?php
372 $first_category = $yatra_categories_additional[0];
373 if (!empty($first_category->icon)) {
374 $icon_data = maybe_unserialize($first_category->icon);
375 if (is_array($icon_data) && isset($icon_data['type']) && $icon_data['type'] === 'icon' && !empty($icon_data['value'])) {
376 echo yatra_svg_icon($icon_data['value'], 'category-icon');
377 } else {
378 echo '<svg width="14" height="14" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M3 4a1 1 0 011-1h12a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V4zM3 10a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H4a1 1 0 01-1-1v-6zM14 9a1 1 0 00-1 1v6a1 1 0 001 1h2a1 1 0 001-1v-6a1 1 0 00-1-1h-2z" clip-rule="evenodd" /></svg>';
379 }
380 } else {
381 echo '<svg width="14" height="14" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M3 4a1 1 0 011-1h12a1 1 0 011 1v2a1 1 0 01-1 1H4a1 1 0 01-1-1V4zM3 10a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H4a1 1 0 01-1-1v-6zM14 9a1 1 0 00-1 1v6a1 1 0 001 1h2a1 1 0 001-1v-6a1 1 0 00-1-1h-2z" clip-rule="evenodd" /></svg>';
382 }
383 ?>
384 </div>
385 <span class="yatra-categories-text">
386 <?php
387 $category_links = [];
388 foreach ($yatra_categories_additional as $category) {
389 $category_links[] = '<a href="' . esc_url(yatra_get_category_permalink($category)) . '" class="yatra-category-link">' . esc_html($category->name) . '</a>';
390 }
391 echo implode(', ', $category_links);
392 ?>
393 </span>
394 </div>
395 <?php endif; ?>
396
397 <div class="yatra-trip-footer">
398 <div class="yatra-trip-card-price">
399 <span class="yatra-trip-price">
400 <?php if ($pricing['has_price']): ?>
401 <?php echo esc_html($pricing['price_prefix'] . $pricing['current_price']); ?>
402 <?php if ($pricing['has_discount'] && !empty($pricing['original_price'])): ?>
403 <span class="yatra-original-price"><?php echo esc_html($pricing['original_price']); ?></span>
404 <?php endif; ?>
405 <?php else: ?>
406 <?php esc_html_e('Contact for pricing', 'yatra'); ?>
407 <?php endif; ?>
408 </span>
409 </div>
410 <?php if (!empty($permalink)) : ?>
411 <a href="<?php echo esc_url($permalink); ?>" class="yatra-btn yatra-btn-primary yatra-archive-card-cta yatra-card-view-btn">
412 <?php echo function_exists('yatra_archive_listing_cta_icon_markup') ? yatra_archive_listing_cta_icon_markup($yatra_view_details_icon_slug, 'file-text') : yatra_svg_icon('file-text', 'yatra-btn-icon'); ?>
413 <span><?php esc_html_e('View Details', 'yatra'); ?></span>
414 </a>
415 <?php endif; ?>
416 </div>
417 </div>
418 </div>
419
420 <style>
421 .yatra-trip-short-description {
422 color: #64748b;
423 font-size: 0.875rem;
424 line-height: 1.5;
425 margin: 8px 0 12px 0;
426 display: -webkit-box;
427 -webkit-line-clamp: 2;
428 -webkit-box-orient: vertical;
429 overflow: hidden;
430 text-overflow: ellipsis;
431 }
432
433 /* Trip Stats Row */
434 .yatra-trip-stats-row {
435 display: flex;
436 flex-wrap: wrap;
437 gap: 16px;
438 margin: 12px 0;
439 padding: 12px 0;
440 }
441
442 .yatra-trip-stat {
443 display: flex;
444 align-items: center;
445 gap: 8px;
446 min-width: 0;
447 flex: 1;
448 }
449
450 .yatra-stat-icon {
451 display: flex;
452 align-items: center;
453 justify-content: center;
454 width: 28px;
455 height: 28px;
456 border-radius: 6px;
457 flex-shrink: 0;
458 }
459
460 .yatra-stat-icon.duration {
461 background: #dbeafe;
462 color: #1e40af;
463 }
464
465 .yatra-stat-icon.difficulty {
466 background: #fef3c7;
467 color: #d97706;
468 }
469
470 .yatra-stat-icon.group {
471 background: #dcfce7;
472 color: #166534;
473 }
474
475 .yatra-stat-icon.bookings {
476 background: #fce7f3;
477 color: #be185d;
478 }
479
480 .yatra-stat-content {
481 display: flex;
482 flex-direction: column;
483 min-width: 0;
484 flex: 1;
485 }
486
487 .yatra-stat-value {
488 font-size: 0.875rem;
489 font-weight: 600;
490 color: #1f2937;
491 line-height: 1.2;
492 }
493
494 .yatra-stat-label {
495 font-size: 0.75rem;
496 color: #6b7280;
497 line-height: 1.2;
498 margin-top: 2px;
499 }
500
501 /* Rating Row */
502 .yatra-trip-rating-row {
503 display: flex;
504 align-items: center;
505 gap: 12px;
506 margin: 12px 0;
507 }
508
509 .yatra-rating-stars {
510 display: flex;
511 align-items: center;
512 gap: 4px;
513 }
514
515 .yatra-rating-value {
516 font-weight: 600;
517 color: #1f2937;
518 font-size: 0.875rem;
519 }
520
521 .yatra-reviews-count {
522 font-size: 0.75rem;
523 color: #6b7280;
524 }
525
526 /* Responsive design */
527 @media (max-width: 768px) {
528 .yatra-trip-stats-row {
529 gap: 12px;
530 }
531
532 .yatra-trip-stat {
533 min-width: calc(50% - 6px);
534 }
535
536 .yatra-stat-icon {
537 width: 24px;
538 height: 24px;
539 }
540
541 .yatra-stat-value {
542 font-size: 0.8rem;
543 }
544
545 .yatra-stat-label {
546 font-size: 0.7rem;
547 }
548 }
549
550 @media (max-width: 480px) {
551 .yatra-trip-stats-row {
552 flex-direction: column;
553 gap: 8px;
554 }
555
556 .yatra-trip-stat {
557 min-width: 100%;
558 }
559 }
560 </style>
561