/**
 * The management application's own page.
 *
 * WHAT THIS FILE IS AND IS NOT
 * ----------------------------
 * It is the document around the dashboards: the sign-in card, the bar across
 * the top, and a small set of WordPress class names the dashboards borrow.
 *
 * It is NOT a restyle of the dashboards. They have their own stylesheets, they
 * are scoped to their own wrapper classes, and they were correct before this
 * application existed. Anything here that reached inside them would be a second
 * opinion about how a table should look, and two opinions is how a design
 * system stops being one.
 *
 * WHY THE WORDPRESS CLASSES ARE REDRAWN RATHER THAN IMPORTED
 * ----------------------------------------------------------
 * The dashboards use `.button`, `.widefat` and `.notice`, which wp-admin
 * supplies. Loading wp-admin's stylesheet to get them would bring WordPress's
 * entire visual identity onto a page whose whole purpose is not to be
 * WordPress — its blues, its greys, its button shapes. So the handful that are
 * actually used are drawn here instead, in this application's language.
 *
 * @package LodgeStay_PMS
 */

/* ============================================================== tokens ==== */

.lspms-manage {
	/*
	 * The accent and its ink are written into the page by PHP, from
	 * `LSPMS_Manage::identity()`. The three management applications are one
	 * platform now and all three return the same pair, so this reads as one
	 * product wearing one colour; which business somebody is in is said in
	 * words, in the document title and on the masthead, rather than in a hue
	 * they have to have been told about.
	 *
	 * THE NEUTRALS BELOW USED TO BE GREEN, AND IT WAS NOT VISIBLE UNTIL IT WAS.
	 * They were mixed towards the lodge's teal -- #eef1f1, #16211f, #dde3e3 --
	 * which was right while the portal was teal and became a faint green cast
	 * under an indigo accent: not nameable on its own, obvious the moment the
	 * two are side by side. They are mixed towards the platform colour now.
	 */
	--lspms-ground:   #eef0f5;
	--lspms-surface:  #ffffff;
	--lspms-sunken:   #f4f5f9;
	--lspms-line:     #dcdfe9;
	--lspms-ink-1:    #191c26;
	--lspms-ink-2:    #4c5160;
	--lspms-ink-3:    #767b8b;
	--lspms-danger:   #a3402a;
	--lspms-danger-bg:#f9e9e4;
	--lspms-good:     #146b45;
	--lspms-good-bg:  #e3f2ea;

	--lspms-radius:   6px;
	--lspms-bar:      56px;

	background: var(--lspms-ground);
	color: var(--lspms-ink-1);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	font-size: 15px;
	line-height: 1.5;
	margin: 0;
	min-height: 100vh;
	-webkit-font-smoothing: antialiased;
}

.lspms-manage *,
.lspms-manage *::before,
.lspms-manage *::after { box-sizing: border-box; }

/*
 * THIS RULE REACHES INTO THE DASHBOARDS, AND THAT IS A KNOWN COST.
 *
 * `.lspms-manage` is on the BODY, so this covers every anchor on the page --
 * including every anchor the three dashboards draw inside
 * `.lspms-manage__body`. At (0,1,1) it also BEATS a component rule written as
 * a single class, whatever the print order, because specificity is decided
 * before source order. That is how the lodge's entire sidebar navigation came
 * to be painted the management accent on a near-black slab at 2.0:1: not
 * because anything about it was wrong, but because `.lspms__nav-link` is one
 * class and this is one class and one type.
 *
 * Two ways out. Narrow this to the portal's own chrome, which is tidier and
 * leaves every ordinary link in three dashboards with no colour at all; or
 * keep the useful default and require every component that paints an anchor
 * inside a business shell to carry its shell class. The second was chosen: it
 * is what the already-patched components do (`.lspms .lspms__brand`,
 * `.lspms .lspms__side-foot a`, `.lspms .lspms__quick`), it changes nothing
 * that currently looks right, and the requirement is now checked rather than
 * remembered -- `css-cascade-check.py` fails any anchor colour rule inside
 * `.lspms`, `.lshostel-app` or `.lsgroup` that does not out-specify this line.
 *
 * Three components were found undefended when that check was written, and the
 * navigation was one of them.
 */
