/*
 * MultiBooking public site responsive layer.
 *
 * This file is intentionally loaded after page-specific CSS. It contains only
 * tablet/mobile overrides so desktop layouts remain controlled by their
 * original page styles and the shared design system.
 */

html,
body {
    max-width: 100%;
    overflow-x: clip;
}

img,
svg,
video,
canvas {
    max-width: 100%;
}

.mb-main-full,
.page-content,
.mb-beta-landing-v2,
.mb-about-page,
.mb-support-page,
.mb-category-beta-page,
.service-search-page,
.mb-auth-page {
    min-width: 0;
}

/* Keep grid/flex children from forcing horizontal overflow with long localized text. */
.mb-navbar-container > *,
.mb-footer-grid > *,
.mb-product-grid > *,
.mb-feature-row > *,
.mb-included-grid > *,
.mb-how-grid > *,
.mb-cancellation-grid > *,
.mb-about-hero-grid > *,
.mb-about-mission-grid > *,
.mb-about-team-grid > *,
.mb-support-options-grid > *,
.mb-category-beta-header > *,
.search-filters-grid > *,
.services-workspace > *,
.business-card__top > * {
    min-width: 0;
}

@media (max-width: 991.98px) {
    /* Header */
    .mb-header .navbar-collapse {
        width: 100%;
        padding: 8px 0 18px;
    }

    .mb-main-nav {
        width: 100%;
        padding-top: 4px;
    }

    .mb-main-nav .nav-item,
    .mb-main-nav .nav-link {
        width: 100%;
    }

    .mb-main-nav .nav-link {
        padding: 12px 4px;
    }

    .mb-navbar-actions {
        width: 100%;
        margin-left: 0 !important;
        gap: 10px !important;
    }

    .mb-navbar-actions > .app-btn {
        flex: 1 1 180px;
    }

    /* Footer */
    .mb-footer-top {
        width: 100%;
        align-items: flex-start;
    }

    .mb-footer-subscribe {
        width: min(100%, 620px);
    }

    /* About page: the decorative hero needs breathing room after switching to one column. */
    .mb-about-hero-copy {
        justify-self: center;
    }

    /* Service finder */
    .service-search-page-v2 {
        padding-bottom: 2rem;
    }
}

