/* Shared public layout: shrink grid children, not the entire page. */
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
main,section,article,nav,header,footer,.hero-copy,.section-heading>div,.footer-links>div { min-width:0; }
.brand { max-width:100%; }
.hero-copy,.eyebrow,.carousel-breadcrumb,.feature-card,.shop-card,.location-card,.footer-links { overflow-wrap:anywhere; }
.primary-action,.outline-action,.line-link { max-width:100%; }
.footer-links a { max-width:100%; }
.location-filters { flex-wrap:wrap; }
.location-filters select { min-width:0; max-width:100%; }
.cms-prose img,.article-copy img,.custom-block img,.custom-block video { max-width:100%; height:auto; }
.mobile-menu { overscroll-behavior:contain; padding-bottom:max(24px,env(safe-area-inset-bottom)); }
.mobile-menu-top { position:sticky; top:-24px; z-index:1; background:#181512; padding-block:12px; }
.mobile-menu>a { grid-template-columns:32px minmax(0,1fr) 24px; overflow-wrap:anywhere; }
.mobile-subcategories { grid-template-columns:repeat(2,minmax(0,1fr)); }
.mobile-subcategories a { display:flex; align-items:center; min-height:44px; overflow-wrap:anywhere; }

@media(max-width:1200px) {
  .site-header { grid-template-columns:minmax(0,1fr) auto auto; gap:16px; }
  .main-nav { display:none; }
  .menu-button { display:block; }
  .realm-strip { grid-template-columns:minmax(0,1fr); gap:0; }
  .realm-strip>p { padding-block:18px 12px; }
  .realm-strip>div { min-width:0; grid-template-columns:repeat(5,minmax(0,1fr)); }
  .realm-strip a { min-width:0; padding:18px 14px; overflow-wrap:anywhere; }
  .realm-strip b { font-size:1.125rem; letter-spacing:.08em; }
}

@media(min-width:761px) and (max-width:1100px) {
  .news-grid,.feature-grid,.shop-grid,.location-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .intro-section { grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px; }
  .intro-image-slot { grid-column:1/-1; max-width:480px; justify-self:center; }
}

@media(max-width:1020px) {
  /* All slides share a grid cell. Even inactive slides reserve enough height
     for their text, avoiding clipped copy and jumps when a slide changes. */
  .managed-carousel { display:grid; grid-template-columns:minmax(0,1fr); min-height:36rem; }
  .managed-carousel .hero-slide { position:relative; inset:auto; grid-area:1/1; min-width:0; padding:120px 24px 36px; }
  .managed-carousel .hero-copy { width:100%; margin-inline:0; }
  .managed-carousel .carousel-controls { position:relative; inset:auto; grid-area:2/1; display:grid; grid-template-columns:44px minmax(0,1fr) 44px 44px; gap:8px; margin:0 24px 8px; }
  .managed-carousel .carousel-controls>button { width:44px; height:44px; margin:0; }
  .managed-carousel .carousel-dots { min-width:0; max-width:none; justify-content:center; align-content:center; gap:0; padding:0; }
  .managed-carousel .carousel-dots button { position:relative; width:36px; height:44px; flex:0 0 36px; background:transparent; }
  .managed-carousel .carousel-dots button::after { content:""; position:absolute; left:6px; right:6px; top:21px; height:3px; background:#ffffff70; }
  .managed-carousel .carousel-dots button.is-active::after { background:var(--gold); }
  .managed-carousel .hero-index { position:relative; inset:auto; grid-area:3/1; justify-self:end; margin:0 24px 20px; }
  .hero-copy h1 { font-size:clamp(2.5rem,7vw,4.5rem); line-height:1.2; }
  .eyebrow { flex-wrap:wrap; font-size:.875rem; letter-spacing:.12em; }
  .eyebrow>span:first-child { flex-shrink:0; }
}

@media(max-width:760px) {
  .site-header { grid-template-columns:minmax(0,1fr) 48px; height:76px; gap:12px; padding-inline:max(16px,env(safe-area-inset-left)) max(16px,env(safe-area-inset-right)); }
  .brand .brand-image { width:clamp(160px,48vw,216px); }
  .contact-link { display:none; }
  .menu-button { width:48px; height:48px; }
  .menu-button b { font-size:.75rem; }
  .mobile-menu-top button { width:44px; height:44px; flex-shrink:0; }
  .managed-carousel { min-height:32rem; min-height:clamp(32rem,85svh,44rem); }
  .managed-carousel .hero-slide { padding:108px 18px 32px; }
  .managed-carousel .hero-copy h1 { font-size:clamp(2.25rem,9vw,3.5rem); }
  .hero-copy>p:not(.eyebrow) { margin:20px 0 24px; font-size:1rem; }
  .managed-carousel .carousel-controls { margin-inline:16px; }
  .managed-carousel .hero-index { margin-right:18px; font-size:.875rem; }
  .carousel-breadcrumb { line-height:1.8; margin-bottom:20px; }
  .section-shell,.realm-grid { width:calc(100% - 32px); }
  .realm-strip { padding-inline:16px; }
  .realm-strip>div { grid-template-columns:repeat(2,minmax(0,1fr)); overflow:visible; }
  .realm-strip a { min-height:88px; border-bottom:1px solid #ffffff20; }
  .realm-strip a:last-child:nth-child(odd) { grid-column:1/-1; }
  .realm-strip small { font-size:.75rem; }
  .intro-section { grid-template-columns:minmax(0,1fr); gap:24px; }
  .intro-image-slot { max-width:480px; width:100%; justify-self:center; }
  .section-heading h2,.intro-section h2,.contact-band h2 { font-size:clamp(2rem,8vw,3rem); line-height:1.3; }
  .section-heading .line-link { margin-top:20px; min-height:44px; }
  .news-grid,.feature-grid,.shop-grid,.location-grid { grid-template-columns:minmax(0,1fr); gap:24px; }
  .news-grid { margin-top:32px; }
  .realm-card h3 { font-size:2.25rem; }
  .realm-card small { font-size:.75rem; }
  .realm-card p,.feature-card p { font-size:1rem; line-height:1.8; }
  .news-card>p,.section-kicker,.footer-links b { font-size:.875rem; }
  .news-card h3 { font-size:1.5rem; }
  .business-overview,.intro-section,.realms-section,.news-section { padding-block:56px; }
  .shop-card,.location-card,.feature-card { padding:24px; }
  .cms-prose { font-size:1rem; margin-bottom:28px; }
  .contact-band { grid-template-columns:minmax(0,1fr); padding-inline:16px; }
  .footer-links { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
  .footer-links a { width:auto; min-height:44px; display:flex; align-items:center; font-size:.875rem; }
  .footer-brand p,.footer-bottom { font-size:.875rem; letter-spacing:normal; }
  .footer-bottom { padding-bottom:env(safe-area-inset-bottom); }
  .article-page { padding-block:112px 56px; }
  .article-page>h1 { font-size:clamp(2rem,8vw,3rem); line-height:1.4; }
  .article-page>.breadcrumb { margin-bottom:28px; flex-wrap:wrap; }
  .article-lead { font-size:1rem; }
  .article-page>.breadcrumb,.article-page>.section-kicker,.article-page>h1,.article-lead,.article-copy,.article-visual,.article-associations,.article-page>.line-link { width:calc(100% - 32px); }
  .article-copy p { font-size:1rem; line-height:1.9; }
  .article-visual { margin-block:28px; }
  .article-visual img { aspect-ratio:auto; height:auto; object-fit:contain; }
  .article-copy blockquote { margin-block:24px; padding:20px; font-size:1.25rem; }
  .preview-banner a { display:inline-block; margin:8px 12px; }
  .visual-edit-badge { max-width:calc(100% - 16px); min-height:44px; }
  .page-layout-tools { align-items:flex-start; overflow-wrap:anywhere; }
  .page-layout-tools>div { min-width:0; }
  .page-layout-tools button,.layout-insert button { min-height:44px; }
}

@media(max-width:360px) {
  .mobile-menu { padding-inline:16px; }
  .mobile-subcategories { grid-template-columns:minmax(0,1fr); gap:4px; }
  .managed-carousel .carousel-controls { gap:4px; }
  .managed-carousel .carousel-dots button { width:28px; flex-basis:28px; }
}

@media(hover:none) and (pointer:coarse) {
  button,.primary-action,.outline-action { touch-action:manipulation; }
  .location-card a,.article-associations a { min-height:44px; }
}
