PluginProbe
Yatra – Travel Booking & Tour Operator Software / trunk
Yatra – Travel Booking & Tour Operator Software vtrunk
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 2.0.10 All 83 releases
yatra / assets / css / booking.css

booking.css in Yatra – Travel Booking & Tour Operator Software trunk, at assets/css/booking.css

3,236 lines 64.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Booking Page Styles
3 * Uses common.css variables for consistency
4 *
5 * @package Yatra
6 */
7
8 .yatra-booking-page {
9 width: 100%;
10 min-height: 100vh;
11 min-height: 100vh;
12 background: var(--yatra-bg-page, #f9fafb);
13 padding: 40px 0 80px;
14 }
15
16 .yatra-booking-form-errors {
17 margin: 1rem 0 1.25rem;
18 }
19
20 .yatra-form-error {
21 display: flex;
22 align-items: flex-start;
23 gap: 0.75rem;
24 background: #fef2f2;
25 border: 1px solid #fecaca;
26 color: #991b1b;
27 padding: 0.9rem 1.1rem;
28 border-radius: 0.85rem;
29 font-size: 0.95rem;
30 line-height: 1.5;
31 box-shadow: 0 4px 12px rgba(220, 38, 38, 0.08);
32 }
33
34 .yatra-form-error::before {
35 content: '\26A0';
36 font-size: 1.1rem;
37 color: #dc2626;
38 line-height: 1;
39 }
40
41 /* Remaining Checkout Styles */
42 .yatra-remaining-page .yatra-booking-header {
43 margin-bottom: 1.5rem;
44 }
45
46 .yatra-reference-badge {
47 display: inline-flex;
48 align-items: center;
49 gap: 0.5rem;
50 background: #eff6ff;
51 border: 1px solid #bfdbfe;
52 color: var(--yatra-primary-darker, #1d4ed8);
53 padding: 0.4rem 0.9rem;
54 border-radius: 999px;
55 font-size: 0.9rem;
56 font-weight: 600;
57 margin-bottom: 1rem;
58 }
59
60 .yatra-reference-badge span {
61 color: var(--yatra-primary-darker, #1d4ed8);
62 font-weight: 500;
63 }
64
65 .yatra-reference-badge strong {
66 color: var(--yatra-primary-darker, #1e3a8a);
67 }
68
69 .yatra-remaining-banner {
70 display: grid;
71 grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
72 gap: 1rem;
73 background: #f0fdf4;
74 border: 1px solid #bbf7d0;
75 border-radius: 1rem;
76 padding: 1rem 1.25rem;
77 margin-top: 1rem;
78 }
79
80 .yatra-remaining-banner strong {
81 display: block;
82 color: #065f46;
83 margin-bottom: 0.25rem;
84 }
85
86 .yatra-remaining-banner span {
87 font-size: 1rem;
88 font-weight: 600;
89 color: #022c22;
90 }
91
92 .yatra-remaining-details {
93 display: grid;
94 grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
95 gap: 0.75rem;
96 margin-top: 1rem;
97 }
98
99 .yatra-remaining-detail {
100 background: #fff;
101 border: 1px solid #e5e7eb;
102 border-radius: 0.85rem;
103 padding: 0.9rem 1rem;
104 box-shadow: inset 0 1px 0 rgba(0,0,0,0.02);
105 }
106
107 .yatra-remaining-detail span {
108 display: block;
109 font-size: 0.8rem;
110 color: #6b7280;
111 margin-bottom: 0.35rem;
112 }
113
114 .yatra-remaining-detail strong {
115 font-size: 1rem;
116 color: #111827;
117 }
118
119 .yatra-remaining-steps {
120 margin-top: 1.5rem;
121 display: grid;
122 gap: 0.9rem;
123 }
124
125 .yatra-step {
126 display: flex;
127 gap: 0.85rem;
128 align-items: flex-start;
129 border: 1px dashed #d1d5db;
130 border-radius: 1rem;
131 padding: 0.85rem 1rem;
132 background: #fff;
133 }
134
135 .yatra-step-index {
136 width: 32px;
137 height: 32px;
138 border-radius: 999px;
139 background: #dbeafe;
140 color: var(--yatra-primary-darker, #1d4ed8);
141 font-weight: 700;
142 display: inline-flex;
143 align-items: center;
144 justify-content: center;
145 }
146
147 .yatra-step strong {
148 display: block;
149 font-size: 0.95rem;
150 color: #111827;
151 }
152
153 .yatra-step p {
154 margin: 0.15rem 0 0;
155 color: #6b7280;
156 font-size: 0.85rem;
157 }
158
159 .yatra-remaining-support {
160 margin-top: 1.5rem;
161 padding: 1rem 1.25rem;
162 border-radius: 1rem;
163 border: 1px solid #fee2e2;
164 background: #fef2f2;
165 }
166
167 .yatra-remaining-support h4 {
168 margin-bottom: 0.35rem;
169 color: #b91c1c;
170 }
171
172 .yatra-remaining-support p {
173 color: #7f1d1d;
174 margin-bottom: 0.5rem;
175 }
176
177 .yatra-remaining-support ul {
178 margin: 0;
179 padding-left: 1rem;
180 color: #991b1b;
181 }
182
183 .yatra-remaining-page .yatra-booking-sidebar .yatra-price-row.due {
184 border-color: #059669;
185 color: #065f46;
186 }
187
188 /* ============================================
189 REMAINING PAYMENT SIDEBAR
190 ============================================ */
191 .yatra-remaining-summary {
192 background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
193 }
194
195 .yatra-remaining-summary h3 {
196 font-size: 1.15rem;
197 font-weight: 700;
198 color: #111827;
199 margin-bottom: 1.25rem;
200 padding-bottom: 0.75rem;
201 border-bottom: 2px solid #e5e7eb;
202 }
203
204 /* Booking Reference */
205 .yatra-remaining-reference {
206 display: flex;
207 flex-direction: column;
208 gap: 0.5rem;
209 padding: 1rem;
210 background: #eff6ff;
211 border: 1px solid #bfdbfe;
212 border-radius: 0.75rem;
213 margin-bottom: 1.25rem;
214 }
215
216 .yatra-remaining-reference .yatra-reference-badge {
217 margin-bottom: 0;
218 padding: 0;
219 background: transparent;
220 border: none;
221 font-size: 0.8rem;
222 color: var(--yatra-primary, #3b82f6);
223 }
224
225 .yatra-remaining-reference .yatra-reference-badge svg {
226 width: 16px;
227 height: 16px;
228 stroke: var(--yatra-primary, #3b82f6);
229 }
230
231 .yatra-remaining-reference .yatra-reference-value {
232 font-size: 1.25rem;
233 color: var(--yatra-primary-darker, #1e40af);
234 letter-spacing: 0.5px;
235 }
236
237 /* Trip Info Card */
238 .yatra-remaining-trip-card {
239 display: flex;
240 gap: 0.85rem;
241 padding: 0.85rem;
242 background: #fff;
243 border: 1px solid #e5e7eb;
244 border-radius: 0.75rem;
245 margin-bottom: 1.25rem;
246 }
247
248 .yatra-remaining-trip-image {
249 flex-shrink: 0;
250 width: 80px;
251 height: 60px;
252 border-radius: 0.5rem;
253 overflow: hidden;
254 }
255
256 .yatra-remaining-trip-image img {
257 width: 100%;
258 height: 100%;
259 object-fit: cover;
260 }
261
262 .yatra-remaining-trip-info {
263 flex: 1;
264 min-width: 0;
265 }
266
267 .yatra-remaining-trip-info h4 {
268 font-size: 0.95rem;
269 font-weight: 600;
270 color: #111827;
271 margin: 0 0 0.5rem;
272 line-height: 1.3;
273 display: -webkit-box;
274 -webkit-line-clamp: 2;
275 -webkit-box-orient: vertical;
276 overflow: hidden;
277 }
278
279 .yatra-remaining-trip-meta {
280 display: flex;
281 flex-wrap: wrap;
282 gap: 0.75rem;
283 }
284
285 .yatra-remaining-trip-meta span {
286 display: inline-flex;
287 align-items: center;
288 gap: 0.35rem;
289 font-size: 0.8rem;
290 color: #6b7280;
291 }
292
293 .yatra-remaining-trip-meta svg {
294 stroke: #9ca3af;
295 }
296
297 /* Payment Breakdown */
298 .yatra-remaining-breakdown {
299 background: #fff;
300 border: 1px solid #e5e7eb;
301 border-radius: 0.75rem;
302 padding: 1rem;
303 margin-bottom: 1rem;
304 }
305
306 .yatra-remaining-row {
307 display: flex;
308 justify-content: space-between;
309 align-items: center;
310 padding: 0.6rem 0;
311 font-size: 0.9rem;
312 color: #4b5563;
313 }
314
315 .yatra-remaining-row:not(:last-child) {
316 border-bottom: 1px dashed #e5e7eb;
317 }
318
319 .yatra-remaining-row.yatra-remaining-paid span:first-child {
320 display: inline-flex;
321 align-items: center;
322 gap: 0.4rem;
323 }
324
325 .yatra-remaining-row.yatra-remaining-paid svg {
326 stroke: #10b981;
327 }
328
329 .yatra-remaining-row .yatra-paid-amount {
330 color: #059669;
331 font-weight: 500;
332 }
333
334 .yatra-remaining-row.yatra-remaining-due {
335 padding-top: 0.75rem;
336 margin-top: 0.25rem;
337 }
338
339 .yatra-remaining-row .yatra-due-amount {
340 color: #dc2626;
341 font-size: 1.05rem;
342 }
343
344 /* Due Now Highlight Box */
345 .yatra-remaining-due-now {
346 background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
347 color: #fff;
348 border-radius: 0.75rem;
349 padding: 1rem 1.25rem;
350 margin-bottom: 1rem;
351 text-align: center;
352 }
353
354 .yatra-due-now-label {
355 display: flex;
356 align-items: center;
357 justify-content: center;
358 gap: 0.5rem;
359 font-size: 0.85rem;
360 font-weight: 500;
361 opacity: 0.9;
362 margin-bottom: 0.35rem;
363 }
364
365 .yatra-due-now-label svg {
366 stroke: currentColor;
367 opacity: 0.8;
368 }
369
370 .yatra-due-now-amount {
371 font-size: 1.75rem;
372 font-weight: 700;
373 letter-spacing: -0.5px;
374 }
375
376 /* Secure Payment Badge */
377 .yatra-remaining-secure {
378 display: flex;
379 align-items: center;
380 justify-content: center;
381 gap: 0.5rem;
382 padding: 0.75rem;
383 background: #f0fdf4;
384 border: 1px solid #bbf7d0;
385 border-radius: 0.5rem;
386 font-size: 0.8rem;
387 color: #166534;
388 }
389
390 .yatra-remaining-secure svg {
391 stroke: #16a34a;
392 }
393
394 /* Remaining Payment Form */
395 .yatra-remaining-form {
396 max-width: 600px;
397 }
398
399 .yatra-remaining-form .yatra-form-section {
400 background: #fff;
401 border: 1px solid #e5e7eb;
402 border-radius: 1rem;
403 padding: 1.5rem;
404 margin-bottom: 1.25rem;
405 }
406
407 .yatra-remaining-form .yatra-section-title {
408 display: flex;
409 align-items: center;
410 gap: 0.6rem;
411 font-size: 1.1rem;
412 font-weight: 600;
413 color: #111827;
414 margin: 0 0 1.25rem;
415 padding-bottom: 0.75rem;
416 border-bottom: 1px solid #f3f4f6;
417 }
418
419 .yatra-remaining-form .yatra-section-title svg {
420 stroke: #6b7280;
421 }
422
423 .yatra-remaining-form .yatra-terms-section {
424 background: #f9fafb;
425 padding: 1rem 1.25rem;
426 }
427
428 .yatra-remaining-form .yatra-booking-actions {
429 margin-top: 1.5rem;
430 }
431
432 .yatra-remaining-form .yatra-booking-pay-btn {
433 width: 100%;
434 font-size: 1.1rem;
435 padding: 1rem 1.5rem;
436 }
437
438 .yatra-booking-summary .yatra-summary-list {
439 list-style: none;
440 padding: 0;
441 margin: 0 0 1.5rem 0;
442 }
443
444 .yatra-booking-summary .yatra-summary-list li {
445 display: flex;
446 justify-content: space-between;
447 padding: 0.35rem 0;
448 border-bottom: 1px dashed rgba(0,0,0,0.05);
449 }
450
451 .yatra-booking-error {
452 background: #fef2f2;
453 border: 1px solid #fecaca;
454 color: #7f1d1d;
455 padding: 1rem 1.25rem;
456 border-radius: 0.75rem;
457 margin: 1rem 0;
458 }
459
460 .yatra-booking-container {
461 width: 100%;
462 max-width: var(--yatra-container-max-width, 1200px);
463 margin-left: auto;
464 margin-right: auto;
465 padding-left: var(--yatra-container-padding, 20px);
466 padding-right: var(--yatra-container-padding, 20px);
467 }
468
469 /* Layout */
470 .yatra-booking-layout {
471 display: grid;
472 grid-template-columns: 1fr 400px;
473 gap: 40px;
474 }
475
476 /* ========================= */
477 /* Booking Confirmation Page */
478 /* ========================= */
479
480 .yatra-confirmation-wrapper {
481 width: 100%;
482 min-height: 100vh;
483 background: var(--yatra-bg-page, #f9fafb);
484 padding: 60px 20px 100px;
485 }
486
487 .yatra-confirmation-container {
488 max-width: 980px;
489 margin: 0 auto;
490 }
491
492 .yatra-confirmation-header {
493 text-align: center;
494 margin-bottom: 40px;
495 }
496
497 .yatra-confirmation-icon {
498 width: 88px;
499 height: 88px;
500 margin: 0 auto 20px;
501 border-radius: 50%;
502 background: #d1fae5;
503 color: #10b981;
504 display: flex;
505 align-items: center;
506 justify-content: center;
507 }
508
509 .yatra-confirmation-icon svg {
510 width: 48px;
511 height: 48px;
512 }
513
514 .yatra-confirmation-title {
515 font-size: 32px;
516 font-weight: 700;
517 color: #0f172a;
518 margin-bottom: 8px;
519 }
520
521 .yatra-confirmation-subtitle {
522 color: #6b7280;
523 margin-bottom: 20px;
524 }
525
526 .yatra-confirmation-reference {
527 display: inline-flex;
528 align-items: center;
529 gap: 10px;
530 padding: 8px 18px;
531 border-radius: 30px;
532 background: #eef2ff;
533 color: #4338ca;
534 font-weight: 600;
535 }
536
537 .yatra-confirmation-content {
538 display: flex;
539 flex-direction: column;
540 gap: 24px;
541 }
542
543 .yatra-confirmation-card {
544 background: #fff;
545 border-radius: 18px;
546 padding: 28px;
547 box-shadow: 0 20px 45px rgba(15, 23, 42, 0.08);
548 border: 1px solid rgba(148, 163, 184, 0.2);
549 }
550
551 .yatra-trip-summary-card {
552 padding: 32px;
553 }
554
555 .yatra-trip-summary {
556 display: flex;
557 gap: 28px;
558 align-items: center;
559 }
560
561 .yatra-trip-image {
562 flex-shrink: 0;
563 width: 96px;
564 height: 96px;
565 border-radius: 16px;
566 overflow: hidden;
567 box-shadow: 0 12px 24px rgba(15, 23, 42, 0.15);
568 }
569
570 .yatra-trip-image img {
571 width: 100%;
572 height: 100%;
573 object-fit: cover;
574 display: block;
575 }
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
593 .yatra-trip-info {
594 flex: 1;
595 }
596
597 .yatra-trip-name {
598 margin: 0 0 10px;
599 font-size: 24px;
600 font-weight: 700;
601 color: #0f172a;
602 }
603
604 .yatra-trip-rating {
605 display: flex;
606 align-items: center;
607 gap: 12px;
608 margin-bottom: 12px;
609 }
610
611 .yatra-rating-stars {
612 display: inline-flex;
613 gap: 4px;
614 }
615
616 .yatra-star {
617 width: 20px;
618 height: 20px;
619 color: #e2e8f0;
620 }
621
622 .yatra-star svg {
623 width: 100%;
624 height: 100%;
625 }
626
627 .yatra-star-filled {
628 color: #f59e0b;
629 }
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
650 .yatra-rating-meta strong {
651 color: #0f172a;
652 margin-right: 6px;
653 }
654
655 .yatra-rating-meta span {
656 color: #64748b;
657 font-size: 14px;
658 }
659
660 .yatra-trip-meta {
661 display: flex;
662 flex-wrap: wrap;
663 gap: 16px;
664 margin-bottom: 16px;
665 color: #475569;
666 }
667
668 .yatra-meta-item {
669 display: inline-flex;
670 align-items: center;
671 gap: 8px;
672 font-weight: 500;
673 }
674
675 .yatra-meta-item svg,
676 .yatra-trip-location svg {
677 width: 18px;
678 height: 18px;
679 color: #6366f1;
680 }
681
682 .yatra-trip-location {
683 display: flex;
684 align-items: center;
685 gap: 8px;
686 margin: 0;
687 color: #475569;
688 font-weight: 500;
689 }
690
691 .yatra-trip-tags {
692 display: flex;
693 gap: 12px;
694 align-items: flex-start;
695 margin-top: 8px;
696 }
697
698 .yatra-tag-label {
699 font-size: 13px;
700 color: #94a3b8;
701 text-transform: uppercase;
702 letter-spacing: 0.05em;
703 flex-shrink: 0;
704 margin-top: 6px;
705 }
706
707 .yatra-tag-group {
708 display: flex;
709 flex-wrap: wrap;
710 gap: 8px;
711 }
712
713 .yatra-tag-item {
714 padding: 6px 14px;
715 border-radius: 999px;
716 background: #f1f5f9;
717 color: #0f172a;
718 font-size: 13px;
719 font-weight: 600;
720 }
721
722 .yatra-attribute-tag {
723 background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
724 color: var(--yatra-primary-darker, #1e40af);
725 border: 1px solid #bfdbfe;
726 }
727
728 .yatra-confirmation-grid {
729 display: grid;
730 grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
731 gap: 24px;
732 }
733
734 .yatra-card-title {
735 display: flex;
736 align-items: center;
737 gap: 10px;
738 margin: 0 0 16px;
739 font-size: 18px;
740 color: #0f172a;
741 }
742
743 .yatra-card-title svg {
744 width: 20px;
745 height: 20px;
746 color: #6366f1;
747 }
748
749 .yatra-info-grid {
750 display: grid;
751 grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
752 gap: 16px;
753 }
754
755 .yatra-info-label {
756 font-size: 13px;
757 color: #94a3b8;
758 text-transform: uppercase;
759 }
760
761 .yatra-info-value {
762 font-size: 16px;
763 font-weight: 600;
764 color: #0f172a;
765 }
766
767 .yatra-status-badge {
768 padding: 4px 12px;
769 border-radius: 999px;
770 font-size: 12px;
771 font-weight: 600;
772 }
773
774 .yatra-payment-rows {
775 display: flex;
776 flex-direction: column;
777 gap: 12px;
778 margin-bottom: 18px;
779 }
780
781 .yatra-payment-row {
782 display: flex;
783 justify-content: space-between;
784 font-weight: 600;
785 color: #0f172a;
786 }
787
788 .yatra-payment-row span:first-child {
789 color: #94a3b8;
790 font-weight: 500;
791 }
792
793 .yatra-payment-row.yatra-due-row span:last-child {
794 color: #ef4444;
795 }
796
797 .yatra-payment-method {
798 display: flex;
799 justify-content: space-between;
800 font-size: 14px;
801 color: #475569;
802 }
803
804 .yatra-contact-info p {
805 margin: 8px 0;
806 color: #475569;
807 }
808
809 .yatra-travelers-list {
810 display: flex;
811 flex-direction: column;
812 gap: 16px;
813 }
814
815 .yatra-traveler-item {
816 display: flex;
817 gap: 14px;
818 align-items: center;
819 }
820
821 .yatra-traveler-number {
822 width: 32px;
823 height: 32px;
824 border-radius: 10px;
825 background: #eef2ff;
826 color: #4c1d95;
827 font-weight: 700;
828 display: flex;
829 align-items: center;
830 justify-content: center;
831 }
832
833 .yatra-traveler-name {
834 font-weight: 600;
835 color: #0f172a;
836 }
837
838 .yatra-traveler-dob {
839 font-size: 13px;
840 color: #94a3b8;
841 }
842
843 .yatra-whats-next {
844 border: 1px dashed #cbd5f5;
845 background: #f8fafc;
846 }
847
848 .yatra-whats-next ul {
849 margin: 0;
850 padding-left: 20px;
851 color: #475569;
852 }
853
854 @media (max-width: 768px) {
855 .yatra-trip-summary {
856 flex-direction: column;
857 align-items: flex-start;
858 }
859
860 .yatra-trip-image {
861 width: 100%;
862 height: 180px;
863 border-radius: 20px;
864 }
865
866 .yatra-trip-info {
867 width: 100%;
868 }
869
870 .yatra-confirmation-card {
871 padding: 24px;
872 }
873
874 .yatra-confirmation-reference {
875 flex-wrap: wrap;
876 }
877 }
878
879 /* Main Content */
880 .yatra-booking-main {
881 background: #fff;
882 border-radius: 12px;
883 padding: 40px;
884 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
885 }
886
887 .yatra-booking-header {
888 margin-bottom: 32px;
889 padding-bottom: 24px;
890 border-bottom: 1px solid #e5e7eb;
891 }
892
893 .yatra-booking-header h1 {
894 font-size: 28px;
895 font-weight: 700;
896 color: #111827;
897 margin-bottom: 8px;
898 }
899
900 .yatra-booking-subtitle {
901 font-size: 15px;
902 color: #6b7280;
903 margin: 0;
904 }
905
906 /* Booking Sections */
907 .yatra-booking-section {
908 margin-bottom: 32px;
909 }
910
911 .yatra-section-title {
912 font-size: 20px;
913 font-weight: 600;
914 color: #111827;
915 margin-bottom: 12px;
916 }
917
918 .yatra-section-description {
919 font-size: 14px;
920 color: #6b7280;
921 margin-bottom: 20px;
922 }
923
924 /* Form Styles */
925 .yatra-form-row {
926 display: flex;
927 flex-wrap: wrap;
928 gap: 20px;
929 margin-bottom: 20px;
930 }
931
932 .yatra-form-group {
933 margin-bottom: 0;
934 flex: 1 1 100%;
935 }
936
937 /* Field Widths */
938 .yatra-field-full {
939 flex: 1 1 100%;
940 }
941
942 .yatra-field-half {
943 flex: 1 1 calc(50% - 10px);
944 min-width: 200px;
945 }
946
947 .yatra-field-third {
948 flex: 1 1 calc(33.333% - 14px);
949 min-width: 150px;
950 }
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
967 .yatra-form-group label {
968 display: block;
969 font-size: 14px;
970 font-weight: 600;
971 color: #374151;
972 margin-bottom: 8px;
973 }
974
975 .yatra-form-group .required {
976 color: #ef4444;
977 }
978
979 .yatra-form-group input[type="text"],
980 .yatra-form-group input[type="email"],
981 .yatra-form-group input[type="tel"],
982 .yatra-form-group input[type="date"],
983 .yatra-form-group select,
984 .yatra-form-group textarea {
985 width: 100%;
986 min-height: 48px;
987 padding: 12px 16px;
988 border: 1px solid #d1d5db;
989 border-radius: 8px;
990 font-size: 15px;
991 line-height: 1.5;
992 color: #111827;
993 background: #fff;
994 transition: all 0.2s;
995 box-sizing:border-box;
996 }
997
998 .yatra-form-group input:focus,
999 .yatra-form-group select:focus,
1000 .yatra-form-group textarea:focus {
1001 outline: none;
1002 border-color: var(--yatra-primary, #3b82f6);
1003 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1004 }
1005
1006 /* Select field specific styling */
1007 .yatra-form-group select {
1008 height: auto;
1009 min-height: 48px;
1010 padding-right: 40px;
1011 -webkit-appearance: none;
1012 -moz-appearance: none;
1013 appearance: none;
1014 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
1015 background-repeat: no-repeat;
1016 background-position: right 12px center;
1017 background-size: 16px;
1018 cursor: pointer;
1019 line-height: 1.5;
1020 width:100%;
1021 }
1022
1023 .yatra-form-group select option {
1024 padding: 10px;
1025 font-size: 14px;
1026 }
1027
1028 .yatra-form-group textarea {
1029 resize: vertical;
1030 font-family: inherit;
1031 }
1032
1033 /* Traveler Selector */
1034 .yatra-traveler-selector {
1035 display: flex;
1036 align-items: center;
1037 gap: 12px;
1038 border: 1px solid #d1d5db;
1039 border-radius: 8px;
1040 padding: 4px;
1041 background: #fff;
1042 }
1043
1044 .yatra-traveler-selector input {
1045 flex: 1;
1046 border: none;
1047 text-align: center;
1048 font-size: 16px;
1049 font-weight: 600;
1050 padding: 8px;
1051 background: transparent;
1052 }
1053
1054 .yatra-traveler-selector input:focus {
1055 outline: none;
1056 box-shadow: none;
1057 }
1058 .yatra-traveler-selector .yatra-select-arrow {
1059 display:none;
1060 }
1061
1062 .yatra-quantity-btn {
1063 width: 36px;
1064 height: 36px;
1065 border: none;
1066 background: #f3f4f6;
1067 border-radius: 6px;
1068 cursor: pointer;
1069 display: flex;
1070 align-items: center;
1071 justify-content: center;
1072 font-size: 18px;
1073 font-weight: 600;
1074 color: #374151;
1075 transition: all 0.2s;
1076 }
1077
1078 .yatra-quantity-btn:hover {
1079 background: #e5e7eb;
1080 color: #111827;
1081 }
1082
1083 .yatra-quantity-btn:active {
1084 transform: scale(0.95);
1085 }
1086
1087 /* Payment Methods */
1088 .yatra-payment-methods {
1089 display: flex;
1090 flex-direction: column;
1091 gap: 12px;
1092 }
1093
1094 .yatra-payment-option {
1095 display: flex;
1096 align-items: center;
1097 padding: 16px;
1098 border: 2px solid #e5e7eb;
1099 border-radius: 8px;
1100 cursor: pointer;
1101 transition: all 0.2s;
1102 }
1103
1104 .yatra-payment-option:hover {
1105 border-color: var(--yatra-primary, #3b82f6);
1106 background: #f0f9ff;
1107 }
1108
1109 .yatra-payment-option input[type="radio"] {
1110 margin-right: 12px;
1111 width: 18px;
1112 height: 18px;
1113 cursor: pointer;
1114 }
1115
1116 .yatra-payment-option input[type="radio"]:checked + .yatra-payment-label {
1117 color: var(--yatra-primary, #3b82f6);
1118 }
1119
1120 .yatra-payment-label {
1121 display: flex;
1122 flex-direction: column;
1123 gap: 4px;
1124 }
1125
1126 .yatra-payment-label strong {
1127 font-size: 15px;
1128 font-weight: 600;
1129 color: inherit;
1130 }
1131
1132 .yatra-payment-label span {
1133 font-size: 13px;
1134 color: #6b7280;
1135 }
1136
1137 .yatra-payment-option input[type="radio"]:checked ~ .yatra-payment-label span {
1138 color: var(--yatra-primary, #3b82f6);
1139 }
1140
1141 /* Payment Gateways */
1142 .yatra-payment-gateways {
1143 display: flex;
1144 flex-direction: column;
1145 gap: 12px;
1146 }
1147
1148
1149 .yatra-gateway-options {
1150 display: flex;
1151 flex-direction: column;
1152 gap: 12px;
1153 }
1154
1155 .yatra-gateway-option-wrapper {
1156 display: flex;
1157 flex-direction: column;
1158 gap: 12px;
1159 }
1160
1161 .yatra-gateway-option {
1162 display: flex;
1163 align-items: center;
1164 gap: 16px;
1165 padding: 16px;
1166 border: 1px solid #e5e7eb;
1167 border-radius: 8px;
1168 cursor: pointer;
1169 transition: all 0.2s;
1170 background: #fff;
1171 }
1172
1173 .yatra-gateway-option:hover {
1174 border-color: var(--yatra-primary, #3b82f6);
1175 background: #f0f9ff;
1176 }
1177
1178 .yatra-gateway-option input[type="radio"] {
1179 width: 18px;
1180 height: 18px;
1181 cursor: pointer;
1182 flex-shrink: 0;
1183 margin: 0;
1184 }
1185
1186 .yatra-gateway-option input[type="radio"]:checked {
1187 accent-color: var(--yatra-primary, #3b82f6);
1188 }
1189
1190 .yatra-gateway-icon-wrap {
1191 flex-shrink: 0;
1192 display: flex;
1193 align-items: center;
1194 justify-content: center;
1195 }
1196
1197 .yatra-gateway-icon {
1198 width: 48px;
1199 height: 48px;
1200 object-fit: contain;
1201 border-radius: 6px;
1202 }
1203
1204 .yatra-gateway-content {
1205 display: block;
1206 flex: 1;
1207 }
1208
1209 .yatra-gateway-title {
1210 display: block;
1211 font-size: 15px;
1212 font-weight: 600;
1213 color: #111827;
1214 margin: 0 0 4px 0;
1215 }
1216
1217 .yatra-gateway-desc {
1218 display: block;
1219 font-size: 13px;
1220 color: #6b7280;
1221 line-height: 1.4;
1222 margin: 0;
1223 }
1224
1225 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-icon-wrap .yatra-gateway-icon {
1226 opacity: 1;
1227 }
1228
1229 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-content .yatra-gateway-title {
1230 color: var(--yatra-primary, #3b82f6);
1231 }
1232
1233 .yatra-gateway-extra {
1234 display: none;
1235 padding: 20px;
1236 border: 1px solid #dbeafe;
1237 border-radius: 10px;
1238 background: #f8fbff;
1239 }
1240
1241 .yatra-gateway-extra.active {
1242 display: block;
1243 }
1244
1245 .yatra-gateway-label span {
1246 font-size: 13px;
1247 color: #6b7280;
1248 }
1249
1250 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-label strong {
1251 color: var(--yatra-primary, #3b82f6);
1252 }
1253
1254 /* Gateway Icon Images */
1255 .yatra-gateway-icon img {
1256 width: 32px;
1257 height: 32px;
1258 object-fit: contain;
1259 }
1260
1261 /* Offline Gateway Badge */
1262 .yatra-gateway-badge {
1263 font-size: 11px;
1264 font-weight: 600;
1265 color: #059669;
1266 background: #d1fae5;
1267 padding: 4px 10px;
1268 border-radius: 20px;
1269 white-space: nowrap;
1270 flex-shrink: 0;
1271 }
1272
1273 .yatra-gateway-offline {
1274 background: #f0fdf4;
1275 border-color: #86efac;
1276 }
1277
1278 .yatra-gateway-offline:hover {
1279 background: #dcfce7;
1280 border-color: #22c55e;
1281 }
1282
1283 /* Selected gateway states */
1284 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-badge {
1285 background: #dbeafe;
1286 color: var(--yatra-primary-dark, #2563eb);
1287 }
1288
1289 /* No Gateways Message */
1290 .yatra-no-gateways-message {
1291 padding: 20px;
1292 background: #fef3c7;
1293 border: 1px solid #fcd34d;
1294 border-radius: 8px;
1295 color: #92400e;
1296 font-size: 14px;
1297 text-align: center;
1298 }
1299
1300 /* Gateway Info Section in Sidebar */
1301 .yatra-gateway-info {
1302 margin-top: 20px;
1303 padding-top: 20px;
1304 border-top: 1px solid #e5e7eb;
1305 }
1306
1307 .yatra-gateway-info h4 {
1308 font-size: 14px;
1309 font-weight: 600;
1310 color: #374151;
1311 margin-bottom: 12px;
1312 }
1313
1314 #yatra-gateway-details {
1315 font-size: 13px;
1316 color: #6b7280;
1317 line-height: 1.6;
1318 }
1319
1320 #yatra-gateway-details p {
1321 margin: 0 0 8px 0;
1322 }
1323
1324 /* Price Due Row */
1325 .yatra-price-due {
1326 background: #dbeafe;
1327 padding: 12px !important;
1328 border-radius: 8px;
1329 margin-top: 8px;
1330 }
1331
1332 .yatra-price-due span {
1333 color: var(--yatra-primary-darker, #1d4ed8) !important;
1334 }
1335
1336 /* Deposit Row */
1337 .yatra-price-deposit {
1338 color: #6b7280;
1339 font-size: 13px;
1340 }
1341
1342 /* Submit Button with Icon */
1343 .yatra-booking-pay-btn {
1344 display: flex;
1345 align-items: center;
1346 justify-content: center;
1347 gap: 10px;
1348 }
1349
1350 .yatra-booking-pay-btn svg {
1351 flex-shrink: 0;
1352 }
1353
1354 /* Traveler Forms */
1355 #yatra-travelers-container {
1356 display: flex;
1357 flex-direction: column;
1358 gap: 24px;
1359 }
1360
1361 .yatra-traveler-form {
1362 background: #f9fafb;
1363 border: 1px solid #e5e7eb;
1364 border-radius: 12px;
1365 padding: 24px;
1366 }
1367
1368 .yatra-traveler-header {
1369 margin-bottom: 20px;
1370 padding-bottom: 16px;
1371 border-bottom: 1px solid #e5e7eb;
1372 display: flex;
1373 align-items: center;
1374 justify-content: space-between;
1375 }
1376
1377 .yatra-traveler-title {
1378 font-size: 18px;
1379 font-weight: 600;
1380 color: #111827;
1381 margin: 0;
1382 }
1383
1384 .yatra-traveler-note {
1385 font-size: 12px;
1386 color: #6b7280;
1387 background: #e5e7eb;
1388 padding: 4px 10px;
1389 border-radius: 20px;
1390 }
1391
1392 /* Traveler Subsections */
1393 .yatra-traveler-subsection {
1394 margin-top: 20px;
1395 padding-top: 16px;
1396 border-top: 1px dashed #d1d5db;
1397 }
1398
1399 .yatra-subsection-title {
1400 font-size: 14px;
1401 font-weight: 600;
1402 color: #374151;
1403 margin: 0 0 12px 0;
1404 text-transform: uppercase;
1405 letter-spacing: 0.5px;
1406 }
1407
1408 .yatra-form-group input.error,
1409 .yatra-form-group select.error {
1410 border-color: #ef4444;
1411 box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
1412 }
1413
1414 /* Terms & Conditions Container */
1415 .yatra-terms-container {
1416 display: flex;
1417 flex-direction: column;
1418 gap: 16px;
1419 }
1420
1421
1422 .yatra-checkbox-label:hover {
1423 background: #f3f4f6;
1424 border-color: #d1d5db;
1425 }
1426
1427 .yatra-checkbox-label input[type="checkbox"] {
1428 margin-top: 2px;
1429 width: 18px;
1430 height: 18px;
1431 cursor: pointer;
1432 flex-shrink: 0;
1433 accent-color: var(--yatra-primary, #3b82f6);
1434 }
1435
1436 .yatra-checkbox-label span {
1437 line-height: 1.5;
1438 }
1439
1440 .yatra-checkbox-label a {
1441 color: var(--yatra-primary, #3b82f6);
1442 text-decoration: none;
1443 font-weight: 500;
1444 }
1445
1446 .yatra-checkbox-label a:hover {
1447 text-decoration: underline;
1448 }
1449
1450 .yatra-checkbox-label .required {
1451 color: #ef4444;
1452 margin-left: 2px;
1453 }
1454 /* Actions */
1455 .yatra-booking-actions {
1456 display: flex;
1457 gap: 16px;
1458 margin-top: 32px;
1459 padding-top: 32px;
1460 border-top: 1px solid #e5e7eb;
1461 }
1462
1463 .yatra-booking-submit-btn,
1464 .yatra-booking-pay-btn {
1465 flex: 1;
1466 padding: 18px 32px;
1467 background: linear-gradient(135deg, var(--yatra-primary, #3b82f6) 0%, var(--yatra-primary-dark, #2563eb) 100%);
1468 color: #fff;
1469 border: none;
1470 border-radius: 10px;
1471 font-size: 16px;
1472 font-weight: 600;
1473 cursor: pointer;
1474 transition: all 0.2s;
1475 display: flex;
1476 align-items: center;
1477 justify-content: center;
1478 gap: 10px;
1479 text-align: center;
1480 }
1481
1482 .yatra-booking-submit-btn:hover,
1483 .yatra-booking-pay-btn:hover {
1484 background: linear-gradient(135deg, var(--yatra-primary-dark, #2563eb) 0%, var(--yatra-primary-darker, #1d4ed8) 100%);
1485 transform: translateY(-2px);
1486 box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4);
1487 }
1488
1489 .yatra-booking-pay-btn svg {
1490 flex-shrink: 0;
1491 width: 20px;
1492 height: 20px;
1493 }
1494
1495 .yatra-booking-pay-btn #pay-button-text {
1496 font-size: 16px;
1497 font-weight: 600;
1498 }
1499
1500 .yatra-booking-pay-btn #pay-amount {
1501 font-size: 18px;
1502 font-weight: 700;
1503 background: rgba(255, 255, 255, 0.2);
1504 padding: 4px 12px;
1505 border-radius: 6px;
1506 margin-left: 6px;
1507 }
1508
1509 .yatra-booking-cancel-btn {
1510 padding: 16px 32px;
1511 background: #fff;
1512 color: #374151;
1513 border: 1px solid #d1d5db;
1514 border-radius: 8px;
1515 font-size: 16px;
1516 font-weight: 600;
1517 text-decoration: none;
1518 text-align: center;
1519 transition: all 0.2s;
1520 }
1521
1522 .yatra-booking-cancel-btn:hover {
1523 background: #f9fafb;
1524 border-color: #9ca3af;
1525 }
1526
1527 /* Sidebar */
1528 .yatra-booking-sidebar {
1529 position: sticky;
1530 top: 20px;
1531 height: fit-content;
1532 }
1533
1534 .yatra-booking-summary {
1535 background: #fff;
1536 border-radius: 12px;
1537 padding: 24px;
1538 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1539 overflow: visible;
1540 position: relative;
1541 }
1542
1543 .yatra-booking-summary h3 {
1544 font-size: 20px;
1545 font-weight: 700;
1546 color: #111827;
1547 margin-bottom: 20px;
1548 padding-bottom: 16px;
1549 }
1550
1551 /* Travel Details in Sidebar */
1552 .yatra-summary-travel-details {
1553 margin-bottom: 24px;
1554 padding-bottom: 24px;
1555 border-bottom: 1px solid #e5e7eb;
1556 position: relative;
1557 overflow: visible;
1558 }
1559
1560 .yatra-summary-form-group {
1561 margin-bottom: 16px;
1562 }
1563
1564 .yatra-summary-form-group:last-child {
1565 margin-bottom: 0;
1566 }
1567
1568 .yatra-summary-form-group label {
1569 display: block;
1570 font-size: 13px;
1571 font-weight: 600;
1572 color: #374151;
1573 margin-bottom: 8px;
1574 }
1575
1576 .yatra-summary-form-group label .required {
1577 color: #ef4444;
1578 }
1579
1580 .yatra-summary-form-group input[type="date"] {
1581 width: 100%;
1582 padding: 10px 12px;
1583 border: 1px solid #d1d5db;
1584 border-radius: 8px;
1585 font-size: 14px;
1586 color: #111827;
1587 background: #fff;
1588 transition: all 0.2s;
1589 }
1590
1591 .yatra-summary-form-group input[type="date"]:focus {
1592 outline: none;
1593 border-color: var(--yatra-primary, #3b82f6);
1594 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1595 }
1596
1597 .yatra-summary-readonly-field {
1598 padding: 10px 12px;
1599 background: #f9fafb;
1600 border: 1px solid #e5e7eb;
1601 border-radius: 6px;
1602 font-size: 14px;
1603 color: #374151;
1604 line-height: 1.5;
1605 }
1606
1607 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) {
1608 display: flex;
1609 align-items: center;
1610 border: 1px solid #d1d5db;
1611 border-radius: 8px;
1612 background: #fff;
1613 overflow: hidden;
1614 }
1615
1616 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) input {
1617 flex: 1;
1618 border: none;
1619 text-align: center;
1620 font-size: 15px;
1621 font-weight: 600;
1622 padding: 10px 8px;
1623 background: transparent;
1624 width: 60px;
1625 }
1626
1627 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) input:focus {
1628 outline: none;
1629 }
1630
1631 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) .yatra-quantity-btn {
1632 width: 40px;
1633 height: 40px;
1634 border: none;
1635 background: #f3f4f6;
1636 cursor: pointer;
1637 display: flex;
1638 align-items: center;
1639 justify-content: center;
1640 font-size: 18px;
1641 font-weight: 600;
1642 color: #374151;
1643 transition: all 0.2s;
1644 }
1645
1646 .yatra-booking-sidebar .yatra-quantity-btn:hover {
1647 background: #e5e7eb;
1648 }
1649
1650 /* Selected Date/Time Display */
1651 .yatra-selected-datetime {
1652 display: flex;
1653 align-items: center;
1654 gap: 12px;
1655 padding: 12px 16px;
1656 background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
1657 border: 1px solid #bae6fd;
1658 border-radius: 8px;
1659 font-weight: 500;
1660 }
1661
1662 .yatra-date-display {
1663 color: #0369a1;
1664 font-size: 15px;
1665 }
1666
1667 .yatra-time-display {
1668 padding: 4px 10px;
1669 background: #0ea5e9;
1670 color: white;
1671 border-radius: 4px;
1672 font-size: 13px;
1673 font-weight: 600;
1674 }
1675
1676 /* Traveler Categories Section */
1677 .yatra-traveler-categories {
1678 margin-top: 4px;
1679 }
1680
1681 .yatra-category-row {
1682 display: flex;
1683 justify-content: space-between;
1684 align-items: center;
1685 padding: 12px;
1686 background: #f9fafb;
1687 border: 1px solid #e5e7eb;
1688 border-radius: 8px;
1689 margin-bottom: 8px;
1690 }
1691
1692 .yatra-category-row:last-child {
1693 margin-bottom: 0;
1694 }
1695
1696 .yatra-category-info {
1697 display: flex;
1698 flex-direction: column;
1699 gap: 2px;
1700 }
1701
1702 .yatra-category-name {
1703 font-weight: 600;
1704 color: #111827;
1705 font-size: 14px;
1706 }
1707
1708 .yatra-category-age {
1709 font-size: 12px;
1710 color: #6b7280;
1711 }
1712
1713 .yatra-category-price {
1714 font-size: 14px;
1715 font-weight: 600;
1716 color: #059669;
1717 }
1718
1719 .yatra-category-row .yatra-traveler-selector {
1720 display: flex;
1721 align-items: center;
1722 border: 1px solid #d1d5db;
1723 border-radius: 6px;
1724 background: #fff;
1725 overflow: hidden;
1726 }
1727
1728 .yatra-category-row .yatra-traveler-selector input {
1729 width: 40px;
1730 border: none;
1731 text-align: center;
1732 font-size: 14px;
1733 font-weight: 600;
1734 padding: 6px 4px;
1735 background: transparent;
1736 }
1737
1738 .yatra-category-row .yatra-quantity-btn {
1739 width: 32px;
1740 height: 32px;
1741 border: none;
1742 background: #f3f4f6;
1743 cursor: pointer;
1744 display: flex;
1745 align-items: center;
1746 justify-content: center;
1747 font-size: 16px;
1748 font-weight: 600;
1749 color: #374151;
1750 transition: all 0.2s;
1751 }
1752
1753 .yatra-category-row .yatra-quantity-btn:hover {
1754 background: #e5e7eb;
1755 }
1756
1757 /* Price Breakdown for Categories */
1758 .yatra-price-breakdown-categories {
1759 border-bottom: 1px solid #e5e7eb;
1760 padding-bottom: 12px;
1761 margin-bottom: 12px;
1762 }
1763
1764 .yatra-category-subtotal {
1765 font-size: 14px;
1766 padding: 6px 0;
1767 color: #111827;
1768 }
1769
1770 /* =============================================
1771 Dropdown Traveler Selector (Trip Single Style)
1772 ============================================= */
1773
1774 .yatra-booking-participants-select {
1775 position: relative;
1776 display: flex;
1777 align-items: center;
1778 padding: 10px 14px;
1779 background: #fff;
1780 border: 1px solid #d1d5db;
1781 border-radius: 8px;
1782 cursor: pointer;
1783 transition: all 0.2s ease;
1784 gap: 10px;
1785 }
1786
1787 .yatra-booking-participants-select:hover {
1788 border-color: var(--yatra-primary, #3b82f6);
1789 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.08);
1790 }
1791
1792 .yatra-booking-participants-select.active {
1793 border-color: var(--yatra-primary, #3b82f6);
1794 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12);
1795 z-index: 1100;
1796 }
1797
1798 .yatra-booking-field-icon {
1799 display: flex;
1800 align-items: center;
1801 justify-content: center;
1802 color: #6b7280;
1803 flex-shrink: 0;
1804 }
1805
1806 .yatra-booking-field-icon svg {
1807 width: 18px;
1808 height: 18px;
1809 }
1810
1811 .yatra-booking-participants-select:hover .yatra-booking-field-icon,
1812 .yatra-booking-participants-select.active .yatra-booking-field-icon {
1813 color: var(--yatra-primary, #3b82f6);
1814 }
1815
1816 .yatra-booking-participants-display {
1817 flex: 1;
1818 font-size: 14px;
1819 font-weight: 500;
1820 color: #111827;
1821 white-space: nowrap;
1822 overflow: hidden;
1823 text-overflow: ellipsis;
1824 line-height: 1.3;
1825 }
1826
1827 .yatra-booking-participants-select .yatra-select-arrow {
1828 flex-shrink: 0;
1829 color: #9ca3af;
1830 transition: transform 0.2s ease, color 0.2s ease;
1831 }
1832
1833 .yatra-booking-participants-select:hover .yatra-select-arrow,
1834 .yatra-booking-participants-select.active .yatra-select-arrow {
1835 color: var(--yatra-primary, #3b82f6);
1836 }
1837
1838 .yatra-booking-participants-select.active .yatra-select-arrow {
1839 transform: rotate(180deg);
1840 }
1841
1842 /* Dropdown Container */
1843 .yatra-booking-quantity-dropdown {
1844 position: absolute;
1845 top: 100%;
1846 left: 0;
1847 right: 0;
1848 margin-top: 6px;
1849 background: #fff;
1850 border: 1px solid #e5e7eb;
1851 border-radius: 10px;
1852 box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1), 0 4px 10px rgba(0, 0, 0, 0.05);
1853 z-index: 1000;
1854 display: none;
1855 overflow: visible;
1856 animation: slideDownDropdown 0.2s ease-out;
1857 padding: 6px;
1858 }
1859
1860 @keyframes slideDownDropdown {
1861 from {
1862 opacity: 0;
1863 transform: translateY(-6px);
1864 }
1865 to {
1866 opacity: 1;
1867 transform: translateY(0);
1868 }
1869 }
1870
1871 .yatra-booking-participants-select.active .yatra-booking-quantity-dropdown {
1872 display: block;
1873 }
1874
1875 /* Quantity Rows inside dropdown */
1876 .yatra-booking-quantity-dropdown .yatra-quantity-row {
1877 display: flex;
1878 align-items: center;
1879 justify-content: space-between;
1880 padding: 10px;
1881 gap: 12px;
1882 border-radius: 8px;
1883 transition: background-color 0.15s ease;
1884 }
1885
1886 .yatra-booking-quantity-dropdown .yatra-quantity-row:hover {
1887 background-color: #f9fafb;
1888 }
1889
1890 .yatra-booking-quantity-dropdown .yatra-quantity-row:not(:last-child) {
1891 border-bottom: 1px solid #f3f4f6;
1892 margin-bottom: 2px;
1893 }
1894
1895 .yatra-booking-quantity-dropdown .yatra-quantity-label {
1896 display: flex;
1897 flex-direction: column;
1898 gap: 2px;
1899 flex: 1;
1900 min-width: 0;
1901 }
1902
1903 .yatra-booking-quantity-dropdown .yatra-quantity-title {
1904 font-size: 14px;
1905 font-weight: 600;
1906 color: #111827;
1907 line-height: 1.3;
1908 }
1909
1910 .yatra-booking-quantity-dropdown .yatra-quantity-subtitle {
1911 font-size: 11px;
1912 color: #6b7280;
1913 line-height: 1.2;
1914 }
1915
1916 .yatra-booking-quantity-dropdown .yatra-quantity-price {
1917 font-size: 14px;
1918 font-weight: 600;
1919 color: #059669;
1920 }
1921
1922 /* Quantity Controls - Container */
1923 .yatra-booking-quantity-dropdown .yatra-quantity-controls {
1924 display: flex;
1925 align-items: center;
1926 gap: 4px;
1927 background: #f3f4f6;
1928 padding: 4px;
1929 border-radius: 8px;
1930 flex-shrink: 0;
1931 }
1932
1933 /* Quantity Buttons */
1934 .yatra-qty-btn {
1935 width: 28px;
1936 height: 28px;
1937 min-width: 28px;
1938 min-height: 28px;
1939 border-radius: 6px;
1940 border: none;
1941 background: #ffffff;
1942 display: flex;
1943 align-items: center;
1944 justify-content: center;
1945 cursor: pointer;
1946 transition: all 0.15s ease;
1947 color: #374151;
1948 padding: 0;
1949 flex-shrink: 0;
1950 position: relative;
1951 z-index: 10;
1952 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
1953 }
1954
1955 .yatra-qty-btn svg {
1956 width: 14px;
1957 height: 14px;
1958 stroke-width: 2.5;
1959 pointer-events: none;
1960 }
1961
1962 .yatra-qty-btn:hover:not(:disabled) {
1963 background: var(--yatra-primary, #3b82f6);
1964 color: #ffffff;
1965 transform: scale(1.05);
1966 box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);
1967 }
1968
1969 .yatra-qty-btn:active:not(:disabled) {
1970 transform: scale(0.95);
1971 background: var(--yatra-primary-dark, #2563eb);
1972 }
1973
1974 .yatra-qty-btn:disabled {
1975 opacity: 0.4;
1976 cursor: not-allowed;
1977 background: #e5e7eb;
1978 box-shadow: none;
1979 }
1980
1981 /* Quantity Input */
1982 .yatra-qty-input {
1983 width: 36px;
1984 height: 28px;
1985 text-align: center;
1986 border: none;
1987 background: transparent;
1988 font-size: 15px;
1989 font-weight: 700;
1990 color: #111827;
1991 padding: 0;
1992 -moz-appearance: textfield;
1993 }
1994
1995 /* Quantity Input in Booking Summary - Wider */
1996 .yatra-booking-summary .yatra-qty-input {
1997 width: 60px;
1998 min-width: 60px;
1999 }
2000
2001 .yatra-qty-input::-webkit-outer-spin-button,
2002 .yatra-qty-input::-webkit-inner-spin-button {
2003 -webkit-appearance: none;
2004 margin: 0;
2005 }
2006
2007 .yatra-qty-input:focus {
2008 outline: none;
2009 }
2010
2011 .yatra-booking-summary h3 + .yatra-summary-travel-details {
2012 margin-top: -4px;
2013 border-bottom: 1px solid #e5e7eb;
2014 }
2015
2016 /* Summary Trip */
2017 .yatra-summary-trip {
2018 display: flex;
2019 gap: 16px;
2020 margin-bottom: 24px;
2021 padding-bottom: 24px;
2022 border-bottom: 1px solid #e5e7eb;
2023 }
2024
2025 .yatra-summary-image {
2026 width: 100px;
2027 height: 100px;
2028 border-radius: 8px;
2029 overflow: hidden;
2030 flex-shrink: 0;
2031 }
2032
2033 .yatra-summary-image img {
2034 width: 100%;
2035 height: 100%;
2036 object-fit: cover;
2037 }
2038
2039 .yatra-summary-details h4 {
2040 font-size: 16px;
2041 font-weight: 600;
2042 color: #111827;
2043 margin-bottom: 8px;
2044 line-height: 1.4;
2045 }
2046
2047 .yatra-summary-meta {
2048 display: flex;
2049 align-items: center;
2050 gap: 8px;
2051 font-size: 13px;
2052 color: #6b7280;
2053 }
2054
2055 /* Pricing Summary */
2056 .yatra-summary-pricing {
2057 margin-bottom: 24px;
2058 padding: 20px;
2059 background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
2060 border-radius: 12px;
2061 border: 1px solid #e2e8f0;
2062 }
2063
2064 .yatra-price-breakdown-categories {
2065 margin-bottom: 16px;
2066 padding-bottom: 16px;
2067 border-bottom: 1px dashed #cbd5e1;
2068 }
2069
2070 .yatra-price-row {
2071 display: flex;
2072 justify-content: space-between;
2073 align-items: center;
2074 padding: 10px 0;
2075 font-size: 14px;
2076 color: #475569;
2077 transition: background-color 0.2s ease;
2078 }
2079
2080 .yatra-price-row:not(:last-child) {
2081 border-bottom: 1px solid rgba(226, 232, 240, 0.5);
2082 }
2083
2084 .yatra-category-subtotal {
2085 font-size: 13px;
2086 }
2087
2088 .yatra-category-subtotal .category-count {
2089 font-weight: 600;
2090 color: var(--yatra-primary, #3b82f6);
2091 }
2092
2093 .yatra-category-subtotal .category-subtotal {
2094 font-weight: 500;
2095 color: #1e293b;
2096 }
2097
2098 /* Subtotal / Gross Total */
2099 .yatra-price-subtotal {
2100 margin-top: 12px;
2101 padding-top: 12px;
2102 border-top: 1px solid #e2e8f0 !important;
2103 background: rgba(255, 255, 255, 0.6);
2104 margin: 12px -12px 0;
2105 padding: 12px;
2106 border-radius: 8px;
2107 }
2108
2109 .yatra-price-subtotal span {
2110 color: #334155;
2111 font-size: 15px;
2112 }
2113
2114 /* Discount Rows */
2115 .yatra-price-discount {
2116 background: linear-gradient(90deg, rgba(16, 185, 129, 0.08) 0%, transparent 100%);
2117 margin: 8px -12px;
2118 padding: 10px 12px;
2119 border-radius: 8px;
2120 border: none !important;
2121 }
2122
2123
2124 .yatra-discount-label {
2125 display: flex;
2126 align-items: center;
2127 gap: 6px;
2128 color: #059669;
2129 font-weight: 500;
2130 }
2131
2132 .yatra-discount-code {
2133 font-size: 12px;
2134 color: #6b7280;
2135 font-weight: 400;
2136 }
2137
2138 .yatra-discount-amount {
2139 font-weight: 600;
2140 color: #059669 !important;
2141 }
2142
2143 /* Group Discount */
2144 .yatra-group-discount-row {
2145 background: linear-gradient(90deg, rgba(59, 130, 246, 0.08) 0%, transparent 100%);
2146 }
2147
2148
2149 .yatra-group-discount-row .yatra-discount-label {
2150 color: var(--yatra-primary-dark, #2563eb);
2151 }
2152
2153 .yatra-group-discount-row .yatra-discount-amount {
2154 color: var(--yatra-primary-dark, #2563eb) !important;
2155 }
2156
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. */
2163 .yatra-price-service {
2164 margin: 0;
2165 padding: 10px 0;
2166 }
2167
2168 .yatra-price-service span:first-child {
2169 font-weight: 500;
2170 display: flex;
2171 align-items: center;
2172 gap: 6px;
2173 }
2174
2175 .yatra-price-service span:last-child {
2176 font-weight: 600;
2177 color: #1e293b;
2178 }
2179
2180 /* Included Service — row stays in the default palette; only the
2181 "Included" badge below keeps a green hue as a status signal. */
2182 .yatra-service-included {
2183 /* Intentionally no background override — matches the other rows. */
2184 }
2185
2186 .yatra-service-included-badge {
2187 font-size: 11px;
2188 font-weight: 600;
2189 color: #047857 !important;
2190 background: rgba(16, 185, 129, 0.15);
2191 padding: 3px 8px;
2192 border-radius: 4px;
2193 text-transform: uppercase;
2194 letter-spacing: 0.5px;
2195 }
2196
2197 /* Service Badges */
2198 .yatra-service-badge {
2199 font-size: 9px;
2200 font-weight: 600;
2201 padding: 2px 6px;
2202 border-radius: 3px;
2203 text-transform: uppercase;
2204 letter-spacing: 0.3px;
2205 margin-left: 6px;
2206 vertical-align: middle;
2207 }
2208
2209 .yatra-badge-required {
2210 background: rgba(239, 68, 68, 0.1);
2211 color: #dc2626;
2212 }
2213
2214 /* Net Amount / Total */
2215 .yatra-price-total {
2216 margin-top: 16px;
2217 padding-top: 16px;
2218 border-top: 2px solid #e2e8f0 !important;
2219 border-bottom: none !important;
2220 }
2221
2222 .yatra-price-total span {
2223 color: #1e293b;
2224 font-size: 16px;
2225 }
2226
2227 .yatra-price-total span strong {
2228 font-weight: 700;
2229 }
2230
2231 /* Due Now */
2232 .yatra-price-due {
2233 margin-top: 8px;
2234 padding: 12px;
2235 background: rgba(251, 191, 36, 0.1);
2236 margin: 8px -12px 0;
2237 border-radius: 8px;
2238 border: 1px dashed #f59e0b !important;
2239 }
2240
2241
2242 .yatra-price-due span {
2243 color: #b45309;
2244 font-size: 14px;
2245 }
2246
2247 .yatra-price-due span strong {
2248 color: #92400e;
2249 }
2250
2251 /* Info */
2252 .yatra-summary-info {
2253 padding-top: 24px;
2254 }
2255
2256 .yatra-summary-info h4 {
2257 font-size: 16px;
2258 font-weight: 600;
2259 color: #111827;
2260 margin-bottom: 12px;
2261 }
2262
2263 .yatra-summary-info ul {
2264 list-style: none;
2265 padding: 0;
2266 margin: 0;
2267 }
2268
2269 .yatra-summary-info li {
2270 font-size: 14px;
2271 color: #6b7280;
2272 margin-bottom: 8px;
2273 padding-left: 20px;
2274 position: relative;
2275 }
2276
2277 .yatra-summary-info li:before {
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";
2282 position: absolute;
2283 left: 0;
2284 color: #10b981;
2285 font-weight: 600;
2286 }
2287
2288 /* Trip Actions on Listing Page */
2289 .yatra-trip-actions {
2290 display: flex;
2291 gap: 12px;
2292 }
2293
2294 .yatra-view-btn,
2295 .yatra-book-btn {
2296 flex: 1;
2297 padding: 10px 20px;
2298 border-radius: 8px;
2299 font-size: 14px;
2300 font-weight: 600;
2301 text-decoration: none;
2302 text-align: center;
2303 transition: all 0.2s;
2304 border: none;
2305 cursor: pointer;
2306 }
2307
2308 .yatra-view-btn {
2309 background: #f3f4f6;
2310 color: #374151;
2311 border: 1px solid #e5e7eb;
2312 }
2313
2314 .yatra-view-btn:hover {
2315 background: #e5e7eb;
2316 color: #111827;
2317 }
2318
2319 .yatra-book-btn {
2320 background: var(--yatra-primary, #3b82f6);
2321 color: #fff;
2322 }
2323
2324 .yatra-book-btn:hover {
2325 background: var(--yatra-primary-dark, #2563eb);
2326 transform: translateY(-1px);
2327 box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3);
2328 }
2329
2330 /* Responsive */
2331 @media (max-width: 1024px) {
2332 .yatra-booking-layout {
2333 grid-template-columns: 1fr;
2334 }
2335
2336 .yatra-booking-sidebar {
2337 position: static;
2338 order: -1;
2339 }
2340 }
2341
2342 @media (max-width: 768px) {
2343 .yatra-booking-page {
2344 padding: 20px 0 40px;
2345 }
2346
2347 .yatra-booking-main {
2348 padding: 24px;
2349 }
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 */
2424 .yatra-form-row {
2425 flex-direction: column;
2426 }
2427
2428 .yatra-field-half,
2429 .yatra-field-third {
2430 flex: 1 1 100%;
2431 }
2432
2433 .yatra-booking-actions {
2434 flex-direction: column;
2435 }
2436
2437 .yatra-booking-submit-btn,
2438 .yatra-booking-cancel-btn {
2439 width: 100%;
2440 }
2441
2442 .yatra-trip-actions {
2443 flex-direction: column;
2444 }
2445 }
2446
2447
2448 /* ============================================
2449 BOOKING AUTH STYLES
2450 ============================================ */
2451
2452 /* Auth Container */
2453 .yatra-booking-auth {
2454 background: #fff;
2455 border-radius: 12px;
2456 box-shadow: 0 1px 3px rgba(0,0,0,0.1);
2457 overflow: hidden;
2458 }
2459
2460 /* Tab Navigation */
2461 .yatra-auth-tabs {
2462 display: flex;
2463 background: #f9fafb;
2464 border-radius: 12px 12px 0 0;
2465 overflow: hidden;
2466 }
2467
2468 .yatra-auth-tab {
2469 flex: 1;
2470 display: flex;
2471 align-items: center;
2472 justify-content: center;
2473 gap: 8px;
2474 padding: 16px 20px;
2475 background: transparent;
2476 border: none;
2477 border-bottom: 2px solid #e5e7eb;
2478 font-size: 15px;
2479 font-weight: 600;
2480 color: #6b7280;
2481 cursor: pointer;
2482 transition: all 0.2s ease;
2483 }
2484
2485 .yatra-auth-tab:hover {
2486 color: #374151;
2487 background: #f3f4f6;
2488 }
2489
2490 .yatra-auth-tab.active {
2491 color: var(--yatra-primary, #3b82f6);
2492 border-bottom-color: var(--yatra-primary, #3b82f6);
2493 background: #fff;
2494 }
2495
2496 .yatra-auth-tab svg {
2497 flex-shrink: 0;
2498 }
2499
2500 /* Auth Content */
2501 .yatra-auth-content {
2502 padding: 32px;
2503 }
2504
2505 .yatra-auth-header {
2506 text-align: center;
2507 margin-bottom: 28px;
2508 }
2509
2510 .yatra-auth-header h2 {
2511 font-size: 24px;
2512 font-weight: 700;
2513 color: #111827;
2514 margin: 0 0 8px 0;
2515 }
2516
2517 .yatra-auth-header p {
2518 font-size: 15px;
2519 color: #6b7280;
2520 margin: 0;
2521 }
2522
2523 /* Auth Form Styles */
2524 .yatra-auth-form {
2525 display: flex;
2526 flex-direction: column;
2527 gap: 20px;
2528 }
2529
2530 .yatra-auth-form .yatra-form-row {
2531 display: grid;
2532 grid-template-columns: 1fr 1fr;
2533 gap: 16px;
2534 }
2535
2536 .yatra-auth-form .yatra-form-group {
2537 margin-bottom: 0;
2538 }
2539
2540 .yatra-auth-form .yatra-form-group label {
2541 display: block;
2542 font-size: 14px;
2543 font-weight: 600;
2544 color: #374151;
2545 margin-bottom: 6px;
2546 justify-content: center;
2547 }
2548
2549 .yatra-auth-form .yatra-form-group label .required {
2550 color: #ef4444;
2551 }
2552
2553 .yatra-auth-form .yatra-input-wrapper {
2554 position: relative;
2555 display: flex;
2556 align-items: center;
2557 }
2558
2559 .yatra-auth-form .yatra-input-wrapper > svg:first-of-type {
2560 position: absolute;
2561 left: 14px;
2562 top: 50%;
2563 transform: translateY(-50%);
2564 color: #9ca3af;
2565 pointer-events: none;
2566 z-index: 1;
2567 width: 18px;
2568 height: 18px;
2569 flex-shrink: 0;
2570 }
2571
2572 .yatra-auth-form .yatra-input-wrapper input {
2573 width: 100%;
2574 height: 48px;
2575 padding: 0 44px;
2576 border: 1px solid #d1d5db;
2577 border-radius: 8px;
2578 font-size: 15px;
2579 color: #111827;
2580 transition: all 0.2s ease;
2581 background: #fff;
2582 }
2583
2584 .yatra-auth-form .yatra-input-wrapper input::placeholder {
2585 color: #9ca3af;
2586 }
2587
2588 .yatra-auth-form .yatra-input-wrapper input:focus {
2589 outline: none;
2590 border-color: var(--yatra-primary, #3b82f6);
2591 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2592 }
2593
2594 .yatra-auth-form .yatra-form-group > input {
2595 width: 100%;
2596 height: 48px;
2597 padding: 0 14px;
2598 border: 1px solid #d1d5db;
2599 border-radius: 8px;
2600 font-size: 15px;
2601 color: #111827;
2602 transition: all 0.2s ease;
2603 }
2604
2605 .yatra-auth-form .yatra-form-group > input:focus {
2606 outline: none;
2607 border-color: var(--yatra-primary, #3b82f6);
2608 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2609 }
2610
2611 /* Toggle Password */
2612 .yatra-toggle-password {
2613 position: absolute;
2614 right: 12px;
2615 top: 50%;
2616 transform: translateY(-50%);
2617 background: none;
2618 border: none;
2619 padding: 4px;
2620 cursor: pointer;
2621 color: #9ca3af;
2622 transition: color 0.2s;
2623 display: flex;
2624 align-items: center;
2625 justify-content: center;
2626 }
2627
2628 .yatra-toggle-password:hover {
2629 color: #6b7280;
2630 }
2631
2632 /* Password Strength */
2633 .yatra-password-strength {
2634 margin-top: 6px;
2635 height: 4px;
2636 border-radius: 2px;
2637 background: #e5e7eb;
2638 overflow: hidden;
2639 }
2640
2641 .yatra-password-strength::after {
2642 content: '';
2643 display: block;
2644 height: 100%;
2645 width: var(--strength, 0%);
2646 background: var(--color, #e5e7eb);
2647 transition: all 0.3s ease;
2648 }
2649
2650 .yatra-password-strength.weak { --strength: 25%; --color: #ef4444; }
2651 .yatra-password-strength.fair { --strength: 50%; --color: #f59e0b; }
2652 .yatra-password-strength.good { --strength: 75%; --color: #10b981; }
2653 .yatra-password-strength.strong { --strength: 100%; --color: #059669; }
2654
2655 /* Form Options */
2656 .yatra-form-options {
2657 display: flex;
2658 justify-content: space-between;
2659 align-items: center;
2660 margin-top: -8px;
2661 }
2662
2663 .yatra-booking-section .yatra-checkbox-label, .yatra-auth-form label.yatra-checkbox-label {
2664 display: flex;
2665 align-items: center;
2666 gap: 10px;
2667 font-size: 14px;
2668 color: #4b5563;
2669 cursor: pointer;
2670 padding: 0;
2671 background: transparent;
2672 border: none;
2673 line-height: 1.4;
2674 }
2675
2676 .yatra-auth-form .yatra-checkbox-label:hover {
2677 background: transparent;
2678 }
2679
2680 .yatra-auth-form .yatra-checkbox-label input[type="checkbox"] {
2681 width: 18px;
2682 height: 18px;
2683 min-width: 18px;
2684 margin: 0;
2685 accent-color: var(--yatra-primary, #3b82f6);
2686 cursor: pointer;
2687 flex-shrink: 0;
2688 }
2689
2690 .yatra-auth-form .yatra-checkbox-label span {
2691 display: inline;
2692 line-height: 1.4;
2693 }
2694
2695 .yatra-auth-form .yatra-checkbox-label a {
2696 color: var(--yatra-primary, #3b82f6);
2697 text-decoration: none;
2698 }
2699
2700 .yatra-auth-form .yatra-checkbox-label a:hover {
2701 text-decoration: underline;
2702 }
2703
2704 .yatra-forgot-link {
2705 font-size: 14px;
2706 color: var(--yatra-primary, #3b82f6);
2707 text-decoration: none;
2708 }
2709
2710 .yatra-forgot-link:hover {
2711 text-decoration: underline;
2712 }
2713
2714 /* Auth Message */
2715 .yatra-auth-message {
2716 padding: 12px 16px;
2717 border-radius: 8px;
2718 font-size: 14px;
2719 }
2720
2721 .yatra-auth-message.error {
2722 background: #fef2f2;
2723 border: 1px solid #fecaca;
2724 color: #dc2626;
2725 }
2726
2727 .yatra-auth-message.success {
2728 background: #f0fdf4;
2729 border: 1px solid #bbf7d0;
2730 color: #16a34a;
2731 }
2732
2733 /* Submit Button */
2734 .yatra-auth-submit {
2735 display: flex;
2736 align-items: center;
2737 justify-content: center;
2738 gap: 8px;
2739 width: 100%;
2740 padding: 14px 24px;
2741 background: linear-gradient(135deg, var(--yatra-primary, #3b82f6) 0%, var(--yatra-primary-dark, #2563eb) 100%);
2742 color: #fff;
2743 border: none;
2744 border-radius: 8px;
2745 font-size: 16px;
2746 font-weight: 600;
2747 cursor: pointer;
2748 transition: all 0.2s ease;
2749 }
2750
2751 .yatra-auth-submit:hover {
2752 background: linear-gradient(135deg, var(--yatra-primary-dark, #2563eb) 0%, var(--yatra-primary-darker, #1d4ed8) 100%);
2753 transform: translateY(-1px);
2754 box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
2755 }
2756
2757 .yatra-auth-submit:disabled {
2758 opacity: 0.7;
2759 cursor: not-allowed;
2760 transform: none;
2761 }
2762
2763 .yatra-auth-submit .btn-loading {
2764 display: flex;
2765 align-items: center;
2766 gap: 8px;
2767 }
2768
2769 .yatra-auth-form .animate-spin {
2770 animation: yatra-spin 1s linear infinite;
2771 }
2772
2773 /* Auth Footer */
2774 .yatra-auth-footer {
2775 text-align: center;
2776 margin-top: 24px;
2777 padding-top: 24px;
2778 border-top: 1px solid #e5e7eb;
2779 }
2780
2781 .yatra-auth-footer p {
2782 font-size: 14px;
2783 color: #6b7280;
2784 margin: 0;
2785 }
2786
2787 .yatra-switch-tab {
2788 background: none;
2789 border: none;
2790 color: var(--yatra-primary, #3b82f6);
2791 font-size: 14px;
2792 font-weight: 600;
2793 cursor: pointer;
2794 padding: 0;
2795 }
2796
2797 .yatra-switch-tab:hover {
2798 text-decoration: underline;
2799 }
2800
2801 /* Auth Responsive */
2802 @media (max-width: 640px) {
2803 .yatra-auth-content {
2804 padding: 24px 20px;
2805 }
2806
2807 .yatra-auth-form .yatra-form-row {
2808 grid-template-columns: 1fr;
2809 }
2810
2811 .yatra-form-options {
2812 flex-direction: column;
2813 gap: 12px;
2814 align-items: flex-start;
2815 }
2816 }
2817
2818 /* =====================
2819 * Coupon Section Styles
2820 * ===================== */
2821
2822 .yatra-coupon-section {
2823 padding: 16px 0;
2824 border-top: 1px dashed #e5e7eb;
2825 border-bottom: 1px dashed #e5e7eb;
2826 margin: 16px 0;
2827 }
2828
2829 .yatra-coupon-toggle-btn {
2830 display: flex;
2831 align-items: center;
2832 gap: 8px;
2833 width: 100%;
2834 padding: 10px 12px;
2835 background: #f9fafb;
2836 border: 1px dashed #d1d5db;
2837 border-radius: 8px;
2838 font-size: 14px;
2839 font-weight: 500;
2840 color: #374151;
2841 cursor: pointer;
2842 transition: all 0.2s ease;
2843 }
2844
2845 .yatra-coupon-toggle-btn:hover {
2846 background: #f3f4f6;
2847 border-color: #9ca3af;
2848 color: #111827;
2849 }
2850
2851 .yatra-coupon-toggle-btn svg:first-child {
2852 color: #6b7280;
2853 }
2854
2855 .yatra-coupon-chevron {
2856 margin-left: auto;
2857 color: #9ca3af;
2858 transition: transform 0.2s ease;
2859 }
2860
2861 .yatra-coupon-chevron.rotated {
2862 transform: rotate(180deg);
2863 }
2864
2865 .yatra-coupon-form {
2866 margin-top: 12px;
2867 padding: 16px;
2868 background: #f9fafb;
2869 border-radius: 8px;
2870 }
2871
2872 .yatra-coupon-input-group {
2873 display: flex;
2874 gap: 8px;
2875 }
2876
2877 .yatra-coupon-input {
2878 flex: 1;
2879 padding: 10px 14px;
2880 border: 1px solid #d1d5db;
2881 border-radius: 6px;
2882 font-size: 14px;
2883 text-transform: uppercase;
2884 letter-spacing: 0.5px;
2885 background: #fff;
2886 transition: border-color 0.2s ease, box-shadow 0.2s ease;
2887 }
2888
2889 .yatra-coupon-input::placeholder {
2890 text-transform: none;
2891 letter-spacing: normal;
2892 color: #9ca3af;
2893 }
2894
2895 .yatra-coupon-input:focus {
2896 outline: none;
2897 border-color: var(--yatra-primary, #3b82f6);
2898 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2899 }
2900
2901 .yatra-apply-coupon-btn {
2902 padding: 10px 20px;
2903 background: var(--yatra-primary, #3b82f6);
2904 color: #fff;
2905 border: none;
2906 border-radius: 6px;
2907 font-size: 14px;
2908 font-weight: 600;
2909 cursor: pointer;
2910 transition: background 0.2s ease;
2911 white-space: nowrap;
2912 }
2913
2914 .yatra-apply-coupon-btn:hover:not(:disabled) {
2915 background: var(--yatra-primary-dark, #2563eb);
2916 }
2917
2918 .yatra-apply-coupon-btn:disabled {
2919 background: #9ca3af;
2920 cursor: not-allowed;
2921 }
2922
2923 .yatra-coupon-message {
2924 margin-top: 10px;
2925 padding: 10px 12px;
2926 border-radius: 6px;
2927 font-size: 13px;
2928 display: flex;
2929 align-items: center;
2930 gap: 8px;
2931 }
2932
2933 .yatra-coupon-message.success {
2934 background: #ecfdf5;
2935 color: #065f46;
2936 border: 1px solid #a7f3d0;
2937 }
2938
2939 .yatra-coupon-message.error {
2940 background: #fef2f2;
2941 color: #991b1b;
2942 border: 1px solid #fecaca;
2943 }
2944
2945 /* Applied Coupon Display */
2946 .yatra-applied-coupon {
2947 display: flex;
2948 align-items: center;
2949 justify-content: space-between;
2950 padding: 12px 16px;
2951 background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
2952 border: 1px solid #a7f3d0;
2953 border-radius: 8px;
2954 }
2955
2956 .yatra-applied-coupon-info {
2957 display: flex;
2958 align-items: center;
2959 gap: 10px;
2960 color: #065f46;
2961 }
2962
2963 .yatra-applied-coupon-info svg {
2964 color: #10b981;
2965 flex-shrink: 0;
2966 }
2967
2968 .yatra-coupon-code-display {
2969 font-weight: 700;
2970 font-size: 14px;
2971 letter-spacing: 0.5px;
2972 text-transform: uppercase;
2973 background: #fff;
2974 padding: 4px 10px;
2975 border-radius: 4px;
2976 border: 1px dashed #10b981;
2977 }
2978
2979 .yatra-coupon-discount {
2980 font-weight: 600;
2981 font-size: 14px;
2982 color: #059669;
2983 }
2984
2985 .yatra-remove-coupon-btn {
2986 display: flex;
2987 align-items: center;
2988 justify-content: center;
2989 width: 28px;
2990 height: 28px;
2991 padding: 0;
2992 background: #fff;
2993 border: 1px solid #d1d5db;
2994 border-radius: 6px;
2995 color: #6b7280;
2996 cursor: pointer;
2997 transition: all 0.2s ease;
2998 }
2999
3000 .yatra-remove-coupon-btn:hover {
3001 background: #fef2f2;
3002 border-color: #fecaca;
3003 color: #dc2626;
3004 }
3005
3006 /* Discount Row in Price Summary */
3007 .yatra-price-discount {
3008 background: #ecfdf5;
3009 margin: 8px -16px;
3010 padding: 10px 16px !important;
3011 border-top: 1px dashed #a7f3d0;
3012 border-bottom: 1px dashed #a7f3d0;
3013 }
3014
3015 .yatra-discount-label {
3016 display: flex;
3017 align-items: center;
3018 gap: 6px;
3019 color: #065f46;
3020 }
3021
3022 .yatra-discount-label .yatra-discount-code {
3023 font-size: 12px;
3024 color: #059669;
3025 font-weight: 500;
3026 }
3027
3028 .yatra-discount-amount {
3029 color: #059669;
3030 font-weight: 600;
3031 }
3032
3033 /* Responsive Adjustments */
3034 @media (max-width: 480px) {
3035 .yatra-coupon-input-group {
3036 flex-direction: column;
3037 }
3038
3039 .yatra-apply-coupon-btn {
3040 width: 100%;
3041 }
3042
3043 .yatra-applied-coupon {
3044 flex-direction: column;
3045 gap: 12px;
3046 text-align: center;
3047 }
3048
3049 .yatra-applied-coupon-info {
3050 flex-direction: column;
3051 gap: 8px;
3052 }
3053 }
3054
3055 /* Additional Services Section */
3056 .yatra-additional-services-section {
3057 margin: 20px 0;
3058 padding: 16px;
3059 background: #f8fafc;
3060 border-radius: 12px;
3061 border: 1px solid #e2e8f0;
3062 }
3063
3064 .yatra-services-header h4 {
3065 margin: 0 0 4px 0;
3066 font-size: 15px;
3067 font-weight: 600;
3068 color: #1e293b;
3069 }
3070
3071 .yatra-services-subtitle {
3072 margin: 0 0 12px 0;
3073 font-size: 13px;
3074 color: #64748b;
3075 }
3076
3077 .yatra-services-list {
3078 display: flex;
3079 flex-direction: column;
3080 gap: 8px;
3081 }
3082
3083 .yatra-service-item {
3084 background: #fff;
3085 border: 1px solid #e2e8f0;
3086 border-radius: 8px;
3087 transition: all 0.2s ease;
3088 /* `position: relative` anchors the CSS tooltip below */
3089 position: relative;
3090 }
3091
3092 .yatra-service-item:hover {
3093 border-color: #cbd5e1;
3094 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
3095 }
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
3145 .yatra-service-item.yatra-service-required {
3146 background: #fefce8;
3147 border-color: #fde047;
3148 }
3149
3150 .yatra-service-label {
3151 display: flex;
3152 align-items: center;
3153 gap: 12px;
3154 padding: 12px;
3155 cursor: pointer;
3156 width: 100%;
3157 }
3158
3159 .yatra-service-label input[type="checkbox"] {
3160 width: 18px;
3161 height: 18px;
3162 accent-color: var(--yatra-primary, #3b82f6);
3163 cursor: pointer;
3164 flex-shrink: 0;
3165 }
3166
3167 .yatra-service-label input[type="checkbox"]:disabled {
3168 cursor: not-allowed;
3169 opacity: 0.7;
3170 }
3171
3172 .yatra-service-info {
3173 flex: 1;
3174 min-width: 0;
3175 }
3176
3177 .yatra-service-name {
3178 display: block;
3179 font-size: 14px;
3180 font-weight: 500;
3181 color: #1e293b;
3182 }
3183
3184 .yatra-service-description {
3185 display: block;
3186 font-size: 12px;
3187 color: #64748b;
3188 margin-top: 2px;
3189 line-height: 1.4;
3190 }
3191
3192 .yatra-service-price {
3193 font-size: 13px;
3194 font-weight: 600;
3195 color: #1e293b;
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;
3217 }
3218
3219 /* Services Total Row in Price Summary */
3220 .yatra-services-total-row {
3221 background: #f5f3ff;
3222 margin: 8px -16px;
3223 padding: 10px 16px !important;
3224 border-top: 1px dashed #c4b5fd;
3225 border-bottom: 1px dashed #c4b5fd;
3226 }
3227
3228 .yatra-services-total-row span:first-child {
3229 color: #5b21b6;
3230 }
3231
3232 .yatra-services-total-row span:last-child {
3233 color: #7c3aed;
3234 font-weight: 600;
3235 }
3236