.btgt-gpx-tools {
	--btgt-space-1: 0.25rem;
	--btgt-space-2: 0.5rem;
	--btgt-space-3: 0.75rem;
	--btgt-space-4: 1rem;
	--btgt-space-5: 1.25rem;
	--btgt-radius-sm: 6px;
	--btgt-radius-md: 8px;
	--btgt-radius-lg: 12px;
	--btgt-control-height: 42px;
	--btgt-panel-width: 296px;
	--btgt-workspace-height: clamp(560px, calc(100vh - 180px), 820px);
	--btgt-map-mobile-height: clamp(280px, 42svh, 430px);
	--btgt-bg: #f6f8f5;
	--btgt-panel: #ffffff;
	--btgt-surface: #ffffff;
	--btgt-surface-muted: #eef4ef;
	--btgt-text: #15221b;
	--btgt-muted: #5b6b62;
	--btgt-text-muted: #5b6b62;
	--btgt-border: #d8e2dc;
	--btgt-border-color: #d5dfd9;
	--btgt-border-strong: #b8c8be;
	--btgt-primary: #176b4d;
	--btgt-primary-strong: #0f513a;
	--btgt-primary-soft: #e7f3ed;
	--btgt-accent: #d97824;
	--btgt-danger: #b42318;
	--btgt-warning: #9a6700;
	--btgt-success: #147a43;
	--btgt-focus: #1d7fd1;
	--btgt-focus-ring: #1d7fd1;
	--btgt-radius: 8px;
	box-sizing: border-box;
	width: 100%;
	max-width: 1680px;
	margin: var(--btgt-space-4) auto;
	color: var(--btgt-text);
	background: var(--btgt-bg);
	border: 1px solid var(--btgt-border-color);
	border-radius: var(--btgt-radius-lg);
	padding: var(--btgt-space-3);
	font-family: inherit;
	overflow-x: hidden;
}

@supports (height: 100dvh) {
	.btgt-gpx-tools {
		--btgt-workspace-height: clamp(560px, calc(100dvh - 180px), 820px);
	}
}

.btgt-gpx-tools *,
.btgt-gpx-tools *::before,
.btgt-gpx-tools *::after {
	box-sizing: border-box;
}

.btgt-header {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(240px, 0.9fr);
	gap: 16px;
	align-items: start;
	margin-bottom: 14px;
}

.btgt-kicker {
	margin: 0 0 3px;
	color: var(--btgt-primary);
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0;
}

.btgt-title {
	margin: 0;
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.25;
}

.btgt-privacy {
	margin: 0;
	color: var(--btgt-muted);
	font-size: 0.88rem;
	line-height: 1.45;
}

.btgt-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 12px;
}

