PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.7
Yatra – Travel Booking & Tour Operator Software v3.0.7
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 3.0.7, at assets/css/booking.css

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