/* Shared typography and spacing for the bus-tour pages. */
:root {
    --tour-type-page: 28px;
    --tour-type-page-mobile: 22px;
    --tour-type-section: 20px;
    --tour-type-section-mobile: 18px;
    --tour-type-card: 16px;
    --tour-type-body: 14px;
    --tour-type-meta: 13px;
    --tour-type-meta-mobile: 12px;
    --tour-type-button: 16px;
    --tour-type-button-mobile: 15px;
    --tour-space-section: 56px;
    --tour-space-section-mobile: 32px;
    --tour-space-title-content: 28px;
    --tour-space-title-content-mobile: 18px;
    --tour-space-card-gap: 20px;
    --tour-space-card-gap-mobile: 12px;
    --tour-space-card-padding: 20px;
    --tour-space-card-padding-mobile: 16px;
}

/* Bus landing page */
.bus-hero .hero-info h1 {
    font-size: 40px;
    line-height: 1.3;
    letter-spacing: 1.5px;
    margin-bottom: 16px;
}

.bus-hero .hero-subtitle {
    font-size: 16px;
    line-height: 1.6;
    margin-bottom: 20px;
}

.bus-hero .hero-features-box {
    gap: 10px;
    margin-bottom: 20px;
}

.bus-hero .hero-feature-item {
    font-size: 14px;
    padding: 8px 16px;
}

.bus-hero .hero-actions {
    margin-top: 0;
}

.bus-hero .btn-wow {
    padding: 12px 30px;
    font-size: var(--tour-type-button);
}

.bus-collection-section,
.bus-meeting-points,
.bus-promo-split {
    padding-block: var(--tour-space-section);
}

.bus-safety-section {
    padding: var(--tour-space-section) 0;
}

.bus-collection-section .section-intro,
.bus-safety-section .section-intro,
.bus-meeting-points .section-intro {
    margin-bottom: var(--tour-space-title-content);
}

.bus-collection-section .section-intro h2,
.bus-safety-section .section-intro h2,
.bus-meeting-points .section-intro h2 {
    font-size: 24px;
    line-height: 1.35;
    margin-bottom: 12px;
}

.bus-collection-section .section-intro p,
.bus-safety-section .section-intro p,
.bus-meeting-points .section-intro p {
    font-size: var(--tour-type-body);
    line-height: 1.7;
}

.bus-collection-section .tours-grid-container {
    gap: var(--tour-space-card-gap);
}

.bus-collection-section .card-content-part {
    padding: var(--tour-space-card-padding);
}

.bus-collection-section .tour-title {
    font-size: var(--tour-type-card);
    line-height: 1.5;
    margin-bottom: 12px;
}

.bus-collection-section .tour-info-list {
    gap: 6px;
    margin-bottom: 14px;
}

.bus-collection-section .info-row {
    font-size: var(--tour-type-meta);
}

.bus-collection-section .included-items span,
.bus-collection-section .lang-en .included-items span {
    font-size: 12px;
}

.bus-collection-section .card-price-line {
    font-size: 22px;
}

.bus-collection-section .price-final {
    font-size: 24px;
}

.bus-collection-section .promotion-badge,
.bus-collection-section .promotion-deadline {
    font-size: 12px;
}

.bus-meeting-points .meeting-grid {
    gap: var(--tour-space-card-gap);
    margin-top: 24px;
}

.bus-meeting-points .m-card-content {
    padding: var(--tour-space-card-padding);
}

.bus-meeting-points .m-card-header {
    gap: 8px;
    margin-bottom: 12px;
}

.bus-meeting-points .m-card-header h3 {
    font-size: var(--tour-type-card);
}

.bus-meeting-points .m-card-tags {
    gap: 6px;
    margin-bottom: 14px;
}

.bus-meeting-points .m-card-desc p {
    font-size: var(--tour-type-body);
    line-height: 1.6;
}

.bus-meeting-points .m-note-banner {
    margin-top: 28px;
    padding: 14px 20px;
}

.bus-meeting-points .m-note-banner span {
    font-size: var(--tour-type-body);
}

.bus-promo-split .promo-badge {
    margin-bottom: 20px;
}