.lspms-manage a { color: var(--lspms-manage-accent); }

.lspms-manage :focus-visible {
	outline: 2px solid var(--lspms-manage-accent);
	outline-offset: 2px;
}

/* ============================================================== the door ==== */

/*
 * The sign-in page.
 *
 * Composition follows the measured proportions of a major internet-banking
 * login: a 36px utility strip, a 74px white masthead, a 1264px container, and
 * a two-column brand-coloured hero whose form column is 400px and whose
 * information column is 500px, 172px apart. Controls are 50px tall with a
 * full-pill radius. Cards are 24px radius, 24px apart.
 *
 * Colour, type, spacing and the semantic ramp are TopLife's own, mirroring
 * admin/assets/toplife.css. That file is scoped to .lspms, .lshostel-app and
 * .lsgroup, none of which match this page's .lspms-manage body, so the tokens
 * cannot be inherited here and are restated below with the same values. The
 * two brand colours are not restated: they come from the business's own
 * identity() record at render time, so each portal signs in under its own
 * colour and follows automatically if that record ever changes.
 *
 * Everything is scoped to .lspms-manage--entry. Nothing here can reach a
 * screen somebody is already signed in to.
 */

.lspms-manage--entry {

	/* the two that come from the business, with identity()'s values as the fallback */
	--entry-accent: #414c9e;
	--entry-ink: #1b2050;

	/* mirrored from toplife.css --tl-primary-* */
	--entry-p50: #eef1f9;
	--entry-p100: #d8def2;
	--entry-p700: #2b396e;
	--entry-p900: #1a2242;
	--entry-dark: #14181f;

	/* mirrored from toplife.css --tl-neutral-* */
	--entry-n0: #ffffff;
	--entry-n50: #f7f8fa;
	--entry-n100: #eef0f4;
	--entry-n200: #e2e5eb;
	--entry-n400: #9aa2b1;
	--entry-n500: #6b7484;
	--entry-n800: #242933;

	/* mirrored from toplife.css semantic + shape + type */
	--entry-danger: #c0392b;
	--entry-success: #1e874b;
	--entry-accent-gold: #f0c37a;
	--entry-radius-sm: 4px;
	--entry-radius: 8px;
	--entry-radius-lg: 14px;
	--entry-radius-card: 24px;
	--entry-radius-full: 999px;
	--entry-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	/* the reference geometry */
	--entry-shell: 1264px;
	--entry-form: 400px;
	--entry-side: 500px;
	--entry-gutter: 172px;
	--entry-control: 50px;

	margin: 0;
	padding: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	background: var(--entry-n0);
	color: var(--entry-n800);
	font-family: var(--entry-font);
	font-size: 14px;
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

.lspms-manage--entry *,
.lspms-manage--entry *::before,
.lspms-manage--entry *::after {
	box-sizing: border-box;
}

.lspms-manage--entry a {
	color: var(--entry-ink);
	text-decoration: none;
}

.lspms-manage--entry a:hover,
.lspms-manage--entry a:focus {
	text-decoration: underline;
}

.lspms-entry__sr {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.lspms-entry__shell {
	width: 100%;
	max-width: var(--entry-shell);
	margin: 0 auto;
	padding: 0 20px;
}

/* ---- utility strip: 36px ---- */

.lspms-entry__bar {
	background: var(--entry-ink);
	color: rgba( 255, 255, 255, .92 );
	font-size: 12px;
	letter-spacing: .01em;
}

.lspms-entry__bar .lspms-entry__shell {
	min-height: 36px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
}

.lspms-entry__barname {
	font-weight: 600;
}

.lspms-entry__barnote {
	font-size: 11px;
	letter-spacing: .08em;
	text-transform: uppercase;
	opacity: .72;
}

/* ---- masthead: 74px ---- */

.lspms-entry__head {
	background: var(--entry-n0);
	border-bottom: 1px solid var(--entry-n200);
}

.lspms-entry__head .lspms-entry__shell {
	min-height: 74px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding-top: 10px;
	padding-bottom: 10px;
	flex-wrap: wrap;
}

.lspms-entry__brandrow {
	display: flex;
	align-items: center;
	gap: 14px;
	min-width: 0;
}

.lspms-entry__markwrap {
	margin: 0;
	flex: none;
	display: flex;
	align-items: center;
}

.lspms-manage--entry .lspms-entry__mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: var(--entry-radius);
	background: var(--entry-accent);
	color: #fff;
	font-size: 17px;
	font-weight: 700;
	letter-spacing: .02em;
	overflow: hidden;
}

.lspms-manage--entry .lspms-entry__mark--logo {
	background: transparent;
	border-radius: 0;
	width: auto;
	height: 44px;
	min-width: 0;
	max-width: 225px;
}

.lspms-manage--entry .lspms-entry__mark--logo img {
	display: block;
	width: auto;
	height: 44px;
	max-width: 225px;
	object-fit: contain;
}

.lspms-entry__name {
	margin: 0;
	font-size: 18px;
	font-weight: 700;
	letter-spacing: .04em;
	line-height: 1.2;
	color: var(--entry-ink);
	text-transform: uppercase;
}

.lspms-entry__what {
	margin: 2px 0 0;
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--entry-n500);
}

