/* Fuel & Convenience Market Explorer.
   Shares the research design tokens with the Broadband Market Explorer so the two pages read as
   one series; the channel scale is this vertical's own, set by docs/market-explorer-plan.md. */

/* Let the code-owned experience fill its Bricks mounting section. */
body:has(.g2m-fme) #brx-content .brxe-section:has(.g2m-fme) {
	padding: 0;
}

body:has(.g2m-fme) #brx-content .brxe-container:has(.g2m-fme),
body:has(.g2m-fme) #brx-content .brxe-shortcode:has(> .g2m-fme) {
	width: 100%;
	max-width: none;
}

/* Keep the global header legible over the dark hero. research-header.js withholds its state
   class while the header overlaps a dark surface; elsewhere the theme's own treatment wins. */
html:not(.g2m-research-over-light) body:has(.g2m-fme) #brx-header .header__logo-light {
	filter: brightness(0) invert(1);
}

html:not(.g2m-research-over-light) body:has(.g2m-fme) #brx-header .header__getstarted,
html:not(.g2m-research-over-light) body:has(.g2m-fme) #brx-header .header__menu-icon {
	color: #ffffff !important;
}

.g2m-fme {
	--fme-navy: #182630;
	--fme-navy-soft: #263b48;
	--fme-teal: #2fa4b8;
	--fme-teal-soft: #e3f3f6;
	--fme-orange: #c66b32;
	--fme-purple: #6d6aa9;
	--fme-slate: #7a8b97;
	--fme-ink: #1f2933;
	--fme-muted: #4b5563;
	--fme-line: #d7dde2;
	--fme-line-soft: #e9edf0;
	--fme-page: #f6f7f8;
	--fme-surface: #ffffff;
	--fme-ok: #2e8b57;
	--fme-warn-soft: #f6e9df;

	/* Channel scale. Independent is deliberately the neutral slate: it is the residual
	   category, not a brand, and colouring it like one would overstate it. */
	--fme-channel-chain_convenience: #2fa4b8;
	--fme-channel-independent: #7a8b97;
	--fme-channel-hypermarket_fuel: #182630;
	--fme-channel-travel_center: #c66b32;
	--fme-channel-supplier_brand: #b7c2ca;
	--fme-channel-uncharacterised: #d7dde2;

	display: block;
	width: 100%;
	color: var(--fme-ink);
	background: var(--fme-surface);
	font-family: univia-pro, sans-serif;
	font-size: 18px;
	line-height: 1.45;
	isolation: isolate;
}

.g2m-fme,
.g2m-fme * {
	box-sizing: border-box;
}

.g2m-fme [hidden] {
	display: none !important;
}

/* Theme-defeating rules. The active theme ships two global declarations that quietly break a
   code-owned layout, and both beat inheritance rather than losing to it:

   `section:where(:not(.bricks-shape-divider)) { align-items: center }` centres the children of
   every <section>, so a column flex container's children shrink to their content instead of
   filling the row. Restoring `stretch` on the containers this page owns is the whole fix; it
   was worth 122 mis-sized elements, including every KPI card and chart.

   `h1,h2,… { color: var(--heading-color) }` sets a dark colour directly on the element, which
   beats the white inherited from the dark hero. Every heading over a dark surface therefore
   needs its colour stated, not inherited.

   The hero is deliberately absent from the list below: it is a <header>, not a <section>, so
   the theme rule never reaches it, and it sets its own `align-items: end` to sit the title and
   the lede on a shared baseline. */
.g2m-fme,
.g2m-fme section,
.g2m-fme__section,
.g2m-fme__body-content,
.g2m-fme__panel,
.g2m-fme__ranking-card {
	align-items: stretch;
}

.g2m-fme h1,
.g2m-fme h2,
.g2m-fme h3,
.g2m-fme h4,
.g2m-fme p {
	margin-top: 0;
	font-family: inherit;
}

.g2m-fme button,
.g2m-fme select,
.g2m-fme input {
	font: inherit;
}

.g2m-fme .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---- Hero ------------------------------------------------------------------------------- */

/* The hero is the series signature, so it matches the Broadband Market Explorer exactly rather
   than approximately: a two-column grid, bottom-aligned, with the eyebrow spanning the top, the
   title filling the wide left column and the lede and source meta stacked in the narrow right
   one. Dimensions, breakpoints and the gradient are the telecom explorer's; only the tokens and
   class names differ. A reader moving between the two verticals should not see the masthead
   change shape. */
.g2m-fme__hero {
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.65fr);
	gap: 1.5rem clamp(2rem, 6vw, 6rem);
	align-items: end;
	padding: clamp(5rem, 8vw, 7rem) clamp(2.5rem, 8.5vw, 7rem) clamp(4rem, 7vw, 6rem);
	color: #ffffff;
	background:
		radial-gradient(circle at 86% 14%, rgba(47, 164, 184, 0.28), transparent 24rem),
		linear-gradient(132deg, var(--fme-navy), var(--fme-navy-soft));
}

.g2m-fme__eyebrow {
	margin-bottom: 0.7rem;
	color: var(--fme-teal);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.g2m-fme__hero .g2m-fme__eyebrow {
	grid-column: 1 / -1;
	margin-bottom: 0;
}

.g2m-fme__title {
	grid-column: 1;
	grid-row: 2 / span 2;
	max-width: 760px;
	margin-bottom: 0;
	/* Stated, not inherited: the theme colours every heading directly. */
	color: #ffffff;
	font-size: clamp(3.5rem, 6.15vw, 5.5rem);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -0.02em;
}

.g2m-fme__lede {
	grid-column: 2;
	max-width: 520px;
	margin-bottom: 0;
	color: #ffffff;
	font-size: clamp(1.05rem, 1.75vw, 1.25rem);
	line-height: 1.6;
}

.g2m-fme__meta {
	display: flex;
	grid-column: 2;
	flex-wrap: wrap;
	gap: 0.65rem 1rem;
	color: #c8d5dc;
	font-size: 13px;
	line-height: 1.45;
}

.g2m-fme__meta strong {
	color: #ffffff;
}

/* ---- Status ----------------------------------------------------------------------------- */

.g2m-fme__status {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin: 0;
	padding: 0.85rem clamp(2.5rem, 8.5vw, 7rem);
	background: var(--fme-teal-soft);
	color: var(--fme-navy);
	font-size: 0.86rem;
}

.g2m-fme__status > span[aria-hidden="true"] {
	flex: none;
	width: 0.55rem;
	height: 0.55rem;
	border-radius: 50%;
	background: var(--fme-teal);
}

.g2m-fme__status[data-state="error"] {
	background: var(--fme-warn-soft);
	color: var(--fme-orange);
}

.g2m-fme__status[data-state="error"] > span[aria-hidden="true"] {
	background: var(--fme-orange);
}

.g2m-fme__status[data-state="ready"] {
	/* Match telecom: announce success to screen readers without occupying the finished layout. */
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.g2m-fme__status[data-state="ready"] > span[aria-hidden="true"] {
	background: var(--fme-ok);
}

/* ---- Body and side navigation ----------------------------------------------------------- */

.g2m-fme__body {
	display: grid;
	grid-template-columns: minmax(200px, 20%) minmax(0, 80%);
	gap: 0;
	align-items: start;
	width: 100%;
	max-width: 1280px;
	margin: 2.25rem auto 0;
	padding: 71px 0 80px;
	background: var(--fme-surface);
}

.g2m-fme__sidenav {
	position: sticky;
	top: 100px;
	align-self: start;
	display: flex;
	padding: 0 0 48px;
	flex-direction: column;
}

.g2m-fme__sidenav > span {
	margin-bottom: 20px;
	padding-left: 10px;
	color: var(--fme-teal);
	font-size: 14px;
	font-weight: 700;
	text-transform: uppercase;
}

.g2m-fme__sidenav a {
	width: 100%;
	padding: 5px 0 5px 10px;
	border-bottom: 1px solid var(--fme-teal);
	color: var(--fme-ink);
	font-size: 13px;
	font-weight: 500;
	line-height: 20.8px;
	text-decoration: none;
	text-transform: uppercase;
	transition: color 160ms ease, transform 500ms ease;
}

.g2m-fme__sidenav a:hover,
.g2m-fme__sidenav a:focus-visible {
	color: var(--fme-teal);
	transform: translateX(5px);
}

.g2m-fme__sidenav a[aria-current="true"] {
	color: var(--fme-ink);
}

.g2m-fme__body-content {
	background: var(--fme-surface);
	display: flex;
	flex-direction: column;
	gap: clamp(3rem, 5vw, 4.5rem);
	min-width: 0;
}

/* ---- Sections and panels ---------------------------------------------------------------- */

.g2m-fme__overview {
	padding-bottom: clamp(3.5rem, 7vw, 5.5rem);
	border-bottom: 1px solid var(--fme-line);
}

.g2m-fme__section {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
	padding-inline: 48px;
	scroll-margin-top: 7rem;
}

.g2m-fme__section-head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 1rem;
	padding-bottom: 0.8rem;
	border-bottom: 1px solid var(--fme-line);
}

.g2m-fme__section-head h2 {
	margin-bottom: 0.35rem;
	color: var(--fme-navy);
	font-size: clamp(1.5rem, 2.2vw, 1.9rem);
	font-weight: 600;
}

.g2m-fme__section-head p {
	max-width: 68ch;
	margin: 0;
	color: var(--fme-muted);
	font-size: 0.9rem;
}

.g2m-fme__section-head > span {
	color: var(--fme-muted);
	font-size: 0.8rem;
}

.g2m-fme__panels {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 21rem), 1fr));
	gap: 1rem;
}

.g2m-fme__panels--two {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 26rem), 1fr));
}

/* The volume panel sits full width under the price and tax pair: its figures are state grain
   and belong beside both, not inside either. */
.g2m-fme__volume-row {
	grid-template-columns: minmax(0, 1fr);
	margin-top: 1rem;
}

.g2m-fme__volume {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: 0.75rem 1.25rem;
}

.g2m-fme__volume-figure {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: 0.6rem 0;
}

.g2m-fme__volume-value {
	color: var(--fme-navy);
	font-size: 1.35rem;
	font-weight: 600;
	line-height: 1.1;
	font-variant-numeric: tabular-nums;
}

