:root {
--primary-color: #006d75;
--primary-hover: #005a60;
--primary-light: #e0f7fa;
--dark-overlay: rgba(0, 109, 117, 0.7);
--light-overlay: rgba(0, 109, 117, 0.3);
--glass-bg: rgba(255, 255, 255, 0.15);
--glass-border: rgba(255, 255, 255, 0.2);
--text-light: #e0f7fa;
--text-lighter: #cfeff3;
--focus-ring: 0 0 0 3px rgba(0, 109, 117, 0.5);
--error-color: #ff6b6b;
--button-active-color: #005a60;
--dropdown-hover: rgba(255, 255, 255, 0.25);
--shadow-light: 0 10px 25px rgba(0, 0, 0, 0.1);
--shadow-strong: 0 10px 30px rgba(0, 0, 0, 0.25);
--calendar-bg: #006d75;
--calendar-border: rgba(255, 255, 255, 0.15);
--calendar-today: #005a60;
--calendar-selected: #20b2aa;
--calendar-text: #ffffff;
--calendar-disabled: rgba(255, 255, 255, 0.3);
--calendar-hover: rgba(32, 178, 170, 0.2);
--calendar-header: #005a60;
--dropdown-bg: #006d75;
--dropdown-item-bg: #006d75;
--dropdown-item-hover: #005a60;
--dropdown-item-active: #20b2aa;
--dropdown-header-bg: #005a60;
--dropdown-text: #ffffff;
--dropdown-secondary-text: #20b2aa;
}
.hero-section {
position: relative;
height: auto;
min-height: 0;
overflow: visible;
color: white;
text-align: center;
}
.hero-section .hero-bg {
overflow: hidden;
clip-path: inset(0);
}
.hero-section video {
position: absolute;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
transform: translate(-50%, -50%);
object-fit: cover;
z-index: 0;
background-color: #002a3b;
}
/* Single continuous background on <body> so it extends across <main> AND the
   footer (which sits outside main). main + footer become transparent so the
   one image flows seamlessly behind everything. Only applies to homepage
   via the `home-page` body class. */
