/**
 * SAM Taxi front-end.
 *
 * Palette, radius and typography are taken from the client's existing
 * application: Manrope, a 1rem base radius, and an OKLCH cool-grey scale with
 * a near-black navy primary. Hex fallbacks precede each OKLCH value.
 */

:root,
.samtaxi-page {
	--st-radius: 1rem;
	--st-radius-sm: .625rem;
	--st-radius-md: .875rem;
	--st-radius-lg: 1.5rem;

	--st-bg: #eef1f7;
	--st-bg: oklch(0.965 0.008 250);
	--st-ink: #1c1f26;
	--st-ink: oklch(0.18 0.01 250);
	--st-card: #ffffff;
	--st-primary: #1c1f26;
	--st-primary: oklch(0.18 0.01 250);
	--st-on-primary: #fcfcfc;
	--st-muted: #eceef3;
	--st-muted: oklch(0.93 0.006 250);
	--st-muted-ink: #74798a;
	--st-muted-ink: oklch(0.52 0.02 250);
	--st-field: #f4f6f9;
	--st-border: #dcdfe6;
	--st-border: oklch(0.87 0.008 250);
	--st-accent: #f4dedb;
	--st-accent: oklch(0.92 0.035 18);
	--st-sky: #cfe3f7;
	--st-danger: #c8372b;
	--st-danger: oklch(0.577 0.245 27.325);

	--st-shadow-sm: 0 1px 2px rgba(20, 26, 44, .05);
	--st-shadow: 0 2px 4px rgba(20, 26, 44, .04), 0 12px 32px rgba(20, 26, 44, .07);
}

/* The hidden attribute must beat our display rules: several hidden elements
   are display:grid, and grid would otherwise win and show them anyway. */
[hidden] { display: none !important; }

/* ---------------------------------------------------------------- canvas -- */