.bus-promo-split .promo-title {
    font-size: 24px;
    line-height: 1.4;
    margin-bottom: 18px;
}

.bus-promo-split .promo-title span:last-child {
    font-size: 20px;
    margin-top: 8px;
}

.bus-promo-split .promo-text {
    font-size: var(--tour-type-body);
    line-height: 1.7;
    margin-bottom: 24px;
}

.bus-promo-split .promo-features-grid {
    gap: 24px;
    padding-top: 28px;
}

.bus-promo-split .p-feature-item .f-icon-box {
    width: 56px;
    height: 56px;
    margin-bottom: 14px;
}

.bus-promo-split .p-feature-item h4 {
    font-size: var(--tour-type-card);
    margin-bottom: 8px;
}

.bus-promo-split .p-feature-item p {
    font-size: var(--tour-type-body);
    line-height: 1.6;
}

.bus-safety-section .safety-grid {
    gap: var(--tour-space-card-gap);
    margin-top: 28px;
}

.bus-safety-section .safety-content {
    padding: 44px 24px 24px;
}

.bus-safety-section .safety-content h3 {
    font-size: 18px;
    margin-bottom: 16px;
}

.bus-safety-section .safety-list {
    gap: 10px;
}

.bus-safety-section .safety-list li {
    font-size: var(--tour-type-body);
    line-height: 1.55;
}

/* Tour detail page */
.tour-detail-page {
    padding-bottom: var(--tour-space-section);
}

.tour-detail-page .container-1000 {
    padding-inline: 20px;
}

.tour-detail-page .tour-header-box {
    padding-top: 24px !important;
    padding-bottom: 8px;
}

.tour-detail-page .breadcrumb {
    font-size: var(--tour-type-meta);
    margin-bottom: 18px;
}

.tour-detail-page .tour-title-main {
    font-size: var(--tour-type-page);
    line-height: 1.3;
    margin-bottom: 10px;
}

.tour-detail-page .tour-subtitle {
    font-size: 16px;
    line-height: 1.5;
    margin-bottom: 12px;
}

.tour-detail-page .tour-meta-info {
    margin-bottom: 18px;
}

.tour-detail-page .tour-hashtags {
    gap: 8px;
}

.tour-detail-page .tour-gallery-grid {
    gap: 8px;
    margin-bottom: 20px;
}

.tour-detail-page .tour-quick-specs {
    gap: 16px 24px;
    padding: 24px 0;
    margin: 8px 0 24px;
}

.tour-detail-page .q-spec-item {
    gap: 12px;
}

.tour-detail-page .q-icon-box {
    width: 44px;
    height: 44px;
}

.tour-detail-page .q-label {
    font-size: 12px;
}

.tour-detail-page .q-val {
    font-size: 14px;
}

.tour-detail-page .tour-quick-badges {
    gap: 16px;
    margin-bottom: 24px;
}

.tour-detail-page .tour-intro-box {
    padding: 16px 0 28px;
}

.tour-detail-page .tour-intro-box p {
    font-size: var(--tour-type-body);
    line-height: 1.7;
}

.tour-detail-page .tour-main-content-flow > .content-section {
    padding: 28px 0;
}

.tour-detail-page .tour-main-content-flow > .content-section[style*="border-bottom"] {
    padding-bottom: 20px !important;
}

.tour-detail-page .tour-main-content-flow > .content-section[style*="padding-top: 0"] {
    padding-top: 0 !important;
}

.tour-detail-page .section-title {
    font-size: var(--tour-type-section);
    line-height: 1.35;
    margin-bottom: 20px;
    gap: 10px;
}

.tour-detail-page .section-title::before {
    width: 4px;
    height: 20px;
}

.tour-detail-page .itinerary-timeline {
    padding: 16px 0;
}

.tour-detail-page .time-block {
    margin-bottom: 32px;
}

.tour-detail-page .time-block .event h3 {
    font-size: var(--tour-type-card);
    margin-bottom: 6px;
}

.tour-detail-page .time-block .event p {
    font-size: var(--tour-type-body);
    line-height: 1.6;
}

.tour-detail-page .highlights-row {
    gap: var(--tour-space-card-gap);
}

