PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.16
Yatra – Travel Booking & Tour Operator Software v3.0.16
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
← All changes | assets/css/listing.css +334 -77 3.0.2.8 → 3.0.16 View file →
@@ -70,9 +70,9 @@
70 70 .yatra-rating-option input[type="checkbox"] {
71 71 margin: 0;
72 72 width: 16px;
73 73 height: 16px;
74 - accent-color: #3b82f6;
74 + accent-color: var(--yatra-primary, #3b82f6);
75 75 }
76 76
77 77 .yatra-stars-display {
78 78 display: flex;
@@ -186,8 +186,9 @@
186 186 background: #f8fafc;
187 187 border: 1px solid #e5e7eb;
188 188 border-radius: 12px;
189 189 padding: 10px 12px;
190 + justify-content: end;
190 191 }
191 192
192 193 .yatra-sort-control {
193 194 display: flex;
@@ -219,9 +220,9 @@
219 220 }
220 221
221 222 .yatra-sort-control select:focus {
222 223 outline: none;
223 - border-color: #3b82f6;
224 + border-color: var(--yatra-primary, #3b82f6);
224 225 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
225 226 }
226 227
227 228 /* Grid / list toggle: gray “track”, inactive = muted icon, active = white inset + blue ring (clear at a glance) */
@@ -257,14 +258,14 @@
257 258 }
258 259
259 260 .yatra-view-btn:focus-visible {
260 261 outline: none;
261 - box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px #3b82f6;
262 + box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px var(--yatra-primary, #3b82f6);
262 263 }
263 264
264 265 .yatra-view-btn.active {
265 266 background: #ffffff;
266 - color: #1d4ed8;
267 + color: var(--yatra-primary-darker, #1d4ed8);
267 268 box-shadow: 0 1px 3px rgba(15, 23, 42, 0.12), 0 0 0 1px #93c5fd;
268 269 }
269 270
270 271 .yatra-view-btn svg {
@@ -325,9 +326,8 @@
325 326 border-radius: 12px;
326 327 overflow: hidden;
327 328 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
328 329 transition: all 0.3s ease;
329 - cursor: pointer;
330 330 display: flex;
331 331 flex-direction: column;
332 332 height: 100%;
333 333 }
@@ -546,9 +546,9 @@
546 546 margin-left: 8px;
547 547 }
548 548
549 549 .yatra-view-details-btn {
550 - background: #2563eb;
550 + background: var(--yatra-primary-dark, #2563eb);
551 551 color: #ffffff;
552 552 padding: 10px 20px;
553 553 border-radius: 8px;
554 554 text-decoration: none;
@@ -556,9 +556,9 @@
556 556 transition: all 0.2s ease;
557 557 }
558 558
559 559 .yatra-view-details-btn:hover {
560 - background: #1d4ed8;
560 + background: var(--yatra-primary-darker, #1d4ed8);
561 561 transform: translateY(-1px);
562 562 }
563 563
564 564 /* Grid view specific styling */
@@ -728,26 +728,73 @@
728 728
729 729 /* Additional responsive styles */
730 730 @media (max-width: 768px) {
731 731 .yatra-results-controls {
732 + flex-direction: row;
733 + flex-wrap: wrap;
734 + align-items: center;
735 + justify-content: flex-end;
736 + gap: 10px 12px;
737 + }
738 +
739 + .yatra-sort-control {
740 + flex: 1 1 min(100%, 320px);
741 + min-width: 0;
742 + display: grid;
743 + grid-template-columns: auto minmax(0, 1fr);
744 + align-items: center;
745 + gap: 8px 12px;
746 + }
747 +
748 + .yatra-sort-control label {
749 + white-space: normal;
750 + line-height: 1.25;
751 + font-size: 13px;
752 + color: #475569;
753 + }
754 +
755 + .yatra-sort-control select {
756 + width: 100%;
757 + min-width: 0;
758 + flex: none;
759 + max-width: 100%;
760 + }
761 +
762 + .yatra-view-toggle {
763 + flex: 0 0 auto;
764 + margin-left: 0;
765 + align-self: center;
766 + }
767 +
768 + .yatra-destination-listing .yatra-results-controls .yatra-view-toggle,
769 + .yatra-taxonomy-page .yatra-results-controls .yatra-view-toggle {
770 + margin-left: 0;
771 + }
772 +}
773 +
774 +@media (max-width: 480px) {
775 + .yatra-results-controls {
732 776 flex-direction: column;
733 777 align-items: stretch;
734 - gap: 12px;
735 778 }
736 -
779 +
737 780 .yatra-sort-control {
738 - justify-content: space-between;
781 + grid-template-columns: 1fr;
782 + gap: 6px;
739 783 }
740 -
741 - .yatra-sort-control select {
742 - min-width: auto;
743 - flex: 1;
784 +
785 + .yatra-sort-control label {
786 + font-size: 12px;
744 787 }
788 +
789 + .yatra-view-toggle {
790 + align-self: flex-end;
791 + }
745 792 }
746 793
747 794 .yatra-sort-control select:focus {
748 795 outline: none;
749 - border-color: #3b82f6;
796 + border-color: var(--yatra-primary, #3b82f6);
750 797 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
751 798 }
752 799
753 800 /* Listing Layout */
@@ -790,9 +837,9 @@
790 837 display: inline-block;
791 838 width: 36px;
792 839 height: 36px;
793 840 border: 3px solid #e5e7eb;
794 - border-top-color: #3b82f6;
841 + border-top-color: var(--yatra-primary, #3b82f6);
795 842 border-radius: 50%;
796 843 animation: yatra-listing-spin 0.75s linear infinite;
797 844 margin-bottom: 12px;
798 845 }
@@ -887,9 +934,9 @@
887 934 }
888 935
889 936 .yatra-clear-filters {
890 937 font-size: 13px;
891 - color: #1d4ed8;
938 + color: var(--yatra-primary-darker, #1d4ed8);
892 939 background: #eff6ff;
893 940 border: 1px solid #bfdbfe;
894 941 border-radius: 8px;
895 942 cursor: pointer;
@@ -902,9 +949,9 @@
902 949 -webkit-appearance: none;
903 950 }
904 951
905 952 .yatra-clear-filters:hover {
906 - color: #1e40af;
953 + color: var(--yatra-primary-darker, #1e40af);
907 954 background: #dbeafe;
908 955 border-color: #93c5fd;
909 956 text-decoration: none;
910 957 }
@@ -909,11 +956,11 @@
909 956 text-decoration: none;
910 957 }
911 958
912 959 .yatra-filter-section {
913 - margin-bottom: 24px;
960 + margin-bottom: 14px;
914 961 border-bottom: 1px solid #f3f4f6;
915 - padding-bottom: 20px;
962 + padding-bottom: 14px;
916 963 /* visible: range slider thumbs must not clip at section edges */
917 964 overflow: visible;
918 965 width: 100%;
919 966 box-sizing: border-box;
@@ -932,11 +979,11 @@
932 979 cursor: pointer;
933 980 font-size: 15px;
934 981 font-weight: 600;
935 982 color: #111827;
936 - margin-bottom: 16px;
983 + margin-bottom: 10px;
937 984 user-select: none;
938 - padding: 4px 0;
985 + padding: 2px 0;
939 986 transition: color 0.2s;
940 987 }
941 988
942 989 .yatra-filter-actions {
@@ -988,13 +1035,13 @@
988 1035 transition: color 0.2s;
989 1036 }
990 1037
991 1038 .yatra-filter-title:hover .yatra-filter-icon {
992 - color: #3b82f6;
1039 + color: var(--yatra-primary, #3b82f6);
993 1040 }
994 1041
995 1042 .yatra-filter-title:hover {
996 - color: #3b82f6;
1043 + color: var(--yatra-primary, #3b82f6);
997 1044 }
998 1045
999 1046 .yatra-filter-arrow {
1000 1047 transition: transform 0.2s;
@@ -1003,9 +1050,9 @@
1003 1050 }
1004 1051
1005 1052 .yatra-filter-section.open .yatra-filter-arrow {
1006 1053 transform: rotate(180deg);
1007 - color: #3b82f6;
1054 + color: var(--yatra-primary, #3b82f6);
1008 1055 }
1009 1056
1010 1057 .yatra-filter-content {
1011 1058 display: block;
@@ -1126,12 +1173,12 @@
1126 1173 transition: all 0.3s ease;
1127 1174 }
1128 1175
1129 1176 .yatra-filter-section.open .yatra-filter-content {
1130 - animation: slideDown 0.3s ease;
1177 + animation: yatra-listing-filter-expand 0.3s ease;
1131 1178 }
1132 1179
1133 -@keyframes slideDown {
1180 +@keyframes yatra-listing-filter-expand {
1134 1181 from {
1135 1182 opacity: 0;
1136 1183 max-height: 0;
1137 1184 }
@@ -1209,9 +1256,9 @@
1209 1256 }
1210 1257
1211 1258 .yatra-price-inputs input:focus {
1212 1259 outline: none;
1213 - border-color: #3b82f6;
1260 + border-color: var(--yatra-primary, #3b82f6);
1214 1261 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
1215 1262 }
1216 1263
1217 1264 .yatra-price-inputs input::placeholder {
@@ -1261,9 +1308,9 @@
1261 1308 z-index: 1 !important;
1262 1309 height: 6px !important;
1263 1310 top: 50% !important;
1264 1311 transform: translateY(-50%) !important;
1265 - background: linear-gradient(90deg, #3b82f6 0%, #2563eb 100%) !important;
1312 + background: linear-gradient(90deg, var(--yatra-primary, #3b82f6) 0%, var(--yatra-primary-dark, #2563eb) 100%) !important;
1266 1313 border-radius: 3px !important;
1267 1314 box-shadow: 0 2px 6px rgba(59, 130, 246, 0.28) !important;
1268 1315 pointer-events: none !important;
1269 1316 }
@@ -1309,9 +1356,9 @@
1309 1356 width: 20px !important;
1310 1357 height: 20px !important;
1311 1358 border-radius: 50% !important;
1312 1359 background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%) !important;
1313 - border: 3px solid #3b82f6 !important;
1360 + border: 3px solid var(--yatra-primary, #3b82f6) !important;
1314 1361 cursor: grab !important;
1315 1362 pointer-events: all !important;
1316 1363 box-shadow: 0 3px 8px rgba(59, 130, 246, 0.3), 0 1px 3px rgba(0, 0, 0, 0.1) !important;
1317 1364 margin-top: -7px !important;
@@ -1336,9 +1383,9 @@
1336 1383 width: 20px !important;
1337 1384 height: 20px !important;
1338 1385 border-radius: 50% !important;
1339 1386 background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%) !important;
1340 - border: 3px solid #3b82f6 !important;
1387 + border: 3px solid var(--yatra-primary, #3b82f6) !important;
1341 1388 cursor: grab !important;
1342 1389 pointer-events: all !important;
1343 1390 box-shadow: 0 3px 8px rgba(59, 130, 246, 0.3), 0 1px 3px rgba(0, 0, 0, 0.1) !important;
1344 1391 }
@@ -1376,9 +1423,9 @@
1376 1423 padding: 6px 12px;
1377 1424 align-self: flex-start;
1378 1425 background: transparent;
1379 1426 border: none;
1380 - color: #3b82f6;
1427 + color: var(--yatra-primary, #3b82f6);
1381 1428 font-size: 13px;
1382 1429 font-weight: 500;
1383 1430 cursor: pointer;
1384 1431 border-radius: 6px;
@@ -1388,9 +1435,9 @@
1388 1435 }
1389 1436
1390 1437 .yatra-filter-show-more-toggle:hover {
1391 1438 background: rgba(59, 130, 246, 0.08);
1392 - color: #2563eb;
1439 + color: var(--yatra-primary-dark, #2563eb);
1393 1440 }
1394 1441
1395 1442 .yatra-filter-collapsible.is-expanded .yatra-filter-show-more-label {
1396 1443 display: none;
@@ -1399,24 +1446,8 @@
1399 1446 .yatra-filter-collapsible:not(.is-expanded) .yatra-filter-show-less-label {
1400 1447 display: none;
1401 1448 }
1402 1449
1403 -.yatra-checkbox-label {
1404 - display: flex;
1405 - align-items: center;
1406 - gap: 12px;
1407 - cursor: pointer;
1408 - font-size: 14px;
1409 - color: #374151;
1410 - transition: all 0.2s ease;
1411 - padding: 8px 12px;
1412 - border-radius: 8px;
1413 - margin: -4px -12px;
1414 - width: calc(100% + 24px);
1415 - box-sizing: border-box;
1416 - word-wrap: break-word;
1417 - overflow: hidden;
1418 -}
1419 1450
1420 1451 .yatra-checkbox-label:hover {
1421 1452 background: rgba(59, 130, 246, 0.05);
1422 1453 color: #1e293b;
@@ -1425,9 +1456,9 @@
1425 1456 .yatra-checkbox-label input[type="checkbox"] {
1426 1457 width: 16px;
1427 1458 height: 16px;
1428 1459 cursor: pointer;
1429 - accent-color: #3b82f6;
1460 + accent-color: var(--yatra-primary, #3b82f6);
1430 1461 margin: 0;
1431 1462 flex-shrink: 0;
1432 1463 }
1433 1464
@@ -1463,9 +1494,8 @@
1463 1494 border-radius: 12px;
1464 1495 overflow: hidden;
1465 1496 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1466 1497 transition: transform 0.2s, box-shadow 0.2s;
1467 - cursor: pointer;
1468 1498 display: flex;
1469 1499 flex-direction: column;
1470 1500 height: 100%;
1471 1501 }
@@ -1595,10 +1625,10 @@
1595 1625 .yatra-favorite-btn:hover {
1596 1626 background: #ffffff !important;
1597 1627 color: #ef4444 !important;
1598 1628 transform: scale(1.1) !important;
1599 - border-color: #ef4444 !important;
1600 - box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3) !important;
1629 + border-color: rgba(0, 0, 0, 0.1) !important;
1630 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
1601 1631 }
1602 1632
1603 1633 .yatra-favorite-btn svg {
1604 1634 width: 20px !important;
@@ -1606,28 +1636,51 @@
1606 1636 stroke-width: 2 !important;
1607 1637 display: block !important;
1608 1638 }
1609 1639
1640 +/* Saved state: keep the button neutral (no red ring on the button itself);
1641 + * only the heart icon glyph turns red and gets filled.
1642 + *
1643 + * stroke is set to NONE (and stroke-width to 0) when filled — otherwise the
1644 + * 2px outward stroke makes the filled heart look ~2px chunkier than the
1645 + * outlined heart on neighboring cards, which reads as "different icon". */
1610 1646 .yatra-favorite-btn.saved,
1611 1647 .yatra-favorite-btn.is-saved {
1612 1648 background: #ffffff !important;
1613 1649 color: #ef4444 !important;
1614 - border-color: #ef4444 !important;
1650 + border-color: rgba(0, 0, 0, 0.1) !important;
1615 1651 }
1616 1652
1617 1653 .yatra-favorite-btn.saved svg,
1618 1654 .yatra-favorite-btn.is-saved svg {
1619 1655 fill: #ef4444 !important;
1620 - stroke: #ef4444 !important;
1656 + stroke: none !important;
1657 + stroke-width: 0 !important;
1621 1658 }
1622 1659
1660 +.yatra-favorite-btn.saved svg path,
1661 +.yatra-favorite-btn.is-saved svg path {
1662 + fill: #ef4444 !important;
1663 + stroke: none !important;
1664 + stroke-width: 0 !important;
1665 +}
1666 +
1623 1667 .yatra-favorite-btn.saved:hover,
1624 1668 .yatra-favorite-btn.is-saved:hover {
1625 - background: #fee2e2 !important;
1669 + background: #ffffff !important;
1626 1670 color: #dc2626 !important;
1627 - border-color: #dc2626 !important;
1671 + border-color: rgba(0, 0, 0, 0.1) !important;
1628 1672 }
1629 1673
1674 +.yatra-favorite-btn.saved:hover svg,
1675 +.yatra-favorite-btn.is-saved:hover svg,
1676 +.yatra-favorite-btn.saved:hover svg path,
1677 +.yatra-favorite-btn.is-saved:hover svg path {
1678 + fill: #dc2626 !important;
1679 + stroke: none !important;
1680 + stroke-width: 0 !important;
1681 +}
1682 +
1630 1683 .yatra-trip-content {
1631 1684 padding: 20px;
1632 1685 display: flex;
1633 1686 flex-direction: column;
@@ -1670,9 +1723,9 @@
1670 1723
1671 1724 .yatra-highlight-badge {
1672 1725 padding: 4px 10px;
1673 1726 background: #eff6ff;
1674 - color: #1e40af;
1727 + color: var(--yatra-primary-darker, #1e40af);
1675 1728 border-radius: 4px;
1676 1729 font-size: 12px;
1677 1730 font-weight: 500;
1678 1731 text-decoration: none;
@@ -1684,9 +1737,9 @@
1684 1737 }
1685 1738
1686 1739 a.yatra-highlight-link:hover {
1687 1740 background: #dbeafe;
1688 - color: #1d4ed8;
1741 + color: var(--yatra-primary-darker, #1d4ed8);
1689 1742 text-decoration: none;
1690 1743 }
1691 1744
1692 1745
@@ -1736,9 +1789,9 @@
1736 1789
1737 1790 .yatra-current-price {
1738 1791 font-size: 22px;
1739 1792 font-weight: 700;
1740 - color: #3b82f6;
1793 + color: var(--yatra-primary, #3b82f6);
1741 1794 line-height: 1;
1742 1795 }
1743 1796
1744 1797 .yatra-price-note {
@@ -1907,9 +1960,9 @@
1907 1960 transition: color 0.2s ease;
1908 1961 }
1909 1962
1910 1963 .yatra-trip-title-link:hover {
1911 - color: #2563eb;
1964 + color: var(--yatra-primary-dark, #2563eb);
1912 1965 text-decoration: none;
1913 1966 }
1914 1967
1915 1968 .yatra-trip-card-meta {
@@ -1938,9 +1991,9 @@
1938 1991 border-radius: 6px;
1939 1992 font-size: 0.75rem;
1940 1993 font-weight: 500;
1941 1994 background: #eff6ff;
1942 - color: #1d4ed8;
1995 + color: var(--yatra-primary-darker, #1d4ed8);
1943 1996 text-decoration: none;
1944 1997 border: 1px solid #bfdbfe;
1945 1998 transition: background-color 0.2s ease, color 0.2s ease;
1946 1999 }
@@ -1946,9 +1999,9 @@
1946 1999 }
1947 2000
1948 2001 .yatra-trip-primary-category-chip:hover {
1949 2002 background: #dbeafe;
1950 - color: #1e40af;
2003 + color: var(--yatra-primary-darker, #1e40af);
1951 2004 }
1952 2005
1953 2006 .yatra-trip-primary-category-chip--text {
1954 2007 border-style: dashed;
@@ -1977,9 +2030,9 @@
1977 2030 }
1978 2031
1979 2032 .yatra-info-badge.duration {
1980 2033 background: #dbeafe;
1981 - color: #1d4ed8;
2034 + color: var(--yatra-primary-darker, #1d4ed8);
1982 2035 }
1983 2036
1984 2037 .yatra-info-badge svg {
1985 2038 width: 12px;
@@ -2049,15 +2102,15 @@
2049 2102 }
2050 2103
2051 2104 .yatra-tag.activity-tag {
2052 2105 background: #eff6ff;
2053 - color: #1d4ed8;
2106 + color: var(--yatra-primary-darker, #1d4ed8);
2054 2107 border-color: #bfdbfe;
2055 2108 }
2056 2109
2057 2110 .yatra-tag.activity-tag:hover {
2058 2111 background: #dbeafe;
2059 - color: #1e40af;
2112 + color: var(--yatra-primary-darker, #1e40af);
2060 2113 text-decoration: none;
2061 2114 box-shadow: 0 2px 8px rgba(29, 78, 216, 0.14);
2062 2115 }
2063 2116
@@ -2089,8 +2142,19 @@
2089 2142 width: 14px;
2090 2143 height: 14px;
2091 2144 }
2092 2145
2146 +.yatra-difficulty-overlay i.difficulty-icon.fa-solid,
2147 +.yatra-difficulty-overlay i.difficulty-icon.fa-regular {
2148 + width: auto;
2149 + height: auto;
2150 + font-size: 14px;
2151 + line-height: 1;
2152 + display: inline-flex;
2153 + align-items: center;
2154 + justify-content: center;
2155 +}
2156 +
2093 2157 /* Rating Section - consolidated with main rule above */
2094 2158
2095 2159 .yatra-rating-stars {
2096 2160 display: flex;
@@ -2119,9 +2183,9 @@
2119 2183
2120 2184 .yatra-trip-price {
2121 2185 font-size: 1.125rem;
2122 2186 font-weight: 700;
2123 - color: #2563eb;
2187 + color: var(--yatra-primary-dark, #2563eb);
2124 2188 display: flex;
2125 2189 align-items: baseline;
2126 2190 gap: 8px;
2127 2191 flex-wrap: wrap;
@@ -2194,19 +2258,25 @@
2194 2258 color: #374151;
2195 2259 }
2196 2260
2197 2261 .yatra-pagination-btn:hover:not(:disabled) {
2198 - border-color: #3b82f6;
2199 - color: #3b82f6;
2262 + border-color: var(--yatra-primary, #3b82f6);
2263 + color: var(--yatra-primary, #3b82f6);
2200 2264 }
2201 2265
2202 2266 .yatra-pagination-btn.active {
2203 - border-color: #3b82f6;
2204 - background: #3b82f6;
2267 + border-color: var(--yatra-primary, #3b82f6);
2268 + background: var(--yatra-primary, #3b82f6);
2205 2269 color: #fff;
2206 2270 font-weight: 600;
2271 + box-shadow: 0 2px 8px color-mix(in srgb, var(--yatra-primary, #3b82f6) 32%, transparent);
2207 2272 }
2208 2273
2274 +.yatra-pagination-btn.active:hover:not(:disabled) {
2275 + background: var(--yatra-primary-dark, #2563eb);
2276 + border-color: var(--yatra-primary-dark, #2563eb);
2277 +}
2278 +
2209 2279 .yatra-pagination-btn:disabled {
2210 2280 opacity: 0.5;
2211 2281 cursor: not-allowed;
2212 2282 }
@@ -2277,9 +2347,9 @@
2277 2347
2278 2348 .yatra-destination-listing .yatra-results-controls .yatra-view-btn.active,
2279 2349 .yatra-taxonomy-page .yatra-results-controls .yatra-view-btn.active {
2280 2350 background: #ffffff !important;
2281 - color: #1d4ed8 !important;
2351 + color: var(--yatra-primary-darker, #1d4ed8) !important;
2282 2352 box-shadow: 0 1px 3px rgba(15, 23, 42, 0.12), 0 0 0 1px #93c5fd !important;
2283 2353 }
2284 2354
2285 2355 .yatra-destination-listing .yatra-results-controls .yatra-view-btn:not(.active),
@@ -2323,9 +2393,8 @@
2323 2393 }
2324 2394
2325 2395 .yatra-results-controls {
2326 2396 width: 100%;
2327 - justify-content: space-between;
2328 2397 }
2329 2398
2330 2399 .yatra-listing-layout {
2331 2400 display: grid;
@@ -3029,9 +3098,9 @@
3029 3098 height: 16px;
3030 3099 }
3031 3100
3032 3101 .yatra-stat-icon.duration {
3033 - background: linear-gradient(135deg, #3b82f6, #2563eb);
3102 + background: linear-gradient(135deg, var(--yatra-primary, #3b82f6), var(--yatra-primary-dark, #2563eb));
3034 3103 color: white;
3035 3104 }
3036 3105
3037 3106 .yatra-stat-icon.difficulty {
@@ -3162,9 +3231,8 @@
3162 3231 z-index: 3;
3163 3232 }
3164 3233
3165 3234 .yatra-trip-title {
3166 - color: #000000 !important;
3167 3235 font-weight: 700;
3168 3236 font-size: 20px;
3169 3237 line-height: 1.3;
3170 3238 margin-bottom: 12px;
@@ -3171,9 +3239,8 @@
3171 3239 letter-spacing: -0.02em;
3172 3240 }
3173 3241
3174 3242 .yatra-trip-title-link {
3175 - color: #000000 !important;
3176 3243 text-decoration: none;
3177 3244 transition: all 0.2s ease;
3178 3245 display: block;
3179 3246 }
@@ -3178,9 +3245,8 @@
3178 3245 display: block;
3179 3246 }
3180 3247
3181 3248 .yatra-trip-title-link:hover {
3182 - color: #000000 !important;
3183 3249 transform: translateY(-1px);
3184 3250 }
3185 3251
3186 3252 .yatra-trip-short-description {
@@ -3426,4 +3492,195 @@
3426 3492 font-weight: 400;
3427 3493 line-height: 1.5;
3428 3494 }
3429 3495
3496 +
3497 +/* ============================================================
3498 + Trip listing — Compact card layout
3499 + Settings → Frontend Theme → "Listing card layout".
3500 + Opt-in; the default "standard" card is left untouched.
3501 + .yatra-listing-compact → compact on mobile (both compact modes)
3502 + .yatra-listing-compact--all → compact on desktop too (compact_all)
3503 + The class is placed on the LISTING CONTAINER (.yatra-listing-page for the
3504 + archive/taxonomy, .yatra-tour-shortcode / .yatra-discount-shortcode for the
3505 + shortcode + Gutenberg block), NOT on <body>. That lets each listing resolve
3506 + its own layout: the site-wide Design setting is the default, and an
3507 + individual shortcode/block can override it (card_layout / cardLayout attr).
3508 + The compact card intentionally shows only: image, title, price,
3509 + and the "View Details" button — everything else is hidden for density.
3510 + ============================================================ */
3511 +
3512 +/* --- Compact on mobile (<=768px): compact_mobile AND compact_all --- */
3513 +@media (max-width: 768px) {
3514 + /* Force a single column so each compact card becomes a full-width
3515 + horizontal row — covers every trip-card grid wrapper:
3516 + .yatra-trip-grid → archive / taxonomy
3517 + .yatra-tour-grid → [yatra_trip]/[yatra_tour] shortcode + Tour block
3518 + .yatra-discount-grid → discount-and-deals shortcode */
3519 + .yatra-listing-compact .yatra-trip-grid,
3520 + .yatra-listing-compact .yatra-tour-grid,
3521 + .yatra-listing-compact .yatra-discount-grid {
3522 + grid-template-columns: 1fr !important;
3523 + gap: 12px;
3524 + }
3525 + .yatra-listing-compact .yatra-trip-card {
3526 + display: grid !important;
3527 + grid-template-columns: 116px minmax(0, 1fr) !important;
3528 + align-items: stretch;
3529 + gap: 0;
3530 + overflow: hidden;
3531 + /* Neutralise the Grid/List view toggle so Compact stays compact whether
3532 + the visitor is in grid OR list view (list-view forces min-height:240). */
3533 + min-height: 0 !important;
3534 + max-height: none !important;
3535 + flex-direction: initial !important;
3536 + }
3537 + .yatra-listing-compact .yatra-trip-card-image {
3538 + height: 100% !important;
3539 + min-height: 118px !important;
3540 + width: auto !important;
3541 + min-width: 0 !important;
3542 + aspect-ratio: auto !important;
3543 + border-radius: 0;
3544 + align-self: stretch;
3545 + }
3546 + /* Keep the image overlays readable on the small thumbnail. */
3547 + .yatra-listing-compact .yatra-discount-badge {
3548 + font-size: 0.65rem;
3549 + padding: 2px 6px;
3550 + }
3551 + .yatra-listing-compact .yatra-favorite-btn {
3552 + width: 26px;
3553 + height: 26px;
3554 + }
3555 + .yatra-listing-compact .yatra-trip-card-image img {
3556 + width: 100% !important;
3557 + height: 100% !important;
3558 + object-fit: cover;
3559 + }
3560 + .yatra-listing-compact .yatra-trip-content {
3561 + padding: 10px 12px !important;
3562 + display: flex;
3563 + flex-direction: column;
3564 + gap: 6px;
3565 + min-width: 0;
3566 + }
3567 + .yatra-listing-compact .yatra-trip-title {
3568 + font-size: 0.95rem;
3569 + line-height: 1.3;
3570 + margin: 0;
3571 + display: -webkit-box;
3572 + -webkit-line-clamp: 2;
3573 + -webkit-box-orient: vertical;
3574 + overflow: hidden;
3575 + }
3576 + .yatra-listing-compact .yatra-trip-destinations,
3577 + .yatra-listing-compact .yatra-trip-card-meta,
3578 + .yatra-listing-compact .yatra-trip-short-description,
3579 + .yatra-listing-compact .yatra-trip-stats-row,
3580 + .yatra-listing-compact .yatra-trip-traveler-types,
3581 + .yatra-listing-compact .yatra-trip-activities,
3582 + .yatra-listing-compact .yatra-trip-categories-compact,
3583 + .yatra-listing-compact .yatra-difficulty-overlay,
3584 + .yatra-listing-compact .yatra-group-discount-badge,
3585 + .yatra-listing-compact .yatra-trip-listing-dp-urgency {
3586 + display: none !important;
3587 + }
3588 + .yatra-listing-compact .yatra-trip-footer {
3589 + margin-top: auto;
3590 + display: flex;
3591 + /* The base mobile footer is flex-direction:column — force a single row
3592 + so price and the button sit side by side in the compact card. */
3593 + flex-direction: row !important;
3594 + flex-wrap: nowrap;
3595 + align-items: center;
3596 + justify-content: space-between;
3597 + align-self: stretch;
3598 + gap: 8px;
3599 + padding: 0 !important;
3600 + border: 0 !important;
3601 + }
3602 + .yatra-listing-compact .yatra-trip-card-price { margin: 0 !important; width: auto !important; align-items: flex-start; }
3603 + .yatra-listing-compact .yatra-card-view-btn { flex: 0 0 auto; }
3604 + .yatra-listing-compact .yatra-trip-price { font-size: 1rem; }
3605 + .yatra-listing-compact .yatra-card-view-btn {
3606 + padding: 6px 10px !important;
3607 + font-size: 0.8rem;
3608 + white-space: nowrap;
3609 + }
3610 +}
3611 +
3612 +/* --- Compact on desktop too (>=769px): compact_all only.
3613 + Respects the visitor's Grid/List view toggle:
3614 + • Grid view → the multi-column grid is kept, cards are just shorter
3615 + • List view → compact horizontal rows (list-view supplies the row)
3616 + The density trimming (hiding the extra blocks) applies to both. --- */
3617 +@media (min-width: 769px) {
3618 + /* Density — identical in grid and list. */
3619 + .yatra-listing-compact--all .yatra-trip-content {
3620 + gap: 8px;
3621 + min-width: 0;
3622 + padding: 14px 16px !important;
3623 + }
3624 + .yatra-listing-compact--all .yatra-trip-title {
3625 + font-size: 1.05rem;
3626 + line-height: 1.3;
3627 + margin: 0;
3628 + display: -webkit-box;
3629 + -webkit-line-clamp: 2;
3630 + -webkit-box-orient: vertical;
3631 + overflow: hidden;
3632 + }
3633 + .yatra-listing-compact--all .yatra-trip-destinations,
3634 + .yatra-listing-compact--all .yatra-trip-card-meta,
3635 + .yatra-listing-compact--all .yatra-trip-short-description,
3636 + .yatra-listing-compact--all .yatra-trip-stats-row,
3637 + .yatra-listing-compact--all .yatra-trip-traveler-types,
3638 + .yatra-listing-compact--all .yatra-trip-activities,
3639 + .yatra-listing-compact--all .yatra-trip-categories-compact,
3640 + .yatra-listing-compact--all .yatra-difficulty-overlay,
3641 + .yatra-listing-compact--all .yatra-group-discount-badge,
3642 + .yatra-listing-compact--all .yatra-trip-listing-dp-urgency {
3643 + display: none !important;
3644 + }
3645 + .yatra-listing-compact--all .yatra-trip-footer {
3646 + margin-top: auto;
3647 + display: flex;
3648 + flex-direction: row !important;
3649 + flex-wrap: nowrap;
3650 + align-items: center;
3651 + justify-content: space-between;
3652 + gap: 12px;
3653 + padding-top: 4px !important;
3654 + border: 0 !important;
3655 + }
3656 + .yatra-listing-compact--all .yatra-trip-card-price { margin: 0 !important; width: auto !important; }
3657 + .yatra-listing-compact--all .yatra-card-view-btn { flex: 0 0 auto; white-space: nowrap; }
3658 +
3659 + /* GRID view (DEFAULT) → a shorter vertical card. Grid-agnostic: applies to
3660 + every wrapper (archive grid, shortcode/block .yatra-tour-grid, and
3661 + .yatra-discount-grid) since none of them except the archive list-view
3662 + needs the horizontal row. */
3663 + .yatra-listing-compact--all .yatra-trip-card-image {
3664 + height: 160px !important;
3665 + aspect-ratio: auto !important;
3666 + }
3667 +
3668 + /* LIST view (archive only) → compact horizontal row overrides the vertical
3669 + default. The Grid/List toggle exists only on .yatra-trip-grid, so the
3670 + shortcode/block/discount grids always keep the compact vertical card. */
3671 + .yatra-listing-compact--all .yatra-trip-grid.list-view .yatra-trip-card {
3672 + min-height: 0 !important;
3673 + max-height: none !important;
3674 + }
3675 + .yatra-listing-compact--all .yatra-trip-grid.list-view .yatra-trip-card-image {
3676 + height: 160px !important;
3677 + min-height: 0 !important;
3678 + max-height: none !important;
3679 + aspect-ratio: auto !important;
3680 + align-self: stretch;
3681 + }
3682 + .yatra-listing-compact--all .yatra-trip-grid.list-view .yatra-trip-content {
3683 + padding: 16px 18px !important;
3684 + justify-content: flex-start;
3685 + }
3686 +}