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

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