.tour-detail-page .h-card {
    padding: var(--tour-space-card-padding);
}

.tour-detail-page .h-card h3 {
    font-size: 17px;
    margin-bottom: 10px;
}

.tour-detail-page .h-card p,
.tour-detail-page .inc-col li,
.tour-detail-page .exc-col li {
    font-size: var(--tour-type-body);
    line-height: 1.6;
}

.tour-detail-page .inclusion-table-box {
    gap: 16px;
}

.tour-detail-page .inc-col,
.tour-detail-page .exc-col {
    padding: var(--tour-space-card-padding);
}

.tour-detail-page .inc-col h3,
.tour-detail-page .exc-col h3 {
    font-size: var(--tour-type-card);
    margin-bottom: 12px;
}

.tour-detail-page .inc-col li,
.tour-detail-page .exc-col li {
    gap: 8px;
    padding: 5px 0;
}

.tour-detail-page .planner-day-box {
    padding: 24px 28px;
}

.tour-detail-page .p-day-header {
    padding: 12px 20px;
}

.tour-detail-page .p-day-title {
    font-size: 18px;
}

.tour-detail-page .planner-stream {
    padding: 24px 28px;
}

.tour-detail-page .stream-item {
    padding-bottom: 20px;
}

.tour-detail-page .itinerary-stay-card {
    margin-top: 12px;
    padding: 12px 16px;
}

.tour-detail-page .itinerary-caution {
    margin-top: 12px;
    padding: 10px 14px;
}

.tour-detail-page .tour-footer-details {
    margin-top: 16px;
    padding-top: 28px;
}

.tour-detail-page .details-table {
    margin-bottom: 32px;
}

.tour-detail-page .booking-deadline {
    padding: 12px 16px;
}

.tour-detail-page .booking-ticket {
    margin: 24px auto;
}

.tour-detail-page .ticket-main {
    padding: 28px 36px;
    gap: 24px;
}

.tour-detail-page .ticket-stub {
    padding: 28px 32px;
}

.tour-detail-page .booking-modal-header {
    padding: 20px 24px;
}

.tour-detail-page .booking-modal-header h3 {
    font-size: 20px;
}

.tour-detail-page .booking-modal-body {
    padding: 24px;
}

.tour-detail-page .booking-form-group {
    margin-bottom: 20px;
}

.tour-detail-page .booking-form-group label {
    font-size: var(--tour-type-meta);
    margin-bottom: 8px;
}

.tour-detail-page .booking-actions {
    margin-top: 24px;
    gap: 12px;
}

.tour-detail-page .booking-btn {
    padding: 14px 20px;
    font-size: var(--tour-type-button);
}

.tour-detail-page .booking-notice {
    margin-top: 20px;
    padding: 12px 16px;
    font-size: var(--tour-type-meta);
}

/* Inquiry, confirmation and finish pages */
.tour-inquiry-form-section {
    padding: var(--tour-space-section) 0;
}

.tour-inquiry-form-section .inquiry-container {
    padding-inline: 20px;
}

.tour-inquiry-form-section .tour-summary-card {
    padding: var(--tour-space-card-padding);
    margin-bottom: 24px;
}

.tour-inquiry-form-section .ts-label {
    font-size: var(--tour-type-meta);
    margin-bottom: 10px;
}

.tour-inquiry-form-section .ts-title {
    font-size: var(--tour-type-card);
    line-height: 1.45;
    margin-bottom: 10px;
}

.tour-inquiry-form-section .ts-meta {
    gap: 12px;
    font-size: var(--tour-type-meta);
}

.tour-inquiry-form-section .form-container {
    padding: 32px;
    border-radius: 16px;
}

.tour-inquiry-form-section .form-group {
    gap: 16px;
    margin-bottom: 20px;
}

.tour-inquiry-form-section .form-group label {
    font-size: var(--tour-type-body);
}

.tour-inquiry-form-section .form-group input[type="text"],
.tour-inquiry-form-section .form-group input[type="email"],
.tour-inquiry-form-section .form-group input[type="tel"],
.tour-inquiry-form-section .form-group select,
.tour-inquiry-form-section .form-group textarea {
    padding: 11px 14px;
    font-size: 16px;
}