@media (max-width: 767.98px) {
    :root {
        --mb-mobile-gutter: 16px;
    }

    #categories,
    #features,
    #how-it-works,
    #faq {
        scroll-margin-top: 76px;
    }

    /* -----------------------------
       Shared header / navigation
       ----------------------------- */
    .mb-landing-container,
    .mb-navbar-container,
    .mb-footer .container {
        width: calc(100% - (var(--mb-mobile-gutter) * 2));
    }

    .mb-header,
    .mb-navbar,
    .mb-navbar-container {
        min-height: 64px;
    }

    .mb-brand,
    .mb-footer-brand {
        padding: 6px 0;
    }

    .mb-header .mb-brand-logo {
        width: 146px;
    }

    .mb-navbar-toggler {
        display: inline-flex;
        width: 42px;
        height: 42px;
        align-items: center;
        justify-content: center;
        padding: 8px;
        border: 1px solid var(--basic-3);
        border-radius: 12px;
        box-shadow: none;
    }

    .mb-navbar-toggler:focus {
        box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-accent-1) 18%, transparent);
    }

    .mb-header .navbar-collapse {
        max-height: calc(100dvh - 64px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }

    .mb-main-nav .nav-link {
        border-bottom: 1px solid var(--basic-2);
    }

    .mb-navbar-actions {
        display: grid !important;
        grid-template-columns: 1fr;
        align-items: stretch !important;
        padding-bottom: 6px;
    }

    .mb-navbar-actions > .app-btn,
    .mb-navbar-actions .mb-language-selector,
    .mb-navbar-actions .mb-language-toggle {
        width: 100%;
    }

    .mb-navbar-actions > .app-btn,
    .mb-navbar-actions .mb-language-toggle {
        min-height: 44px;
    }

    .mb-language-toggle {
        justify-content: flex-start;
        padding-inline: 16px;
    }

    .mb-language-menu {
        position: static !important;
        inset: auto !important;
        width: 100%;
        min-width: 0;
        margin-top: 4px !important;
        transform: none !important;
        border-radius: 14px;
    }

    .mb-language-option {
        min-height: 44px;
    }

    /* -----------------------------
       Shared footer
       ----------------------------- */
    .mb-footer {
        padding-block: 36px;
    }

    .mb-footer-top {
        gap: 28px;
    }

    .mb-footer .mb-brand-logo {
        width: 154px;
    }

    .mb-footer-subscribe {
        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;
    }

    .mb-footer-subscribe input,
    .mb-footer-subscribe button {
        width: 100%;
        min-width: 0;
    }

    .mb-footer-subscribe input {
        font-size: 16px;
    }

    .mb-footer-divider {
        margin-block: 32px;
    }

    .mb-footer-grid {
        grid-template-columns: 1fr;
        gap: 30px;
    }

    .mb-footer-text-column h3,
    .mb-footer-text-column p,
    .mb-footer-link-column a {
        padding-left: 0;
        padding-right: 0;
    }

    .mb-footer-link-column {
        display: grid;
        gap: 2px;
    }

    .mb-footer-app-column {
        width: 100%;
    }

    .mb-store-badges {
        max-width: 100%;
    }

    .mb-footer-bottom {
        width: 100%;
        gap: 20px;
        margin-top: 32px;
        padding-top: 24px;
    }

    .mb-footer-bottom-links {
        display: grid;
        width: 100%;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px 18px;
    }

    /* -----------------------------
       Landing page
       ----------------------------- */
    .mb-beta-landing-v2 .mb-landing-container {
        width: calc(100% - (var(--mb-mobile-gutter) * 2));
    }

    .mb-beta-landing-v2 .mb-hero,
    .mb-beta-landing-v2 .mb-product-section,
    .mb-beta-landing-v2 .mb-features-section,
    .mb-beta-landing-v2 .mb-how-section,
    .mb-beta-landing-v2 .mb-cancellation-section,
    .mb-beta-landing-v2 .mb-faq-section,
    .mb-beta-landing-v2 .mb-beta-section {
        padding-top: 48px;
        padding-bottom: 52px;
    }

    .mb-beta-landing-v2 .mb-hero-inner {
        min-height: 0;
        gap: 20px;
        padding: 0;
    }

    .mb-beta-landing-v2 .mb-hero h1 {
        font-size: clamp(34px, 10.5vw, 46px);
        line-height: 1.12;
        overflow-wrap: anywhere;
    }

    .mb-beta-landing-v2 .mb-hero-lead {
        width: min(100%, 640px);
        font-size: 17px;
        line-height: 1.45;
    }

    .mb-inline-waitlist {
        width: 100%;
        max-width: 520px;
    }

    .mb-inline-waitlist input {
        width: 100%;
        font-size: 16px;
    }

    .mb-inline-waitlist-note {
        max-width: 520px;
        justify-content: center;
        text-align: center;
    }

    .mb-beta-landing-v2 .mb-product-grid {
        gap: 36px;
    }

    /* The desktop composition uses an absolutely positioned category card.
       On phones it becomes normal document flow to avoid a 600px fake spacer
       and overlaps on narrow screens. */
    .mb-beta-landing-v2 .mb-product-visual {
        display: flex;
        width: 100%;
        min-height: 0;
        flex-direction: column;
        gap: 16px;
    }

    .mb-beta-landing-v2 .mb-browser-mock-large {
        height: clamp(230px, 72vw, 330px);
        flex: 0 0 auto;
    }

    .mb-beta-landing-v2 .mb-category-floating-card {
        position: static;
        width: 100%;
        padding: 0;
        border: 0;
        background: transparent;
        box-shadow: none;
        transform: none;
    }

    .mb-beta-landing-v2 .mb-category-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        grid-auto-rows: 1fr;
        gap: 12px;
    }

    .mb-beta-landing-v2 .mb-mini-category {
        min-height: 108px;
        align-items: flex-start;
        justify-content: flex-start;
        gap: 12px;
        padding: 16px 14px;
        text-align: left;
        overflow-wrap: anywhere;
    }

    .mb-beta-landing-v2 .mb-product-copy {
        align-items: stretch;
        gap: 18px;
        text-align: left;
    }

    .mb-beta-landing-v2 .mb-product-copy h2,
    .mb-beta-landing-v2 .mb-product-copy p {
        margin-inline: 0;
    }

    .mb-beta-landing-v2 .mb-product-copy .app-btn {
        width: 100%;
    }

    .mb-beta-landing-v2 .mb-feature-row {
        gap: 32px;
        margin-top: 36px;
    }

    .mb-beta-landing-v2 .mb-feature-item {
        padding-inline: 6px;
    }

    .mb-beta-landing-v2 .mb-included-section {
        padding: 42px 0;
    }

    .mb-beta-landing-v2 .mb-included-grid,
    .mb-beta-landing-v2 .mb-how-grid {
        gap: 38px;
    }

    .mb-beta-landing-v2 .mb-included-col {
        padding: 6px 0;
    }

    .mb-beta-landing-v2 .mb-included-col h2 {
        text-align: left;
    }

    .mb-beta-landing-v2 .mb-check-list li {
        align-items: flex-start;
    }

    .mb-beta-landing-v2 .mb-included-ellipse {
        opacity: 0.72;
    }

    .mb-section-waitlist-button {
        width: 100%;
    }

    .mb-beta-landing-v2 .mb-how-grid {
        margin-top: 40px;
    }

    .mb-beta-landing-v2 .mb-how-text {
        min-height: 0;
    }

    .mb-beta-landing-v2 .mb-how-list > div {
        align-items: flex-start;
        padding: 12px 14px;
    }

    .mb-beta-landing-v2 .mb-cancellation-grid {
        margin-top: 36px;
    }

    .mb-beta-landing-v2 .mb-browser-mock-process {
        height: clamp(230px, 68vw, 300px);
    }

    .mb-beta-landing-v2 .mb-process-grid {
        gap: 28px;
    }

    .mb-beta-landing-v2 .mb-faq-tabs {
        justify-content: flex-start;
        gap: 10px;
        max-width: 100%;
        margin-top: 20px;
        padding-bottom: 4px;
        overflow-x: auto;
        overscroll-behavior-inline: contain;
        scrollbar-width: none;
    }

    .mb-beta-landing-v2 .mb-faq-tabs::-webkit-scrollbar {
        display: none;
    }

    .mb-beta-landing-v2 .mb-faq-tabs button {
        min-width: max-content;
        flex: 0 0 auto;
        padding-inline: 14px;
    }

    .mb-beta-landing-v2 .mb-faq-accordion .accordion-button {
        padding: 14px;
        font-size: 14px;
    }

    .mb-beta-landing-v2 .mb-faq-contact {
        width: 100%;
        align-items: stretch;
        text-align: center;
    }

    .mb-beta-landing-v2 .mb-faq-contact .app-btn {
        width: 100%;
    }

    /* -----------------------------
       About page
       ----------------------------- */
    .mb-about-container {
        width: calc(100% - (var(--mb-mobile-gutter) * 2));
    }

    .mb-about-hero,
    .mb-about-mission,
    .mb-about-beta,
    .mb-about-team,
    .mb-about-closing {
        padding: 48px 0;
    }

    .mb-about-hero-grid {
        width: 100%;
        gap: 34px;
    }

    .mb-about-hero-copy {
        align-items: flex-start;
        gap: 20px;
    }

    .mb-about-hero h1 {
        max-width: 100%;
        font-size: clamp(34px, 10.5vw, 46px);
        overflow-wrap: anywhere;
    }

    .mb-about-hero-text p,
    .mb-about-section-heading p,
    .mb-about-team-heading p,
    .mb-about-team-card > p,
    .mb-about-beta-copy p {
        font-size: 15px;
    }

    .mb-about-team-note {
        align-items: flex-start;
    }

    .mb-about-hero-visual {
        width: 100%;
        max-width: 620px;
    }

    .mb-about-section-heading,
    .mb-about-team-heading {
        margin-bottom: 36px;
    }

    .mb-about-section-heading h2,
    .mb-about-beta-copy h2,
    .mb-about-team-heading h2 {
        font-size: clamp(28px, 8vw, 36px);
    }

    .mb-about-mission-card,
    .mb-about-team-card {
        padding: 26px 20px;
        border-radius: 20px;
    }

    .mb-about-beta-card {
        gap: 28px;
        padding: 28px 20px;
        border-radius: 24px;
    }

    .mb-about-beta-actions {
        width: 100%;
    }

    .mb-about-closing-actions {
        width: 100%;
        align-items: stretch;
    }

    .mb-about-closing-actions .app-btn {
        width: 100%;
    }

    /* -----------------------------
       Support page
       ----------------------------- */
    .mb-support-container {
        width: calc(100% - (var(--mb-mobile-gutter) * 2));
    }

    .mb-support-hero,
    .mb-support-options,
    .mb-support-contact {
        padding: 48px 0;
    }

    .mb-support-hero-copy {
        margin-top: 20px;
    }

    .mb-support-hero-copy h1 {
        font-size: clamp(34px, 10.5vw, 46px);
        overflow-wrap: anywhere;
    }

    .mb-support-option-card {
        gap: 20px;
        padding: 26px 20px;
        border-radius: 18px;
    }

    .mb-support-contact-heading {
        margin-bottom: 36px;
    }

    .mb-support-contact-heading h2 {
        font-size: clamp(28px, 8vw, 36px);
    }

    .mb-support-form-card {
        gap: 14px;
        padding: 28px 18px;
        border-radius: 20px;
    }

    .mb-support-field input,
    .mb-support-field textarea {
        font-size: 16px;
    }

    /* Support modal as a reliable mobile sheet. */
    .mb-support-modal {
        padding: 10px;
    }

    .mb-support-modal__dialog {
        width: 100%;
        max-height: calc(100dvh - 20px);
        padding: 26px 18px 20px;
    }

    /* -----------------------------
       Business category page/modal
       ----------------------------- */
    .mb-category-beta-page {
        padding: 16px 0 40px;
        background: var(--basic-1);
    }

    .mb-category-beta-shell {
        width: calc(100% - (var(--mb-mobile-gutter) * 2));
        margin-inline: auto;
    }

    .mb-category-beta-page .mb-category-beta-card {
        width: 100%;
        padding: 22px 18px;
    }

    .mb-category-beta-header {
        gap: 12px;
    }

    .mb-category-beta-title-block h1,
    .mb-category-beta-title-block h2 {
        overflow-wrap: anywhere;
    }

    .mb-category-beta-title-block p {
        font-size: 12px;
    }

    .mb-category-beta-hero {
        padding: 18px 14px;
    }

    .mb-category-beta-flow-card {
        width: 100%;
        max-width: 320px;
        min-width: 0;
    }

    .mb-category-beta-action .app-btn {
        width: 100%;
    }

    .mb-category-modal {
        padding: 10px;
    }

    .mb-category-modal-viewport {
        width: 100%;
        max-height: calc(100dvh - 20px);
    }

    /* -----------------------------
       Authentication pages
       ----------------------------- */
    .mb-auth-page {
        min-height: 100dvh;
        padding: 22px var(--mb-mobile-gutter) 28px;
    }

    .mb-auth-logo img {
        width: 142px;
    }

    .mb-login-shell,
    .mb-reset-shell,
    .mb-signup-shell,
    .mb-signup-success-shell {
        min-height: 0;
        padding-top: 34px;
    }

    .mb-login-card,
    .mb-reset-card,
    .mb-signup-card,
    .mb-signup-success-card {
        width: 100%;
        border-radius: 20px;
    }

    .mb-login-card,
    .mb-reset-card {
        padding: 34px 18px 30px;
    }

    .mb-auth-content--login h1,
    .mb-reset-heading h1,
    .mb-reset-success h1 {
        font-size: var(--mobile-h2-font-size, 28px);
        line-height: var(--mobile-h2-line-height, 1.28);
    }

    .mb-auth-control,
    .mb-auth-provider,
    .mb-forgot-heading p,
    .mb-forgot-success p,
    .mb-reset-success p {
        font-size: 16px;
    }

    .mb-login-forgot-row {
        margin-top: -8px;
    }

    .mb-forgot-modal {
        place-items: center;
        padding: 14px;
    }

    .mb-forgot-dialog {
        width: 100%;
        max-height: calc(100dvh - 28px);
        padding: 30px 18px;
        overflow-y: auto;
        border-radius: 20px;
    }

    .mb-forgot-heading {
        margin-bottom: 30px;
    }

    .mb-forgot-form {
        gap: 30px;
    }

    .mb-forgot-error {
        margin-top: -16px;
    }

    .mb-signup-step {
        padding: 76px 18px 30px;
    }

    .mb-signup-step[data-step="start"] {
        padding-top: 34px;
    }

    .mb-signup-back {
        top: 20px;
        left: 18px;
    }

    .mb-signup-start-content,
    .mb-signup-email-content,
    .mb-signup-business-content {
        width: 100%;
    }

    .mb-signup-start-content h1,
    .mb-signup-email-content h1 {
        margin-bottom: 30px;
    }

    .mb-signup-business-content .mb-auth-subtitle {
        margin-bottom: 28px;
    }

    .mb-signup-email-content .mb-auth-primary-action,
    .mb-signup-business-content .mb-auth-primary-action {
        margin-top: 30px;
    }

    .mb-external-account {
        align-items: flex-start;
        flex-wrap: wrap;
        margin-top: -10px;
    }

    .mb-external-account-info {
        flex: 1 1 220px;
    }

    .mb-external-account-change {
        flex: 0 0 auto;
    }

    .mb-signup-success-card {
        padding: 36px 18px 32px;
    }

    .mb-signup-success-action {
        width: 100%;
        min-width: 0;
    }

    .mb-role-page {
        padding: 88px var(--mb-mobile-gutter) 28px;
    }

    .mb-role-card {
        padding: 32px 18px;
    }

    .mb-role-options {
        gap: 16px;
        margin-top: 30px;
    }

    .mb-role-copy {
        min-height: 0;
        padding: 20px;
    }

    .mb-role-copy > span,
    .mb-role-login-row {
        font-size: 16px;
    }

    /* -----------------------------
       Legal pages
       ----------------------------- */
    .mb-legal-page {
        max-width: 100%;
        padding: 36px 0 56px;
    }

    .mb-legal-header h1 {
        font-size: clamp(32px, 9vw, 40px);
        overflow-wrap: anywhere;
    }

    .mb-legal-nav {
        gap: 10px 18px;
        margin-bottom: 32px;
    }

    .mb-legal-content {
        font-size: 15px;
        line-height: 1.6;
    }

    .mb-legal-content h2 {
        font-size: 24px;
    }

    .mb-legal-table-wrap {
        margin-inline: calc(var(--bs-gutter-x, 1.5rem) * -0.5);
        width: calc(100% + var(--bs-gutter-x, 1.5rem));
        padding-inline: calc(var(--bs-gutter-x, 1.5rem) * 0.5);
        -webkit-overflow-scrolling: touch;
    }

    /* -----------------------------
       Service finder
       ----------------------------- */
    .service-search-page-v2 {
        padding-top: 0.5rem;
    }

    .search-top-panel {
        min-height: 0;
        margin-bottom: 1rem;
        border-radius: 20px;
    }

    .search-top-panel__content {
        padding: 1.2rem;
    }

    .service-search-title {
        font-size: clamp(2rem, 9vw, 2.6rem);
    }

    .search-top-panel__filters {
        padding: 0.9rem;
        border-radius: 16px;
    }

    .search-filters-grid {
        gap: 0.8rem;
    }

    .service-input {
        font-size: 16px;
    }

    .search-location-box {
        width: 100%;
        gap: 0.7rem;
        padding: 0.8rem;
        border-radius: 14px;
    }

    .search-location-box__main,
    .search-location-box__coords {
        min-width: 0;
    }

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

    .search-primary-btn,
    .search-secondary-btn {
        width: 100%;
        min-width: 0;
    }

    .workspace-pane {
        padding: 0.85rem;
        border-radius: 18px;
    }

    .workspace-pane__header {
        gap: 0.75rem;
    }

    .business-card {
        border-radius: 18px;
    }

    .business-card__top {
        gap: 0.85rem;
        padding: 1rem;
    }

    .business-card__head {
        gap: 0.6rem;
    }

    .business-card__footer {
        align-items: flex-start;
    }

    .business-card__details {
        padding: 0.9rem 1rem 1rem;
    }

    .map-shell,
    .map-shell__stage {
        min-height: 420px;
    }

    .map-marker-label {
        max-width: min(180px, 52vw);
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .map-empty-note {
        width: calc(100% - 32px);
    }
}

