PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.5
Yatra – Travel Booking & Tour Operator Software v3.0.5
3.0.16 3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 2.0.1 All 84 releases
yatra / assets / css / booking.css

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

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