.tour-inquiry-form-section .dual-input,
.tour-inquiry-form-section .participants-grid {
    gap: 12px;
}

.tour-inquiry-form-section .privacy-box {
    padding: 14px 18px 18px;
    margin-bottom: 16px;
}

.tour-inquiry-form-section .privacy-content,
.tour-inquiry-form-section .notice {
    font-size: var(--tour-type-meta);
}

.tour-inquiry-form-section .submit-btn,
.tour-inquiry-form-section .btn-back,
.tour-inquiry-form-section .btn-home {
    font-size: var(--tour-type-button);
}

.tour-inquiry-form-section .submit-btn {
    padding: 14px 36px;
}

.tour-inquiry-form-section .confirm-table {
    margin-bottom: 32px;
}

.tour-inquiry-form-section .confirm-table th,
.tour-inquiry-form-section .confirm-table td {
    padding: 16px;
    font-size: var(--tour-type-body);
}

.tour-inquiry-form-section .confirm-actions {
    gap: 16px;
    margin-top: 40px;
}

.tour-inquiry-form-section .btn-back {
    padding: 14px 32px;
}

.tour-inquiry-form-section .finish-info-box {
    padding: 48px 32px;
    margin-bottom: 32px;
}

.tour-inquiry-form-section .finish-icon {
    margin-bottom: 24px;
}

.tour-inquiry-form-section .finish-title {
    font-size: var(--tour-type-page) !important;
    line-height: 1.35;
    margin-bottom: 16px;
}

.tour-inquiry-form-section .finish-text {
    font-size: var(--tour-type-body);
    line-height: 1.7;
    margin-bottom: 24px;
}

.tour-inquiry-form-section .email-notice {
    padding: 16px;
    margin-bottom: 28px;
}

.tour-inquiry-form-section .email-notice p {
    font-size: var(--tour-type-body);
    line-height: 1.6;
}

.tour-inquiry-form-section .btn-home {
    padding: 14px 36px;
}