.samtaxi-canvas {
	margin: 0;
	padding: 0;
	background: var(--st-bg);
	color: var(--st-ink);
	font-family: "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
	font-size: 16px;
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

.samtaxi-canvas *,
.samtaxi-canvas *::before,
.samtaxi-canvas *::after { box-sizing: border-box; }

/* Soft background shapes, matching the reference composition. */
.samtaxi-canvas::before,
.samtaxi-canvas::after {
	content: "";
	position: fixed;
	z-index: 0;
	border-radius: 50%;
	filter: blur(8px);
	pointer-events: none;
}
.samtaxi-canvas::before {
	width: 46vw; height: 46vw;
	top: -16vw; left: -14vw;
	background: var(--st-sky);
	opacity: .55;
}
.samtaxi-canvas::after {
	width: 34vw; height: 34vw;
	top: 26vh; right: -16vw;
	background: var(--st-accent);
	opacity: .5;
}

.samtaxi-shell {
	position: relative;
	z-index: 1;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

/* ---------------------------------------------------------------- topbar -- */

.samtaxi-topbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem clamp(1rem, 4vw, 3rem);
	background: rgba(255, 255, 255, .72);
	backdrop-filter: blur(10px);
	border-bottom: 1px solid rgba(20, 26, 44, .06);
	position: sticky;
	top: 0;
	z-index: 20;
}

.samtaxi-brand { display: inline-flex; align-items: center; gap: .6rem; text-decoration: none; color: var(--st-ink); }
.samtaxi-brand__mark {
	display: grid; place-items: center;
	width: 34px; height: 34px;
	border-radius: 50%;
	background: var(--st-primary);
	color: var(--st-on-primary);
}
.samtaxi-brand__name { font-weight: 800; letter-spacing: .06em; text-transform: uppercase; font-size: .9375rem; }

.samtaxi-nav { display: flex; align-items: center; gap: clamp(.75rem, 2vw, 1.75rem); }
.samtaxi-nav a {
	color: var(--st-muted-ink);
	text-decoration: none;
	font-size: .9375rem;
	font-weight: 600;
	padding: .35rem 0;
}
.samtaxi-nav a:hover { color: var(--st-ink); }
.samtaxi-nav a[aria-current="page"] { color: var(--st-ink); }

/* ------------------------------------------------------------------ main -- */

.samtaxi-main {
	flex: 1;
	width: 100%;
	max-width: 1400px;
	margin: 0 auto;
	padding: clamp(1.5rem, 4vw, 3rem) clamp(1rem, 4vw, 3rem) 3rem;
}

.samtaxi-footer {
	padding: 1.5rem clamp(1rem, 4vw, 3rem) 2rem;
	color: var(--st-muted-ink);
	font-size: .8125rem;
	display: flex;
	flex-wrap: wrap;
	gap: .35rem 1.5rem;
	justify-content: space-between;
}
.samtaxi-footer p { margin: 0; }

/* ------------------------------------------------------------------ hero -- */

.samtaxi-hero {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
	gap: clamp(1.5rem, 4vw, 3rem);
	align-items: center;
	margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.samtaxi-pill {
	display: inline-block;
	background: var(--st-primary);
	color: var(--st-on-primary);
	font-size: .75rem;
	font-weight: 600;
	padding: .45rem .9rem;
	border-radius: 999px;
	margin-bottom: 1rem;
}

.samtaxi-hero__title {
	margin: 0;
	font-size: clamp(2.25rem, 6vw, 4.25rem);
	line-height: 1.02;
	letter-spacing: -.045em;
	font-weight: 800;
}
.samtaxi-hero__title em { display: block; font-style: italic; font-weight: 500; }

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

.samtaxi-feature {
	background: var(--st-card);
	border-radius: var(--st-radius-lg);
	padding: 1.25rem;
	box-shadow: var(--st-shadow-sm);
	display: grid;
	gap: .35rem;
	align-content: start;
}
.samtaxi-feature h2 { margin: .35rem 0 0; font-size: .9375rem; font-weight: 700; }
.samtaxi-feature p { margin: 0; font-size: .8125rem; color: var(--st-muted-ink); }
.samtaxi-feature .samtaxi-icon { color: var(--st-ink); }

/* ---------------------------------------------------------------- layout -- */

.samtaxi-layout {
	display: grid;
	grid-template-columns: minmax(0, 400px) minmax(0, 1fr);
	gap: clamp(1rem, 2.5vw, 1.75rem);
	align-items: start;
}

/* ------------------------------------------------------------------ card -- */

.samtaxi-card {
	background: var(--st-card);
	border-radius: var(--st-radius-lg);
	box-shadow: var(--st-shadow);
	padding: clamp(1.25rem, 2.5vw, 1.75rem);
}

.samtaxi-form { display: grid; gap: 1rem; }

.samtaxi-form__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.samtaxi-form__title { margin: .15rem 0 0; font-size: 1.5rem; font-weight: 800; letter-spacing: -.03em; }
.samtaxi-form__badge {
	display: grid; place-items: center;
	width: 40px; height: 40px;
	border-radius: 50%;
	background: var(--st-sky);
	color: var(--st-ink);
	flex: none;
}

.samtaxi-eyebrow {
	font-size: .6875rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--st-muted-ink);
}

/* ---------------------------------------------------------------- fields -- */

.samtaxi-field { display: grid; gap: .35rem; min-width: 0; }

.samtaxi-label { font-size: .8125rem; font-weight: 600; color: var(--st-ink); }
.samtaxi-optional { color: var(--st-muted-ink); font-weight: 500; }
.samtaxi-help { font-size: .75rem; color: var(--st-muted-ink); margin: 0; }
.samtaxi-error { font-size: .75rem; color: var(--st-danger); margin: 0; }

.samtaxi-input-wrap { position: relative; display: flex; align-items: center; min-width: 0; }
.samtaxi-input-wrap .samtaxi-icon {
	position: absolute;
	left: .85rem;
	color: var(--st-muted-ink);
	pointer-events: none;
}
.samtaxi-input-wrap .samtaxi-input,
.samtaxi-input-wrap .samtaxi-select { padding-left: 2.4rem; }

.samtaxi-input,
.samtaxi-select,
.samtaxi-textarea {
	width: 100%;
	font: inherit;
	font-size: .9375rem;
	color: var(--st-ink);
	background: var(--st-field);
	border: 1px solid transparent;
	border-radius: 999px;
	padding: .75rem 1rem;
	min-height: 46px;
	transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
	appearance: none;
	-webkit-appearance: none;
	/* Date inputs carry a wide intrinsic width; without this they refuse to
	   shrink and push out of the card in the two-column rows. */
	min-width: 0;
}

.samtaxi-textarea { border-radius: var(--st-radius-md); resize: vertical; min-height: 84px; }

.samtaxi-select {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2374798a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right .85rem center;
	background-size: 16px;
	padding-right: 2.4rem;
}

.samtaxi-input:hover,
.samtaxi-select:hover { background: var(--st-muted); }

.samtaxi-input:focus-visible,
.samtaxi-select:focus-visible,
.samtaxi-textarea:focus-visible {
	outline: none;
	background: var(--st-card);
	border-color: var(--st-primary);
	box-shadow: 0 0 0 3px rgba(28, 31, 38, .12);
}

.samtaxi-input::placeholder,
.samtaxi-textarea::placeholder { color: var(--st-muted-ink); }
.samtaxi-input[aria-invalid="true"] { border-color: var(--st-danger); }

.samtaxi-grid { display: grid; gap: .75rem; }
.samtaxi-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.samtaxi-grid--times { grid-template-columns: minmax(0, 1fr); }

/* ---------------------------------------------------------------- toggle -- */

.samtaxi-toggle {
	display: grid;
	grid-template-columns: 1fr 1fr;
	padding: .25rem;
	gap: .25rem;
	background: var(--st-field);
	border-radius: 999px;
}

.samtaxi-toggle__option {
	border: 0;
	background: transparent;
	font: inherit;
	font-size: .875rem;
	font-weight: 700;
	color: var(--st-muted-ink);
	padding: .6rem 1rem;
	border-radius: 999px;
	cursor: pointer;
	min-height: 42px;
	transition: background-color .15s ease, color .15s ease;
}
.samtaxi-toggle__option[aria-pressed="true"] {
	background: var(--st-card);
	color: var(--st-ink);
	box-shadow: var(--st-shadow-sm);
}

/* --------------------------------------------------------------- section -- */

.samtaxi-section { display: grid; gap: .75rem; padding-top: .75rem; border-top: 1px solid var(--st-border); }
.samtaxi-section__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.samtaxi-section__title { margin: 0; font-size: .875rem; font-weight: 700; }

/* -------------------------------------------------------------- vehicles -- */

.samtaxi-vehicles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .625rem; }