.g2m-fme__volume-label {
	color: var(--fme-ink);
	font-size: 0.82rem;
}

.g2m-fme__volume-hint {
	color: var(--fme-muted);
	font-size: 0.72rem;
	line-height: 1.35;
}

.g2m-fme__panel {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	min-width: 0;
	padding: 1.2rem 1.35rem;
	border: 1px solid var(--fme-line);
	border-radius: 6px;
	background: var(--fme-surface);
}

.g2m-fme__panel h3 {
	margin: 0;
	color: var(--fme-navy);
	font-size: 1rem;
	font-weight: 600;
}

.g2m-fme__panel h4 {
	margin: 0;
	color: var(--fme-navy);
	font-size: 0.85rem;
	font-weight: 600;
}

.g2m-fme__panel > p {
	margin: 0;
	color: var(--fme-muted);
	font-size: 0.82rem;
}

.g2m-fme__panel-head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	gap: 0.75rem;
}

.g2m-fme__note {
	margin-top: auto;
	padding-top: 0.6rem;
	border-top: 1px solid var(--fme-line-soft);
	color: var(--fme-muted);
	font-size: 0.74rem;
	line-height: 1.4;
}

.g2m-fme__note:empty {
	display: none;
}

.g2m-fme__message {
	margin: 0;
	color: var(--fme-muted);
	font-size: 0.82rem;
	font-style: italic;
}

.g2m-fme__list {
	margin: 0;
	padding-left: 1.1rem;
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
	color: var(--fme-muted);
	font-size: 0.85rem;
}

/* ---- KPIs ------------------------------------------------------------------------------- */

.g2m-fme__kpis {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem;
}

.g2m-fme__kpi {
	--fme-kpi-accent: var(--fme-teal);
	--fme-kpi-tint: rgba(47, 164, 184, 0.13);
	position: relative;
	display: flex;
	min-height: 178px;
	overflow: hidden;
	flex-direction: column;
	padding: 1.35rem;
	border: 0;
	border-radius: 12px;
	background: linear-gradient(145deg, var(--fme-kpi-tint), #ffffff 66%);
	box-shadow: 0 8px 24px rgba(24, 38, 48, 0.08);
}

.g2m-fme__kpi::before {
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 4px;
	background: var(--fme-kpi-accent);
	content: "";
}

.g2m-fme__kpi:nth-child(2) {
	--fme-kpi-accent: #167b87;
	--fme-kpi-tint: rgba(22, 123, 135, 0.12);
}

.g2m-fme__kpi:nth-child(3) {
	--fme-kpi-accent: var(--fme-orange);
	--fme-kpi-tint: rgba(198, 107, 50, 0.12);
}

.g2m-fme__kpi:nth-child(4) {
	--fme-kpi-accent: #6d6aa9;
	--fme-kpi-tint: rgba(109, 106, 169, 0.12);
}

.g2m-fme__kpi-label {
	min-height: 2.9em;
	color: var(--fme-muted);
	font-size: 14px;
	font-weight: 600;
	line-height: 1.4;
}

.g2m-fme__kpi-value {
	margin: auto 0 0.3rem;
	color: var(--fme-kpi-accent);
	font-size: 42px;
	font-variant-numeric: tabular-nums;
	line-height: 1;
}

.g2m-fme__kpi-hint {
	color: var(--fme-muted);
	font-size: 13px;
	line-height: 1.4;
}

/* ---- Bars ------------------------------------------------------------------------------- */

.g2m-fme__bars {
	display: flex;
	flex-direction: column;
	gap: 0.55rem;
}

.g2m-fme__bar {
	display: grid;
	grid-template-columns: minmax(0, 9rem) minmax(0, 1fr) 4.5rem;
	align-items: center;
	gap: 0.6rem;
	font-size: 0.8rem;
}

.g2m-fme__bar-label {
	overflow: hidden;
	color: var(--fme-ink);
	text-overflow: ellipsis;
	white-space: nowrap;
}

.g2m-fme__bar-track {
	height: 0.7rem;
	overflow: hidden;
	border-radius: 2px;
	background: var(--fme-line-soft);
}

.g2m-fme__bar-fill {
	display: block;
	height: 100%;
	background: var(--fme-teal);
}

.g2m-fme__bar-value {
	color: var(--fme-muted);
	font-variant-numeric: tabular-nums;
	text-align: right;
}

/* ---- Ranked lists ----------------------------------------------------------------------- */

.g2m-fme__ranking-list {
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	list-style: none;
	counter-reset: fme-rank;
}

.g2m-fme__ranking-list > li {
	display: grid;
	grid-template-columns: 1.4rem minmax(0, 1fr) auto;
	align-items: baseline;
	gap: 0.5rem;
	padding-bottom: 0.35rem;
	border-bottom: 1px solid var(--fme-line-soft);
	font-size: 0.84rem;
}

.g2m-fme__ranking-list > li:last-child {
	border-bottom: none;
}

.g2m-fme__ranking-list > li::before {
	counter-increment: fme-rank;
	content: counter(fme-rank);
	color: var(--fme-muted);
	font-size: 0.74rem;
	font-variant-numeric: tabular-nums;
}

.g2m-fme__ranking-list .g2m-fme__message::before {
	content: none;
}

.g2m-fme__rank-name {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.g2m-fme__rank-value {
	color: var(--fme-muted);
	font-variant-numeric: tabular-nums;
}

/* A brand its own operator's locator does not list is labelled, never deleted. */
.g2m-fme__currency {
	margin-left: 0.35rem;
	padding: 0.05rem 0.35rem;
	border-radius: 999px;
	background: var(--fme-warn-soft);
	color: var(--fme-orange);
	font-size: 0.62rem;
	font-weight: 600;
	white-space: nowrap;
}

/* ---- Tables ----------------------------------------------------------------------------- */

.g2m-fme table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.82rem;
}

.g2m-fme th {
	padding: 0.45rem 0.5rem;
	border-bottom: 1px solid var(--fme-line);
	color: var(--fme-muted);
	font-size: 0.68rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-align: left;
	text-transform: uppercase;
}

.g2m-fme td {
	padding: 0.45rem 0.5rem;
	border-bottom: 1px solid var(--fme-line-soft);
	vertical-align: top;
}

.g2m-fme tr:last-child td {
	border-bottom: none;
}

.g2m-fme__num {
	font-variant-numeric: tabular-nums;
	text-align: right;
}

.g2m-fme__index-above {
	color: var(--fme-ok);
	font-weight: 600;
}

.g2m-fme__index-below {
	color: var(--fme-orange);
	font-weight: 600;
}

.g2m-fme__table-wrap {
	overflow-x: auto;
}

/* ---- Picker ----------------------------------------------------------------------------- */

.g2m-fme__picker {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.85rem;
	padding: 1rem 1.2rem;
	border: 1px solid var(--fme-line);
	border-radius: 6px;
	background: var(--fme-surface);
}

.g2m-fme__field {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	min-width: 13rem;
	color: var(--fme-muted);
	font-size: 0.76rem;
}

.g2m-fme__field--inline {
	min-width: 0;
}

.g2m-fme__field select {
	padding: 0.45rem 0.6rem;
	border: 1px solid var(--fme-line);
	border-radius: 4px;
	background: var(--fme-surface);
	color: var(--fme-ink);
	font-size: 0.86rem;
}

.g2m-fme__field select:disabled {
	background: var(--fme-page);
	color: var(--fme-muted);
}

.g2m-fme__field-help {
	flex-basis: 100%;
	margin: 0;
	color: var(--fme-muted);
	font-size: 0.74rem;
}

.g2m-fme__holdout {
	margin: 0;
	padding: 0.8rem 1.1rem;
	border: 1px solid var(--fme-orange);
	border-radius: 6px;
	background: var(--fme-warn-soft);
	color: var(--fme-orange);
	font-size: 0.84rem;
}

.g2m-fme__badge {
	padding: 0.15rem 0.55rem;
	border-radius: 999px;
	background: var(--fme-teal-soft);
	color: var(--fme-teal);
	font-size: 0.68rem;
	font-weight: 600;
}

.g2m-fme__badge[data-state="not-rankable"] {
	background: var(--fme-warn-soft);
	color: var(--fme-orange);
}

/* ---- Market grid ------------------------------------------------------------------------ */

.g2m-fme__market {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
	gap: 1rem;
}

.g2m-fme__profile,
.g2m-fme__map-panel {
	grid-column: 1 / -1;
}

@media (min-width: 60rem) {
	.g2m-fme__profile {
		grid-column: span 1;
	}

	.g2m-fme__map-panel {
		grid-column: span 1;
	}
}

.g2m-fme__map {
	width: 100%;
	min-height: 24rem;
	border-radius: 4px;
	background: var(--fme-page);
}

.g2m-fme__layer-toggles {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	color: var(--fme-muted);
	font-size: 0.76rem;
}

.g2m-fme__layer-toggles label {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
}

.g2m-fme__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 0.9rem;
	color: var(--fme-muted);
	font-size: 0.72rem;
}

.g2m-fme__legend-item {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
}

.g2m-fme__legend-item i {
	width: 0.6rem;
	height: 0.6rem;
	border-radius: 50%;
	background: var(--fme-slate);
}

.g2m-fme__legend-item[data-channel="chain_convenience"] i { background: var(--fme-channel-chain_convenience); }
.g2m-fme__legend-item[data-channel="independent"] i { background: var(--fme-channel-independent); }
.g2m-fme__legend-item[data-channel="hypermarket_fuel"] i { background: var(--fme-channel-hypermarket_fuel); }
.g2m-fme__legend-item[data-channel="travel_center"] i { background: var(--fme-channel-travel_center); }
.g2m-fme__legend-item[data-channel="supplier_brand"] i { background: var(--fme-channel-supplier_brand); }
.g2m-fme__legend-item[data-channel="charging"] i { background: var(--fme-purple); }

.g2m-fme__popup h4 {
	margin: 0 0 0.2rem;
	font-size: 0.85rem;
}

.g2m-fme__popup dl {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.1rem 0.5rem;
	margin: 0;
	font-size: 0.74rem;
}

