.mapping-stage {
	min-height: 58vh;
	display: grid;
	grid-template-columns: repeat(2, minmax(14em, 1fr));
	align-items: center;
	gap: clamp(1em, 4vw, 4em);
	padding: clamp(1em, 5vw, 5em);
	background: var(--c-gray-light);
	border-radius: var(--border-radius);
}

.mapping-group {
	display: grid;
	gap: 1em;
	min-width: 0;
}

.mapping-group h3 {
	font-size: 13px;
	font-weight: 500;
	text-align: center;
}

.room-plan {
	display: grid;
	grid-template-columns: repeat(var(--grid-size), minmax(0, 1fr));
	gap: .75em;
}

.room,
.switch-panel button {
	aspect-ratio: 1;
	display: grid;
	place-items: center;
	border: 1px solid var(--c-border);
	border-radius: var(--border-radius);
	background: var(--c-white);
}

.room {
	position: relative;
}

.room.is-target {
	border: 3px solid var(--c-blue);
}

.room i {
	display: block;
	width: 1.5em;
	height: 1.5em;
	border: 1px solid var(--c-black);
	border-radius: 50%;
	background: var(--c-white);
}

.room.is-lit i {
	background: #ffd83d;
	border-color: #ffd83d;
	box-shadow: 0 0 1.5em rgba(255, 216, 61, .55);
}

.switch-panel {
	display: grid;
	grid-template-columns: repeat(auto-fit, 2.75em);
	gap: .4em;
	justify-content: center;
	max-width: 100%;
}

.switch-panel.is-mapped {
	grid-template-columns: repeat(var(--grid-size), 2.75em);
	justify-content: center;
}

.grid-size-control {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: .35em;
	margin-bottom: 0;
}

.grid-size-control button[aria-pressed="true"] {
	border-color: var(--c-blue);
	background: var(--c-blue);
	color: var(--c-white);
}

.switch-panel button {
	appearance: none;
	width: 2.75em;
	height: 2.75em;
	min-width: 2.75em;
	aspect-ratio: auto;
	border-radius: .125em;
	background: var(--c-white);
	box-shadow: 0 .18em 0 var(--c-border);
	color: var(--c-black);
	cursor: pointer;
	transition: background 120ms ease, box-shadow 120ms ease, transform 120ms ease;
}

.switch-panel button:hover {
	border-color: var(--c-blue);
}

.switch-panel button:active {
	box-shadow: none;
	transform: translateY(.18em);
}

.switch-panel button.is-on {
	background: var(--c-gray-light);
	box-shadow: inset 0 .12em .18em var(--c-border);
	transform: translateY(.18em);
}

.switch-panel button:focus-visible {
	outline: 3px solid var(--c-blue);
	outline-offset: 3px;
}

.switch-panel button:disabled {
	cursor: default;
}

.mapping-feedback {
	min-height: 1.5em;
	margin-top: var(--section-gap);
	text-align: center;
}

@media (max-width: 900px) {
	.mapping-stage {
		grid-template-columns: 1fr;
	}
}