/* ---- contact desk ---- */

.lspms-entry__care {
	display: flex;
	align-items: center;
	gap: 12px;
	flex: none;
}

.lspms-entry__careicon {
	flex: none;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	border: 2px solid var(--entry-ink);
	color: var(--entry-ink);
}

.lspms-entry__careicon svg {
	width: 22px;
	height: 22px;
	fill: currentColor;
}

.lspms-entry__caretext {
	min-width: 0;
	padding-left: 12px;
	border-left: 1px solid var(--entry-n200);
}

.lspms-entry__carehead {
	margin: 0;
	font-size: 11px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--entry-n800);
}

.lspms-entry__carephone {
	margin: 1px 0 0;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--entry-accent);
}

.lspms-manage--entry .lspms-entry__carephone a {
	color: inherit;
}

.lspms-entry__carechat {
	margin: 1px 0 0;
	font-size: 11.5px;
	font-weight: 600;
	line-height: 1.4;
}

.lspms-manage--entry .lspms-entry__carechat a {
	color: var(--entry-n500);
}

.lspms-entry__careplace {
	margin: 0;
	font-size: 11px;
	line-height: 1.4;
	color: var(--entry-n500);
}

/* ---- the hero ---- */

.lspms-entry {
	flex: 1 0 auto;
	background: var(--entry-accent);
	padding: 26px 0 48px;
}

.lspms-entry__split {
	width: 100%;
	max-width: var(--entry-shell);
	margin: 0 auto;
	padding: 0 20px;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	gap: var(--entry-gutter);
	flex-wrap: wrap;
}

.lspms-entry__card {
	flex: 0 1 var(--entry-form);
	max-width: var(--entry-form);
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	box-shadow: none;
}

.lspms-entry__aside {
	flex: 0 1 var(--entry-side);
	max-width: var(--entry-side);
	min-width: 0;
	padding: 0;
	border: 0;
}

/* ---- the form column ---- */

.lspms-entry__eyebrow {
	margin: 0 0 14px;
	font-size: 16px;
	font-weight: 500;
	line-height: 1.4;
	color: rgba( 255, 255, 255, .92 );
}

.lspms-entry__lead {
	margin: 0 0 4px;
	font-size: 20px;
	font-weight: 700;
	letter-spacing: .02em;
	color: #fff;
}

.lspms-entry__sub {
	margin: 0 0 18px;
	font-size: 12.5px;
	line-height: 1.55;
	color: rgba( 255, 255, 255, .74 );
}

.lspms-entry__notice,
.lspms-entry__error {
	margin: 0 0 14px;
	padding: 10px 14px;
	border-radius: var(--entry-radius);
	font-size: 12.5px;
	line-height: 1.5;
	border: 1px solid;
}

.lspms-entry__notice {
	background: rgba( 255, 255, 255, .94 );
	border-color: rgba( 30, 135, 75, .35 );
	color: var(--entry-success);
}