.g2m-fme__popup dt {
	color: var(--fme-muted);
}

.g2m-fme__popup dd {
	margin: 0;
	font-variant-numeric: tabular-nums;
}

/* ---- Price panel ------------------------------------------------------------------------ */

.g2m-fme__price-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
	gap: 0.6rem;
}

.g2m-fme__price {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	padding: 0.65rem 0.75rem;
	border: 1px solid var(--fme-line-soft);
	border-radius: 4px;
}

.g2m-fme__price-grade {
	color: var(--fme-muted);
	font-size: 0.72rem;
}

.g2m-fme__price-value {
	color: var(--fme-navy);
	font-size: 1.25rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.g2m-fme__trend {
	margin: 0;
}

.g2m-fme__trend figcaption {
	margin-bottom: 0.35rem;
	color: var(--fme-muted);
	font-size: 0.72rem;
}

.g2m-fme__sparkline svg {
	display: block;
	width: 100%;
	height: 4.5rem;
}

.g2m-fme__tax-stack {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.g2m-fme__tax-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 4.5rem;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.82rem;
}

.g2m-fme__tax-bar {
	display: flex;
	height: 1.1rem;
	overflow: hidden;
	border-radius: 2px;
	background: var(--fme-line-soft);
}

.g2m-fme__tax-bar i {
	display: block;
	height: 100%;
}

.g2m-fme__tax-bar i[data-part="federal"] { background: var(--fme-navy); }
.g2m-fme__tax-bar i[data-part="state"] { background: var(--fme-teal); }

.g2m-fme__tax-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 0.9rem;
	color: var(--fme-muted);
	font-size: 0.72rem;
}

.g2m-fme__border {
	padding-top: 0.6rem;
	border-top: 1px solid var(--fme-line-soft);
}

.g2m-fme__border p {
	margin: 0.25rem 0;
	font-size: 0.84rem;
}

.g2m-fme__ev-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
	gap: 0.6rem;
}

/* ---- Rankings --------------------------------------------------------------------------- */

.g2m-fme__rankings {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
	gap: 1rem;
}

.g2m-fme__ranking-card {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	padding: 1.1rem 1.25rem;
	border: 1px solid var(--fme-line);
	border-radius: 6px;
	background: var(--fme-surface);
}

.g2m-fme__ranking-card h3 {
	margin: 0;
	color: var(--fme-navy);
	font-size: 0.92rem;
	font-weight: 600;
}

/* ---- Methodology ------------------------------------------------------------------------ */

.g2m-fme__details summary {
	cursor: pointer;
	color: var(--fme-navy);
	font-size: 0.85rem;
	font-weight: 600;
}

.g2m-fme__metric {
	padding: 0.7rem 0;
	border-bottom: 1px solid var(--fme-line-soft);
}

.g2m-fme__metric:last-child {
	border-bottom: none;
}

.g2m-fme__metric h4 {
	margin-bottom: 0.2rem;
}

.g2m-fme__metric p {
	margin: 0 0 0.25rem;
	color: var(--fme-muted);
	font-size: 0.78rem;
}

.g2m-fme__metric-meta {
	color: var(--fme-muted);
	font-size: 0.72rem;
}

.g2m-fme__toggle {
	align-self: flex-start;
	padding: 0.35rem 0.8rem;
	border: 1px solid var(--fme-line);
	border-radius: 4px;
	background: var(--fme-surface);
	color: var(--fme-navy);
	cursor: pointer;
	font-size: 0.78rem;
}

.g2m-fme__toggle:hover {
	border-color: var(--fme-teal);
}

.g2m-fme__closing {
	max-width: 68ch;
	margin: 0;
	color: var(--fme-muted);
	font-size: 0.88rem;
}

.g2m-fme__closing a {
	color: var(--fme-teal);
}