.samtaxi-vehicle {
	position: relative;
	display: grid;
	gap: .3rem;
	align-content: start;
	text-align: left;
	background: var(--st-card);
	border: 1px solid var(--st-border);
	border-radius: var(--st-radius-md);
	padding: .875rem;
	cursor: pointer;
	font: inherit;
	transition: border-color .15s ease, box-shadow .15s ease;
	min-width: 0;
}

.samtaxi-vehicle:hover:not(.is-disabled) { border-color: var(--st-primary); }
.samtaxi-vehicle[aria-pressed="true"] { border-color: var(--st-primary); box-shadow: 0 0 0 1px var(--st-primary) inset; }
.samtaxi-vehicle.is-disabled { opacity: .5; cursor: not-allowed; }
.samtaxi-vehicle:focus-visible { outline: 2px solid var(--st-primary); outline-offset: 2px; }

.samtaxi-vehicle__top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; color: var(--st-muted-ink); }
.samtaxi-vehicle__price { font-size: .8125rem; font-weight: 700; color: var(--st-ink); }
.samtaxi-vehicle__name { font-weight: 800; font-size: 1rem; letter-spacing: -.01em; }
.samtaxi-vehicle__meta { display: grid; gap: .1rem; font-size: .75rem; color: var(--st-muted-ink); }
.samtaxi-vehicle__meta span { display: inline-flex; align-items: center; gap: .3rem; }
.samtaxi-vehicle__unavailable { font-size: .75rem; color: var(--st-muted-ink); }