.lspms-entry__error {
	background: rgba( 255, 255, 255, .96 );
	border-color: rgba( 192, 57, 43, .4 );
	color: var(--entry-danger);
}

.lspms-entry__errormark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 17px;
	height: 17px;
	margin-right: 7px;
	border-radius: 50%;
	background: var(--entry-danger);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	vertical-align: -3px;
}

.lspms-entry__form {
	margin: 0;
}

.lspms-entry__field {
	margin: 0 0 12px;
}

.lspms-entry__field label {
	display: block;
	margin: 0 0 6px 2px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .02em;
	color: rgba( 255, 255, 255, .88 );
}

.lspms-entry__field input[type="text"],
.lspms-entry__field input[type="email"],
.lspms-entry__field input[type="password"] {
	display: block;
	width: 100%;
	max-width: none;
	height: var(--entry-control);
	padding: 0 20px;
	font-family: inherit;
	font-size: 14px;
	line-height: var(--entry-control);
	color: var(--entry-n800);
	background: var(--entry-n50);
	border: 1px solid var(--entry-n200);
	border-radius: var(--entry-radius-full);
	box-shadow: none;
	transition: background .15s ease, border-color .15s ease, box-shadow .15s ease;
}

.lspms-entry__field input::placeholder {
	color: var(--entry-n400);
}

.lspms-entry__field input[type="text"]:focus,
.lspms-entry__field input[type="email"]:focus,
.lspms-entry__field input[type="password"]:focus {
	outline: none;
	background: #fff;
	border-color: #fff;
	box-shadow: 0 0 0 3px rgba( 255, 255, 255, .38 );
}

.lspms-entry__meta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	flex-wrap: wrap;
	margin: 2px 2px 16px;
}

.lspms-entry__field--check {
	margin: 0;
}

.lspms-entry__field--check label {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 12.5px;
	font-weight: 400;
	color: rgba( 255, 255, 255, .9 );
	cursor: pointer;
}

.lspms-entry__field--check input[type="checkbox"] {
	width: 15px;
	height: 15px;
	margin: 0;
	accent-color: var(--entry-accent-gold);
}

.lspms-entry__help {
	margin: 0;
	font-size: 12.5px;
	color: rgba( 255, 255, 255, .78 );
	text-align: right;
	max-width: 230px;
}

.lspms-entry__go {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: var(--entry-control);
	padding: 0 24px;
	font-family: inherit;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #fff;
	background: var(--entry-ink);
	border: 1px solid var(--entry-ink);
	border-radius: var(--entry-radius-full);
	cursor: pointer;
	transition: background .15s ease, border-color .15s ease;
}

.lspms-entry__go:hover,
.lspms-entry__go:focus {
	filter: brightness( 1.22 );
}

.lspms-entry__go:focus-visible {
	outline: 3px solid rgba( 255, 255, 255, .55 );
	outline-offset: 2px;
}

.lspms-entry__safe {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	margin: 18px 0 0;
	font-size: 11.5px;
	line-height: 1.55;
	color: rgba( 255, 255, 255, .74 );
}

.lspms-entry__safeicon {
	flex: none;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	margin-top: -1px;
}

.lspms-entry__safeicon svg {
	width: 19px;
	height: 19px;
	fill: none;
	stroke: rgba( 255, 255, 255, .82 );
	stroke-width: 1.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---- the rotating panel: 500 x 238, radius 24, padding 24 ---- */

.lspms-entry__promo {
	position: relative;
	min-height: 238px;
	margin: 0 0 24px;
	padding: 24px;
	background: var(--entry-dark);
	color: #fff;
	border-radius: var(--entry-radius-card);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.lspms-entry__slides {
	position: relative;
	flex: 1 1 auto;
	min-height: 138px;
}

.lspms-entry__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY( 6px );
	transition: opacity .3s ease, transform .3s ease, visibility .3s;
}

.lspms-entry__slide.is-on {
	position: relative;
	opacity: 1;
	visibility: visible;
	transform: none;
}

.lspms-entry__slidehead {
	margin: 0 0 10px;
	font-size: 21px;
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: -.01em;
	color: #fff;
	max-width: 22ch;
}

.lspms-entry__slide p {
	margin: 0;
	font-size: 13px;
	line-height: 1.65;
	color: rgba( 255, 255, 255, .76 );
	max-width: 44ch;
}

.lspms-entry__promofoot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-top: 16px;
}