/* Executive orientation: structure, economics, then local evidence. */
.g2m-fme__status { padding-inline: clamp(20px, 4vw, 64px); }
.g2m-fme__section-head h2 { font-size: clamp(26px, 2.3vw, 34px); }
.g2m-fme__section-head { flex-direction: row; align-items: flex-end; }
.g2m-fme__section-head > div { flex: 1 1 560px; min-width: 0; }
.g2m-fme__section-head .g2m-fme__eyebrow { display: block; margin-bottom: 10px; font-size: 12px; color: #256877; }
.g2m-fme__section-head p { font-size: 15px; line-height: 1.65; }
.g2m-fme__panel { padding: 24px; gap: 16px; border-radius: 8px; }
.g2m-fme__panel h3 { font-size: 19px; line-height: 1.35; }
.g2m-fme__panel > p, .g2m-fme__note, .g2m-fme__message { font-size: 13px; line-height: 1.6; }
.g2m-fme__panels { grid-template-columns: repeat(2, minmax(0, 1fr)); }
[data-fme-parent-region] { grid-column: 1 / -1; grid-row: 2; }
.g2m-fme__overview [data-fme-parent-region] { display: block; padding: 1.35rem; border-radius: 12px; }
.g2m-fme__overview [data-fme-parent-region] h3 { margin-bottom: 0.2rem; font-size: 18px; line-height: 1.35; }
.g2m-fme__overview [data-fme-parent-region] > p { margin-bottom: 1.25rem; color: var(--fme-muted); font-size: 14px; line-height: 1.5; }
.g2m-fme__overview [data-fme-parent-list] { display: grid; gap: 0; }
.g2m-fme__overview [data-fme-parent-list] > .g2m-fme__operator-row { display: grid; grid-template-columns: 2.5rem minmax(150px, 1.25fr) minmax(120px, 2fr) 9rem; gap: 0.85rem; min-height: 52px; padding: 0.55rem 0; align-items: center; border-bottom: 1px solid var(--fme-line); }
.g2m-fme__overview [data-fme-parent-list] > li::before,
.g2m-fme__overview [data-fme-parent-list] > li::after { content: none; }
.g2m-fme__operator-rank { color: var(--fme-muted); font-size: 13px; font-weight: 700; }
.g2m-fme__overview [data-fme-parent-list] > .g2m-fme__operator-row[hidden], .g2m-fme__operator-toggle[hidden] { display: none; }
.g2m-fme__operator-toggle { margin-top: 1rem; padding: 0.65rem 1rem; border: 1px solid var(--fme-teal); border-radius: 999px; background: transparent; color: #167b87; font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.g2m-fme__operator-toggle:hover, .g2m-fme__operator-toggle:focus-visible { background: rgba(47, 164, 184, 0.1); }
.g2m-fme__operator-note { display: block; margin-top: 0.75rem; color: var(--fme-muted); font-size: 12px; line-height: 1.45; }
.g2m-fme__operator-identity, .g2m-fme__operator-units { display: flex; min-width: 0; flex-direction: column; }
.g2m-fme__operator-identity strong { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.g2m-fme__operator-track { display: block; height: 10px; overflow: hidden; border-radius: 99px; background: var(--fme-page); }
.g2m-fme__operator-track b { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #167b87, var(--fme-teal)); }
.g2m-fme__operator-units { align-items: flex-end; text-align: right; }
.g2m-fme__operator-units strong { font-size: 17px; }
.g2m-fme__operator-units small { color: var(--fme-muted); font-size: 11px; }
.g2m-fme__overview [data-fme-parent-caveat] { display: block; margin-top: 1rem; padding-top: 0; border: 0; font-size: 12px; line-height: 1.45; }
@media (max-width: 1040px) {
	.g2m-fme__overview [data-fme-parent-list] > .g2m-fme__operator-row { grid-template-columns: 2rem minmax(0, 1fr) minmax(60px, 1fr) 8rem; gap: 0.6rem; }
}
@media (max-width: 760px) {
	.g2m-fme__overview [data-fme-parent-region] { padding: 1rem; }
	.g2m-fme__overview [data-fme-parent-list] > .g2m-fme__operator-row { display: flex; align-items: stretch; flex-direction: column; gap: 0.45rem; }
	.g2m-fme__operator-units { align-items: flex-start; text-align: left; }
}
[data-fme-network-region] { grid-column: 2; grid-row: 1; }
@media (min-width: 761px) {
	.g2m-fme__overview [data-fme-channel-region],
	.g2m-fme__overview [data-fme-network-region] { align-self: stretch; height: 100%; }
}
.g2m-fme__channel-stack-chart { display: grid; grid-template-columns: 110px minmax(0, 1fr); align-items: center; gap: 24px; margin-top: 1rem; }
.g2m-fme__channel-column { display: flex; flex-direction: column; align-items: center; gap: 0.6rem; font-size: 13px; text-align: center; }
.g2m-fme__channel-column > span { color: var(--fme-muted); font-weight: 600; }
.g2m-fme__channel-stack-track { display: flex; flex-direction: column-reverse; width: 92px; height: 230px; overflow: hidden; border: 1px solid #dce8ea; border-radius: 7px; background: #edf3f4; }
.g2m-fme__channel-stack-track > span { display: block; width: 100%; flex-shrink: 0; }
.g2m-fme__channel-stack-legend { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; }
.g2m-fme__channel-stack-legend li { display: grid; grid-template-columns: 9px minmax(0, 1fr) auto; align-items: baseline; gap: 8px; font-size: 13px; line-height: 1.4; color: var(--fme-muted); }
.g2m-fme__channel-stack-legend i { width: 9px; height: 9px; border-radius: 2px; }
.g2m-fme__channel-stack-legend strong { color: var(--fme-ink); white-space: nowrap; }
.g2m-fme__bar { grid-template-columns: minmax(0, 1fr) 64px; gap: 6px 14px; font-size: 13px; padding-block: 5px; }
.g2m-fme__bar-label { white-space: normal; overflow: visible; line-height: 1.4; }
.g2m-fme__bar-value { grid-column: 2; grid-row: 1; }
.g2m-fme__bar-track { grid-column: 1 / -1; height: 7px; }
.g2m-fme__ranking-list { gap: 10px; }
.g2m-fme__ranking-list > li { position: relative; padding: 10px 0 16px; font-size: 14px; }
[data-fme-parent-list] > li::after, [data-fme-market-parent-list] > li::after { content: ''; position: absolute; bottom: 1px; left: 0; width: var(--rank-width, 0); height: 3px; background: #71aab6; }
.g2m-fme__rank-name { white-space: normal; text-align: left; line-height: 1.4; }
button.g2m-fme__rank-name { color: #175e70; border: 0; padding: 0; font: inherit; background: transparent; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.g2m-fme__segments { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; padding: 28px; background: #eaf0f2; border-radius: 8px; }
.g2m-fme__segments article { border-left: 2px solid #75a3b0; padding-left: 18px; }
.g2m-fme__segments span { color: #35606e; font-size: 10px; font-weight: 700; letter-spacing: .09em; }
.g2m-fme__segments h3 { color: var(--fme-navy); font-size: 17px; margin: 10px 0; }
.g2m-fme__segments p { font-size: 13px; line-height: 1.6; margin: 0; }
.g2m-fme__field, .g2m-fme__field-help { font-size: 13px; }
.g2m-fme__field select, .g2m-fme__field input { min-height: 44px; width: 100%; padding: 10px 12px; border: 1px solid #bfcbd2; border-radius: 4px; background: #fff; color: var(--fme-ink); font: inherit; font-size: 14px; }
.g2m-fme__picker { padding: 22px; align-items: start; }
.g2m-fme__picker > .g2m-fme__field { flex: 1 1 180px; min-width: 0; }
.g2m-fme__picker > .g2m-fme__field:has([data-fme-metro]) { flex-basis: 290px; }
.g2m-fme__quick, .g2m-fme__views, .g2m-fme__map-tools { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.g2m-fme__quick { font-size: 13px; }
.g2m-fme__quick button, .g2m-fme__views button { border: 1px solid #bfcbd2; border-radius: 4px; padding: 9px 12px; background: #fff; color: var(--fme-navy); font: inherit; font-size: 13px; cursor: pointer; }
.g2m-fme__views button[aria-pressed="true"] { background: var(--fme-navy); border-color: var(--fme-navy); color: #fff; }
.g2m-fme__market-status { margin: 0; color: #425b66; font-size: 14px; }
.g2m-fme__market { grid-template-columns: repeat(2,minmax(0,1fr)); }
.g2m-fme__market-overview, .g2m-fme__map-panel, .g2m-fme__profile { grid-column: 1 / -1; }
.g2m-fme__market-overview { padding: 30px; background: #203640; border-radius: 8px; color: #fff; }
.g2m-fme__market-overview h3 { color: #fff; margin: 4px 0 0; font-size: 26px; }
.g2m-fme__market-overview .g2m-fme__eyebrow { color: #99d3dd; font-size: 11px; }
.g2m-fme__market-overview p { font-size: 14px; line-height: 1.6; margin: 20px 0 0; color: #dbe6eb; }
.g2m-fme__market-kpis { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 20px; margin-top: 28px; }
.g2m-fme__summary-kpi { display: flex; flex-direction: column; gap: 8px; border-left: 1px solid #50707d; padding-left: 16px; }
.g2m-fme__summary-kpi strong { font-size: 32px; line-height: 1.1; font-variant-numeric: tabular-nums; }
.g2m-fme__summary-kpi span { font-size: 12px; color: #dbe6eb; }
.g2m-fme__market-overview { order: -3; }
.g2m-fme__map-panel { order: -2; }
.g2m-fme__profile { order: -1; overflow-x: auto; }
.g2m-fme__map { min-height: 480px; height: 480px; }
.g2m-fme__map-tools { justify-content: space-between; font-size: 12px; }
.g2m-fme__map-tools > span { flex-basis: 100%; }
.g2m-fme__layer-toggles, .g2m-fme__legend { font-size: 13px; }
.g2m-fme__toggle { min-height: 40px; font-size: 13px; }
.g2m-fme .g2m-fme__toggle { font-size: 13px; }
.g2m-fme table { font-size: 14px; }
.g2m-fme th { font-size: 12px; text-transform: none; letter-spacing: 0; line-height: 1.4; }
.g2m-fme td, .g2m-fme th { padding: 12px 10px; }
.g2m-fme caption { text-align: left; font-size: 13px; color: var(--fme-muted); padding-bottom: 16px; }
.g2m-fme__profile-table th:first-child { width: 45%; }
.g2m-fme__index-above, .g2m-fme__index-below { color: #1e5d70; }
.g2m-fme__economics-controls { display: grid; grid-template-columns: minmax(200px, 360px) minmax(140px, 200px); gap: 1rem; align-items: end; }
.g2m-fme__pricing [data-fme-price-scope], .g2m-fme__pricing [data-fme-tax-scope] { color: var(--fme-muted); font-size: 13px; }
.g2m-fme__pricing .g2m-fme__note { display: block; }
@media (min-width: 761px) {
	.g2m-fme__pricing [data-fme-price-region], .g2m-fme__pricing [data-fme-tax-region] { align-self: stretch; height: 100%; }
}
@media (max-width: 760px) {
	.g2m-fme__economics-controls { grid-template-columns: minmax(0, 1fr); }
}
.g2m-fme__price-value { font-size: 27px; }
.g2m-fme__price-grade { font-size: 13px; }
.g2m-fme__sparkline svg { height: 140px; }
.g2m-fme__trend-range { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; font-size: 11px; color: var(--fme-muted); margin-top: 10px; }
.g2m-fme__trend figcaption, .g2m-fme__tax-legend { font-size: 13px; }
.g2m-fme__ranking-card h3 { font-size: 17px; }
.g2m-fme :is(button, a, input, select, summary):focus-visible { outline: 3px solid #278b9f; outline-offset: 4px; }
/* Match the telecom headings for the overview, pricing and market explorer. */
:is(.g2m-fme__overview, .g2m-fme__pricing, .g2m-fme__explorer) .g2m-fme__section-head {
	gap: 1.25rem;
	padding-bottom: 0;
	border-bottom: 0;
}
:is(.g2m-fme__overview, .g2m-fme__pricing, .g2m-fme__explorer) .g2m-fme__section-head h2 {
	margin-bottom: 0.25rem;
	color: var(--fme-ink);
	font-size: clamp(1.8rem, 2.55vw, 2.25rem);
	font-weight: 800;
	line-height: 1.3;
	letter-spacing: -0.5px;
}
:is(.g2m-fme__overview, .g2m-fme__pricing, .g2m-fme__explorer) .g2m-fme__section-head p {
	max-width: none;
	font-size: 16px;
	line-height: inherit;
}
:is(.g2m-fme__overview, .g2m-fme__pricing, .g2m-fme__explorer) .g2m-fme__section-head > span {
	color: var(--fme-orange);
	font-size: 13px;
	white-space: nowrap;
}
:is(.g2m-fme__overview, .g2m-fme__pricing, .g2m-fme__explorer) .g2m-fme__section-head > div {
	flex: 1 1 auto;
}
.g2m-fme__source-table { min-width: 640px; }
[data-fme-sources-region] { overflow-x: auto; }
@media (max-width: 760px) {
	.g2m-fme__panels, .g2m-fme__market, .g2m-fme__segments { grid-template-columns: minmax(0,1fr); }
	[data-fme-parent-region], [data-fme-network-region] { grid-column: auto; grid-row: auto; }
	.g2m-fme__market-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); }
	.g2m-fme__panel, .g2m-fme__market-overview, .g2m-fme__picker { padding: 20px; }
	.g2m-fme__summary-kpi strong { font-size: 28px; }
	.g2m-fme__map { height: 380px; min-height: 380px; }
	.g2m-fme__profile-table { min-width: 580px; }
	.g2m-fme__section-head > div { flex-basis: auto; }
}

/* ---- Narrow screens --------------------------------------------------------------------- */

/* Hero breakpoints, matching the telecom explorer's: the two columns collapse to one at
   1040px, and below 760px the whole hero becomes a plain column at reduced type sizes. */
@media (max-width: 1040px) {
	.g2m-fme__channel-stack-chart { grid-template-columns: minmax(0, 1fr); }
	.g2m-fme__kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.g2m-fme__body {
		grid-template-columns: minmax(180px, 25%) minmax(0, 75%);
		padding-top: 32px;
	}

	.g2m-fme__section {
		padding-inline: 32px;
	}

	.g2m-fme__hero {
		grid-template-columns: 1fr;
	}

	.g2m-fme__title,
	.g2m-fme__lede,
	.g2m-fme__meta {
		grid-column: 1;
		grid-row: auto;
	}

	.g2m-fme__lede {
		max-width: 760px;
	}
}

@media (max-width: 760px) {
	.g2m-fme {
		overflow-x: hidden;
	}

	.g2m-fme__hero,
	.g2m-fme__meta,
	.g2m-fme__section-head {
		display: flex;
		align-items: stretch;
		flex-direction: column;
	}

	.g2m-fme__hero {
		gap: 0.9rem;
		padding: 4.25rem 1.25rem 3.25rem;
	}

	.g2m-fme__title,
	.g2m-fme__lede,
	.g2m-fme__meta {
		width: 100%;
		max-width: none;
	}

	.g2m-fme__title {
		font-size: clamp(2.35rem, 12vw, 3.25rem);
		line-height: 1.02;
	}

	.g2m-fme__lede {
		font-size: 1rem;
		line-height: 1.5;
	}

	.g2m-fme__meta {
		gap: 0.4rem;
	}
}

@media (max-width: 760px) {
	.g2m-fme__body {
		display: block;
		margin-top: 0;
		padding-top: 0;
	}

	.g2m-fme__section {
		padding-inline: 1.125rem;
	}

	.g2m-fme__section:first-child {
		padding-top: 2rem;
	}
	.g2m-fme__overview { padding-bottom: 2.75rem; }

	.g2m-fme__sidenav {
		display: none;
	}

	.g2m-fme__kpis { grid-template-columns: minmax(0, 1fr); gap: 0.75rem; }
	.g2m-fme__kpi { min-height: 132px; padding: 1rem; }
	.g2m-fme__kpi-label { min-height: 0; }
	.g2m-fme__kpi-value { margin-top: 0.8rem; font-size: 36px; }
}

@media (max-width: 40rem) {
	.g2m-fme {
		font-size: 17px;
	}

	.g2m-fme__bar {
		grid-template-columns: minmax(0, 1fr) 64px;
	}

	.g2m-fme__field {
		min-width: 0;
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.g2m-fme * {
		transition: none !important;
		animation: none !important;
	}
}

.g2m-fme__explorer .g2m-fme__section-head .g2m-fme__kicker {
	margin-bottom: 0;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* National state explorer uses the telecom tile map design. */
.g2m-fme__state-map-panel {
	min-width: 0;
	padding: clamp(1.25rem, 2.5vw, 2rem);
	background: #ffffff;
}

.g2m-fme__state-map-head {
	display: flex;
	gap: 1rem;
	align-items: end;
	justify-content: space-between;
	margin-bottom: 1.5rem;
}

.g2m-fme__state-map-head h3 {
	margin: 0 0 0.2rem;
	font-size: 18px;
}

.g2m-fme__state-map-head p,
.g2m-fme__state-map-head > span {
	margin: 0;
	color: var(--fme-muted);
	font-size: 13px;
}

.g2m-fme__state-map-head > span {
	white-space: nowrap;
}

.g2m-fme__state-map-viewport {
	overflow-x: auto;
	padding: 0.25rem 0.2rem 0.65rem;
}

.g2m-fme__state-map {
	display: grid;
	grid-template-columns: repeat(12, minmax(32px, 1fr));
	grid-template-rows: repeat(9, 42px);
	gap: 6px;
	min-width: 0;
	align-items: stretch;
}

.g2m-fme__state-map > .g2m-fme__data-message {
	grid-area: 1 / 1 / -1 / -1;
}

.g2m-fme__state-tile {
	display: grid;
	min-width: 0;
	padding: 0;
	place-items: center;
	border: 1px solid rgba(8, 43, 67, 0.12);
	border-radius: 7px;
	color: var(--fme-ink);
	background: #edf3f4;
	cursor: pointer;
	transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease;
}

.g2m-fme__state-tile[data-level="0"],
.g2m-fme__map-legend i[data-level="0"] { background: #edf6f7; }
.g2m-fme__state-tile[data-level="1"],
.g2m-fme__map-legend i[data-level="1"] { background: #cfe8ec; }
.g2m-fme__state-tile[data-level="2"],
.g2m-fme__map-legend i[data-level="2"] { background: #9fd2da; }
.g2m-fme__state-tile[data-level="3"],
.g2m-fme__map-legend i[data-level="3"] { background: #55aebe; }
.g2m-fme__state-tile[data-level="4"],
.g2m-fme__map-legend i[data-level="4"] { background: #177e93; }

.g2m-fme__state-tile[data-level="4"] {
	color: #ffffff;
}

.g2m-fme__state-tile:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 14px rgba(8, 43, 67, 0.14);
}

.g2m-fme__state-tile:focus-visible,
.g2m-fme__state-tile.is-selected,
/* Bricks/Automatic.css ships `body.bricks-is-frontend.bricks-is-frontend :focus { outline: none }`
   at (0,3,1). A mouse click leaves the tile focused, so the selected outline vanished until
   focus moved elsewhere. This selector is (0,4,0) so the selection stays visible while focused. */
.g2m-fme__state-map .g2m-fme__state-tile.is-selected:focus {
	position: relative;
	z-index: 1;
	outline: 3px solid #c96724;
	outline-offset: 2px;
}

.g2m-fme__state-tile strong {
	font-size: 12px;
	letter-spacing: 0.04em;
}

.g2m-fme__map-legend {
	display: flex;
	gap: 0.35rem;
	align-items: center;
	margin-top: 1rem;
	color: var(--fme-muted);
	font-size: 11px;
}

.g2m-fme__map-legend i {
	width: 1.4rem;
	height: 0.65rem;
	border: 1px solid rgba(8, 43, 67, 0.1);
}

.g2m-fme__map-legend span:last-child {
	margin-left: 0.2rem;
}


.g2m-fme__explorer > .g2m-fme__picker { padding: 0; border: 0; border-radius: 0; background: #fff; gap: .75rem; margin-bottom: 1rem; }
.g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field { flex: 1 1 175px; }
.g2m-fme__state-map-panel { border: 1px solid var(--fme-line); border-radius: 14px; }
.g2m-fme__state-selection { margin: 1rem 0 .4rem; font-size: 14px; font-weight: 700; color: var(--fme-ink); }
.g2m-fme__state-map { grid-template-rows: repeat(9, 42px); }
.g2m-fme__state-tile:disabled { opacity: .45; cursor: not-allowed; }
.g2m-fme__state-map > .g2m-fme__message { grid-area: 1 / 1 / -1 / -1; }
.g2m-fme__state-map-panel .g2m-fme__note { display: block; margin-top: .7rem; }
@media (max-width: 760px) {
 .g2m-fme__state-map { grid-template-columns: repeat(12, minmax(28px, 1fr)); grid-template-rows: repeat(9, 34px); gap: 4px; }
 .g2m-fme__state-map-head { align-items: start; flex-direction: column; gap: .4rem; }
 .g2m-fme__state-tile strong { font-size: 10px; }
 .g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field { flex-basis: 100%; }
}

.g2m-fme__state-map-head, .g2m-fme__state-map-viewport, .g2m-fme__state-map { width: 100%; }
.g2m-fme__state-map-panel { display: block; }

.g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field:has([data-fme-metro]) { flex-basis: 220px; }
/* Match telecom market controls, scoped to this explorer's filter row. */
.g2m-fme__explorer > .g2m-fme__picker { align-items: flex-start; }
.g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field,
.g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field:has([data-fme-metro]) { display: block; flex: 1 1 175px; min-width: 0; max-width: 240px; }
.g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field > span { display: block; margin-bottom: .4rem; color: var(--fme-muted); font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.g2m-fme__explorer > .g2m-fme__picker select { width: 100%; min-height: 40px; padding: .5rem 2rem .5rem .65rem; border: 1px solid var(--fme-line); border-radius: 8px; color: var(--fme-muted); background: var(--fme-page); font-size: 14px; }
@media (max-width: 760px) {
 .g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field,
 .g2m-fme__explorer > .g2m-fme__picker > .g2m-fme__field:has([data-fme-metro]) { flex: 0 0 auto; width: 100%; max-width: none; }
}

/* Selected market: the same primary measure and three-fact layout as telecom. */
.g2m-fme__market-overview {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(280px, 0.8fr);
	gap: 0.2rem 2rem;
	padding: clamp(1.5rem, 3vw, 2rem);
	align-items: center;
	color: #ffffff;
	background: var(--fme-navy);
}

.g2m-fme__market-overview .g2m-fme__kicker {
	grid-column: 1;
	color: var(--fme-teal);
}

.g2m-fme__market-overview h3 {
	grid-column: 1;
	margin-bottom: 0.25rem;
	color: #ffffff;
	font-size: 1.75rem;
	line-height: 1.1;
	letter-spacing: -0.035em;
}

.g2m-fme__market-overview > p:not(.g2m-fme__kicker) {
	grid-column: 1;
	margin-bottom: 0;
	color: #b7cbd3;
	font-size: 14px;
}

.g2m-fme__market-primary {
	display: grid;
	grid-column: 2;
	grid-row: 1 / span 3;
	grid-template-columns: 1fr auto;
	gap: 0.15rem 1rem;
	padding: 1.25rem 0;
	border-top: 1px solid rgba(255, 255, 255, 0.14);
	border-bottom: 1px solid rgba(255, 255, 255, 0.14);
}

.g2m-fme__market-primary strong {
	grid-row: 1 / span 2;
	color: #ffffff;
	font-size: clamp(2.6rem, 5vw, 4rem);
	line-height: 0.95;
	letter-spacing: -0.05em;
}

.g2m-fme__market-primary span {
	align-self: end;
	color: #c1d1d8;
	font-size: 12px;
	text-align: right;
}

.g2m-fme__market-primary em {
	color: var(--fme-teal);
	font-size: 12px;
	font-style: normal;
	font-weight: 700;
	text-align: right;
}

.g2m-fme__market-primary em.is-negative { color: #f0b4a1; }
.g2m-fme__market-primary em.is-positive { color: var(--fme-teal); }

.g2m-fme__market-facts {
	display: grid;
	grid-column: 1 / -1;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	margin-top: 1rem;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.g2m-fme__market-facts > div {
	display: block;
	padding: 1rem 1.25rem;
	border-right: 1px solid rgba(255, 255, 255, 0.12);
}

.g2m-fme__market-facts > div:first-child { padding-left: 0; }
.g2m-fme__market-facts > div:last-child { border-right: 0; }

.g2m-fme__market-facts strong {
	display: block;
	margin-bottom: 0.25rem;
	color: #ffffff;
	font-size: 22px;
}

.g2m-fme__market-facts span {
	color: #c1d1d8;
	font-size: 12px;
	line-height: 1.35;
}


.g2m-fme__market-overview { border-radius: 0; }
.g2m-fme__market-overview .g2m-fme__kicker { margin: 0 0 .7rem; color: #58b7c7; font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.g2m-fme__market-overview h3 { margin: 0 0 .25rem; }
.g2m-fme__market-overview > p:not(.g2m-fme__kicker) { margin: 0; line-height: 1.45; }
.g2m-fme__market-primary { width: 100%; }
.g2m-fme__market-primary em { color: #58b7c7; }
.g2m-fme__market-facts { width: 100%; }
.g2m-fme__market-caveat { grid-column: 1 / -1; color: #b7cbd3; font-size: 12px; line-height: 1.45; }
@media (max-width: 760px) {
	.g2m-fme__market-overview {
		display: block;
		padding: 1.25rem;
	}

	.g2m-fme__market-overview h3 {
		font-size: 1.55rem;
	}

	.g2m-fme__market-primary {
		display: flex;
		margin-top: 0.85rem;
		align-items: flex-start;
		flex-direction: column;
		gap: 0.35rem;
	}

	.g2m-fme__market-primary strong {
		font-size: 2.6rem;
	}

	.g2m-fme__market-primary span,
	.g2m-fme__market-primary em {
		text-align: left;
	}

	.g2m-fme__market-facts {
		display: block;
	}

	.g2m-fme__market-facts > div,
	.g2m-fme__market-facts > div:first-child {
		display: block;
		padding: 0.85rem 0;
		border-right: 0;
		border-bottom: 1px solid rgba(255, 255, 255, 0.12);
	}

	.g2m-fme__market-facts > div:last-child {
		border-bottom: 0;
	}

	.g2m-fme__market-facts span {
		max-width: none;
		text-align: left;
	}


}

/* Stack the explorer subsections inside the same continuous frame as telecom. */
.g2m-fme__explorer-stack { display: block; width: 100%; min-width: 0; overflow: hidden; border: 1px solid var(--fme-line); border-radius: 14px; }
.g2m-fme__explorer-stack > .g2m-fme__state-map-panel { border: 0; border-radius: 0; }
.g2m-fme__explorer-stack > .g2m-fme__market { width: 100%; grid-template-columns: minmax(0, 1fr); gap: 0; }
.g2m-fme__explorer-stack .g2m-fme__market > * { grid-column: 1 / -1; width: 100%; min-width: 0; border-radius: 0; }
.g2m-fme__explorer-stack .g2m-fme__market > .g2m-fme__panel { border: 0; border-top: 1px solid var(--fme-line); }

/* Detailed map follows telecom's evidence header and framed overlay controls. */
.g2m-fme__map-head {
	display: flex;
	gap: 1rem;
	align-items: end;
	justify-content: space-between;
	margin-bottom: 1.25rem;
}

.g2m-fme__map-head .g2m-fme__kicker {
	margin-bottom: 0.35rem;
}

.g2m-fme__map-head h3 {
	margin: 0 0 0.25rem;
	font-size: clamp(1.35rem, 2.2vw, 1.8rem);
}

.g2m-fme__map-head p:last-child,
.g2m-fme__map-head > span {
	margin: 0;
	color: var(--fme-muted);
	font-size: 13px;
}

.g2m-fme__map-head > span {
	white-space: nowrap;
}

.g2m-fme__map-frame {
	overflow: hidden;
	border: 1px solid var(--fme-line);
	border-radius: 10px;
	background: #f7fafb;
}

.g2m-fme__map {
	display: block;
	width: 100%;
	height: clamp(320px, 44vw, 520px);
}

.g2m-fme__map.is-unavailable {
	display: grid;
	place-items: center;
	padding: 2rem;
	color: var(--fme-muted);
	text-align: center;
}

.g2m-fme__map-frame .maplibregl-canvas:focus-visible {
	outline: 3px solid var(--fme-teal);
	outline-offset: -3px;
}

.g2m-fme__map-frame .maplibregl-ctrl-group {
	box-shadow: 0 1px 5px rgba(14, 35, 48, 0.24);
}

.g2m-fme__map-frame .maplibregl-ctrl-attrib {
	font-size: 10px;
}

.g2m-fme__map-frame .maplibregl-popup {
	z-index: 4;
}

.g2m-fme__map-frame .maplibregl-popup-content {
	padding: 1rem 3rem 1rem 1rem;
	border-radius: 10px;
}

.g2m-fme__map-frame .maplibregl-popup-close-button {
	top: 0.5rem;
	right: 0.5rem;
	display: grid;
	width: 2rem;
	height: 2rem;
	padding: 0;
	place-items: center;
	border-radius: 50%;
	color: var(--fme-muted);
	background: transparent;
	font-size: 18px;
	line-height: 1;
}

.g2m-fme__map-frame .maplibregl-popup-close-button:hover,
.g2m-fme__map-frame .maplibregl-popup-close-button:focus-visible {
	color: var(--fme-navy);
	background: var(--fme-page);
}

.g2m-fme__map-frame .maplibregl-popup-close-button:focus-visible {
	outline: 2px solid var(--fme-teal);
	outline-offset: 1px;
}

.g2m-fme__overlay-switch {
	margin: 0;
	padding: 1rem 1rem 0.9rem;
	border: 0;
	border-bottom: 1px solid var(--fme-line);
	background: #ffffff;
}

.g2m-fme__overlay-switch[hidden] {
	display: none;
}

.g2m-fme__overlay-switch legend {
	padding: 0.9rem 0 0;
	color: var(--fme-navy);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.g2m-fme__overlay-note {
	margin: 0.45rem 0 0.75rem;
	max-width: 62ch;
	color: var(--fme-muted);
	font-size: 11px;
}

.g2m-fme__overlay-options {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem 1.1rem;
	align-items: center;
}


.g2m-fme__overlay-option {
	display: inline-flex;
	gap: 0.35rem;
	align-items: center;
	color: var(--fme-navy);
	font-size: 12px;
	cursor: pointer;
}


.g2m-fme__overlay-option input {
	margin: 0;
	accent-color: #b91c1c;
}

/* Fullscreen targets the whole component so the controls come with it; the canvas has a
   clamped height for the inline case and has to be released to fill the screen. */
.g2m-fme__map-frame:fullscreen {
	display: flex;
	flex-direction: column;
	border-radius: 0;
	background: #ffffff;
}

.g2m-fme__map-frame:fullscreen .g2m-fme__map {
	flex: 1 1 auto;
	height: auto;
	min-height: 0;
}


.g2m-fme__explorer-stack .g2m-fme__market > .g2m-fme__map-panel { padding: clamp(1.5rem, 3vw, 2.25rem); }
.g2m-fme__map-head, .g2m-fme__map-frame, .g2m-fme__overlay-switch, .g2m-fme__overlay-options { width: 100%; min-width: 0; }
.g2m-fme__map-head .g2m-fme__kicker { margin: 0 0 .35rem; color: #2fa4b8; font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.g2m-fme__map-panel .g2m-fme__map-head h3 { margin: 0 0 .25rem; font-size: clamp(1.35rem, 2.2vw, 1.8rem); }
.g2m-fme__map-frame .g2m-fme__map { min-height: 0; height: clamp(320px, 44vw, 520px); }
.g2m-fme__views.g2m-fme__overlay-switch { display: block; }
.g2m-fme__overlay-switch .g2m-fme__overlay-note { margin: .45rem 0 .75rem; max-width: 62ch; font-size: 11px; }
.g2m-fme__layer-switch { margin: 0; padding: .5rem 1rem .9rem; border: 0; border-bottom: 1px solid var(--fme-line); background: #fff; width: 100%; }
.g2m-fme__layer-switch legend { padding: .6rem 0 0; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--fme-navy); }
.g2m-fme__overlay-option input { width: auto; min-height: 0; }
.g2m-fme__map-frame .g2m-fme__map-tools { padding: .6rem .75rem; margin: 0; border-top: 1px solid var(--fme-line); background: #fff; }
.g2m-fme__map-frame .g2m-fme__legend { margin: 0; padding: .6rem .75rem; border-top: 1px solid var(--fme-line); background: #fff; font-size: 11px; }
.g2m-fme__map-panel > .g2m-fme__note { display: block; margin-top: .85rem; }
.g2m-fme__map-frame:fullscreen .g2m-fme__map { height: auto; flex: 1 1 auto; min-height: 0; }
@media (max-width: 760px) {
 .g2m-fme__explorer-stack .g2m-fme__market > .g2m-fme__map-panel { padding: 1rem; }
 .g2m-fme__map-head { flex-direction: column; align-items: flex-start; gap: .75rem; }
}

/* Match the live telecom component without inheriting generic card gaps or heading weight. */
.g2m-fme__map-summary {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin-bottom: 1rem;
	border: 1px solid var(--fme-line);
	border-radius: 10px;
}

.g2m-fme__map-summary > div {
	padding: 1rem 1.25rem;
	border-right: 1px solid var(--fme-line);
}

.g2m-fme__map-summary > div:last-child {
	border-right: 0;
}

.g2m-fme__map-summary strong,
.g2m-fme__map-summary span {
	display: block;
}

.g2m-fme__map-summary strong {
	margin-bottom: 0.25rem;
	color: var(--fme-navy);
	font-size: clamp(1.5rem, 3vw, 2.25rem);
}

.g2m-fme__map-summary span {
	color: var(--fme-muted);
	font-size: 12px;
	line-height: 1.35;
}


.g2m-fme__explorer-stack .g2m-fme__market > .g2m-fme__map-panel { display: block; }
.g2m-fme__map-panel .g2m-fme__map-head h3 { font-weight: 400; line-height: 1.2; }
.g2m-fme__map-summary { width: 100%; }
.g2m-fme__map-frame .g2m-fme__overlay-switch { display: block; padding: .85rem 1rem; }
.g2m-fme__map-frame .g2m-fme__overlay-switch legend { float: left; width: 100%; padding: 0; margin: 0 0 .65rem; line-height: 1.45; }
.g2m-fme__map-frame .g2m-fme__overlay-note { clear: both; margin: 0 0 .65rem; font-size: 11px; line-height: 1.45; }
.g2m-fme__map-frame .g2m-fme__views { margin: 0; gap: .35rem 1.1rem; }
.g2m-fme__map-frame .g2m-fme__overlay-options { display: flex; flex-wrap: wrap; flex-direction: row; }
.g2m-fme__overlay-layers { margin-top: .65rem; color: var(--fme-muted); font-size: 11px; }
.g2m-fme__map-summary strong { font-weight: 700; line-height: 1.2; }
@media (max-width: 760px) {
 .g2m-fme__map-summary { grid-template-columns: minmax(0, 1fr); }
 .g2m-fme__map-summary > div { padding: .85rem 1rem; border-right: 0; border-bottom: 1px solid var(--fme-line); }
 .g2m-fme__map-summary > div:last-child { border-bottom: 0; }
}

/* Local ranking uses the telecom competitive-set component. */
.g2m-fme__competitive-set {
	display: block;
	width: 100%;
	height: auto;
	min-height: 0;
	margin-top: 1.25rem;
	padding: clamp(1rem, 2.5vw, 1.5rem);
	border: 1px solid var(--fme-line);
	border-radius: 10px;
	background: #ffffff;
}

.g2m-fme__competitive-set > * {
	width: 100%;
	max-width: none;
}

.g2m-fme__competitive-head {
	display: flex;
	gap: 1rem;
	align-items: start;
	justify-content: space-between;
}

.g2m-fme__competitive-head h4 {
	margin: 0 0 0.2rem;
	color: var(--fme-navy);
	font-size: 18px;
}

.g2m-fme__competitive-head p {
	margin: 0;
	color: var(--fme-muted);
	font-size: 13px;
}

.g2m-fme__competitive-head > strong {
	flex: 0 0 auto;
	padding: 0.35rem 0.6rem;
	border-radius: 999px;
	background: #e9f5f6;
	color: var(--fme-navy-soft);
	font-size: 12px;
}

.g2m-fme__competitive-columns,
.g2m-fme__competitive-item {
	display: grid;
	grid-template-columns: 2.5rem minmax(190px, 0.9fr) minmax(180px, 1.35fr) minmax(5rem, auto);
	gap: 0.85rem;
	align-items: center;
}

.g2m-fme__competitive-columns {
	margin-top: 1.25rem;
	padding: 0 0.75rem 0.45rem;
	border-bottom: 1px solid var(--fme-line);
	color: var(--fme-muted);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.g2m-fme__competitive-columns span:first-child {
	grid-column: 2;
}

.g2m-fme__competitive-columns span:last-child {
	grid-column: 3 / 5;
	text-align: right;
}

.g2m-fme__competitive-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.g2m-fme__competitive-item {
	min-height: 3.65rem;
	padding: 0.6rem 0.75rem;
	border-bottom: 1px solid var(--fme-line);
}

.g2m-fme__competitive-item.is-selected {
	background: #f0f9fa;
	box-shadow: inset 3px 0 0 var(--fme-teal);
}

.g2m-fme__competitive-rank {
	color: var(--fme-muted);
	font-size: 12px;
	font-weight: 700;
}

.g2m-fme__competitive-identity strong,
.g2m-fme__competitive-identity small {
	display: block;
}

.g2m-fme__competitive-identity strong {
	color: var(--fme-navy);
	font-size: 14px;
	line-height: 1.2;
}

.g2m-fme__competitive-identity small {
	margin-top: 0.2rem;
	color: var(--fme-muted);
	font-size: 11px;
}

.g2m-fme__competitive-identity em {
	display: inline-block;
	margin: 0.2rem 0.35rem 0 0;
	padding: 0.12rem 0.35rem;
	border-radius: 999px;
	background: var(--fme-navy);
	color: #ffffff;
	font-size: 9px;
	font-style: normal;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.g2m-fme__competitive-meter {
	display: block;
	height: 0.65rem;
	overflow: hidden;
	border-radius: 999px;
	background: #edf2f3;
}

.g2m-fme__competitive-meter i {
	display: block;
	height: 100%;
	border-radius: inherit;
	background: linear-gradient(90deg, var(--fme-teal), #72bcc7);
}

.g2m-fme__competitive-value {
	color: var(--fme-navy);
	font-size: 14px;
	text-align: right;
}

.g2m-fme__competitive-set > .g2m-fme__data-message {
	margin: 1rem 0 0;
}

.g2m-fme__competitive-set > .g2m-fme__chart-note {
	display: block;
	margin-top: 0.9rem;
}



.g2m-fme__competitive-set .g2m-fme__competitive-head h4 { margin: 0 0 .2rem; font-size: 18px; font-weight: 400; line-height: 1.3; }
.g2m-fme__competitive-head > strong { background: #e9f5f6; color: #263b48; }
.g2m-fme__competitive-note { display: block; margin-top: .9rem; color: var(--fme-muted); font-size: 12px; line-height: 1.45; }
@media (max-width: 760px) {
 .g2m-fme__competitive-set { padding: 1rem; }
 .g2m-fme__competitive-head { flex-direction: column; gap: .75rem; }
 .g2m-fme__competitive-head > strong { align-self: flex-start; }
 .g2m-fme__competitive-columns { display: none; }
 .g2m-fme__competitive-item { grid-template-columns: minmax(0, 1fr); gap: .5rem; padding: .85rem 0; }
 .g2m-fme__competitive-meter { width: 100%; }
 .g2m-fme__competitive-value { text-align: left; }
}
/* Separate the map notes from the ranking below, rather than from the map above. */
.g2m-fme__map-panel > .g2m-fme__note { border-top: 0; padding-top: 0; padding-bottom: .85rem; border-bottom: 1px solid var(--fme-line-soft); }

/* Methodology: shared telecom research template. */
.g2m-fme__method {
	padding: clamp(3.5rem, 7vw, 5.5rem) clamp(2rem, 4vw, 3.5rem);
	border-top: 1px solid var(--fme-line);
	background: var(--fme-surface);
	scroll-margin-top: 7rem;
}

.g2m-fme__method-head {
	max-width: 760px;
	margin-bottom: 1.5rem;
}

.g2m-fme__method-head .g2m-fme__kicker {
	margin-bottom: 0.45rem;
}

.g2m-fme__method-head h2 {
	margin-bottom: 0.5rem;
	font-size: clamp(1.8rem, 2.55vw, 2.25rem);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.5px;
}

.g2m-fme__method-head > p:last-child {
	margin-bottom: 0;
	color: var(--fme-muted);
	font-size: 16px;
}

.g2m-fme__method-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	/* The theme sets align-items: flex-start on grids, so cards keep their content height
	   and leave a ragged gap under the shorter one in each row. */
	align-items: stretch;
}

.g2m-fme__method-card {
	position: relative;
	min-width: 0;
	padding: 1.5rem 1.5rem 1.5rem 4.25rem;
	border: 1px solid var(--fme-line);
	border-radius: 12px;
	background: var(--fme-surface);
}

.g2m-fme__method-number {
	position: absolute;
	top: 1.5rem;
	left: 1.5rem;
	color: var(--fme-teal);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.08em;
}

.g2m-fme__method-card h3 {
	margin-bottom: 0.55rem;
	font-size: 18px;
	line-height: 1.3;
}

.g2m-fme__method-card p {
	margin-bottom: 0;
	color: var(--fme-muted);
	font-size: 14px;
	line-height: 1.55;
}

.g2m-fme__method-card p + p {
	margin-top: 0.65rem;
	padding-top: 0.65rem;
	border-top: 1px solid var(--fme-line);
}

.g2m-fme__method-foot {
	display: flex;
	gap: 1rem 2rem;
	margin-top: 1.25rem;
	padding-top: 1rem;
	align-items: center;
	justify-content: space-between;
	border-top: 1px solid var(--fme-line);
	color: var(--fme-muted);
	font-size: 12px;
}

.g2m-fme__method-foot p {
	margin-bottom: 0;
}

.g2m-fme__method-foot strong {
	color: var(--fme-ink);
}

.g2m-fme__method-links {
	display: flex;
	gap: 0.5rem 1rem;
	flex-wrap: wrap;
}

.g2m-fme__method-links a {
	color: var(--fme-teal);
	font-weight: 700;
}

.g2m-fme__method-links a:hover,
.g2m-fme__method-links a:focus-visible {
	text-decoration-thickness: 2px;
	text-underline-offset: 3px;
}


.g2m-fme__method-head .g2m-fme__kicker { color:var(--fme-teal); font-size:14px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.g2m-fme__method-card h3 { font-weight:400; }
.g2m-fme-cite { margin:1.5rem 0 0; padding:1.2rem 1.35rem; background:#fff; border:1px solid #d7dde2; border-left:3px solid #2fa4b8; border-radius:0 10px 10px 0; }
.g2m-fme .g2m-fme-cite__title { margin:0 0 .6rem; color:#182630; font-size:.78rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.g2m-fme-cite__string { max-width:78ch; margin:0 0 .85rem; color:#1f2933; font-size:.94rem; line-height:1.55; }
.g2m-fme-cite__copy { display:inline-flex; align-items:center; justify-content:center; width:1.5rem; height:1.5rem; margin:0 0 0 .35rem; padding:0; border:0; border-radius:4px; background:transparent; color:#4b5563; vertical-align:middle; cursor:pointer; opacity:.7; }
.g2m-fme-cite__copy:hover,.g2m-fme-cite__copy:focus-visible { opacity:1; color:#2fa4b8; background:#e3f3f6; }
.g2m-fme-cite__copy svg { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.g2m-fme-cite__terms { max-width:78ch; margin:0 0 .5rem; color:#4b5563; font-size:.84rem; line-height:1.5; }
@media(max-width:760px) {
.g2m-fme__method { padding:2.75rem 1.125rem; }
.g2m-fme__method-grid { grid-template-columns:1fr; gap:.75rem; }
.g2m-fme__method-head { margin-bottom:.25rem; }
.g2m-fme__method-head h2 { font-size:1.65rem; }
.g2m-fme__method-card { padding:1.25rem 1.25rem 1.25rem 3.75rem; }
.g2m-fme__method-number { top:1.25rem; left:1.25rem; }
.g2m-fme__method-foot { flex-direction:column; align-items:flex-start; }
}

.g2m-fme__method { display: block; }

/* Loading feedback shared with the telecom explorer. */
@keyframes g2m-fme-loading-sweep {
	from { background-position: 180% 0; }
	to { background-position: -80% 0; }
}

.g2m-fme [aria-busy="true"] .g2m-fme__message {
	gap: 0.75rem;
	flex-direction: column;
}

.g2m-fme [aria-busy="true"] .g2m-fme__message::after {
	width: 72px;
	height: 3px;
	border-radius: 999px;
	background: linear-gradient(90deg, transparent 10%, var(--fme-teal) 50%, transparent 90%) 0 0 / 200% 100%;
	content: "";
	animation: g2m-fme-loading-sweep 1.4s ease-in-out infinite;
}

/* Block evidence loads a metro in 20,000-row pages, which for the largest metros takes long
   enough that an indeterminate sweep reads as "stuck". Once the first page returns, the
   loader sets --fme-progress and the sweep becomes a determinate fill. */
.g2m-fme [aria-busy="true"] .g2m-fme__message[style*="--fme-progress"]::after {
	width: min(260px, 70%);
	background: linear-gradient(90deg, var(--fme-teal) var(--fme-progress), rgba(74, 171, 190, 0.18) 0) 0 0 / 100% 100%;
	animation: none;
	transition: background 240ms ease;
}

.g2m-fme [aria-busy="true"] .g2m-fme__kpi-value,
.g2m-fme [aria-busy="true"] [data-fme-map-stat],
.g2m-fme [aria-busy="true"] .g2m-fme__horizontal-row > i {
	color: transparent;
	background: linear-gradient(100deg, rgba(74, 171, 190, 0.08) 20%, rgba(74, 171, 190, 0.25) 42%, rgba(74, 171, 190, 0.08) 64%) 0 0 / 220% 100%;
	animation: g2m-fme-loading-sweep 1.65s ease-in-out infinite;
}

.g2m-fme [aria-busy="true"] .g2m-fme__kpi-value {
	width: min(72%, 8rem);
	min-height: 0.82em;
	border-radius: 0.14em;
}

.g2m-fme [aria-busy="true"] [data-fme-map-stat] {
	width: 3.25em;
	min-height: 0.9em;
	border-radius: 0.14em;
}

.g2m-fme .g2m-fme__market-overview[aria-busy="true"] [data-fme-market-sites],
.g2m-fme .g2m-fme__market-overview[aria-busy="true"] .g2m-fme__market-facts strong {
	width: 4.5ch;
	min-height: 0.85em;
	border-radius: 0.14em;
	color: transparent;
	background: linear-gradient(100deg, rgba(255, 255, 255, 0.08) 20%, rgba(255, 255, 255, 0.24) 42%, rgba(255, 255, 255, 0.08) 64%) 0 0 / 220% 100%;
	animation: g2m-fme-loading-sweep 1.65s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
	.g2m-fme[data-state="loading"] .g2m-fme__status > span:first-child,
	.g2m-fme [aria-busy="true"] .g2m-fme__message::after,
	.g2m-fme [aria-busy="true"] .g2m-fme__kpi-value,
	.g2m-fme [aria-busy="true"] [data-fme-map-stat],
	.g2m-fme [aria-busy="true"] .g2m-fme__horizontal-row > i,
	.g2m-fme .g2m-fme__market-overview[aria-busy="true"] [data-fme-market-sites],
	.g2m-fme .g2m-fme__market-overview[aria-busy="true"] .g2m-fme__market-facts strong {
		animation: none;
	}
}


.g2m-fme__message { display:flex; min-height:150px; margin:0; align-items:center; justify-content:center; color:var(--fme-muted); font-size:14px; font-style:normal; text-align:center; }
.g2m-fme__state-map > .g2m-fme__message { grid-column:1 / -1; }
.g2m-fme__map-panel[aria-busy="true"] .g2m-fme__map { opacity:.35; pointer-events:none; }
.g2m-fme__status[data-state="loading"] > span:first-child { animation:g2m-fme-pulse 1.2s ease-in-out infinite; }
@keyframes g2m-fme-pulse { 0%,100% { opacity:.6; box-shadow:0 0 0 0 rgba(198,107,50,0); } 50% { opacity:1; box-shadow:0 0 0 5px rgba(198,107,50,.14); } }
@media(prefers-reduced-motion:reduce) { .g2m-fme__status[data-state="loading"] > span:first-child { animation:none; } }

/* ---- Operator Profile -------------------------------------------------------------------- */

/* The section sits between the national overview and pricing and reuses the page's KPI cards at
   a smaller scale: five measures read as a strip here, not as the six-card headline grid. */
.g2m-fme__operator {
	padding-bottom: clamp(3.5rem, 7vw, 5.5rem);
	border-bottom: 1px solid var(--fme-line);
}

.g2m-fme__operator-search {
	display: flex;
	max-width: 32rem;
	flex-direction: column;
	gap: 0.35rem;
}

.g2m-fme__operator-search .g2m-fme__control-label {
	color: var(--fme-muted);
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	text-transform: uppercase;
}

.g2m-fme__operator-search input {
	width: 100%;
	padding: 0.7rem 0.85rem;
	border: 1px solid var(--fme-line);
	border-radius: 6px;
	background: var(--fme-surface);
	color: var(--fme-ink);
	font: inherit;
	font-size: 0.95rem;
}

.g2m-fme__operator-search input:disabled {
	color: var(--fme-muted);
	background: var(--fme-page);
}

/* A bounded result list: the directory can run to hundreds of parent groups, and a list that
   grows with the page would push the profile itself off screen. */
.g2m-fme__operator-results {
	display: flex;
	max-width: 32rem;
	max-height: 18rem;
	flex-direction: column;
	/* Same reason as the profile: without this the theme leaves each result the width of its
	   own label, so the row separators come out ragged. */
	align-items: stretch;
	overflow-y: auto;
	border: 1px solid var(--fme-line);
	border-radius: 6px;
	background: var(--fme-surface);
}

.g2m-fme__operator-results[hidden] {
	display: none;
}

.g2m-fme__operator-link {
	padding: 0.6rem 0.85rem;
	border: 0;
	border-bottom: 1px solid var(--fme-line-soft);
	background: transparent;
	color: var(--fme-ink);
	font: inherit;
	font-size: 0.88rem;
	text-align: left;
	cursor: pointer;
}

.g2m-fme__operator-link:last-child {
	border-bottom: 0;
}

.g2m-fme__operator-link:hover,
.g2m-fme__operator-link:focus-visible {
	background: var(--fme-teal-soft);
}

.g2m-fme__operator-clear,
.g2m-fme__operator-retry {
	align-self: flex-start;
	padding: 0.55rem 1rem;
	border: 1px solid var(--fme-teal);
	border-radius: 999px;
	background: transparent;
	color: #167b87;
	font: inherit;
	font-size: 0.8rem;
	font-weight: 700;
	cursor: pointer;
}

.g2m-fme__operator-clear:hover,
.g2m-fme__operator-clear:focus-visible,
.g2m-fme__operator-retry:hover,
.g2m-fme__operator-retry:focus-visible {
	background: rgba(47, 164, 184, 0.1);
}

.g2m-fme__operator-clear[hidden],
.g2m-fme__operator-retry[hidden],
.g2m-fme__operator-profile[hidden] {
	display: none;
}

.g2m-fme__operator-profile {
	display: flex;
	flex-direction: column;
	/* Bricks' automatic.css sets `align-items: flex-start` on every div that is a direct child
	   of a section. In a column flex container that makes each child shrink to its content
	   width, so the measure grid, the tables and the notes each ended up a different, narrower
	   width than the profile. Declare the stretch this layout assumes rather than inheriting
	   the theme's. */
	align-items: stretch;
	gap: 1rem;
	min-width: 0;
}

.g2m-fme__operator-profile h3 {
	margin: 0;
	color: var(--fme-navy);
	font-size: clamp(1.15rem, 1.8vw, 1.45rem);
	font-weight: 600;
}

.g2m-fme__operator-profile h3:focus-visible {
	outline: 3px solid #278b9f;
	outline-offset: 4px;
}

.g2m-fme__operator-identity-line {
	margin: 0;
	color: var(--fme-muted);
	font-size: 0.85rem;
}

/* Reset the panel note's bottom-anchoring: inside the profile these are ordinary paragraphs in
   a flow, not a caption pinned to the foot of a card. */
.g2m-fme__operator-profile .g2m-fme__note {
	margin-top: 0;
}

.g2m-fme__operator-profile .g2m-fme__message {
	min-height: 0;
	padding: 0.9rem 1rem;
	border: 1px dashed var(--fme-line);
	border-radius: 6px;
	font-size: 0.85rem;
	text-align: left;
}

/* Explicit column counts, not auto-fit. There are exactly four measures, and auto-fit packs as
   many as will fit, which leaves an orphan on its own row at any width that takes three. Four
   across, then two by two, then one: no arrangement strands a single card. */
.g2m-fme__operator-kpis {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 1240px) {
	.g2m-fme__operator-kpis {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.g2m-fme__operator-kpis .g2m-fme__kpi {
	min-height: 0;
	padding: 1rem 1.1rem;
}

.g2m-fme__operator-kpis .g2m-fme__kpi-value {
	font-size: clamp(1.6rem, 3vw, 2.1rem);
}

.g2m-fme__operator-channel {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	padding: 1rem 1.15rem;
	border: 1px solid var(--fme-line);
	border-radius: 6px;
	background: var(--fme-page);
	font-size: 0.85rem;
}

.g2m-fme__operator-channel > strong {
	color: var(--fme-navy);
	font-size: 0.95rem;
}

.g2m-fme__operator-channel > span {
	color: var(--fme-muted);
}

.g2m-fme__operator-channel .g2m-fme__note {
	margin-top: 0.15rem;
}

/* Tables scroll rather than squeeze: four columns of published figures stay readable on a
   phone only if the row keeps its width and the region scrolls. */
.g2m-fme__operator-table-wrap {
	max-width: 100%;
	overflow-x: auto;
	border: 1px solid var(--fme-line);
	border-radius: 6px;
	background: var(--fme-surface);
}

.g2m-fme__operator-table {
	width: 100%;
	min-width: 32rem;
	border-collapse: collapse;
}

.g2m-fme__operator-table caption {
	padding: 1rem 1rem 0.75rem;
	color: var(--fme-navy);
	font-size: 0.9rem;
	font-weight: 600;
}

.g2m-fme__operator-table th[scope="col"] {
	border-bottom: 1px solid var(--fme-line);
	color: var(--fme-muted);
	font-weight: 600;
	text-align: left;
}

.g2m-fme__operator-table th[scope="row"] {
	color: var(--fme-ink);
	font-weight: 600;
	text-align: left;
}

.g2m-fme__operator-table td {
	border-bottom: 1px solid var(--fme-line-soft);
	color: var(--fme-ink);
	font-variant-numeric: tabular-nums;
}

.g2m-fme__operator-table tbody tr:last-child td,
.g2m-fme__operator-table tbody tr:last-child th {
	border-bottom: 0;
}

.g2m-fme__operator-profile .g2m-fme__operator-toggle {
	align-self: flex-start;
	margin-top: 0;
}

@media (max-width: 760px) {
	.g2m-fme__operator { padding-bottom: 2.75rem; }
	.g2m-fme__operator-kpis { grid-template-columns: minmax(0, 1fr); }
	.g2m-fme__operator-kpis .g2m-fme__kpi { min-height: 0; }
	.g2m-fme__operator-results { max-width: none; }
	.g2m-fme__operator-search { max-width: none; }
}