.btgt-tab,
.btgt-button {
	appearance: none;
	border: 1px solid var(--btgt-border);
	border-radius: 7px;
	background: var(--btgt-panel);
	color: var(--btgt-text);
	cursor: pointer;
	font: inherit;
	font-weight: 700;
	line-height: 1.2;
	min-height: 40px;
	padding: 10px 14px;
	text-align: center;
	transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.btgt-tab.is-active {
	background: var(--btgt-primary);
	border-color: var(--btgt-primary);
	color: #ffffff;
}

.btgt-button-primary {
	background: var(--btgt-primary);
	border-color: var(--btgt-primary);
	color: #ffffff;
}

.btgt-tab:hover,
.btgt-button:hover {
	border-color: var(--btgt-primary);
}

.btgt-button-primary:hover {
	background: var(--btgt-primary-strong);
	border-color: var(--btgt-primary-strong);
}

.btgt-tab:focus-visible,
.btgt-button:focus-visible,
.btgt-file-input:focus-visible,
.btgt-dropzone:focus-visible,
.btgt-gpx-tools input:focus-visible,
.btgt-panel:focus-visible {
	outline: 3px solid var(--btgt-focus);
	outline-offset: 2px;
}

.btgt-button:disabled,
.btgt-gpx-tools input:disabled {
	cursor: not-allowed;
	opacity: 0.55;
}

.btgt-messages {
	display: grid;
	gap: 8px;
	margin-bottom: 12px;
}

.btgt-message {
	border: 1px solid var(--btgt-border);
	border-left-width: 4px;
	border-radius: 6px;
	background: var(--btgt-panel);
	color: var(--btgt-text);
	font-size: 0.92rem;
	line-height: 1.4;
	padding: 9px 11px;
}

.btgt-message.is-error {
	border-left-color: var(--btgt-danger);
}

.btgt-message.is-warning {
	border-left-color: var(--btgt-warning);
}

.btgt-message.is-success {
	border-left-color: var(--btgt-success);
}

.btgt-gpx-tools-guest {
	max-width: 620px;
	margin: 2rem auto;
	padding: 0;
	border: 0;
	background: transparent;
	text-align: center;
}

.btgt-guest-card {
	position: relative;
	padding: 2rem 2rem 1.8rem;
	border: 1px solid #d8e8c9;
	border-radius: 28px;
	background:
		radial-gradient(circle at top right, rgba(139, 195, 74, 0.28), transparent 34%),
		radial-gradient(circle at top left, rgba(139, 195, 74, 0.16), transparent 28%),
		linear-gradient(180deg, #ffffff 0%, #f6fbea 100%);
	box-shadow: 0 24px 52px rgba(15, 23, 42, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8);
	text-align: center;
}

.btgt-guest-card p {
	margin: 0;
	text-align: center;
}

.btgt-guest-logo {
	display: block;
	width: min(110px, 35%);
	height: auto;
	margin: 0 auto 1rem;
}

.btgt-guest-kicker,
.btgt-guest-title,
.btgt-guest-text,
.btgt-guest-action {
	margin: 0;
	text-align: center;
}

.btgt-guest-kicker {
	margin-bottom: 0.75rem;
	color: #689f38;
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.btgt-guest-title {
	margin: 0 0 0.85rem;
	color: #2f4f1e;
	font-size: clamp(1.7rem, 4vw, 2.35rem);
	line-height: 1;
	font-weight: 800;
}

.btgt-guest-text {
	display: block;
	width: 100%;
	max-width: 430px;
	margin: 0 auto !important;
	color: #475569;
	font-size: 1rem;
	line-height: 1.6;
	font-weight: 600;
	text-align: center !important;
	text-align-last: center;
}

.btgt-guest-action {
	margin-top: 2rem;
}

.btgt-guest-login {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 180px;
	min-height: 50px;
	padding: 0.8rem 1.5rem;
	border-radius: 18px;
	background: linear-gradient(180deg, #8bc34a 0%, #689f38 100%);
	color: #1f3b08;
	font-weight: 800;
	text-decoration: none;
	box-shadow: 0 12px 24px rgba(139, 195, 74, 0.32);
	transition: transform 0.16s ease, box-shadow 0.16s ease, filter 0.16s ease;
}

.btgt-guest-login:hover,
.btgt-guest-login:focus-visible {
	color: #1f3b08;
	filter: brightness(1.04);
	transform: translateY(-1px);
	box-shadow: 0 14px 28px rgba(139, 195, 74, 0.36);
}

.btgt-loading {
	margin-bottom: 12px;
	border-radius: 6px;
	background: #e9f4ef;
	color: var(--btgt-primary-strong);
	font-weight: 700;
	padding: 9px 11px;
}

.btgt-panel[hidden] {
	display: none;
}

.btgt-workspace {
	display: grid;
	grid-template-columns: minmax(280px, 390px) minmax(0, 1fr);
	gap: 14px;
	align-items: stretch;
}

.btgt-controls {
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-width: 0;
}

.btgt-dropzone {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 104px;
	border: 2px dashed #a9b9af;
	border-radius: var(--btgt-radius);
	background: var(--btgt-panel);
	text-align: center;
	transition: border-color 0.15s ease, background 0.15s ease;
}

.btgt-dropzone.is-dragover {
	background: #eef8f2;
	border-color: var(--btgt-primary);
}

.btgt-file-label {
	display: grid;
	gap: 4px;
	width: 100%;
	margin: 0;
	padding: 16px;
	cursor: pointer;
	font-weight: 700;
}

.btgt-file-hint {
	color: var(--btgt-muted);
	font-size: 0.88rem;
	font-weight: 600;
}

.btgt-file-input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	cursor: pointer;
}

.btgt-summary {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	color: var(--btgt-muted);
	font-size: 0.9rem;
	font-weight: 700;
}

.btgt-summary span {
	border: 1px solid var(--btgt-border);
	border-radius: 999px;
	background: var(--btgt-panel);
	padding: 5px 9px;
}

.btgt-field {
	display: grid;
	gap: 5px;
	margin: 0;
	font-weight: 700;
}

.btgt-field input {
	width: 100%;
	min-height: 40px;
	border: 1px solid var(--btgt-border);
	border-radius: 7px;
	background: #ffffff;
	color: var(--btgt-text);
	font: inherit;
	padding: 8px 10px;
}

.btgt-field small {
	color: var(--btgt-muted);
	font-weight: 700;
}

.btgt-mode {
	display: grid;
	gap: 8px;
	margin: 0;
	border: 1px solid var(--btgt-border);
	border-radius: var(--btgt-radius);
	background: var(--btgt-panel);
	padding: 10px;
}

.btgt-mode legend {
	padding: 0 4px;
	font-weight: 700;
}

.btgt-mode label {
	display: flex;
	gap: 8px;
	align-items: center;
	margin: 0;
}

.btgt-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.btgt-track-list {
	display: grid;
	gap: 10px;
}

.btgt-track-card {
	border: 1px solid var(--btgt-border);
	border-radius: var(--btgt-radius);
	background: var(--btgt-panel);
	padding: 10px;
}

.btgt-track-card[draggable="true"] {
	cursor: grab;
}

.btgt-track-card.is-dragging {
	opacity: 0.55;
}

.btgt-track-head {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	justify-content: space-between;
	margin-bottom: 8px;
}

.btgt-track-name {
	margin: 0;
	font-weight: 800;
	overflow-wrap: anywhere;
}

.btgt-track-meta,
.btgt-gap {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 10px;
	color: var(--btgt-muted);
	font-size: 0.85rem;
	line-height: 1.35;
}

.btgt-gap {
	margin-top: 8px;
	font-weight: 700;
}

.btgt-gap::before {
	content: "";
	width: 0.78rem;
	height: 0.78rem;
	border-radius: 999px;
	margin-top: 0.18rem;
	background: var(--btgt-muted);
}

.btgt-gap.is-close::before {
	background: var(--btgt-success);
}

.btgt-gap.is-medium::before {
	background: #d89614;
}

.btgt-gap.is-far::before {
	background: var(--btgt-danger);
}

.btgt-connect-panel {
	display: grid;
	gap: 9px;
	padding: 10px;
	border: 1px solid var(--btgt-border);
	border-radius: var(--btgt-radius);
	background: var(--btgt-surface-muted);
}

.btgt-connect-head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(120px, 0.65fr);
	gap: 10px;
	align-items: end;
}

.btgt-section-kicker,
.btgt-section-text,
.btgt-connect-title,
.btgt-connect-empty,
.btgt-connect-error {
	margin: 0;
}

.btgt-section-kicker {
	color: var(--btgt-primary);
	font-size: 0.75rem;
	font-weight: 800;
	text-transform: uppercase;
}

.btgt-section-text,
.btgt-connect-empty {
	color: var(--btgt-muted);
	font-size: 0.84rem;
	line-height: 1.35;
}

.btgt-profile-field {
	display: grid;
	gap: 4px;
	min-width: 0;
	color: var(--btgt-text);
	font-size: 0.82rem;
	font-weight: 700;
}

.btgt-profile-field select {
	width: 100%;
	min-height: 38px;
	border: 1px solid var(--btgt-border);
	border-radius: 7px;
	background: #ffffff;
	color: var(--btgt-text);
	font: inherit;
}

.btgt-connect-list {
	display: grid;
	gap: 8px;
}

.btgt-connect-item {
	display: grid;
	gap: 7px;
	padding: 9px;
	border: 1px solid var(--btgt-border);
	border-radius: var(--btgt-radius-sm);
	background: #ffffff;
}

.btgt-connect-title {
	color: var(--btgt-text);
	font-size: 0.9rem;
	font-weight: 800;
	line-height: 1.25;
	overflow-wrap: anywhere;
}

.btgt-connect-error {
	color: var(--btgt-danger);
	font-size: 0.84rem;
	font-weight: 700;
	line-height: 1.35;
}

.btgt-elevation-options {
	margin-top: 0.65rem;
}

.btgt-progress {
	margin: 0.65rem 0;
	padding: 0.65rem 0.75rem;
	border: 1px solid #b8d9c9;
	border-radius: 8px;
	background: #edf8f2;
	color: var(--btgt-primary-strong);
	font-weight: 700;
	text-align: center;
}

.btgt-elevation-profile {
	margin-top: 0.75rem;
	border: 1px solid var(--btgt-border);
	border-radius: 8px;
	background: #ffffff;
	overflow: hidden;
}

.btgt-elevation-profile svg {
	display: block;
	width: 100%;
	height: auto;
	min-height: 160px;
}

.btgt-elevation-path {
	fill: none;
	stroke: var(--btgt-primary);
	stroke-width: 3;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.btgt-elevation-card {
	gap: 0.65rem;
}

.btgt-elevation-segment {
	margin: 0;
	color: var(--btgt-muted);
	font-size: 0.84rem;
	line-height: 1.35;
}

.btgt-card-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 10px;
}

.btgt-small-button {
	min-height: 34px;
	padding: 7px 9px;
	font-size: 0.86rem;
}

.btgt-stage-toggle {
	display: flex;
	gap: 8px;
	align-items: center;
	font-weight: 700;
}

.btgt-map-wrap {
	min-width: 0;
	min-height: 420px;
	border: 1px solid var(--btgt-border);
	border-radius: var(--btgt-radius);
	overflow: hidden;
	background: #e6ece8;
}

.btgt-map {
	width: 100%;
	height: 100%;
	min-height: 420px;
}

.btgt-map .leaflet-control-attribution {
	font-size: 10px;
}

@media (max-width: 780px) {
	.btgt-gpx-tools {
		padding: 12px;
	}

	.btgt-header,
	.btgt-workspace {
		grid-template-columns: 1fr;
	}

	.btgt-workspace {
		gap: 12px;
	}

	.btgt-dropzone {
		min-height: 84px;
	}

	.btgt-map-wrap,
	.btgt-map {
		min-height: min(58vh, 380px);
	}

	.btgt-button,
	.btgt-tab {
		flex: 1 1 auto;
		min-height: 44px;
	}
}

@media (max-width: 420px) {
	.btgt-gpx-tools {
		padding: 10px;
	}

	.btgt-title {
		font-size: 1.08rem;
	}

	.btgt-actions,
	.btgt-card-actions {
		display: grid;
		grid-template-columns: 1fr;
	}

	.btgt-summary span {
		border-radius: 7px;
	}
}

/* 1.1.0 viewport-oriented workspace refactor. */
.btgt-header {
	grid-template-columns: minmax(0, 0.92fr) minmax(280px, 1.08fr);
	gap: var(--btgt-space-3);
	margin-bottom: var(--btgt-space-2);
}

.btgt-kicker {
	margin-bottom: 0.15rem;
	font-size: 0.72rem;
	font-weight: 800;
}

.btgt-title {
	font-size: 1.05rem;
	line-height: 1.18;
}

.btgt-privacy {
	font-size: 0.82rem;
	line-height: 1.35;
}

.btgt-tabs {
	gap: var(--btgt-space-2);
	margin-bottom: var(--btgt-space-2);
}

.btgt-tab,
.btgt-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 0;
	min-height: var(--btgt-control-height);
	padding: 0.55rem 0.78rem;
	border-color: var(--btgt-border-color);
	border-radius: var(--btgt-radius-md);
	background: var(--btgt-surface);
	font-size: 0.9rem;
	font-weight: 800;
	line-height: 1.12;
	text-decoration: none;
	transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.btgt-tab {
	min-height: 38px;
	padding: 0.48rem 0.9rem;
}

.btgt-tab.is-active {
	box-shadow: 0 8px 18px rgba(23, 107, 77, 0.18);
}

.btgt-messages {
	max-height: 8.5rem;
	margin-bottom: var(--btgt-space-2);
	overflow: hidden;
	gap: var(--btgt-space-2);
	scrollbar-gutter: stable;
}

.btgt-message {
	border-color: var(--btgt-border-color);
	border-radius: var(--btgt-radius-md);
	font-size: 0.86rem;
	line-height: 1.35;
	padding: 0.52rem 0.65rem;
}

.btgt-loading {
	margin-bottom: var(--btgt-space-2);
	padding: 0.52rem 0.65rem;
	border-radius: var(--btgt-radius-md);
	background: var(--btgt-primary-soft);
	font-size: 0.86rem;
}

.btgt-workspace {
	grid-template-columns: minmax(320px, var(--btgt-panel-width)) minmax(0, 1fr);
	gap: var(--btgt-space-3);
	height: var(--btgt-workspace-height);
	min-height: 0;
	overflow: hidden;
}

.btgt-controls {
	min-height: 0;
	height: 100%;
	padding-right: 0.15rem;
	padding-bottom: var(--btgt-space-1);
	overflow: hidden;
	gap: var(--btgt-space-2);
	overscroll-behavior: contain;
	scrollbar-gutter: stable;
}

.btgt-messages::-webkit-scrollbar,
.btgt-track-list::-webkit-scrollbar {
	width: 8px;
}

.btgt-messages::-webkit-scrollbar-thumb,
.btgt-track-list::-webkit-scrollbar-thumb {
	border-radius: 999px;
	background: rgba(23, 107, 77, 0.28);
}

.btgt-dropzone {
	min-height: 76px;
	border-color: var(--btgt-border-strong);
	border-radius: var(--btgt-radius-lg);
}

.btgt-dropzone.is-dragover {
	background: var(--btgt-primary-soft);
}

.btgt-file-label {
	padding: var(--btgt-space-3);
	gap: 0.15rem;
	font-size: 0.9rem;
	line-height: 1.2;
}

.btgt-file-hint {
	font-size: 0.8rem;
	font-weight: 700;
}

.btgt-summary {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--btgt-space-2);
	font-size: 0.82rem;
	font-weight: 800;
}

.btgt-summary span {
	min-width: 0;
	padding: 0.42rem 0.55rem;
	overflow-wrap: anywhere;
	border-color: var(--btgt-border-color);
	border-radius: var(--btgt-radius-md);
	line-height: 1.18;
}

.btgt-field {
	gap: 0.3rem;
	font-size: 0.86rem;
}

.btgt-field input {
	min-height: var(--btgt-control-height);
	padding: 0.58rem 0.68rem;
	border-color: var(--btgt-border-color);
	border-radius: var(--btgt-radius-md);
}

.btgt-mode {
	padding: var(--btgt-space-2);
	gap: var(--btgt-space-2);
	border-color: var(--btgt-border-color);
	border-radius: var(--btgt-radius-lg);
}

.btgt-mode legend {
	font-size: 0.84rem;
	font-weight: 800;
}

.btgt-mode label {
	font-size: 0.86rem;
	font-weight: 700;
}

.btgt-actions {
	position: sticky;
	bottom: 0;
	z-index: 5;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--btgt-space-2);
	padding: var(--btgt-space-2) 0 max(var(--btgt-space-1), env(safe-area-inset-bottom));
	background: linear-gradient(180deg, rgba(246, 248, 245, 0) 0%, var(--btgt-bg) 24%, var(--btgt-bg) 100%);
}

