PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.16
Yatra – Travel Booking & Tour Operator Software v3.0.16
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
← All changes | assets/css/booking.css +213 -30 3.0.3 → 3.0.16 View file →
@@ -573,8 +573,24 @@
573 573 object-fit: cover;
574 574 display: block;
575 575 }
576 576
577 +/* Placeholder variant — used when the trip has no featured image
578 + (or the image URL fails to load). The bundled trip-placeholder.svg
579 + is an outline illustration, not a photograph, so contain it on a
580 + neutral background instead of cover-cropping. Keeps the
581 + confirmation card looking intentional rather than broken. */
582 +.yatra-trip-image--placeholder {
583 + background: linear-gradient(135deg, #eef2ff 0%, #e0e7ff 100%);
584 + box-shadow: 0 12px 24px rgba(99, 102, 241, 0.12);
585 +}
586 +
587 +.yatra-trip-image--placeholder img {
588 + object-fit: contain;
589 + padding: 16px;
590 + opacity: 0.7;
591 +}
592 +
577 593 .yatra-trip-info {
578 594 flex: 1;
579 595 }
580 596
@@ -611,8 +627,27 @@
611 627 .yatra-star-filled {
612 628 color: #f59e0b;
613 629 }
614 630
631 +/* Half star: base star grey, left half overlaid in amber via an SVG mask. */
632 +.yatra-star-half {
633 + position: relative;
634 + color: #e2e8f0;
635 +}
636 +
637 +.yatra-star-half::after {
638 + content: "";
639 + position: absolute;
640 + top: 0;
641 + left: 0;
642 + bottom: 0;
643 + width: 50%;
644 + overflow: hidden;
645 + background: #f59e0b;
646 + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26'/%3E%3C/svg%3E") no-repeat left center / 200% 100%;
647 + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26'/%3E%3C/svg%3E") no-repeat left center / 200% 100%;
648 +}
649 +
615 650 .yatra-rating-meta strong {
616 651 color: #0f172a;
617 652 margin-right: 6px;
618 653 }
@@ -913,8 +948,23 @@
913 948 flex: 1 1 calc(33.333% - 14px);
914 949 min-width: 150px;
915 950 }
916 951
952 +/* Display-only text block placed between form fields */
953 +.yatra-form-text-block p {
954 + margin: 0 0 8px;
955 + font-size: 14px;
956 + line-height: 1.6;
957 +}
958 +
959 +.yatra-form-text-block p:last-child {
960 + margin-bottom: 0;
961 +}
962 +
963 +.yatra-form-text-block a {
964 + text-decoration: underline;
965 +}
966 +
917 967 .yatra-form-group label {
918 968 display: block;
919 969 font-size: 14px;
920 970 font-weight: 600;
@@ -932,12 +982,14 @@
932 982 .yatra-form-group input[type="date"],
933 983 .yatra-form-group select,
934 984 .yatra-form-group textarea {
935 985 width: 100%;
986 + min-height: 48px;
936 987 padding: 12px 16px;
937 988 border: 1px solid #d1d5db;
938 989 border-radius: 8px;
939 990 font-size: 15px;
991 + line-height: 1.5;
940 992 color: #111827;
941 993 background: #fff;
942 994 transition: all 0.2s;
943 995 box-sizing:border-box;
@@ -2102,19 +2154,19 @@
2102 2154 color: var(--yatra-primary-dark, #2563eb) !important;
2103 2155 }
2104 2156
2105 2157 /* Additional Services */
2158 +/* Selected-service rows in the Pricing Summary — match the neutral
2159 + colour scheme of every other price row. The previous purple
2160 + gradient/text/dot was visually inconsistent with the traveler row
2161 + above. Yatra default row colour is `.yatra-price-row { color: #475569 }`
2162 + (inherits below). Right-side price uses #1e293b like category subtotals. */
2106 2163 .yatra-price-service {
2107 - background: linear-gradient(90deg, rgba(139, 92, 246, 0.06) 0%, transparent 100%);
2108 - margin: 4px -12px;
2109 - padding: 10px 12px;
2110 - border-radius: 8px;
2111 - border: none !important;
2164 + margin: 0;
2165 + padding: 10px 0;
2112 2166 }
2113 2167
2114 -
2115 2168 .yatra-price-service span:first-child {
2116 - color: #6d28d9;
2117 2169 font-weight: 500;
2118 2170 display: flex;
2119 2171 align-items: center;
2120 2172 gap: 6px;
@@ -2119,34 +2171,19 @@
2119 2171 align-items: center;
2120 2172 gap: 6px;
2121 2173 }
2122 2174
2123 -.yatra-price-service span:first-child::before {
2124 - content: "";
2125 - width: 6px;
2126 - height: 6px;
2127 - background: #8b5cf6;
2128 - border-radius: 50%;
2129 -}
2130 -
2131 2175 .yatra-price-service span:last-child {
2132 2176 font-weight: 600;
2133 - color: #5b21b6;
2177 + color: #1e293b;
2134 2178 }
2135 2179
2136 -/* Included Service */
2180 +/* Included Service — row stays in the default palette; only the
2181 + "Included" badge below keeps a green hue as a status signal. */
2137 2182 .yatra-service-included {
2138 - background: linear-gradient(90deg, rgba(16, 185, 129, 0.06) 0%, transparent 100%);
2183 + /* Intentionally no background override — matches the other rows. */
2139 2184 }
2140 2185
2141 -.yatra-service-included span:first-child {
2142 - color: #047857;
2143 -}
2144 -
2145 -.yatra-service-included span:first-child::before {
2146 - background: #10b981;
2147 -}
2148 -
2149 2186 .yatra-service-included-badge {
2150 2187 font-size: 11px;
2151 2188 font-weight: 600;
2152 2189 color: #047857 !important;
@@ -2237,9 +2274,12 @@
2237 2274 position: relative;
2238 2275 }
2239 2276
2240 2277 .yatra-summary-info li:before {
2241 - content: "✓";
2278 + /* CSS Unicode escape (U+2713 CHECK MARK) — using the literal ✓ glyph
2279 + renders as mojibake ("âœ") when the CSS file isn't served with an
2280 + explicit UTF-8 charset and the browser falls back to Latin-1. */
2281 + content: "\2713";
2242 2282 position: absolute;
2243 2283 left: 0;
2244 2284 color: #10b981;
2245 2285 font-weight: 600;
@@ -2307,12 +2347,85 @@
2307 2347 .yatra-booking-main {
2308 2348 padding: 24px;
2309 2349 }
2310 2350
2351 + /*
2352 + * Mobile-input hygiene. Two reasons every booking-form input
2353 + * gets re-styled here at <=768px:
2354 + *
2355 + * 1. font-size: 16px (mandatory). iOS Safari auto-zooms the
2356 + * viewport when a user focuses an <input>/<select>/<textarea>
2357 + * whose computed font-size is below 16px. Our desktop styles
2358 + * use 15px, which triggers a 1.25x zoom + scroll-position
2359 + * jump on focus — disorienting on a long booking form. 16px
2360 + * silences the zoom.
2361 + *
2362 + * 2. Vertical padding bumped to 14px. With 16px text that gives
2363 + * ~48px total tap height (Material Design minimum is 48dp,
2364 + * Apple HIG is 44pt). 44px works for thumbs in landscape;
2365 + * 48px works in portrait too, where most mobile bookings
2366 + * actually happen.
2367 + */
2368 + .yatra-form-group input[type="text"],
2369 + .yatra-form-group input[type="email"],
2370 + .yatra-form-group input[type="tel"],
2371 + .yatra-form-group input[type="date"],
2372 + .yatra-form-group input[type="number"],
2373 + .yatra-form-group input[type="password"],
2374 + .yatra-form-group select,
2375 + .yatra-form-group textarea,
2376 + .yatra-booking-form input,
2377 + .yatra-booking-form select,
2378 + .yatra-booking-form textarea {
2379 + font-size: 16px;
2380 + padding-top: 14px;
2381 + padding-bottom: 14px;
2382 + min-height: 48px;
2383 + }
2384 +
2385 + .yatra-booking-form textarea {
2386 + min-height: 96px;
2387 + }
2388 +
2389 + /*
2390 + * Inline login + register tabs on the booking page (rendered by
2391 + * booking-auth.php). Same hygiene as the booking form so the
2392 + * "log in to continue" path doesn't suddenly feel cramped /
2393 + * trigger iOS zoom mid-checkout.
2394 + */
2395 + .yatra-booking-auth input[type="text"],
2396 + .yatra-booking-auth input[type="email"],
2397 + .yatra-booking-auth input[type="tel"],
2398 + .yatra-booking-auth input[type="password"],
2399 + .yatra-auth-form input[type="text"],
2400 + .yatra-auth-form input[type="email"],
2401 + .yatra-auth-form input[type="tel"],
2402 + .yatra-auth-form input[type="password"] {
2403 + font-size: 16px;
2404 + min-height: 48px;
2405 + padding-top: 14px;
2406 + padding-bottom: 14px;
2407 + }
2408 +
2409 + .yatra-booking-auth .yatra-auth-submit,
2410 + .yatra-auth-form .yatra-auth-submit {
2411 + min-height: 48px;
2412 + font-size: 16px;
2413 + }
2414 +
2415 + /*
2416 + * Stacking rules — keep these INSIDE the @media (max-width: 768px)
2417 + * block. On phones we want the form row to flow vertically and
2418 + * half/third fields to span full width; on desktop they should
2419 + * stay side-by-side as defined at line ~890. (A prior edit
2420 + * accidentally closed this media block too early, leaking these
2421 + * column-direction rules to every viewport — which is why all
2422 + * fields appeared full-width on desktop.)
2423 + */
2311 2424 .yatra-form-row {
2312 2425 flex-direction: column;
2313 2426 }
2314 -
2427 +
2315 2428 .yatra-field-half,
2316 2429 .yatra-field-third {
2317 2430 flex: 1 1 100%;
2318 2431 }
@@ -2971,8 +3084,10 @@
2971 3084 background: #fff;
2972 3085 border: 1px solid #e2e8f0;
2973 3086 border-radius: 8px;
2974 3087 transition: all 0.2s ease;
3088 + /* `position: relative` anchors the CSS tooltip below */
3089 + position: relative;
2975 3090 }
2976 3091
2977 3092 .yatra-service-item:hover {
2978 3093 border-color: #cbd5e1;
@@ -2978,8 +3093,56 @@
2978 3093 border-color: #cbd5e1;
2979 3094 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
2980 3095 }
2981 3096
3097 +/* CSS tooltip for the service description — uses `data-tooltip` (not the
3098 + native `title` attribute) so we don't trigger the browser's built-in
3099 + tooltip on top of this one. Native tooltips also have a ~1s delay and
3100 + can be suppressed when hovering over a disabled control inside a
3101 + <label>; this version shows instantly and is consistent across
3102 + browsers. `aria-label` on the same element still serves screen-readers. */
3103 +.yatra-service-item[data-tooltip]:hover::after,
3104 +.yatra-service-item[data-tooltip]:focus-within::after {
3105 + content: attr(data-tooltip);
3106 + position: absolute;
3107 + bottom: calc(100% + 8px);
3108 + left: 50%;
3109 + transform: translateX(-50%);
3110 + background: #1f2937;
3111 + color: #fff;
3112 + padding: 8px 12px;
3113 + border-radius: 6px;
3114 + font-size: 12px;
3115 + font-weight: 400;
3116 + line-height: 1.4;
3117 + max-width: 260px;
3118 + white-space: pre-wrap;
3119 + z-index: 100;
3120 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
3121 + pointer-events: none;
3122 + opacity: 0;
3123 + animation: yatra-tooltip-fade 0.15s ease-out 0.05s forwards;
3124 +}
3125 +
3126 +.yatra-service-item[data-tooltip]:hover::before,
3127 +.yatra-service-item[data-tooltip]:focus-within::before {
3128 + content: '';
3129 + position: absolute;
3130 + bottom: calc(100% + 2px);
3131 + left: 50%;
3132 + transform: translateX(-50%);
3133 + border: 6px solid transparent;
3134 + border-top-color: #1f2937;
3135 + z-index: 100;
3136 + pointer-events: none;
3137 + opacity: 0;
3138 + animation: yatra-tooltip-fade 0.15s ease-out 0.05s forwards;
3139 +}
3140 +
3141 +@keyframes yatra-tooltip-fade {
3142 + to { opacity: 1; }
3143 +}
3144 +
2982 3145 .yatra-service-item.yatra-service-required {
2983 3146 background: #fefce8;
2984 3147 border-color: #fde047;
2985 3148 }
@@ -2995,9 +3158,9 @@
2995 3158
2996 3159 .yatra-service-label input[type="checkbox"] {
2997 3160 width: 18px;
2998 3161 height: 18px;
2999 - accent-color: #7c3aed;
3162 + accent-color: var(--yatra-primary, #3b82f6);
3000 3163 cursor: pointer;
3001 3164 flex-shrink: 0;
3002 3165 }
3003 3166
@@ -3028,10 +3191,30 @@
3028 3191
3029 3192 .yatra-service-price {
3030 3193 font-size: 13px;
3031 3194 font-weight: 600;
3032 - color: #7c3aed;
3195 + color: #1e293b;
3033 3196 white-space: nowrap;
3197 +}
3198 +
3199 +/* Description tooltip (the ⓘ icon next to a service name).
3200 + `currentColor` lets the SVG inherit the surrounding text colour rather
3201 + than overriding it inline — keeps the icon visually consistent with
3202 + the rest of the yatra-service-info block regardless of theme. */
3203 +.yatra-service-tooltip {
3204 + display: inline-flex;
3205 + vertical-align: middle;
3206 + margin-left: 4px;
3207 + cursor: help;
3208 + opacity: 0.55;
3209 + color: currentColor;
3210 +}
3211 +.yatra-service-tooltip:hover {
3212 + opacity: 1;
3213 +}
3214 +.yatra-service-tooltip svg {
3215 + width: 14px;
3216 + height: 14px;
3034 3217 }
3035 3218
3036 3219 /* Services Total Row in Price Summary */
3037 3220 .yatra-services-total-row {