/*
 * The booking flow's own layout, and the locations list and a location's
 * page. Colours, fonts, radii and shadows are read from the custom properties
 * the theme prints on :root (--color-*, --font-*, --radius-*, --shadow-*; the
 * site's docs/THEME-CONTRACT.md), each with Panila's value as its fallback,
 * so everything here is usable on any theme. Every class is prefixed pnl-,
 * so nothing here can restyle the theme, and nothing is layered: printed
 * after the theme's stylesheet (the panila_booking_style_deps filter), a
 * class here beats the theme's base reset by order alone.
 *
 * Sizes are rem on the theme's 10 px root (html { font-size: 0.625rem },
 * fluid between 700 and 1920 px): 1.6rem is 16 px at full width. Breakpoints
 * are measured against the browser's default 16 px, so 64rem there is 1024 px.
 */

/*
 * The tokens, on every root this stylesheet draws: the wizard, the picker
 * (and its empty note, printed instead of it), the locations list and a
 * location's page. Markup printed outside these gets none.
 */
.pnl-wizard,
.pnl-picker,
.pnl-picker__empty,
.pnl-locations,
.pnl-location {
	--pnl-brand: var(--color-brand-primary, #9bc900);
	--pnl-brand-dark: var(--color-brand-dark, #7a9e00);
	--pnl-brand-soft: var(--color-brand-soft, #f9fbef);
	--pnl-accent: var(--color-brand-accent, #2157a7);
	--pnl-accent-soft: var(--color-accent-soft, #e8f0fb);
	--pnl-ink: var(--color-ink, #1a1c16);
	--pnl-ink-soft: var(--color-ink-soft, #3d4236);
	--pnl-muted: var(--color-muted, #6b7160);
	--pnl-border: var(--color-border, #d9ddd0);
	--pnl-surface: var(--color-surface, #f7f7f7);
	--pnl-white: var(--color-surface-elevated, #fff);
	/* A surface a step below the page (the contract cards): halfway from
	   white to the border, #eceee8 on Panila's colours. */
	--pnl-surface-sunk: color-mix(in srgb, var(--pnl-border) 50%, var(--pnl-white));
	--pnl-sand: var(--color-sand, #fef7e7);
	--pnl-clay: var(--color-clay, #fdefeb);
	--pnl-danger: var(--color-danger, #c62828);
	/* The theme prints no soft danger. */
	--pnl-danger-soft: #fdecec;
	--pnl-success: var(--color-success, #2f7d32);
	--pnl-font-body: var(--font-body, inherit);
	--pnl-font-heading: var(--font-heading, inherit);
	--pnl-font-serif: var(--font-serif, Georgia, serif);
	--pnl-radius: var(--radius-lg, 16px);
	--pnl-radius-sm: var(--radius-sm, 8px);
	--pnl-radius-md: var(--radius-md, 12px);
	--pnl-shadow-sm: var(--shadow-sm, 0 1px 2px rgba(26, 28, 22, 0.06));
	--pnl-shadow-md: var(--shadow-md, 0 8px 24px rgba(26, 28, 22, 0.08));
	/* The theme has no larger shadow, nor one cast upwards: these are built
	   on its ink, as its own are. A popover over content, and the bar fixed
	   to the foot of a phone's screen. */
	--pnl-shadow-lg: 0 8px 24px color-mix(in srgb, var(--pnl-ink) 12%, transparent);
	--pnl-shadow-up: 0 -8px 24px color-mix(in srgb, var(--pnl-ink) 8%, transparent);
	/* The sticky parts sit under the theme's header. */
	--pnl-header-height: var(--site-header-height, 105px);
	/* White, then the accent (7:1), seen on any of the flow's surfaces. */
	--pnl-ring: 0 0 0 2px var(--pnl-white), 0 0 0 4px var(--pnl-accent);
	/*
	 * The theme draws every focus ring itself as `box-shadow:
	 * var(--focus-ring)`, and its own value, green at 45%, is 1.35:1 on
	 * white. Set here, its rule draws the flow's ring instead. The one theme
	 * property this file writes rather than reads.
	 */
	--focus-ring: var(--pnl-ring);
	/* The brand's green dark enough for small text (4.9:1 and more on
	   the flow's light surfaces); brand-dark is 3:1, for large text and
	   borders only. */
	--pnl-brand-text: #587300;
	/* Fully rounded ends, whatever the height. */
	--pnl-pill: 999px;
	color: var(--pnl-ink);
}

/* The flow's own blocks only: the theme has its rule for the rest. */
:is(.pnl-wizard, .pnl-picker) [hidden]:not([hidden="until-found"]) {
	display: none !important;
}

/* ---------- shared pieces ---------- */

/* The BigEye starter gives every span the body's size, weight and line
   height (base/_typography.scss, and again inside a page's .entry-content
   at class weight). In the plugin's parts a span without a class of its own
   is a piece of its parent's text, the "1" of "1 m³" or a price's figure,
   so it follows the parent; a classed span keeps its own rule. */
:where(.pnl-wizard, .pnl-picker, .pnl-locations, .pnl-location, .pnl-shell) span:not([class]) {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
}


.pnl-heading {
	font-size: 1.8rem;
	margin: 0 0 0.8rem;
}
.pnl-title {
	font-size: 3rem;
	font-weight: 600;
	letter-spacing: -0.025em;
	line-height: 1.2;
	margin: 0 0 0.8rem;
}
.pnl-lede,
.pnl-help {
	color: var(--pnl-ink-soft);
	margin: 0 0 1.6rem;
}
.pnl-help {
	font-size: 1.4rem;
}
.pnl-note {
	background: var(--pnl-surface);
	border-radius: var(--pnl-radius-md);
	padding: 1.2rem 1.6rem;
	font-size: 1.4rem;
}
.pnl-note--danger {
	color: var(--pnl-danger);
}
.pnl-card {
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius);
	padding: 2rem;
	margin-bottom: 1.6rem;
}
.pnl-card--soft {
	background: var(--pnl-brand-soft);
}
.pnl-link {
	background: none;
	border: 0;
	color: var(--pnl-accent);
	cursor: pointer;
	font: inherit;
	padding: 0;
	text-decoration: underline;
}
.pnl-actions {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 1.6rem;
	justify-content: space-between;
	margin-top: 2.4rem;
}
.pnl-actions > :last-child {
	margin-left: auto;
}
/* "← Tagasi" at the top of a step, as the prototype has it. */
.pnl-back {
	background: none;
	border: 0;
	color: var(--pnl-accent);
	cursor: pointer;
	font: inherit;
	font-size: 1.4rem;
	font-weight: 500;
	margin: 0 0 2.4rem;
	padding: 0;
}
.pnl-back:hover {
	text-decoration: underline;
}
.pnl-back:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}

/* The ⓘ (ContractTypeHint.tsx): an accent square, its text on hover or focus. */
.pnl-hint {
	display: inline-flex;
	position: relative;
	vertical-align: middle;
}
.pnl-hint__button {
	align-items: center;
	background: var(--pnl-accent);
	position: relative;
	border: 0;
	border-radius: 3px;
	color: var(--pnl-white);
	cursor: help;
	display: inline-flex;
	font: italic 700 1.3rem/1 Georgia, serif;
	height: 1.8rem;
	justify-content: center;
	padding: 0;
	text-transform: none;
	width: 1.8rem;
}
.pnl-hint__button:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
/* 24px to press (WCAG 2.5.8), around the drawn 18px square. */
.pnl-hint__button::before {
	content: "";
	inset: -0.1875rem;
	position: absolute;
}
.pnl-hint__text {
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	box-shadow: var(--pnl-shadow-lg);
	color: var(--pnl-ink-soft);
	font-size: 1.3rem;
	font-style: normal;
	font-weight: 400;
	left: 50%;
	letter-spacing: normal;
	line-height: 1.45;
	opacity: 0;
	padding: 1.2rem 1.4rem;
	pointer-events: none;
	position: absolute;
	text-align: left;
	text-transform: none;
	top: calc(100% + 0.8rem);
	transform: translateX(-50%);
	visibility: hidden;
	width: min(28.8rem, calc(100vw - 2.4rem));
	z-index: 30;
}
/* Shown, the text takes the pointer, so it can be read with it on it
   (WCAG 1.4.13); Escape dismisses it until the pointer and focus leave. */
.pnl-hint:hover .pnl-hint__text,
.pnl-hint:focus-within .pnl-hint__text {
	opacity: 1;
	pointer-events: auto;
	visibility: visible;
}
.pnl-hint.is-dismissed .pnl-hint__text {
	opacity: 0;
	pointer-events: none;
	visibility: hidden;
}
.pnl-alert {
	border-radius: var(--pnl-radius-md);
	margin: 1.6rem 0;
	padding: 1.2rem 1.6rem;
}
.pnl-alert--danger {
	background: var(--pnl-danger-soft);
	border: 1px solid var(--pnl-danger);
	color: var(--pnl-danger);
}
.pnl-alert--info {
	background: var(--pnl-brand-soft);
	border: 1px solid var(--pnl-border);
	color: var(--pnl-ink);
}
.pnl-alert--error p {
	margin: 0;
}
.pnl-alert--error p + p {
	margin-top: 0.8rem;
}
/* Focused by the script to bring a failure into view, not for typing. */
.pnl-alert[tabindex="-1"]:focus {
	outline: none;
}
.pnl-alert__title {
	font-weight: 600;
	margin: 0;
}
/* The hold's warning stays in sight under the header while it counts down. */
.pnl-alert--hold {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 1.2rem 1.6rem;
	justify-content: space-between;
	position: sticky;
	top: calc(var(--pnl-header-height) + 0.8rem);
	z-index: 30;
}
.pnl-alert--hold p {
	margin: 0;
}
.pnl-fieldset {
	border: 0;
	margin: 0 0 2rem;
	min-inline-size: 0;
	padding: 0;
}
/* A radio drawn by its label (a chip, a card, a method): the label takes the
   click, and :has(:checked) and :has(:focus-visible) on it draw the state. */
.pnl-chip__input,
.pnl-toggle__option input,
.pnl-method input {
	opacity: 0;
	pointer-events: none;
	position: absolute;
}

/* ---------- the size picker (the prototype's HomeBookingWidget) ---------- */

.pnl-sr {
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}
.pnl-picker {
	max-width: 100%;
	min-width: 0;
	padding-block: 2.4rem;
	touch-action: pan-y;
}
@media (min-width: 64rem) {
	.pnl-picker {
		touch-action: auto;
	}
}
.pnl-picker__top {
	align-items: start;
	display: grid;
	gap: 1.6rem;
}
@media (min-width: 64rem) {
	.pnl-picker__top {
		gap: 2.8rem;
		grid-template-columns: 1fr 1fr;
	}
}
@media (min-width: 80rem) {
	.pnl-picker__top {
		gap: 3.2rem;
	}
}

/* The render on the brand P, between the round buttons. */
.pnl-picker__stage {
	/* The picture's height on a desktop; the round buttons are centred on it. */
	--pnl-figure-h-wide: min(56vh, 480px);
	position: relative;
	width: 100%;
}
@media (min-width: 64rem) {
	.pnl-picker__stage {
		margin-inline: auto;
		max-width: 44.8rem;
	}
}
@media (min-width: 80rem) {
	.pnl-picker__stage {
		max-width: none;
	}
}
.pnl-picker__figure {
	height: min(62vw, 280px);
	margin-inline: auto;
	max-width: 28.8rem;
	position: relative;
	width: 100%;
}
@media (min-width: 40rem) {
	.pnl-picker__figure {
		height: 280px;
		max-width: 32rem;
	}
}
@media (min-width: 64rem) {
	.pnl-picker__figure {
		height: var(--pnl-figure-h-wide);
		max-width: none;
	}
}
.pnl-picker__figure .pnl-p-shape {
	height: 65%;
	left: 50%;
	pointer-events: none;
	position: absolute;
	top: 48%;
	translate: -50% -50%;
	user-select: none;
	width: auto;
}
@media (min-width: 64rem) {
	.pnl-picker__figure .pnl-p-shape {
		height: 72%;
	}
}
.pnl-picker__figure img {
	height: 100%;
	inset: 0 -2%;
	object-fit: contain;
	object-position: bottom;
	position: absolute;
	width: 104%;
}
.pnl-picker__figure img.is-large {
	height: 96%;
	inset: 4% 2% 0;
	width: 96%;
}
.pnl-picker__dims {
	font-size: 1.4rem;
	font-weight: 500;
	line-height: 1.35;
	margin: 0.8rem 0 0;
	position: relative;
	text-align: center;
}
.pnl-picker__disclaimer {
	color: var(--pnl-muted);
	font-size: 1.1rem;
	line-height: 1.35;
	margin: 0.4rem 0 0;
	text-align: center;
}
.pnl-picker__hints {
	color: var(--pnl-muted);
	display: none;
	margin: 0.4rem 0 0;
	text-align: center;
}
@media (min-width: 40rem) {
	.pnl-picker__dims {
		font-size: 1.5rem;
	}
}
@media (min-width: 64rem) {
	.pnl-picker__dims {
		font-size: 1.6rem;
		margin-top: 1.2rem;
	}
	.pnl-picker__disclaimer {
		font-size: 1.2rem;
		margin-top: 0.8rem;
	}
	.pnl-picker__hints {
		display: block;
	}
}

/* Round brand buttons: − and + beside the render, ‹ and › beside the strip. */
.pnl-arrow {
	align-items: center;
	background: var(--pnl-brand);
	border: 0;
	border-radius: var(--pnl-pill);
	color: var(--pnl-white);
	cursor: pointer;
	display: none;
	flex: none;
	height: 3.6rem;
	justify-content: center;
	padding: 0;
	transition: background-color 0.15s, color 0.15s;
	width: 3.6rem;
	z-index: 2;
}
.pnl-picker.is-live .pnl-arrow {
	display: inline-flex;
}
.pnl-arrow:hover {
	background: var(--pnl-brand-dark);
	color: var(--pnl-white);
}
.pnl-arrow:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
@media (min-width: 64rem) {
	.pnl-arrow {
		height: 4.4rem;
		width: 4.4rem;
	}
}
.pnl-picker__stage > .pnl-arrow {
	position: absolute;
	top: min(24vw, 100px);
	translate: 0 -50%;
}
.pnl-picker__stage > .pnl-arrow--prev {
	left: 0;
}
.pnl-picker__stage > .pnl-arrow--next {
	right: 0;
}
@media (min-width: 40rem) {
	.pnl-picker__stage > .pnl-arrow {
		top: 110px;
	}
}
@media (min-width: 64rem) {
	.pnl-picker__stage > .pnl-arrow {
		top: calc(var(--pnl-figure-h-wide) / 2);
	}
}
@media (min-width: 80rem) {
	.pnl-picker__stage > .pnl-arrow--prev {
		left: -0.5rem;
	}
	.pnl-picker__stage > .pnl-arrow--next {
		right: -0.5rem;
	}
}

/* What was chosen: badge, the big size, the stock line. */
.pnl-picker__panel {
	display: flex;
	flex-direction: column;
	min-width: 0;
}
.pnl-picker__heading {
	font-size: 1.4rem;
	font-weight: 400;
	margin: 0;
}
.pnl-picker__heading--hero {
	display: none;
}
@media (min-width: 64rem) {
	.pnl-picker__heading {
		font-size: 1.7rem;
	}
	.pnl-picker__heading--hero {
		display: block;
	}
}
.pnl-picker__what {
	margin-top: 0.8rem;
}
.pnl-badge {
	background: var(--pnl-accent);
	border-radius: var(--pnl-radius-sm);
	color: var(--pnl-white);
	display: inline-flex;
	font-size: 1.1rem;
	font-weight: 500;
	margin: 0 0 0.4rem;
	padding: 0.2rem 0.8rem;
	position: relative;
}
.pnl-badge::after {
	background: inherit;
	content: "";
	height: 1.2rem;
	left: 2rem;
	/* Half the square: the diamond's centre on the badge's edge, so only the
	   lower point shows (the prototype's -mt-1.5, 6 px). */
	margin-top: -0.6rem;
	position: absolute;
	rotate: 45deg;
	top: 100%;
	width: 1.2rem;
}
.pnl-picker__size {
	color: var(--pnl-accent);
	font-family: var(--pnl-font-heading);
	font-size: 4.4rem;
	font-weight: 400;
	line-height: 1;
	margin: 0.4rem 0 0.4rem;
}
.pnl-picker__size.is-compact {
	font-size: 3.76rem;
}
.pnl-picker__size sup,
.pnl-size__label sup {
	font-size: 0.65em;
	line-height: 0;
}
.pnl-picker__stock {
	color: var(--pnl-muted);
	font-size: 1.4rem;
	font-weight: 600;
	margin: 0;
}
.pnl-picker__stock.is-low {
	color: var(--pnl-danger);
}
@media (min-width: 40rem) {
	.pnl-badge {
		font-size: 1.2rem;
	}
}
@media (min-width: 64rem) {
	.pnl-picker__what {
		margin-top: 1.2rem;
	}
	.pnl-badge {
		font-size: 1.4rem;
		margin-bottom: 0.8rem;
		padding: 0.4rem 1rem;
	}
	.pnl-picker__size {
		font-size: 6.4rem;
		margin-top: 0.6rem;
	}
	.pnl-picker__size.is-compact {
		font-size: 5.2rem;
	}
	.pnl-picker__stock {
		font-size: 1.6rem;
	}
}
@media (min-width: 80rem) {
	.pnl-picker__size {
		font-size: 7.2rem;
	}
}

/* Location chips: green where the size is free, and pulsing until one is picked. */
.pnl-picker__locations {
	margin: 0.8rem 0 0;
}
.pnl-picker__label {
	font-size: 1.4rem;
	font-weight: 600;
	margin-bottom: 0.6rem;
	padding: 0;
}
.pnl-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}
.pnl-chip {
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-sm);
	color: var(--pnl-ink-soft);
	cursor: pointer;
	font-size: 1.4rem;
	font-weight: 500;
	padding: 0.8rem 1.2rem;
	position: relative;
}
.pnl-chip:hover {
	border-color: var(--pnl-ink-soft);
}
.pnl-chip:has(:checked) {
	background: var(--pnl-surface);
	border-color: var(--pnl-ink-soft);
}
.pnl-chip.has-stock {
	background: var(--pnl-brand-soft);
	border-color: var(--pnl-brand);
	color: var(--pnl-ink);
}
.pnl-chip.has-stock:hover,
.pnl-chip.has-stock:has(:checked) {
	background: var(--pnl-brand);
}
.pnl-chip.has-stock:has(:checked) {
	border-color: var(--pnl-brand-dark);
}
.pnl-chip:has(:focus-visible) {
	box-shadow: var(--pnl-ring);
}
@media (min-width: 64rem) {
	.pnl-picker__locations {
		margin-top: 1.2rem;
	}
	.pnl-picker__label {
		margin-bottom: 0.8rem;
	}
	.pnl-chips {
		gap: 0.8rem;
	}
}

/* Contract cards, once a location is chosen. */
.pnl-picker__contracts {
	display: grid;
	gap: 0.6rem;
	margin: 0.8rem 0 0;
}
.pnl-contract {
	align-items: center;
	background: var(--pnl-surface-sunk);
	border: 2px solid var(--pnl-border);
	border-radius: var(--pnl-radius-sm);
	cursor: pointer;
	display: flex;
	gap: 0.8rem;
	justify-content: space-between;
	padding: 0.8rem 1rem;
	position: relative;
}
.pnl-contract:hover {
	border-color: var(--pnl-ink-soft);
}
.pnl-contract:has(:checked) {
	background: var(--pnl-brand);
	border-color: var(--pnl-brand-dark);
	box-shadow: 0 2px 0 color-mix(in srgb, var(--pnl-ink) 8%, transparent);
}
.pnl-contract:has(:focus-visible) {
	box-shadow: var(--pnl-ring);
}
.pnl-contract__dot {
	align-self: flex-start;
	background: var(--pnl-white);
	border: 2px solid var(--pnl-muted);
	border-radius: var(--pnl-pill);
	display: grid;
	flex: none;
	height: 1.6rem;
	margin-top: 0.2rem;
	place-items: center;
	width: 1.6rem;
}
.pnl-contract:has(:checked) .pnl-contract__dot {
	border-color: var(--pnl-ink);
}
.pnl-contract:has(:checked) .pnl-contract__dot::after {
	background: var(--pnl-ink);
	border-radius: var(--pnl-pill);
	content: "";
	height: 0.8rem;
	width: 0.8rem;
}
.pnl-contract__text {
	display: flex;
	flex: 1;
	flex-direction: column;
	min-width: 0;
}
.pnl-contract__title {
	align-items: center;
	display: flex;
	font-size: 1.4rem;
	font-weight: 700;
	gap: 0.6rem;
	text-transform: uppercase;
}
.pnl-contract__hint {
	color: var(--pnl-ink-soft);
	font-size: 1.2rem;
	margin-top: 0.4rem;
}
.pnl-contract__price {
	align-items: center;
	display: flex;
	flex: none;
	gap: 0.4rem;
}
.pnl-contract__amount {
	font-size: 2rem;
	font-weight: 700;
}
.pnl-contract__per {
	display: flex;
	flex-direction: column;
	font-size: 1.2rem;
	line-height: 1.2;
}
.pnl-contract__per s {
	color: var(--pnl-danger);
}
.pnl-contract:has(:checked) .pnl-contract__per s {
	color: color-mix(in srgb, var(--pnl-ink) 70%, transparent);
}
@media (min-width: 64rem) {
	.pnl-picker__contracts {
		gap: 0.8rem;
		margin-top: 1.2rem;
	}
	.pnl-contract {
		gap: 1.2rem;
		padding: 1rem 1.2rem;
	}
	.pnl-contract__dot {
		height: 2rem;
		margin-top: 0.4rem;
		width: 2rem;
	}
	.pnl-contract:has(:checked) .pnl-contract__dot::after {
		height: 1rem;
		width: 1rem;
	}
	.pnl-contract__title {
		font-size: 1.8rem;
	}
	.pnl-contract__hint {
		color: var(--pnl-ink);
		font-size: 1.4rem;
	}
	.pnl-contract__price {
		gap: 0.6rem;
	}
	.pnl-contract__amount {
		font-size: 3rem;
	}
	.pnl-contract__per {
		font-size: 1.4rem;
	}
}

.pnl-picker__cta {
	background: var(--pnl-brand);
	border: 0;
	border-radius: var(--pnl-radius-md);
	color: var(--pnl-ink);
	cursor: pointer;
	font: inherit;
	font-size: 1.6rem;
	font-weight: 700;
	margin-top: 0.8rem;
	padding: 1rem 1.6rem;
	transition: background-color 0.15s, color 0.15s;
	width: 100%;
}
.pnl-picker__cta:hover:not(:disabled) {
	background: var(--pnl-accent);
	color: var(--pnl-white);
}
.pnl-picker__cta:disabled {
	cursor: not-allowed;
	opacity: 0.4;
}
.pnl-picker__cta:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
@media (min-width: 64rem) {
	.pnl-picker__cta {
		font-size: 2rem;
		margin-top: 1.6rem;
		padding-block: 1.4rem;
	}
}
.pnl-picker__note {
	color: var(--pnl-ink-soft);
	font-size: 1.4rem;
	margin: 1.2rem 0 0;
	text-align: center;
}
.pnl-picker__note a {
	color: var(--pnl-accent);
	font-weight: 600;
	text-decoration: none;
	text-underline-offset: 2px;
}
.pnl-picker__note a:hover {
	text-decoration: underline;
}

/* The size strip: every size, scrolling sideways, fading at the edges. */
.pnl-strip {
	margin: 1.6rem 0 0;
}
.pnl-strip__label {
	display: none;
}
@media (min-width: 64rem) {
	.pnl-strip {
		margin-top: 2.8rem;
	}
	.pnl-strip__label {
		display: block;
	}
}
.pnl-strip__row {
	align-items: center;
	display: flex;
	gap: 0.8rem;
}
/* contain: the cards must not count towards any ancestor's min-content
   width, or the wizard's grid column grows to the whole strip and the page
   scrolls sideways. */
.pnl-strip__viewport {
	contain: inline-size;
	flex: 1;
	min-width: 0;
	position: relative;
}
.pnl-strip__viewport::before,
.pnl-strip__viewport::after {
	content: "";
	inset-block: 0;
	pointer-events: none;
	position: absolute;
	width: 4rem;
	z-index: 1;
}
.pnl-strip__viewport::before {
	background: linear-gradient(to right, var(--pnl-white), transparent);
	left: 0;
}
.pnl-strip__viewport::after {
	background: linear-gradient(to left, var(--pnl-white), transparent);
	right: 0;
}
.pnl-strip__track {
	display: flex;
	gap: 0.8rem;
	overflow-x: auto;
	padding-bottom: 0.4rem;
	position: relative;
	scrollbar-width: none;
}
.pnl-strip__track::-webkit-scrollbar {
	display: none;
}
.pnl-size {
	background: var(--pnl-surface);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-sm);
	cursor: pointer;
	display: flex;
	flex: none;
	flex-direction: column;
	min-width: 10rem;
	padding: 0.6rem 0.8rem;
	position: relative;
}
.pnl-size:hover {
	border-color: var(--color-ink);
}
/* Checked is 2px of brand-dark (3:1), drawn inside so nothing moves. */
.pnl-size:has(:checked) {
	background: var(--pnl-brand-soft) !important;
	border-color: var(--pnl-brand-dark) !important;
	/* box-shadow: inset 0 0 0 1px var(--pnl-brand-dark); */
}
.pnl-size:has(:focus-visible) {
	box-shadow: var(--pnl-ring);
}
.pnl-size:has(:checked:focus-visible) {
	box-shadow: inset 0 0 0 1px var(--pnl-brand-dark), var(--pnl-ring);
}
/* None free: said by its stock line and a dashed edge, not by fading the
   text (at 70% the muted lines were 2.7:1). */
.pnl-size.is-none {
	border-style: dashed;
}
.pnl-size__label {
	font-size: 1.4rem;
	font-weight: 700;
	white-space: nowrap;
}
.pnl-size__for,
.pnl-size__from {
	display: none;
}
.pnl-size__for {
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	color: var(--pnl-muted);
	font-size: 1.2rem;
	line-height: 1.35;
	margin-top: 0.2rem;
	max-width: 14.4rem;
	overflow: hidden;
}
.pnl-size__from {
	color: var(--pnl-brand-text);
	font-size: 1.2rem;
	font-weight: 600;
	margin-top: 0.4rem;
	white-space: nowrap;
}
.pnl-size__stock {
	font-size: 1.1rem;
	font-weight: 600;
	line-height: 1;
	margin-top: 0.4rem;
	white-space: nowrap;
}
.pnl-size.is-ok .pnl-size__stock {
	color: var(--pnl-success);
}
.pnl-size.is-last .pnl-size__stock {
	color: var(--pnl-danger);
}
.pnl-size.is-none .pnl-size__stock {
	color: var(--pnl-muted);
}
@media (min-width: 64rem) {
	.pnl-strip__track {
		gap: 1rem;
	}
	.pnl-size {
		min-width: 12.4rem;
		padding: 0.8rem 1rem;
	}
	.pnl-size__label {
		font-size: 1.8rem;
	}
	.pnl-size__for {
		display: -webkit-box;
	}
	.pnl-size__from {
		display: block;
	}
	.pnl-size__stock {
		font-size: 1.2rem;
	}
}

/*
 * The ring is a layer that fades, not an animated box-shadow: a shadow is
 * painted again every frame, for as long as no location is chosen (300
 * style recalculations and 50 ms of the main thread in 5 idle seconds on
 * the front page). Opacity and transform stay on the compositor.
 */
.pnl-chip.is-nudge::after {
	border-radius: inherit;
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--pnl-accent) 18%, transparent);
	content: "";
	inset: 0;
	opacity: 0;
	pointer-events: none;
	position: absolute;
}
@media (prefers-reduced-motion: no-preference) {
	.pnl-chip.is-nudge::after {
		animation: pnl-nudge-ring 1.6s ease-in-out 3;
	}
	.pnl-chip.is-nudge {
		animation: pnl-nudge 1.6s ease-in-out 3;
	}
	.pnl-strip__track {
		scroll-behavior: smooth;
	}
}

/* ---------- the wizard ---------- */

/* Signing methods and the private/business toggle: options as cards. */
.pnl-method,
.pnl-toggle__option {
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-sm);
	cursor: pointer;
	display: flex;
	flex-direction: column;
	padding: 1rem 1.4rem;
	position: relative;
}
.pnl-method:has(:checked),
.pnl-toggle__option:has(:checked) {
	background: var(--pnl-brand-soft);
	border-color: var(--pnl-brand-dark);
}
.pnl-method:has(:focus-visible),
.pnl-toggle__option:has(:focus-visible) {
	box-shadow: var(--pnl-ring);
}
.pnl-method__title {
	font-weight: 600;
}
.pnl-method__hint {
	color: var(--pnl-muted);
	font-size: 1.4rem;
}

.pnl-wizard {
	padding-block: 2.4rem 6.4rem;
}
@media (min-width: 48rem) {
	.pnl-wizard {
		padding-block: 4rem 6.4rem;
	}
}
.pnl-wizard__top {
	display: flex;
	flex-direction: column;
	gap: 1.2rem;
	margin-bottom: 2.4rem;
}
@media (min-width: 40rem) {
	.pnl-wizard__top {
		align-items: center;
		flex-direction: row;
		flex-wrap: wrap;
		justify-content: space-between;
	}
}
/*
 * The steps wrap rather than scroll. A scroller hid the last step at phone
 * width, and on step 1, where every button is disabled, nothing in it could
 * take focus, so a keyboard could not scroll it (axe's
 * scrollable-region-focusable). Beside the hold, from 40rem, the nav kept
 * its content's width as a flex item (min-width: auto), so the list never
 * scrolled at all and widened the page up to about 850px.
 */
.pnl-stepper {
	min-width: 0;
}
.pnl-stepper ol {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	list-style: none;
	margin: 0;
	padding: 0;
}
.pnl-stepper__button {
	align-items: center;
	background: none;
	border: 0;
	border-radius: var(--pnl-pill);
	color: var(--pnl-muted);
	cursor: pointer;
	display: flex;
	font: inherit;
	font-size: 1.2rem;
	font-weight: 500;
	gap: 0.8rem;
	min-height: 4.4rem;
	padding: 0 1.2rem;
	white-space: nowrap;
}
.pnl-stepper__button:disabled {
	cursor: default;
}
.pnl-stepper__button:not(:disabled):hover {
	background: var(--pnl-surface);
}
.pnl-stepper__button:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
.pnl-stepper__number {
	align-items: center;
	background: var(--pnl-border);
	border-radius: var(--pnl-pill);
	color: var(--pnl-muted);
	display: inline-flex;
	font-size: 1.1rem;
	font-weight: 700;
	height: 2.4rem;
	justify-content: center;
	width: 2.4rem;
}
.pnl-stepper__item.is-done .pnl-stepper__button {
	color: var(--pnl-ink-soft);
}
.pnl-stepper__item.is-current .pnl-stepper__button {
	background: var(--pnl-brand-soft);
	color: var(--pnl-ink);
}
.pnl-stepper__item.is-current .pnl-stepper__number,
.pnl-stepper__item.is-done .pnl-stepper__number {
	background: var(--pnl-brand-dark);
	color: var(--pnl-white);
}
/* The labels from where all eight fit on one row with them (about 850px). */
@media (max-width: 52.99rem) {
	.pnl-stepper__label {
		display: none;
	}
}
/* Numbers only, tight enough for all eight on one row at 320px. */
@media (max-width: 39.99rem) {
	.pnl-stepper__button {
		padding: 0 0.6rem;
	}
}
.pnl-hold {
	align-items: center;
	background: var(--pnl-brand);
	border: 1px solid var(--pnl-brand-dark);
	border-radius: var(--pnl-pill);
	display: inline-flex;
	flex-shrink: 0;
	font-size: 1.4rem;
	font-variant-numeric: tabular-nums;
	font-weight: 500;
	gap: 1rem;
	justify-content: center;
	padding: 0.8rem 1.6rem;
	white-space: nowrap;
}
.pnl-hold__icon {
	flex-shrink: 0;
}
.pnl-wizard__grid {
	display: grid;
	gap: 2.4rem;
}
@media (min-width: 64rem) {
	.pnl-wizard__grid {
		gap: 3.2rem;
	}
	.pnl-wizard__grid.has-rail {
		grid-template-columns: minmax(0, 1fr) 38rem;
	}
	.pnl-wizard__grid.has-rail.is-unit-step {
		grid-template-columns: minmax(0, 1fr) minmax(24rem, 28rem);
	}
	.pnl-wizard__grid.has-rail.is-review-step {
		grid-template-columns: minmax(0, 1fr) minmax(26rem, 30rem);
	}
	/* On a wide screen "Jätka" is in the summary; below, under the step. */
	.pnl-actions--narrow {
		display: none;
	}
}

/* ---------- the summary (BookingSummaryRail.tsx) ---------- */

.pnl-rail {
	align-self: start;
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius);
	box-shadow: var(--pnl-shadow-md);
	display: grid;
	gap: 1.6rem;
	padding: 2.4rem;
}
@media (min-width: 64rem) {
	.pnl-rail {
		position: sticky;
		top: calc(var(--pnl-header-height) + 2rem);
	}
}
.pnl-rail__title {
	font-size: 1.8rem;
	font-weight: 600;
	margin: 0;
}
.pnl-rail__product {
	border-bottom: 1px solid var(--pnl-border);
	display: flex;
	gap: 1.2rem;
	padding-bottom: 1.6rem;
}
.pnl-rail__picture {
	background: var(--pnl-surface);
	border-radius: var(--pnl-radius-md);
	flex-shrink: 0;
	height: 6.4rem;
	overflow: hidden;
	width: 6.4rem;
}
.pnl-rail__picture img {
	height: 100%;
	object-fit: contain;
	padding: 0.4rem;
	width: 100%;
}
.pnl-rail__what {
	color: var(--pnl-muted);
	display: flex;
	flex-direction: column;
	font-size: 1.4rem;
	min-width: 0;
}
.pnl-rail__what strong {
	color: var(--pnl-ink);
	font-size: 1.6rem;
	font-weight: 600;
}
.pnl-rail__empty {
	border-bottom: 1px solid var(--pnl-border);
	color: var(--pnl-muted);
	font-size: 1.4rem;
	margin: 0;
	padding-bottom: 1.6rem;
}
.pnl-rail__lines {
	display: grid;
	font-size: 1.4rem;
	gap: 1.2rem;
	margin: 0;
}
.pnl-rail__lines > div {
	display: flex;
	gap: 1.2rem;
	justify-content: space-between;
}
.pnl-rail__lines dt {
	align-items: center;
	color: var(--pnl-muted);
	display: inline-flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}
.pnl-rail__lines dd {
	font-weight: 500;
	margin: 0;
	text-align: right;
	white-space: nowrap;
}
.pnl-rail__lines dd small {
	color: var(--pnl-muted);
	display: block;
	font-size: 1.2rem;
	font-weight: 400;
	margin-top: 0.2rem;
}
.pnl-service__note {
	color: var(--pnl-muted);
	font-size: 1.3rem;
	margin: 0.6rem 0 0;
}
/* The rent's full price beside what is paid, when a code took some off. */
.pnl-rail__lines dd s,
.pnl-due__lines dd s {
	color: var(--pnl-muted);
	font-weight: 400;
	margin-right: 0.4rem;
}
.pnl-promo {
	border-top: 1px solid var(--pnl-border);
	display: grid;
	font-size: 1.4rem;
	gap: 0.8rem;
	padding-top: 1.6rem;
}
.pnl-promo__form {
	display: grid;
	gap: 0.6rem;
	margin: 0;
}
.pnl-promo__label {
	color: var(--pnl-muted);
}
.pnl-promo__row {
	display: flex;
	gap: 0.8rem;
}
.pnl-promo__row .pnl-input {
	flex: 1;
	min-width: 0;
	text-transform: uppercase;
}
.pnl-promo__applied {
	align-items: baseline;
	color: var(--pnl-success);
	display: flex;
	flex-wrap: wrap;
	font-weight: 600;
	gap: 0.4rem 1.2rem;
	justify-content: space-between;
	margin: 0;
}
.pnl-rail__total {
	align-items: flex-end;
	border-top: 1px solid var(--pnl-border);
	display: flex;
	gap: 1.2rem;
	justify-content: space-between;
	padding-top: 1.6rem;
}
.pnl-rail__total-label {
	font-size: 2rem;
	font-weight: 700;
	margin: 0;
}
.pnl-rail__total strong {
	font-size: 2.4rem;
	font-weight: 700;
	white-space: nowrap;
}
.pnl-rail__monthly {
	color: var(--pnl-muted);
	font-size: 1.2rem;
	margin: 0;
}
.pnl-rail__cta {
	width: 100%;
}
.pnl-rail__body {
	display: grid;
	gap: 1.6rem;
}
.pnl-rail__toggle {
	display: none;
}
/*
 * Below the wide layout the summary is a drawer fixed to the bottom of the
 * screen: the total, "Jätka", and the rest on a tap (the prototype's
 * BookingSummaryRailMobile).
 */
@media (max-width: 63.99rem) {
	.pnl-wizard__grid.has-rail {
		padding-bottom: 17.6rem;
	}
	.pnl-rail {
		border: 0;
		border-radius: 0;
		border-top: 1px solid var(--pnl-border);
		bottom: 0;
		box-shadow: var(--pnl-shadow-up);
		gap: 0;
		left: 0;
		padding: 0;
		position: fixed;
		right: 0;
		z-index: 40;
	}
	.pnl-rail__toggle {
		align-items: center;
		background: none;
		border: 0;
		color: inherit;
		cursor: pointer;
		display: flex;
		font: inherit;
		justify-content: space-between;
		padding: 1.2rem 1.6rem;
		text-align: left;
		width: 100%;
	}
	.pnl-rail__toggle small {
		color: var(--pnl-muted);
		display: block;
		font-size: 1.2rem;
	}
	.pnl-rail__toggle strong {
		font-size: 1.8rem;
		font-weight: 700;
	}
	.pnl-rail__toggle svg {
		color: var(--pnl-muted);
		transition: transform 0.15s;
	}
	.pnl-rail.is-open .pnl-rail__toggle svg {
		transform: rotate(180deg);
	}
	.pnl-rail__body {
		display: none;
	}
	.pnl-rail.is-open .pnl-rail__body {
		border-top: 1px solid var(--pnl-border);
		display: grid;
		max-height: 55svh;
		overflow-y: auto;
		padding: 1.6rem;
	}
	.pnl-rail__title {
		display: none;
	}
	.pnl-rail__cta {
		border-radius: var(--pnl-radius-md);
		margin: 0 1.6rem 1.2rem;
		width: calc(100% - 3.2rem);
	}
	/* The fixed summary is over the page's foot: a field the keyboard
	   moves to is scrolled clear of it (WCAG 2.4.11). */
	html:has(.pnl-wizard__grid.has-rail) {
		scroll-padding-bottom: 16rem;
	}
	/* Back is at the bottom on a phone, as a button, where there is one. */
	.pnl-step:has(.pnl-actions--narrow) .pnl-back {
		display: none;
	}
}

/* ---------- the unit step (UnitStep.tsx) ---------- */

.pnl-step-title {
	align-items: baseline;
	display: flex;
	font-family: var(--pnl-font-heading);
	font-size: 2.4rem;
	font-weight: 400;
	gap: 1rem;
	letter-spacing: -0.01em;
	margin: 0;
}
.pnl-step-title > span {
	/* Brand green is never small text on white: its dark text shade is. */
	color: var(--pnl-brand-text);
}
.pnl-step-title label {
	cursor: inherit;
}
.pnl-step-title + .pnl-help {
	margin: 0.4rem 0 2rem;
}
@media (min-width: 48rem) {
	.pnl-wizard .pnl-card {
		padding: 2.4rem;
	}
}

.pnl-floors {
	display: flex;
	flex-wrap: wrap;
	gap: 0.8rem;
	margin-bottom: 1.2rem;
}
.pnl-floor {
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-pill);
	color: var(--pnl-ink-soft);
	cursor: pointer;
	font: inherit;
	font-size: 1.4rem;
	padding: 0.8rem 1.2rem;
}
.pnl-floor strong {
	font-weight: 600;
}
.pnl-floor span {
	font-weight: 500;
	margin-left: 0.6rem;
	opacity: 0.8;
}
.pnl-floor.is-active {
	background: var(--pnl-brand);
	border-color: var(--pnl-brand-dark);
	color: var(--pnl-ink);
}
/* Faded ink on the brand green falls short of 4.5:1 (3.65). */
.pnl-floor.is-active span {
	opacity: 1;
}
.pnl-floor:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}

/* The plan: FloorPlanMap's colours. */
/*
 * The room the floors, the plan and the unit cards will take, kept while
 * they load: one row of cards, or the plan's own shape (from the wizard's
 * plan summary) with its floor tabs and legend. Without it the step grew
 * by the whole plan once it came (CLS 0.3 on the unit step alone).
 */
.pnl-choice {
	/* The tallest a plan is drawn upright: the room kept while it loads too. */
	--pnl-plan-max: min(88svh, 820px);
	position: relative;
}
.pnl-choice__loading {
	left: 0;
	position: absolute;
	top: 0;
}
.pnl-choice.is-loading::before {
	content: "";
	display: block;
	min-height: 14.4rem;
}
.pnl-choice.is-loading.has-plan::before {
	aspect-ratio: var(--pnl-plan-w) / var(--pnl-plan-h);
	margin-bottom: 24rem;
	max-height: var(--pnl-plan-max);
	min-height: 0;
	width: 100%;
}
@media (min-width: 48rem) {
	.pnl-choice.is-loading.has-plan::before {
		aspect-ratio: var(--pnl-plan-h) / var(--pnl-plan-w);
		margin-bottom: 10.4rem;
		max-height: none;
	}
}
/* Shown a frame before drawPlan has drawn it: the plan keeps its own room. */
.pnl-choice.has-plan .pnl-plan__map:empty {
	aspect-ratio: var(--pnl-plan-w) / var(--pnl-plan-h);
	max-height: var(--pnl-plan-max);
}
@media (min-width: 48rem) {
	.pnl-choice.has-plan .pnl-plan__map:empty {
		aspect-ratio: var(--pnl-plan-h) / var(--pnl-plan-w);
		max-height: none;
	}
}
.pnl-plan {
	/* FloorPlanMap's colours: the boxes and the legend's keys both draw
	   from these, so a key always matches its box. */
	--pnl-plan-taken: #e4e6df;
	--pnl-plan-taken-line: #b8bdb0;
	--pnl-plan-same: #d4e99a;
	--pnl-plan-same-hover: #c5e07a;
	--pnl-plan-same-line: var(--pnl-brand);
	--pnl-plan-other: var(--pnl-accent-soft);
	--pnl-plan-other-hover: #d5e4f7;
	--pnl-plan-other-line: #7ba3d4;
	--pnl-plan-selected: var(--pnl-brand);
	--pnl-plan-selected-line: #6f9000;
	/* The ground under the drawing: a third of the way from white to the
	   border, #f3f4f0 on Panila's colours. */
	--pnl-plan-ground: color-mix(in srgb, var(--pnl-border) 33%, var(--pnl-white));
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	margin-bottom: 1.2rem;
}
.pnl-plan__map {
	background: var(--pnl-plan-ground);
	border-radius: var(--pnl-radius-md) var(--pnl-radius-md) 0 0;
	padding: 0.4rem;
	position: relative;
}
@media (min-width: 40rem) {
	.pnl-plan__map {
		padding: 0.6rem;
	}
}
.pnl-plan__map svg {
	display: block;
	height: auto;
	margin-inline: auto;
	max-height: var(--pnl-plan-max);
	width: 100%;
}
@media (min-width: 48rem) {
	.pnl-plan__map svg {
		max-height: none;
	}
}
.pnl-plan__base .fp-base {
	fill: #9a9a9a;
}
.pnl-plan__base .fp-base-line {
	fill: none;
	stroke: #6e6e6e;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 0.72;
}
.pnl-box rect {
	fill: var(--pnl-plan-taken);
	fill-opacity: 0.85;
	stroke: var(--pnl-plan-taken-line);
	stroke-width: 0.55;
	transition: fill 0.15s, stroke-width 0.15s;
}
.pnl-box text {
	dominant-baseline: central;
	fill: var(--pnl-muted);
	font-family: var(--pnl-font-body);
	pointer-events: none;
	text-anchor: middle;
}
.pnl-box--same,
.pnl-box--other,
.pnl-box--selected {
	cursor: pointer;
	outline: none;
}
.pnl-box--same rect {
	fill: var(--pnl-plan-same);
	fill-opacity: 0.98;
	stroke: var(--pnl-plan-same-line);
	stroke-width: 0.9;
}
.pnl-box--same:is(:hover, :focus-visible) rect {
	fill: var(--pnl-plan-same-hover);
	stroke-width: 1.4;
}
.pnl-box--same text {
	fill: var(--pnl-ink-soft);
}
.pnl-box--other rect {
	fill: var(--pnl-plan-other);
	fill-opacity: 0.98;
	stroke: var(--pnl-plan-other-line);
	stroke-width: 0.9;
}
.pnl-box--other:is(:hover, :focus-visible) rect {
	fill: var(--pnl-plan-other-hover);
	stroke-width: 1.2;
}
.pnl-box--other text {
	fill: var(--pnl-accent);
}
.pnl-box--selected rect {
	fill: var(--pnl-plan-selected);
	fill-opacity: 1;
	stroke: var(--pnl-plan-selected-line);
	stroke-width: 1.6;
}
/* Ink on the brand's green is 8.8:1; white was 1.95. */
.pnl-box--selected text {
	fill: var(--pnl-ink);
}
/* The box under the keyboard: a dark edge, beside the chosen box's ring. */
.pnl-box:focus-visible rect {
	stroke: var(--pnl-ink);
	stroke-width: 2;
}
/* A free box is a link now (FloorPlanSvg draws <a href="#ladu-…">), so the
   theme's link rules reach it: no underline or weight on its number, and
   no link outline or ring on focus, where the dark edge above is the mark.
   Scoped to .pnl-plan so it outweighs the theme's content `a` rules. */
.pnl-plan a.pnl-box {
	font-weight: inherit;
	text-decoration: none;
}
.pnl-plan a.pnl-box:is(:focus, :focus-visible) {
	box-shadow: none;
	outline: none;
}
/* Taken is hatched (the pattern planMarkup() defines, and the legend's
   key), not only greyer: free and taken fills are 1.05:1 apart. */
.pnl-box--taken rect {
	fill: url(#pnl-plan-taken);
	fill-opacity: 1;
}
.pnl-plan__hatch-ground {
	fill: var(--pnl-plan-taken);
}
.pnl-plan__hatch-line {
	stroke: var(--pnl-plan-taken-line);
	stroke-width: 1;
}
.pnl-box__ring {
	fill: none;
	pointer-events: none;
	stroke: var(--pnl-accent);
	stroke-width: 2.4;
}
@media (prefers-reduced-motion: no-preference) {
	.pnl-box__ring {
		animation: pnl-ring 1.45s ease-in-out 3;
	}
}
.pnl-amenity {
	pointer-events: none;
}
.pnl-amenity__dot {
	fill: var(--pnl-accent);
}
.pnl-amenity__arrow {
	fill: none;
	stroke: var(--pnl-white);
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: 2.2;
}
.pnl-amenity__label {
	dominant-baseline: central;
	fill: var(--pnl-accent);
	font-family: var(--pnl-font-body);
	font-weight: 700;
	letter-spacing: 0.02em;
	text-anchor: middle;
}
.pnl-amenity__label[dominant-baseline] {
	dominant-baseline: hanging;
}

.pnl-plan__card {
	background: var(--pnl-brand-soft);
	border: 1px solid var(--pnl-brand-dark);
	border-radius: var(--pnl-radius-md);
	box-shadow: var(--pnl-shadow-md);
	display: flex;
	gap: 1.2rem;
	padding: 1rem;
	pointer-events: none;
	position: absolute;
	translate: 0 -100%;
	width: min(28.8rem, calc(100vw - 3.2rem));
	z-index: 3;
}
.pnl-plan__card img {
	flex: none;
	height: 5.6rem;
	object-fit: contain;
	width: 5.6rem;
}
/* :where(), so the card's own classes below set their margins. */
.pnl-plan__card :where(p, ul) {
	margin: 0;
}
.pnl-plan__card-title {
	font-size: 1.4rem;
	line-height: 1.25;
}
.pnl-plan__card-dims {
	color: var(--pnl-muted);
	font-size: 1.1rem;
	margin-top: 0.6rem;
}
.pnl-plan__card ul {
	color: var(--pnl-muted);
	font-size: 1.1rem;
	list-style: none;
	margin-top: 0.8rem;
	padding: 0;
}
.pnl-plan__card strong {
	color: var(--pnl-ink);
}
.pnl-plan__close {
	align-items: center;
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-pill);
	cursor: pointer;
	display: flex;
	height: 2.8rem;
	justify-content: center;
	pointer-events: auto;
	position: absolute;
	right: -0.5rem;
	top: -0.5rem;
	width: 2.8rem;
}
@media (hover: hover) {
	.pnl-plan__close {
		display: none;
	}
}
.pnl-plan__legend {
	border-top: 1px solid var(--pnl-border);
	color: var(--pnl-ink-soft);
	display: flex;
	flex-wrap: wrap;
	font-size: 1.4rem;
	gap: 1.2rem 2rem;
	list-style: none;
	margin: 0;
	padding: 1.2rem 1.6rem;
}
.pnl-plan__legend li {
	align-items: center;
	display: inline-flex;
	gap: 1rem;
}
.pnl-plan__key {
	border: 1px solid;
	height: 1.6rem;
	width: 2.4rem;
}
.pnl-plan__key--selected {
	background: var(--pnl-plan-selected);
	border: 2px solid var(--pnl-plan-selected);
	box-shadow: 0 0 1.5px rgba(0, 0, 0, 0.28), inset 0 0 6px rgba(0, 0, 0, 0.5);
	height: 2rem;
	width: 2.8rem;
}
.pnl-plan__key--same {
	background: var(--pnl-plan-same);
	border-color: var(--pnl-plan-same-line);
}
.pnl-plan__key--other {
	background: var(--pnl-plan-other);
	border-color: var(--pnl-plan-other-line);
}
.pnl-plan__key--taken {
	background: repeating-linear-gradient(-45deg, var(--pnl-plan-taken) 0 3px, var(--pnl-plan-taken-line) 3px 4px);
	border-color: var(--pnl-plan-taken-line);
}

/* Unit cards, where a site has no plan. */
.pnl-units {
	border: 0;
	display: grid;
	gap: 0.8rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin: 0;
	min-inline-size: 0;
	padding: 0;
}
@media (min-width: 64rem) {
	.pnl-units {
		gap: 1.2rem;
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
.pnl-unit {
	align-items: center;
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius);
	color: inherit;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	font: inherit;
	gap: 0.8rem;
	padding: 1rem;
	position: relative;
	text-align: left;
}
@media (min-width: 40rem) {
	.pnl-unit {
		align-items: flex-start;
		flex-direction: row;
		gap: 1.2rem;
		padding: 1.2rem;
	}
}
.pnl-unit:hover {
	border-color: var(--pnl-brand);
}
.pnl-unit.is-selected {
	background: var(--pnl-brand-soft);
	border-color: var(--pnl-brand-dark);
}
.pnl-unit:has(:focus-visible) {
	box-shadow: var(--pnl-ring);
}
.pnl-unit__img {
	flex: none;
	height: 6.4rem;
	object-fit: contain;
	padding: 0.4rem;
	width: 6.4rem;
}
@media (min-width: 40rem) {
	.pnl-unit__img {
		height: 8rem;
		width: 8rem;
	}
}
.pnl-unit__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
}
.pnl-unit__number {
	font-size: 1.4rem;
	font-weight: 700;
}
.pnl-unit__meta {
	color: var(--pnl-muted);
	font-size: 1.2rem;
	margin-top: 0.2rem;
}

.pnl-date {
	box-sizing: border-box;
	height: 4.8rem;
	max-width: 100%;
	width: 100%;
}

/* How long: the two contracts, as the unit step's third card. */
.pnl-term {
	display: grid;
	gap: 1.2rem;
}
@media (min-width: 40rem) {
	.pnl-term {
		grid-template-columns: 1fr 1fr;
	}
}
.pnl-term__option {
	border: 2px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	cursor: pointer;
	display: flex;
	flex-direction: column;
	gap: 1.2rem;
	padding: 1.6rem;
	position: relative;
}
@media (min-width: 40rem) {
	.pnl-term__option {
		align-items: flex-start;
		flex-direction: row;
		justify-content: space-between;
	}
}
.pnl-term__option:hover {
	border-color: var(--pnl-ink-soft);
}
.pnl-term__option:has(:checked) {
	background: var(--pnl-brand-soft);
	border-color: var(--pnl-brand-dark);
}
.pnl-term__option:has(:focus-visible) {
	box-shadow: var(--pnl-ring);
}
.pnl-term__text {
	display: flex;
	flex: 1;
	flex-direction: column;
	min-width: 0;
}
.pnl-term__title {
	font-size: 1.6rem;
	font-weight: 700;
	text-transform: uppercase;
}
.pnl-term__hint {
	color: var(--pnl-ink-soft);
	font-size: 1.4rem;
	line-height: 1.35;
	margin-top: 0.4rem;
}
.pnl-term__price {
	align-items: baseline;
	display: flex;
	flex: none;
	gap: 0.8rem;
}
@media (min-width: 40rem) {
	.pnl-term__title {
		font-size: 1.8rem;
	}
	.pnl-term__price {
		align-items: flex-end;
		flex-direction: column;
		gap: 0;
		text-align: right;
	}
}
.pnl-term__amount {
	font-size: 2.4rem;
	font-weight: 700;
}
.pnl-term__price s {
	color: var(--pnl-danger);
	font-size: 1.4rem;
}
.pnl-term__per {
	color: var(--pnl-muted);
	font-size: 1.2rem;
}

.pnl-toggle {
	border: 0;
	display: grid;
	gap: 0.8rem;
	grid-template-columns: 1fr 1fr;
	margin: 0 0 2.4rem;
	padding: 0;
}
.pnl-toggle__option {
	align-items: center;
	font-size: 1.4rem;
	font-weight: 600;
	justify-content: center;
	min-height: 4.4rem;
}
.pnl-form .pnl-help {
	color: var(--pnl-muted);
	font-size: 1.2rem;
	margin: 0;
}
.pnl-phone {
	display: flex;
	gap: 0.8rem;
}
.pnl-phone__country {
	flex: 0 0 9.2rem;
	padding-right: 0.4rem;
}
.pnl-phone .pnl-input:last-child {
	flex: 1;
	min-width: 0;
}
.pnl-fields {
	display: grid;
	gap: 1.6rem;
}
@media (min-width: 48rem) {
	.pnl-fields {
		grid-template-columns: 1fr 1fr;
	}
	.pnl-field--address {
		grid-column: 1 / -1;
	}
}
.pnl-field {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	margin: 0;
}
.pnl-field .pnl-input[aria-invalid="true"] {
	border-color: var(--pnl-danger);
}
.pnl-field__error {
	color: var(--pnl-danger);
	font-size: 1.4rem;
}

/* ---------- add-ons (AddonsStep.tsx) ---------- */

.pnl-title--card {
	font-size: 2.4rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	margin: 0;
}
.pnl-title--card + .pnl-help {
	margin: 0.4rem 0 2rem;
}
.pnl-title--section {
	font-size: 2.4rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	margin: 2.4rem 0 1.2rem;
}
.pnl-addons {
	display: grid;
	gap: 1.2rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}
@media (min-width: 40rem) {
	.pnl-addons {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
.pnl-addon {
	background: var(--pnl-white);
	border: 2px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	display: flex;
	flex-direction: column;
	padding: 1.6rem 1.2rem 1.2rem;
	position: relative;
	transition: border-color 0.15s;
}
.pnl-addon.is-chosen,
.pnl-addon.is-recommended {
	border-color: var(--pnl-brand-dark);
}
.pnl-addon__badge {
	background: color-mix(in srgb, var(--pnl-brand) 20%, transparent);
	border-radius: var(--pnl-pill);
	color: var(--pnl-brand-text);
	font-size: 1rem;
	font-weight: 600;
	left: 0.8rem;
	padding: 0.2rem 0.8rem;
	position: absolute;
	top: 0.8rem;
	z-index: 1;
}
.pnl-addon__toggle {
	align-items: center;
	background: var(--pnl-accent);
	border: 0;
	border-radius: var(--pnl-pill);
	box-shadow: var(--pnl-shadow-sm);
	color: var(--pnl-white);
	cursor: pointer;
	display: flex;
	height: 3.2rem;
	justify-content: center;
	padding: 0;
	position: absolute;
	right: 0.8rem;
	top: 0.8rem;
	transition: background-color 0.15s;
	width: 3.2rem;
	z-index: 1;
}
.pnl-addon__toggle:hover {
	background: var(--pnl-ink);
}
.pnl-addon__toggle:focus-visible,
.pnl-addon__qty button:focus-visible,
.pnl-service__button:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
.pnl-addon__bin,
.pnl-addon.is-chosen .pnl-addon__plus {
	display: none;
}
.pnl-addon.is-chosen .pnl-addon__bin {
	display: block;
}
.pnl-addon__picture {
	aspect-ratio: 1;
	background: none;
	border: 0;
	cursor: pointer;
	margin: 0.8rem auto 0;
	max-width: 140px;
	padding: 0.8rem;
	width: 100%;
}
.pnl-addon__picture img {
	height: 100%;
	object-fit: contain;
	width: 100%;
}
.pnl-addon__price {
	font-size: 1.8rem;
	font-weight: 700;
	margin-top: 0.8rem;
}
.pnl-addon__name {
	font-size: 1.4rem;
	font-weight: 500;
	line-height: 1.35;
}
.pnl-addon__name span {
	color: var(--pnl-muted);
	font-weight: 400;
}
.pnl-addon__qty {
	align-items: center;
	background: var(--pnl-surface);
	border-radius: var(--pnl-radius-sm);
	display: flex;
	justify-content: space-between;
	margin-top: 0.8rem;
	padding: 0.6rem 0.8rem;
}
.pnl-addon__qty button {
	align-items: center;
	background: var(--pnl-white);
	border: 0;
	border-radius: var(--pnl-pill);
	box-shadow: var(--pnl-shadow-sm);
	color: var(--pnl-ink);
	cursor: pointer;
	display: flex;
	height: 2.8rem;
	justify-content: center;
	padding: 0;
	width: 2.8rem;
}
.pnl-addon__qty span {
	font-size: 1.4rem;
	font-weight: 600;
	min-width: 2.4rem;
	text-align: center;
}

.pnl-service {
	background: var(--pnl-white);
	border: 2px solid var(--pnl-border);
	border-radius: var(--pnl-radius);
	margin-bottom: 1.2rem;
	overflow: hidden;
	transition: border-color 0.15s, background-color 0.15s;
}
.pnl-service.is-chosen {
	background: var(--pnl-brand-soft);
	border-color: var(--pnl-brand-dark);
}
.pnl-service.is-open {
	border-color: var(--pnl-brand-dark);
}
.pnl-service__row {
	display: grid;
	gap: 1.6rem;
	padding: 1.6rem;
}
@media (min-width: 40rem) {
	.pnl-service__row {
		align-items: center;
		gap: 2rem;
		grid-template-columns: 11.2rem minmax(0, 1fr) auto;
		padding: 2rem;
	}
}
.pnl-service__picture {
	height: 9.6rem;
	margin-inline: auto;
	max-width: 12.8rem;
	width: 100%;
}
@media (min-width: 40rem) {
	.pnl-service__picture {
		height: 11.2rem;
		max-width: none;
	}
}
.pnl-service__picture img {
	height: 100%;
	object-fit: contain;
	width: 100%;
}
.pnl-service__text {
	min-width: 0;
}
.pnl-service__badge {
	background: var(--pnl-brand);
	border-radius: var(--pnl-pill);
	display: inline-flex;
	font-size: 1.1rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	margin-bottom: 0.8rem;
	padding: 0.4rem 1rem;
	text-transform: uppercase;
}
.pnl-service__name {
	font-size: 1.8rem;
	font-weight: 700;
	margin: 0;
}
.pnl-service__desc {
	color: var(--pnl-ink-soft);
	font-size: 1.4rem;
	line-height: 1.6;
	margin: 0.4rem 0 0;
	max-width: 64rem;
}
.pnl-service__rules {
	color: var(--pnl-muted);
	font-size: 1.2rem;
	margin: 0.6rem 0 0;
	max-width: 41.6rem;
}
.pnl-service__side {
	align-items: stretch;
	display: flex;
	flex-direction: column;
	gap: 0.8rem;
}
@media (min-width: 40rem) {
	.pnl-service__side {
		align-items: flex-end;
	}
}
.pnl-service__price {
	font-weight: 700;
	margin: 0;
}
.pnl-service__button {
	background: var(--pnl-accent);
	border: 0;
	border-radius: var(--pnl-radius-sm);
	color: var(--pnl-white);
	cursor: pointer;
	font: inherit;
	font-size: 1.4rem;
	font-weight: 600;
	min-height: 4rem;
	padding: 0 1.6rem;
	white-space: nowrap;
}
.pnl-service.is-chosen .pnl-service__button {
	background: var(--pnl-brand);
	color: var(--pnl-ink);
}

.pnl-inquiry {
	border-top: 1px solid var(--pnl-border);
	padding: 1.6rem;
}
@media (min-width: 40rem) {
	.pnl-inquiry {
		padding: 2rem;
	}
}
.pnl-inquiry__title {
	font-size: 1.4rem;
	font-weight: 600;
	margin: 0;
}
.pnl-inquiry__places {
	display: grid;
	gap: 1.2rem;
	margin-top: 1.6rem;
}
@media (min-width: 48rem) {
	.pnl-inquiry__places {
		grid-template-columns: 1fr 1fr;
	}
}
.pnl-inquiry :where(fieldset) {
	border-radius: var(--pnl-radius);
	margin: 0;
	min-inline-size: 0;
	padding: 1.6rem;
}
.pnl-inquiry legend {
	float: left;
	font-size: 1.4rem;
	font-weight: 600;
	margin-bottom: 0.4rem;
	padding: 0;
	width: 100%;
}
.pnl-inquiry__place--from {
	background: var(--pnl-brand-soft);
	border: 1px solid color-mix(in srgb, var(--pnl-brand-dark) 25%, transparent);
}
.pnl-inquiry__place--from legend {
	color: var(--pnl-brand-text);
}
.pnl-inquiry__place--to {
	background: var(--pnl-accent-soft);
	border: 1px solid color-mix(in srgb, var(--pnl-accent) 25%, transparent);
}
.pnl-inquiry__place--to legend {
	color: var(--pnl-accent);
}
.pnl-inquiry__common {
	background: var(--pnl-surface);
	border: 1px solid var(--pnl-border);
	margin-top: 1.2rem;
}
.pnl-inquiry__grid {
	clear: both;
	display: grid;
	gap: 0 1.2rem;
}
@media (min-width: 48rem) {
	.pnl-inquiry__grid {
		grid-template-columns: 1fr 1fr;
	}
}
.pnl-inquiry .pnl-field {
	clear: both;
	margin: 1.2rem 0 0;
	min-width: 0;
}
.pnl-inquiry .pnl-input {
	box-sizing: border-box;
	max-width: 100%;
	width: 100%;
}
.pnl-inquiry__check {
	align-items: center;
	align-self: end;
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	display: flex;
	font-size: 1.4rem;
	gap: 0.8rem;
	margin-top: 1.2rem;
	padding: 1.2rem;
}
.pnl-inquiry__foot {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 1.2rem;
	margin-top: 1.6rem;
}
.pnl-inquiry__foot .pnl-help {
	margin: 0;
}
.pnl-inquiry__done {
	background: color-mix(in srgb, var(--pnl-brand) 20%, transparent);
	border-radius: var(--pnl-pill);
	color: var(--pnl-brand-text);
	font-size: 1.4rem;
	font-weight: 600;
	padding: 0.4rem 1.2rem;
}

.pnl-preview__head {
	align-items: flex-start;
	display: flex;
	flex-wrap: wrap;
	gap: 1.2rem;
	justify-content: space-between;
	margin-bottom: 1.2rem;
}
.pnl-preview__head .pnl-heading {
	font-weight: 600;
	margin: 0;
}
.pnl-preview__head .pnl-help {
	color: var(--pnl-muted);
	margin: 0.4rem 0 0;
}
.pnl-preview__save {
	align-items: center;
	display: inline-flex;
	gap: 0.8rem;
}
.pnl-contract-text {
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius);
	box-shadow: var(--pnl-shadow-sm);
	font-family: var(--pnl-font-serif);
	font-size: 1.6rem;
	line-height: 2;
	padding: 3.2rem 2.4rem;
}
@media (min-width: 48rem) {
	.pnl-contract-text {
		font-size: 1.8rem;
		line-height: 3.6rem;
		padding: 4rem;
	}
}
@media (min-width: 64rem) {
	.pnl-contract-text {
		max-height: min(75vh, 70.4rem);
		min-height: 51.2rem;
		overflow-y: auto;
	}
}
/* The theme resets list markers; a contract's clauses need their numbers. */
.pnl-contract-text ol {
	list-style: decimal;
	padding-left: 1.5em;
}
.pnl-contract-text ul {
	list-style: disc;
	padding-left: 1.5em;
}
.pnl-contract-text :is(h1, h2, h3) {
	font-family: inherit;
	font-size: 1.8rem;
	font-weight: 600;
}
.pnl-contract-translation {
	margin-top: 1.6rem;
}
.pnl-contract-translation summary {
	cursor: pointer;
	font-weight: 600;
}
.pnl-consent-row {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 1.6rem;
	margin-top: 2.4rem;
}
.pnl-consent-row .pnl-button {
	margin-left: auto;
}
/* The consent boxes, one above the other: the button below them on a phone,
   beside them from a tablet up. */
.pnl-consents {
	display: flex;
	flex: 1 1 100%;
	flex-direction: column;
	gap: 1.2rem;
	min-width: 0;
}
@media (min-width: 48rem) {
	.pnl-consents {
		flex-basis: 0;
	}
}
.pnl-consent {
	align-items: flex-start;
	cursor: pointer;
	display: flex;
	font-size: 1.4rem;
	font-weight: 600;
	gap: 0.8rem;
	min-width: 0;
}

.pnl-methods {
	border: 0;
	display: grid;
	gap: 1.2rem;
	margin: 0 0 2.4rem;
	padding: 0;
}
.pnl-methods .pnl-method {
	align-items: center;
	border-radius: var(--pnl-radius);
	flex-direction: row;
	gap: 1.6rem;
	padding: 1.6rem;
}
.pnl-methods .pnl-method:has(:checked) {
	background: color-mix(in srgb, var(--pnl-brand-soft) 40%, var(--pnl-white));
}
.pnl-method__icon {
	color: var(--pnl-brand-dark);
	flex-shrink: 0;
	height: 2.8rem;
	width: 2.8rem;
}
/* The eID marks: drawn as their owners publish them, in the icons' box. */
.pnl-method__logo {
	object-fit: contain;
}
.pnl-method__text {
	display: flex;
	flex-direction: column;
}
.pnl-method.is-unavailable {
	cursor: not-allowed;
	opacity: 0.55;
}

.pnl-signing__frame {
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	display: block;
	min-height: 560px;
}

/* The pay step's total (PayStep.tsx). */
.pnl-due {
	background: var(--pnl-white);
	border: 2px solid var(--pnl-brand-dark);
	border-radius: var(--pnl-radius);
	box-shadow: var(--pnl-shadow-md);
	overflow: hidden;
}
/* The payment methods follow the total; without this their borders touch.
   On the invoice page they are inside its form. */
.pnl-due + .pnl-methods,
.pnl-due + .pnl-invoice__form {
	margin-top: 2.4rem;
}
.pnl-due__head {
	background: var(--pnl-brand);
	font-size: 1.4rem;
	font-weight: 600;
	letter-spacing: 0.025em;
	margin: 0;
	padding: 1.4rem 2rem;
	text-transform: uppercase;
}
.pnl-due__body {
	padding: 2rem;
}
.pnl-due__amount {
	font-size: 3.6rem;
	font-weight: 700;
	letter-spacing: -0.025em;
	margin: 0;
}
.pnl-due__lines {
	border-top: 1px solid var(--pnl-border);
	font-size: 1.4rem;
	margin: 1.6rem 0 0;
}
.pnl-due__lines > div {
	align-items: baseline;
	border-bottom: 1px solid var(--pnl-border);
	display: flex;
	gap: 1.6rem;
	justify-content: space-between;
	padding: 1rem 0;
}
.pnl-due__lines > div:last-child {
	border-bottom: 0;
}
.pnl-due__lines dt {
	color: var(--pnl-muted);
	min-width: 0;
}
.pnl-due__lines dt small {
	display: block;
	font-size: 1.2rem;
	margin-top: 0.2rem;
}
.pnl-due__lines dd {
	font-weight: 600;
	margin: 0;
	white-space: nowrap;
}
.pnl-due__monthly {
	border-top: 1px solid var(--pnl-border);
	color: var(--pnl-ink-soft);
	font-size: 1.4rem;
	font-weight: 500;
	margin: 1.6rem 0 0;
	padding-top: 1.6rem;
}

.pnl-reference strong {
	font-family: ui-monospace, monospace;
}

/* ---------- the confirmation (ConfirmationStep.tsx) ---------- */

.pnl-done {
	align-items: center;
	display: grid;
	gap: 2.4rem;
	margin-bottom: 2.4rem;
}
@media (min-width: 64rem) {
	.pnl-done {
		gap: 3.2rem;
		grid-template-columns: minmax(0, 1fr) 28rem;
	}
}
@media (min-width: 80rem) {
	.pnl-done {
		grid-template-columns: minmax(0, 1fr) 34rem;
	}
}
.pnl-done__card {
	background: color-mix(in srgb, var(--pnl-brand-soft) 50%, var(--pnl-white));
	border: 1px solid color-mix(in srgb, var(--pnl-brand-dark) 30%, transparent);
	border-radius: var(--pnl-radius);
	padding: 2.4rem;
}
.pnl-done__check {
	color: var(--pnl-success);
}
.pnl-done__title {
	font-family: var(--pnl-font-heading);
	font-size: 3rem;
	font-weight: 400;
	letter-spacing: -0.025em;
	margin: 1.6rem 0 0.8rem;
}
.pnl-done__card .pnl-lede {
	margin: 0;
}
.pnl-done__card .pnl-reference {
	font-size: 1.8rem;
	margin: 1.6rem 0 0;
}
.pnl-done__picture {
	height: auto;
	justify-self: center;
	max-width: 28rem;
	width: 100%;
}
@media (min-width: 64rem) {
	.pnl-done__picture {
		max-width: none;
	}
}
.pnl-done__blocks {
	display: grid;
	gap: 1.6rem;
	margin-bottom: 2.4rem;
}
@media (min-width: 48rem) {
	.pnl-done__blocks {
		grid-template-columns: 1fr 1fr;
	}
}
.pnl-done__block {
	border-radius: var(--pnl-radius);
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
	padding: 2rem;
}
@media (min-width: 40rem) {
	.pnl-done__block {
		align-items: center;
		flex-direction: row;
	}
}
.pnl-done__block--unit {
	background: var(--pnl-accent-soft);
}
.pnl-done__block--next {
	background: var(--pnl-brand-soft);
}
.pnl-done__block > img {
	flex-shrink: 0;
	height: auto;
	margin-inline: auto;
	max-width: 20rem;
	object-fit: contain;
	width: 100%;
}
@media (min-width: 40rem) {
	.pnl-done__block > img {
		margin: 0;
		width: 18rem;
	}
}
.pnl-done__block .pnl-heading {
	font-weight: 600;
}
.pnl-done__block ul,
.pnl-done__block ol {
	display: grid;
	font-size: 1.4rem;
	gap: 0.8rem;
	margin: 1.2rem 0 0;
	padding: 0;
}
.pnl-done__block ul {
	list-style: none;
}
.pnl-done__block ol {
	list-style: decimal;
	padding-left: 2rem;
}
.pnl-done__block ol li::marker {
	font-weight: 700;
}
.pnl-done__place {
	display: flex;
	gap: 0.8rem;
}
.pnl-done__place svg {
	color: var(--pnl-accent);
	flex-shrink: 0;
}
.pnl-confirmation .pnl-card .pnl-heading {
	font-weight: 600;
}
.pnl-confirmation .pnl-card a {
	color: var(--pnl-accent);
	font-weight: 600;
	text-decoration: underline;
}
.pnl-done__questions {
	background: var(--pnl-surface);
	border-radius: var(--pnl-radius);
	font-size: 1.4rem;
	margin-bottom: 2.4rem;
	padding: 2rem;
}
.pnl-done__questions :where(p) {
	color: var(--pnl-ink-soft);
	margin: 0.8rem 0 0;
}
.pnl-done__questions a {
	color: inherit;
	text-decoration: underline;
}
.pnl-done__questions-title {
	align-items: center;
	color: var(--pnl-ink);
	display: flex;
	font-weight: 600;
	gap: 0.8rem;
	margin: 0;
}
.pnl-done__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 1.2rem;
	margin: 0;
}

@media (prefers-reduced-motion: no-preference) {
	.pnl-unit,
	.pnl-chip,
	.pnl-size,
	.pnl-contract {
		transition: background-color 0.15s, border-color 0.15s;
	}
}

@keyframes pnl-nudge {
	0%,
	100% {
		transform: translateX(0);
	}
	40% {
		transform: translateX(1.5px);
	}
	70% {
		transform: translateX(-1.5px);
	}
}
@keyframes pnl-nudge-ring {
	0%,
	100% {
		opacity: 0;
	}
	40% {
		opacity: 1;
	}
	70% {
		opacity: 0.67;
	}
}
/* The chosen box's ring on the plan (.pnl-box__ring). */
@keyframes pnl-ring {
	0%,
	100% {
		opacity: 1;
	}
	50% {
		opacity: 0.28;
	}
}

/* An invoice's pay page (templates/invoice-pay.php): the pay step, alone. */
.pnl-invoice {
	max-width: 57.6rem;
	padding-block: 4.8rem 6.4rem;
}
.pnl-invoice .pnl-title {
	margin-bottom: 0.8rem;
}
/* "Arve on tasutud" is the card alone, without the wizard's picture beside it. */
.pnl-invoice .pnl-done {
	grid-template-columns: minmax(0, 1fr);
}
.pnl-invoice .pnl-lede {
	margin-bottom: 2.4rem;
}
.pnl-invoice__notice {
	background: var(--pnl-accent-soft);
	border-radius: var(--pnl-radius-sm);
	color: var(--pnl-ink);
	margin-bottom: 2.4rem;
	padding: 1.2rem 1.6rem;
}
.pnl-invoice__notice--error {
	background: var(--pnl-danger-soft);
	color: var(--pnl-danger);
}
.pnl-invoice .pnl-actions {
	justify-content: flex-end;
	margin-top: 2.4rem;
}

/* ---------- forced colours (Windows' high contrast) ---------- */

/*
 * Shadows are not drawn here, and backgrounds become the system's: every
 * focus ring above and every checked card would be gone. The focus is an
 * outline instead, and it must be !important, because the theme's
 * `outline: none` for focus is unlayered and beats any layered rule that
 * is not.
 */
@media (forced-colors: active) {
	:is(.pnl-wizard, .pnl-picker, .pnl-locations, .pnl-location) :focus-visible,
	:is(.pnl-chip, .pnl-size, .pnl-contract, .pnl-term__option, .pnl-method, .pnl-toggle__option, .pnl-unit):has(:focus-visible) {
		outline: 2px solid CanvasText !important;
		outline-offset: 2px;
	}
	/* A checked card keeps its own colours, and a Highlight edge, so it
	   stands out from the system-coloured cards beside it. */
	:is(.pnl-chip, .pnl-size, .pnl-contract, .pnl-term__option, .pnl-method, .pnl-toggle__option, .pnl-unit):has(:checked) {
		border-color: Highlight;
		box-shadow: inset 0 0 0 2px Highlight;
		forced-color-adjust: none;
	}
	/* The legend's keys are the plan's colours, which it keeps. */
	.pnl-plan__map,
	.pnl-plan__key {
		forced-color-adjust: none;
	}
}

/* ---------- controls: usable on any theme, the theme's own classes win ---------- */

/*
 * The templates put the theme's class beside each of these (`button
 * button--primary`, `input`, `checkbox`, `form__label`). These rules are the
 * fallback: at zero specificity (:where), so a theme's single class beats
 * them wherever it has one, and a theme without them still gets a control.
 */
:where(.pnl-button) {
	align-items: center;
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	color: var(--pnl-ink);
	cursor: pointer;
	display: inline-flex;
	font: inherit;
	font-size: 1.4rem;
	font-weight: 600;
	gap: 0.8rem;
	justify-content: center;
	line-height: 1.43;
	min-height: 4.4rem;
	padding: 1rem 2rem;
	text-align: center;
	text-decoration: none;
	transition: background-color 0.15s, border-color 0.15s, color 0.15s;
}
:where(.pnl-button):hover {
	border-color: var(--pnl-ink);
	text-decoration: none;
}
:where(.pnl-button):focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
:where(.pnl-button):disabled,
:where(.pnl-button)[aria-disabled="true"] {
	cursor: not-allowed;
	opacity: 0.5;
}
:where(.pnl-button--brand) {
	background: var(--pnl-brand);
	border-color: var(--pnl-brand);
	font-weight: 700;
}
:where(.pnl-button--brand):hover {
	background: var(--pnl-brand-dark);
	border-color: var(--pnl-brand-dark);
	color: var(--pnl-white);
}
:where(.pnl-button--dark) {
	background: var(--pnl-ink);
	border-color: var(--pnl-ink);
	color: var(--pnl-white);
}
:where(.pnl-button--dark):hover {
	background: var(--pnl-accent);
	border-color: var(--pnl-accent);
}
:where(.pnl-button--lg) {
	font-size: 1.6rem;
	min-height: 4.8rem;
	padding: 1.2rem 2.4rem;
}

:where(.pnl-input) {
	background: var(--pnl-white);
	border: 1px solid var(--pnl-border);
	border-radius: var(--pnl-radius-md);
	box-sizing: border-box;
	color: var(--pnl-ink);
	display: block;
	font: inherit;
	font-size: 1.6rem;
	line-height: 1.5;
	min-width: 0;
	outline: 0;
	padding: 0 1.2rem;
	width: 100%;
}
:where(.pnl-input):not(textarea) {
	height: 4.8rem;
}
:where(textarea.pnl-input) {
	min-height: 12rem;
	padding: 1rem 1.2rem;
	resize: vertical;
}
:where(.pnl-input):focus-visible {
	border-color: var(--pnl-accent);
	box-shadow: var(--pnl-ring);
}
:where(.pnl-input):disabled {
	background: var(--pnl-surface);
	cursor: not-allowed;
	opacity: 0.7;
}

:where(.pnl-checkbox) {
	accent-color: var(--pnl-accent);
	flex-shrink: 0;
	height: 1.8rem;
	margin: 0.2rem 0 0;
	width: 1.8rem;
}

:where(.pnl-label) {
	color: var(--pnl-ink);
	display: block;
	font-size: 1.4rem;
	font-weight: 500;
	line-height: 1.43;
}

/* ---------- the pieces the theme used to lend ---------- */

/* The heading a section opens with; its face and weight are the theme's. */
.pnl-section-title {
	color: var(--pnl-ink);
	font-size: 2.4rem;
	letter-spacing: -0.025em;
	line-height: 1.333;
	margin: 0;
}
@media (min-width: 48rem) {
	.pnl-section-title {
		font-size: 3rem;
		line-height: 1.2;
	}
}

/*
 * The page column, where the plugin draws a whole page (the invoice, a
 * location's page). Inside the theme's own column (a block's inner, a
 * max--width-* wrapper) the column is the theme's, and this is only a div.
 */
.pnl-shell {
	box-sizing: border-box;
	margin-inline: auto;
	max-width: 115.2rem;
	padding-inline: 1.2rem;
	width: 100%;
}
.pnl-shell--wide {
	max-width: 144rem;
}
.pnl-shell--narrow {
	max-width: 76.8rem;
}
@media (min-width: 40rem) {
	.pnl-shell {
		padding-inline: 1.6rem;
	}
}
@media (min-width: 48rem) {
	.pnl-shell {
		padding-inline: 2rem;
	}
}
:is(.block__inner, [class*="max--width"]) .pnl-shell {
	max-width: none;
	padding-inline: 0;
}

/* Theme::icon()'s default size. */
.pnl-icon {
	flex-shrink: 0;
	height: 2rem;
	width: 2rem;
}

/* The four pale card backgrounds; the theme's .tint--* are the same four. */
:where(.pnl-tint--brand) {
	background-color: var(--pnl-brand-soft);
}
:where(.pnl-tint--accent) {
	background-color: var(--pnl-accent-soft);
}
:where(.pnl-tint--sand) {
	background-color: var(--pnl-sand);
}
:where(.pnl-tint--clay) {
	background-color: var(--pnl-clay);
}

/* ---------- the locations list beside the map (locations.php) ---------- */

/* The theme's block is the section: its background, padding and column. */
.pnl-locations__grid {
	align-items: flex-start;
	display: grid;
	gap: 4rem;
}
.pnl-locations__intro {
	color: var(--pnl-ink-soft);
	margin: 0.8rem 0 0;
	max-width: 44.8rem;
}
.pnl-locations__list {
	list-style: none;
	margin: 3.2rem 0 0;
	padding: 0;
}
:where(.pnl-locations__list > :not(:last-child)) {
	margin-block-end: 1.2rem;
}
.pnl-locations__link {
	align-items: center;
	background: var(--pnl-white);
	border-radius: var(--pnl-radius);
	box-shadow: var(--pnl-shadow-sm);
	color: inherit;
	display: flex;
	gap: 1.6rem;
	padding: 1.2rem;
	text-decoration: none;
	transition: box-shadow 0.15s;
}
.pnl-locations__link:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
.pnl-locations__thumb {
	background: var(--pnl-surface);
	border-radius: var(--pnl-radius-sm);
	flex-shrink: 0;
	height: 8rem;
	overflow: hidden;
	position: relative;
	width: 9.6rem;
}
.pnl-locations__image {
	height: 100%;
	inset: 0;
	object-fit: cover;
	position: absolute;
	transition: scale 0.5s;
	width: 100%;
}
.pnl-locations__body {
	flex: 1;
	min-width: 0;
}
.pnl-locations__title-row {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 0.8rem;
}
/* The prototype's h3 at the body size. */
.pnl-locations__name {
	color: var(--pnl-ink);
	font-size: 1.6rem;
	line-height: 1.5;
	margin: 0;
}
.pnl-locations__new {
	background: color-mix(in srgb, var(--pnl-brand) 15%, transparent);
	border-radius: var(--pnl-pill);
	color: var(--pnl-brand-text);
	font-size: 1.2rem;
	font-weight: 600;
	line-height: 1.333;
	padding: 0.2rem 0.8rem;
}
.pnl-locations__address,
.pnl-locations__price {
	font-size: 1.4rem;
	line-height: 1.43;
	margin: 0;
}
.pnl-locations__address {
	color: var(--pnl-muted);
	margin-top: 0.2rem;
}
.pnl-locations__price {
	font-weight: 600;
	margin-top: 0.6rem;
}
.pnl-locations__per {
	color: var(--pnl-muted);
	font-weight: 400;
}
.pnl-locations__chevron {
	color: var(--pnl-muted);
	flex-shrink: 0;
	height: 2rem;
	transition: color 0.15s, translate 0.15s;
	width: 2rem;
}
@media (hover: hover) {
	.pnl-locations__link:hover {
		box-shadow: var(--pnl-shadow-md);
	}
	.pnl-locations__link:hover .pnl-locations__image {
		scale: 1.04;
	}
	.pnl-locations__link:hover .pnl-locations__chevron {
		color: var(--pnl-ink);
		translate: 0.2rem 0;
	}
}
@media (min-width: 64rem) {
	.pnl-locations__grid {
		gap: 5.6rem;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
	}
}

/* ---------- the map (location-map.php) ---------- */

.pnl-map {
	display: flex;
	flex-direction: column;
	gap: 0.8rem;
}
.pnl-map__frame {
	background: var(--pnl-surface);
	border-radius: var(--pnl-radius);
	box-shadow: var(--pnl-shadow-sm);
	min-height: 400px;
	overflow: hidden;
	position: relative;
}
.pnl-map__canvas {
	inset: 0;
	position: absolute;
}
/* The keyless embed. The filters are in this order on purpose: it changes the result. */
.pnl-map__embed {
	border: 0;
	filter: brightness(1.03) contrast(1.04) grayscale(100%);
	height: 100%;
	inset: 0;
	position: absolute;
	width: 100%;
}
.pnl-map__open {
	align-self: flex-end;
	color: var(--pnl-accent);
	font-size: 1.4rem;
	font-weight: 500;
	line-height: 1.43;
}
@media (min-width: 40rem) {
	.pnl-map__frame {
		min-height: 440px;
	}
}
@media (min-width: 64rem) {
	.pnl-map__frame {
		min-height: 560px;
	}
}
@media (min-width: 80rem) {
	.pnl-map__frame {
		min-height: 620px;
	}
}

/* ---------- a location's page (location.php) ---------- */

.pnl-location {
	padding-block: 3.2rem;
}
.pnl-location__top {
	display: grid;
	gap: 3.2rem;
}
.pnl-location__summary {
	background: var(--pnl-brand-soft);
	border-radius: var(--pnl-radius);
	display: flex;
	flex-direction: column;
	height: 100%;
	justify-content: center;
	min-width: 0;
	padding: 2rem;
}
.pnl-location__name {
	color: var(--pnl-ink);
}
.pnl-location__address {
	color: var(--pnl-muted);
	font-size: 1.4rem;
	line-height: 1.43;
	margin: 0.4rem 0 0;
}
.pnl-location__price {
	color: var(--pnl-ink);
	font-size: 1.6rem;
	line-height: 1.5;
	margin: 1.6rem 0 0;
}
.pnl-location__amenities {
	display: flex;
	flex-wrap: wrap;
	gap: 0.8rem;
	list-style: none;
	margin: 1.6rem 0 0;
	padding: 0;
}
.pnl-location__amenity {
	background: var(--pnl-white);
	border-radius: var(--pnl-pill);
	box-shadow: var(--pnl-shadow-sm);
	font-size: 1.4rem;
	font-weight: 500;
	line-height: 1.43;
	padding: 0.4rem 1.2rem;
}
.pnl-location__about {
	color: var(--pnl-ink-soft);
	font-size: 1.4rem;
	line-height: 1.625;
	margin: 1.6rem 0 0;
}
.pnl-location__block {
	margin-top: 4.8rem;
}
/* "Galerii" and "Kaart". */
.pnl-location__heading,
.pnl-gallery__title {
	font-size: 2rem;
	line-height: 1.4;
	margin: 0;
}
.pnl-location__map {
	margin-top: 1.6rem;
}
@media (min-width: 48rem) {
	.pnl-location {
		padding-block: 4rem;
	}
	.pnl-location__summary {
		padding: 2.4rem;
	}
	.pnl-location__address,
	.pnl-location__about {
		font-size: 1.6rem;
	}
	.pnl-location__address {
		line-height: 1.5;
	}
	.pnl-location__block {
		margin-top: 5.6rem;
	}
}
@media (min-width: 64rem) {
	.pnl-location__top {
		align-items: stretch;
		gap: 4rem;
		grid-template-columns: minmax(0, 35.2rem) minmax(0, 1fr);
	}
}
@media (min-width: 80rem) {
	.pnl-location__top {
		grid-template-columns: minmax(0, 41.6rem) minmax(0, 1fr);
	}
}

/* ---------- "Enne broneerimist" (location-guide.php) ---------- */

.pnl-guide {
	border-top: 1px solid var(--pnl-border);
	margin-top: 4rem;
	padding-top: 4rem;
}
.pnl-guide__title {
	color: var(--pnl-ink);
	font-size: 1.8rem;
	letter-spacing: -0.025em;
	line-height: 1.556;
	margin: 0;
}
.pnl-guide__intro {
	color: var(--pnl-ink);
	font-size: 1.6rem;
	line-height: 1.625;
	margin: 1.2rem 0 0;
	max-width: 76.8rem;
}
.pnl-guide__grid {
	display: grid;
	gap: 1.6rem;
	margin-top: 3.2rem;
}
.pnl-guide__card {
	border-radius: var(--pnl-radius);
	padding: 2rem;
}
.pnl-guide__card-row {
	align-items: flex-start;
	display: flex;
	gap: 1.2rem;
}
.pnl-guide__badge {
	align-items: center;
	background: color-mix(in srgb, var(--pnl-white) 90%, transparent);
	border-radius: var(--pnl-pill);
	box-shadow: var(--pnl-shadow-sm);
	color: var(--pnl-accent);
	display: inline-flex;
	flex-shrink: 0;
	height: 4rem;
	justify-content: center;
	width: 4rem;
}
.pnl-guide__card-body {
	min-width: 0;
}
.pnl-guide__card-title {
	color: var(--pnl-ink);
	font-size: 1.8rem;
	line-height: 1.556;
	margin: 0;
}
.pnl-guide__card-text {
	color: var(--pnl-ink);
	font-size: 1.4rem;
	line-height: 1.625;
	margin: 0.8rem 0 0;
}
.pnl-guide__more {
	color: var(--pnl-ink);
	font-size: 1.4rem;
	line-height: 1.43;
	margin: 2.4rem 0 0;
}
.pnl-guide__more-link {
	color: var(--pnl-accent);
	font-weight: 600;
}
@media (min-width: 48rem) {
	.pnl-guide__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ---------- the photo grid and its lightbox (location-gallery.php) ---------- */

.pnl-gallery {
	margin-top: 4.8rem;
}
.pnl-gallery__grid {
	display: grid;
	gap: 1.6rem;
	margin-top: 1.6rem;
}
.pnl-gallery__thumb {
	background: var(--pnl-surface);
	border: 0;
	border-radius: var(--pnl-radius);
	cursor: pointer;
	display: block;
	height: 19.2rem;
	overflow: hidden;
	padding: 0;
	position: relative;
	width: 100%;
}
.pnl-gallery__thumb:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
.pnl-gallery__thumb-image {
	height: 100%;
	inset: 0;
	object-fit: cover;
	position: absolute;
	transition: scale 0.3s;
	width: 100%;
}
/* The lightbox, opened by whichever script the site gives it; `hidden` until then. */
.pnl-gallery__dialog {
	align-items: center;
	background: color-mix(in srgb, #000 80%, transparent);
	display: flex;
	inset: 0;
	justify-content: center;
	padding: 1.6rem;
	position: fixed;
	z-index: 50;
}
.pnl-gallery__dialog[hidden] {
	display: none;
}
.pnl-gallery__control {
	align-items: center;
	background: color-mix(in srgb, #fff 15%, transparent);
	border: 0;
	border-radius: var(--pnl-pill);
	color: #fff;
	cursor: pointer;
	display: inline-flex;
	height: 4.4rem;
	justify-content: center;
	position: absolute;
	width: 4.4rem;
}
.pnl-gallery__control:focus-visible {
	box-shadow: var(--pnl-ring);
	outline: none;
}
.pnl-gallery__control--close {
	right: 1.6rem;
	top: 1.6rem;
}
.pnl-gallery__control--prev,
.pnl-gallery__control--next {
	top: 50%;
	translate: 0 -50%;
}
.pnl-gallery__control--prev {
	left: 1.2rem;
}
.pnl-gallery__control--next {
	right: 1.2rem;
}
.pnl-gallery__arrow {
	height: 2.4rem;
	width: 2.4rem;
}
.pnl-gallery__stage {
	height: min(80vh, 720px);
	max-width: 102.4rem;
	position: relative;
	width: 100%;
}
.pnl-gallery__image {
	height: 100%;
	inset: 0;
	object-fit: contain;
	position: absolute;
	width: 100%;
}
.pnl-gallery__counter {
	background: color-mix(in srgb, #000 50%, transparent);
	border-radius: var(--pnl-pill);
	bottom: 2rem;
	color: #fff;
	font-size: 1.4rem;
	left: 50%;
	line-height: 1.43;
	margin: 0;
	padding: 0.4rem 1.2rem;
	position: absolute;
	translate: -50% 0;
}
@media (hover: hover) {
	.pnl-guide__more-link:hover,
	.pnl-map__open:hover {
		text-decoration: underline;
	}
	.pnl-gallery__thumb:hover .pnl-gallery__thumb-image {
		scale: 1.03;
	}
	.pnl-gallery__control:hover {
		background: color-mix(in srgb, #fff 25%, transparent);
	}
}
@media (min-width: 48rem) {
	.pnl-gallery__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
	.pnl-gallery__control--prev {
		left: 2.4rem;
	}
	.pnl-gallery__control--next {
		right: 2.4rem;
	}
}

/* A location's page: the prototype's LocationSizeCards
   (size-picker-location.php). The render beside the chosen size's facts,
   the sizes as chips under them, "Broneeri see ladu". */
.pnl-picker--location {
	padding-block: 0;
}
.pnl-loc {
	display: grid;
	gap: 2rem;
}
.pnl-loc__top {
	align-items: center;
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}
@media (min-width: 40rem) {
	.pnl-loc__top {
		flex-direction: row;
		gap: 2rem;
	}
}
.pnl-loc__figure {
	flex: none;
	height: 22.4rem;
	position: relative;
	width: 20.8rem;
}
@media (min-width: 40rem) {
	.pnl-loc__figure {
		height: 25.6rem;
		width: 24rem;
	}
}
@media (min-width: 64rem) {
	.pnl-loc__figure {
		height: 28.8rem;
		width: 28.8rem;
	}
}
.pnl-loc__figure .pnl-p-shape {
	height: 72%;
	left: 50%;
	pointer-events: none;
	position: absolute;
	top: 48%;
	translate: -50% -50%;
	user-select: none;
	width: auto;
}
.pnl-loc__figure img {
	height: 100%;
	inset: 0 -2%;
	object-fit: contain;
	object-position: bottom;
	position: absolute;
	width: 104%;
}
.pnl-loc__figure img.is-large {
	height: 96%;
	inset: 4% 2% 0;
	width: 96%;
}
.pnl-loc__what {
	min-width: 0;
	text-align: center;
}
@media (min-width: 40rem) {
	.pnl-loc__what {
		text-align: left;
	}
}
/* The prototype's plain pill here: no tail. */
.pnl-loc .pnl-badge {
	font-size: 1.2rem;
	margin: 0;
	padding: 0.4rem 1rem;
}
.pnl-loc .pnl-badge::after {
	content: none;
}
@media (min-width: 40rem) {
	.pnl-loc .pnl-badge {
		font-size: 1.4rem;
		padding: 0.6rem 1.2rem;
	}
}
.pnl-loc__size {
	font-size: 3rem;
	margin: 0.8rem 0 0;
}
@media (min-width: 48rem) {
	.pnl-loc__size {
		font-size: 3.6rem;
	}
}
.pnl-loc__hints {
	color: var(--pnl-ink-soft);
	font-size: 1.4rem;
	margin: 0.8rem 0 0;
}
.pnl-loc__stock {
	color: var(--pnl-ink);
	font-size: 1.4rem;
	font-weight: 600;
	margin: 1.2rem 0 0;
}
.pnl-loc__stock.is-last {
	color: var(--pnl-danger);
}
.pnl-loc__stock.is-none {
	color: var(--pnl-muted);
}
.pnl-loc__disclaimer {
	font-size: 1.2rem;
	margin: 0.8rem 0 0;
	max-width: 38.4rem;
	text-align: inherit;
}
.pnl-loc__sizes {
	border: 0;
	display: grid;
	gap: 1.2rem;
	margin: 0;
	min-width: 0;
	padding: 0;
}
.pnl-loc__group-label {
	color: var(--pnl-muted);
	font-size: 1.2rem;
	font-weight: 600;
	letter-spacing: 0.025em;
	margin: 0 0 0.8rem;
	text-transform: uppercase;
}
.pnl-loc__chips {
	display: grid;
	gap: 0.8rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 40rem) {
	.pnl-loc__chips {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
@media (min-width: 48rem) {
	.pnl-loc__chips {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}
@media (min-width: 64rem) {
	.pnl-loc__chips {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}
.pnl-loc__group--locker .pnl-loc__chips {
	display: flex;
	flex-wrap: wrap;
}
/* The strip's .pnl-size, as the prototype's SizeChip: white, a little smaller. */
.pnl-size.pnl-loc__chip {
	background: var(--pnl-white);
	color: var(--pnl-ink-soft);
	justify-content: center;
	min-height: 4.4rem;
	min-width: 0;
	padding: 0.6rem 1.2rem;
}
.pnl-loc__group--locker .pnl-size.pnl-loc__chip {
	padding-inline: 1.6rem;
}
.pnl-size.pnl-loc__chip:has(:checked) {
	color: var(--pnl-ink);
}
.pnl-size.pnl-loc__chip.is-none {
	background: var(--pnl-surface);
	color: var(--pnl-muted);
}
.pnl-loc__chip .pnl-size__label {
	font-size: 1.4rem;
	font-weight: 500;
}
.pnl-loc__chip .pnl-size__stock {
	font-size: 1.1rem;
	margin-top: 0.2rem;
}
.pnl-picker__cta.pnl-loc__cta {
	background: var(--pnl-ink);
	color: var(--pnl-white);
	font-size: 1.6rem;
	font-weight: 600;
	justify-self: start;
	margin-top: 0.4rem;
	min-height: 4.8rem;
	padding: 1rem 2.4rem;
	width: auto;
}
.pnl-picker__cta.pnl-loc__cta:hover:not(:disabled) {
	background: var(--pnl-accent);
}
@media (min-width: 64rem) {
	.pnl-size.pnl-loc__chip {
		min-width: 0;
		padding: 0.6rem 1.2rem;
	}
	.pnl-loc__chip .pnl-size__label {
		font-size: 1.4rem;
	}
	.pnl-picker__cta.pnl-loc__cta {
		font-size: 1.6rem;
		margin-top: 0.4rem;
		padding-block: 1rem;
	}
}
