/* Jólalestin map (MapLibre). Stop labels match the old Google info boxes (.iw-box .ib-item). */
.jl-map {
	position: relative;
	width: 100%;
	height: 100%;
	background: #c8d7c9;
}
.jl-map--failed {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	text-align: center;
	font: 16px/22px 'You2013', sans-serif;
	color: #005D1D;
}

.jl-stop {
	display: flex;
	flex-direction: column;
	align-items: center;
	cursor: default;
}
.jl-stop__label {
	position: relative;
	display: flex;
	height: 54px;
	margin-bottom: 14px;
	font: 13px/16px 'You2013', sans-serif;
	white-space: nowrap;
	box-shadow: 0 2px 6px rgba(0, 0, 0, .15);
}
.jl-stop__label:after {
	content: '';
	position: absolute;
	top: 100%;
	left: 50%;
	margin-left: -10px;
	border-top: 12px solid #F40009;
	border-left: 10px solid transparent;
	border-right: 10px solid transparent;
}
.jl-stop--highlight .jl-stop__label:after {
	border-top-color: #005D1D;
}
.jl-stop__name {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-width: 108px;
	padding: 5px 8px;
	background: #F40009;
	color: #fff;
	text-align: center;
}
.jl-stop__name small {
	display: block;
	font-size: 12px;
	line-height: 14px;
}
.jl-stop--highlight .jl-stop__name {
	background: #005D1D;
}
.jl-stop__time {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	background: #fff;
	color: #F40009;
}
.jl-stop__pin {
	width: 32px;
	height: 32px;
}

/* Zoomed out: one-line labels so neighbouring stops don't cover each other */
.jl-map--compact .jl-stop__label {
	height: 24px;
	margin-bottom: 8px;
	font-size: 11px;
	line-height: 14px;
}
.jl-map--compact .jl-stop__label:after {
	margin-left: -6px;
	border-top-width: 8px;
	border-left-width: 6px;
	border-right-width: 6px;
}
.jl-map--compact .jl-stop__name {
	min-width: 0;
	padding: 0 6px;
}
.jl-map--compact .jl-stop__name small {
	display: none;
}
.jl-map--compact .jl-stop__time {
	width: auto;
	padding: 0 6px;
}
.jl-map--compact .jl-stop__pin {
	width: 16px;
	height: 16px;
}

.jl-santa {
	width: 54px;
	height: 47px;
	z-index: 2;
}

.jl-recenter {
	position: absolute;
	left: 50%;
	bottom: 60px;
	z-index: 3;
	transform: translateX(-50%);
	padding: 10px 18px;
	border: 0;
	border-radius: 22px;
	background: #F40009;
	color: #fff;
	font: 15px/20px 'You2013', sans-serif;
	box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
	cursor: pointer;
}
.jl-recenter[hidden] {
	display: none;
}

/* Shown while the GPS in the truck is reporting */
.jl-live {
	position: absolute;
	left: 12px;
	bottom: 12px;
	z-index: 3;
	padding: 6px 12px 6px 26px;
	border-radius: 16px;
	background: rgba(255, 255, 255, .92);
	color: #005D1D;
	font: 13px/18px 'You2013', sans-serif;
	box-shadow: 0 1px 4px rgba(0, 0, 0, .2);
}
.jl-live:before {
	content: '';
	position: absolute;
	left: 10px;
	top: 50%;
	width: 9px;
	height: 9px;
	margin-top: -4.5px;
	border-radius: 50%;
	background: #F40009;
	animation: jl-pulse 1.6s ease-in-out infinite;
}
.jl-live[hidden] {
	display: none;
}
@keyframes jl-pulse {
	50% { opacity: .25; }
}

/*
 * Live page: fill the screen. The theme's isMobile() sets the height to the window minus
 * the header, but the header is position: fixed over the map, so that left a band of
 * page background below the map on phones.
 */
.jl-map-wrap--live {
	height: 100vh !important;
	height: 100dvh !important;
}
/* Keep controls clear of the message box (--jl-alert-h is set from the script) */
.jl-map .maplibregl-ctrl-bottom-right {
	bottom: var(--jl-alert-h, 0px);
}
.jl-map .jl-live {
	bottom: calc(var(--jl-alert-h, 0px) + 12px);
}
.jl-map .jl-recenter {
	bottom: calc(var(--jl-alert-h, 0px) + 60px);
}

.map-wrap .alert-message[hidden] {
	display: none;
}
.map-wrap .alert-message {
	z-index: 3;
}

@media screen and (max-width: 767px) {
	.jl-stop__label {
		height: 44px;
		font-size: 12px;
		line-height: 14px;
	}
	.jl-stop__name {
		min-width: 90px;
	}
	.jl-stop__time {
		width: 46px;
	}
}
