html.has-app-shell {
    overflow-x: hidden;
}

body.has-app-shell {
    overflow-x: hidden;
    background: #dbe3ef;
}

body.has-app-shell .bc_wrap {
    width: 100%;
    max-width: var(--app-max-width);
    margin-left: auto;
    margin-right: auto;
    background: var(--color-surface);
    min-height: 100vh;
    min-height: 100dvh;
    padding-bottom: var(--app-bottom-offset);
    position: relative;
    overflow-x: hidden;
}

body.has-app-shell .app-bottom-nav {
    position: fixed;
    left: 50%;
    bottom: 0;
    transform: translateX(-50%);
    width: 100%;
    max-width: var(--app-max-width);
    height: calc(var(--bottom-nav-height) + var(--safe-bottom));
    padding-bottom: var(--safe-bottom);
    background: var(--color-surface);
    box-shadow: var(--shadow-nav);
    border-top: 1px solid var(--color-border);
    display: flex;
    z-index: var(--z-bottom-nav);
}

body.has-app-shell .app-bottom-nav__item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    color: var(--color-text-secondary);
    text-decoration: none;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-medium);
    line-height: 1.1;
}

body.has-app-shell .app-bottom-nav__icon {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

body.has-app-shell .app-bottom-nav__item svg {
    width: 33px;
    height: 33px;
    display: block;
}

body.has-app-shell .app-bottom-nav__item.is-active {
    color: var(--color-primary);
}

body.has-app-shell .app-bottom-nav__item.is-active .app-bottom-nav__icon {
    background: var(--color-primary-soft);
}

body.has-app-shell .app-bottom-nav__item:hover,
body.has-app-shell .app-bottom-nav__item:focus {
    color: var(--color-primary);
    text-decoration: none;
}

/* App shell is 430px; original desktop chrome never fits. Hide on every frontend page. */
body.has-app-shell .bc_topbar,
body.has-app-shell .bc_header,
body.has-app-shell .bc_footer {
    display: none !important;
}

body.has-app-shell.is-checkout-shell .app-bottom-nav,
body.has-app-shell.is-visa-apply-shell .app-bottom-nav {
    display: none !important;
}

body.has-app-shell.is-checkout-shell .bc_wrap {
    padding-bottom: calc(var(--checkout-cta-height, 92px) + var(--safe-bottom));
}

body.has-app-shell.user-page.is-orders-shell .bc_user_profile .col-md-3 {
    display: none !important;
}

body.has-app-shell.user-page.is-orders-shell .bc_user_profile .col-md-9 {
    flex: 0 0 100%;
    max-width: 100%;
    padding-left: 0;
    padding-right: 0;
}

body.has-app-shell.user-page.is-orders-shell .breadcrumb,
body.has-app-shell.user-page.is-orders-shell .title-bar,
body.has-app-shell.user-page.is-orders-shell .user-breadcrumb,
body.has-app-shell.user-page.is-orders-shell .breadcrumb-page-bar,
body.has-app-shell.user-page.is-visa-user-shell .breadcrumb,
body.has-app-shell.user-page.is-visa-user-shell .title-bar,
body.has-app-shell.user-page.is-visa-user-shell .user-breadcrumb {
    display: none !important;
}

body.has-app-shell.user-page.is-visa-user-shell .bc_user_profile .col-md-3 {
    display: none !important;
}

body.has-app-shell.user-page.is-visa-user-shell .bc_user_profile .col-md-9 {
    flex: 0 0 100%;
    max-width: 100%;
}

body.has-app-shell.is-auth-shell .bc_wrap {
    padding-bottom: var(--app-bottom-offset);
    background: transparent;
}

/* Keep original Home/Tour/Hotel content, but lift mobile booking CTAs above the nav. */
@media (max-width: 990px) {
    body.has-app-shell .bravo-more-book-mobile,
    body.has-app-shell .bc-more-book-mobile,
    body.has-app-shell .booking_cookie_agreement.fixed-bottom {
        bottom: var(--app-bottom-offset);
        max-width: var(--app-max-width);
        left: 50%;
        right: auto;
        transform: translateX(-50%);
        width: 100%;
    }
}

body.has-app-shell.user-page .bc_user_profile {
    padding-bottom: 12px;
}

/* Debugbar is local-only and would cover the mobile shell. */
body.has-app-shell .phpdebugbar,
body.has-app-shell .phpdebugbar-openhandler,
body.has-app-shell .phpdebugbar-restore-btn {
    display: none !important;
}

/* Leftover CMS / contact / news pages still use desktop Bootstrap columns. */
body.has-app-shell .bc_wrap > .container,
body.has-app-shell #bc_content-wrapper,
body.has-app-shell .page-template-content,
body.has-app-shell .bc-contact-block,
body.has-app-shell .bravo-news,
body.has-app-shell .bc-news,
body.has-app-shell .bc_detail_news {
    padding: 12px var(--page-padding) 24px;
    max-width: 100%;
}

body.has-app-shell .bc_wrap .container {
    max-width: 100%;
}

body.has-app-shell #bc_content-wrapper .container,
body.has-app-shell .page-template-content .container,
body.has-app-shell .bc-contact-block .container,
body.has-app-shell .bc-news .container {
    padding-left: 0;
    padding-right: 0;
}

body.has-app-shell #bc_content-wrapper .row,
body.has-app-shell .page-template-content .row,
body.has-app-shell .bc-contact-block .row,
body.has-app-shell .bc-news .row,
body.has-app-shell .bc_detail_news .row {
    display: flex;
    flex-direction: column;
    margin-left: 0;
    margin-right: 0;
}

body.has-app-shell #bc_content-wrapper [class*="col-"],
body.has-app-shell .page-template-content [class*="col-"],
body.has-app-shell .bc-contact-block [class*="col-"],
body.has-app-shell .bc-news [class*="col-"],
body.has-app-shell .bc_detail_news [class*="col-"],
body.has-app-shell #bc_content-wrapper [class*="offset-"],
body.has-app-shell .bc-contact-block [class*="offset-"] {
    flex: 0 0 100% !important;
    max-width: 100% !important;
    width: 100% !important;
    margin-left: 0 !important;
    padding-left: 0;
    padding-right: 0;
}

body.has-app-shell .blog-content img,
body.has-app-shell .page-template-content img,
body.has-app-shell .bc-news img,
body.has-app-shell .bc-contact-block img {
    max-width: 100%;
    height: auto;
}

body.has-app-shell .bc_wrap .bc-contact-block .section {
    padding: 0 !important;
    gap: 16px;
}

body.has-app-shell .bc_wrap .bc-contact-block .contact-info {
    position: relative !important;
}

body.has-app-shell .bc_wrap .bc-contact-block .contact-info .info-bg {
    display: none !important;
    min-height: 0 !important;
}

body.has-app-shell .bc_wrap .bc-contact-block .contact-info .info-content {
    position: relative !important;
    top: auto !important;
    margin: 0 !important;
    min-width: 0 !important;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    border-radius: 16px;
    padding: 16px;
}

body.has-app-shell .bc_wrap .bc-contact-block .contact-info .info-content .sub {
    max-width: 100%;
}
