/*
 * Shared public mobile hardening.
 * Loaded after page styles by landing and tenant layouts.
 */

html {
  min-width: 0;
  -webkit-text-size-adjust: 100%;
}

body.public-landing,
body.public-tenant {
  min-width: 0;
}

body.public-landing img,
body.public-tenant img,
body.public-landing iframe,
body.public-tenant iframe {
  max-width: 100%;
}

body.public-landing iframe,
body.public-tenant iframe {
  display: block;
}

body.public-landing :where(.container, .nav-container, .hero-content, .search-wrap, .biz-shell, .biz-layout, .biz-profile-card, .biz-title-block, .biz-panel, .biz-rev, .hv-wrap, .hv-card),
body.public-tenant :where(.barber-header-container, .barber-logo, .barber-logo-text, .contact-main, .contact-container, .form-card, .about-content, .about-text, .about-image, .contact-wrap, .contact-info-col, .contact-form-col, .footer-inner, .footer-brand-text) {
  min-width: 0;
}

body.public-landing :where(.biz-name, .biz-slogan, .biz-location, .biz-contact-val, .biz-about, .biz-rev-text),
body.public-tenant :where(.barber-logo-text h1, .about-text p, .review-text, .contact-card-item strong, .footer-brand-text, .footer-contact-links a) {
  overflow-wrap: anywhere;
}