/* ----------------------------------------------------------------- seats -- */

.samtaxi-seats { display: grid; gap: .5rem; }
.samtaxi-seat-row { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.samtaxi-seat-row label { display: grid; gap: .05rem; font-size: .875rem; }
.samtaxi-seat-name { font-weight: 600; }
.samtaxi-seat-price { font-size: .75rem; color: var(--st-muted-ink); }
.samtaxi-seat-row .samtaxi-select { width: 84px; min-height: 40px; padding-top: .4rem; padding-bottom: .4rem; }

/* ------------------------------------------------------------- breakdown -- */

.samtaxi-breakdown { display: grid; gap: .4rem; padding-top: .75rem; border-top: 1px solid var(--st-border); }
.samtaxi-breakdown__row { display: flex; justify-content: space-between; gap: 1rem; font-size: .875rem; }
.samtaxi-breakdown__label { color: var(--st-muted-ink); }
.samtaxi-breakdown__row--total { font-weight: 800; font-size: 1.0625rem; border-top: 1px solid var(--st-border); padding-top: .55rem; }
.samtaxi-breakdown__row--total .samtaxi-breakdown__label { color: var(--st-ink); }

/* --------------------------------------------------------------- buttons -- */

.samtaxi-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	font: inherit;
	font-size: .9375rem;
	font-weight: 700;
	padding: .9rem 1.25rem;
	min-height: 52px;
	border-radius: 999px;
	border: 1px solid transparent;
	cursor: pointer;
	text-decoration: none;
	transition: opacity .15s ease, background-color .15s ease;
}
.samtaxi-btn--primary { background: var(--st-primary); color: var(--st-on-primary); }
.samtaxi-btn--primary:hover:not(:disabled) { opacity: .88; }
.samtaxi-btn--ghost { background: transparent; color: var(--st-ink); border-color: var(--st-border); }
.samtaxi-btn--ghost:hover:not(:disabled) { background: var(--st-muted); }
.samtaxi-btn--block { width: 100%; }
.samtaxi-btn--large { width: 100%; min-height: 60px; font-size: 1.0625rem; letter-spacing: .03em; }
.samtaxi-btn:disabled { opacity: .45; cursor: not-allowed; }
.samtaxi-btn:focus-visible { outline: 2px solid var(--st-primary); outline-offset: 2px; }

.samtaxi-fineprint { margin: 0; text-align: center; font-size: .75rem; color: var(--st-muted-ink); }

/* ------------------------------------------------------------------- map -- */

.samtaxi-mappanel {
	position: relative;
	border-radius: var(--st-radius-lg);
	overflow: hidden;
	box-shadow: var(--st-shadow);
	background: var(--st-card);
	min-height: 520px;
	display: grid;
	grid-template-rows: 1fr auto;
}

.samtaxi-map { width: 100%; height: 100%; min-height: 440px; background: var(--st-muted); }
.samtaxi-map__placeholder {
	height: 100%;
	display: grid;
	place-content: center;
	justify-items: center;
	gap: .5rem;
	padding: 2rem;
	text-align: center;
	color: var(--st-muted-ink);
}
.samtaxi-map__placeholder p { margin: 0; max-width: 24ch; font-size: .875rem; }

.samtaxi-routebar { padding: 1rem 1.25rem; border-top: 1px solid var(--st-border); background: var(--st-card); }
.samtaxi-routebar p { margin: .1rem 0 0; font-weight: 700; font-size: 1rem; }

/* --------------------------------------------------------------- notices -- */