@media (max-width: 575.98px) {
    :root {
        --mb-mobile-gutter: 14px;
    }

    .mb-header .mb-brand-logo {
        width: 140px;
    }

    .mb-footer-bottom-links {
        grid-template-columns: 1fr;
    }

    .mb-store-badges {
        flex-direction: row;
        align-items: center;
    }

    .mb-beta-landing-v2 .mb-section-heading h2,
    .mb-beta-landing-v2 .mb-product-copy h2 {
        font-size: 28px;
    }

    .mb-beta-landing-v2 .mb-category-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    .mb-beta-landing-v2 .mb-mini-category {
        min-height: 104px;
        padding: 14px 12px;
    }

    .mb-about-team-note {
        gap: 8px;
    }

    .mb-category-beta-header-left {
        gap: 10px;
    }

    .mb-category-beta-main-icon {
        width: 50px;
        height: 50px;
        flex-basis: 50px;
        padding: 9px;
    }

    .mb-category-beta-main-icon img {
        width: 32px;
        height: 32px;
    }

    .mb-category-beta-close {
        width: 36px;
        height: 36px;
        flex-basis: 36px;
    }

    .mb-auth-account-row,
    .mb-role-login-row {
        text-align: center;
    }

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

    .business-card__media {
        width: 76px;
        height: 76px;
    }

    .business-card__footer {
        flex-direction: column;
        align-items: stretch;
    }

    .business-card__toggle {
        width: 100%;
    }

    .map-shell,
    .map-shell__stage {
        min-height: 360px;
    }
}

