:root {
    --ab-brand: #c62828;
    --ab-brand-dark: #8e1717;
    --ab-ink: #172033;
    --ab-muted: #636c80;
    --ab-surface: #f7f8fb;
    --ab-border: #e6e9ef;
    --ab-radius: 1rem;
    --ab-shadow: 0 18px 50px rgba(23,32,51,.09)
}

html, body {
    min-height: 100%
}

body {
    display: flex;
    flex-direction: column;
    color: var(--ab-ink);
    background: var(--ab-surface);
    font-family: Inter,"Segoe UI",Roboto,Arial,sans-serif
}

.site-main {
    flex: 1
}

.navbar-brand, .portal-brand {
    font-weight: bold;
    color: var(--ab-brand) !important
}

.skip-link {
    position: fixed;
    left: 1rem;
    top: -5rem;
    z-index: 2000;
    background: #fff;
    padding: .75rem 1rem;
    border-radius: .5rem
}

    .skip-link:focus {
        top: 1rem
    }

.btn-brand {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--ab-brand);
    --bs-btn-border-color: var(--ab-brand);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--ab-brand-dark);
    --bs-btn-hover-border-color: var(--ab-brand-dark)
}

.hero-foundation {
    background: radial-gradient(circle at 90% 10%,rgba(198,40,40,.14),transparent 35%),linear-gradient(135deg,#fff,#f7f8fb)
}

.eyebrow {
    text-transform: uppercase;
    letter-spacing: .14em;
    font-size: .75rem;
    font-weight: bold;
    color: var(--ab-brand)
}

.foundation-card, .component-card, .error-card {
    background: #fff;
    border: 1px solid var(--ab-border);
    border-radius: var(--ab-radius);
    box-shadow: var(--ab-shadow);
    padding: 1.5rem
}

.component-card {
    box-shadow: none;
    transition: transform .2s ease,box-shadow .2s ease
}

    .component-card:hover {
        transform: translateY(-3px);
        box-shadow: var(--ab-shadow)
    }

.status-pill {
    display: inline-flex;
    padding: .4rem .7rem;
    border-radius: 999px;
    font-size: .85rem;
    font-weight: bold
}

.status-ok {
    background: #dcfce7;
    color: #166534
}

.status-warning {
    background: #fff7ed;
    color: #9a3412
}

.page-header {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem
}

.page-title {
    font-size: clamp(1.7rem,3vw,2.35rem);
    font-weight: bold
}

.page-subtitle {
    color: var(--ab-muted)
}

.site-footer {
    background: #fff;
    border-top: 1px solid var(--ab-border)
}

.error-card {
    max-width: 720px;
    margin: auto;
    text-align: center;
    padding: clamp(2rem,5vw,4rem)
}

.error-code {
    font-size: 4rem;
    line-height: 1;
    font-weight: bold;
    color: rgba(198,40,40,.18)
}

.loading-overlay {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: grid;
    place-items: center;
    background: rgba(23,32,51,.65)
}

.portal-body {
    overflow-x: hidden
}

.portal-shell {
    display: grid;
    grid-template-columns: 270px 1fr;
    min-height: 100vh
}

.portal-sidebar {
    background: #172033;
    color: #fff;
    padding: 1.25rem
}

.portal-brand {
    display: block;
    color: #fff !important;
    font-size: 1.25rem;
    text-decoration: none;
    margin-bottom: 2rem
}

.portal-workspace {
    min-width: 0
}

.portal-header {
    height: 64px;
    background: #fff;
    border-bottom: 1px solid var(--ab-border);
    padding: .8rem 1.25rem;
    display: flex;
    align-items: center;
    gap: 1rem
}

.portal-content {
    padding: 1.5rem
}

@media(max-width:991.98px) {
    .portal-shell {
        grid-template-columns: 1fr
    }

    .portal-sidebar {
        position: fixed;
        inset: 0 auto 0 0;
        width: 270px;
        z-index: 1040;
        transform: translateX(-100%);
        transition: transform .2s ease
    }

    .portal-body.sidebar-open .portal-sidebar {
        transform: translateX(0)
    }

    .page-header {
        align-items: start;
        flex-direction: column
    }
}

@media(prefers-reduced-motion:reduce) {
    *, *::before, *::after {
        scroll-behavior: auto !important;
        transition: none !important
    }
}

.auth-shell {
    min-height: calc(100vh - 170px);
    display: grid;
    place-items: center;
    padding: 2rem 1rem
}

.auth-card {
    width: min(100%,480px);
    background: #fff;
    border: 1px solid var(--ab-border);
    border-radius: var(--ab-radius);
    box-shadow: var(--ab-shadow);
    padding: clamp(1.25rem,4vw,2rem)
}

    .auth-card .form-control {
        min-height: 48px
    }

    .auth-card .btn {
        min-height: 46px
    }

.public-header {
    background: #fff;
    position: relative;
    z-index: 1020;
    box-shadow: 0 2px 18px rgba(23,32,51,.06)
}

.public-topbar {
    background: #172033;
    color: #dbe2ef;
    font-size: .7rem;
    padding: .38rem 0;
    text-align: right
}

.public-header .navbar {
    min-height: 72px
}

.navbar-brand span {
    display: flex;
    flex-direction: column;
    font-weight: bold;
    line-height: 1
}

.navbar-brand small {
    font-size: .61rem;
    color: #7d8799;
    font-weight: bold;
    margin-top: .28rem;
    letter-spacing: .08em;
    text-transform: uppercase
}

.public-header .nav-link {
    font-size: .82rem;
    font-weight: bold;
    color: #344054
}

.public-profile {
    display: flex;
    align-items: center;
    gap: .5rem;
    background: transparent;
    border: 0;
    font-size: .78rem;
    font-weight: bold
}

    .public-profile > span {
        width: 34px;
        height: 34px;
        display: grid;
        place-items: center;
        border-radius: 10px;
        background: #fbeaec;
        color: var(--ab-brand);
        font-size: .7rem
    }

.public-header .dropdown-menu {
    border: 1px solid var(--ab-border);
    border-radius: .9rem;
    padding: .55rem;
    box-shadow: 0 18px 45px rgba(23,32,51,.14)
}

.public-header .dropdown-item {
    border-radius: .6rem;
    padding: .65rem .8rem;
    font-size: .82rem
}

    .public-header .dropdown-item:hover, .public-header .dropdown-item:focus {
        background: #fff1f1;
        color: var(--ab-brand)
    }

.site-main .container > .row > [class*="col"] > .card {
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    box-shadow: 0 12px 35px rgba(23,32,51,.06)
}

.booking-hero {
    position: relative;
    padding: clamp(3.5rem,8vw,7rem) 0 5rem;
    background: radial-gradient(circle at 85% 12%,rgba(198,40,40,.17),transparent 30%),linear-gradient(130deg,#fff 0%,#fff7f7 52%,#f5f7fb 100%);
    overflow: hidden
}

    .booking-hero:after {
        content: "";
        position: absolute;
        width: 430px;
        height: 430px;
        border: 70px solid rgba(198,40,40,.045);
        border-radius: 50%;
        right: -150px;
        bottom: -270px
    }

.hero-copy {
    max-width: 760px;
    margin-bottom: 2rem;
    position: relative;
    z-index: 1
}

    .hero-copy h1 {
        font-size: clamp(2.3rem,6vw,4.9rem);
        line-height: 1.02;
        letter-spacing: -.045em;
        font-weight: bold;
        margin: .75rem 0 1rem
    }

        .hero-copy h1 em {
            color: var(--ab-brand);
            font-style: normal
        }

    .hero-copy p {
        font-size: clamp(1rem,2vw,1.18rem);
        color: #667085;
        max-width: 680px
    }

.booking-card {
    position: relative;
    z-index: 2;
    background: #fff;
    border: 1px solid #eceef2;
    border-radius: 1.25rem;
    box-shadow: 0 30px 70px rgba(23,32,51,.13);
    padding: 1.15rem
}

.booking-tabs {
    display: flex;
    gap: .3rem;
    border-bottom: 1px solid #eceef2;
    margin: -.2rem -.2rem .85rem;
    padding: 0 .2rem
}

    .booking-tabs button {
        background: transparent;
        border: 0;
        border-bottom: 3px solid transparent;
        padding: .75rem .9rem;
        font-size: .78rem;
        font-weight: bold;
        color: #667085
    }

        .booking-tabs button.active {
            border-color: var(--ab-brand);
            color: var(--ab-brand)
        }

.trip-options {
    display: flex;
    gap: 1.1rem;
    font-size: .72rem;
    margin: .65rem .4rem 1rem
}

    .trip-options input {
        accent-color: var(--ab-brand)
    }

.search-grid {
    display: grid;
    grid-template-columns: 1fr auto 1fr .72fr auto;
    align-items: end;
    gap: .55rem
}

    .search-grid label {
        display: flex;
        flex-direction: column;
        gap: .38rem
    }

        .search-grid label span {
            font-size: .67rem;
            color: #667085;
            font-weight: bold
        }

    .search-grid input {
        border: 1px solid #dfe3ea;
        border-radius: .7rem;
        min-height: 50px;
        padding: .65rem .75rem;
        width: 100%;
        font-size: .78rem
    }

.swap-button {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid #e1e5ec;
    background: #fff;
    margin-bottom: 6px;
    color: var(--ab-brand)
}

.search-button {
    min-height: 50px;
    border: 0;
    border-radius: .7rem;
    background: linear-gradient(135deg,var(--ab-brand),var(--ab-brand-dark));
    color: #fff;
    font-weight: bold;
    padding: 0 1.3rem;
    box-shadow: 0 10px 25px rgba(198,40,40,.22)
}

.search-note {
    margin: .7rem 0 0;
    color: #98a2b3;
    font-size: .65rem
}

.trust-strip {
    background: #172033;
    color: #fff
}

    .trust-strip .container {
        display: grid;
        grid-template-columns: repeat(4,1fr)
    }

        .trust-strip .container > div {
            padding: 1.1rem;
            border-right: 1px solid rgba(255,255,255,.1);
            display: flex;
            flex-direction: column
        }

    .trust-strip strong {
        font-size: .76rem
    }

    .trust-strip span {
        font-size: .66rem;
        color: #98a2b3;
        margin-top: .15rem
    }

.feature-section {
    padding-top: 5rem;
    padding-bottom: 5rem
}

.section-heading {
    max-width: 650px;
    margin-bottom: 2rem
}

    .section-heading h2 {
        font-size: clamp(1.8rem,4vw,3rem);
        font-weight: bold;
        letter-spacing: -.03em;
        margin: .6rem 0
    }

    .section-heading p {
        color: #667085
    }

.feature-grid {
    display: grid;
    grid-template-columns: repeat(3,1fr);
    gap: 1rem
}

    .feature-grid article {
        background: #fff;
        border: 1px solid #e8ebf1;
        border-radius: 1rem;
        padding: 1.35rem;
        transition: .2s ease
    }

        .feature-grid article:hover {
            transform: translateY(-4px);
            box-shadow: var(--ab-shadow)
        }

        .feature-grid article > span {
            font-size: .66rem;
            color: var(--ab-brand);
            font-weight: bold
        }

    .feature-grid h3 {
        font-size: 1rem;
        margin: .8rem 0 .45rem
    }

    .feature-grid p {
        font-size: .78rem;
        color: #667085;
        margin: 0
    }

.public-cta {
    background: linear-gradient(120deg,#8e1717,#c62828);
    color: #fff;
    padding: 2.4rem 0
}

    .public-cta .container {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 1rem
    }

    .public-cta .eyebrow {
        color: #fecdd3
    }

    .public-cta h2 {
        font-size: clamp(1.45rem,3vw,2.4rem);
        font-weight: bold;
        margin: .4rem 0 0
    }

.public-footer {
    background: #111827;
    color: #cbd5e1
}

.footer-brand {
    display: flex;
    align-items: center;
    gap: .6rem;
    color: #fff;
    margin-bottom: .8rem
}

    .footer-brand img {
        width: 42px
    }

.public-footer p {
    font-size: .76rem;
    color: #94a3b8;
    max-width: 520px
}

.public-footer h2 {
    font-size: .78rem;
    color: #fff
}

.public-footer a {
    display: block;
    color: #94a3b8;
    text-decoration: none;
    font-size: .72rem;
    margin: .45rem 0
}

.footer-bottom {
    border-top: 1px solid rgba(255,255,255,.1);
    margin-top: 2rem;
    padding-top: 1rem;
    display: flex;
    justify-content: space-between;
    font-size: .68rem;
    color: #64748b
}

.public-preview-toast {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 2000;
    background: #172033;
    color: #fff;
    padding: .85rem 1rem;
    border-radius: .75rem;
    box-shadow: 0 15px 40px rgba(0,0,0,.2);
    font-size: .76rem
}

@media(max-width:991.98px) {
    .public-header .navbar-collapse {
        padding: 1rem 0
    }

    .search-grid {
        grid-template-columns: 1fr 1fr
    }

    .swap-button {
        display: none
    }

    .search-button {
        grid-column: 1/-1
    }

    .trust-strip .container {
        grid-template-columns: 1fr 1fr
    }

    .feature-grid {
        grid-template-columns: 1fr
    }

    .public-cta .container {
        align-items: start;
        flex-direction: column
    }
}

@media(max-width:575.98px) {
    .booking-hero {
        padding-top: 2.5rem
    }

    .search-grid {
        grid-template-columns: 1fr
    }

    .trust-strip .container {
        grid-template-columns: 1fr
    }

        .trust-strip .container > div {
            border-right: 0;
            border-bottom: 1px solid rgba(255,255,255,.1)
        }

    .public-cta {
        padding: 2rem 0
    }

    .footer-bottom {
        flex-direction: column;
        gap: .35rem
    }
}


/* Command 16 public website */
.public-topbar a {
    color: #fff;
    text-decoration: none
}

.public-header .navbar {
    padding: .7rem 0
}

.public-header .dropdown-toggle {
    border: 0;
    background: transparent
}

.public-header .icon-button {
    width: 40px;
    height: 40px;
    border: 1px solid var(--ab-border);
    border-radius: .75rem;
    background: var(--ab-panel,#fff);
    color: var(--ab-ink)
}

.hero-layout {
    display: grid;
    grid-template-columns: minmax(0,1.2fr) minmax(280px,.8fr);
    align-items: center;
    gap: 3rem
}

.hero-visual {
    min-height: 260px;
    position: relative;
    display: grid;
    place-items: center
}

.hero-bus {
    width: min(100%,390px);
    aspect-ratio: 1.75;
    background: linear-gradient(145deg,#c62828,#841421);
    border-radius: 2.2rem 2.2rem 1rem 1rem;
    box-shadow: 0 35px 60px rgba(142,23,23,.28);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    position: relative;
    border: 6px solid rgba(255,255,255,.34)
}

    .hero-bus:before {
        content: "";
        position: absolute;
        inset: 1.15rem 1.15rem auto;
        height: 42%;
        border-radius: 1.2rem;
        background: linear-gradient(135deg,#dbeafe,#f8fafc 55%,#bfdbfe);
        border: 5px solid #71131d
    }

    .hero-bus:after {
        content: "";
        position: absolute;
        left: 13%;
        right: 13%;
        bottom: -18px;
        height: 36px;
        border-radius: 99px;
        background: radial-gradient(circle at 15% 50%,#111827 0 12px,transparent 13px),radial-gradient(circle at 85% 50%,#111827 0 12px,transparent 13px)
    }

    .hero-bus img {
        width: 42px;
        margin-top: 50px;
        filter: brightness(0) invert(1)
    }

    .hero-bus strong {
        font-size: 1rem;
        letter-spacing: .12em
    }

    .hero-bus span {
        font-size: .68rem;
        opacity: .8
    }

.road-line {
    position: absolute;
    width: 125%;
    height: 70px;
    bottom: 13px;
    border-radius: 50%;
    background: #d6d9df;
    transform: rotate(-5deg)
}

.hero-proof {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem 1.25rem;
    font-size: .75rem;
    font-weight: bold;
    color: #475467;
    margin-top: 1.35rem
}

.public-search-grid {
    grid-template-columns: minmax(160px,1fr) auto minmax(160px,1fr) minmax(145px,.65fr) minmax(145px,.65fr) auto
}

    .public-search-grid > div {
        min-width: 0
    }

    .public-search-grid .return-date[hidden] {
        display: none
    }

    .public-search-grid .ab-floating-field > .form-control {
        min-height: 50px
    }

.search-error {
    margin-top: .8rem;
    padding: .65rem .8rem;
    border-radius: .6rem;
    background: #fff1f2;
    color: #9f1239;
    font-size: .76rem;
    font-weight: bold
}

.public-section {
    padding-top: clamp(3.5rem,7vw,6rem);
    padding-bottom: clamp(3.5rem,7vw,6rem)
}

.split-heading {
    display: flex;
    max-width: none;
    align-items: end;
    justify-content: space-between;
    gap: 1rem
}

    .split-heading > a {
        color: var(--ab-brand);
        font-weight: bold;
        text-decoration: none;
        font-size: .8rem;
        margin-bottom: .6rem
    }

.route-grid {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: 1rem
}

    .route-grid a {
        display: grid;
        grid-template-columns: 1fr auto 1fr;
        align-items: center;
        gap: .5rem;
        background: var(--ab-panel,#fff);
        color: var(--ab-ink);
        border: 1px solid var(--ab-border);
        border-radius: 1rem;
        padding: 1.15rem;
        text-decoration: none;
        transition: .2s ease
    }

        .route-grid a:hover {
            transform: translateY(-4px);
            box-shadow: var(--ab-shadow);
            border-color: rgba(198,40,40,.35)
        }

    .route-grid span {
        font-size: .8rem;
        font-weight: bold
    }

    .route-grid b {
        color: var(--ab-brand)
    }

    .route-grid small {
        grid-column: 1/-1;
        color: var(--ab-muted);
        font-size: .68rem
    }

.soft-section {
    background: linear-gradient(180deg,rgba(198,40,40,.035),rgba(255,255,255,0))
}

.experience-grid, .support-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 1rem
}

    .experience-grid article, .support-grid article {
        background: var(--ab-panel,#fff);
        border: 1px solid var(--ab-border);
        border-radius: 1.1rem;
        padding: 1.4rem
    }

        .feature-icon, .support-grid article > span {
            display: grid;
            place-items: center;
            width: 42px;
            height: 42px;
            border-radius: .75rem;
            background: #feecee;
            color: var(--ab-brand);
            font-size: .7rem;
            font-weight: bold
        }

    .experience-grid h3, .support-grid h2 {
        font-size: 1rem;
        margin: 1rem 0 .5rem
    }

    .experience-grid p, .support-grid p {
        font-size: .78rem;
        color: var(--ab-muted);
        margin: 0
    }

.offer-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 1rem
}

.offer-card {
    min-height: 215px;
    border-radius: 1.15rem;
    padding: 1.4rem;
    color: #fff;
    position: relative;
    overflow: hidden;
    box-shadow: var(--ab-shadow)
}

    .offer-card:after {
        content: "";
        position: absolute;
        width: 180px;
        height: 180px;
        border: 35px solid rgba(255,255,255,.08);
        border-radius: 50%;
        right: -70px;
        bottom: -95px
    }

.offer-red {
    background: linear-gradient(135deg,#c62828,#7f1d1d)
}

.offer-blue {
    background: linear-gradient(135deg,#2563eb,#1e3a8a)
}

.offer-dark {
    background: linear-gradient(135deg,#334155,#0f172a)
}

.offer-card small {
    font-size: .62rem;
    font-weight: bold;
    letter-spacing: .12em
}

.offer-card h3 {
    font-size: 1.3rem;
    margin: 1rem 0 .5rem
}

.offer-card p {
    font-size: .76rem;
    max-width: 85%;
    opacity: .82
}

.offer-card strong {
    display: inline-block;
    background: rgba(255,255,255,.14);
    border: 1px dashed rgba(255,255,255,.5);
    border-radius: .5rem;
    padding: .4rem .65rem;
    font-size: .7rem;
    letter-spacing: .08em
}

.shortcut-section {
    background: #111827;
    color: #fff
}

    .shortcut-section .section-heading h2 {
        color: #fff
    }

.shortcut-grid {
    display: grid;
    grid-template-columns: repeat(4,minmax(0,1fr));
    gap: .8rem
}

    .shortcut-grid a {
        color: #fff;
        text-decoration: none;
        border: 1px solid rgba(255,255,255,.12);
        background: rgba(255,255,255,.045);
        border-radius: 1rem;
        padding: 1.1rem;
        display: flex;
        flex-direction: column;
        transition: .2s ease
    }

        .shortcut-grid a:hover {
            background: rgba(255,255,255,.1);
            transform: translateY(-3px)
        }

    .shortcut-grid strong {
        font-size: .84rem
    }

    .shortcut-grid span {
        font-size: .68rem;
        color: #94a3b8;
        margin-top: .35rem
    }

.public-cta p {
    font-size: .78rem;
    color: #fecdd3;
    margin: .5rem 0 0
}

.page-hero {
    padding: clamp(4rem,8vw,7rem) 0;
    background: radial-gradient(circle at 85% 12%,rgba(198,40,40,.14),transparent 30%),linear-gradient(135deg,#fff,#f7f8fb)
}

    .page-hero.compact {
        padding: clamp(3rem,6vw,5rem) 0
    }

    .page-hero h1 {
        font-size: clamp(2.25rem,5vw,3rem);
        line-height: 1.03;
        letter-spacing: -.045em;
        font-weight: bold;
        max-width: 850px;
        margin: .65rem 0 1rem
    }

        .page-hero h1 b {
            color: var(--ab-brand)
        }

    .page-hero p {
        color: var(--ab-muted);
        font-size: 1rem;
        max-width: 740px
    }

.search-result-shell {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 1rem;
    align-items: start
}

    .search-result-shell aside, .empty-result, .info-panel, .contact-card, .contact-note, .manage-grid article, .legal-copy, .faq-list details {
        background: var(--ab-panel,#fff);
        border: 1px solid var(--ab-border);
        border-radius: 1rem;
        padding: 1.25rem
    }

        .search-result-shell aside h2 {
            font-size: 1rem
        }

    .search-result-shell dl {
        font-size: .75rem
    }

    .search-result-shell dt {
        color: var(--ab-muted);
        font-weight: 500
    }

    .search-result-shell dd {
        font-weight: bold;
        margin-bottom: .75rem
    }

.empty-result {
    text-align: center;
    padding: clamp(2rem,5vw,4rem)
}

    .empty-result > span {
        width: 58px;
        height: 58px;
        border-radius: 1rem;
        background: #feecee;
        color: var(--ab-brand);
        display: grid;
        place-items: center;
        margin: 0 auto 1rem;
        font-weight: bold
    }

    .empty-result h2 {
        font-size: 1.3rem
    }

    .empty-result p {
        color: var(--ab-muted);
        font-size: .8rem;
        max-width: 580px;
        margin: 0 auto 1.25rem
    }

.amenity-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 1rem
}

    .amenity-grid article {
        background: var(--ab-panel,#fff);
        border: 1px solid var(--ab-border);
        border-radius: 1rem;
        padding: 1.2rem
    }

        .amenity-grid article > span {
            font-size: .65rem;
            font-weight: bold;
            color: var(--ab-brand)
        }

    .amenity-grid h2 {
        font-size: 1rem;
        margin: .7rem 0 .4rem
    }

    .amenity-grid p {
        font-size: .75rem;
        color: var(--ab-muted);
        margin: 0
    }

.policy-note, .safety-panel {
    margin-top: 1.25rem;
    border-radius: .9rem;
    padding: 1rem 1.15rem;
    background: #fff7ed;
    color: #9a3412;
    font-size: .78rem
}

.manage-grid {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 1rem
}

    .manage-grid article h2, .contact-card h2 {
        font-size: 1rem
    }

    .manage-grid article p, .contact-card p {
        font-size: .78rem;
        color: var(--ab-muted)
    }

.safety-panel {
    background: #fff1f2;
    color: #9f1239
}

    .safety-panel p {
        margin: .25rem 0 0
    }

.contact-layout {
    display: grid;
    grid-template-columns: 1.3fr .7fr;
    gap: 1rem
}

    .contact-layout > div {
        display: grid;
        gap: 1rem
    }

.contact-card small {
    color: var(--ab-brand);
    font-size: .62rem;
    font-weight: bold;
    letter-spacing: .1em
}

.contact-note ul {
    padding-left: 1.1rem;
    color: var(--ab-muted);
    font-size: .78rem
}

.contact-note p {
    font-size: .75rem
}

.story-grid {
    display: grid;
    grid-template-columns: repeat(2,1fr);
    gap: 2rem
}

    .story-grid h2 {
        font-size: 1.3rem
    }

    .story-grid p, .legal-copy p {
        color: var(--ab-muted);
        font-size: .82rem;
        line-height: 1.8
    }

.values-row {
    margin-top: 2rem;
    display: grid;
    grid-template-columns: repeat(4,1fr);
    gap: .7rem
}

    .values-row span {
        padding: .8rem;
        border: 1px solid var(--ab-border);
        border-radius: .8rem;
        text-align: center;
        font-size: .75rem;
        font-weight: bold
    }

.faq-list {
    display: grid;
    gap: .75rem
}

    .faq-list details {
        padding: 0;
        overflow: hidden
    }

    .faq-list summary {
        padding: 1rem 1.15rem;
        font-weight: bold;
        cursor: pointer
    }

    .faq-list details p {
        padding: 0 1.15rem 1rem;
        margin: 0;
        color: var(--ab-muted);
        font-size: .8rem
    }

.policy-links {
    display: grid;
    grid-template-columns: repeat(3,1fr);
    gap: 1rem
}

    .policy-links a {
        display: flex;
        flex-direction: column;
        padding: 1.2rem;
        border: 1px solid var(--ab-border);
        border-radius: 1rem;
        background: var(--ab-panel,#fff);
        color: var(--ab-ink);
        text-decoration: none
    }

    .policy-links span {
        font-size: .74rem;
        color: var(--ab-muted);
        margin-top: .45rem
    }

.legal-copy {
    max-width: 900px
}

    .legal-copy h2 {
        font-size: 1rem;
        margin: 1.5rem 0 .35rem
    }

        .legal-copy h2:first-child {
            margin-top: 0
        }

[data-ab-theme=dark] .page-hero {
    background: radial-gradient(circle at 85% 12%,rgba(198,40,40,.19),transparent 30%),linear-gradient(130deg,#101722,#141b27)
}

[data-ab-theme=dark] .route-grid a, [data-ab-theme=dark] .experience-grid article, [data-ab-theme=dark] .amenity-grid article, [data-ab-theme=dark] .search-result-shell aside, [data-ab-theme=dark] .empty-result, [data-ab-theme=dark] .info-panel, [data-ab-theme=dark] .contact-card, [data-ab-theme=dark] .contact-note, [data-ab-theme=dark] .manage-grid article, [data-ab-theme=dark] .legal-copy, [data-ab-theme=dark] .faq-list details, [data-ab-theme=dark] .policy-links a {
    background: #151c28;
    border-color: #293244;
    color: var(--ab-ink)
}

[data-ab-theme=dark] .soft-section {
    background: #101722
}

[data-ab-theme=dark] .hero-proof {
    color: #cbd5e1
}

@media(max-width:1199.98px) {
    .public-search-grid {
        grid-template-columns: 1fr auto 1fr 1fr
    }

        .public-search-grid .search-button {
            grid-column: auto
        }

    .route-grid, .shortcut-grid {
        grid-template-columns: repeat(2,1fr)
    }
}

@media(max-width:991.98px) {
    .hero-layout {
        grid-template-columns: 1fr
    }

    .hero-visual {
        display: none
    }

    .public-search-grid {
        grid-template-columns: 1fr 1fr
    }

    .experience-grid, .offer-grid, .amenity-grid {
        grid-template-columns: repeat(2,1fr)
    }

    .support-grid {
        grid-template-columns: 1fr
    }

    .contact-layout {
        grid-template-columns: 1fr
    }

    .policy-links {
        grid-template-columns: 1fr
    }

    .values-row {
        grid-template-columns: repeat(2,1fr)
    }
}

@media(max-width:767.98px) {
    .split-heading {
        align-items: start;
        flex-direction: column
    }

    .route-grid, .shortcut-grid, .experience-grid, .offer-grid, .amenity-grid, .manage-grid, .story-grid {
        grid-template-columns: 1fr
    }

    .search-result-shell {
        grid-template-columns: 1fr
    }

    .values-row {
        grid-template-columns: 1fr 1fr
    }
}

@media(max-width:575.98px) {
    .public-search-grid {
        grid-template-columns: 1fr
    }

        .public-search-grid .search-button {
            grid-column: auto
        }

    .values-row {
        grid-template-columns: 1fr
    }

    .public-topbar .container span {
        display: none
    }

    .public-topbar .container {
        justify-content: center !important
    }
}


/* Command 17 bus search */
.bus-results-hero {
    padding-bottom: 3rem
}

    .bus-results-hero h1 {
        font-size: clamp(2rem,4vw,3.4rem)
    }

.bus-search-page {
    padding-top: 1.5rem
}

.result-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem
}

.result-layout {
    display: grid;
    grid-template-columns: 270px minmax(0,1fr);
    gap: 1.1rem;
    align-items: start
}

.search-filters {
    position: sticky;
    top: 1rem;
    background: var(--ab-panel,#fff);
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    padding: 1.15rem
}

.filter-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem
}

    .filter-heading h2 {
        font-size: 1rem;
        margin: 0
    }

    .filter-heading button {
        border: 0;
        background: transparent;
        color: var(--ab-brand);
        font-size: .72rem;
        font-weight: bold
    }

.search-filters > label, .search-filters legend {
    display: block;
    font-size: .68rem;
    font-weight: bold;
    color: var(--ab-muted);
    margin: 1rem 0 .35rem
}

.search-filters .form-control, .search-filters .form-select {
    min-height: 44px;
    border-radius: .75rem;
    font-size: .76rem
}

.search-filters fieldset {
    border-top: 1px solid var(--ab-border);
    margin: 1.15rem 0;
    padding-top: .2rem
}

.amenity-check {
    display: flex !important;
    align-items: center;
    gap: .5rem;
    margin: .55rem 0 !important;
    color: var(--ab-ink) !important;
    font-weight: bold !important
}

    .amenity-check input {
        accent-color: var(--ab-brand)
    }

.bus-results {
    display: grid;
    gap: 1rem
}

.bus-result-card {
    background: var(--ab-panel,#fff);
    border: 1px solid var(--ab-border);
    border-radius: 1.1rem;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(23,32,51,.055)
}

.bus-result-main, .bus-result-footer {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.15rem 1.25rem
}

.bus-identity h2 {
    font-size: 1.05rem;
    margin: .45rem 0 .25rem
}

.bus-identity p {
    font-size: .7rem;
    color: var(--ab-muted);
    margin: 0
}

.bus-type-pill {
    display: inline-flex;
    border-radius: 999px;
    background: #fff1f2;
    color: #9f1239;
    padding: .3rem .55rem;
    font-size: .62rem;
    font-weight: bold
}

.seat-count {
    text-align: left;
    color: #047857;
    display: ruby;
}

    .seat-count strong {
        display: block;
        font-size: 1.2rem
    }

    .seat-count span {
        font-size: .84rem
    }

.journey-timeline {
    display: grid;
    grid-template-columns: auto minmax(100px,1fr) auto;
    align-items: center;
    gap: 1rem;
    padding: 1.1rem 1.25rem;
    border-top: 1px solid var(--ab-border);
    border-bottom: 1px solid var(--ab-border)
}

    .journey-timeline > div:last-child {
        text-align: right
    }

    .journey-timeline strong {
        display: block;
        font-size: 1.12rem
    }

    .journey-timeline span, .journey-timeline small {
        display: block;
        font-size: .75rem;
        color: var(--ab-muted)
    }

.duration {
    text-align: center
}

    .duration i {
        display: block;
        height: 1px;
        background: var(--ab-border);
        position: relative;
        margin-top: .4rem
    }

        .duration i:after {
            content: "";
            position: absolute;
            right: 0;
            top: -3px;
            border-left: 6px solid var(--ab-border);
            border-top: 3px solid transparent;
            border-bottom: 3px solid transparent
        }

.amenity-line {
    padding: .8rem 1.25rem;
    font-size: .69rem;
    color: var(--ab-muted)
}

    .amenity-line span {
        color: #059669
    }

.journey-points {
    border-top: 1px solid var(--ab-border)
}

    .journey-points summary {
        cursor: pointer;
        padding: .75rem 1.25rem;
        font-size: .7rem;
        font-weight: bold;
        color: var(--ab-brand)
    }

    .journey-points > div {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 1rem;
        padding: 0 1.25rem 1rem
    }

    .journey-points h3 {
        font-size: .72rem
    }

    .journey-points p {
        font-size: .68rem;
        color: var(--ab-muted);
        margin: 0
    }

.bus-result-footer {
    align-items: center;
    background: rgba(148,163,184,.045)
}

    .bus-result-footer > div {
        display: flex;
        flex-direction: column
    }

    .bus-result-footer span, .bus-result-footer small {
        font-size: .63rem;
        color: var(--ab-muted)
    }

    .bus-result-footer strong {
        font-size: 1.3rem
    }

.modify-search-panel {
    position: fixed;
    inset: 0;
    z-index: 2050;
    background: rgba(15,23,42,.68);
    display: grid;
    place-items: center;
    padding: 1rem
}

    .modify-search-panel[hidden] {
        display: none
    }

    .modify-search-panel > div {
        width: min(100%,460px);
        background: var(--ab-panel,#fff);
        border-radius: 1rem;
        padding: 1.35rem;
        position: relative
    }

    .modify-search-panel h2 {
        font-size: 1.2rem
    }

    .modify-search-panel label {
        display: block;
        font-size: .7rem;
        font-weight: bold;
        margin: .85rem 0
    }

    .modify-search-panel input {
        margin-top: .35rem;
        min-height: 46px;
        border-radius: .75rem
    }

.close-modify {
    position: absolute;
    right: 1rem;
    top: .8rem;
    border: 0;
    background: transparent;
    font-size: 1.5rem;
    color: var(--ab-muted)
}

[data-ab-theme=dark] .search-filters, [data-ab-theme=dark] .bus-result-card, [data-ab-theme=dark] .modify-search-panel > div {
    background: #151c28;
    border-color: #293244
}

@media(max-width:991.98px) {
    .result-layout {
        grid-template-columns: 1fr
    }

    .search-filters {
        position: static;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: .4rem 1rem
    }

        .search-filters .filter-heading, .search-filters fieldset, .search-filters > .btn {
            grid-column: 1/-1
        }
}

@media(max-width:575.98px) {
    .search-filters {
        grid-template-columns: 1fr
    }

        .search-filters .filter-heading, .search-filters fieldset, .search-filters > .btn {
            grid-column: auto
        }

    .bus-result-main, .bus-result-footer {
        align-items: stretch
    }

    .journey-timeline {
        gap: .5rem
    }

    .journey-points > div {
        grid-template-columns: 1fr
    }

    .bus-result-footer {
        flex-direction: column
    }

        .bus-result-footer .btn {
            width: 100%
        }
}


/* Commands 18-19 passenger booking */
.seat-booking-grid, .booking-details-grid, .review-grid {
    display: grid;
    grid-template-columns: minmax(0,1fr) 340px;
    gap: 1.25rem;
    align-items: start
}

.seat-map-card, .seat-selection-summary, .booking-section-card, .fare-summary-card {
    background: var(--ab-panel,#fff);
    border: 1px solid var(--ab-border);
    border-radius: 1.1rem
}

.seat-map-card {
    overflow: hidden
}

.seat-map-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.1rem 1.25rem;
    border-bottom: 1px solid var(--ab-border)
}

    .seat-map-toolbar > div:first-child {
        display: flex;
        flex-direction: column
    }

    .seat-map-toolbar span {
        color: var(--ab-muted);
        font-size: .72rem
    }

.deck-tabs {
    display: flex;
    padding: .2rem;
    background: rgba(148,163,184,.12);
    border-radius: .7rem
}

    .deck-tabs button {
        border: 0;
        background: transparent;
        border-radius: .55rem;
        padding: .55rem .8rem;
        font-size: .72rem;
        font-weight: bold;
        color: var(--ab-muted)
    }

        .deck-tabs button.active {
            background: var(--ab-panel,#fff);
            color: var(--ab-brand);
            box-shadow: 0 3px 10px rgba(15,23,42,.08)
        }

.seat-legend {
    display: flex;
    flex-wrap: wrap;
    gap: .7rem;
    padding: .8rem 1.25rem;
    border-bottom: 1px solid var(--ab-border);
    font-size: .65rem
}

    .seat-legend span:before {
        content: "";
        display: inline-block;
        width: .8rem;
        height: .8rem;
        border-radius: .2rem;
        margin-right: .3rem;
        vertical-align: -.12rem;
        border: 1px solid #94a3b8
    }

    .seat-legend .available:before {
        background: var(--ab-panel,#fff);
        border-color: #64748b
    }

    .seat-legend .male:before {
        background: #dbeafe;
        border-color: #3b82f6
    }

    .seat-legend .female:before {
        background: #fce7f3;
        border-color: #ec4899
    }

    .seat-legend .held:before {
        background: #fef3c7;
        border-color: #f59e0b
    }

    .seat-legend .reserved:before {
        background: #ede9fe;
        border-color: #8b5cf6
    }

    .seat-legend .booked:before {
        background: #e5e7eb;
        border-color: #9ca3af
    }

.deck-viewport {
    display: none;
    padding: 1rem;
    overflow: auto
}

    .deck-viewport.active {
        display: block
    }

.bus-deck {
    position: relative;
    width: max(320px,calc(var(--deck-width)*.52px));
    height: max(600px,calc(var(--deck-height)*.52px));
    margin: 0 auto;
    border: 2px solid #94a3b8;
    border-radius: 2rem 2rem 1rem 1rem;
    background: linear-gradient(90deg,rgba(148,163,184,.07),transparent 15% 85%,rgba(148,163,184,.07))
}

.layout-item {
    position: absolute;
    left: calc(var(--x)*.52px);
    top: calc(var(--y)*.52px);
    width: max(24px,calc(var(--w)*.52px));
    height: max(24px,calc(var(--h)*.52px));
    transform: rotate(var(--r));
    display: grid;
    place-items: center;
    border: 1px solid #94a3b8;
    border-radius: 5px;
    background: var(--ab-panel,#fff);
    color: var(--ab-ink);
    font-size: .58rem;
    font-weight: bold;
    transition: .15s ease
}

    .layout-item.item-sleeper {
        border-radius: 5px;
    }

    .layout-item.item-driver {
        border-radius: 50%;
        background: #e2e8f0
    }

    .layout-item.item-aisle, .layout-item.item-wall, .layout-item.item-invalid {
        border-style: dashed;
        background: rgba(148,163,184,.08);
        color: #94a3b8
    }

    .layout-item.item-door {
        border-radius: 22px 0 0 0;
        background: #fef3c7;
        color: #92400e;
        box-shadow: none
    }

    .layout-item.item-stair {
        background: #f1f5f9;
        color: #475569
    }

    .layout-item.status-available:hover {
        border-color: var(--ab-brand);
        transform: rotate(var(--r)) scale(1.08)
    }

    .layout-item.gender-m {
        background: #dbeafe;
        border-color: #3b82f6;
        color: #1e40af
    }

    .layout-item.gender-f {
        background: #fce7f3;
        border-color: #ec4899;
        color: #9d174d
    }

    .layout-item.status-held, .layout-item.status-held_by_you, .layout-item.status-held_by_other {
        background: #fef3c7;
        border-color: #f59e0b;
        color: #92400e
    }

    .layout-item.status-reserved {
        background: #ede9fe;
        border-color: #8b5cf6
    }

    .layout-item.status-booked, .layout-item.status-blocked {
        background: #e5e7eb;
        border-color: #9ca3af;
        color: #9ca3af
    }

    .layout-item.selected {
        background: var(--ab-brand);
        border-color: var(--ab-brand-dark);
        color: #fff;
        box-shadow: 0 0 0 3px rgba(198,40,40,.18)
    }

        .layout-item.selected.selected-male {
            background: #dbeafe;
            border-color: #3b82f6;
            color: #1e40af;
            box-shadow: 0 0 0 3px rgba(59,130,246,.2)
        }

        .layout-item.selected.selected-female {
            background: #fce7f3;
            border-color: #ec4899;
            color: #9d174d;
            box-shadow: 0 0 0 3px rgba(236,72,153,.2)
        }

[data-ab-theme=dark] .seat-legend .available:before, [data-ab-theme=dark] .layout-item.status-available {
    background: #151c28;
    border-color: #94a3b8;
    color: #f8fafc
}

[data-ab-theme=dark] .layout-item.gender-m, [data-ab-theme=dark] .layout-item.selected.selected-male {
    background: #17345f;
    border-color: #60a5fa;
    color: #dbeafe
}

[data-ab-theme=dark] .layout-item.gender-f, [data-ab-theme=dark] .layout-item.selected.selected-female {
    background: #4a1835;
    border-color: #f472b6;
    color: #fce7f3
}

[data-ab-theme=dark] .layout-item.status-held, [data-ab-theme=dark] .layout-item.status-held_by_you, [data-ab-theme=dark] .layout-item.status-held_by_other {
    background: #4a3510;
    border-color: #fbbf24;
    color: #fef3c7
}

[data-ab-theme=dark] .layout-item.status-reserved {
    background: #30245b;
    border-color: #a78bfa;
    color: #ede9fe
}

.seat-selection-summary, .fare-summary-card {
    position: sticky;
    top: 1rem;
    padding: 1.25rem
}

    .seat-selection-summary h2, .fare-summary-card h2 {
        font-size: 1.15rem;
        margin: .5rem 0
    }

    .fare-summary-card h3 small {
        display: block;
        margin-top: .2rem;
        color: var(--ab-muted);
        font-size: .78rem;
        font-weight: 600
    }

.selected-seat-list {
    display: grid;
    gap: .55rem;
    margin: 1rem 0
}

.selection-empty {
    padding: 1rem;
    text-align: center;
    border: 1px dashed var(--ab-border);
    border-radius: .7rem;
    color: var(--ab-muted);
    font-size: .72rem
}

.selected-seat-row {
    display: grid;
    grid-template-columns: auto 1fr 100px auto;
    align-items: center;
    gap: .45rem;
    border-bottom: 1px solid var(--ab-border);
    padding-bottom: .55rem;
    font-size: .7rem
}

    .selected-seat-row span {
        text-align: right
    }

    .selected-seat-row select {
        border: 1px solid var(--ab-border);
        border-radius: .5rem;
        padding: .35rem;
        background: var(--ab-panel,#fff);
        color: var(--ab-ink)
    }

    .selected-seat-row button {
        border: 0;
        background: transparent;
        color: var(--ab-brand);
        font-size: 1.1rem
    }

.selection-total, .fare-grand-total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-top: 1px solid var(--ab-border);
    padding: 1rem 0
}

    .selection-total strong, .fare-grand-total strong {
        font-size: 1.3rem
    }

.hold-note {
    font-size: .65rem;
    color: var(--ab-muted);
    margin: .8rem 0 0
}

.booking-form-stack {
    display: flex;
    flex-direction: column;
    gap: 1rem
}

.booking-details-grid > *, .booking-form-stack, .booking-section-card, .traveller-section, .inline-saved-passengers, .saved-passenger-list {
    min-width: 0
}

.booking-section-card {
    padding: 1.25rem
}

.section-card-heading {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1rem
}

    .section-card-heading h2 {
        font-size: 1.05rem;
        margin: .35rem 0 0
    }

.passenger-detail-row {
    display: grid;
    grid-template-columns: 80px minmax(180px,1fr) 90px 100px minmax(150px,.7fr);
    gap: .7rem;
    align-items: start;
    padding: 1rem 0;
    border-top: 1px solid var(--ab-border)
}

    .passenger-detail-row:first-of-type {
        border-top: 0
    }

.seat-chip {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    border-radius: .65rem;
    background: #feecee;
    color: var(--ab-brand);
    padding: .5rem;
    font-size: .7rem;
    font-weight: bold
}

    .seat-chip small {
        font-size: .55rem;
        color: var(--ab-muted)
    }

.gender-readonly {
    min-height: 52px;
    border: 1px solid var(--ab-border);
    border-radius: .75rem;
    padding: .5rem .65rem;
    display: flex;
    flex-direction: column
}

    .gender-readonly span {
        font-size: .6rem;
        color: var(--ab-muted)
    }

    .gender-readonly strong {
        font-size: .78rem
    }

.save-passenger-check {
    grid-column: 2/-1;
    font-size: .7rem
}

.form-grid-2, .form-grid-3 {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: .8rem
}

.form-grid-3 {
    grid-template-columns: repeat(3,minmax(0,1fr))
}

.gst-toggle {
    display: flex;
    align-items: center;
    gap: .8rem
}

    .gst-toggle > span {
        display: flex;
        flex-direction: column
    }

    .gst-toggle small {
        color: var(--ab-muted)
    }

.gst-fields {
    margin-top: 1rem
}

    .gst-fields[hidden] {
        display: none
    }

.terms-acceptance {
    display: flex;
    gap: .6rem;
    align-items: start;
    background: #fff7ed;
    color: #9a3412;
    padding: 1rem;
    border-radius: .9rem;
    font-size: .75rem
}

    .terms-acceptance input[type=checkbox] {
        appearance: auto !important;
        -webkit-appearance: checkbox !important;
        width: 1rem !important;
        height: 1rem !important;
        margin: .08rem 0 0 !important;
        border-radius: .15rem !important;
        accent-color: var(--ab-brand)
    }

.coupon-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: .5rem;
    margin: 1rem 0
}

.coupon-message {
    font-size: .68rem;
    color: #047857
}

.fare-lines {
    margin: 1rem 0
}

    .fare-lines > div {
        display: flex;
        justify-content: space-between;
        gap: 1rem;
        padding: .4rem 0;
        font-size: .72rem
    }

    .fare-lines dt {
        font-weight: 500;
        color: var(--ab-muted)
    }

    .fare-lines dd {
        margin: 0;
        font-weight: bold
    }

.hold-countdown {
    border-radius: .7rem;
    background: #fff7ed;
    color: #9a3412;
    padding: .7rem;
    text-align: center;
    font-size: .7rem
}

    .hold-countdown.expired {
        background: #fff1f2;
        color: #9f1239
    }

.saved-passenger-list {
    display: flex;
    flex-wrap: nowrap;
    gap: .6rem;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    padding: .15rem .15rem 1.15rem;
    margin-bottom: .35rem;
    scrollbar-width: thin;
    scroll-snap-type: x proximity
}

.saved-passenger {
    border: 1px solid #fdba74;
    border-radius: .55rem;
    background: #fff4e8;
    color: #7c2d12;
    padding: .7rem 1.15rem;
    display: flex;
    flex: 0 0 auto;
    flex-direction: column;
    text-align: left;
    cursor: pointer;
    min-width: 104px;
    max-width: 180px;
    scroll-snap-align: start;
    transition: background-color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease
}

    .saved-passenger span {
        font-size: .62rem;
        color: #9a4a19;
        white-space: nowrap
    }

    .saved-passenger:hover {
        border-color: #fb923c;
        background: #ffedd5;
        box-shadow: 0 3px 10px rgba(194,65,12,.12);
        transform: translateY(-1px)
    }

    .saved-passenger.is-selected {
        border-color: #f97316;
        background: #fed7aa;
        box-shadow: 0 0 0 3px rgba(249,115,22,.14)
    }

.saved-passenger-notice {
    color: #b42318 !important;
    margin-top: .55rem !important;
    font-weight: 600
}

.saved-passenger-search {
    width: min(320px,100%);
    min-height: 38px;
    margin: .55rem 0 .45rem;
    font-size: .78rem
}

.saved-passenger-empty {
    width: 100%;
    padding: .75rem;
    border: 1px dashed #bfdbfe;
    border-radius: .55rem;
    background: rgba(255,255,255,.6);
    color: var(--ab-muted);
    font-size: .72rem
}

.passenger-detail-row.saved-passenger-filled {
    border-color: var(--ab-brand);
    box-shadow: 0 0 0 3px rgba(198,40,40,.08);
    transition: border-color .2s ease,box-shadow .2s ease
}

input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0
}

input[type=number] {
    -moz-appearance: textfield;
    appearance: textfield
}

.journey-review {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 1rem
}

    .journey-review h2 {
        font-size: 1.25rem;
        margin: .4rem 0
    }

    .journey-review p {
        font-size: .72rem;
        color: var(--ab-muted)
    }

    .journey-review > div:last-child {
        display: grid;
        grid-template-columns: auto auto;
        gap: .35rem 1rem;
        font-size: .7rem
    }

        .journey-review > div:last-child span {
            color: var(--ab-muted)
        }

.review-passengers {
    display: grid;
    gap: .5rem
}

    .review-passengers > div {
        display: grid;
        grid-template-columns: auto 1fr auto;
        gap: .4rem .8rem;
        align-items: center;
        padding: .7rem 0;
        border-top: 1px solid var(--ab-border)
    }

    .review-passengers small {
        grid-column: 2
    }

    .review-passengers b {
        grid-column: 3;
        grid-row: 1/3
    }

.gst-review {
    display: flex;
    flex-direction: column;
    border-top: 1px solid var(--ab-border);
    padding-top: .8rem;
    font-size: .72rem
}

.review-notice {
    background: #eff6ff;
    color: #1e40af;
    padding: 1rem;
    border-radius: .8rem;
    font-size: .75rem
}

[data-ab-theme=dark] .seat-map-card, [data-ab-theme=dark] .seat-selection-summary, [data-ab-theme=dark] .booking-section-card, [data-ab-theme=dark] .fare-summary-card {
    background: #151c28;
    border-color: #293244
}

.bus-deck {
    min-width: 0 !important;
    min-height: 0 !important;
    width: calc(var(--deck-width)*.52px) !important;
    height: calc(var(--deck-height)*.52px) !important
}

    .bus-deck > .layout-item {
        min-width: 0 !important;
        min-height: 0 !important;
        width: calc(var(--w)*.52px) !important;
        height: calc(var(--h)*.52px) !important
    }

.layout-item.item-toilet {
    border-color: #0891b2;
    background: #ecfeff;
    color: #155e75
}

.layout-item.item-emergency_exit {
    overflow: visible;
    border: 0 !important;
    background: transparent !important;
    color: #64748b !important;
    box-shadow: none !important
}

    .layout-item.item-emergency_exit > span {
        overflow: visible;
        white-space: nowrap;
        font-size: .45rem;
        font-weight: bold;
        text-align: center
    }

        .layout-item.item-emergency_exit > span:before {
            content: "";
            display: block;
            width: 68%;
            height: 7px;
            margin: 0 auto 4px;
            border-right: 1.5px solid currentColor;
            border-bottom: 1.5px solid currentColor;
            border-left: 1.5px solid currentColor;
            border-radius: 0 0 3px 3px
        }

[data-ab-theme=dark] .layout-item.item-emergency_exit {
    color: #aab4c4 !important
}

[data-ab-theme=dark] .layout-item.status-booked, [data-ab-theme=dark] .layout-item.status-blocked {
    background: #293244;
    color: #64748b
}

@media(max-width:991.98px) {
    .seat-booking-grid, .booking-details-grid, .review-grid {
        grid-template-columns: 1fr
    }

    .seat-selection-summary, .fare-summary-card {
        position: static
    }

    .passenger-detail-row {
        grid-template-columns: 70px 1fr 90px
    }

        .passenger-detail-row .gender-readonly {
            grid-column: auto
        }

        .passenger-detail-row > div:nth-of-type(4) {
            grid-column: 2/4
        }

    .form-grid-3 {
        grid-template-columns: 1fr 1fr
    }
}

.connection-filter-card {
    display: grid;
    grid-template-columns: 1fr 1fr auto;
    gap: .8rem;
    align-items: end;
    background: var(--ab-panel,#fff);
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    padding: 1rem;
    margin-bottom: 1rem
}

    .connection-filter-card label {
        display: block;
        font-size: .68rem;
        font-weight: bold;
        color: var(--ab-muted);
        margin-bottom: .35rem
    }

    .connection-filter-card .form-control {
        min-height: 46px;
        border-radius: .75rem
    }

.connecting-results {
    display: grid;
    gap: 1rem
}

.connection-card {
    background: var(--ab-panel,#fff);
    border: 1px solid var(--ab-border);
    border-radius: 1.1rem;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(23,32,51,.055)
}

.connection-card-heading, .connection-card-footer {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.1rem 1.25rem
}

    .connection-card-heading h2 {
        font-size: 1.1rem;
        margin: .45rem 0 .2rem
    }

    .connection-card-heading p, .connection-card-heading small {
        font-size: .68rem;
        color: var(--ab-muted);
        margin: 0
    }

.connection-fare {
    text-align: right;
    display: flex;
    flex-direction: column
}

    .connection-fare strong {
        font-size: 1.35rem
    }

.connection-legs {
    display: grid;
    grid-template-columns: 1fr minmax(170px,.35fr) 1fr;
    border-block: 1px solid var(--ab-border)
}

    .connection-legs > section {
        display: grid;
        grid-template-columns: auto 1fr auto;
        gap: .8rem;
        align-items: center;
        padding: 1rem 1.25rem
    }

.connection-leg-number {
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #feecee;
    color: var(--ab-brand);
    font-weight: bold
}

.connection-legs h3 {
    font-size: .9rem;
    margin: .2rem 0
}

.connection-legs p, .connection-legs small {
    font-size: .62rem;
    color: var(--ab-muted);
    margin: 0
}

.connection-time {
    display: flex;
    flex-direction: column;
    text-align: right;
    font-size: .68rem
}

.connection-change {
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: center;
    padding: 1rem;
    border-inline: 1px solid var(--ab-border);
    background: rgba(148,163,184,.05);
    font-size: .68rem
}

    .connection-change span, .connection-change small {
        color: var(--ab-muted)
    }

.connection-card-footer {
    align-items: center
}

    .connection-card-footer > div {
        display: flex;
        flex-direction: column
    }

    .connection-card-footer span, .connection-card-footer small {
        font-size: .64rem;
        color: var(--ab-muted)
    }

[data-ab-theme=dark] .connection-filter-card, [data-ab-theme=dark] .connection-card {
    background: #151c28;
    border-color: #293244
}

.result-badges {
    display: flex;
    align-items: center;
    gap: .45rem;
    flex-wrap: wrap
}

.journey-kind-badge {
    display: inline-flex;
    padding: .2rem .58rem;
    border-radius: 999px;
    background: #e7f8ed;
    color: #08783d;
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .06em;
}

[data-ab-theme=dark] .journey-kind-badge {
    background: #123c2b;
    color: #70e3a6
}

.search-merchandising, .search-deals {
    margin: 1rem 0 1.25rem
}

.merchandising-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .7rem
}

    .merchandising-heading h2 {
        font-size: 1.15rem;
        margin: .15rem 0
    }

    .merchandising-heading > small {
        color: var(--ab-muted)
    }

.operator-ad-strip, .deal-strip {
    display: flex;
    gap: .75rem;
    overflow-x: auto;
    padding: .15rem 0 .55rem;
    scroll-snap-type: x proximity
}
.deal-strip-shell { position:relative; display:grid; grid-template-columns:2.35rem minmax(0,1fr) 2.35rem; align-items:center; gap:.45rem }
.deal-strip-arrow { width:2.35rem; height:2.35rem; border:1px solid var(--ab-border); border-radius:50%; background:var(--ab-surface); color:var(--ab-ink); font-size:1.35rem; box-shadow:0 5px 14px rgba(15,23,42,.08) }
.results-heading-bar { display:grid; grid-template-columns:minmax(250px,1fr) auto; align-items:center; gap:.75rem; margin-bottom:.75rem; padding:.65rem .8rem; border:1px solid #9ed8f2; border-radius:14px; background:linear-gradient(100deg,#eefaff,#eaf7ff) }
.results-heading-bar .result-count-banner,.results-heading-bar .result-sort { margin:0; border:0; background:transparent; box-shadow:none }
[data-ab-theme=dark] .results-heading-bar{border-color:#34465f;background:#111b2a}
[data-ab-theme=dark] .results-heading-bar .result-count-banner,[data-ab-theme=dark] .results-heading-bar .result-sort{background:#16243a;color:#f8fafc}
[data-ab-theme=dark] .results-heading-bar .result-sort button{color:#dbe7f6}
.booking-option-box,.passenger-offer-option { display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,.55fr); gap:1rem; align-items:center; margin:.75rem 0; padding:1rem; border:1px solid #dbe4f0; border-radius:14px; background:#f8fafc }
.booking-option-box { cursor:pointer; grid-template-columns:auto minmax(0,1fr) }
.booking-option-box input { width:1.15rem; height:1.15rem; accent-color:#1769e8 }
.booking-option-box span,.passenger-offer-option>div { display:flex; flex-direction:column; gap:.3rem }
.booking-option-box small,.passenger-offer-option small { color:var(--ab-muted); line-height:1.45; white-space:pre-line }
.passenger-offer-option select,.passenger-offer-option input { min-height:46px }
.offer-proof-field{display:flex;flex-direction:column;gap:.38rem;color:var(--ab-ink);font-size:.72rem;font-weight:700}
.offer-proof-field>span{display:block}
[data-ab-theme=dark] .booking-option-box,[data-ab-theme=dark] .passenger-offer-option{background:#111b2a;border-color:#34445b;color:#f8fafc}
[data-ab-theme=dark] .booking-option-box strong,[data-ab-theme=dark] .passenger-offer-option strong,[data-ab-theme=dark] .offer-proof-field{color:#f8fafc}
[data-ab-theme=dark] .booking-option-box small,[data-ab-theme=dark] .passenger-offer-option small{color:#b9c5d6}
[data-ab-theme=dark] .passenger-offer-option select,[data-ab-theme=dark] .passenger-offer-option input{background:#0b1421;border-color:#41516a;color:#f8fafc}
.clear-fare-summary .fare-summary-title { display:flex; justify-content:space-between; gap:1rem; padding-bottom:1rem; border-bottom:1px solid var(--ab-border) }
.clear-fare-summary .fare-summary-title span { display:flex; flex-direction:column }
.clear-fare-summary .fare-summary-title small { color:var(--ab-ink); font-size:1rem; font-weight:800 }
.clear-fare-summary .fare-summary-title b { color:var(--ab-muted); font-size:.72rem }
.clear-fare-summary .fare-summary-title>strong { font-size:1.45rem }
.clear-fare-summary .discount-line dd { color:#059669 }
.clear-fare-summary dt,.booking-fare-lines dt,.ticket-fare-lines dt { line-height:1.45 }
.fare-breakdown-toggle{display:inline-flex;align-items:center;justify-content:flex-start;gap:.42rem;width:auto;max-width:100%;padding:.15rem 0;border:0;background:transparent;color:inherit;text-align:left;cursor:default}
.fare-breakdown-toggle[aria-expanded]{cursor:pointer}
.fare-breakdown-toggle strong{font-weight:800;color:var(--ab-ink)}
.fare-breakdown-arrow{display:inline-grid;place-items:center;flex:0 0 1.45rem;width:1.45rem;height:1.45rem;line-height:1;border:1px solid #d8e0ec;border-radius:50%;background:#f5f8fc;font-family:Arial,sans-serif;font-size:.48rem;color:#203251;vertical-align:middle;transition:background .18s ease,border-color .18s ease}
.fare-breakdown-toggle:hover .fare-breakdown-arrow{background:#e8f0ff;border-color:#a9c3f2}
.fare-breakdown-collapsed .fare-breakdown-arrow{transform:rotate(0deg)}
.fare-breakdown-details{display:flex;flex-direction:column;gap:.15rem;margin-top:.25rem;color:var(--ab-muted);font-weight:400}
.fare-breakdown-details small{display:block;font-size:.75rem;font-weight:400;line-height:1.4}
.fare-breakdown-collapsed .fare-breakdown-details{display:none}
[data-ab-theme=dark] .fare-breakdown-arrow{background:#202a3b;border-color:#3b4b64;color:#e9f0ff}
.fare-summary-note { color:var(--ab-muted); font-size:.72rem; line-height:1.5; border-top:1px solid var(--ab-border); padding-top:.8rem }
@media(max-width:767.98px) {
 .results-heading-bar { grid-template-columns:1fr }
 .results-heading-bar .result-count-banner { order:1 }
 .results-heading-bar .result-sort { order:2 }
 .passenger-offer-option { grid-template-columns:1fr }
 .deal-strip-shell { grid-template-columns:2rem minmax(0,1fr) 2rem }
 .deal-strip-arrow { width:2rem;height:2rem }
}

.operator-ad-card {
    position: relative;
    flex: 0 0 18rem;
    height: 8rem;
    border-radius: 1rem;
    overflow: hidden;
    scroll-snap-align: start;
    color: #fff;
    text-decoration: none;
    background: #172235
}

    .operator-ad-card img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .25s
    }

    .operator-ad-card:after {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(transparent,rgba(2,9,23,.88))
    }

    .operator-ad-card span {
        position: absolute;
        z-index: 1;
        left: 1rem;
        right: 1rem;
        bottom: .8rem;
        display: flex;
        flex-direction: column
    }

    .operator-ad-card:hover img {
        transform: scale(1.035)
    }

.deal-card {
    flex: 0 0 21rem;
    display: grid;
    grid-template-columns: 2.4rem minmax(0,1fr) auto;
    align-items: center;
    gap: .65rem;
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    padding: .8rem;
    background: linear-gradient(135deg,#fff8ed,#fff1df);
    color: var(--ab-text);
    text-decoration: none;
    scroll-snap-align: start
}
.deal-card:nth-child(3n+2){background:linear-gradient(135deg,#eef9ff,#e5f3ff)}
.deal-card:nth-child(3n){background:linear-gradient(135deg,#f2fff7,#e5f8ec)}
.deal-card>div>a{display:flex;flex-direction:column;color:inherit;text-decoration:none;margin-top:.35rem}
.deal-code{display:inline-flex;align-items:center;gap:.55rem;width:max-content;max-width:100%;padding:.26rem .52rem;border:1.5px dashed #d3222a;border-radius:7px;background:rgba(255,255,255,.7);color:#9f1720;font-size:.75rem;font-weight:900;letter-spacing:.04em}
.deal-code i{font-style:normal;color:#1769e8;font-size:.68rem}

    .deal-card > span {
        display: grid;
        place-items: center;
        width: 2.4rem;
        height: 2.4rem;
        border-radius: 50%;
        background: #e8f7ed;
        color: #068140;
        font-weight: 900
    }

    .deal-card > div {
        display: flex;
        flex-direction: column;
        min-width: 0
    }

    .deal-card small {
        color: var(--ab-muted);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis
    }

    .deal-card > b {
        color: #d3222a;
        font-size: .75rem
    }

[data-ab-theme=dark] .deal-card {
    background: #151c28;
    border-color: #2b374b
}

@media(max-width:767px) {
    .merchandising-heading {
        align-items: start;
        flex-direction: column
    }

    .operator-ad-card {
        flex-basis: 15rem
    }

    .deal-card {
        flex-basis: 18rem
    }
}

.bus-experience-page {
    display: grid;
    gap: 1rem
}

.experience-photo-stage {
    position: relative;
    min-height: 17rem;
    border: 1px solid var(--ab-border);
    border-radius: 1.3rem;
    overflow: hidden;
    background: var(--ab-panel,#fff)
}

.experience-slider figure {
    margin: 0;
    position: relative;
    height: 28rem
}

.experience-slider img {
    width: 100%;
    height: 100%;
    object-fit: cover
}

.experience-slider figcaption {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 2.8rem 1.4rem 1.2rem;
    background: linear-gradient(transparent,rgba(5,13,27,.85));
    color: #fff;
    display: flex;
    justify-content: space-between;
    gap: 1rem
}

.experience-prev, .experience-next {
    position: absolute;
    z-index: 2;
    top: 50%;
    transform: translateY(-50%);
    width: 2.8rem;
    height: 2.8rem;
    border: 0;
    border-radius: 50%;
    background: rgba(255,255,255,.9);
    color: #13213a;
    font-size: 2rem;
    line-height: 1;
    box-shadow: 0 8px 24px rgba(0,0,0,.18)
}

.experience-prev {
    left: 1rem
}

.experience-next {
    right: 1rem
}

.experience-tabs {
    display: flex;
    gap: .4rem;
    overflow-x: auto;
    padding: .65rem;
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    background: var(--ab-panel,#fff);
    position: sticky;
    top: 5rem;
    z-index: 5
}

    .experience-tabs a {
        white-space: nowrap;
        padding: .65rem .85rem;
        border-radius: .65rem;
        color: var(--ab-text);
        font-weight: 700;
        text-decoration: none
    }

        .experience-tabs a:hover {
            background: #e9f1ff;
            color: #075dcc;
        }

.experience-card {
    padding: 1.25rem;
    border: 1px solid var(--ab-border);
    border-radius: 1.1rem;
    background: var(--ab-panel,#fff)
}

    .experience-card h2 {
        font-size: 1.2rem;
        font-weight: bold;
        margin: 0 0 1rem
    }

.experience-chips {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem
}

    .experience-chips span {
        padding: .55rem .75rem;
        border-radius: .7rem;
        background: #edf7ff;
        color: #0d4e8b;
        font-weight: 700
    }

.experience-grid, .meal-plan-grid {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: .75rem
}

    .experience-grid article, .meal-plan-grid article {
        padding: 1rem;
        border: 1px solid var(--ab-border);
        border-radius: .85rem;
        display: flex;
        flex-direction: column;
        gap: .3rem
    }

.rest-stop, .review-row {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 0;
    border-bottom: 1px solid var(--ab-border)
}

    .rest-stop > div, .review-row > div {
        display: flex;
        flex-direction: column
    }

.meal-diet {
    width: .9rem;
    height: .9rem;
    border: 2px solid #149b54;
    position: relative
}

    .meal-diet:after {
        content: "";
        position: absolute;
        inset: .18rem;
        border-radius: 50%;
        background: #149b54
    }

    .meal-diet.nonveg {
        border-color: #c83737
    }

        .meal-diet.nonveg:after {
            background: #c83737
        }

.review-score {
    height: max-content;
    padding: .25rem .25rem;
    border-radius: .45rem;
    background: #08783d;
    color: #fff;
    font-weight: 600
}

.policy-accordion details {
    border-bottom: 1px solid var(--ab-border);
    padding: .8rem 0
}

.policy-accordion summary {
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: .15rem
}

    .policy-accordion summary span {
        font-size: .67rem;
        color: #d9272e;
        font-weight: 800;
        letter-spacing: .08em
    }

.experience-empty {
    padding: 1rem;
    border-radius: .75rem;
    background: var(--ab-soft,#f3f6fb);
    color: var(--ab-muted)
}

[data-ab-theme=dark] .experience-photo-stage, [data-ab-theme=dark] .experience-tabs, [data-ab-theme=dark] .experience-card {
    background: #151c28;
    border-color: #2b374b
}

.wallet-topup-card {
    max-width: 52rem
}

.wallet-topup-mark {
    width: 3.3rem;
    height: 3.3rem;
    border-radius: 1rem;
    display: grid;
    place-items: center;
    background: #e7f8ed;
    color: #08783d;
    font-size: 1.5rem;
    font-weight: 900
}

.topup-presets {
    display: flex;
    gap: .55rem;
    flex-wrap: wrap;
    margin: 1rem 0
}

    .topup-presets button {
        border: 1px solid var(--ab-border);
        border-radius: 999px;
        padding: .45rem .8rem;
        background: var(--ab-panel,#fff);
        color: var(--ab-text);
        font-weight: 700
    }

        .topup-presets button:hover {
            border-color: #ff6500;
            color: #ff6500
        }

.wallet-success-card {
    max-width: 48rem;
    margin: 3rem auto;
    text-align: center;
    padding: 2.5rem
}

.wallet-success-icon {
    display: grid;
    place-items: center;
    width: 4rem;
    height: 4rem;
    margin: 0 auto 1rem;
    border-radius: 50%;
    background: #e5f8eb;
    color: #078141;
    font-size: 2rem;
    font-weight: 900
}

.wallet-success-card .table-actions {
    justify-content: center
}

@media(max-width:767px) {
    .experience-slider figure {
        height: 17rem
    }

    .experience-grid, .meal-plan-grid {
        grid-template-columns: 1fr
    }

    .experience-tabs {
        top: 3.8rem
    }

    .rest-stop, .review-row {
        flex-direction: column
    }

    .experience-photo-stage {
        min-height: 13rem
    }
}

/* Stable left-aligned passenger review layout. */
.review-row {
    display: grid;
    grid-template-columns: 4rem minmax(0,1fr);
    align-items: start;
    justify-content: initial;
    text-align: center;
}

    .review-row .review-content {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        width: 100%;
        min-width: 0;
        text-align: left
    }

        .review-row .review-content strong, .review-row .review-content p, .review-row .review-content small {
            width: 100%;
            text-align: left
        }

.review-content small {
    font-size: .75rem;
}

@media(max-width:767px) {
    .review-row {
        grid-template-columns: 1fr
    }

        .review-row .review-score {
            justify-self: start
        }
}
/* Interactive bus gallery, sticky section navigation and amenity pictograms. */
.experience-photo-stage {
    background: #0c1527;
    isolation: isolate
}

.experience-slider figure {
    overflow: hidden;
    background: #0c1527
}

.experience-photo-viewport {
    height: 100%;
    display: grid;
    place-items: center;
    overflow: hidden;
    touch-action: none;
    cursor: grab
}

.experience-photo-stage.is-zoomed .experience-photo-viewport {
    cursor: grabbing
}

.experience-slider .experience-photo-viewport img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    transform-origin: center;
    will-change: transform;
    transition: transform .08s linear;
    user-select: none;
    -webkit-user-drag: none
}

.experience-viewer-controls {
    position: absolute;
    z-index: 4;
    right: 1rem;
    top: 1rem;
    display: grid;
    gap: .45rem
}

    .experience-viewer-controls button {
        width: 2.45rem;
        height: 2.45rem;
        border: 1px solid rgba(255,255,255,.35);
        border-radius: .55rem;
        background: rgba(8,17,33,.86);
        color: #fff;
        font-size: 1.25rem;
        font-weight: 700;
        display: grid;
        place-items: center;
        box-shadow: 0 6px 20px rgba(0,0,0,.25)
    }

        .experience-viewer-controls button:hover, .experience-viewer-controls button:focus-visible {
            background: #ff6500;
            border-color: #ff6500;
            outline: 2px solid #fff;
            outline-offset: 2px
        }

.experience-viewer-help {
    position: absolute;
    z-index: 3;
    left: 1rem;
    bottom: .65rem;
    padding: .35rem .55rem;
    border-radius: .45rem;
    background: rgba(8,17,33,.72);
    color: #fff;
    font-size: .72rem;
    pointer-events: none
}

.experience-tabs {
    align-self: start;
    top: calc(var(--public-header-height,4.6rem) + .5rem);
    box-shadow: 0 8px 24px rgba(15,31,55,.08);
    scrollbar-width: thin
}

    .experience-tabs a.active, .experience-tabs a:focus-visible {
        background: #e5efff;
        color: #075dcc;
        outline: none;
    }

.experience-card {
    scroll-margin-top: calc(var(--public-header-height,4.6rem) + 6rem)
}

.amenity-experience-grid article {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: .85rem
}

    .amenity-experience-grid article > div {
        display: flex;
        flex-direction: column;
        gap: .22rem
    }

.amenity-symbol {
    flex: 0 0 2.75rem;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: .8rem;
    display: grid;
    place-items: center;
    background: #eaf2ff;
    color: #0b5fc6;
    font-size: 1.35rem;
    font-weight: 800
}

    .amenity-symbol:before {
        content: "✓"
    }

.amenity-symbol-wifi:before {
    content: "⌁"
}

.amenity-symbol-charging:before {
    content: "⚡"
}

.amenity-symbol-toilet:before {
    content: "WC";
    font-size: .78rem
}

.amenity-symbol-water:before {
    content: "●"
}

.amenity-symbol-blanket:before {
    content: "▤"
}

.amenity-symbol-ac:before {
    content: "❄"
}

.amenity-symbol-tv:before {
    content: "▣"
}

.amenity-symbol-tracking:before {
    content: "⌖"
}

.amenity-symbol-food:before {
    content: "♨"
}

.amenity-symbol-reading:before {
    content: "◉"
}

.amenity-symbol-safety:before {
    content: "+"
}

[data-ab-theme=dark] .amenity-symbol {
    background: #202e45;
    color: #82b6ff
}

[data-ab-theme=dark] .experience-tabs a.active {
    background: #233451;
    color: #a9ccff
}

@media(max-width:767px) {
    .experience-viewer-controls {
        right: .65rem;
        top: .65rem
    }

        .experience-viewer-controls button {
            width: 2.25rem;
            height: 2.25rem
        }

    .experience-viewer-help {
        left: .55rem;
        right: .55rem;
        bottom: .45rem;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis
    }

    .experience-tabs {
        top: calc(var(--public-header-height,3.8rem) + .25rem);
        border-radius: .75rem;
        padding: .45rem
    }

    .experience-card {
        scroll-margin-top: calc(var(--public-header-height,3.8rem) + 5.25rem)
    }
}

/* Always present the complete photo before the passenger chooses to zoom it. */
.experience-photo-viewport {
    padding: .75rem
}

.experience-slider .experience-photo-viewport img {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain
}

.seat-bus-details-panel {
    padding: 1.4rem;
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    background: var(--ab-panel,#fff)
}

.seat-experience-links {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    margin-top: 1rem
}

    .seat-experience-links a {
        padding: .65rem .8rem;
        border: 1px solid var(--ab-border);
        border-radius: .7rem;
        color: var(--ab-text);
        font-weight: 700;
        text-decoration: none
    }

        .seat-experience-links a:hover {
            border-color: #1769e0;
            color: #1769e0;
            background: #eef5ff
        }

.seat-bus-details-panel h2 {
    margin: .3rem 0;
    font-size: 1.25rem;
}

.seat-bus-details-panel p {
    margin: 0;
    color: var(--ab-muted);
    font-size: .75rem;
}

.seat-details-note {
    margin: 1rem 0 0;
    color: var(--ab-muted)
}

.seat-bus-details-frame {
    display: block;
    width: 100%;
    height: min(78vh,900px);
    min-height: 620px;
    margin-top: 1rem;
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    background: var(--ab-panel,#fff)
}

.result-experience-tabs {
    display: flex;
    gap: .15rem;
    overflow-x: auto;
    padding: .65rem 0;
    border-top: 1px dashed var(--ab-border);
    scrollbar-width: thin
}

    .result-experience-tabs a {
        white-space: nowrap;
        padding: .5rem .7rem;
        border-right: 1px solid var(--ab-border);
        color: #597bf4;
        font-size: .78rem;
        font-weight: bold;
        text-decoration: none
    }

        .result-experience-tabs a:hover {
            color: #d9272e
        }

.connection-experience {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .65rem;
    margin-top: .8rem
}

    .connection-experience details {
        border: 1px solid var(--ab-border);
        border-radius: .7rem;
        padding: .65rem
    }

    .connection-experience summary {
        cursor: pointer;
        font-weight: 750
    }

    .connection-experience .result-experience-tabs {
        margin-top: .55rem
    }

@media(max-width:767px) {
    .connection-experience {
        grid-template-columns: 1fr
    }

    .booking-step-tabs {
        overflow-x: auto
    }

        .booking-step-tabs button {
            min-width: max-content
        }
}

.experience-tab-shell {
    position: sticky;
    top: calc(var(--public-header-height,4.6rem) + .5rem);
    z-index: 8;
    display: grid;
    grid-template-columns: auto minmax(0,1fr) auto;
    align-items: center;
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    background: var(--ab-panel,#fff);
    box-shadow: 0 8px 24px rgba(15,31,55,.08);
    overflow: hidden
}

    .experience-tab-shell .experience-tabs {
        position: static;
        top: auto;
        border: 0;
        border-radius: 0;
        box-shadow: none;
        overflow-x: auto;
        scrollbar-width: none
    }

        .experience-tab-shell .experience-tabs::-webkit-scrollbar {
            display: none
        }

.experience-tab-arrow {
    width: 2.6rem;
    height: 100%;
    min-height: 3.4rem;
    border: 0;
    background: var(--ab-panel,#fff);
    color: var(--ab-text);
    font-size: 1.7rem;
    box-shadow: 0 0 14px rgba(15,31,55,.14);
    z-index: 2
}

    .experience-tab-arrow:hover {
        color: #d9272e;
        background: #fff3f3
    }

    .experience-tab-arrow[hidden] {
        display: none
    }

.bus-experience-embed .public-header, .bus-experience-embed .public-footer, .bus-experience-embed .page-hero {
    display: none !important
}

.bus-experience-embed .bus-experience-page {
    width: 100%;
    max-width: none;
    padding: 0;
    margin: 0
}

.bus-experience-embed .experience-tab-shell {
    top: 0
}

.bus-experience-embed .experience-card {
    scroll-margin-top: 4.5rem
}

@media(max-width:767px) {
    .experience-tab-shell {
        top: calc(var(--public-header-height,3.8rem) + .25rem);
        border-radius: .75rem
    }

    .experience-tab-arrow {
        width: 2.4rem
    }

    .bus-experience-embed .experience-tab-shell {
        top: 0
    }

    .seat-bus-details-frame {
        height: 76vh;
        min-height: 540px
    }
}

.bus-experience-page #photos {
    order: -1
}

.bus-experience-page .experience-tab-shell {
    order: 0
}

.bus-experience-page #highlights {
    order: 1
}

.bus-experience-page #cancellation-policy {
    order: 2
}

.bus-experience-page #reschedule-policy {
    order: 3
}

.bus-experience-page #boarding-dropping {
    order: 4
}

.bus-experience-page #amenities {
    order: 5
}

.bus-experience-page #route {
    order: 6
}

.bus-experience-page #meals {
    order: 7
}

.bus-experience-page #reviews {
    order: 8
}

.bus-experience-page #policies {
    order: 9
}

.result-tab-shell {
    display: grid;
    grid-template-columns: auto minmax(0,1fr) auto;
    align-items: stretch
}

    .result-tab-shell .result-experience-tabs {
        min-width: 0
    }

.result-tab-arrow {
    width: 2.25rem;
    border: 0;
    background: var(--ab-panel,#fff);
    color: var(--ab-text);
    font-size: 1.45rem;
    box-shadow: 0 0 12px rgba(15,31,55,.12);
    z-index: 2
}

    .result-tab-arrow:hover {
        color: #d9272e
    }

    .result-tab-arrow[hidden] {
        display: none
    }

.bus-experience-inline {
    margin-top: 1rem
}

.policy-display h2 {
    font-size: 1.2rem
}

.policy-table {
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    overflow: hidden
}

.policy-table-head, .policy-table-row {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(8rem,24%);
    align-items: center
}

.policy-table-head {
    background: var(--ab-soft,#f1f3f8)
}

    .policy-table-head > *, .policy-table-row > * {
        padding: .8rem 1rem
    }

        .policy-table-head > *:last-child, .policy-table-row > *:last-child {
            text-align: right;
            border-left: 1px solid var(--ab-border)
        }

.policy-table-row {
    border-top: 1px solid var(--ab-border)
}

.policy-rule-text {
    margin: 0;
    padding: .55rem 1rem .8rem;
    color: var(--ab-muted);
    border-top: 1px dashed var(--ab-border)
}

.policy-notes {
    margin-top: 1rem;
    color: var(--ab-muted)
}

    .policy-notes p {
        margin: .3rem 0
    }

.point-information-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem
}

.experience-point {
    display: grid;
    grid-template-columns: 4.5rem .7rem minmax(0,1fr);
    gap: .65rem;
    align-items: start;
    padding: .85rem 0;
    border-bottom: 1px solid var(--ab-border)
}

    .experience-point time, .experience-point > div {
        display: flex;
        flex-direction: column
    }

    .experience-point i {
        width: .55rem;
        height: .55rem;
        margin-top: .45rem;
        border-radius: 50%;
        background: #667085
    }

    .experience-point small {
        color: var(--ab-muted)
    }

@media(max-width:767px) {
    .point-information-grid {
        grid-template-columns: 1fr
    }

    .policy-table-head, .policy-table-row {
        grid-template-columns: minmax(0,1fr) 7rem
    }

        .policy-table-head > *, .policy-table-row > * {
            padding: .7rem
        }

    .seat-bus-details-panel {
        padding: .75rem
    }
}

.experience-bus-summary {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: start;
    padding: 1rem .25rem
}

    .experience-bus-summary h3 {
        margin: .25rem 0;
        font-size: 1.25rem
    }

    .experience-bus-summary p, .experience-bus-summary small {
        margin: 0;
        color: var(--ab-muted)
    }

.experience-rating-badge {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .15rem
}

    .experience-rating-badge span {
        padding: .35rem .65rem;
        border-radius: .55rem;
        background: #07883f;
        color: #fff;
        font-weight: 800
    }

.experience-photo-gallery-card {
    position: relative;
    min-width: 0
}

.experience-photo-gallery {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(16rem,40%);
    gap: .75rem;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none
}

    .experience-photo-gallery::-webkit-scrollbar {
        display: none
    }

    .experience-photo-gallery figure {
        position: relative;
        height: 14rem;
        margin: 0;
        border-radius: .85rem;
        overflow: hidden;
        scroll-snap-align: start;
        background: #0c1527
    }

    .experience-photo-gallery img {
        width: 100%;
        height: 100%;
        object-fit: cover
    }

    .experience-photo-gallery figcaption {
        position: absolute;
        inset: auto 0 0;
        padding: 2rem .75rem .65rem;
        background: linear-gradient(transparent,rgba(0,0,0,.78));
        color: #fff;
        display: flex;
        justify-content: space-between
    }

.gallery-arrow {
    position: absolute;
    z-index: 3;
    top: 50%;
    transform: translateY(-50%);
    width: 2.8rem;
    height: 2.8rem;
    border: 0;
    border-radius: 50%;
    background: #fff;
    color: #111827;
    font-size: 1.8rem;
    box-shadow: 0 6px 18px rgba(15,23,42,.2)
}

    .gallery-arrow.previous {
        left: .65rem
    }

    .gallery-arrow.next {
        right: .65rem
    }

    .gallery-arrow[hidden] {
        display: none
    }

.verified-review-title {
    text-align: center;
    color: #0b963f;
    font-size: 1.1rem;
    font-weight: bold;
    margin: 1rem
}

.rating-distribution {
    display: grid;
    gap: .45rem
}

.rating-bar-row {
    display: grid;
    grid-template-columns: 3rem minmax(0,1fr) 3rem;
    gap: .65rem;
    align-items: center
}

    .rating-bar-row span {
        height: .48rem;
        border-radius: 999px;
        background: #e5e7eb;
        overflow: hidden
    }

    .rating-bar-row i {
        display: block;
        height: 100%;
        border-radius: inherit;
        background: #374151
    }

    .rating-bar-row strong {
        text-align: right
    }

.ratings-experience > h3 {
    margin-top: 1.25rem
}

.review-topic-chips {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin: .7rem 0 1rem
}

    .review-topic-chips span {
        padding: .1rem .25rem;
        border-radius: .55rem;
        background: #a8f3ad;
        color: #124d21;
        font-weight: 700;
        font-size: 12px;
    }

.other-policy-list {
    display: grid;
    gap: .25rem
}

    .other-policy-list article {
        display: grid;
        grid-template-columns: 2.5rem minmax(0,1fr);
        gap: .65rem;
        padding: .75rem 0;
        border-bottom: 1px solid var(--ab-border)
    }

        .other-policy-list article > div {
            display: flex;
            flex-direction: column
        }

    .other-policy-list small {
        white-space: pre-line;
        color: var(--ab-muted)
    }

.policy-symbol {
    width: 2.2rem;
    height: 2.2rem;
    border-radius: .65rem;
    display: grid;
    place-items: center;
    background: var(--ab-soft,#eff3f9)
}

    .policy-symbol:before {
        content: "ⓘ"
    }

.policy-symbol-child:before {
    content: "☺"
}

.policy-symbol-luggage:before {
    content: "▣"
}

.policy-symbol-pets:before {
    content: "♣"
}

.policy-symbol-liquor:before {
    content: "⚠"
}

.policy-symbol-pickup-time:before {
    content: "◷"
}

@media(max-width:767px) {
    .experience-bus-summary {
        flex-direction: column
    }

    .experience-rating-badge {
        align-items: flex-start
    }

    .experience-photo-gallery {
        grid-auto-columns: 82%
    }

        .experience-photo-gallery figure {
            height: 12rem
        }
}

.experience-bus-summary {
    order: -2
}

.experience-photo-gallery img {
    object-fit: contain
}

.experience-tab-shell .experience-tabs {
    scroll-behavior: smooth;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x
}

    .experience-tab-shell .experience-tabs a {
        flex: 0 0 auto
    }

.experience-sections {
    position: relative;
    display: grid;
    gap: 1rem;
    max-height: min(72vh,54rem);
    overflow-y: auto;
    overflow-x: hidden;
    padding: .15rem .35rem .5rem .15rem;
    scroll-behavior: smooth;
    overscroll-behavior: contain;
    scrollbar-gutter: stable
}

    .experience-sections > .experience-card, .experience-sections > .experience-photo-gallery-card {
        scroll-margin-top: .25rem
    }

    .experience-sections #photos {
        order: -1
    }

    .experience-sections #highlights {
        order: 1
    }

    .experience-sections #cancellation-policy {
        order: 2
    }

    .experience-sections #reschedule-policy {
        order: 3
    }

    .experience-sections #boarding-dropping {
        order: 4
    }

    .experience-sections #amenities {
        order: 5
    }

    .experience-sections #route {
        order: 6
    }

    .experience-sections #meals {
        order: 7
    }

    .experience-sections #reviews {
        order: 8
    }

    .experience-sections #policies {
        order: 9
    }

.experience-photo-gallery figure {
    cursor: zoom-in;
    outline: none
}

    .experience-photo-gallery figure:focus-visible {
        box-shadow: 0 0 0 3px #1769e0
    }

.experience-lightbox {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: grid;
    grid-template-columns: 4rem minmax(0,1fr) 4rem;
    grid-template-rows: auto minmax(0,1fr) auto;
    align-items: center;
    background: rgba(4,10,22,.96);
    color: #fff;
    padding: 1rem
}

    .experience-lightbox[hidden] {
        display: none
    }

.experience-lightbox-toolbar {
    grid-column: 1/-1;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
    padding-bottom: .75rem
}

    .experience-lightbox-toolbar > span {
        margin-right: auto;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap
    }

    .experience-lightbox-toolbar button, .lightbox-arrow {
        border: 1px solid rgba(255,255,255,.35);
        background: rgba(18,29,49,.92);
        color: #fff;
        display: grid;
        place-items: center
    }

    .experience-lightbox-toolbar button {
        width: 2.65rem;
        height: 2.65rem;
        border-radius: .65rem;
        font-size: 1.25rem
    }

        .experience-lightbox-toolbar button:hover, .lightbox-arrow:hover {
            background: #ff6500;
            border-color: #ff6500
        }

.experience-lightbox-viewport {
    height: 100%;
    min-height: 0;
    display: grid;
    place-items: center;
    overflow: hidden;
    touch-action: none;
    cursor: grab
}

    .experience-lightbox-viewport.is-zoomed {
        cursor: grabbing
    }

    .experience-lightbox-viewport img {
        display: block;
        max-width: 100%;
        max-height: 100%;
        width: auto;
        height: auto;
        object-fit: contain;
        transform-origin: center;
        will-change: transform;
        user-select: none;
        -webkit-user-drag: none
    }

.lightbox-arrow {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    font-size: 2rem
}

.experience-lightbox-help {
    grid-column: 1/-1;
    text-align: center;
    padding-top: .75rem;
    color: #d7deea
}

.photo-lightbox-open {
    overflow: hidden
}

.experience-lightbox:fullscreen {
    padding: 1rem;
    background: #040a16
}

@media(max-width:767px) {
    .experience-sections {
        max-height: 68vh;
        padding-right: .2rem;
        scrollbar-gutter: auto
    }

    .experience-tab-shell .experience-tabs {
        scroll-snap-type: x proximity
    }

        .experience-tab-shell .experience-tabs a {
            scroll-snap-align: center
        }

    .experience-lightbox {
        grid-template-columns: 2.7rem minmax(0,1fr) 2.7rem;
        padding: .5rem
    }

    .experience-lightbox-toolbar {
        gap: .3rem
    }

        .experience-lightbox-toolbar > span {
            display: none
        }

        .experience-lightbox-toolbar button {
            width: 2.35rem;
            height: 2.35rem
        }

    .lightbox-arrow {
        width: 2.4rem;
        height: 2.4rem;
        font-size: 1.6rem
    }

    .experience-lightbox-help {
        font-size: .7rem
    }
}

.experience-tab-arrow[disabled], .booking-tab-arrow[disabled] {
    opacity: .3;
    cursor: default;
    pointer-events: none
}

.experience-tab-shell .experience-tabs {
    scroll-snap-type: none !important
}

.experience-rating-badge {
    text-decoration: none;
    cursor: pointer;
    border: 0;
    background: transparent
}

    .experience-rating-badge:hover span, .experience-rating-badge:focus-visible span {
        background: #056b32;
        box-shadow: 0 0 0 3px rgba(7,136,63,.2)
    }

    .experience-rating-badge:focus-visible {
        outline: none
    }

.booking-tab-shell {
    display: grid;
    grid-template-columns: auto minmax(0,1fr) auto;
    align-items: stretch;
    margin: 0 0 1rem;
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    overflow: hidden;
    background: var(--ab-panel,#fff)
}

    .booking-tab-shell .booking-step-tabs {
        min-width: 0;
        margin: 0;
        border: 0;
        border-radius: 0;
        overflow-x: auto;
        scrollbar-width: none;
        scroll-behavior: smooth;
        overscroll-behavior-x: contain;
        -webkit-overflow-scrolling: touch
    }

        .booking-tab-shell .booking-step-tabs::-webkit-scrollbar {
            display: none
        }

        .booking-tab-shell .booking-step-tabs button {
            flex: 0 0 max(13rem,33.333%);
            white-space: nowrap
        }

.booking-tab-arrow {
    width: 2.65rem;
    border: 0;
    background: var(--ab-panel,#fff);
    color: var(--ab-text);
    font-size: 1.7rem;
    box-shadow: 0 0 14px rgba(15,31,55,.14);
    z-index: 2
}

    .booking-tab-arrow:not([disabled]):hover {
        color: #d9272e;
        background: #fff3f3
    }

.search-result-rating {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    width: max-content;
    margin-top: .45rem;
    text-decoration: none
}

    .search-result-rating strong {
        padding: .25rem .48rem;
        border-radius: .45rem;
        background: #07883f;
        color: #fff;
        font-size: .8rem
    }

    .search-result-rating span {
        color: var(--ab-muted);
        font-size: .78rem
    }

    .search-result-rating:hover strong, .search-result-rating:focus-visible strong {
        background: #056b32
    }

    .search-result-rating:focus-visible {
        outline: 2px solid #1769e0;
        outline-offset: 2px;
        border-radius: .35rem
    }

@media(max-width:767px) {
    .booking-tab-arrow {
        width: 2.35rem
    }

    .booking-tab-shell .booking-step-tabs button {
        flex-basis: auto;
        min-width: max-content
    }

    .experience-sections {
        scroll-padding-top: 0
    }
}

@media(max-width:991.98px) {
    .connection-legs {
        grid-template-columns: 1fr
    }

    .connection-change {
        border-inline: 0;
        border-block: 1px solid var(--ab-border)
    }

    .connection-card-footer {
        align-items: stretch
    }
}

@media(max-width:575.98px) {
    .connection-filter-card {
        grid-template-columns: 1fr
    }

    .connection-card-heading, .connection-card-footer {
        flex-direction: column
    }

    .connection-fare {
        text-align: left
    }

    .connection-legs > section {
        grid-template-columns: auto 1fr
    }

    .connection-time {
        grid-column: 2;
        text-align: left
    }

    .connection-card-footer .btn {
        width: 100%
    }
}

@media(max-width:575.98px) {
    .seat-map-toolbar {
        align-items: flex-start;
        flex-direction: column
    }

    .passenger-details-page {
        width: 100%;
        max-width: 100%;
        overflow-x: hidden;
        padding-left: .75rem;
        padding-right: .75rem
    }

        .passenger-details-page .booking-details-grid, .passenger-details-page .booking-form-stack, .passenger-details-page .booking-section-card, .passenger-details-page .traveller-section {
            width: 100%;
            max-width: 100%;
            min-width: 0
        }

        .passenger-details-page .booking-section-card {
            padding: .85rem
        }

    .passenger-detail-row {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        grid-template-columns: minmax(0,1fr) minmax(84px,.42fr);
        gap: .65rem
    }

        .passenger-detail-row > div {
            min-width: 0;
            max-width: 100%
        }

        .passenger-detail-row .seat-chip {
            grid-column: 1/-1;
            align-items: flex-start;
            width: 100%
        }

        .passenger-detail-row > div:nth-of-type(2) {
            grid-column: 1/-1
        }

        .passenger-detail-row > div:nth-of-type(3) {
            grid-column: 1
        }

        .passenger-detail-row > div:nth-of-type(4) {
            grid-column: 2
        }

        .passenger-detail-row > div:nth-of-type(5) {
            grid-column: 1/-1
        }

        .passenger-detail-row .form-control, .passenger-detail-row .form-select {
            width: 100%;
            max-width: 100%;
            min-width: 0
        }

    .save-passenger-check {
        grid-column: 1/-1;
        margin-top: .1rem
    }

    .form-grid-2, .form-grid-3 {
        grid-template-columns: 1fr
    }

    .journey-review {
        grid-template-columns: 1fr
    }

    .selected-seat-row {
        grid-template-columns: auto 1fr
    }

        .selected-seat-row select {
            grid-column: 1/3
        }

        .selected-seat-row button {
            grid-column: 3;
            grid-row: 1/3
        }
}

/* Unified search, seat and passenger journey flow. */
.direct-results {
    display: grid;
    gap: 1rem
}

.journey-point-note {
    display: flex;
    align-items: center;
    gap: .7rem;
    padding: .75rem 1.25rem;
    border-top: 1px solid var(--ab-border);
    color: #0f3a71
}

    .journey-point-note > span {
        display: grid;
        place-items: center;
        width: 28px;
        height: 28px;
        border-radius: 50%;
        background: #e8f0fb
    }

    .journey-point-note > div {
        display: flex;
        flex-direction: column
    }

    .journey-point-note strong {
        font-size: .72rem
    }

    .journey-point-note small {
        font-size: .63rem;
        color: var(--ab-muted)
    }

.sort-direction-controls {
    display: inline-flex;
    gap: .25rem;
    margin-left: .25rem;
    padding-left: .5rem;
    border-left: 1px solid var(--ab-border)
}

.result-sort .sort-direction-controls button {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    min-width: auto
}

.result-sort .sort-direction-controls b {
    font-size: .62rem
}

.location-option.recent {
    background: linear-gradient(90deg,rgba(15,58,113,.07),transparent)
}

    .location-option.recent .location-option-icon {
        color: #0f3a71
    }

.location-option.route {
    border-left: 3px solid #ff6500
}

    .location-option.route strong {
        font-weight: bold
    }

    .location-option.route .location-option-type {
        color: #0f3a71;
        font-weight: bold
    }

.location-picker input {
    padding-right: 2.6rem
}

.location-clear-button {
    position: absolute;
    z-index: 4;
    right: .65rem;
    transform: translateY(-50%);
    width: 1.75rem;
    height: 1.75rem;
    border: 0;
    border-radius: 50%;
    background: #e8eef7;
    color: #17345f;
    font-size: 18px;
    line-height: 1;
    display: grid;
    place-items: center;
    cursor: pointer
}

.location-clear-button-home {
    top: 55%
}

.location-clear-button-search {
    top: 65%
}

.location-clear-button:hover, .location-clear-button:focus {
    background: #ff6500;
    color: #fff;
    outline: none
}

.location-clear-button[hidden] {
    display: none
}

.booking-step-tabs {
    display: flex;
    gap: .5rem;
    margin: 0 0 1rem;
    padding: .35rem;
    background: var(--ab-panel,#fff);
    border: 1px solid var(--ab-border);
    border-radius: 1rem
}

    .booking-step-tabs button {
        flex: 1;
        border: 0;
        border-radius: .75rem;
        background: transparent;
        color: var(--ab-muted);
        padding: .8rem;
        font-weight: bold;
        text-align: center
    }

        .booking-step-tabs button span {
            display: inline-grid;
            place-items: center;
            width: 24px;
            height: 24px;
            margin-right: .35rem;
            border-radius: 50%;
            background: rgba(148,163,184,.15)
        }

        .booking-step-tabs button.active {
            background: #0f3a71;
            color: #fff;
            box-shadow: 0 7px 18px rgba(15,58,113,.2)
        }

            .booking-step-tabs button.active span {
                background: #ff6900;
                color: #fff
            }

.journey-point-step {
    background: var(--ab-panel,#fff);
    border: 1px solid var(--ab-border);
    border-radius: 1.1rem;
    padding: 1.25rem
}

    .journey-point-step[hidden], [data-booking-panel][hidden] {
        display: none !important
    }

.journey-point-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem
}

    .journey-point-heading h2 {
        margin: .3rem 0;
        font-size: 1.25rem
    }

    .journey-point-heading p {
        margin: 0;
        color: var(--ab-muted);
        font-size: .75rem
    }

.journey-point-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    align-items: start
}

.journey-point-card {
    overflow: hidden;
    border: 1px solid var(--ab-border);
    border-radius: 1rem;
    background: var(--ab-panel,#fff);
    box-shadow: 0 10px 28px rgba(15,23,42,.06)
}

    .journey-point-card > header {
        display: flex;
        align-items: center;
        gap: .75rem;
        padding: 1rem 1.1rem;
        border-bottom: 1px solid var(--ab-border)
    }

        .journey-point-card > header > span {
            display: grid;
            place-items: center;
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background: #e8f0fb;
            color: #0f3a71;
            font-weight: bold
        }

    .journey-point-card h3 {
        margin: 0;
        font-size: 1rem
    }

    .journey-point-card p {
        margin: .15rem 0 0;
        color: var(--ab-muted);
        font-size: .68rem
    }

.journey-point-options {
    max-height: 390px;
    overflow: auto
}

.journey-point-option {
    position: relative;
    display: grid;
    grid-template-columns: 82px 1fr 24px;
    gap: .7rem;
    align-items: center;
    padding: 1rem;
    border-bottom: 1px solid var(--ab-border);
    cursor: pointer;
    transition: .15s ease
}

    .journey-point-option:last-child {
        border-bottom: 0
    }

    .journey-point-option:hover {
        background: rgba(15,58,113,.04)
    }

    .journey-point-option.selected {
        background: #fff7ed;
        box-shadow: inset 3px 0 #ff6900
    }

    .journey-point-option input {
        position: absolute;
        opacity: 0;
        pointer-events: none
    }

    .journey-point-option time {
        align-self: start;
        white-space: nowrap
    }

        .journey-point-option time strong {
            display: block;
            font-size: 1rem;
            white-space: nowrap
        }

        .journey-point-option time small {
            display: block;
            color: #dc2626;
            font-size: .62rem;
            margin-top: .2rem
        }

    .journey-point-option > span {
        min-width: 0
    }

        .journey-point-option > span b {
            display: block;
            text-transform: uppercase;
            font-size: .85rem
        }

        .journey-point-option > span small {
            display: block;
            margin-top: .25rem;
            color: var(--ab-muted);
            font-size: .65rem;
            line-height: 1.4
        }

    .journey-point-option > i {
        display: block;
        width: 20px;
        height: 20px;
        border: 2px solid #64748b;
        border-radius: 50%
    }

    .journey-point-option.selected > i {
        border: 6px solid #ff6900
    }

.journey-point-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 1rem;
    margin-top: 1rem
}

    .journey-point-actions p {
        margin: 0;
        color: #b91c1c;
        font-size: .72rem
    }

.selected-seat-list.has-error {
    border-radius: .7rem;
    box-shadow: 0 0 0 3px rgba(220,38,38,.18)
}

.connection-journey {
    display: block;
    margin-top: .28rem;
    color: #63718a;
    font-size: .88rem;
    font-weight: 500
}

.inline-saved-passengers {
    margin: .2rem 0 .7rem;
    padding: .85rem;
    border: 1px solid #bfdbfe;
    border-radius: .85rem;
    background: #f6faff
}

.booking-hero-with-back {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem
}

.booking-back-button {
    flex: 0 0 auto
}

@media(max-width:575px) {
    .booking-hero-with-back {
        align-items: flex-start
    }

    .booking-back-button {
        padding: .55rem .7rem;
        font-size: .78rem;
        white-space: nowrap
    }
}

.inline-saved-passengers > strong, .inline-saved-passengers > small {
    display: block
}

.inline-saved-passengers > small {
    color: var(--ab-muted);
    font-size: .65rem;
    margin: .15rem 0 .65rem
}

.selected-journey-points {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .8rem
}

    .selected-journey-points.compact {
        margin-top: 1rem;
        padding-top: 1rem;
        border-top: 1px solid var(--ab-border)
    }

    .selected-journey-points article {
        display: flex;
        gap: .75rem;
        padding: .9rem;
        border: 1px solid var(--ab-border);
        border-radius: .85rem;
        background: linear-gradient(135deg,rgba(15,58,113,.05),transparent)
    }

        .selected-journey-points article > i {
            display: grid;
            place-items: center;
            flex: 0 0 30px;
            height: 30px;
            border-radius: 50%;
            background: #0f3a71;
            color: #fff;
            font-style: normal;
            font-weight: bold
        }

        .selected-journey-points article:last-child > i {
            background: #ff6900
        }

        .selected-journey-points article div {
            display: flex;
            flex-direction: column;
            min-width: 0
        }

    .selected-journey-points small {
        color: var(--ab-muted);
        font-size: .58rem;
        font-weight: bold;
        letter-spacing: .08em
    }

    .selected-journey-points strong {
        font-size: .86rem;
        margin: .15rem 0
    }

    .selected-journey-points span {
        color: var(--ab-muted);
        font-size: .65rem;
        line-height: 1.4
    }

[data-ab-theme=dark] .booking-step-tabs, [data-ab-theme=dark] .journey-point-step, [data-ab-theme=dark] .journey-point-card {
    background: #151c28;
    border-color: #293244
}

[data-ab-theme=dark] .inline-saved-passengers {
    background: #111b2b;
    border-color: #29466d
}

@media(max-width:767.98px) {
    .traveller-section > .inline-saved-passengers, .inline-saved-passengers {
        display: block !important;
        visibility: visible !important;
        opacity: 1 !important;
        height: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        overflow: hidden !important;
        margin: .5rem 0 .85rem !important;
        padding: .75rem !important
    }

        .inline-saved-passengers > strong {
            font-size: .95rem;
            line-height: 1.3
        }

        .inline-saved-passengers > small {
            line-height: 1.4
        }

        .inline-saved-passengers .saved-passenger-list {
            display: flex !important;
            visibility: visible !important;
            width: 100% !important;
            max-width: 100% !important;
            min-width: 0 !important;
            min-height: 76px;
            overflow-x: auto !important;
            overscroll-behavior-inline: contain
        }

        .inline-saved-passengers .saved-passenger-search {
            display: block !important;
            width: 100% !important;
            max-width: 100% !important;
            min-width: 0 !important;
            min-height: 44px;
            padding: .65rem .75rem
        }

        .inline-saved-passengers .saved-passenger {
            min-width: 128px;
            max-width: 176px;
            padding: .65rem .8rem
        }

            .inline-saved-passengers .saved-passenger strong {
                font-size: .88rem
            }

            .inline-saved-passengers .saved-passenger span {
                font-size: .59rem
            }
}

@media(max-width:767.98px) {
    .journey-point-columns, .selected-journey-points {
        grid-template-columns: 1fr
    }

    .journey-point-heading {
        align-items: flex-start;
        flex-direction: column
    }

    .result-sort {
        align-items: flex-start
    }

        .result-sort > div {
            flex-wrap: wrap
        }

    .sort-direction-controls {
        width: 100%;
        margin: .35rem 0 0;
        padding: .35rem 0 0;
        border-left: 0;
        border-top: 1px solid var(--ab-border)
    }
}
/* Authentication method separator. */
.auth-divider {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin: 1rem 0;
    color: var(--bs-secondary-color);
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .08em
}

    .auth-divider::before, .auth-divider::after {
        content: "";
        height: 1px;
        background: var(--bs-border-color);
        flex: 1
    }

/* Compact, theme-aware bus experience presentation. */
.experience-tab-shell .experience-tabs {
    gap: .35rem;
    padding: .45rem
}

    .experience-tab-shell .experience-tabs a {
        border: 1px solid var(--ab-border);
        border-radius: .62rem;
        padding: .5rem .7rem;
        font-size: .76rem;
        font-weight: 600
    }

        .experience-tab-shell .experience-tabs a.active {
            border-color: #1769e0
        }

.experience-card {
    padding: .9rem
}

    .experience-card h2 {
        margin-bottom: .7rem;
        font-size: 1.05rem;
        font-weight: 500
    }

.experience-sections {
    gap: .7rem
}

.policy-table-head {
    background: #e9eef6;
    color: #17243a
}

    .policy-table-head > * {
        font-weight: 500
    }

.policy-table-row, .policy-rule-text {
    font-size: .78rem
}

[data-ab-theme=dark] .policy-table-head {
    background: #253249;
    color: #eef4ff
}

[data-ab-theme=dark] .policy-table-row {
    background: #151c28
}

.experience-point {
    position: relative;
    border-bottom: 0;
    padding: .62rem 0;
    grid-template-columns: 4.2rem .7rem minmax(0,1fr)
}

    .experience-point i {
        position: relative
    }

    .experience-point:not(:last-child) i:after {
        content: "";
        position: absolute;
        left: 50%;
        top: .65rem;
        width: 2px;
        height: calc(100% + 2.1rem);
        transform: translateX(-50%);
        background: #cbd5e1
    }

    .experience-point strong {
        font-size: .8rem;
        font-weight: 500
    }

    .experience-point small, .experience-point time span {
        font-size: .68rem
    }

.amenity-experience-grid {
    display:flex;
    flex-wrap:wrap;
    gap:.4rem
}

    .amenity-experience-grid article {
        width:auto;
        min-width:0;
        gap:.32rem;
        padding:.3rem .55rem;
        border:1px solid #e5ddfb;
        border-radius:.55rem;
        background:#f3efff;
        box-shadow:none
    }

        .amenity-experience-grid article strong {
            font-size:.76rem;
            font-weight:600
        }

        .amenity-experience-grid article small {
            display:none
        }

.amenity-symbol {
    flex-basis:1rem;
    width:1rem;
    height:1rem;
    border-radius:0;
    background:transparent;
    color:#65558f;
    font-size:.75rem;
    font-weight:500
}
.amenity-symbol svg{width:1rem;height:1rem}
.amenity-experience-grid .amenity-symbol:before{content:none!important}
.experience-rating-badge.rating-badge{border:2px solid var(--rating-score,#d97706)!important;border-radius:.7rem;overflow:hidden}

.experience-empty {
    padding: .75rem;
    background: #f1f4f9;
    color: #58667b;
    border: 1px solid #dfe5ee
}

[data-ab-theme=dark] .experience-empty {
    background: #202a3b;
    color: #c4cede;
    border-color: #344158
}

.experience-photo-gallery figure {
    height: 11rem
}

.experience-bus-summary {
    padding: .65rem .2rem
}

.verified-review-title {
    font-size: .92rem;
    margin: .65rem
}

.review-row {
    padding: .7rem 0
}

.other-policy-list article {
    padding: .55rem 0
}

@media(max-width:767px) {
    .amenity-experience-grid {
        grid-template-columns: repeat(2,minmax(0,1fr))
    }

    .experience-card {
        padding: .75rem
    }

    .experience-photo-gallery figure {
        height: 10rem
    }
}

@media(max-width:480px) {
    .amenity-experience-grid {
        grid-template-columns: 1fr
    }
}

h1, h2, h3, h4, h5, h6, strong, b, .btn, .nav-link, .journey-kind-badge, .bus-type-pill {
    font-weight: bold !important
}

.wallet-available-amount { color:#0b63ce; font-weight:800 }
html[data-ab-theme="dark"] .wallet-available-amount { color:#fff }
.wallet-selection-card .section-card-heading{margin-bottom:.45rem}
.wallet-selection-card .wallet-option-box{align-items:center;margin:.45rem 0;padding:.75rem 1rem}
.wallet-selection-card .wallet-option-copy{gap:.12rem}
.wallet-selection-card .wallet-option-copy>.wallet-available-amount{display:block;line-height:1.25;margin:0}
.wallet-selection-card .wallet-option-copy>small{display:block;line-height:1.35;margin-top:.2rem}
.wallet-selection-card .btn.mt-3{margin-top:.65rem!important}
.fare-payable-total{display:flex;justify-content:space-between;align-items:center;margin:.9rem 0;padding:.35rem 0;font-size:1.08rem}
.fare-payable-total b{font-size:1.22rem}

/* Occupied female seats use a filled pink colour; available female seats stay pale. */
.seat-legend .booked-female:before, .layout-item.status-booked.booked-female { background: #be185d; border-color: #9d174d; color: #fff; }
.layout-item.status-booked.booked-female { cursor: not-allowed; border-width: 2px; }
[data-ab-theme="dark"] .seat-legend .booked-female:before, [data-ab-theme="dark"] .layout-item.status-booked.booked-female { background: #be185d; border-color: #f9a8d4; color: #fff; }

/* Saved female-only seats keep their pale pink colour, including an owned hold. */
.layout-item.status-available.gender-f, .layout-item.status-held_by_you.gender-f { background: #fce7f3; border-color: #ec4899; color: #9d174d; }
[data-ab-theme="dark"] .layout-item.status-available.gender-f, [data-ab-theme="dark"] .layout-item.status-held_by_you.gender-f { background: #4a1835; border-color: #f472b6; color: #fce7f3; }
