@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');

* {
	box-sizing: border-box; 
}

html,
body {
	padding: 0;
	margin: 0;
	font-family: Montserrat, sans-serif, serif;
}

body {
	display: flex;
	flex-direction: column;
}

nav {
	width: 100%;
	height: 36px;
	position: fixed;
	top: 0;
	left: 0;
	z-index: 1;
	display: flex;
	flex-direction: row;
	justify-content: center;
	border-bottom: 2px solid rgb(48, 66, 84);
	background-color: rgb(241, 238, 232);
}

.nav-link {
	flex: 1 1 0;
	display: flex;
	align-items: top;
	justify-content: right;
	padding: 8px;
	font-size: 18px;
	font-weight: 900;
	color: rgb(48, 66, 84);
}

.nav-link a {
	text-decoration: none;
}

.nav-link a:visited {
	color: rgb(48, 66, 84);
}

.nav-link a:hover {
	color: hsl(210, 27%, 50%);
	cursor: pointer;
}

#logo,
#logo-link {
	position: absolute;
	width: 96px;
	height: auto;
}

#map {
	height: 100%;
	width: 100%;
	position: fixed;
	top: 36px;
}

@keyframes border-pulse-buff {
	0% {
		box-shadow: 0 0 0 0 rgba(254, 102, 0, 1);
	}

	70% {
		box-shadow: 0 0 0 10px rgba(254, 102, 0, 0);
	}

	100% {
		box-shadow: 0 0 0 0 rgba(254, 102, 0, 0);
	}
}

#legend,
#schedule-box {
	height: auto;
	position: fixed;
	bottom: 20px;
	border: 2px solid rgb(48, 66, 84);
	border-radius: 10px;
	padding: 6px;
	background-color: rgb(241, 238, 232);
	color: rgb(48, 66, 84);
}

#schedule-menu details[open] {
	height: auto;
	max-width: 200px;
	position: fixed;
	top: 36px;
	right: 0;
	border: 2px solid rgb(48, 66, 84);
	border-top: 0;
	border-radius: 10px;
	border-top-right-radius: 0px;
	border-top-left-radius: 0px;
	padding: 6px;
	background-color: rgb(241, 238, 232);
	color: rgb(48, 66, 84);
}

#legend {
	left: 10px;
}

#schedule-box {
	right: 10px;
	max-width: 260px;
}

#legend details,
#schedule-box details {
	padding-right: 4px;
}

#legend details[open],
#schedule-box details[open] {
	padding-right: 0;
}

#legend details[open] summary,
#schedule-box details[open] summary {
	border-bottom: 1px solid rgb(48, 66, 84);
	padding-bottom: 1px;
}

#legend-title,
#schedule-box-title {
	font-weight: bold;
	font-size: 18px;
}

.legend-entry {
	display: flex;
	margin-top: 4px;
}

.legend-entry > *:first-child {
	height: 20px;
	width: auto;
}

.legend-entry > *:last-child {
	display: flex;
	margin-left: 8px;
	align-items: center;
	font-size: 14px;
}

#stop-icon,
#cityhall-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 20px;
	width: 20px;
	border: 1px solid black;
	border-radius: 50%;
	background-color: white;
	color: black;
	font-family: Arial;
	font-weight: bold;
	font-size: 14px;
}

#cityhall-icon {
	background-color: yellow;
}

#loc-icon {
	height: 20px;
	width: 20px;
	border: 2px solid white;
	border-radius: 50%;
	background-color: #2a93ee;
}

#schedule-box-content {
	font-size: 14px;
	margin-top: 8px;
}

#schedule-box-content p {
	padding: 0;
	border-top: 1px solid rgba(48, 66, 84, 0.5);
	margin-top: 8px;
}



/* ---------- Locate button ---------- */

.located-animation {
	width: 17px;
	height: 17px;
	border: 1px solid #fff;
	border-radius: 50%;
	background: #2a93ee;
	animation: border-pulse 2s infinite;
}

@keyframes border-pulse {
	0% {
		box-shadow: 0 0 0 0 rgba(255, 255, 255, 1);
	}

	70% {
		box-shadow: 0 0 0 10px rgba(255, 0, 0, 0);
	}

	100% {
		box-shadow: 0 0 0 0 rgba(255, 0, 0, 0);
	}
}

.locate-active {
	fill: red;
}

.locate-button {
	position: absolute;
	top: 10px;
	left: 10px;
	width: 26px;
	height: 26px;
	z-index: 999;
	cursor: pointer;
	display: none;
	padding: 5px;
	background: #fff;
	border: none;
	border-radius: 4px;
	box-shadow: 0 1px 5px rgb(0 0 0 / 65%);
}

.leaflet-touch .locate-button {
	width: 34px;
	height: 34px;
}