@media (max-width: 420px) {
    .mb-beta-landing-v2 .mb-category-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .mb-beta-landing-v2 .mb-mini-category {
        min-height: 100px;
        flex-direction: column;
        align-items: flex-start;
        justify-content: flex-start;
        gap: 10px;
        padding: 14px 12px;
        text-align: left;
    }

    .mb-beta-landing-v2 .mb-mini-category-icon,
    .mb-beta-landing-v2 .mb-mini-category-icon-image {
        width: 36px;
        height: 36px;
        flex-basis: 36px;
    }

    .mb-store-badges {
        flex-direction: column;
        align-items: flex-start;
    }

    .mb-about-avatar-stack {
        flex: 0 0 auto;
    }

    .mb-support-modal__actions {
        grid-template-columns: 1fr;
    }

    .mb-category-beta-header {
        align-items: flex-start;
    }

    .mb-category-beta-title-block h1,
    .mb-category-beta-title-block h2 {
        font-size: 18px;
    }

    .mb-signup-page .mb-auth-select--with-search .mb-auth-control {
        padding-left: 44px;
        padding-right: 44px;
    }

    .mb-signup-page .mb-auth-select-search {
        left: 18px;
    }
}

@media (max-width: 359.98px) {
    .mb-beta-landing-v2 .mb-category-grid {
        grid-template-columns: 1fr;
    }

    .mb-beta-landing-v2 .mb-mini-category {
        min-height: 76px;
        flex-direction: row;
        align-items: center;
        justify-content: flex-start;
        padding: 12px 14px;
    }
}