.btgt-actions .btgt-button {
	width: 100%;
}

.btgt-track-list {
	min-height: 0;
	gap: var(--btgt-space-2);
}

.btgt-track-card {
	min-width: 0;
	padding: var(--btgt-space-2);
	border-color: var(--btgt-border-color);
	border-radius: var(--btgt-radius-lg);
	box-shadow: 0 8px 18px rgba(15, 23, 42, 0.04);
}

.btgt-track-head {
	min-width: 0;
	margin-bottom: var(--btgt-space-1);
	gap: var(--btgt-space-2);
}

.btgt-track-name {
	min-width: 0;
	font-size: 0.9rem;
	font-weight: 900;
	line-height: 1.22;
}

.btgt-track-meta,
.btgt-gap {
	gap: 0.25rem 0.5rem;
	font-size: 0.78rem;
	line-height: 1.3;
}

.btgt-track-meta span {
	min-width: 0;
	overflow-wrap: anywhere;
}

.btgt-gap {
	align-items: flex-start;
	margin-top: var(--btgt-space-2);
	font-weight: 800;
}

.btgt-gap::before {
	flex: 0 0 auto;
	width: 0.72rem;
	height: 0.72rem;
}

.btgt-card-actions {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin-top: var(--btgt-space-2);
	gap: 0.35rem;
}

