/* site.css — loaded from the Header component embed, so it reaches every page.
   Site-wide layout rules that don't belong to one page's stylesheet. Keep it small.

   Page heads: every index page (Communities, Market Reports, Noteworthy Sales, Living, Getting
   Here, Press, Vendors, Local Guide) opens with the same hero the community pages use —
   header.mm2c_hero > img.mm2c_hero-img + .mm2_hero-veil + .mm2_hero-inner (kicker, title,
   lede, buttons). The classes live in the Designer; the few adjustments below cover content
   that only index heroes carry. */
.mm2_hero-inner .mm2c_lede { text-align: center; }
.mm2_hero-inner .mm2_hero-btn { margin-top: .25rem; }
.mm2_hero-inner .mm2t_more { display: flex; flex-wrap: wrap; justify-content: center; gap: .75rem; margin-top: .25rem; }
.mm2_hero-inner .mm2t_more .mm2_hero-btn { margin-top: 0; }

/* Quality floor, site-wide. */
h1, h2, h3, .mm2_hero-title { text-wrap: balance; }
a, button, [role="button"], input, select, label { touch-action: manipulation; }
.mm2n_facts, .mm2_stat-num, .mm2_price, .mm2s_price, .mm2c_fact-value { font-variant-numeric: tabular-nums; }

/* Mobile menu. The panel is position:fixed inside the header; any filter/transform on the
   header (home.css adds backdrop-filter when scrolled) makes the header its containing block
   and the panel collapses to content height. Drop the filter while the menu is open and pin
   the panel to the viewport regardless. */
.mm2_nav.is-scrolled:has(.mm2_menu.is-open), .mm2_nav:has(.mm2_menu.is-open) { backdrop-filter: none; -webkit-backdrop-filter: none; transform: none; }
.mm2_menu.is-open { position: fixed; top: 0; left: 0; right: 0; bottom: 0; height: 100dvh; }