@media (max-width: 768px) {
    .bus-hero .hero-info h1 {
        font-size: 28px;
        line-height: 1.35;
        letter-spacing: 0.5px;
    }

    .bus-hero .hero-subtitle {
        font-size: 14px;
        margin-bottom: 16px;
    }

    .bus-hero .hero-feature-item {
        font-size: 13px;
        padding: 6px 12px;
    }

    .bus-hero .btn-wow {
        padding: 12px 24px;
        font-size: var(--tour-type-button-mobile);
    }

    .bus-collection-section,
    .bus-meeting-points,
    .bus-promo-split,
    .bus-safety-section {
        padding-block: var(--tour-space-section-mobile);
    }

    .bus-collection-section .section-intro,
    .bus-safety-section .section-intro,
    .bus-meeting-points .section-intro {
        margin-bottom: var(--tour-space-title-content-mobile);
    }

    .bus-collection-section .section-intro h2,
    .bus-safety-section .section-intro h2,
    .bus-meeting-points .section-intro h2 {
        font-size: var(--tour-type-section-mobile);
        margin-bottom: 10px;
    }

    .bus-collection-section .tours-grid-container {
        gap: var(--tour-space-card-gap-mobile);
    }

    .bus-collection-section .card-content-part,
    .bus-meeting-points .m-card-content {
        padding: var(--tour-space-card-padding-mobile);
    }

    .bus-collection-section .tour-title {
        font-size: var(--tour-type-card);
    }

    .bus-collection-section .info-row {
        font-size: var(--tour-type-meta-mobile);
    }

    .bus-collection-section .price-final {
        font-size: 20px;
    }

    .bus-meeting-points .meeting-grid {
        gap: var(--tour-space-card-gap-mobile);
        margin-top: var(--tour-space-title-content-mobile);
    }

    .bus-meeting-points .m-card-header h3,
    .bus-promo-split .p-feature-item h4 {
        font-size: var(--tour-type-card);
    }

    .bus-meeting-points .m-card-link {
        font-size: var(--tour-type-meta-mobile);
    }

    .bus-meeting-points .m-note-banner {
        margin-top: 18px;
        padding: 12px 16px;
    }

    .bus-promo-split .promo-title {
        font-size: 20px;
        margin-bottom: 14px;
    }

    .bus-promo-split .promo-title span:last-child {
        font-size: 18px;
    }

    .bus-promo-split .promo-features-grid {
        gap: 16px;
        padding-top: 20px;
    }

    .bus-promo-split .p-feature-item p {
        font-size: var(--tour-type-meta);
    }

    .bus-safety-section .safety-grid {
        gap: var(--tour-space-card-gap-mobile);
        margin-top: 20px;
    }

    .bus-safety-section .safety-content {
        padding: 40px 16px 16px;
    }

    .bus-safety-section .safety-content h3 {
        font-size: var(--tour-type-card);
        margin-bottom: 14px;
    }

    .bus-safety-section .safety-list {
        gap: 8px;
    }

    .tour-detail-page {
        padding-bottom: var(--tour-space-section-mobile);
    }

    .tour-detail-page .container-1000,
    .tour-inquiry-form-section .inquiry-container {
        padding-inline: 16px;
    }

    .tour-detail-page .tour-header-box {
        padding-top: 16px !important;
    }

    .tour-detail-page .breadcrumb {
        font-size: var(--tour-type-meta-mobile);
        margin-bottom: 14px;
    }

    .tour-detail-page .tour-title-main {
        font-size: var(--tour-type-page-mobile);
        margin-bottom: 8px;
    }

    .tour-detail-page .tour-subtitle {
        font-size: 14px;
        margin-bottom: 10px;
    }

    .tour-detail-page .tour-meta-info {
        margin-bottom: 14px;
    }

    .tour-detail-page .tour-gallery-grid {
        margin-bottom: 16px;
    }

    .tour-detail-page .tour-quick-specs {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 16px 12px;
        padding: 18px 0;
        margin-bottom: 18px;
    }

    .tour-detail-page .q-spec-item {
        gap: 10px;
        min-width: 0;
    }

    .tour-detail-page .q-icon-box {
        width: 40px;
        height: 40px;
    }

    .tour-detail-page .q-val {
        font-size: var(--tour-type-meta);
        overflow-wrap: anywhere;
    }

    .tour-detail-page .tour-quick-badges {
        gap: 12px;
        margin-bottom: 18px;
        flex-wrap: wrap;
    }

    .tour-detail-page .tour-main-content-flow > .content-section {
        padding: 24px 0;
    }

    .tour-detail-page .tour-main-content-flow > .content-section[style*="border-bottom"] {
        padding-bottom: 16px !important;
    }

    .tour-detail-page .section-title {
        font-size: var(--tour-type-section-mobile);
        margin-bottom: 16px;
        gap: 8px;
    }

    .tour-detail-page .section-title::before {
        width: 3px;
        height: 18px;
    }

    .tour-detail-page .highlights-row,
    .tour-detail-page .inclusion-table-box {
        gap: var(--tour-space-card-gap-mobile);
    }

    .tour-detail-page .h-card,
    .tour-detail-page .inc-col,
    .tour-detail-page .exc-col {
        padding: var(--tour-space-card-padding-mobile);
    }

    .tour-detail-page .h-card h3,
    .tour-detail-page .inc-col h3,
    .tour-detail-page .exc-col h3 {
        font-size: var(--tour-type-card);
    }

    .tour-detail-page .planner-day-box {
        padding: 20px 16px;
    }

    .tour-detail-page .p-day-header {
        padding: 11px 16px;
    }

    .tour-detail-page .p-day-title {
        font-size: var(--tour-type-card);
    }

    .tour-detail-page .planner-stream {
        padding: 18px 16px;
    }

    .tour-detail-page .tour-footer-details {
        padding-top: 24px;
    }

    .tour-detail-page .ticket-main,
    .tour-detail-page .ticket-stub {
        padding: 24px 20px;
    }

    .tour-detail-page .booking-modal-body {
        padding: 20px;
    }

    .tour-detail-page .booking-btn {
        font-size: var(--tour-type-button-mobile);
    }

    .tour-inquiry-form-section {
        padding-block: var(--tour-space-section-mobile);
    }

    .tour-inquiry-form-section .tour-summary-card {
        padding: var(--tour-space-card-padding-mobile);
        margin-bottom: 18px;
    }

    .tour-inquiry-form-section .ts-title {
        font-size: var(--tour-type-card);
    }

    .tour-inquiry-form-section .ts-meta {
        gap: 8px;
        font-size: var(--tour-type-meta-mobile);
    }

    .tour-inquiry-form-section .form-container {
        padding: 20px 16px;
        border-radius: 12px;
    }

    .tour-inquiry-form-section .form-group {
        gap: 6px;
        margin-bottom: 18px;
    }

    .tour-inquiry-form-section .form-group label {
        font-size: var(--tour-type-body);
        padding-top: 0;
    }

    .tour-inquiry-form-section .dual-input {
        gap: 10px;
    }

    .tour-inquiry-form-section .privacy-box {
        padding: 12px 14px 14px;
    }

    .tour-inquiry-form-section .confirm-table th,
    .tour-inquiry-form-section .confirm-table td {
        padding: 12px;
    }

    .tour-inquiry-form-section .confirm-actions {
        gap: 12px;
        margin-top: 28px;
    }

    .tour-inquiry-form-section .submit-btn,
    .tour-inquiry-form-section .btn-back,
    .tour-inquiry-form-section .btn-home {
        width: 100%;
        box-sizing: border-box;
        font-size: var(--tour-type-button-mobile);
    }

    .tour-inquiry-form-section .finish-info-box {
        padding: 32px 16px;
        border-radius: 14px;
        margin-bottom: 24px;
    }

    .tour-inquiry-form-section .finish-title {
        font-size: var(--tour-type-page-mobile) !important;
    }

    .tour-inquiry-form-section .finish-text,
    .tour-inquiry-form-section .email-notice p {
        font-size: var(--tour-type-body);
    }

    .tour-inquiry-form-section .email-notice {
        width: 100%;
        box-sizing: border-box;
        margin-bottom: 24px;
    }
}

