PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.8
Yatra – Travel Booking & Tour Operator Software v3.0.8
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 / assets / css / booking.css

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

3,217 lines 63.8 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 .yatra-rating-meta strong {
632 color: #0f172a;
633 margin-right: 6px;
634 }
635
636 .yatra-rating-meta span {
637 color: #64748b;
638 font-size: 14px;
639 }
640
641 .yatra-trip-meta {
642 display: flex;
643 flex-wrap: wrap;
644 gap: 16px;
645 margin-bottom: 16px;
646 color: #475569;
647 }
648
649 .yatra-meta-item {
650 display: inline-flex;
651 align-items: center;
652 gap: 8px;
653 font-weight: 500;
654 }
655
656 .yatra-meta-item svg,
657 .yatra-trip-location svg {
658 width: 18px;
659 height: 18px;
660 color: #6366f1;
661 }
662
663 .yatra-trip-location {
664 display: flex;
665 align-items: center;
666 gap: 8px;
667 margin: 0;
668 color: #475569;
669 font-weight: 500;
670 }
671
672 .yatra-trip-tags {
673 display: flex;
674 gap: 12px;
675 align-items: flex-start;
676 margin-top: 8px;
677 }
678
679 .yatra-tag-label {
680 font-size: 13px;
681 color: #94a3b8;
682 text-transform: uppercase;
683 letter-spacing: 0.05em;
684 flex-shrink: 0;
685 margin-top: 6px;
686 }
687
688 .yatra-tag-group {
689 display: flex;
690 flex-wrap: wrap;
691 gap: 8px;
692 }
693
694 .yatra-tag-item {
695 padding: 6px 14px;
696 border-radius: 999px;
697 background: #f1f5f9;
698 color: #0f172a;
699 font-size: 13px;
700 font-weight: 600;
701 }
702
703 .yatra-attribute-tag {
704 background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
705 color: var(--yatra-primary-darker, #1e40af);
706 border: 1px solid #bfdbfe;
707 }
708
709 .yatra-confirmation-grid {
710 display: grid;
711 grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
712 gap: 24px;
713 }
714
715 .yatra-card-title {
716 display: flex;
717 align-items: center;
718 gap: 10px;
719 margin: 0 0 16px;
720 font-size: 18px;
721 color: #0f172a;
722 }
723
724 .yatra-card-title svg {
725 width: 20px;
726 height: 20px;
727 color: #6366f1;
728 }
729
730 .yatra-info-grid {
731 display: grid;
732 grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
733 gap: 16px;
734 }
735
736 .yatra-info-label {
737 font-size: 13px;
738 color: #94a3b8;
739 text-transform: uppercase;
740 }
741
742 .yatra-info-value {
743 font-size: 16px;
744 font-weight: 600;
745 color: #0f172a;
746 }
747
748 .yatra-status-badge {
749 padding: 4px 12px;
750 border-radius: 999px;
751 font-size: 12px;
752 font-weight: 600;
753 }
754
755 .yatra-payment-rows {
756 display: flex;
757 flex-direction: column;
758 gap: 12px;
759 margin-bottom: 18px;
760 }
761
762 .yatra-payment-row {
763 display: flex;
764 justify-content: space-between;
765 font-weight: 600;
766 color: #0f172a;
767 }
768
769 .yatra-payment-row span:first-child {
770 color: #94a3b8;
771 font-weight: 500;
772 }
773
774 .yatra-payment-row.yatra-due-row span:last-child {
775 color: #ef4444;
776 }
777
778 .yatra-payment-method {
779 display: flex;
780 justify-content: space-between;
781 font-size: 14px;
782 color: #475569;
783 }
784
785 .yatra-contact-info p {
786 margin: 8px 0;
787 color: #475569;
788 }
789
790 .yatra-travelers-list {
791 display: flex;
792 flex-direction: column;
793 gap: 16px;
794 }
795
796 .yatra-traveler-item {
797 display: flex;
798 gap: 14px;
799 align-items: center;
800 }
801
802 .yatra-traveler-number {
803 width: 32px;
804 height: 32px;
805 border-radius: 10px;
806 background: #eef2ff;
807 color: #4c1d95;
808 font-weight: 700;
809 display: flex;
810 align-items: center;
811 justify-content: center;
812 }
813
814 .yatra-traveler-name {
815 font-weight: 600;
816 color: #0f172a;
817 }
818
819 .yatra-traveler-dob {
820 font-size: 13px;
821 color: #94a3b8;
822 }
823
824 .yatra-whats-next {
825 border: 1px dashed #cbd5f5;
826 background: #f8fafc;
827 }
828
829 .yatra-whats-next ul {
830 margin: 0;
831 padding-left: 20px;
832 color: #475569;
833 }
834
835 @media (max-width: 768px) {
836 .yatra-trip-summary {
837 flex-direction: column;
838 align-items: flex-start;
839 }
840
841 .yatra-trip-image {
842 width: 100%;
843 height: 180px;
844 border-radius: 20px;
845 }
846
847 .yatra-trip-info {
848 width: 100%;
849 }
850
851 .yatra-confirmation-card {
852 padding: 24px;
853 }
854
855 .yatra-confirmation-reference {
856 flex-wrap: wrap;
857 }
858 }
859
860 /* Main Content */
861 .yatra-booking-main {
862 background: #fff;
863 border-radius: 12px;
864 padding: 40px;
865 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
866 }
867
868 .yatra-booking-header {
869 margin-bottom: 32px;
870 padding-bottom: 24px;
871 border-bottom: 1px solid #e5e7eb;
872 }
873
874 .yatra-booking-header h1 {
875 font-size: 28px;
876 font-weight: 700;
877 color: #111827;
878 margin-bottom: 8px;
879 }
880
881 .yatra-booking-subtitle {
882 font-size: 15px;
883 color: #6b7280;
884 margin: 0;
885 }
886
887 /* Booking Sections */
888 .yatra-booking-section {
889 margin-bottom: 32px;
890 }
891
892 .yatra-section-title {
893 font-size: 20px;
894 font-weight: 600;
895 color: #111827;
896 margin-bottom: 12px;
897 }
898
899 .yatra-section-description {
900 font-size: 14px;
901 color: #6b7280;
902 margin-bottom: 20px;
903 }
904
905 /* Form Styles */
906 .yatra-form-row {
907 display: flex;
908 flex-wrap: wrap;
909 gap: 20px;
910 margin-bottom: 20px;
911 }
912
913 .yatra-form-group {
914 margin-bottom: 0;
915 flex: 1 1 100%;
916 }
917
918 /* Field Widths */
919 .yatra-field-full {
920 flex: 1 1 100%;
921 }
922
923 .yatra-field-half {
924 flex: 1 1 calc(50% - 10px);
925 min-width: 200px;
926 }
927
928 .yatra-field-third {
929 flex: 1 1 calc(33.333% - 14px);
930 min-width: 150px;
931 }
932
933 /* Display-only text block placed between form fields */
934 .yatra-form-text-block p {
935 margin: 0 0 8px;
936 font-size: 14px;
937 line-height: 1.6;
938 }
939
940 .yatra-form-text-block p:last-child {
941 margin-bottom: 0;
942 }
943
944 .yatra-form-text-block a {
945 text-decoration: underline;
946 }
947
948 .yatra-form-group label {
949 display: block;
950 font-size: 14px;
951 font-weight: 600;
952 color: #374151;
953 margin-bottom: 8px;
954 }
955
956 .yatra-form-group .required {
957 color: #ef4444;
958 }
959
960 .yatra-form-group input[type="text"],
961 .yatra-form-group input[type="email"],
962 .yatra-form-group input[type="tel"],
963 .yatra-form-group input[type="date"],
964 .yatra-form-group select,
965 .yatra-form-group textarea {
966 width: 100%;
967 min-height: 48px;
968 padding: 12px 16px;
969 border: 1px solid #d1d5db;
970 border-radius: 8px;
971 font-size: 15px;
972 line-height: 1.5;
973 color: #111827;
974 background: #fff;
975 transition: all 0.2s;
976 box-sizing:border-box;
977 }
978
979 .yatra-form-group input:focus,
980 .yatra-form-group select:focus,
981 .yatra-form-group textarea:focus {
982 outline: none;
983 border-color: var(--yatra-primary, #3b82f6);
984 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
985 }
986
987 /* Select field specific styling */
988 .yatra-form-group select {
989 height: auto;
990 min-height: 48px;
991 padding-right: 40px;
992 -webkit-appearance: none;
993 -moz-appearance: none;
994 appearance: none;
995 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");
996 background-repeat: no-repeat;
997 background-position: right 12px center;
998 background-size: 16px;
999 cursor: pointer;
1000 line-height: 1.5;
1001 width:100%;
1002 }
1003
1004 .yatra-form-group select option {
1005 padding: 10px;
1006 font-size: 14px;
1007 }
1008
1009 .yatra-form-group textarea {
1010 resize: vertical;
1011 font-family: inherit;
1012 }
1013
1014 /* Traveler Selector */
1015 .yatra-traveler-selector {
1016 display: flex;
1017 align-items: center;
1018 gap: 12px;
1019 border: 1px solid #d1d5db;
1020 border-radius: 8px;
1021 padding: 4px;
1022 background: #fff;
1023 }
1024
1025 .yatra-traveler-selector input {
1026 flex: 1;
1027 border: none;
1028 text-align: center;
1029 font-size: 16px;
1030 font-weight: 600;
1031 padding: 8px;
1032 background: transparent;
1033 }
1034
1035 .yatra-traveler-selector input:focus {
1036 outline: none;
1037 box-shadow: none;
1038 }
1039 .yatra-traveler-selector .yatra-select-arrow {
1040 display:none;
1041 }
1042
1043 .yatra-quantity-btn {
1044 width: 36px;
1045 height: 36px;
1046 border: none;
1047 background: #f3f4f6;
1048 border-radius: 6px;
1049 cursor: pointer;
1050 display: flex;
1051 align-items: center;
1052 justify-content: center;
1053 font-size: 18px;
1054 font-weight: 600;
1055 color: #374151;
1056 transition: all 0.2s;
1057 }
1058
1059 .yatra-quantity-btn:hover {
1060 background: #e5e7eb;
1061 color: #111827;
1062 }
1063
1064 .yatra-quantity-btn:active {
1065 transform: scale(0.95);
1066 }
1067
1068 /* Payment Methods */
1069 .yatra-payment-methods {
1070 display: flex;
1071 flex-direction: column;
1072 gap: 12px;
1073 }
1074
1075 .yatra-payment-option {
1076 display: flex;
1077 align-items: center;
1078 padding: 16px;
1079 border: 2px solid #e5e7eb;
1080 border-radius: 8px;
1081 cursor: pointer;
1082 transition: all 0.2s;
1083 }
1084
1085 .yatra-payment-option:hover {
1086 border-color: var(--yatra-primary, #3b82f6);
1087 background: #f0f9ff;
1088 }
1089
1090 .yatra-payment-option input[type="radio"] {
1091 margin-right: 12px;
1092 width: 18px;
1093 height: 18px;
1094 cursor: pointer;
1095 }
1096
1097 .yatra-payment-option input[type="radio"]:checked + .yatra-payment-label {
1098 color: var(--yatra-primary, #3b82f6);
1099 }
1100
1101 .yatra-payment-label {
1102 display: flex;
1103 flex-direction: column;
1104 gap: 4px;
1105 }
1106
1107 .yatra-payment-label strong {
1108 font-size: 15px;
1109 font-weight: 600;
1110 color: inherit;
1111 }
1112
1113 .yatra-payment-label span {
1114 font-size: 13px;
1115 color: #6b7280;
1116 }
1117
1118 .yatra-payment-option input[type="radio"]:checked ~ .yatra-payment-label span {
1119 color: var(--yatra-primary, #3b82f6);
1120 }
1121
1122 /* Payment Gateways */
1123 .yatra-payment-gateways {
1124 display: flex;
1125 flex-direction: column;
1126 gap: 12px;
1127 }
1128
1129
1130 .yatra-gateway-options {
1131 display: flex;
1132 flex-direction: column;
1133 gap: 12px;
1134 }
1135
1136 .yatra-gateway-option-wrapper {
1137 display: flex;
1138 flex-direction: column;
1139 gap: 12px;
1140 }
1141
1142 .yatra-gateway-option {
1143 display: flex;
1144 align-items: center;
1145 gap: 16px;
1146 padding: 16px;
1147 border: 1px solid #e5e7eb;
1148 border-radius: 8px;
1149 cursor: pointer;
1150 transition: all 0.2s;
1151 background: #fff;
1152 }
1153
1154 .yatra-gateway-option:hover {
1155 border-color: var(--yatra-primary, #3b82f6);
1156 background: #f0f9ff;
1157 }
1158
1159 .yatra-gateway-option input[type="radio"] {
1160 width: 18px;
1161 height: 18px;
1162 cursor: pointer;
1163 flex-shrink: 0;
1164 margin: 0;
1165 }
1166
1167 .yatra-gateway-option input[type="radio"]:checked {
1168 accent-color: var(--yatra-primary, #3b82f6);
1169 }
1170
1171 .yatra-gateway-icon-wrap {
1172 flex-shrink: 0;
1173 display: flex;
1174 align-items: center;
1175 justify-content: center;
1176 }
1177
1178 .yatra-gateway-icon {
1179 width: 48px;
1180 height: 48px;
1181 object-fit: contain;
1182 border-radius: 6px;
1183 }
1184
1185 .yatra-gateway-content {
1186 display: block;
1187 flex: 1;
1188 }
1189
1190 .yatra-gateway-title {
1191 display: block;
1192 font-size: 15px;
1193 font-weight: 600;
1194 color: #111827;
1195 margin: 0 0 4px 0;
1196 }
1197
1198 .yatra-gateway-desc {
1199 display: block;
1200 font-size: 13px;
1201 color: #6b7280;
1202 line-height: 1.4;
1203 margin: 0;
1204 }
1205
1206 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-icon-wrap .yatra-gateway-icon {
1207 opacity: 1;
1208 }
1209
1210 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-content .yatra-gateway-title {
1211 color: var(--yatra-primary, #3b82f6);
1212 }
1213
1214 .yatra-gateway-extra {
1215 display: none;
1216 padding: 20px;
1217 border: 1px solid #dbeafe;
1218 border-radius: 10px;
1219 background: #f8fbff;
1220 }
1221
1222 .yatra-gateway-extra.active {
1223 display: block;
1224 }
1225
1226 .yatra-gateway-label span {
1227 font-size: 13px;
1228 color: #6b7280;
1229 }
1230
1231 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-label strong {
1232 color: var(--yatra-primary, #3b82f6);
1233 }
1234
1235 /* Gateway Icon Images */
1236 .yatra-gateway-icon img {
1237 width: 32px;
1238 height: 32px;
1239 object-fit: contain;
1240 }
1241
1242 /* Offline Gateway Badge */
1243 .yatra-gateway-badge {
1244 font-size: 11px;
1245 font-weight: 600;
1246 color: #059669;
1247 background: #d1fae5;
1248 padding: 4px 10px;
1249 border-radius: 20px;
1250 white-space: nowrap;
1251 flex-shrink: 0;
1252 }
1253
1254 .yatra-gateway-offline {
1255 background: #f0fdf4;
1256 border-color: #86efac;
1257 }
1258
1259 .yatra-gateway-offline:hover {
1260 background: #dcfce7;
1261 border-color: #22c55e;
1262 }
1263
1264 /* Selected gateway states */
1265 .yatra-gateway-option input[type="radio"]:checked ~ .yatra-gateway-badge {
1266 background: #dbeafe;
1267 color: var(--yatra-primary-dark, #2563eb);
1268 }
1269
1270 /* No Gateways Message */
1271 .yatra-no-gateways-message {
1272 padding: 20px;
1273 background: #fef3c7;
1274 border: 1px solid #fcd34d;
1275 border-radius: 8px;
1276 color: #92400e;
1277 font-size: 14px;
1278 text-align: center;
1279 }
1280
1281 /* Gateway Info Section in Sidebar */
1282 .yatra-gateway-info {
1283 margin-top: 20px;
1284 padding-top: 20px;
1285 border-top: 1px solid #e5e7eb;
1286 }
1287
1288 .yatra-gateway-info h4 {
1289 font-size: 14px;
1290 font-weight: 600;
1291 color: #374151;
1292 margin-bottom: 12px;
1293 }
1294
1295 #yatra-gateway-details {
1296 font-size: 13px;
1297 color: #6b7280;
1298 line-height: 1.6;
1299 }
1300
1301 #yatra-gateway-details p {
1302 margin: 0 0 8px 0;
1303 }
1304
1305 /* Price Due Row */
1306 .yatra-price-due {
1307 background: #dbeafe;
1308 padding: 12px !important;
1309 border-radius: 8px;
1310 margin-top: 8px;
1311 }
1312
1313 .yatra-price-due span {
1314 color: var(--yatra-primary-darker, #1d4ed8) !important;
1315 }
1316
1317 /* Deposit Row */
1318 .yatra-price-deposit {
1319 color: #6b7280;
1320 font-size: 13px;
1321 }
1322
1323 /* Submit Button with Icon */
1324 .yatra-booking-pay-btn {
1325 display: flex;
1326 align-items: center;
1327 justify-content: center;
1328 gap: 10px;
1329 }
1330
1331 .yatra-booking-pay-btn svg {
1332 flex-shrink: 0;
1333 }
1334
1335 /* Traveler Forms */
1336 #yatra-travelers-container {
1337 display: flex;
1338 flex-direction: column;
1339 gap: 24px;
1340 }
1341
1342 .yatra-traveler-form {
1343 background: #f9fafb;
1344 border: 1px solid #e5e7eb;
1345 border-radius: 12px;
1346 padding: 24px;
1347 }
1348
1349 .yatra-traveler-header {
1350 margin-bottom: 20px;
1351 padding-bottom: 16px;
1352 border-bottom: 1px solid #e5e7eb;
1353 display: flex;
1354 align-items: center;
1355 justify-content: space-between;
1356 }
1357
1358 .yatra-traveler-title {
1359 font-size: 18px;
1360 font-weight: 600;
1361 color: #111827;
1362 margin: 0;
1363 }
1364
1365 .yatra-traveler-note {
1366 font-size: 12px;
1367 color: #6b7280;
1368 background: #e5e7eb;
1369 padding: 4px 10px;
1370 border-radius: 20px;
1371 }
1372
1373 /* Traveler Subsections */
1374 .yatra-traveler-subsection {
1375 margin-top: 20px;
1376 padding-top: 16px;
1377 border-top: 1px dashed #d1d5db;
1378 }
1379
1380 .yatra-subsection-title {
1381 font-size: 14px;
1382 font-weight: 600;
1383 color: #374151;
1384 margin: 0 0 12px 0;
1385 text-transform: uppercase;
1386 letter-spacing: 0.5px;
1387 }
1388
1389 .yatra-form-group input.error,
1390 .yatra-form-group select.error {
1391 border-color: #ef4444;
1392 box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
1393 }
1394
1395 /* Terms & Conditions Container */
1396 .yatra-terms-container {
1397 display: flex;
1398 flex-direction: column;
1399 gap: 16px;
1400 }
1401
1402
1403 .yatra-checkbox-label:hover {
1404 background: #f3f4f6;
1405 border-color: #d1d5db;
1406 }
1407
1408 .yatra-checkbox-label input[type="checkbox"] {
1409 margin-top: 2px;
1410 width: 18px;
1411 height: 18px;
1412 cursor: pointer;
1413 flex-shrink: 0;
1414 accent-color: var(--yatra-primary, #3b82f6);
1415 }
1416
1417 .yatra-checkbox-label span {
1418 line-height: 1.5;
1419 }
1420
1421 .yatra-checkbox-label a {
1422 color: var(--yatra-primary, #3b82f6);
1423 text-decoration: none;
1424 font-weight: 500;
1425 }
1426
1427 .yatra-checkbox-label a:hover {
1428 text-decoration: underline;
1429 }
1430
1431 .yatra-checkbox-label .required {
1432 color: #ef4444;
1433 margin-left: 2px;
1434 }
1435 /* Actions */
1436 .yatra-booking-actions {
1437 display: flex;
1438 gap: 16px;
1439 margin-top: 32px;
1440 padding-top: 32px;
1441 border-top: 1px solid #e5e7eb;
1442 }
1443
1444 .yatra-booking-submit-btn,
1445 .yatra-booking-pay-btn {
1446 flex: 1;
1447 padding: 18px 32px;
1448 background: linear-gradient(135deg, var(--yatra-primary, #3b82f6) 0%, var(--yatra-primary-dark, #2563eb) 100%);
1449 color: #fff;
1450 border: none;
1451 border-radius: 10px;
1452 font-size: 16px;
1453 font-weight: 600;
1454 cursor: pointer;
1455 transition: all 0.2s;
1456 display: flex;
1457 align-items: center;
1458 justify-content: center;
1459 gap: 10px;
1460 text-align: center;
1461 }
1462
1463 .yatra-booking-submit-btn:hover,
1464 .yatra-booking-pay-btn:hover {
1465 background: linear-gradient(135deg, var(--yatra-primary-dark, #2563eb) 0%, var(--yatra-primary-darker, #1d4ed8) 100%);
1466 transform: translateY(-2px);
1467 box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4);
1468 }
1469
1470 .yatra-booking-pay-btn svg {
1471 flex-shrink: 0;
1472 width: 20px;
1473 height: 20px;
1474 }
1475
1476 .yatra-booking-pay-btn #pay-button-text {
1477 font-size: 16px;
1478 font-weight: 600;
1479 }
1480
1481 .yatra-booking-pay-btn #pay-amount {
1482 font-size: 18px;
1483 font-weight: 700;
1484 background: rgba(255, 255, 255, 0.2);
1485 padding: 4px 12px;
1486 border-radius: 6px;
1487 margin-left: 6px;
1488 }
1489
1490 .yatra-booking-cancel-btn {
1491 padding: 16px 32px;
1492 background: #fff;
1493 color: #374151;
1494 border: 1px solid #d1d5db;
1495 border-radius: 8px;
1496 font-size: 16px;
1497 font-weight: 600;
1498 text-decoration: none;
1499 text-align: center;
1500 transition: all 0.2s;
1501 }
1502
1503 .yatra-booking-cancel-btn:hover {
1504 background: #f9fafb;
1505 border-color: #9ca3af;
1506 }
1507
1508 /* Sidebar */
1509 .yatra-booking-sidebar {
1510 position: sticky;
1511 top: 20px;
1512 height: fit-content;
1513 }
1514
1515 .yatra-booking-summary {
1516 background: #fff;
1517 border-radius: 12px;
1518 padding: 24px;
1519 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1520 overflow: visible;
1521 position: relative;
1522 }
1523
1524 .yatra-booking-summary h3 {
1525 font-size: 20px;
1526 font-weight: 700;
1527 color: #111827;
1528 margin-bottom: 20px;
1529 padding-bottom: 16px;
1530 }
1531
1532 /* Travel Details in Sidebar */
1533 .yatra-summary-travel-details {
1534 margin-bottom: 24px;
1535 padding-bottom: 24px;
1536 border-bottom: 1px solid #e5e7eb;
1537 position: relative;
1538 overflow: visible;
1539 }
1540
1541 .yatra-summary-form-group {
1542 margin-bottom: 16px;
1543 }
1544
1545 .yatra-summary-form-group:last-child {
1546 margin-bottom: 0;
1547 }
1548
1549 .yatra-summary-form-group label {
1550 display: block;
1551 font-size: 13px;
1552 font-weight: 600;
1553 color: #374151;
1554 margin-bottom: 8px;
1555 }
1556
1557 .yatra-summary-form-group label .required {
1558 color: #ef4444;
1559 }
1560
1561 .yatra-summary-form-group input[type="date"] {
1562 width: 100%;
1563 padding: 10px 12px;
1564 border: 1px solid #d1d5db;
1565 border-radius: 8px;
1566 font-size: 14px;
1567 color: #111827;
1568 background: #fff;
1569 transition: all 0.2s;
1570 }
1571
1572 .yatra-summary-form-group input[type="date"]:focus {
1573 outline: none;
1574 border-color: var(--yatra-primary, #3b82f6);
1575 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1576 }
1577
1578 .yatra-summary-readonly-field {
1579 padding: 10px 12px;
1580 background: #f9fafb;
1581 border: 1px solid #e5e7eb;
1582 border-radius: 6px;
1583 font-size: 14px;
1584 color: #374151;
1585 line-height: 1.5;
1586 }
1587
1588 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) {
1589 display: flex;
1590 align-items: center;
1591 border: 1px solid #d1d5db;
1592 border-radius: 8px;
1593 background: #fff;
1594 overflow: hidden;
1595 }
1596
1597 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) input {
1598 flex: 1;
1599 border: none;
1600 text-align: center;
1601 font-size: 15px;
1602 font-weight: 600;
1603 padding: 10px 8px;
1604 background: transparent;
1605 width: 60px;
1606 }
1607
1608 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) input:focus {
1609 outline: none;
1610 }
1611
1612 .yatra-booking-sidebar .yatra-traveler-selector:not(.yatra-booking-participants-select) .yatra-quantity-btn {
1613 width: 40px;
1614 height: 40px;
1615 border: none;
1616 background: #f3f4f6;
1617 cursor: pointer;
1618 display: flex;
1619 align-items: center;
1620 justify-content: center;
1621 font-size: 18px;
1622 font-weight: 600;
1623 color: #374151;
1624 transition: all 0.2s;
1625 }
1626
1627 .yatra-booking-sidebar .yatra-quantity-btn:hover {
1628 background: #e5e7eb;
1629 }
1630
1631 /* Selected Date/Time Display */
1632 .yatra-selected-datetime {
1633 display: flex;
1634 align-items: center;
1635 gap: 12px;
1636 padding: 12px 16px;
1637 background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
1638 border: 1px solid #bae6fd;
1639 border-radius: 8px;
1640 font-weight: 500;
1641 }
1642
1643 .yatra-date-display {
1644 color: #0369a1;
1645 font-size: 15px;
1646 }
1647
1648 .yatra-time-display {
1649 padding: 4px 10px;
1650 background: #0ea5e9;
1651 color: white;
1652 border-radius: 4px;
1653 font-size: 13px;
1654 font-weight: 600;
1655 }
1656
1657 /* Traveler Categories Section */
1658 .yatra-traveler-categories {
1659 margin-top: 4px;
1660 }
1661
1662 .yatra-category-row {
1663 display: flex;
1664 justify-content: space-between;
1665 align-items: center;
1666 padding: 12px;
1667 background: #f9fafb;
1668 border: 1px solid #e5e7eb;
1669 border-radius: 8px;
1670 margin-bottom: 8px;
1671 }
1672
1673 .yatra-category-row:last-child {
1674 margin-bottom: 0;
1675 }
1676
1677 .yatra-category-info {
1678 display: flex;
1679 flex-direction: column;
1680 gap: 2px;
1681 }
1682
1683 .yatra-category-name {
1684 font-weight: 600;
1685 color: #111827;
1686 font-size: 14px;
1687 }
1688
1689 .yatra-category-age {
1690 font-size: 12px;
1691 color: #6b7280;
1692 }
1693
1694 .yatra-category-price {
1695 font-size: 14px;
1696 font-weight: 600;
1697 color: #059669;
1698 }
1699
1700 .yatra-category-row .yatra-traveler-selector {
1701 display: flex;
1702 align-items: center;
1703 border: 1px solid #d1d5db;
1704 border-radius: 6px;
1705 background: #fff;
1706 overflow: hidden;
1707 }
1708
1709 .yatra-category-row .yatra-traveler-selector input {
1710 width: 40px;
1711 border: none;
1712 text-align: center;
1713 font-size: 14px;
1714 font-weight: 600;
1715 padding: 6px 4px;
1716 background: transparent;
1717 }
1718
1719 .yatra-category-row .yatra-quantity-btn {
1720 width: 32px;
1721 height: 32px;
1722 border: none;
1723 background: #f3f4f6;
1724 cursor: pointer;
1725 display: flex;
1726 align-items: center;
1727 justify-content: center;
1728 font-size: 16px;
1729 font-weight: 600;
1730 color: #374151;
1731 transition: all 0.2s;
1732 }
1733
1734 .yatra-category-row .yatra-quantity-btn:hover {
1735 background: #e5e7eb;
1736 }
1737
1738 /* Price Breakdown for Categories */
1739 .yatra-price-breakdown-categories {
1740 border-bottom: 1px solid #e5e7eb;
1741 padding-bottom: 12px;
1742 margin-bottom: 12px;
1743 }
1744
1745 .yatra-category-subtotal {
1746 font-size: 14px;
1747 padding: 6px 0;
1748 color: #111827;
1749 }
1750
1751 /* =============================================
1752 Dropdown Traveler Selector (Trip Single Style)
1753 ============================================= */
1754
1755 .yatra-booking-participants-select {
1756 position: relative;
1757 display: flex;
1758 align-items: center;
1759 padding: 10px 14px;
1760 background: #fff;
1761 border: 1px solid #d1d5db;
1762 border-radius: 8px;
1763 cursor: pointer;
1764 transition: all 0.2s ease;
1765 gap: 10px;
1766 }
1767
1768 .yatra-booking-participants-select:hover {
1769 border-color: var(--yatra-primary, #3b82f6);
1770 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.08);
1771 }
1772
1773 .yatra-booking-participants-select.active {
1774 border-color: var(--yatra-primary, #3b82f6);
1775 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12);
1776 z-index: 1100;
1777 }
1778
1779 .yatra-booking-field-icon {
1780 display: flex;
1781 align-items: center;
1782 justify-content: center;
1783 color: #6b7280;
1784 flex-shrink: 0;
1785 }
1786
1787 .yatra-booking-field-icon svg {
1788 width: 18px;
1789 height: 18px;
1790 }
1791
1792 .yatra-booking-participants-select:hover .yatra-booking-field-icon,
1793 .yatra-booking-participants-select.active .yatra-booking-field-icon {
1794 color: var(--yatra-primary, #3b82f6);
1795 }
1796
1797 .yatra-booking-participants-display {
1798 flex: 1;
1799 font-size: 14px;
1800 font-weight: 500;
1801 color: #111827;
1802 white-space: nowrap;
1803 overflow: hidden;
1804 text-overflow: ellipsis;
1805 line-height: 1.3;
1806 }
1807
1808 .yatra-booking-participants-select .yatra-select-arrow {
1809 flex-shrink: 0;
1810 color: #9ca3af;
1811 transition: transform 0.2s ease, color 0.2s ease;
1812 }
1813
1814 .yatra-booking-participants-select:hover .yatra-select-arrow,
1815 .yatra-booking-participants-select.active .yatra-select-arrow {
1816 color: var(--yatra-primary, #3b82f6);
1817 }
1818
1819 .yatra-booking-participants-select.active .yatra-select-arrow {
1820 transform: rotate(180deg);
1821 }
1822
1823 /* Dropdown Container */
1824 .yatra-booking-quantity-dropdown {
1825 position: absolute;
1826 top: 100%;
1827 left: 0;
1828 right: 0;
1829 margin-top: 6px;
1830 background: #fff;
1831 border: 1px solid #e5e7eb;
1832 border-radius: 10px;
1833 box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1), 0 4px 10px rgba(0, 0, 0, 0.05);
1834 z-index: 1000;
1835 display: none;
1836 overflow: visible;
1837 animation: slideDownDropdown 0.2s ease-out;
1838 padding: 6px;
1839 }
1840
1841 @keyframes slideDownDropdown {
1842 from {
1843 opacity: 0;
1844 transform: translateY(-6px);
1845 }
1846 to {
1847 opacity: 1;
1848 transform: translateY(0);
1849 }
1850 }
1851
1852 .yatra-booking-participants-select.active .yatra-booking-quantity-dropdown {
1853 display: block;
1854 }
1855
1856 /* Quantity Rows inside dropdown */
1857 .yatra-booking-quantity-dropdown .yatra-quantity-row {
1858 display: flex;
1859 align-items: center;
1860 justify-content: space-between;
1861 padding: 10px;
1862 gap: 12px;
1863 border-radius: 8px;
1864 transition: background-color 0.15s ease;
1865 }
1866
1867 .yatra-booking-quantity-dropdown .yatra-quantity-row:hover {
1868 background-color: #f9fafb;
1869 }
1870
1871 .yatra-booking-quantity-dropdown .yatra-quantity-row:not(:last-child) {
1872 border-bottom: 1px solid #f3f4f6;
1873 margin-bottom: 2px;
1874 }
1875
1876 .yatra-booking-quantity-dropdown .yatra-quantity-label {
1877 display: flex;
1878 flex-direction: column;
1879 gap: 2px;
1880 flex: 1;
1881 min-width: 0;
1882 }
1883
1884 .yatra-booking-quantity-dropdown .yatra-quantity-title {
1885 font-size: 14px;
1886 font-weight: 600;
1887 color: #111827;
1888 line-height: 1.3;
1889 }
1890
1891 .yatra-booking-quantity-dropdown .yatra-quantity-subtitle {
1892 font-size: 11px;
1893 color: #6b7280;
1894 line-height: 1.2;
1895 }
1896
1897 .yatra-booking-quantity-dropdown .yatra-quantity-price {
1898 font-size: 14px;
1899 font-weight: 600;
1900 color: #059669;
1901 }
1902
1903 /* Quantity Controls - Container */
1904 .yatra-booking-quantity-dropdown .yatra-quantity-controls {
1905 display: flex;
1906 align-items: center;
1907 gap: 4px;
1908 background: #f3f4f6;
1909 padding: 4px;
1910 border-radius: 8px;
1911 flex-shrink: 0;
1912 }
1913
1914 /* Quantity Buttons */
1915 .yatra-qty-btn {
1916 width: 28px;
1917 height: 28px;
1918 min-width: 28px;
1919 min-height: 28px;
1920 border-radius: 6px;
1921 border: none;
1922 background: #ffffff;
1923 display: flex;
1924 align-items: center;
1925 justify-content: center;
1926 cursor: pointer;
1927 transition: all 0.15s ease;
1928 color: #374151;
1929 padding: 0;
1930 flex-shrink: 0;
1931 position: relative;
1932 z-index: 10;
1933 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
1934 }
1935
1936 .yatra-qty-btn svg {
1937 width: 14px;
1938 height: 14px;
1939 stroke-width: 2.5;
1940 pointer-events: none;
1941 }
1942
1943 .yatra-qty-btn:hover:not(:disabled) {
1944 background: var(--yatra-primary, #3b82f6);
1945 color: #ffffff;
1946 transform: scale(1.05);
1947 box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);
1948 }
1949
1950 .yatra-qty-btn:active:not(:disabled) {
1951 transform: scale(0.95);
1952 background: var(--yatra-primary-dark, #2563eb);
1953 }
1954
1955 .yatra-qty-btn:disabled {
1956 opacity: 0.4;
1957 cursor: not-allowed;
1958 background: #e5e7eb;
1959 box-shadow: none;
1960 }
1961
1962 /* Quantity Input */
1963 .yatra-qty-input {
1964 width: 36px;
1965 height: 28px;
1966 text-align: center;
1967 border: none;
1968 background: transparent;
1969 font-size: 15px;
1970 font-weight: 700;
1971 color: #111827;
1972 padding: 0;
1973 -moz-appearance: textfield;
1974 }
1975
1976 /* Quantity Input in Booking Summary - Wider */
1977 .yatra-booking-summary .yatra-qty-input {
1978 width: 60px;
1979 min-width: 60px;
1980 }
1981
1982 .yatra-qty-input::-webkit-outer-spin-button,
1983 .yatra-qty-input::-webkit-inner-spin-button {
1984 -webkit-appearance: none;
1985 margin: 0;
1986 }
1987
1988 .yatra-qty-input:focus {
1989 outline: none;
1990 }
1991
1992 .yatra-booking-summary h3 + .yatra-summary-travel-details {
1993 margin-top: -4px;
1994 border-bottom: 1px solid #e5e7eb;
1995 }
1996
1997 /* Summary Trip */
1998 .yatra-summary-trip {
1999 display: flex;
2000 gap: 16px;
2001 margin-bottom: 24px;
2002 padding-bottom: 24px;
2003 border-bottom: 1px solid #e5e7eb;
2004 }
2005
2006 .yatra-summary-image {
2007 width: 100px;
2008 height: 100px;
2009 border-radius: 8px;
2010 overflow: hidden;
2011 flex-shrink: 0;
2012 }
2013
2014 .yatra-summary-image img {
2015 width: 100%;
2016 height: 100%;
2017 object-fit: cover;
2018 }
2019
2020 .yatra-summary-details h4 {
2021 font-size: 16px;
2022 font-weight: 600;
2023 color: #111827;
2024 margin-bottom: 8px;
2025 line-height: 1.4;
2026 }
2027
2028 .yatra-summary-meta {
2029 display: flex;
2030 align-items: center;
2031 gap: 8px;
2032 font-size: 13px;
2033 color: #6b7280;
2034 }
2035
2036 /* Pricing Summary */
2037 .yatra-summary-pricing {
2038 margin-bottom: 24px;
2039 padding: 20px;
2040 background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
2041 border-radius: 12px;
2042 border: 1px solid #e2e8f0;
2043 }
2044
2045 .yatra-price-breakdown-categories {
2046 margin-bottom: 16px;
2047 padding-bottom: 16px;
2048 border-bottom: 1px dashed #cbd5e1;
2049 }
2050
2051 .yatra-price-row {
2052 display: flex;
2053 justify-content: space-between;
2054 align-items: center;
2055 padding: 10px 0;
2056 font-size: 14px;
2057 color: #475569;
2058 transition: background-color 0.2s ease;
2059 }
2060
2061 .yatra-price-row:not(:last-child) {
2062 border-bottom: 1px solid rgba(226, 232, 240, 0.5);
2063 }
2064
2065 .yatra-category-subtotal {
2066 font-size: 13px;
2067 }
2068
2069 .yatra-category-subtotal .category-count {
2070 font-weight: 600;
2071 color: var(--yatra-primary, #3b82f6);
2072 }
2073
2074 .yatra-category-subtotal .category-subtotal {
2075 font-weight: 500;
2076 color: #1e293b;
2077 }
2078
2079 /* Subtotal / Gross Total */
2080 .yatra-price-subtotal {
2081 margin-top: 12px;
2082 padding-top: 12px;
2083 border-top: 1px solid #e2e8f0 !important;
2084 background: rgba(255, 255, 255, 0.6);
2085 margin: 12px -12px 0;
2086 padding: 12px;
2087 border-radius: 8px;
2088 }
2089
2090 .yatra-price-subtotal span {
2091 color: #334155;
2092 font-size: 15px;
2093 }
2094
2095 /* Discount Rows */
2096 .yatra-price-discount {
2097 background: linear-gradient(90deg, rgba(16, 185, 129, 0.08) 0%, transparent 100%);
2098 margin: 8px -12px;
2099 padding: 10px 12px;
2100 border-radius: 8px;
2101 border: none !important;
2102 }
2103
2104
2105 .yatra-discount-label {
2106 display: flex;
2107 align-items: center;
2108 gap: 6px;
2109 color: #059669;
2110 font-weight: 500;
2111 }
2112
2113 .yatra-discount-code {
2114 font-size: 12px;
2115 color: #6b7280;
2116 font-weight: 400;
2117 }
2118
2119 .yatra-discount-amount {
2120 font-weight: 600;
2121 color: #059669 !important;
2122 }
2123
2124 /* Group Discount */
2125 .yatra-group-discount-row {
2126 background: linear-gradient(90deg, rgba(59, 130, 246, 0.08) 0%, transparent 100%);
2127 }
2128
2129
2130 .yatra-group-discount-row .yatra-discount-label {
2131 color: var(--yatra-primary-dark, #2563eb);
2132 }
2133
2134 .yatra-group-discount-row .yatra-discount-amount {
2135 color: var(--yatra-primary-dark, #2563eb) !important;
2136 }
2137
2138 /* Additional Services */
2139 /* Selected-service rows in the Pricing Summary — match the neutral
2140 colour scheme of every other price row. The previous purple
2141 gradient/text/dot was visually inconsistent with the traveler row
2142 above. Yatra default row colour is `.yatra-price-row { color: #475569 }`
2143 (inherits below). Right-side price uses #1e293b like category subtotals. */
2144 .yatra-price-service {
2145 margin: 0;
2146 padding: 10px 0;
2147 }
2148
2149 .yatra-price-service span:first-child {
2150 font-weight: 500;
2151 display: flex;
2152 align-items: center;
2153 gap: 6px;
2154 }
2155
2156 .yatra-price-service span:last-child {
2157 font-weight: 600;
2158 color: #1e293b;
2159 }
2160
2161 /* Included Service — row stays in the default palette; only the
2162 "Included" badge below keeps a green hue as a status signal. */
2163 .yatra-service-included {
2164 /* Intentionally no background override — matches the other rows. */
2165 }
2166
2167 .yatra-service-included-badge {
2168 font-size: 11px;
2169 font-weight: 600;
2170 color: #047857 !important;
2171 background: rgba(16, 185, 129, 0.15);
2172 padding: 3px 8px;
2173 border-radius: 4px;
2174 text-transform: uppercase;
2175 letter-spacing: 0.5px;
2176 }
2177
2178 /* Service Badges */
2179 .yatra-service-badge {
2180 font-size: 9px;
2181 font-weight: 600;
2182 padding: 2px 6px;
2183 border-radius: 3px;
2184 text-transform: uppercase;
2185 letter-spacing: 0.3px;
2186 margin-left: 6px;
2187 vertical-align: middle;
2188 }
2189
2190 .yatra-badge-required {
2191 background: rgba(239, 68, 68, 0.1);
2192 color: #dc2626;
2193 }
2194
2195 /* Net Amount / Total */
2196 .yatra-price-total {
2197 margin-top: 16px;
2198 padding-top: 16px;
2199 border-top: 2px solid #e2e8f0 !important;
2200 border-bottom: none !important;
2201 }
2202
2203 .yatra-price-total span {
2204 color: #1e293b;
2205 font-size: 16px;
2206 }
2207
2208 .yatra-price-total span strong {
2209 font-weight: 700;
2210 }
2211
2212 /* Due Now */
2213 .yatra-price-due {
2214 margin-top: 8px;
2215 padding: 12px;
2216 background: rgba(251, 191, 36, 0.1);
2217 margin: 8px -12px 0;
2218 border-radius: 8px;
2219 border: 1px dashed #f59e0b !important;
2220 }
2221
2222
2223 .yatra-price-due span {
2224 color: #b45309;
2225 font-size: 14px;
2226 }
2227
2228 .yatra-price-due span strong {
2229 color: #92400e;
2230 }
2231
2232 /* Info */
2233 .yatra-summary-info {
2234 padding-top: 24px;
2235 }
2236
2237 .yatra-summary-info h4 {
2238 font-size: 16px;
2239 font-weight: 600;
2240 color: #111827;
2241 margin-bottom: 12px;
2242 }
2243
2244 .yatra-summary-info ul {
2245 list-style: none;
2246 padding: 0;
2247 margin: 0;
2248 }
2249
2250 .yatra-summary-info li {
2251 font-size: 14px;
2252 color: #6b7280;
2253 margin-bottom: 8px;
2254 padding-left: 20px;
2255 position: relative;
2256 }
2257
2258 .yatra-summary-info li:before {
2259 /* CSS Unicode escape (U+2713 CHECK MARK) — using the literal ✓ glyph
2260 renders as mojibake ("âœ") when the CSS file isn't served with an
2261 explicit UTF-8 charset and the browser falls back to Latin-1. */
2262 content: "\2713";
2263 position: absolute;
2264 left: 0;
2265 color: #10b981;
2266 font-weight: 600;
2267 }
2268
2269 /* Trip Actions on Listing Page */
2270 .yatra-trip-actions {
2271 display: flex;
2272 gap: 12px;
2273 }
2274
2275 .yatra-view-btn,
2276 .yatra-book-btn {
2277 flex: 1;
2278 padding: 10px 20px;
2279 border-radius: 8px;
2280 font-size: 14px;
2281 font-weight: 600;
2282 text-decoration: none;
2283 text-align: center;
2284 transition: all 0.2s;
2285 border: none;
2286 cursor: pointer;
2287 }
2288
2289 .yatra-view-btn {
2290 background: #f3f4f6;
2291 color: #374151;
2292 border: 1px solid #e5e7eb;
2293 }
2294
2295 .yatra-view-btn:hover {
2296 background: #e5e7eb;
2297 color: #111827;
2298 }
2299
2300 .yatra-book-btn {
2301 background: var(--yatra-primary, #3b82f6);
2302 color: #fff;
2303 }
2304
2305 .yatra-book-btn:hover {
2306 background: var(--yatra-primary-dark, #2563eb);
2307 transform: translateY(-1px);
2308 box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3);
2309 }
2310
2311 /* Responsive */
2312 @media (max-width: 1024px) {
2313 .yatra-booking-layout {
2314 grid-template-columns: 1fr;
2315 }
2316
2317 .yatra-booking-sidebar {
2318 position: static;
2319 order: -1;
2320 }
2321 }
2322
2323 @media (max-width: 768px) {
2324 .yatra-booking-page {
2325 padding: 20px 0 40px;
2326 }
2327
2328 .yatra-booking-main {
2329 padding: 24px;
2330 }
2331
2332 /*
2333 * Mobile-input hygiene. Two reasons every booking-form input
2334 * gets re-styled here at <=768px:
2335 *
2336 * 1. font-size: 16px (mandatory). iOS Safari auto-zooms the
2337 * viewport when a user focuses an <input>/<select>/<textarea>
2338 * whose computed font-size is below 16px. Our desktop styles
2339 * use 15px, which triggers a 1.25x zoom + scroll-position
2340 * jump on focus — disorienting on a long booking form. 16px
2341 * silences the zoom.
2342 *
2343 * 2. Vertical padding bumped to 14px. With 16px text that gives
2344 * ~48px total tap height (Material Design minimum is 48dp,
2345 * Apple HIG is 44pt). 44px works for thumbs in landscape;
2346 * 48px works in portrait too, where most mobile bookings
2347 * actually happen.
2348 */
2349 .yatra-form-group input[type="text"],
2350 .yatra-form-group input[type="email"],
2351 .yatra-form-group input[type="tel"],
2352 .yatra-form-group input[type="date"],
2353 .yatra-form-group input[type="number"],
2354 .yatra-form-group input[type="password"],
2355 .yatra-form-group select,
2356 .yatra-form-group textarea,
2357 .yatra-booking-form input,
2358 .yatra-booking-form select,
2359 .yatra-booking-form textarea {
2360 font-size: 16px;
2361 padding-top: 14px;
2362 padding-bottom: 14px;
2363 min-height: 48px;
2364 }
2365
2366 .yatra-booking-form textarea {
2367 min-height: 96px;
2368 }
2369
2370 /*
2371 * Inline login + register tabs on the booking page (rendered by
2372 * booking-auth.php). Same hygiene as the booking form so the
2373 * "log in to continue" path doesn't suddenly feel cramped /
2374 * trigger iOS zoom mid-checkout.
2375 */
2376 .yatra-booking-auth input[type="text"],
2377 .yatra-booking-auth input[type="email"],
2378 .yatra-booking-auth input[type="tel"],
2379 .yatra-booking-auth input[type="password"],
2380 .yatra-auth-form input[type="text"],
2381 .yatra-auth-form input[type="email"],
2382 .yatra-auth-form input[type="tel"],
2383 .yatra-auth-form input[type="password"] {
2384 font-size: 16px;
2385 min-height: 48px;
2386 padding-top: 14px;
2387 padding-bottom: 14px;
2388 }
2389
2390 .yatra-booking-auth .yatra-auth-submit,
2391 .yatra-auth-form .yatra-auth-submit {
2392 min-height: 48px;
2393 font-size: 16px;
2394 }
2395
2396 /*
2397 * Stacking rules — keep these INSIDE the @media (max-width: 768px)
2398 * block. On phones we want the form row to flow vertically and
2399 * half/third fields to span full width; on desktop they should
2400 * stay side-by-side as defined at line ~890. (A prior edit
2401 * accidentally closed this media block too early, leaking these
2402 * column-direction rules to every viewport — which is why all
2403 * fields appeared full-width on desktop.)
2404 */
2405 .yatra-form-row {
2406 flex-direction: column;
2407 }
2408
2409 .yatra-field-half,
2410 .yatra-field-third {
2411 flex: 1 1 100%;
2412 }
2413
2414 .yatra-booking-actions {
2415 flex-direction: column;
2416 }
2417
2418 .yatra-booking-submit-btn,
2419 .yatra-booking-cancel-btn {
2420 width: 100%;
2421 }
2422
2423 .yatra-trip-actions {
2424 flex-direction: column;
2425 }
2426 }
2427
2428
2429 /* ============================================
2430 BOOKING AUTH STYLES
2431 ============================================ */
2432
2433 /* Auth Container */
2434 .yatra-booking-auth {
2435 background: #fff;
2436 border-radius: 12px;
2437 box-shadow: 0 1px 3px rgba(0,0,0,0.1);
2438 overflow: hidden;
2439 }
2440
2441 /* Tab Navigation */
2442 .yatra-auth-tabs {
2443 display: flex;
2444 background: #f9fafb;
2445 border-radius: 12px 12px 0 0;
2446 overflow: hidden;
2447 }
2448
2449 .yatra-auth-tab {
2450 flex: 1;
2451 display: flex;
2452 align-items: center;
2453 justify-content: center;
2454 gap: 8px;
2455 padding: 16px 20px;
2456 background: transparent;
2457 border: none;
2458 border-bottom: 2px solid #e5e7eb;
2459 font-size: 15px;
2460 font-weight: 600;
2461 color: #6b7280;
2462 cursor: pointer;
2463 transition: all 0.2s ease;
2464 }
2465
2466 .yatra-auth-tab:hover {
2467 color: #374151;
2468 background: #f3f4f6;
2469 }
2470
2471 .yatra-auth-tab.active {
2472 color: var(--yatra-primary, #3b82f6);
2473 border-bottom-color: var(--yatra-primary, #3b82f6);
2474 background: #fff;
2475 }
2476
2477 .yatra-auth-tab svg {
2478 flex-shrink: 0;
2479 }
2480
2481 /* Auth Content */
2482 .yatra-auth-content {
2483 padding: 32px;
2484 }
2485
2486 .yatra-auth-header {
2487 text-align: center;
2488 margin-bottom: 28px;
2489 }
2490
2491 .yatra-auth-header h2 {
2492 font-size: 24px;
2493 font-weight: 700;
2494 color: #111827;
2495 margin: 0 0 8px 0;
2496 }
2497
2498 .yatra-auth-header p {
2499 font-size: 15px;
2500 color: #6b7280;
2501 margin: 0;
2502 }
2503
2504 /* Auth Form Styles */
2505 .yatra-auth-form {
2506 display: flex;
2507 flex-direction: column;
2508 gap: 20px;
2509 }
2510
2511 .yatra-auth-form .yatra-form-row {
2512 display: grid;
2513 grid-template-columns: 1fr 1fr;
2514 gap: 16px;
2515 }
2516
2517 .yatra-auth-form .yatra-form-group {
2518 margin-bottom: 0;
2519 }
2520
2521 .yatra-auth-form .yatra-form-group label {
2522 display: block;
2523 font-size: 14px;
2524 font-weight: 600;
2525 color: #374151;
2526 margin-bottom: 6px;
2527 justify-content: center;
2528 }
2529
2530 .yatra-auth-form .yatra-form-group label .required {
2531 color: #ef4444;
2532 }
2533
2534 .yatra-auth-form .yatra-input-wrapper {
2535 position: relative;
2536 display: flex;
2537 align-items: center;
2538 }
2539
2540 .yatra-auth-form .yatra-input-wrapper > svg:first-of-type {
2541 position: absolute;
2542 left: 14px;
2543 top: 50%;
2544 transform: translateY(-50%);
2545 color: #9ca3af;
2546 pointer-events: none;
2547 z-index: 1;
2548 width: 18px;
2549 height: 18px;
2550 flex-shrink: 0;
2551 }
2552
2553 .yatra-auth-form .yatra-input-wrapper input {
2554 width: 100%;
2555 height: 48px;
2556 padding: 0 44px;
2557 border: 1px solid #d1d5db;
2558 border-radius: 8px;
2559 font-size: 15px;
2560 color: #111827;
2561 transition: all 0.2s ease;
2562 background: #fff;
2563 }
2564
2565 .yatra-auth-form .yatra-input-wrapper input::placeholder {
2566 color: #9ca3af;
2567 }
2568
2569 .yatra-auth-form .yatra-input-wrapper input:focus {
2570 outline: none;
2571 border-color: var(--yatra-primary, #3b82f6);
2572 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2573 }
2574
2575 .yatra-auth-form .yatra-form-group > input {
2576 width: 100%;
2577 height: 48px;
2578 padding: 0 14px;
2579 border: 1px solid #d1d5db;
2580 border-radius: 8px;
2581 font-size: 15px;
2582 color: #111827;
2583 transition: all 0.2s ease;
2584 }
2585
2586 .yatra-auth-form .yatra-form-group > input:focus {
2587 outline: none;
2588 border-color: var(--yatra-primary, #3b82f6);
2589 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2590 }
2591
2592 /* Toggle Password */
2593 .yatra-toggle-password {
2594 position: absolute;
2595 right: 12px;
2596 top: 50%;
2597 transform: translateY(-50%);
2598 background: none;
2599 border: none;
2600 padding: 4px;
2601 cursor: pointer;
2602 color: #9ca3af;
2603 transition: color 0.2s;
2604 display: flex;
2605 align-items: center;
2606 justify-content: center;
2607 }
2608
2609 .yatra-toggle-password:hover {
2610 color: #6b7280;
2611 }
2612
2613 /* Password Strength */
2614 .yatra-password-strength {
2615 margin-top: 6px;
2616 height: 4px;
2617 border-radius: 2px;
2618 background: #e5e7eb;
2619 overflow: hidden;
2620 }
2621
2622 .yatra-password-strength::after {
2623 content: '';
2624 display: block;
2625 height: 100%;
2626 width: var(--strength, 0%);
2627 background: var(--color, #e5e7eb);
2628 transition: all 0.3s ease;
2629 }
2630
2631 .yatra-password-strength.weak { --strength: 25%; --color: #ef4444; }
2632 .yatra-password-strength.fair { --strength: 50%; --color: #f59e0b; }
2633 .yatra-password-strength.good { --strength: 75%; --color: #10b981; }
2634 .yatra-password-strength.strong { --strength: 100%; --color: #059669; }
2635
2636 /* Form Options */
2637 .yatra-form-options {
2638 display: flex;
2639 justify-content: space-between;
2640 align-items: center;
2641 margin-top: -8px;
2642 }
2643
2644 .yatra-booking-section .yatra-checkbox-label, .yatra-auth-form label.yatra-checkbox-label {
2645 display: flex;
2646 align-items: center;
2647 gap: 10px;
2648 font-size: 14px;
2649 color: #4b5563;
2650 cursor: pointer;
2651 padding: 0;
2652 background: transparent;
2653 border: none;
2654 line-height: 1.4;
2655 }
2656
2657 .yatra-auth-form .yatra-checkbox-label:hover {
2658 background: transparent;
2659 }
2660
2661 .yatra-auth-form .yatra-checkbox-label input[type="checkbox"] {
2662 width: 18px;
2663 height: 18px;
2664 min-width: 18px;
2665 margin: 0;
2666 accent-color: var(--yatra-primary, #3b82f6);
2667 cursor: pointer;
2668 flex-shrink: 0;
2669 }
2670
2671 .yatra-auth-form .yatra-checkbox-label span {
2672 display: inline;
2673 line-height: 1.4;
2674 }
2675
2676 .yatra-auth-form .yatra-checkbox-label a {
2677 color: var(--yatra-primary, #3b82f6);
2678 text-decoration: none;
2679 }
2680
2681 .yatra-auth-form .yatra-checkbox-label a:hover {
2682 text-decoration: underline;
2683 }
2684
2685 .yatra-forgot-link {
2686 font-size: 14px;
2687 color: var(--yatra-primary, #3b82f6);
2688 text-decoration: none;
2689 }
2690
2691 .yatra-forgot-link:hover {
2692 text-decoration: underline;
2693 }
2694
2695 /* Auth Message */
2696 .yatra-auth-message {
2697 padding: 12px 16px;
2698 border-radius: 8px;
2699 font-size: 14px;
2700 }
2701
2702 .yatra-auth-message.error {
2703 background: #fef2f2;
2704 border: 1px solid #fecaca;
2705 color: #dc2626;
2706 }
2707
2708 .yatra-auth-message.success {
2709 background: #f0fdf4;
2710 border: 1px solid #bbf7d0;
2711 color: #16a34a;
2712 }
2713
2714 /* Submit Button */
2715 .yatra-auth-submit {
2716 display: flex;
2717 align-items: center;
2718 justify-content: center;
2719 gap: 8px;
2720 width: 100%;
2721 padding: 14px 24px;
2722 background: linear-gradient(135deg, var(--yatra-primary, #3b82f6) 0%, var(--yatra-primary-dark, #2563eb) 100%);
2723 color: #fff;
2724 border: none;
2725 border-radius: 8px;
2726 font-size: 16px;
2727 font-weight: 600;
2728 cursor: pointer;
2729 transition: all 0.2s ease;
2730 }
2731
2732 .yatra-auth-submit:hover {
2733 background: linear-gradient(135deg, var(--yatra-primary-dark, #2563eb) 0%, var(--yatra-primary-darker, #1d4ed8) 100%);
2734 transform: translateY(-1px);
2735 box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
2736 }
2737
2738 .yatra-auth-submit:disabled {
2739 opacity: 0.7;
2740 cursor: not-allowed;
2741 transform: none;
2742 }
2743
2744 .yatra-auth-submit .btn-loading {
2745 display: flex;
2746 align-items: center;
2747 gap: 8px;
2748 }
2749
2750 .yatra-auth-form .animate-spin {
2751 animation: yatra-spin 1s linear infinite;
2752 }
2753
2754 /* Auth Footer */
2755 .yatra-auth-footer {
2756 text-align: center;
2757 margin-top: 24px;
2758 padding-top: 24px;
2759 border-top: 1px solid #e5e7eb;
2760 }
2761
2762 .yatra-auth-footer p {
2763 font-size: 14px;
2764 color: #6b7280;
2765 margin: 0;
2766 }
2767
2768 .yatra-switch-tab {
2769 background: none;
2770 border: none;
2771 color: var(--yatra-primary, #3b82f6);
2772 font-size: 14px;
2773 font-weight: 600;
2774 cursor: pointer;
2775 padding: 0;
2776 }
2777
2778 .yatra-switch-tab:hover {
2779 text-decoration: underline;
2780 }
2781
2782 /* Auth Responsive */
2783 @media (max-width: 640px) {
2784 .yatra-auth-content {
2785 padding: 24px 20px;
2786 }
2787
2788 .yatra-auth-form .yatra-form-row {
2789 grid-template-columns: 1fr;
2790 }
2791
2792 .yatra-form-options {
2793 flex-direction: column;
2794 gap: 12px;
2795 align-items: flex-start;
2796 }
2797 }
2798
2799 /* =====================
2800 * Coupon Section Styles
2801 * ===================== */
2802
2803 .yatra-coupon-section {
2804 padding: 16px 0;
2805 border-top: 1px dashed #e5e7eb;
2806 border-bottom: 1px dashed #e5e7eb;
2807 margin: 16px 0;
2808 }
2809
2810 .yatra-coupon-toggle-btn {
2811 display: flex;
2812 align-items: center;
2813 gap: 8px;
2814 width: 100%;
2815 padding: 10px 12px;
2816 background: #f9fafb;
2817 border: 1px dashed #d1d5db;
2818 border-radius: 8px;
2819 font-size: 14px;
2820 font-weight: 500;
2821 color: #374151;
2822 cursor: pointer;
2823 transition: all 0.2s ease;
2824 }
2825
2826 .yatra-coupon-toggle-btn:hover {
2827 background: #f3f4f6;
2828 border-color: #9ca3af;
2829 color: #111827;
2830 }
2831
2832 .yatra-coupon-toggle-btn svg:first-child {
2833 color: #6b7280;
2834 }
2835
2836 .yatra-coupon-chevron {
2837 margin-left: auto;
2838 color: #9ca3af;
2839 transition: transform 0.2s ease;
2840 }
2841
2842 .yatra-coupon-chevron.rotated {
2843 transform: rotate(180deg);
2844 }
2845
2846 .yatra-coupon-form {
2847 margin-top: 12px;
2848 padding: 16px;
2849 background: #f9fafb;
2850 border-radius: 8px;
2851 }
2852
2853 .yatra-coupon-input-group {
2854 display: flex;
2855 gap: 8px;
2856 }
2857
2858 .yatra-coupon-input {
2859 flex: 1;
2860 padding: 10px 14px;
2861 border: 1px solid #d1d5db;
2862 border-radius: 6px;
2863 font-size: 14px;
2864 text-transform: uppercase;
2865 letter-spacing: 0.5px;
2866 background: #fff;
2867 transition: border-color 0.2s ease, box-shadow 0.2s ease;
2868 }
2869
2870 .yatra-coupon-input::placeholder {
2871 text-transform: none;
2872 letter-spacing: normal;
2873 color: #9ca3af;
2874 }
2875
2876 .yatra-coupon-input:focus {
2877 outline: none;
2878 border-color: var(--yatra-primary, #3b82f6);
2879 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2880 }
2881
2882 .yatra-apply-coupon-btn {
2883 padding: 10px 20px;
2884 background: var(--yatra-primary, #3b82f6);
2885 color: #fff;
2886 border: none;
2887 border-radius: 6px;
2888 font-size: 14px;
2889 font-weight: 600;
2890 cursor: pointer;
2891 transition: background 0.2s ease;
2892 white-space: nowrap;
2893 }
2894
2895 .yatra-apply-coupon-btn:hover:not(:disabled) {
2896 background: var(--yatra-primary-dark, #2563eb);
2897 }
2898
2899 .yatra-apply-coupon-btn:disabled {
2900 background: #9ca3af;
2901 cursor: not-allowed;
2902 }
2903
2904 .yatra-coupon-message {
2905 margin-top: 10px;
2906 padding: 10px 12px;
2907 border-radius: 6px;
2908 font-size: 13px;
2909 display: flex;
2910 align-items: center;
2911 gap: 8px;
2912 }
2913
2914 .yatra-coupon-message.success {
2915 background: #ecfdf5;
2916 color: #065f46;
2917 border: 1px solid #a7f3d0;
2918 }
2919
2920 .yatra-coupon-message.error {
2921 background: #fef2f2;
2922 color: #991b1b;
2923 border: 1px solid #fecaca;
2924 }
2925
2926 /* Applied Coupon Display */
2927 .yatra-applied-coupon {
2928 display: flex;
2929 align-items: center;
2930 justify-content: space-between;
2931 padding: 12px 16px;
2932 background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);
2933 border: 1px solid #a7f3d0;
2934 border-radius: 8px;
2935 }
2936
2937 .yatra-applied-coupon-info {
2938 display: flex;
2939 align-items: center;
2940 gap: 10px;
2941 color: #065f46;
2942 }
2943
2944 .yatra-applied-coupon-info svg {
2945 color: #10b981;
2946 flex-shrink: 0;
2947 }
2948
2949 .yatra-coupon-code-display {
2950 font-weight: 700;
2951 font-size: 14px;
2952 letter-spacing: 0.5px;
2953 text-transform: uppercase;
2954 background: #fff;
2955 padding: 4px 10px;
2956 border-radius: 4px;
2957 border: 1px dashed #10b981;
2958 }
2959
2960 .yatra-coupon-discount {
2961 font-weight: 600;
2962 font-size: 14px;
2963 color: #059669;
2964 }
2965
2966 .yatra-remove-coupon-btn {
2967 display: flex;
2968 align-items: center;
2969 justify-content: center;
2970 width: 28px;
2971 height: 28px;
2972 padding: 0;
2973 background: #fff;
2974 border: 1px solid #d1d5db;
2975 border-radius: 6px;
2976 color: #6b7280;
2977 cursor: pointer;
2978 transition: all 0.2s ease;
2979 }
2980
2981 .yatra-remove-coupon-btn:hover {
2982 background: #fef2f2;
2983 border-color: #fecaca;
2984 color: #dc2626;
2985 }
2986
2987 /* Discount Row in Price Summary */
2988 .yatra-price-discount {
2989 background: #ecfdf5;
2990 margin: 8px -16px;
2991 padding: 10px 16px !important;
2992 border-top: 1px dashed #a7f3d0;
2993 border-bottom: 1px dashed #a7f3d0;
2994 }
2995
2996 .yatra-discount-label {
2997 display: flex;
2998 align-items: center;
2999 gap: 6px;
3000 color: #065f46;
3001 }
3002
3003 .yatra-discount-label .yatra-discount-code {
3004 font-size: 12px;
3005 color: #059669;
3006 font-weight: 500;
3007 }
3008
3009 .yatra-discount-amount {
3010 color: #059669;
3011 font-weight: 600;
3012 }
3013
3014 /* Responsive Adjustments */
3015 @media (max-width: 480px) {
3016 .yatra-coupon-input-group {
3017 flex-direction: column;
3018 }
3019
3020 .yatra-apply-coupon-btn {
3021 width: 100%;
3022 }
3023
3024 .yatra-applied-coupon {
3025 flex-direction: column;
3026 gap: 12px;
3027 text-align: center;
3028 }
3029
3030 .yatra-applied-coupon-info {
3031 flex-direction: column;
3032 gap: 8px;
3033 }
3034 }
3035
3036 /* Additional Services Section */
3037 .yatra-additional-services-section {
3038 margin: 20px 0;
3039 padding: 16px;
3040 background: #f8fafc;
3041 border-radius: 12px;
3042 border: 1px solid #e2e8f0;
3043 }
3044
3045 .yatra-services-header h4 {
3046 margin: 0 0 4px 0;
3047 font-size: 15px;
3048 font-weight: 600;
3049 color: #1e293b;
3050 }
3051
3052 .yatra-services-subtitle {
3053 margin: 0 0 12px 0;
3054 font-size: 13px;
3055 color: #64748b;
3056 }
3057
3058 .yatra-services-list {
3059 display: flex;
3060 flex-direction: column;
3061 gap: 8px;
3062 }
3063
3064 .yatra-service-item {
3065 background: #fff;
3066 border: 1px solid #e2e8f0;
3067 border-radius: 8px;
3068 transition: all 0.2s ease;
3069 /* `position: relative` anchors the CSS tooltip below */
3070 position: relative;
3071 }
3072
3073 .yatra-service-item:hover {
3074 border-color: #cbd5e1;
3075 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
3076 }
3077
3078 /* CSS tooltip for the service description — uses `data-tooltip` (not the
3079 native `title` attribute) so we don't trigger the browser's built-in
3080 tooltip on top of this one. Native tooltips also have a ~1s delay and
3081 can be suppressed when hovering over a disabled control inside a
3082 <label>; this version shows instantly and is consistent across
3083 browsers. `aria-label` on the same element still serves screen-readers. */
3084 .yatra-service-item[data-tooltip]:hover::after,
3085 .yatra-service-item[data-tooltip]:focus-within::after {
3086 content: attr(data-tooltip);
3087 position: absolute;
3088 bottom: calc(100% + 8px);
3089 left: 50%;
3090 transform: translateX(-50%);
3091 background: #1f2937;
3092 color: #fff;
3093 padding: 8px 12px;
3094 border-radius: 6px;
3095 font-size: 12px;
3096 font-weight: 400;
3097 line-height: 1.4;
3098 max-width: 260px;
3099 white-space: pre-wrap;
3100 z-index: 100;
3101 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
3102 pointer-events: none;
3103 opacity: 0;
3104 animation: yatra-tooltip-fade 0.15s ease-out 0.05s forwards;
3105 }
3106
3107 .yatra-service-item[data-tooltip]:hover::before,
3108 .yatra-service-item[data-tooltip]:focus-within::before {
3109 content: '';
3110 position: absolute;
3111 bottom: calc(100% + 2px);
3112 left: 50%;
3113 transform: translateX(-50%);
3114 border: 6px solid transparent;
3115 border-top-color: #1f2937;
3116 z-index: 100;
3117 pointer-events: none;
3118 opacity: 0;
3119 animation: yatra-tooltip-fade 0.15s ease-out 0.05s forwards;
3120 }
3121
3122 @keyframes yatra-tooltip-fade {
3123 to { opacity: 1; }
3124 }
3125
3126 .yatra-service-item.yatra-service-required {
3127 background: #fefce8;
3128 border-color: #fde047;
3129 }
3130
3131 .yatra-service-label {
3132 display: flex;
3133 align-items: center;
3134 gap: 12px;
3135 padding: 12px;
3136 cursor: pointer;
3137 width: 100%;
3138 }
3139
3140 .yatra-service-label input[type="checkbox"] {
3141 width: 18px;
3142 height: 18px;
3143 accent-color: var(--yatra-primary, #3b82f6);
3144 cursor: pointer;
3145 flex-shrink: 0;
3146 }
3147
3148 .yatra-service-label input[type="checkbox"]:disabled {
3149 cursor: not-allowed;
3150 opacity: 0.7;
3151 }
3152
3153 .yatra-service-info {
3154 flex: 1;
3155 min-width: 0;
3156 }
3157
3158 .yatra-service-name {
3159 display: block;
3160 font-size: 14px;
3161 font-weight: 500;
3162 color: #1e293b;
3163 }
3164
3165 .yatra-service-description {
3166 display: block;
3167 font-size: 12px;
3168 color: #64748b;
3169 margin-top: 2px;
3170 line-height: 1.4;
3171 }
3172
3173 .yatra-service-price {
3174 font-size: 13px;
3175 font-weight: 600;
3176 color: #1e293b;
3177 white-space: nowrap;
3178 }
3179
3180 /* Description tooltip (the ⓘ icon next to a service name).
3181 `currentColor` lets the SVG inherit the surrounding text colour rather
3182 than overriding it inline — keeps the icon visually consistent with
3183 the rest of the yatra-service-info block regardless of theme. */
3184 .yatra-service-tooltip {
3185 display: inline-flex;
3186 vertical-align: middle;
3187 margin-left: 4px;
3188 cursor: help;
3189 opacity: 0.55;
3190 color: currentColor;
3191 }
3192 .yatra-service-tooltip:hover {
3193 opacity: 1;
3194 }
3195 .yatra-service-tooltip svg {
3196 width: 14px;
3197 height: 14px;
3198 }
3199
3200 /* Services Total Row in Price Summary */
3201 .yatra-services-total-row {
3202 background: #f5f3ff;
3203 margin: 8px -16px;
3204 padding: 10px 16px !important;
3205 border-top: 1px dashed #c4b5fd;
3206 border-bottom: 1px dashed #c4b5fd;
3207 }
3208
3209 .yatra-services-total-row span:first-child {
3210 color: #5b21b6;
3211 }
3212
3213 .yatra-services-total-row span:last-child {
3214 color: #7c3aed;
3215 font-weight: 600;
3216 }
3217