.btgt-small-button {
	min-height: 34px;
	padding: 0.38rem 0.32rem;
	font-size: 0.78rem;
	line-height: 1.05;
	white-space: normal;
}

.btgt-stage-toggle,
.btgt-stage-toggle span {
	min-width: 0;
}

.btgt-stage-toggle span {
	overflow-wrap: anywhere;
}

.btgt-map-wrap {
	min-width: 0;
	min-height: 0;
	height: 100%;
	border-color: var(--btgt-border-color);
	border-radius: var(--btgt-radius-lg);
	box-shadow: 0 8px 18px rgba(15, 23, 42, 0.05);
}

.btgt-map {
	height: 100%;
	min-height: 0;
}

@media (max-width: 1180px) {
	.btgt-gpx-tools {
		--btgt-panel-width: 348px;
		--btgt-workspace-height: clamp(540px, calc(100vh - 150px), 760px);
	}

	@supports (height: 100dvh) {
		.btgt-gpx-tools {
			--btgt-workspace-height: clamp(540px, calc(100dvh - 150px), 760px);
		}
	}

	.btgt-workspace {
		grid-template-columns: minmax(300px, var(--btgt-panel-width)) minmax(0, 1fr);
	}
}

@media (max-width: 900px) {
	.btgt-gpx-tools {
		margin: var(--btgt-space-2) auto;
		padding: var(--btgt-space-2);
	}

	.btgt-header {
		grid-template-columns: 1fr;
		gap: var(--btgt-space-2);
	}

	.btgt-privacy {
		font-size: 0.78rem;
	}

	.btgt-workspace {
		grid-template-columns: 1fr;
		height: auto;
		overflow: visible;
		gap: var(--btgt-space-2);
	}

	.btgt-controls {
		max-height: none;
		height: auto;
		padding: 0 var(--btgt-space-1) var(--btgt-space-1) 0;
		border-bottom: 1px solid rgba(213, 223, 217, 0.75);
	}

	.btgt-map-wrap,
	.btgt-map {
		height: var(--btgt-map-mobile-height);
		min-height: var(--btgt-map-mobile-height);
	}

	.btgt-dropzone {
		min-height: 66px;
	}
}