.lspms-entry__dots {
	display: flex;
	align-items: center;
	gap: 7px;
}

.lspms-entry__dot {
	width: 8px;
	height: 8px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba( 255, 255, 255, .32 );
	cursor: pointer;
	transition: background .2s ease, transform .2s ease;
}

.lspms-entry__dot.is-on {
	background: var(--entry-accent-gold);
	transform: scale( 1.2 );
}

.lspms-entry__dot:focus-visible,
.lspms-entry__arrow:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 3px;
}

.lspms-entry__arrows {
	display: flex;
	align-items: center;
	gap: 8px;
}

.lspms-entry__arrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 1px solid rgba( 255, 255, 255, .4 );
	border-radius: 50%;
	background: transparent;
	cursor: pointer;
	transition: background .2s ease, border-color .2s ease;
}

.lspms-entry__arrow:hover {
	background: rgba( 255, 255, 255, .13 );
	border-color: rgba( 255, 255, 255, .7 );
}

.lspms-entry__arrow svg {
	width: 12px;
	height: 12px;
	fill: none;
	stroke: #fff;
	stroke-width: 2.2;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ---- the information card: 500 x 220, radius 24 ---- */

.lspms-entry__info {
	min-height: 220px;
	padding: 24px 32px;
	background: var(--entry-n0);
	border-radius: var(--entry-radius-card);
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.lspms-entry__inforow {
	display: flex;
	align-items: flex-start;
	gap: 18px;
}

.lspms-entry__infoicon {
	flex: none;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	margin-top: 1px;
}

.lspms-entry__infoicon svg {
	width: 28px;
	height: 28px;
	fill: none;
	stroke: var(--entry-accent);
	stroke-width: 1.5;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.lspms-entry__infohead {
	margin: 0 0 4px;
	font-size: 14px;
	font-weight: 600;
	color: var(--entry-n800);
}

.lspms-entry__inforow p {
	margin: 0;
	font-size: 13px;
	line-height: 1.6;
	color: var(--entry-n500);
}

.lspms-entry__inforow ul {
	margin: 6px 0 0;
	padding-left: 17px;
	font-size: 13px;
	line-height: 1.65;
	color: var(--entry-n500);
}

.lspms-entry__inforule {
	height: 1px;
	margin: 18px 0;
	background: var(--entry-n100);
}

/* ---- the marks along the bottom ---- */

.lspms-entry__foot {
	margin-top: auto;
	background: var(--entry-n0);
	border-top: 1px solid var(--entry-n200);
}

.lspms-entry__foot .lspms-entry__shell {
	padding-top: 18px;
	padding-bottom: 18px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}

.lspms-entry__marks {
	display: flex;
	align-items: center;
	gap: 22px;
	flex-wrap: wrap;
}

.lspms-entry__brand {
	display: block;
	background-repeat: no-repeat;
	background-position: left center;
	background-size: contain;
	opacity: .78;
}

.lspms-entry__brand--orbit {
	width: 96px;
	height: 32px;
	background-image: url( brand/orbitnology-dark.png );
}

.lspms-entry__qr {
	display: flex;
	align-items: center;
	gap: 9px;
	text-decoration: none;
}

.lspms-entry__qr:hover,
.lspms-entry__qr:focus {
	text-decoration: none;
}

.lspms-entry__qrcode {
	display: block;
	flex: none;
	width: 52px;
	height: 52px;
	padding: 3px;
	background: #fff url( brand/orbitnology-qr.png ) no-repeat center center;
	background-size: 46px 46px;
	border: 1px solid var(--entry-n200);
	border-radius: var(--entry-radius-sm);
}

.lspms-entry__qrtext {
	font-size: 10.5px;
	line-height: 1.35;
	letter-spacing: .02em;
	color: var(--entry-n400);
}

.lspms-entry__legal {
	margin: 0;
	font-size: 11.5px;
	line-height: 1.6;
	color: var(--entry-n400);
	text-align: right;
}

/* ---- composition below the two-column threshold ---- */

@media ( max-width: 1120px ) {

	.lspms-manage--entry {
		--entry-gutter: 48px;
	}

	.lspms-entry__card,
	.lspms-entry__aside {
		flex-basis: 420px;
		max-width: 460px;
	}
}

@media ( max-width: 960px ) {

	.lspms-entry {
		padding: 22px 0 32px;
	}

	.lspms-entry__split {
		gap: 28px;
	}

	.lspms-entry__card,
	.lspms-entry__aside {
		flex-basis: 100%;
		max-width: 520px;
		width: 100%;
	}
}

@media ( max-width: 640px ) {

	.lspms-entry__shell,
	.lspms-entry__split {
		padding-left: 16px;
		padding-right: 16px;
	}

	.lspms-entry__head .lspms-entry__shell {
		align-items: flex-start;
		flex-direction: column;
		gap: 14px;
		padding-top: 14px;
		padding-bottom: 14px;
	}

	.lspms-entry__care {
		width: 100%;
	}

	.lspms-entry__barnote {
		display: none;
	}

	.lspms-entry__promo {
		min-height: 0;
		padding: 20px;
	}

	.lspms-entry__slides {
		min-height: 150px;
	}

	.lspms-entry__slidehead {
		font-size: 19px;
	}

	.lspms-entry__info {
		min-height: 0;
		padding: 20px;
	}

	.lspms-entry__meta {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}

	.lspms-entry__help {
		text-align: left;
		max-width: none;
	}

	.lspms-entry__foot .lspms-entry__shell {
		justify-content: center;
		text-align: center;
	}

	.lspms-entry__legal {
		width: 100%;
		text-align: center;
	}
}

@media ( prefers-reduced-motion: reduce ) {

	.lspms-entry__slide {
		transition: none;
	}
}
/* ============================================================= the bar ==== */

.lspms-manage__bar {
	display: flex;
	align-items: center;
	gap: 16px;
	height: var(--lspms-bar);
	padding: 0 16px;
	background: var(--lspms-manage-ink);
	color: #fff;
	position: sticky;
	top: 0;
	z-index: 40;
}

.lspms-manage__brand {
	display: flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
}

.lspms-manage__mark {
	flex: none;
	width: 28px;
	height: 28px;
	border-radius: 5px;
	background: rgba(255, 255, 255, 0.16);
	font-size: 0.72rem;
	font-weight: 700;
	line-height: 28px;
	text-align: center;
}

.lspms-manage__brandtext {
	font-weight: 600;
	font-size: 0.94rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/*
 * The business switcher. Shown only to somebody with more than one business,
 * so it is never a row of doors that refuse you.
 */
.lspms-manage__switch {
	display: flex;
	gap: 2px;
	padding: 3px;
	border-radius: var(--lspms-radius);
	background: rgba(255, 255, 255, 0.12);
	margin-left: auto;
}

.lspms-manage__switchlink {
	padding: 5px 12px;
	border-radius: 4px;
	color: rgba(255, 255, 255, 0.82);
	font-size: 0.82rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

.lspms-manage__switchlink:hover,
.lspms-manage__switchlink:focus { background: rgba(255, 255, 255, 0.14); color: #fff; }

/* The current business is filled, not merely brighter: shape, not colour alone. */
.lspms-manage__switchlink.is-current {
	background: #fff;
	color: var(--lspms-manage-ink);
}

.lspms-manage__who {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-left: auto;
	min-width: 0;
}

/*
 * When the switcher is present it has already taken the auto margin, so the
 * person's name sits beside it rather than being pushed to a second row.
 */
.lspms-manage__switch ~ .lspms-manage__who { margin-left: 0; }

.lspms-manage__whoname {
	font-size: 0.85rem;
	color: rgba(255, 255, 255, 0.88);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.lspms-manage__out {
	padding: 5px 10px;
	border: 1px solid rgba(255, 255, 255, 0.28);
	border-radius: 4px;
	color: #fff;
	font-size: 0.8rem;
	text-decoration: none;
	white-space: nowrap;
}

/*
 * THE `color: #fff` ABOVE HAS NEVER APPLIED, AND THAT IS THE WHOLE OF THIS FIX.
 *
 * `.lspms-manage a` at line 65 sets every link to the business accent. It is
 * (0,1,1) -- one class and one type -- and `.lspms-manage__out` is (0,1,0),
 * one class and no type. One type selector is all it takes: the generic rule
 * outranks the component's own colour, and this control has been wearing the
 * accent since it was written.
 *
 * On the masthead that is a dark business ink, so the accent lands on a
 * background of nearly its own darkness. The three businesses now share one
 * accent and one ink, so there is one measurement where there were three:
 *
 *     all three   #414c9e on #1b2050   2.01:1
 *
 * far below AA, and measured rather than inferred. White, which is what the
 * component asked for in the first place, reads at 15.34 -- and at 10.00 once
 * the hover background lightens the bar.
 *
 * (Before the management systems were unified these were #0f6f6a on #0a3f3c at
 * 1.96, #414c9e on #1b2050 at 2.01 and #5c6f2a on #2f3a14 at 2.17. Three
 * different numbers, the same defect; the fix below never depended on which.)
 *
 * The fix is to let the component win, at the same scope the generic rule
 * uses: `.lspms-manage a.lspms-manage__out` is (0,2,1). No `!important`, no
 * per-business patch, no new colour -- the value was always #fff.
 *
 * IT CANNOT REACH DARK MODE, BY CONSTRUCTION. The R10 rule that paints
 * management links from each business's own ink is
 * `:root[data-tl-theme="dark"] .lspms-manage a`, which is (0,3,1) and still
 * outranks this. So in dark mode the control keeps the business ink it was
 * given yesterday -- 5.49, 6.69 and 5.96:1 on the same bars, all above AA --
 * and R10 stays exactly as it was deployed and verified. Two readable
 * treatments, one per theme, and neither one an accident.
 */
.lspms-manage a.lspms-manage__out { color: #fff; }

/*
 * THE HOVER STATE NEEDS ONE CLASS MORE, AND MEASURING IS WHY.
 *
 * The rest state above is settled: white in light, and in dark the R10 rule
 * still wins and paints the business ink at 5.49 / 6.69 / 5.96:1. Both read.
 *
 * Hover does not. The background lightens by 14% white -- the same lift in
 * both themes, because the bar is `--lspms-manage-ink` and that token does not
 * change with the theme -- and a business ink sitting on a lightened bar falls
 * through AA:
 *
 *     lodge   #8cbab7 on #2c5a57   3.63:1
 *     hostel  #a4a9d0 on #3b3f69   4.36:1
 *     group   #b1ba99 on #4c5635   3.85:1
 *
 * That is today's deployed behaviour, not something introduced here: the old
 * hover rule was (0,2,0) and lost to R10's (0,3,1) exactly as the rest state
 * did. It was found by computing the hover ground rather than by looking at
 * the resting one.
 *
 * White on that same lightened bar is 7.76 / 10.00 / 7.81 in both themes, so
 * the component's own colour is the answer here too -- it just has to outrank
 * a rule that carries the dark attribute. Adding the wrapper takes this to
 * (0,4,1) against (0,3,1). Still no `!important`; still no new colour.
 */
.lspms-manage .lspms-manage__who a.lspms-manage__out:hover,
.lspms-manage .lspms-manage__who a.lspms-manage__out:focus {
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
}

.lspms-manage__body { min-height: calc(100vh - var(--lspms-bar)); }

@media (max-width: 600px) {
	.lspms-manage__bar {
		height: auto;
		flex-wrap: wrap;
		gap: 10px;
		padding: 10px 12px;
	}

	.lspms-manage__brandtext { font-size: 0.88rem; }
	.lspms-manage__whoname { display: none; }

	.lspms-manage__switch,
	.lspms-manage__switch ~ .lspms-manage__who { margin-left: auto; }
}

/* ================================================ what wp-admin supplied ==== */

/*
 * These are WordPress's class names, drawn in this application's language.
 * Only the ones the dashboards actually use are here — a compatibility layer
 * that grows to cover everything is just wp-admin's stylesheet with extra
 * steps.
 */

.lspms-manage .button,
.lspms-manage .button-primary,
.lspms-manage .button-secondary {
	display: inline-block;
	padding: 7px 14px;
	border: 1px solid var(--lspms-line);
	border-radius: 5px;
	background: var(--lspms-surface);
	color: var(--lspms-ink-1);
	font: inherit;
	font-size: 0.86rem;
	font-weight: 500;
	line-height: 1.35;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	vertical-align: middle;
}

.lspms-manage .button:hover,
.lspms-manage .button:focus { background: var(--lspms-sunken); }

.lspms-manage .button-primary {
	border-color: transparent;
	background: var(--lspms-manage-accent);
	color: #fff;
	font-weight: 600;
}

.lspms-manage .button-primary:hover,
.lspms-manage .button-primary:focus { background: var(--lspms-manage-ink); color: #fff; }

.lspms-manage .button-small { padding: 4px 9px; font-size: 0.8rem; }

.lspms-manage .button-link-delete {
	border-color: transparent;
	background: none;
	color: var(--lspms-danger);
}

.lspms-manage .button-link-delete:hover,
.lspms-manage .button-link-delete:focus {
	background: var(--lspms-danger-bg);
	color: var(--lspms-danger);
}

.lspms-manage .button:disabled,
.lspms-manage .button[disabled] {
	opacity: 0.5;
	cursor: not-allowed;
}

.lspms-manage .widefat {
	width: 100%;
	border-collapse: collapse;
	background: var(--lspms-surface);
}

.lspms-manage .widefat th,
.lspms-manage .widefat td {
	padding: 10px 12px;
	border-bottom: 1px solid var(--lspms-line);
	text-align: left;
	vertical-align: top;
}

.lspms-manage .widefat th {
	font-size: 0.76rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--lspms-ink-3);
	background: var(--lspms-sunken);
	white-space: nowrap;
}

.lspms-manage .notice {
	margin: 0 0 16px;
	padding: 10px 14px;
	border-left: 3px solid var(--lspms-line);
	border-radius: 0 var(--lspms-radius) var(--lspms-radius) 0;
	background: var(--lspms-sunken);
	font-size: 0.9rem;
}

.lspms-manage .notice-error { border-left-color: var(--lspms-danger); background: var(--lspms-danger-bg); }
.lspms-manage .notice-success { border-left-color: var(--lspms-good); background: var(--lspms-good-bg); }
.lspms-manage .notice-warning { border-left-color: #8a6410; background: #f9f1de; }
.lspms-manage .notice p { margin: 0; }

.lspms-manage .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.lspms-manage .regular-text { width: 100%; max-width: 25em; }

/*
 * wp-admin puts a wrapper around every screen and the dashboards inherit a
 * little spacing from it. Supplied here so they are not flush against the
 * window edge.
 */
.lspms-manage .wrap { margin: 0; padding: 0; }

@media (prefers-reduced-motion: reduce) {
	.lspms-manage * { transition: none !important; animation: none !important; }
}

/* --------------------------------------------------- a logo, where there is one */

/*
 * The `--logo` variant keeps the frame the initials had and replaces what is
 * inside it. Same size, same corner radius, same position, so a business that
 * chooses a logo does not shift everything beside it -- and the tinted panel
 * goes, because a logo supplies its own ground and a coloured square behind a
 * transparent PNG is a border nobody asked for.
 *
 * `object-fit: contain` rather than `cover`: a logo is a shape somebody
 * designed, and cropping it to fill a square is the one thing that makes it
 * stop being their logo.
 */
.lspms-entry__markwrap {
	margin: 0 0 16px;
	text-align: center;
}

.lspms-entry__mark--logo,
.lspms-manage__mark--logo {
	background: none;
	box-shadow: none;
}

.lspms-entry__mark--logo {
	display: inline-flex;
	margin: 0;
	width: auto;
	max-width: 180px;
	height: 44px;
}

.lspms-entry__mark--logo img,
.lspms-manage__mark--logo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.lspms-manage__mark--logo {
	display: inline-flex;
	width: auto;
	max-width: 120px;
	height: 28px;
}