/* Desktop scale follows the flight homepage; mobile keeps the compact scale above. */
@media (min-width: 769px) {
    .bus-hero .hero-info h1 {
        font-size: 50px;
        line-height: 1.25;
    }

    .bus-hero .hero-subtitle {
        font-size: 20px;
    }

    .bus-collection-section .section-intro p,
    .bus-safety-section .section-intro p,
    .bus-meeting-points .section-intro p {
        font-size: 16px;
    }

    .bus-collection-section .tour-title {
        font-size: 18px;
    }

    .bus-collection-section .info-row {
        font-size: 14px;
    }

    .bus-meeting-points .m-card-header h3 {
        font-size: 18px;
    }

    .bus-meeting-points .m-card-desc p {
        font-size: 15px;
    }

    .bus-meeting-points .m-card-link {
        font-size: 14px;
    }

    .bus-meeting-points .m-tag {
        font-size: 13px;
    }

    .bus-promo-split .promo-text {
        font-size: 16px;
    }

    .bus-promo-split .p-feature-item h4 {
        font-size: 18px;
    }

    .bus-promo-split .p-feature-item p {
        font-size: 15px;
    }

    .bus-safety-section .safety-list li {
        font-size: 15px;
    }

    .tour-detail-page .tour-intro-box p {
        font-size: 16px;
    }

    .tour-detail-page .time-block .event p,
    .tour-detail-page .h-card p,
    .tour-detail-page .inc-col li,
    .tour-detail-page .exc-col li {
        font-size: 15px;
    }

    .tour-detail-page .tour-footer-details {
        font-size: 14px;
    }

    .tour-detail-page .booking-notice {
        font-size: 14px;
    }

    .tour-inquiry-form-section .ts-title {
        font-size: 18px;
    }

    .tour-inquiry-form-section .ts-meta,
    .tour-inquiry-form-section .privacy-content,
    .tour-inquiry-form-section .notice {
        font-size: 14px;
    }

    .tour-inquiry-form-section .finish-text {
        font-size: 16px;
    }
}