@media (max-width: 600px) {
	.btgt-gpx-tools {
		border-radius: var(--btgt-radius-md);
	}

	.btgt-guest-card {
		padding: 1.45rem 1rem 1.3rem;
		border-radius: 16px;
	}

	.btgt-guest-logo {
		width: min(100px, 39%);
		margin-bottom: 0.9rem;
	}

	.btgt-guest-title {
		font-size: 1.45rem;
	}

	.btgt-guest-login {
		width: 100%;
	}

	.btgt-connect-head {
		grid-template-columns: 1fr;
	}

	.btgt-tabs {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.btgt-tab,
	.btgt-button {
		min-height: 42px;
		padding: 0.48rem 0.45rem;
		font-size: 0.82rem;
	}

	.btgt-summary {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.35rem;
	}

	.btgt-actions {
		grid-template-columns: 1fr;
	}

	.btgt-card-actions {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.btgt-track-card {
		padding: 0.45rem;
	}
}

@media (max-width: 420px) {
	.btgt-gpx-tools {
		--btgt-map-mobile-height: clamp(260px, 40svh, 380px);
		padding: 0.45rem;
	}

	.btgt-title {
		font-size: 0.98rem;
	}

	.btgt-file-label {
		padding: 0.55rem;
	}

	.btgt-controls {
		max-height: none;
	}

	.btgt-summary {
		grid-template-columns: 1fr;
	}

	.btgt-small-button {
		min-height: 36px;
		font-size: 0.76rem;
	}
}

/* 1.1.1: shared left-column introduction and explicit button states. */
.btgt-controls-intro {
	display: grid;
	gap: 0.38rem;
	padding-bottom: var(--btgt-space-2);
	border-bottom: 1px solid rgba(213, 223, 217, 0.8);
}

.btgt-controls-intro .btgt-kicker,
.btgt-controls-intro .btgt-title,
.btgt-controls-intro .btgt-privacy {
	margin: 0;
}

.btgt-controls-intro .btgt-kicker {
	color: var(--btgt-primary);
	font-size: 0.72rem;
	font-weight: 700;
	line-height: 1.15;
	text-transform: uppercase;
}

.btgt-controls-intro .btgt-title {
	color: var(--btgt-text);
	font-size: 1rem;
	font-weight: 800;
	line-height: 1.2;
	overflow-wrap: anywhere;
}

.btgt-controls-intro .btgt-privacy {
	color: var(--btgt-text-muted);
	font-size: 0.8rem;
	line-height: 1.4;
	overflow-wrap: anywhere;
}

.btgt-controls-intro .btgt-tabs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin: var(--btgt-space-1) 0 0;
}

.btgt-panel {
	display: grid;
	gap: var(--btgt-space-2);
	min-width: 0;
}

.btgt-panel[hidden] {
	display: none;
}

.btgt-map-stack {
	min-width: 0;
	min-height: 0;
	height: 100%;
}

.btgt-map-stack .btgt-map-wrap {
	height: 100%;
}

.btgt-map-stack .btgt-map-wrap[hidden] {
	display: none;
}

.btgt-gpx-tools .btgt-button,
.btgt-gpx-tools .btgt-tab {
	color: var(--btgt-text);
	-webkit-text-fill-color: currentColor;
	background-color: var(--btgt-surface);
	background-image: none;
	opacity: 1;
	text-indent: 0;
	visibility: visible;
}

.btgt-gpx-tools .btgt-button-primary {
	border-color: var(--btgt-primary);
	background: var(--btgt-primary);
	color: #ffffff;
	-webkit-text-fill-color: #ffffff;
	opacity: 1;
	box-shadow: 0 8px 18px rgba(23, 107, 77, 0.18);
}

.btgt-gpx-tools .btgt-button-primary:hover {
	border-color: var(--btgt-primary-strong);
	background: var(--btgt-primary-strong);
	color: #ffffff;
	-webkit-text-fill-color: #ffffff;
}

.btgt-gpx-tools .btgt-button-primary:focus-visible {
	border-color: var(--btgt-primary-strong);
	background: var(--btgt-primary);
	color: #ffffff;
	-webkit-text-fill-color: #ffffff;
}

.btgt-gpx-tools .btgt-button-primary:active {
	border-color: #0b3d2b;
	background: #0b3d2b;
	color: #ffffff;
	-webkit-text-fill-color: #ffffff;
	transform: translateY(1px);
}

.btgt-gpx-tools .btgt-button:disabled,
.btgt-gpx-tools .btgt-button[aria-disabled="true"] {
	border-color: #c8d3cc;
	background: #eef3f0;
	color: #506158;
	-webkit-text-fill-color: #506158;
	opacity: 1;
	cursor: not-allowed;
	box-shadow: none;
}

.btgt-gpx-tools .btgt-button-primary:disabled,
.btgt-gpx-tools .btgt-button-primary[aria-disabled="true"] {
	border-color: #9bb7a9;
	background: #9bb7a9;
	color: #ffffff;
	-webkit-text-fill-color: #ffffff;
	opacity: 1;
}

.btgt-gpx-tools .btgt-button:disabled:hover,
.btgt-gpx-tools .btgt-button[aria-disabled="true"]:hover,
.btgt-gpx-tools .btgt-button-primary:disabled:hover,
.btgt-gpx-tools .btgt-button-primary[aria-disabled="true"]:hover {
	border-color: #c8d3cc;
	background: #eef3f0;
	color: #506158;
	-webkit-text-fill-color: #506158;
	transform: none;
}

.btgt-gpx-tools .btgt-button-primary:disabled:hover,
.btgt-gpx-tools .btgt-button-primary[aria-disabled="true"]:hover {
	border-color: #9bb7a9;
	background: #9bb7a9;
	color: #ffffff;
	-webkit-text-fill-color: #ffffff;
}

@media (max-width: 900px) {
	.btgt-controls-intro {
		gap: 0.32rem;
	}

	.btgt-controls-intro .btgt-title {
		font-size: 0.98rem;
	}

	.btgt-controls-intro .btgt-privacy {
		font-size: 0.78rem;
	}
}

@media (max-width: 420px) {
	.btgt-controls-intro .btgt-title {
		font-size: 0.94rem;
	}

	.btgt-controls-intro .btgt-privacy {
		font-size: 0.76rem;
	}
}

/* 1.3.0 compact workspace, progressive controls and backend-only diagnostics. */
.btgt-gpx-tools {
	--btgt-panel-width: 296px;
}

.btgt-gpx-tools [hidden] {
	display: none;
}

.btgt-gpx-tools .btgt-workspace {
	grid-template-columns: minmax(280px, var(--btgt-panel-width, 296px)) minmax(0, 1fr);
	align-items: stretch;
}

.btgt-gpx-tools .btgt-controls {
	display: flex;
	flex-direction: column;
	min-height: 0;
	height: 100%;
	overflow: hidden;
	padding-right: 0;
}

.btgt-gpx-tools .btgt-controls-intro {
	flex: 0 0 auto;
	gap: 0.26rem;
	padding-bottom: var(--btgt-space-2);
}

.btgt-gpx-tools .btgt-controls-intro .btgt-kicker {
	white-space: nowrap;
	font-size: 0.68rem;
	font-weight: 700;
}

.btgt-gpx-tools .btgt-controls-intro .btgt-title {
	font-size: 1rem;
	line-height: 1.16;
}

.btgt-gpx-tools .btgt-controls-intro .btgt-privacy {
	font-size: 0.78rem;
	line-height: 1.35;
}

.btgt-gpx-tools .btgt-privacy-details {
	margin: 0;
	color: var(--btgt-text-muted);
	font-size: 0.76rem;
	line-height: 1.35;
}

.btgt-gpx-tools .btgt-privacy-details summary {
	cursor: pointer;
	color: var(--btgt-primary-strong);
	font-weight: 800;
}

.btgt-gpx-tools .btgt-privacy-full p {
	margin: 0.3rem 0 0;
}

.btgt-gpx-tools .btgt-controls-intro .btgt-tabs {
	gap: 0.35rem;
}

.btgt-gpx-tools .btgt-tab {
	min-height: 34px;
	padding: 0.42rem 0.45rem;
	font-size: 0.8rem;
}

.btgt-gpx-tools .btgt-messages {
	flex: 0 0 auto;
	max-height: 4.4rem;
	overflow: hidden;
	margin-bottom: 0;
}

.btgt-gpx-tools .btgt-message {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 0.45rem;
	align-items: start;
	max-height: 4.2rem;
	overflow: hidden;
	font-size: 0.8rem;
	line-height: 1.32;
}

.btgt-gpx-tools .btgt-message-close {
	appearance: none;
	border: 0;
	background: transparent;
	color: var(--btgt-primary-strong);
	cursor: pointer;
	font: inherit;
	font-size: 0.75rem;
	font-weight: 800;
	padding: 0;
}

.btgt-gpx-tools .btgt-panel {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: var(--btgt-space-2);
	min-height: 0;
	overflow: hidden;
}

.btgt-gpx-tools .btgt-panel[hidden],
.btgt-gpx-tools .btgt-map-stack .btgt-map-wrap[hidden] {
	display: none;
}

.btgt-gpx-tools .btgt-dropzone {
	flex: 0 0 auto;
	min-height: 68px;
	border-radius: var(--btgt-radius-md);
}

.btgt-gpx-tools .btgt-dropzone.is-compact {
	min-height: 44px;
}

.btgt-gpx-tools .btgt-dropzone.is-compact .btgt-file-label {
	grid-template-columns: 1fr;
	padding: 0.55rem;
}

.btgt-gpx-tools .btgt-dropzone.is-compact .btgt-file-hint {
	display: none;
}

.btgt-gpx-tools .btgt-file-label {
	padding: 0.68rem;
	font-size: 0.84rem;
}

.btgt-gpx-tools .btgt-summary {
	flex: 0 0 auto;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.35rem;
	font-size: 0.76rem;
}

.btgt-gpx-tools .btgt-summary span {
	padding: 0.34rem 0.42rem;
	border-radius: var(--btgt-radius-sm);
}

.btgt-gpx-tools .btgt-field,
.btgt-gpx-tools .btgt-mode,
.btgt-gpx-tools .btgt-connect-panel {
	flex: 0 0 auto;
}

.btgt-gpx-tools .btgt-field {
	font-size: 0.8rem;
}

.btgt-gpx-tools .btgt-field input,
.btgt-gpx-tools .btgt-profile-field select {
	min-height: 36px;
	padding: 0.45rem 0.55rem;
}

.btgt-gpx-tools .btgt-connect-head {
	grid-template-columns: minmax(0, 1fr);
	gap: 0.4rem;
}

.btgt-gpx-tools .btgt-section-kicker {
	margin: 0;
	font-size: 0.72rem;
}

.btgt-gpx-tools .btgt-dynamic-region {
	display: grid;
	align-content: start;
	flex: 1 1 auto;
	gap: var(--btgt-space-2);
	min-height: 0;
	overflow-y: auto;
	overflow-x: hidden;
	padding-bottom: var(--btgt-space-2);
	overscroll-behavior: contain;
	scrollbar-gutter: stable;
}

.btgt-gpx-tools .btgt-dynamic-region::-webkit-scrollbar,
.btgt-gpx-tools .btgt-connect-list::-webkit-scrollbar {
	width: 8px;
}

.btgt-gpx-tools .btgt-dynamic-region::-webkit-scrollbar-thumb,
.btgt-gpx-tools .btgt-connect-list::-webkit-scrollbar-thumb {
	border-radius: 999px;
	background: rgba(23, 107, 77, 0.28);
}

.btgt-gpx-tools .btgt-connect-list {
	max-height: 13rem;
	overflow-y: auto;
	overflow-x: hidden;
	padding-right: 0.1rem;
}

.btgt-gpx-tools .btgt-track-list {
	gap: 0.45rem;
}

.btgt-gpx-tools .btgt-track-card,
.btgt-gpx-tools .btgt-connect-item {
	padding: 0.48rem;
	border-radius: var(--btgt-radius-md);
	box-shadow: none;
}

.btgt-gpx-tools .btgt-track-name,
.btgt-gpx-tools .btgt-connect-title {
	font-size: 0.8rem;
	line-height: 1.2;
}

.btgt-gpx-tools .btgt-track-meta,
.btgt-gpx-tools .btgt-gap {
	font-size: 0.72rem;
	line-height: 1.22;
}

.btgt-gpx-tools .btgt-card-actions {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.28rem;
	margin-top: 0.45rem;
}

.btgt-gpx-tools .btgt-small-button {
	min-height: 30px;
	padding: 0.28rem 0.22rem;
	font-size: 0.7rem;
}

.btgt-gpx-tools .btgt-actions {
	flex: 0 0 auto;
	position: sticky;
	bottom: 0;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	padding-top: var(--btgt-space-2);
}

.btgt-gpx-tools .btgt-actions:empty {
	display: none;
}

.btgt-gpx-tools .btgt-actions .btgt-button[hidden] {
	display: none;
}

@media (max-width: 1180px) {
	.btgt-gpx-tools .btgt-workspace {
		grid-template-columns: minmax(280px, var(--btgt-panel-width, 296px)) minmax(0, 1fr);
	}
}

@media (max-width: 900px) {
	.btgt-gpx-tools .btgt-workspace {
		height: auto;
		overflow: visible;
	}

	.btgt-gpx-tools .btgt-controls,
	.btgt-gpx-tools .btgt-panel {
		height: auto;
		max-height: none;
		overflow: visible;
	}

	.btgt-gpx-tools .btgt-dynamic-region,
	.btgt-gpx-tools .btgt-connect-list {
		max-height: min(42svh, 360px);
	}

	.btgt-gpx-tools .btgt-actions {
		position: static;
	}
}

/* 1.4.0 mobile-first flow: natural page scroll, deferred map and compact touch UI. */
.btgt-gpx-tools .btgt-mobile-map-slot {
	display: none;
}

@media (max-width: 768px) {
	.btgt-gpx-tools {
		--btgt-map-mobile-height: clamp(300px, 42svh, 430px);
		margin: var(--btgt-space-2) auto;
		padding: clamp(0.55rem, 2.4vw, 0.85rem);
		border-radius: var(--btgt-radius-md);
		overflow-x: hidden;
	}

	.btgt-gpx-tools,
	.btgt-gpx-tools * {
		box-sizing: border-box;
	}

	.btgt-gpx-tools .btgt-workspace {
		display: block;
		height: auto;
		min-height: 0;
		overflow: visible;
	}

	.btgt-gpx-tools .btgt-controls,
	.btgt-gpx-tools .btgt-panel {
		height: auto;
		max-height: none;
		min-height: 0;
		overflow: visible;
	}

	.btgt-gpx-tools .btgt-controls {
		gap: 0.55rem;
		padding: 0;
	}

	.btgt-gpx-tools .btgt-controls-intro {
		gap: 0.24rem;
		padding-bottom: 0.55rem;
	}

	.btgt-gpx-tools .btgt-controls-intro .btgt-kicker {
		font-size: 0.68rem;
		line-height: 1.1;
		white-space: nowrap;
	}

	.btgt-gpx-tools .btgt-controls-intro .btgt-title {
		font-size: 1.08rem;
		line-height: 1.16;
	}

	.btgt-gpx-tools .btgt-controls-intro .btgt-privacy {
		font-size: 0.78rem;
		line-height: 1.34;
	}

	.btgt-gpx-tools .btgt-privacy-details {
		font-size: 0.76rem;
	}

	.btgt-gpx-tools .btgt-controls-intro .btgt-tabs {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.35rem;
		margin-top: 0.25rem;
	}

	.btgt-gpx-tools .btgt-tab {
		min-height: 42px;
		padding: 0.48rem 0.42rem;
		font-size: 0.82rem;
		line-height: 1.1;
	}

	.btgt-gpx-tools .btgt-messages {
		order: 3;
		max-height: none;
		margin: 0;
	}

	.btgt-gpx-tools .btgt-message {
		max-height: none;
		padding: 0.5rem 0.58rem;
		font-size: 0.78rem;
		line-height: 1.3;
	}

	.btgt-gpx-tools .btgt-message span {
		display: -webkit-box;
		-webkit-line-clamp: 3;
		-webkit-box-orient: vertical;
		overflow: hidden;
	}

	.btgt-gpx-tools .btgt-loading {
		order: 4;
		margin: 0;
	}

	.btgt-gpx-tools .btgt-panel {
		gap: 0.62rem;
	}

	.btgt-gpx-tools .btgt-dropzone {
		min-height: 82px;
		border-radius: var(--btgt-radius-md);
	}

	.btgt-gpx-tools .btgt-dropzone.is-compact {
		min-height: 46px;
	}

	.btgt-gpx-tools .btgt-file-label {
		padding: 0.64rem;
		font-size: 0.86rem;
	}

	.btgt-gpx-tools .btgt-file-hint {
		font-size: 0.76rem;
	}

	.btgt-gpx-tools .btgt-summary {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0;
		overflow: hidden;
		border: 1px solid var(--btgt-border-color);
		border-radius: var(--btgt-radius-md);
		background: #ffffff;
	}

	.btgt-gpx-tools .btgt-summary span {
		border: 0;
		border-radius: 0;
		background: transparent;
		padding: 0.48rem 0.54rem;
		font-size: 0.76rem;
		line-height: 1.18;
	}

	.btgt-gpx-tools .btgt-summary span + span {
		border-left: 1px solid var(--btgt-border-color);
	}

	.btgt-gpx-tools .btgt-summary span:nth-child(2n + 3) {
		border-top: 1px solid var(--btgt-border-color);
	}

	.btgt-gpx-tools .btgt-summary span:nth-child(2n + 4) {
		border-top: 1px solid var(--btgt-border-color);
	}

	.btgt-gpx-tools .btgt-map-stack {
		display: none;
	}

	.btgt-gpx-tools .btgt-mobile-map-slot {
		display: block;
		min-width: 0;
	}

	.btgt-gpx-tools:not(.has-active-data) .btgt-mobile-map-slot,
	.btgt-gpx-tools .btgt-mobile-map-slot:empty {
		display: none;
	}

	.btgt-gpx-tools .btgt-mobile-map-slot .btgt-map-wrap {
		display: block;
		width: 100%;
		height: var(--btgt-map-mobile-height);
		min-height: var(--btgt-map-mobile-height);
		border-radius: var(--btgt-radius-md);
	}

	.btgt-gpx-tools .btgt-mobile-map-slot .btgt-map-wrap[hidden] {
		display: none;
	}

	.btgt-gpx-tools .btgt-mobile-map-slot .btgt-map {
		height: 100%;
		min-height: 0;
	}

	.btgt-gpx-tools .btgt-map .leaflet-control-attribution {
		max-width: calc(100vw - 7rem);
		white-space: normal;
	}

	.btgt-gpx-tools .btgt-mode,
	.btgt-gpx-tools .btgt-field,
	.btgt-gpx-tools .btgt-connect-panel,
	.btgt-gpx-tools .btgt-track-card {
		border-radius: var(--btgt-radius-md);
	}

	.btgt-gpx-tools .btgt-mode {
		padding: 0.58rem;
		gap: 0.42rem;
	}

	.btgt-gpx-tools .btgt-mode label {
		min-height: 34px;
	}

	.btgt-gpx-tools .btgt-field {
		gap: 0.28rem;
		font-size: 0.82rem;
	}

	.btgt-gpx-tools .btgt-field input,
	.btgt-gpx-tools .btgt-profile-field select {
		min-height: 42px;
	}

	.btgt-gpx-tools .btgt-dynamic-region,
	.btgt-gpx-tools .btgt-connect-list {
		display: grid;
		gap: 0.48rem;
		max-height: none;
		overflow: visible;
		padding: 0;
	}

	.btgt-gpx-tools .btgt-connect-panel {
		padding: 0.55rem;
		gap: 0.48rem;
	}

	.btgt-gpx-tools .btgt-connect-head {
		gap: 0.36rem;
	}

	.btgt-gpx-tools .btgt-section-kicker {
		font-size: 0.72rem;
	}

	.btgt-gpx-tools .btgt-track-list {
		gap: 0.48rem;
	}

	.btgt-gpx-tools .btgt-track-card,
	.btgt-gpx-tools .btgt-connect-item {
		padding: 0.54rem;
	}

	.btgt-gpx-tools .btgt-track-head {
		margin-bottom: 0.35rem;
	}

	.btgt-gpx-tools .btgt-track-name,
	.btgt-gpx-tools .btgt-connect-title {
		font-size: 0.84rem;
		line-height: 1.18;
	}

	.btgt-gpx-tools .btgt-track-meta,
	.btgt-gpx-tools .btgt-gap {
		font-size: 0.74rem;
		line-height: 1.24;
	}

	.btgt-gpx-tools .btgt-card-actions {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 0.32rem;
		margin-top: 0.44rem;
	}

	.btgt-gpx-tools .btgt-small-button {
		min-height: 38px;
		padding: 0.34rem 0.22rem;
		font-size: 0.72rem;
		line-height: 1.05;
	}

	.btgt-gpx-tools .btgt-stage-toggle {
		min-height: 40px;
	}

	.btgt-gpx-tools .btgt-actions {
		position: static;
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0.45rem;
		padding: 0.4rem 0 max(0.35rem, env(safe-area-inset-bottom));
		background: transparent;
	}

	.btgt-gpx-tools .btgt-actions .btgt-button {
		min-height: 44px;
	}

	.btgt-gpx-tools .btgt-actions .btgt-button[hidden] {
		display: none;
	}
}

@media (max-width: 768px) and (orientation: landscape) {
	.btgt-gpx-tools {
		--btgt-map-mobile-height: clamp(240px, 58svh, 330px);
	}
}

@media (max-width: 420px) {
	.btgt-gpx-tools {
		--btgt-map-mobile-height: clamp(292px, 42svh, 390px);
	}

	.btgt-gpx-tools .btgt-controls-intro .btgt-title {
		font-size: 1rem;
	}

	.btgt-gpx-tools .btgt-summary {
		grid-template-columns: 1fr 1fr;
	}

	.btgt-gpx-tools .btgt-actions,
	.btgt-gpx-tools .btgt-card-actions {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