.samtaxi-notice { border-radius: var(--st-radius-md); padding: .75rem 1rem; font-size: .875rem; border: 1px solid var(--st-border); background: var(--st-muted); }
.samtaxi-notice--error { border-color: var(--st-danger); background: #fdf2f1; color: #7f1d16; }

.samtaxi-skeleton {
	background: linear-gradient(90deg, var(--st-muted) 25%, #f7f8fa 37%, var(--st-muted) 63%);
	background-size: 400% 100%;
	animation: samtaxi-shimmer 1.4s ease infinite;
	border-radius: var(--st-radius-sm);
	height: .85rem;
}
@keyframes samtaxi-shimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }

/* --------------------------------------------------------------- panels --- */

.samtaxi-panel { background: var(--st-card); border-radius: var(--st-radius-lg); box-shadow: var(--st-shadow); padding: clamp(1.25rem, 3vw, 2rem); max-width: 720px; margin: 0 auto; }
.samtaxi-panel__title { margin: 0 0 .5rem; font-size: clamp(1.35rem, 3vw, 1.75rem); font-weight: 800; letter-spacing: -.03em; line-height: 1.2; }
.samtaxi-panel__note { margin: 0 0 1rem; color: var(--st-muted-ink); }
.samtaxi-panel__route code { font-size: .8125rem; background: var(--st-muted); padding: .2rem .45rem; border-radius: var(--st-radius-sm); word-break: break-all; }

.samtaxi-details { margin: 1rem 0 0; display: grid; gap: .5rem; }
.samtaxi-details__row { display: grid; grid-template-columns: 11rem 1fr; gap: .75rem; align-items: baseline; }
.samtaxi-details dt { color: var(--st-muted-ink); font-size: .875rem; margin: 0; }
.samtaxi-details dd { margin: 0; font-weight: 600; font-size: .9375rem; }
.samtaxi-details a { color: var(--st-ink); }

.samtaxi-driver__status { display: inline-block; margin: 0; padding: .35rem .75rem; border-radius: 999px; background: var(--st-sky); font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.samtaxi-driver__actions { margin-top: 1.5rem; }

.samtaxi-confirmation__number { margin: 1rem 0; display: grid; gap: .15rem; }
.samtaxi-confirmation__number strong { font-size: 1.5rem; letter-spacing: .05em; }

.samtaxi-lookup { display: grid; gap: 1rem; margin-top: 1rem; }
.samtaxi-actions { display: grid; gap: .5rem; }
.samtaxi-booking { margin-top: 1rem; }

.samtaxi-visually-hidden {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ------------------------------------------------------------ responsive -- */

@media (max-width: 1080px) {
	.samtaxi-layout { grid-template-columns: minmax(0, 1fr); }
	/* Stacked, the form comes first: booking is the task, the map is support. */
	.samtaxi-mappanel { min-height: 340px; }
	.samtaxi-map { min-height: 260px; }
}

@media (max-width: 860px) {
	.samtaxi-hero { grid-template-columns: minmax(0, 1fr); }
	.samtaxi-hero__features { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.samtaxi-feature { padding: 1rem; }
}

/* Very narrow phones: keep the brand from wrapping onto two lines. */
@media (max-width: 380px) {
	.samtaxi-brand__name { display: none; }
}

@media (max-width: 640px) {
	.samtaxi-hero__features { grid-template-columns: minmax(0, 1fr); }
	.samtaxi-topbar { padding: .75rem 1rem; gap: .5rem; }
	.samtaxi-brand__name { font-size: .8125rem; letter-spacing: .04em; }
	.samtaxi-brand__mark { width: 30px; height: 30px; }
	.samtaxi-nav a { white-space: nowrap; }
	.samtaxi-mappanel { min-height: 300px; }
	.samtaxi-map { min-height: 220px; }
	.samtaxi-hero__title { font-size: clamp(2rem, 11vw, 2.75rem); }
	.samtaxi-main { padding-bottom: 2rem; }
	.samtaxi-footer { flex-direction: column; gap: .25rem; }
	.samtaxi-grid--2 { grid-template-columns: minmax(0, 1fr); }
	.samtaxi-vehicles { grid-template-columns: minmax(0, 1fr); }
	.samtaxi-details__row { grid-template-columns: minmax(0, 1fr); gap: .1rem; }
	.samtaxi-nav { gap: .75rem; }
	.samtaxi-nav a { font-size: .875rem; }
}

@media (prefers-reduced-motion: reduce) {
	.samtaxi-canvas *, .samtaxi-canvas *::before, .samtaxi-canvas *::after {
		animation-duration: .01ms !important;
		transition-duration: .01ms !important;
	}
}

/* ---------- Address suggestions ---------- */

.samtaxi-suggest {
	position: absolute;
	top: calc(100% + 4px);
	left: 0;
	right: 0;
	z-index: 30;
	margin: 0;
	padding: .3rem;
	list-style: none;
	background: var(--st-card);
	border: 1px solid var(--st-border);
	border-radius: var(--st-radius-md);
	box-shadow: var(--st-shadow);
	max-height: 260px;
	overflow-y: auto;
}

.samtaxi-suggest li {
	padding: .6rem .7rem;
	border-radius: var(--st-radius-sm);
	font-size: .875rem;
	cursor: pointer;
	line-height: 1.35;
}

.samtaxi-suggest li[aria-selected="true"] { background: var(--st-field); }

/* ---------- Invalid fields ---------- */

/* Borders are already 1px and transparent, so turning one red changes colour
   only — nothing moves, which is what keeps the layout still while errors show. */
.samtaxi-input.is-invalid,
.samtaxi-select.is-invalid,
.samtaxi-textarea.is-invalid {
	border-color: var(--st-danger);
	background: #fdf4f3;
	animation: samtaxi-attention 1.1s ease-in-out 3;
}

.samtaxi-vehicles.is-invalid {
	border-radius: var(--st-radius-md);
	outline: 2px solid var(--st-danger);
	outline-offset: 4px;
	animation: samtaxi-attention 1.1s ease-in-out 3;
}

.samtaxi-input.is-invalid:focus-visible,
.samtaxi-select.is-invalid:focus-visible,
.samtaxi-textarea.is-invalid:focus-visible {
	border-color: var(--st-danger);
	box-shadow: 0 0 0 3px rgba(200, 55, 43, .22);
}

@keyframes samtaxi-attention {
	0%, 100% { box-shadow: 0 0 0 0 rgba(200, 55, 43, 0); }
	50%      { box-shadow: 0 0 0 4px rgba(200, 55, 43, .30); }
}

@media (prefers-reduced-motion: reduce) {
	.samtaxi-input.is-invalid,
	.samtaxi-select.is-invalid,
	.samtaxi-textarea.is-invalid,
	.samtaxi-vehicles.is-invalid { animation: none; box-shadow: 0 0 0 3px rgba(200, 55, 43, .25); }
}

/* ---------- Sticky map ---------- */

@media (min-width: 1081px) {
	.samtaxi-layout { align-items: start; }

	/* The map holds still and fills the viewport while the form scrolls past
	   it, so the route stays visible the whole way down the form. */
	.samtaxi-mappanel {
		position: sticky;
		top: 5.25rem;
		height: calc(100vh - 7.5rem);
		min-height: 460px;
	}

	.samtaxi-map { height: auto; min-height: 0; }
}

/* ---------- Use my location ---------- */

.samtaxi-input--with-action { padding-right: 2.9rem; }

.samtaxi-locate {
	position: absolute;
	right: .4rem;
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border: 0;
	border-radius: 50%;
	background: var(--st-card);
	color: var(--st-muted-ink);
	cursor: pointer;
	transition: color .15s ease, background-color .15s ease;
}

.samtaxi-locate:hover { color: var(--st-ink); background: var(--st-muted); }
.samtaxi-locate:focus-visible { outline: 2px solid var(--st-primary); outline-offset: 2px; }
.samtaxi-locate:disabled { cursor: wait; }
.samtaxi-locate.is-busy svg { animation: samtaxi-spin 1s linear infinite; }

@keyframes samtaxi-spin { to { transform: rotate(360deg); } }