@media (max-width: 768px) {
  body.public-landing {
    --page-fixed-action-height: 0px;
  }

  body.public-landing.public-business-detail {
    --page-fixed-action-height: 74px;
  }

  body.public-landing .wa-float {
    bottom: calc(var(--page-fixed-action-height) + env(safe-area-inset-bottom) + 16px);
  }

  body.public-landing .container {
    width: 100%;
    padding-inline: clamp(.75rem, 4vw, 1.25rem);
  }

  /* Landing navigation and hero */
  body.public-landing .nav-container {
    width: 100%;
    height: 60px;
    padding-inline: clamp(.7rem, 4vw, 1rem);
    gap: .5rem;
  }

  body.public-landing .nav-logo {
    max-width: calc(100% - 52px);
    font-size: clamp(1.08rem, 5vw, 1.35rem);
    flex: 0 1 auto;
  }

  body.public-landing .nav-logo img {
    max-width: min(44vw, 180px);
    height: auto;
  }

  body.public-landing .nav-actions {
    gap: .35rem;
  }

  body.public-landing .nav-links {
    top: 60px;
    max-height: calc(100dvh - 60px);
    padding: .75rem clamp(.75rem, 4vw, 1.25rem) calc(1rem + env(safe-area-inset-bottom));
  }

  body.public-landing .nav-links .nav-link {
    width: 100%;
    min-height: 44px;
  }

  body.public-landing .hero {
    min-height: 100svh;
    padding: 82px clamp(.75rem, 4vw, 1.25rem) 3.5rem;
  }

  body.public-landing .hero-content {
    width: 100%;
  }

  body.public-landing .hero-title {
    font-size: clamp(1.85rem, 9vw, 3rem);
    overflow-wrap: anywhere;
  }

  body.public-landing .hero-sub br {
    display: none;
  }

  body.public-landing .hero-badge {
    max-width: 100%;
    padding-inline: .8rem;
    text-align: left;
  }

  body.public-landing .hero .blob {
    max-width: 130vw;
    max-height: 130vw;
  }

  body.public-landing .search-box {
    width: 100%;
    overflow: visible;
  }

  body.public-landing .search-box :where(input, select, button),
  body.public-landing .filter-inner :where(input, select, button, a) {
    min-height: 44px;
    max-width: 100%;
  }

  body.public-landing .search-btn {
    margin-left: 0;
  }

  body.public-landing .search-tags {
    gap: .4rem;
  }

  body.public-landing .search-tags a {
    max-width: 100%;
  }

  body.public-landing .hero-stats {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  body.public-landing .hero-stats .hs-sep {
    display: none;
  }

  body.public-landing .sec {
    padding-block: clamp(3rem, 10vw, 4.25rem);
  }

  body.public-landing .sec-head,
  body.public-landing .sec-head-row {
    margin-bottom: 1.75rem;
  }

  body.public-landing :where(.cat-grid, .biz-grid, .businesses-grid) {
    grid-template-columns: minmax(0, 1fr);
  }

  body.public-landing :where(.cat-card, .biz-card, .business-card) {
    width: 100%;
    min-width: 0;
  }

  body.public-landing .biz-title-row,
  body.public-landing .biz-header-main {
    min-width: 0;
  }

  body.public-landing .biz-name {
    min-width: 0;
  }

  body.public-landing .footer-grid {
    gap: 2rem 1.25rem;
  }

  body.public-landing .footer-bot-links {
    flex-wrap: wrap;
    gap: .65rem 1rem;
  }

  /* Listing filters: controls never create viewport overflow. */
  body.public-landing .filter-bar {
    top: 60px;
    max-height: calc(100dvh - 60px);
    overflow-y: auto;
    overscroll-behavior: contain;
  }

  body.public-landing .filter-inner {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .55rem;
  }

  body.public-landing .filter-search {
    grid-column: 1 / -1;
    width: 100%;
    min-width: 0;
  }

  body.public-landing .filter-select,
  body.public-landing .filter-btn {
    width: 100%;
    min-width: 0;
    padding-inline: .65rem;
    text-align: center;
  }

  body.public-landing .business-card .biz-header {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  body.public-landing .business-card .biz-category {
    max-width: 100%;
    white-space: normal;
  }

  body.public-landing .hv-page {
    padding-top: 76px;
  }

  body.public-landing .hv-wrap {
    width: 100%;
    padding-inline: clamp(.7rem, 4vw, 1rem);
  }

  body.public-landing .hv-hero,
  body.public-landing .hv-card,
  body.public-landing .hv-band {
    width: 100%;
    min-width: 0;
  }

  body.public-landing .hv-title {
    font-size: clamp(1.7rem, 9vw, 2.5rem);
    overflow-wrap: anywhere;
  }

  body.public-landing .hv-cta > *,
  body.public-landing .hv-contact > * {
    max-width: 100%;
  }

  /* Business detail */
  body.public-business-detail .biz-detail-page {
    padding-bottom: calc(var(--page-fixed-action-height) + 1.25rem + env(safe-area-inset-bottom));
  }

  body.public-business-detail .biz-hero {
    margin-top: 60px;
  }

  body.public-business-detail .biz-shell,
  body.public-business-detail .biz-mobile-quick {
    width: 100%;
  }

  body.public-business-detail .biz-profile-card {
    min-width: 0;
  }

  body.public-business-detail .biz-stats,
  body.public-business-detail .biz-mobile-quick,
  body.public-business-detail .biz-gallery,
  body.public-business-detail .biz-services,
  body.public-business-detail .rev-imgs {
    max-width: 100vw;
  }

  body.public-business-detail .biz-layout,
  body.public-business-detail .biz-layout main,
  body.public-business-detail .biz-layout aside {
    width: 100%;
    min-width: 0;
  }

  body.public-business-detail .biz-panel-head-row {
    min-width: 0;
  }

  body.public-business-detail .biz-rev-top,
  body.public-business-detail .rev-foot {
    flex-wrap: wrap;
  }

  body.public-business-detail .biz-map-fallback {
    padding: 1rem;
    text-align: center;
  }

  body.public-business-detail .biz-mobile-bar {
    min-height: var(--page-fixed-action-height);
    padding-bottom: calc(.55rem + env(safe-area-inset-bottom));
  }

  body.public-business-detail .wa-float {
    display: none;
  }

  body.public-landing:not(.public-business-detail) .footer {
    padding-bottom: calc(5.5rem + env(safe-area-inset-bottom));
  }

  /* Tenant mini-site */
  body.public-tenant {
    --page-fixed-action-height: 66px;
  }

  body.public-tenant .barber-header-container {
    width: 100%;
    min-height: 64px;
    gap: .5rem;
  }

  body.public-tenant .barber-logo {
    max-width: calc(100% - 48px);
  }

  body.public-tenant .barber-logo-img {
    max-width: min(38vw, 150px);
  }

  body.public-tenant .barber-logo-text {
    max-width: 52vw;
  }

  body.public-tenant .barber-logo-text h1 {
    white-space: normal;
    line-height: 1.2;
  }

  body.public-tenant .barber-mobile-menu {
    width: min(88vw, 340px);
    max-width: 100%;
    height: 100dvh;
    padding-bottom: calc(var(--page-fixed-action-height) + 1rem + env(safe-area-inset-bottom));
  }

  body.public-tenant .barber-mobile-contact-text {
    min-width: 0;
  }

  body.public-tenant .barber-mobile-contact-value {
    overflow-wrap: anywhere;
  }

  body.public-tenant .sticky-bar {
    min-height: var(--page-fixed-action-height);
    padding-bottom: env(safe-area-inset-bottom);
    background: #0f172a;
  }

  body.public-tenant .sticky-btn {
    min-width: 0;
    min-height: 56px;
    padding-inline: 3px;
  }

  body.public-tenant .contact-hero {
    min-height: min(520px, calc(100svh - 64px));
    padding: 3.5rem clamp(.75rem, 4vw, 1.25rem) 2.5rem;
  }

  body.public-tenant .contact-hero-sm {
    min-height: 210px;
  }

  body.public-tenant .contact-hero .hero-content {
    width: 100%;
  }

  body.public-tenant .contact-hero .hero-content h1 {
    font-size: clamp(1.8rem, 10vw, 3rem);
    overflow-wrap: anywhere;
  }

  body.public-tenant .hero-cta-group {
    width: 100%;
  }

  body.public-tenant .cta-button {
    justify-content: center;
    min-height: 44px;
  }

  body.public-tenant .contact-main {
    padding: 1.5rem clamp(.7rem, 4vw, 1rem) 2.5rem;
  }

  body.public-tenant .form-card {
    width: 100%;
    padding: clamp(1rem, 5vw, 1.5rem);
  }

  body.public-tenant .about-text,
  body.public-tenant .about-image,
  body.public-tenant .contact-info-col,
  body.public-tenant .contact-form-col {
    width: 100%;
    min-width: 0;
  }

  body.public-tenant .about-3d-card {
    transform: none;
  }

  body.public-tenant .services-grid,
  body.public-tenant .reviews-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  body.public-tenant .gallery-grid,
  body.public-tenant .gallery-grid-full {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.public-tenant .tenant-map-frame {
    height: clamp(220px, 70vw, 320px) !important;
  }

  body.public-tenant .tenant-map-actions {
    flex-direction: column;
    align-items: stretch !important;
    gap: .85rem;
  }

  body.public-tenant .tenant-map-actions > * {
    min-width: 0;
  }

  body.public-tenant .tenant-directions-btn {
    width: 100%;
    justify-content: center;
    margin-left: 0 !important;
    white-space: normal !important;
    text-align: center;
  }

  body.public-tenant .hours-row {
    gap: .75rem;
    padding-inline: .75rem;
  }

  body.public-tenant .hours-day {
    min-width: 0;
    flex-wrap: wrap;
  }

  body.public-tenant .hours-time {
    flex-shrink: 0;
    text-align: right;
  }

  body.public-tenant .isletme-footer {
    padding-bottom: calc(var(--page-fixed-action-height) + env(safe-area-inset-bottom));
  }

  body.public-tenant .footer-inner {
    padding: 2.25rem clamp(.85rem, 5vw, 1.5rem) 1.5rem;
  }
}

@media (max-width: 480px) {
  body.public-landing .filter-inner {
    grid-template-columns: minmax(0, 1fr);
  }

  body.public-landing .filter-search {
    grid-column: auto;
  }

  body.public-landing .footer-cta-btn,
  body.public-landing .btn-big,
  body.public-landing .cta-btns > * {
    width: 100%;
    justify-content: center;
    text-align: center;
  }

  body.public-landing .footer-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  body.public-landing .footer-bot {
    align-items: flex-start;
  }

  body.public-business-detail .biz-rating-box {
    min-width: 0;
  }

  body.public-tenant .hero-cta-group {
    flex-direction: column;
  }

  body.public-tenant .cta-button {
    width: 100%;
  }

  body.public-tenant .rating-summary {
    min-width: 0;
  }

  body.public-tenant .review-header {
    flex-wrap: wrap;
  }

  body.public-tenant .review-stars {
    width: 100%;
    padding-left: 56px;
  }
}

@media (max-width: 340px) {
  body.public-landing .nav-logo .nav-logo-text {
    display: none;
  }

  body.public-landing .brand-mobile-cta {
    width: 38px;
    height: 38px;
    justify-content: center;
    padding: 0;
  }

  body.public-landing .brand-mobile-cta :where(.brand-mobile-cta__long, .brand-mobile-cta__short) {
    display: none;
  }

  body.public-landing .hero {
    padding-inline: .65rem;
  }

  body.public-landing .hero-badge {
    font-size: .72rem;
  }

  body.public-landing .hero-stats {
    gap: .65rem;
  }

  body.public-landing .hs-num {
    font-size: 1.3rem;
  }

  body.public-landing .cat-card,
  body.public-landing .biz-body,
  body.public-landing .biz-info {
    padding-inline: .8rem;
  }

  body.public-landing .hv-hero,
  body.public-landing .hv-card,
  body.public-landing .hv-band {
    padding-inline: .8rem;
  }

  body.public-landing .hv-btn {
    width: 100%;
    justify-content: center;
  }

  body.public-business-detail .biz-profile-card {
    grid-template-columns: 52px minmax(0, 1fr);
    padding: .75rem;
  }

  body.public-business-detail .biz-logo {
    width: 52px;
    height: 52px;
  }

  body.public-business-detail .biz-name {
    font-size: 1.08rem;
  }

  body.public-business-detail .biz-panel {
    padding-inline: .7rem;
  }

  body.public-business-detail .biz-gallery,
  body.public-business-detail .biz-services {
    margin-inline: -.7rem;
    padding-inline: .7rem;
  }

  body.public-tenant .barber-logo-text h1 {
    font-size: 14px;
  }

  body.public-tenant .barber-logo-placeholder {
    width: 42px;
    height: 42px;
  }

  body.public-tenant .sticky-btn {
    font-size: 9px;
  }

  body.public-tenant .sticky-btn i {
    font-size: 16px;
  }

  body.public-tenant .gallery-grid,
  body.public-tenant .gallery-grid-full {
    grid-template-columns: minmax(0, 1fr);
  }

  body.public-tenant .service-card,
  body.public-tenant .review-card,
  body.public-tenant .contact-card-item {
    padding: .9rem;
  }
}

@media (hover: none), (pointer: coarse) {
  body.public-landing .wa-float:hover {
    max-width: 54px;
    transform: none;
    box-shadow: 0 10px 28px rgba(37,211,102,.45);
  }

  body.public-landing .wa-float:hover .wa-float-label {
    opacity: 0;
  }

  body.public-landing :where(.cat-card, .biz-card, .business-card, .how-card, .feat-item):hover,
  body.public-tenant :where(.barber-top-social, .barber-cta-btn, .barber-login-btn, .cta-button, .about-3d-card, .gallery-item, .review-card, .service-card):hover {
    transform: none;
  }

  body.public-tenant .barber-mobile-menu .barber-nav-item:hover {
    padding-left: 28px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.public-landing *,
  body.public-tenant * {
    scroll-behavior: auto !important;
  }

  body.public-landing .blob,
  body.public-landing .wa-float::after,
  body.public-tenant .floating-shape {
    animation: none !important;
  }
}