body.home-page {
    background-image: url('/assets/images/bandomsitas1.png');
    background-size: cover;
    background-position: center top;
    background-repeat: no-repeat;
    background-color: #1a5f6f;
    background-attachment: scroll;
}
body.home-page .home-main {
    background: transparent !important;
}
body.home-page .home-main .hero-section { background: transparent !important; }
body.home-page .sipsen-ocean-footer,
body.home-page .sipsen-footer-bottom {
    background-color: transparent !important;
    background-image: none !important;
}
.hero-bg {
display: none !important;
}
.hero-overlay {
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgba(0, 25, 35, 0.20) 0%, rgba(0, 25, 35, 0.30) 60%, rgba(0, 25, 35, 0.45) 100%);
z-index: 1;
}
.hero-content {
position: relative;
z-index: 2;
max-width: 900px;
margin: 0 auto;
padding: 4rem 1rem 2.5rem;
}
.hero-title {
font-size: clamp(1.6rem, 3.6vw, 2.6rem);
font-weight: 700;
margin-bottom: 2.25rem;
color: white !important;
text-shadow: 0 2px 14px rgba(0, 25, 35, 0.55), 0 1px 3px rgba(0, 25, 35, 0.4);
letter-spacing: -0.5px;
}
.hero-title span {
color: #b6e8e8 !important;
text-shadow: 0 2px 14px rgba(0, 25, 35, 0.55), 0 1px 3px rgba(0, 25, 35, 0.4);
}
.hero-subtitle {
font-size: clamp(1rem, 3vw, 1.25rem);
font-weight: 400;
color: white;
text-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);
margin-bottom: 1rem;
}
.search-widget {
max-width: 900px;
margin: 4rem auto 0;
background: var(--glass-bg);
border-radius: 1rem;
padding: 2rem;
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
border: 1px solid var(--glass-border);
box-shadow: 0 8px 32px rgba(0, 40, 80, 0.2);
}
@supports not ((-webkit-backdrop-filter: blur(12px)) or (backdrop-filter: blur(12px))) {
.search-widget {
background: rgba(0, 58, 81, 0.85);
}
}
.trip-tabs {
display: flex;
gap: 0.5rem;
margin-bottom: 1.5rem;
border-radius: 1rem;
padding: 0.5rem;
flex-wrap: wrap;
justify-content: center;
}
.trip-tabs input[type="radio"] {
display: none;
}
.trip-tabs label {
flex: 1;
min-width: 150px;
text-align: center;
padding: 0.75rem 1rem;
border-radius: 0.5rem;
cursor: pointer;
transition: all 0.3s ease;
font-weight: 500;
color: var(--text-lighter);
background: rgba(255, 255, 255, 0.1);
border: 1px solid var(--glass-border);
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
}
.trip-tabs input[type="radio"]:checked + label {
background: var(--calendar-selected);
color: white;
border-color: var(--calendar-selected);
box-shadow: 0 4px 12px rgba(32, 178, 170, 0.3);
}
.trip-tabs label:hover {
background: rgba(255, 255, 255, 0.15);
border-color: rgba(255, 255, 255, 0.3);
}
.search-fields {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 1rem;
margin-bottom: 1.5rem;
}
.field-group {
position: relative;
width: 100%;
}
.field-group .icon {
position: absolute !important;
left: 1rem !important;
top: 50% !important;
transform: translateY(-50%) !important;
color: var(--ocean-accent) !important;
z-index: 2 !important;
pointer-events: none !important;
font-size: 1rem !important;
display: block !important;
width: 16px !important;
height: 16px !important;
line-height: 16px !important;
text-align: center !important;
}
.search-fields input,
.dropdown-group {
width: 100%;
height: 54px;
font-size: 1rem;
border: 1px solid var(--glass-border);
border-radius: 0.5rem;
background: rgba(255, 255, 255, 0.1);
color: white;
padding: 0 1rem 0 2.8rem !important;
display: flex;
align-items: center;
transition: all 0.3s ease;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.search-fields input:focus,
.search-fields input:hover,
.dropdown-group:hover,
.dropdown-group:focus-within {
background: rgba(255, 255, 255, 0.2);
border-color: rgba(255, 255, 255, 0.4);
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1);
}
.search-fields input::placeholder {
color: var(--text-lighter);
opacity: 0.8;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
select,
textarea,
input[type="text"],
input[type="date"] {
font-size: 16px !important;
}
}
.dropdown-group {
position: relative;
cursor: pointer;
padding-left: 2.8rem;
}
.dropdown-header {
width: 100%;
font-size: 0.9rem;
font-weight: 400;
text-align: left;
color: var(--text-lighter);
}
.location-autocomplete {
position: absolute;
top: calc(100% + 5px);
left: 0;
width: 100%;
background: var(--dropdown-bg);
border: 1px solid var(--calendar-border);
border-radius: 0.5rem;
padding: 0;
z-index: 999;
box-shadow: var(--shadow-strong);
animation: dropdownOpen 0.2s ease forwards;
overflow: hidden;
display: none;
max-height: 400px;
overflow-y: auto;
}
.location-autocomplete.active {
display: flex;
flex-direction: column;
}
@keyframes dropdownOpen {
from {
opacity: 0;
transform: translateY(-5px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.location-group {
margin-bottom: 0;
}
.location-group:not(:last-child) {
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.location-group-title {
padding: 0.75rem 1rem;
background-color: var(--dropdown-header-bg);
font-size: 0.9rem;
font-weight: 500;
color: white;
margin-bottom: 0;
position: sticky;
top: 0;
z-index: 10;
}
.location-item {
display: flex;
align-items: center;
padding: 0.75rem 1rem;
cursor: pointer;
transition: background 0.2s;
font-size: 0.9rem;
-webkit-tap-highlight-color: transparent;
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
color: white;
}
.location-item:last-child {
border-bottom: none;
}
.location-item:hover {
background: var(--dropdown-item-hover);
}
.location-item:active {
background: var(--primary-hover);
}
.location-item i {
margin-right: 0.75rem;
font-size: 0.85rem;
color: var(--dropdown-secondary-text);
width: 16px;
text-align: center;
}
.location-main {
font-weight: 500;
color: white;
}
.location-sub {
font-size: 0.85rem;
opacity: 0.8;
color: white;
margin-left: 0.5rem;
}
.location-type {
font-size: 0.75rem;
padding: 0.2rem 0.5rem;
border-radius: 1rem;
margin-left: auto;
background: rgba(255, 255, 255, 0.1);
white-space: nowrap;
}
.modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
z-index: 1000;
display: none;
}
.modal-overlay.active {
display: block;
animation: fadeIn 0.2s;
}
.passenger-panel {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 90%;
max-width: 800px;
max-height: 90vh;
background: var(--dropdown-bg);
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.15);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
z-index: 1050;
display: none;
overflow: hidden;
color: white;
}
.passenger-panel.active {
display: flex;
flex-direction: column;
animation: modalFadeIn 0.3s;
}
@keyframes modalFadeIn {
from {
opacity: 0;
transform: translate(-50%, -48%);
}
to {
opacity: 1;
transform: translate(-50%, -50%);
}
}
.panel-header {
padding: 15px 20px;
background: var(--dropdown-header-bg);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
position: sticky;
top: 0;
z-index: 5;
}
.panel-title {
font-weight: 600;
font-size: 16px;
color: white;
}
.panel-close {
background: none;
border: none;
color: white;
cursor: pointer;
font-size: 18px;
opacity: 0.7;
transition: opacity 0.2s;
padding: 5px;
border-radius: 4px;
}
.panel-close:hover {
opacity: 1;
}
.panel-content {
padding: 20px;
overflow-y: auto;
flex: 1;
-webkit-overflow-scrolling: touch;
}
.passenger-types {
display: flex;
flex-direction: column;
gap: 15px;
margin-bottom: 20px;
}
.passenger-type {
background: rgba(255, 255, 255, 0.1);
border-radius: 12px;
padding: 20px;
border: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
transition: all 0.2s ease;
}
.passenger-type:hover {
background: rgba(255, 255, 255, 0.15);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.passenger-type-info {
display: flex;
flex-direction: column;
gap: 4px;
}
.passenger-type-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 0;
}
.passenger-type-icon {
color: var(--calendar-selected);
font-size: 20px;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
}
.passenger-type-title {
font-weight: 600;
color: white;
font-size: 16px;
}
.passenger-type-desc {
font-size: 14px;
opacity: 0.8;
margin-bottom: 0;
color: white;
margin-left: 36px;
}
.counter {
display: flex;
justify-content: center;
align-items: center;
background: transparent;
border-radius: 0;
padding: 0;
gap: 20px;
min-width: 120px;
}
.counter-btn {
width: 32px;
height: 32px;
border-radius: 6px;
background: transparent !important;
border: 1.5px solid rgba(255, 255, 255, 0.4);
color: white;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s ease;
font-size: 14px;
font-weight: 500;
outline: none;
}
.counter-btn:hover:not(:disabled) {
background: rgba(255, 255, 255, 0.1) !important;
border-color: rgba(255, 255, 255, 0.6);
transform: scale(1.05);
}
.counter-btn:active:not(:disabled),
.counter-btn:focus:not(:disabled) {
background: transparent !important;
border: 1.5px solid rgba(255, 255, 255, 0.4) !important;
outline: none !important;
box-shadow: none !important;
}
.counter-btn:disabled {
background: transparent !important;
border-color: rgba(255, 255, 255, 0.2);
cursor: not-allowed;
opacity: 0.5;
}
.counter-value {
font-size: 18px;
font-weight: 600;
color: white;
min-width: 28px;
text-align: center;
}
.class-selection {
margin-top: 20px;
}
.class-title {
font-weight: 500;
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 8px;
color: white;
}
.class-title i {
color: var(--calendar-selected);
}
.class-options {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12px;
}
.class-option {
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 8px;
padding: 15px;
text-align: center;
cursor: pointer;
transition: all 0.2s ease;
position: relative;
}
.class-option:hover {
background: rgba(255, 255, 255, 0.15);
border-color: rgba(255, 255, 255, 0.2);
transform: translateY(-2px);
}
.class-option.selected {
background: rgba(32, 178, 170, 0.2);
border-color: var(--calendar-selected);
}
.class-option input {
position: absolute;
opacity: 0;
}
.class-icon {
font-size: 20px;
color: var(--calendar-selected);
margin-bottom: 8px;
}
.class-name {
font-weight: 500;
margin-bottom: 5px;
color: white;
}
.class-desc {
font-size: 0.8rem;
opacity: 0.7;
color: white;
}
.confirm-button {
width: 100%;
padding: 15px;
margin-top: 20px;
background: var(--calendar-selected);
color: white;
border: none;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.confirm-button:hover {
background: var(--primary-hover);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(32, 178, 170, 0.3);
}
.custom-calendar-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
z-index: 1040;
display: none;
opacity: 0;
transition: opacity 0.2s ease;
}
.custom-calendar-overlay.active {
display: block;
opacity: 1;
}
.custom-calendar {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0.95);
background: var(--calendar-bg);
border-radius: 16px;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
z-index: 1050;
display: none;
opacity: 0;
transition: all 0.3s ease;
max-width: 800px;
width: 90%;
max-height: 90vh;
overflow: hidden;
}
.custom-calendar.active {
display: flex;
flex-direction: column;
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
.calendar-header {
background: var(--calendar-header);
padding: 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
}
.calendar-title {
font-size: 18px;
font-weight: 600;
color: white !important;
}
.calendar-close {
background: none;
border: none;
color: white;
font-size: 24px;
cursor: pointer;
padding: 5px;
opacity: 0.7;
transition: opacity 0.2s;
border-radius: 4px;
}
.calendar-close:hover {
opacity: 1;
}
.calendar-body {
padding: 20px;
overflow-y: auto;
flex: 1;
}
.calendar-nav {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
padding: 0 10px;
}
.calendar-nav-btn {
width: 36px;
height: 36px;
border-radius: 8px;
background: rgba(255, 255, 255, 0.15);
border: 1px solid rgba(255, 255, 255, 0.2);
color: white;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
font-size: 16px;
}
.calendar-nav-btn:hover:not(:disabled) {
background: var(--calendar-selected);
transform: scale(1.1);
box-shadow: 0 4px 12px rgba(32, 178, 170, 0.3);
border-color: var(--calendar-selected);
}
.calendar-nav-btn:active:not(:disabled) {
background: rgba(255, 255, 255, 0.15) !important;
border: 1px solid rgba(255, 255, 255, 0.2) !important;
transform: scale(0.95);
}
.calendar-nav-btn:focus:not(:disabled) {
background: rgba(255, 255, 255, 0.15) !important;
border: 1px solid rgba(255, 255, 255, 0.2) !important;
outline: none !important;
}
.calendar-nav-btn:disabled {
opacity: 0.3;
cursor: not-allowed;
background: rgba(255, 255, 255, 0.05);
}
.calendar-nav-btn i {
font-size: 14px;
line-height: 1;
}
.calendar-nav-title {
font-size: 16px;
font-weight: 600;
color: white;
}
.calendar-months-container {
display: grid;
grid-template-columns: 1fr;
gap: 30px;
}
@media (min-width: 768px) {
.calendar-months-container {
grid-template-columns: 1fr 1fr;
}
}
.calendar-month {
background: rgba(255, 255, 255, 0.05);
border-radius: 12px;
padding: 15px;
}
.calendar-month-title {
text-align: center;
font-size: 16px;
font-weight: 600;
color: white;
margin-bottom: 15px;
}
.calendar-weekdays {
display: grid;
grid-template-columns: repeat(7, 1fr);
gap: 5px;
margin-bottom: 10px;
}
.calendar-weekday {
text-align: center;
font-size: 12px;
font-weight: 600;
color: var(--calendar-selected);
padding: 5px;
text-transform: uppercase;
}
.calendar-days {
display: grid;
grid-template-columns: repeat(7, 1fr);
gap: 5px;
}
.calendar-day {
aspect-ratio: 1;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
cursor: pointer;
position: relative;
font-weight: 500;
transition: all 0.2s;
color: white;
font-size: 14px;
}
.calendar-day:hover:not(.disabled):not(.empty) {
background: rgba(32, 178, 170, 0.2);
transform: scale(1.05);
}
.calendar-day.empty {
cursor: default;
}
.calendar-day.disabled {
color: rgba(255, 255, 255, 0.3);
cursor: not-allowed;
}
.calendar-day.today {
background: rgba(255, 255, 255, 0.1);
border: 2px solid rgba(32, 178, 170, 0.5);
}
.calendar-day.selected {
background: var(--calendar-selected);
color: white;
font-weight: 700;
}
.calendar-day.in-range {
background: rgba(32, 178, 170, 0.15);
}
.calendar-day.start-date,
.calendar-day.end-date {
background: var(--calendar-selected);
color: white;
font-weight: 700;
}
.calendar-day.start-date {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.calendar-day.end-date {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.calendar-day.start-date.end-date {
border-radius: 8px;
}
.calendar-footer {
padding: 20px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
background: var(--calendar-header);
}
.calendar-selection-info {
color: white;
font-size: 14px;
}
.calendar-confirm {
background: var(--calendar-selected);
color: white;
border: none;
padding: 10px 24px;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
}
.calendar-confirm:hover {
background: #1a9a8f;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(32, 178, 170, 0.3);
}
.calendar-confirm:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.calendar-quick-select {
display: flex;
gap: 10px;
margin-bottom: 20px;
flex-wrap: wrap;
}
.quick-select-btn {
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
color: white;
padding: 8px 16px;
border-radius: 20px;
font-size: 13px;
cursor: pointer;
transition: all 0.2s;
}
.quick-select-btn:hover {
background: rgba(255, 255, 255, 0.2);
border-color: var(--calendar-selected);
}
.search-button {
width: 100%;
background: var(--calendar-selected);
color: white;
padding: 1rem;
font-size: 1.1rem;
font-weight: 600;
border: none;
border-radius: 0.5rem;
cursor: pointer;
transition: all 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.search-button:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 109, 117, 0.3);
}
.search-button:active,
.search-button:focus {
background: var(--calendar-selected) !important;
outline: none !important;
transform: scale(0.98);
}
.search-button.loading {
opacity: 0.8;
cursor: wait;
}
.spinner {
display: none;
width: 20px;
height: 20px;
border: 2px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: white;
animation: spin 1s ease-in-out infinite;
margin-right: 10px;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.is-submitting .spinner,
.loading .spinner {
display: inline-block;
}
@media (max-width: 768px) {
.hero-content {
padding: 4rem 1rem 3rem !important;
}
.hero-title {
font-size: 1.75rem !important;
margin-bottom: 0.75rem !important;
}
.hero-subtitle {
font-size: 1rem !important;
margin-bottom: 1.5rem !important;
}
.search-widget {
margin: 2rem 1rem 0 !important;
padding: 1.5rem !important;
border-radius: 0.75rem !important;
}
.search-fields {
grid-template-columns: 1fr;
gap: 0.75rem !important;
}
.trip-tabs {
flex-direction: column;
gap: 0.5rem;
}
.trip-tabs label {
min-width: 100%;
}
.field-group {
position: relative !important;
}
.field-group .icon {
position: absolute !important;
left: 1rem !important;
top: 27px !important;
transform: translateY(-50%) !important;
color: var(--calendar-selected) !important;
z-index: 10 !important;
font-size: 1.1rem !important;
pointer-events: none !important;
display: block !important;
}
.field-group.multi-origin-active > .icon {
display: none !important;
}
.search-fields input,
.dropdown-group {
height: 54px !important;
padding-left: 3rem !important;
padding-right: 1rem !important;
font-size: 16px !important;
border-radius: 0.5rem !important;
border: 1px solid rgba(255, 255, 255, 0.2) !important;
background: rgba(255, 255, 255, 0.1) !important;
}
.search-fields .origin-mini-input,
.field-group .origin-mini-input {
height: auto !important;
width: auto !important;
background: transparent !important;
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
padding: 0 !important;
}
.location-autocomplete {
position: fixed !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
width: calc(100% - 2rem) !important;
max-width: 350px !important;
max-height: 70vh !important;
border-radius: 1rem !important;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5) !important;
z-index: 10000 !important;
}
@media (max-width: 480px) {
.passenger-panel {
width: 95%;
}
.passenger-types {
display: flex;
flex-direction: column;
gap: 15px;
}
.class-options {
grid-template-columns: 1fr;
}
}
}
.error-message {
position: absolute;
top: -23px;
color: var(--error-color);
font-size: 0.8rem;
margin-top: 0.3rem;
display: none;
z-index: 1;
}
.date-field .error-message {
top: -23px;
}
input.error {
border-color: var(--error-color) !important;
}
.wave-animation {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 80px;
z-index: 1;
background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 1440 320" xmlns="http://www.w3.org/2000/svg"><path fill="%230e7490" fill-opacity="0.3" d="M0,192L48,197.3C96,203,192,213,288,229.3C384,245,480,267,576,250.7C672,235,768,181,864,181.3C960,181,1056,235,1152,245.3C1248,256,1344,224,1392,208L1440,192L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"></path></svg>');
background-size: cover;
opacity: 0.7;
}
.video-fallback {
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
background: linear-gradient(45deg, #006d75, #005a60);
z-index: 0;
}
.location-autocomplete::-webkit-scrollbar,
.flatpickr-calendar::-webkit-scrollbar,
.passenger-panel .panel-content::-webkit-scrollbar {
width: 4px;
}
.location-autocomplete::-webkit-scrollbar-thumb,
.flatpickr-calendar::-webkit-scrollbar-thumb,
.passenger-panel .panel-content::-webkit-scrollbar-thumb {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 2px;
}
.location-autocomplete::-webkit-scrollbar-track,
.flatpickr-calendar::-webkit-scrollbar-track,
.passenger-panel .panel-content::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.1);
}
.fade-in {
animation: fadeIn 0.5s ease-out forwards;
}
.fade-in-up {
animation: fadeInUp 0.5s ease-out forwards;
}
.fade-in-down {
animation: fadeInDown 0.5s ease-out forwards;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeInDown {
from {
opacity: 0;
transform: translateY(-20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@media (prefers-reduced-motion: reduce) {
.fade-in,
.fade-in-up,
.fade-in-down,
.search-widget:hover,
.flatpickr-calendar.animate.open,
.dropdown-group.open .passengers-dropdown {
animation: none !important;
transition: none !important;
transform: none !important;
}
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.date-field {
position: relative;
width: 100%;
}
.date-field .search-input,
.date-field .flatpickr-alt-input {
width: 100%;
height: 54px;
padding: 0 1rem 0 2.8rem;
border: 1px solid var(--glass-border);
border-radius: 0.5rem;
background: rgba(255, 255, 255, 0.1);
color: white;
box-sizing: border-box;
cursor: pointer;
}
.search-input,
.flatpickr-input,
.flatpickr-alt-input {
color: white !important;
}
.search-input::placeholder,
.flatpickr-input::placeholder,
.flatpickr-alt-input::placeholder {
color: rgba(255,255,255,0.8) !important;
}
#returnDateField {
grid-column: span 1;
}
.passenger-dropdown {
grid-column: 1 / -1;
}
*:focus {
outline: none !important;
}
.multi-city-container {
width: 100%;
display: flex;
flex-direction: column;
gap: 0.75rem;
margin-top: 0;
grid-column: 1 / -1;
}
.multi-city-flight {
background: transparent;
border: none;
padding: 0;
animation: fadeIn 0.2s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-5px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.multi-city-header {
display: none;
}
.multi-city-fields {
display: grid;
grid-template-columns: 1fr 1fr 1fr auto;
gap: 0.75rem;
align-items: center;
}
.multi-city-fields .field-group {
margin: 0;
}
.multi-city-fields .search-input {
height: 54px;
padding-left: 2.8rem !important;
}
.remove-flight-btn {
background: transparent;
border: 1px solid rgba(255, 255, 255, 0.3);
color: rgba(255, 255, 255, 0.7);
width: 36px;
height: 36px;
min-width: 36px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s ease;
font-size: 0.875rem;
padding: 0;
margin-left: 0.5rem;
align-self: center;
}
.remove-flight-btn:hover {
background: rgba(255, 77, 77, 0.15);
border-color: rgba(255, 77, 77, 0.5);
color: #ff4d4d;
transform: scale(1.05);
}
.multi-city-flight:nth-child(1) .remove-flight-btn,
.multi-city-flight:nth-child(2) .remove-flight-btn {
display: none;
}
.multi-city-flight:nth-child(1) .multi-city-fields,
.multi-city-flight:nth-child(2) .multi-city-fields {
grid-template-columns: 1fr 1fr 1fr;
}
.add-flight-btn {
background: rgba(255, 255, 255, 0.1);
color: white;
border: 1px solid rgba(255, 255, 255, 0.3);
padding: 0.875rem 1.5rem;
border-radius: 8px;
font-size: 0.95rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin-top: 0.25rem;
}
.add-flight-btn:hover {
background: rgba(255, 255, 255, 0.2);
border-color: 1px solid rgba(255, 255, 255, 0.3);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.add-flight-btn:active {
transform: scale(0.98);
}
.add-flight-btn i {
font-size: 0.875rem;
}
.multi-city-fields .error-message {
position: absolute;
bottom: -22px;
left: 0;
font-size: 0.75rem;
color: #ff6b6b;
display: none;
}
.multi-city-fields .search-input.error + .error-message {
display: block;
}
.multi-city-fields .search-input:not(:placeholder-shown) {
background: rgba(255, 255, 255, 0.15);
border-color: rgba(32, 178, 170, 0.3);
}
body.multi-city-mode .passenger-dropdown {
order: 999;
grid-column: 1 / -1;
}
@media (max-width: 768px) {
.multi-city-fields {
grid-template-columns: 1fr;
gap: 0.625rem;
position: relative;
}
.multi-city-flight:nth-child(1) .multi-city-fields,
.multi-city-flight:nth-child(2) .multi-city-fields {
grid-template-columns: 1fr;
}
.remove-flight-btn {
position: absolute;
top: 0.5rem;
right: 0.5rem;
width: 28px;
height: 28px;
min-width: 28px;
font-size: 0.75rem;
margin: 0;
z-index: 10;
}
.multi-city-flight {
position: relative;
}
.multi-city-flight:nth-child(1) .remove-flight-btn,
.multi-city-flight:nth-child(2) .remove-flight-btn {
display: none;
}
.add-flight-btn {
width: 100%;
}
}
@media (max-width: 480px) {
.multi-city-container {
gap: 0.5rem;
}
.multi-city-fields {
gap: 0.5rem;
}
}
.hero-section {
min-height: 0 !important;
height: auto !important;
border: none !important;
box-shadow: none !important;
padding-bottom: 0 !important;
}
.hero-section video,
#bgVideo {
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100vw !important;
height: 100vh !important;
transform: none !important;
z-index: -2 !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
}
.hero-overlay {
position: fixed !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100vh !important;
z-index: -1 !important;
background: none !important;
background-image: none !important;
border: none !important;
box-shadow: none !important;
}
.wave-animation {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
}
.wave-animation::before,
.wave-animation::after {
display: none !important;
content: none !important;
}
.video-fallback {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
background: none !important;
background-image: none !important;
}
.search-widget {
margin-bottom: 6rem !important;
overflow: visible !important;
}
body.multi-city-mode .search-widget {
margin-bottom: 8rem !important;
}
body.multi-city-mode .hero-section {
padding-bottom: 4rem !important;
}
.hero-section::after,
.hero-section::before {
border: none !important;
box-shadow: none !important;
background-image: none !important;
}
main {
border-top: none !important;
box-shadow: none !important;
}
section {
margin-bottom: 0 !important;
}
.hero-section::after {
content: '';
display: block;
height: 1px;
clear: both;
}
@media (max-width: 768px) {
.hero-content {
padding: 6rem 1rem 4rem !important;
}
.search-widget {
margin-bottom: 4rem !important;
}
body.multi-city-mode .search-widget {
margin-bottom: 5rem !important;
}
body.multi-city-mode .hero-section {
padding-bottom: 3rem !important;
}
}
@media (max-width: 480px) {
.search-widget {
margin-bottom: 3rem !important;
}
body.multi-city-mode .search-widget {
margin-bottom: 4rem !important;
}
}
.remove-flight-btn {
position: absolute !important;
top: 50% !important;
right: 0.50rem !important;
transform: translateY(-50%) !important;
background: transparent !important;
border: none !important;
color: rgba(255, 255, 255, 0.6) !important;
width: 18px !important;
height: 18px !important;
min-width: 18px !important;
border-radius: 0 !important;
display: flex !important;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s ease;
font-size: 0.95rem !important;
padding: 0;
margin: 0 !important;
z-index: 10;
box-shadow: none !important;
}
.remove-flight-btn:hover {
background: transparent !important;
border: none !important;
color: #ff4d4d !important;
transform: translateY(-50%) scale(1.2) !important;
box-shadow: none !important;
}
.remove-flight-btn:active {
transform: translateY(-50%) scale(1.1) !important;
}
.multi-city-flight:nth-child(1) .remove-flight-btn,
.multi-city-flight:nth-child(2) .remove-flight-btn {
display: none !important;
}
.multi-city-fields .date-field {
position: relative;
}
.multi-city-fields {
display: grid;
grid-template-columns: 1fr 1fr 1fr !important;
gap: 0.75rem;
align-items: center;
}
.multi-city-fields .date-field .search-input {
padding-right: 2.25rem !important;
}
@media (max-width: 768px) {
.remove-flight-btn {
right: 0.75rem !important;
width: 24px !important;
height: 24px !important;
font-size: 1.2rem !important;
}
.multi-city-fields .date-field .search-input {
padding-right: 3rem !important;
}
}
@media (max-width: 480px) {
.remove-flight-btn {
right: 0.5rem !important;
width: 22px !important;
height: 22px !important;
}
}

/* ─── Multi-airport origin (pill mode) ─────────────────────── */

/* + button inside origin field (single mode) */
.add-origin-pill-btn {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
color: rgba(255,255,255,0.35);
cursor: pointer;
font-size: 16px;
padding: 4px;
z-index: 3;
line-height: 1;
transition: color 0.15s ease;
}
.add-origin-pill-btn:hover { color: #7dd3d3; }

/* Hide plane icon when in multi-mode (overrides display:block !important) */
.field-group.multi-origin-active > .icon {
display: none !important;
}

/* Field in multi mode — single row, fixed height */
.field-group.multi-origin-active {
height: 54px;
min-height: unset;
background: rgba(255,255,255,0.1);
border: 1px solid rgba(255,255,255,0.2);
border-radius: 0.5rem;
display: flex;
align-items: center;
padding: 0 12px;
gap: 6px;
overflow: visible;
}
.field-group.multi-origin-active:focus-within {
border-color: rgba(74,155,155,0.55);
}

/* Pills row — single line, no wrap */
.origin-pills-wrap {
display: none;
align-items: center;
flex-wrap: nowrap;
gap: 6px;
flex: 1;
min-width: 0;
overflow: hidden;
}

/* Individual airport pill — compact bracket style */
.origin-pill {
display: inline-flex;
align-items: center;
gap: 4px;
background: rgba(255,255,255,0.12);
border: 1px solid rgba(255,255,255,0.35);
color: #fff;
border-radius: 4px;
padding: 3px 6px 3px 8px;
font-size: 13px;
font-weight: 500;
white-space: nowrap;
flex-shrink: 0;
}
.origin-pill span strong {
font-weight: 700;
letter-spacing: 0.02em;
}
.origin-pill-remove {
background: none;
border: none;
color: rgba(255,255,255,0.5);
cursor: pointer;
font-size: 12px;
line-height: 1;
padding: 0 2px;
display: flex;
align-items: center;
transition: color 0.15s ease;
font-family: sans-serif;
}
.origin-pill-remove:hover { color: #fff; }

/* Divider between pills and type-here input */
.origin-pipe {
color: rgba(255,255,255,0.25);
font-size: 15px;
line-height: 1;
flex-shrink: 0;
margin: 0 2px;
user-select: none;
}

/* Mini text input inline with pills — override .search-fields input */
.origin-mini-input,
.search-fields .origin-mini-input,
.field-group .origin-mini-input {
flex: 1 !important;
min-width: 80px !important;
width: auto !important;
height: auto !important;
background: transparent !important;
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
color: #fff !important;
font-size: 0.9rem !important;
font-family: 'Poppins', sans-serif !important;
outline: none !important;
padding: 0 !important;
}
.origin-mini-input::placeholder,
.search-fields .origin-mini-input::placeholder { color: rgba(255,255,255,0.38) !important; }
.search-fields .origin-mini-input:hover,
.search-fields .origin-mini-input:focus {
background: transparent !important;
border: none !important;
box-shadow: none !important;
}

/* ============================================================
   HERO SEARCH (homepage only) — borderless single-row layout
   Scoped via .hero-search modifier so flights/* pages stay intact.
   ============================================================ */
/* Lift parent width cap when the hero-search form is present.
   .hero-content has max-width: 900px globally; this :has() override
   only widens it on pages that use the new search bar. */
.hero-content:has(.search-widget.hero-search) {
    max-width: 1280px;
}

.search-widget.hero-search {
    max-width: 1280px;
    margin: 1.5rem auto 0;
    padding: 0.85rem 1rem 1rem;
    background: rgba(125, 211, 211, 0.18);
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 1.1rem;
    -webkit-backdrop-filter: blur(22px);
    backdrop-filter: blur(22px);
    box-shadow: 0 12px 32px rgba(0, 50, 60, 0.22);
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.85rem;
}
@supports not ((-webkit-backdrop-filter: blur(12px)) or (backdrop-filter: blur(12px))) {
    .search-widget.hero-search { background: rgba(125, 211, 211, 0.65); }
}

/* Row containing fields strip + search button, side by side, full width */
.search-widget.hero-search .hero-search-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.5rem;
    align-items: stretch;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
}

/* Mini trust-pills row — sits BELOW the search form. 3 small dark-teal pills,
   each with a circular cyan icon + label. */
.hero-content .hero-mini-trust {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 12px;
    margin: 18px auto 0;
    max-width: 1280px;
}
.hero-content .hmt-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.5rem 1rem 0.5rem 0.5rem;
    background: rgba(8, 50, 60, 0.78);
    border: 1px solid rgba(125, 211, 211, 0.40);
    border-radius: 999px;
    color: #f0fffe;
    font-size: 0.85rem;
    font-weight: 600;
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    box-shadow: 0 4px 14px rgba(0, 25, 30, 0.25);
}
.hero-content .hmt-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: rgba(125, 211, 211, 0.22);
    color: #7dd3d3;
    font-size: 0.72rem;
    flex-shrink: 0;
}
@media (max-width: 600px) {
    .hero-content .hero-mini-trust { gap: 8px; }
    .hero-content .hmt-pill { font-size: 0.76rem; padding: 0.35rem 0.75rem 0.35rem 0.35rem; }
    .hero-content .hmt-icon { width: 20px; height: 20px; font-size: 0.65rem; }
}

/* Price-calendar promo banner — sits below the trust pills */
.hero-content .hero-price-promo {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    max-width: 720px;
    margin: 14px auto 0;
    padding: 0.75rem 1.1rem 0.75rem 0.6rem;
    background: rgba(8, 50, 60, 0.78);
    border: 1px solid rgba(125, 211, 211, 0.40);
    border-radius: 999px;
    color: #f0fffe;
    font-size: 0.88rem;
    font-weight: 500;
    text-decoration: none;
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    box-shadow: 0 4px 14px rgba(0, 25, 30, 0.25);
    transition: background 0.18s ease, border-color 0.18s ease;
}
.hero-content .hero-price-promo:hover {
    background: rgba(8, 50, 60, 0.88);
    border-color: rgba(125, 211, 211, 0.6);
    color: #fff;
    text-decoration: none;
}
.hero-content .hpp-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: rgba(125, 211, 211, 0.22);
    color: #7dd3d3;
    font-size: 0.85rem;
    flex-shrink: 0;
}
.hero-content .hpp-text {
    flex: 1 1 auto;
    min-width: 0;
    font-weight: 500;
}
.hero-content .hpp-cta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #7dd3d3;
    font-weight: 600;
    flex-shrink: 0;
}
.hero-content .hpp-cta i { font-size: 0.7rem; transition: transform 0.18s ease; }
.hero-content .hero-price-promo:hover .hpp-cta i { transform: translateX(2px); }
@media (max-width: 600px) {
    .hero-content .hero-price-promo {
        flex-wrap: wrap;
        text-align: center;
        gap: 0.5rem;
        font-size: 0.78rem;
        padding: 0.7rem 1rem;
        border-radius: 14px;
    }
    .hero-content .hpp-text { flex-basis: 100%; }
}

/* Hero trust row — 4 small badges above the search form */
.hero-content .hero-trust-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 0.5rem 2rem;
    margin: 0.5rem 0 1.25rem;
    color: rgba(240, 255, 254, 0.85);
    font-size: 0.88rem;
    font-weight: 500;
}
.hero-content .hero-trust-item {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    white-space: nowrap;
}
.hero-content .hero-trust-item i {
    color: #7dd3d3;
    font-size: 0.95rem;
    width: 1.1rem;
    text-align: center;
}
@media (max-width: 720px) {
    .hero-content .hero-trust-row {
        gap: 0.5rem 1.25rem;
        font-size: 0.78rem;
    }
}

/* Hero trip tabs — sits inside the search container at top, centered.
   3 buttons: active = teal pill, inactive = transparent. */
.search-widget.hero-search .hero-trip-tabs {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem 0;
    flex-wrap: wrap;
}
.search-widget.hero-search .hero-trip-tab {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    color: rgba(240, 255, 254, 0.78);
    background: transparent;
    border: 1px solid rgba(125, 211, 211, 0.30);
    border-radius: 0.55rem;
    cursor: pointer;
    transition: all 0.18s ease;
}
.search-widget.hero-search .hero-trip-tab i {
    color: #7dd3d3;
    font-size: 0.78rem;
}
.search-widget.hero-search .hero-trip-tab:hover {
    color: #f0fffe;
    background: rgba(125, 211, 211, 0.10);
}
.search-widget.hero-search .hero-trip-tab.is-active {
    background: rgba(32, 178, 170, 0.30);
    border-color: rgba(125, 211, 211, 0.5);
    color: #f0fffe;
}
.search-widget.hero-search .hero-trip-tab.is-active i { color: #f0fffe; }
.search-widget.hero-search .trip-type-button:focus { outline: none; }
.search-widget.hero-search .trip-type-button:focus-visible {
    outline: 2px solid #7dd3d3;
    outline-offset: 2px;
}
.search-widget.hero-search .trip-type-icon {
    color: #7dd3d3;
    font-size: 0.78rem;
}
.search-widget.hero-search .trip-type-caret {
    color: rgba(240, 255, 254, 0.7);
    font-size: 0.65rem;
    transition: transform 0.18s ease;
}
.search-widget.hero-search .trip-type-select.is-open .trip-type-caret {
    transform: rotate(180deg);
}
.search-widget.hero-search .trip-type-menu {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    min-width: 220px;
    padding: 0.35rem;
    background: rgba(8, 50, 60, 0.96);
    border: 1px solid rgba(125, 211, 211, 0.3);
    border-radius: 0.65rem;
    box-shadow: 0 10px 30px rgba(0, 25, 30, 0.5);
    z-index: 100;
    display: none;
    flex-direction: column;
    gap: 2px;
}
.search-widget.hero-search .trip-type-select.is-open .trip-type-menu {
    display: flex;
    animation: tripTypeMenuIn 0.16s ease-out;
}
@keyframes tripTypeMenuIn {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}
.search-widget.hero-search .trip-type-option {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.55rem 0.75rem;
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 500;
    color: rgba(240, 255, 254, 0.9);
    background: transparent;
    border: none;
    border-radius: 0.45rem;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s ease;
}
.search-widget.hero-search .trip-type-option i {
    color: #7dd3d3;
    width: 14px;
    text-align: center;
    font-size: 0.78rem;
}
.search-widget.hero-search .trip-type-option:hover {
    background: rgba(125, 211, 211, 0.12);
}
.search-widget.hero-search .trip-type-option.is-active {
    background: rgba(32, 178, 170, 0.22);
    color: #f0fffe;
}
.search-widget.hero-search .trip-type-option.is-active i {
    color: #f0fffe;
}

/* Search fields: single horizontal row, borderless segments + dividers */
.search-widget.hero-search .search-fields {
    display: flex;
    grid-template-columns: none;
    gap: 0.5rem;
    margin: 0;
    background: transparent;
    border: none;
    border-radius: 0;
    overflow: visible;
    min-width: 0;
    position: relative;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

/* Each field-group is now its own bordered card */
.search-widget.hero-search .search-fields > div.field-group {
    background: rgba(255, 255, 255, 0.14);
    border: 1px solid rgba(255, 255, 255, 0.30);
    border-radius: 0.6rem;
    padding: 0.95rem 0.9rem 0.95rem 1rem;
    display: flex;
    align-items: center;
    gap: 0.7rem;
    cursor: pointer;
    transition: border-color 0.18s ease, background 0.18s ease;
}
.search-widget.hero-search .search-fields > div.field-group:hover,
.search-widget.hero-search .search-fields > div.field-group:focus-within {
    background: rgba(255, 255, 255, 0.22);
    border-color: rgba(255, 255, 255, 0.55);
}
/* Text-typing fields (origin, destination): text caret on the whole card,
   not pointer — typing is the primary action. */
.search-widget.hero-search .search-fields > div.field-group:has(#originInput),
.search-widget.hero-search .search-fields > div.field-group:has(#destinationInput) {
    cursor: text;
}
.search-widget.hero-search .search-fields > div.field-group:hover,
.search-widget.hero-search .search-fields > div.field-group:focus-within {
    border-color: rgba(125, 211, 211, 0.55);
    background: rgba(255, 255, 255, 0.08);
}

/* Field icon: now a sibling flex item, not absolute */
.search-widget.hero-search .search-fields > div.field-group > .icon {
    position: static !important;
    transform: none !important;
    color: #7dd3d3 !important;
    font-size: 1rem !important;
    width: 1rem !important;
    height: 1rem !important;
    flex: 0 0 auto !important;
    line-height: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    align-self: center !important;
}

/* Field stack — single value line, vertically centered */
.search-widget.hero-search .field-stack {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.15rem;
    flex: 1 1 auto;
    min-width: 0;
    align-self: stretch;
}
.search-widget.hero-search .field-label {
    font-size: 0.72rem;
    font-weight: 500;
    color: rgba(240, 255, 254, 0.65);
    letter-spacing: 0.01em;
    line-height: 1.1;
    cursor: inherit;
}

/* Inputs inside field-stack: borderless, transparent, value styling */
.search-widget.hero-search .field-stack input.search-input,
.search-widget.hero-search .field-stack .dropdown-group {
    height: auto !important;
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    color: #f0fffe;
    font-weight: 600;
    font-size: 1rem;
    padding: 0 !important;
    line-height: 1.2;
    width: 100%;
    min-width: 0;
    display: block;
    margin: 0;
}
/* Text-typing inputs (origin/destination): native text caret */
.search-widget.hero-search .field-stack input.search-input:not([readonly]) {
    cursor: text;
}
/* Readonly date inputs and dropdowns: pointer (click to open picker) */
.search-widget.hero-search .field-stack input.search-input[readonly],
.search-widget.hero-search .field-stack .dropdown-group {
    cursor: pointer;
}
.search-widget.hero-search .field-stack input.search-input:focus,
.search-widget.hero-search .field-stack input.search-input:hover {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}
.search-widget.hero-search .field-stack input.search-input::placeholder {
    color: rgba(240, 255, 254, 0.5);
    font-weight: 500;
    opacity: 1;
}

/* Passenger dropdown: header inline + chevron at right */
.search-widget.hero-search .field-stack .dropdown-group {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    cursor: pointer;
}
.search-widget.hero-search .field-stack .dropdown-header {
    color: #f0fffe;
    font-weight: 600;
    font-size: 1rem;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: clip;
    white-space: nowrap;
    flex: 1 1 auto;
    min-width: 0;
}
.search-widget.hero-search .field-caret {
    color: rgba(240, 255, 254, 0.7);
    font-size: 0.7rem;
    flex-shrink: 0;
}

/* Field width proportions: origin 2 / dest 2 / depart 1.5 / return 1.5 / passengers 2.
   Use nth-of-type on div so the swap <button> sibling doesn't shift the count.
   Each field-group is its own bordered card now (no inter-field dividers). */
.search-widget.hero-search .field-group {
    flex: 1 1 0;
    min-width: 0;
    position: relative;
}
.search-widget.hero-search .search-fields > div.field-group:nth-of-type(1),
.search-widget.hero-search .search-fields > div.field-group:nth-of-type(2) {
    flex: 2 1 200px;
    min-width: 180px;
}
.search-widget.hero-search .search-fields > div.field-group:nth-of-type(3),
.search-widget.hero-search .search-fields > div.field-group:nth-of-type(4) {
    flex: 1.5 1 150px;
    min-width: 140px;
}
.search-widget.hero-search .search-fields > div.field-group:nth-of-type(5) {
    flex: 2 1 250px;
    min-width: 250px;
}

/* Swap button — sits literally ON the divider line between origin and destination.
   Zero-width column so origin and destination touch; the circle is absolutely
   centered on the boundary, overlapping both fields equally. */
.search-widget.hero-search .hero-search-swap {
    flex: 0 0 0;
    width: 0;
    align-self: stretch;
    position: relative;
    background: transparent;
    border: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
    z-index: 3;
}
.search-widget.hero-search .hero-search-swap i {
    position: absolute;
    top: 50%;
    left: 0;
    transform: translate(-50%, -50%);
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: rgba(8, 50, 60, 0.95);
    border: 1px solid rgba(125, 211, 211, 0.55);
    color: #7dd3d3;
    font-size: 11px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all 0.25s ease;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}

.search-widget.hero-search .hero-search-swap:hover i {
    background: #7dd3d3;
    color: #0a3a44;
    border-color: #7dd3d3;
    transform: translate(-50%, -50%) rotate(180deg);
}
.search-widget.hero-search .hero-search-swap:focus { outline: none; }
.search-widget.hero-search .hero-search-swap:focus-visible i {
    outline: 2px solid #7dd3d3;
    outline-offset: 2px;
}

/* Autocomplete dropdown for origin & destination spans both bordered cards
   plus the gap between them. .search-fields has gap: 0.5rem, applied between
   origin→swap and swap→destination, so the total inter-card gap is 1rem. */
.search-widget.hero-search #locationAutocompleteOrigin,
.search-widget.hero-search #locationAutocompleteDestination {
    z-index: 1500;
    background: #2e737d !important;
    border: 1px solid rgba(255, 255, 255, 0.30) !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    box-shadow: 0 12px 32px rgba(0, 50, 60, 0.45) !important;
}
.search-widget.hero-search .location-autocomplete .location-group-title {
    background: #246973 !important;
    color: #f0fffe;
    border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}
.search-widget.hero-search #locationAutocompleteOrigin {
    left: 0;
    right: auto;
    width: calc(200% + 1rem);
}
.search-widget.hero-search #locationAutocompleteDestination {
    left: calc(-100% - 1rem);
    right: auto;
    width: calc(200% + 1rem);
}

/* Loading / empty / error states: center across the wide panel so the user
   sees the message clearly instead of a small pill in the corner. */
.search-widget.hero-search .location-autocomplete .autocomplete-item.loading,
.search-widget.hero-search .location-autocomplete .autocomplete-item.empty,
.search-widget.hero-search .location-autocomplete .autocomplete-item.error {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    width: 100%;
    padding: 1rem;
    gap: 0.5rem;
    color: rgba(240, 255, 254, 0.85);
    font-weight: 500;
    background: transparent;
}

/* Native inputs: prevent ellipsis-style truncation; clip cleanly at edge */
.search-widget.hero-search .search-fields input {
    text-overflow: clip;
    overflow: hidden;
}

/* Search button: tall, fills full field-row height, own bordered card */
.search-widget.hero-search .search-button {
    flex-shrink: 0;
    z-index: 2;
    position: relative;
    width: auto;
    min-width: 170px;
    height: auto;
    padding: 0 1.5rem;
    border-radius: 0.6rem;
    font-size: 0.95rem;
    font-weight: 600;
    align-self: stretch;
    box-shadow: 0 6px 16px rgba(32, 178, 170, 0.32);
}

/* Mobile: fields wrap into 2-up rows, button full-width below */
@media (max-width: 860px) {
    .search-widget.hero-search { gap: 0.5rem; padding: 0.65rem 0.75rem 0.85rem; }
    .search-widget.hero-search .hero-search-row {
        grid-template-columns: 1fr;
        gap: 0.5rem;
    }
    .search-widget.hero-search .search-fields {
        flex-wrap: wrap;
        gap: 0.4rem;
    }
    .search-widget.hero-search .hero-search-swap { display: none; }
    .search-widget.hero-search .search-fields > div.field-group {
        flex: 1 1 calc(50% - 0.2rem);
        min-width: 0 !important;
    }
    .search-widget.hero-search .search-fields > div.field-group:nth-of-type(5) {
        flex-basis: 100%;
    }
    .search-widget.hero-search .search-button {
        width: 100%;
        min-width: 0;
        padding: 0.85rem 1.5rem;
    }
}

/* Phone (very narrow): single column */
@media (max-width: 480px) {
    .search-widget.hero-search .search-fields > div.field-group {
        flex-basis: 100% !important;
    }
}



