/*
 * Inner pages: everything except Home. Built from Claude Design "Lapisoft
 * Feature page template" (Template A). Loaded after ls-components.css (bands,
 * surfaces, section head, questions, gold and closing bands) on every page
 * but the front page, and in the block editor. Patterns: patterns/ls-*.php.
 * Mobile first; desktop layouts start at 922px (Astra's breakpoint).
 */

/* ---- Inner hero ----------------------------------------------------------
 * Group ls-band ls-surface-strong ls-hero-inner: a Group ls-hero-inner__text
 * (ls-path, h1, ls-text-lg, Buttons) and a Group ls-devices with an Image
 * ls-laptop. ls-hero-inner--text: no screenshot, the text up to 760px wide.
 * The transparent site header lies over it (Astra page setting, as on Home).
 */
.wp-block-group.ls-hero-inner {
	--ls-c1: calc(100% - 40px) 0px;
	--ls-c1r: 260px;
	--ls-c2: -20px calc(100% + 260px);
	--ls-c2r: 500px;
	--ls-dots: auto auto 20px 20px;
	gap: 48px;
	padding-top: calc(var(--ls-header-height-mobile) + 24px);
	padding-bottom: 56px;
	/* glow circle with its ring; thin white rim circle; two soft spots */
	background:
		radial-gradient(circle var(--ls-c1r) at var(--ls-c1), var(--ls-glow-in), var(--ls-glow-out) calc(var(--ls-c1r) - 1.5px), var(--ls-ring) 0 var(--ls-c1r), transparent 0),
		radial-gradient(circle var(--ls-c2r) at var(--ls-c2), transparent calc(var(--ls-c2r) - 1.5px), color-mix(in srgb, var(--ls-color-bg) 16%, transparent) 0 var(--ls-c2r), transparent 0),
		radial-gradient(circle at 90% 8%, color-mix(in srgb, var(--ls-color-blue-bright) 50%, transparent), transparent 32%),
		radial-gradient(circle at 5% 97%, color-mix(in srgb, var(--ls-color-blue-bright) 40%, transparent), transparent 30%),
		linear-gradient(160deg, var(--ls-color-navy-dark), var(--ls-color-navy) 48%, var(--ls-color-navy-end));
}
.ls-hero-inner__text { display: flex; flex-direction: column; gap: 20px; }
.ls-band.ls-hero-inner h1 {
	font-size: clamp(34px, 28.37px + 1.502vw, 50px);
	letter-spacing: -0.015em;
	color: var(--ls-color-bg);
}
.ls-band.ls-hero-inner p { max-width: 560px; }
.ls-band.ls-hero-inner p a { font-weight: var(--ls-font-weight-body-bold); color: var(--ls-color-bg); text-decoration: underline 2px; text-underline-offset: 5px; }
.ls-hero-inner .wp-block-buttons { flex-direction: column; align-items: stretch; gap: 12px; margin-top: 4px; }
/* Screenshot in the laptop frame, a blue glow behind it */
.ls-hero-inner > .ls-devices { position: relative; width: 100%; max-width: 600px; margin-inline: auto; }
.ls-hero-inner > .ls-devices::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: -1;
	width: 420px;
	aspect-ratio: 1;
	border-radius: 50%;
	translate: -50% -50%;
	background: radial-gradient(circle, color-mix(in srgb, var(--ls-color-blue-bright) 42%, transparent), color-mix(in srgb, var(--ls-color-blue-bright) 10%, transparent) 50%, transparent 70%);
}

/* Path line: a paragraph "<a>Features</a> Page name", a gold chevron between */
.ls-band .ls-path {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	font-size: var(--ls-fs-label);
	color: var(--ls-color-on-navy-muted);
}
.ls-path a { order: -2; }
.ls-band.ls-hero-inner .ls-path a { font-weight: var(--ls-font-weight-body); text-decoration-thickness: 1.5px; text-underline-offset: 4px; }
.ls-path::before {
	content: "";
	order: -1;
	width: 14px;
	height: 14px;
	background: var(--ls-color-accent);
	-webkit-mask: var(--ls-icon-chevron) center / contain no-repeat;
	mask: var(--ls-icon-chevron) center / contain no-repeat;
}
:is(.ls-path, .ls-pills--chain) { --ls-icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E"); }

/* ---- Rows: text (5 columns) and a drawing panel (6 columns) ---------------
 * Band ls-band ls-surface-light ls-rows holds Groups ls-row: a Group
 * ls-row__text, then an ls-panel (Custom HTML block with an inline SVG, or a
 * Group) or a Group ls-row__aside. ls-row--flip puts the second part left;
 * ls-row--top aligns both parts at the top. Phones: text first.
 * Row headings are smaller than band headings (36px at 1440).
 */
.wp-block-group.ls-rows {
	--ls-c1: calc(100% + 20px) 120px;
	--ls-c1r: 240px;
	--ls-c1-solid: 72%;
	--ls-glow-at: 88% 30%;
	--ls-from: var(--ls-color-bg);
	--ls-to: var(--ls-color-tint-bottom);
	--ls-to-at: 100%;
	--ls-dots: auto 64px 40px auto;
	gap: clamp(72px, 57.92px + 3.756vw, 112px);
}
.ls-row { display: flex; flex-direction: column; gap: 26px; }
.ls-row__text,
.ls-row__aside { display: flex; flex-direction: column; gap: 18px; }
.ls-band .ls-row h2 { font-size: clamp(28px, 25.18px + 0.751vw, 36px); line-height: 1.15; }
.ls-band .ls-panel {
	padding: 20px;
	border: 1px solid var(--ls-color-border);
	border-radius: clamp(20px, 17.18px + 0.751vw, 28px);
	background: var(--ls-color-bg);
	box-shadow: 0 24px 48px -32px color-mix(in srgb, var(--ls-color-navy) 35%, transparent);
}
.ls-panel svg { display: block; width: 100%; height: auto; }

/* Pills: a List block ls-pills */
.ls-band .ls-pills { display: flex; flex-wrap: wrap; gap: clamp(8px, 7.30px + 0.188vw, 10px); padding: 0; list-style: none; }
.ls-pills li {
	display: flex;
	align-items: center;
	min-height: clamp(38px, 37.30px + 0.188vw, 40px);
	padding: 0 clamp(16px, 15.30px + 0.188vw, 18px);
	border-radius: var(--ls-radius-pill);
	background: var(--ls-color-primary-tint);
	color: var(--ls-color-navy);
	font-size: clamp(15px, 14.65px + 0.094vw, 16px);
	font-weight: var(--ls-font-weight-body-bold);
	line-height: 1.2;
}
/* Pills joined by chevrons (a structure, in order): List ls-pills ls-pills--chain */
.ls-band .ls-pills--chain { column-gap: 30px; }
.ls-pills--chain li { position: relative; }
.ls-pills--chain li:not(:last-child)::after {
	content: "";
	position: absolute;
	left: calc(100% + 8px);
	width: 14px;
	height: 14px;
	background: var(--ls-color-primary-strong);
	-webkit-mask: var(--ls-icon-chevron) center / contain no-repeat;
	mask: var(--ls-icon-chevron) center / contain no-repeat;
}

/* ---- Columns on the navy surface ------------------------------------------
 * Band ls-band ls-surface-strong ls-cols-band: an optional ls-head, then a
 * Group ls-cols with two or three Groups ls-col (heading with ls-icon-box and
 * an ls-icon-*, p, link). The heading is an h3 under a band head, else an h2.
 */
.wp-block-group.ls-cols-band {
	--ls-c1: calc(100% - 40px) 0px;
	--ls-c1r: 260px;
	--ls-c2r: 0px;
	--ls-dots: auto 20px 28px auto;
	gap: clamp(36px, 28.96px + 1.878vw, 56px);
}
.ls-cols { display: grid; }
.ls-col { display: flex; flex-direction: column; gap: 14px; padding-block: 32px; }
.ls-col:first-child { padding-top: 0; }
.ls-col:last-child { padding-bottom: 0; }
.ls-col + .ls-col { border-top: 1px solid var(--ls-color-line-on-navy); }
.ls-band .ls-col h3 { font-size: clamp(22px, 21.30px + 0.188vw, 24px); line-height: 1.25; letter-spacing: 0; color: var(--ls-color-bg); }
.ls-band .ls-col h2 { font-size: clamp(24px, 22.59px + 0.376vw, 28px); line-height: 1.2; letter-spacing: 0; }
.ls-col p { font-size: 17px; line-height: 1.6; }
/* Icon in a translucent circle above the heading */
.ls-col .ls-icon-box { --ls-ic: clamp(52px, 50.59px + 0.376vw, 56px); }
.ls-col .ls-icon-box::before {
	width: var(--ls-ic);
	height: var(--ls-ic);
	margin-bottom: clamp(14px, 12.59px + 0.376vw, 18px);
	border-radius: 50%;
	background: color-mix(in srgb, var(--ls-color-bg) 12%, transparent);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ls-color-bg) 28%, transparent);
}
.ls-col .ls-icon-box::after { top: calc((var(--ls-ic) - 26px) / 2); left: calc((var(--ls-ic) - 26px) / 2); width: 26px; height: 26px; background: var(--ls-color-bg); }
.ls-icon-phone { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 3h3.5L10 8l-2.2 1.4a12 12 0 0 0 6.8 6.8L16 14l5 1.5V19a2 2 0 0 1-2 2A17 17 0 0 1 3 5a2 2 0 0 1 2-2z'/%3E%3C/svg%3E"); }
/* Feature pages (bolt and print from the canvas, the rest drawn to match) */
.ls-icon-bolt { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2 3 14h9l-1 8 10-12h-9l1-8z'/%3E%3C/svg%3E"); }
.ls-icon-print { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9V3h12v6'/%3E%3Crect x='6' y='14' width='12' height='8'/%3E%3Cpath d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/%3E%3C/svg%3E"); }
.ls-icon-calendar { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M16 3v4M8 3v4M3 10h18'/%3E%3C/svg%3E"); }
.ls-icon-calendar-x { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M16 3v4M8 3v4M3 10h18M10 13l4 4M14 13l-4 4'/%3E%3C/svg%3E"); }
.ls-icon-route { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='6' cy='19' r='2'/%3E%3Ccircle cx='18' cy='5' r='2'/%3E%3Cpath d='M8 19h7.5a3.5 3.5 0 0 0 0-7h-7a3.5 3.5 0 0 1 0-7H16'/%3E%3C/svg%3E"); }
.ls-icon-qr { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1'/%3E%3Cpath d='M14 14h3v3h-3zM21 14v.01M17 21h4v-4M14 21v.01'/%3E%3C/svg%3E"); }
.ls-icon-tag { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.6 13.4 13.4 20.6a2 2 0 0 1-2.8 0L3 13V3h10l7.6 7.6a2 2 0 0 1 0 2.8z'/%3E%3Ccircle cx='7.5' cy='7.5' r='1.5'/%3E%3C/svg%3E"); }
.ls-icon-remnant { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h9v7h7v9H4z'/%3E%3C/svg%3E"); }
.ls-icon-chart { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3v18h18M8 17v-5M13 17V8M18 17v-9'/%3E%3C/svg%3E"); }
.ls-icon-refresh { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12a9 9 0 1 1-3-6.7L21 8'/%3E%3Cpath d='M21 3v5h-5'/%3E%3C/svg%3E"); }
.ls-icon-list { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6h12M9 12h12M9 18h12M4 6h.01M4 12h.01M4 18h.01'/%3E%3C/svg%3E"); }
.ls-icon-export { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15V3M7 8l5-5 5 5M5 14v5a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-5'/%3E%3C/svg%3E"); }
.ls-icon-chat { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3Cpath d='M8 10h.01M12 10h.01M16 10h.01'/%3E%3C/svg%3E"); }
/* Roles (AI page), from the Home roles network: office, sales, production (Owner: ls-icon-user) */
.ls-icon-office { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='3' width='20' height='14' rx='2'/%3E%3Cpath d='M8 21h8M12 17v4'/%3E%3C/svg%3E"); }
.ls-icon-sales { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z'/%3E%3Ccircle cx='7.5' cy='7.5' r='1.2'/%3E%3C/svg%3E"); }
.ls-icon-production { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9'/%3E%3Cpath d='m18 15 4-4'/%3E%3Cpath d='m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5'/%3E%3C/svg%3E"); }

.ls-band [id] { scroll-margin-top: 32px; }
/* Columns in a grid, no lines between (AI page): ls-cols--4 (two columns
 * from 640px, four from 1024px), ls-cols--3 (two from 640px, three from 922px).
 * Phones: one column with lines, as ls-cols. */
@media (min-width: 640px) {
	.ls-cols:is(.ls-cols--3, .ls-cols--4) { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-flow: row; gap: 40px 32px; }
	.ls-cols:is(.ls-cols--3, .ls-cols--4) > .ls-col { padding: 0; border: 0; }
}
@media (min-width: 922px) {
	.ls-cols.ls-cols--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px 40px; }
}
@media (min-width: 1024px) {
	.ls-cols.ls-cols--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
/* A linked column heading on navy: white, gold underline */
.ls-surface-strong .ls-col :is(h2, h3) a { color: inherit; text-decoration: underline 2px var(--ls-color-accent); text-underline-offset: 5px; }
.ls-surface-strong .ls-col :is(h2, h3) a:is(:hover, :focus) { color: var(--ls-color-accent); }

/* Jump links in the hero (Features): Group ls-jump with an ls-note and a
 * List ls-pills ls-pills--jump of anchor links */
.ls-jump { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
.ls-band .ls-pills--jump { gap: 8px; }
.ls-pills--jump li {
	min-height: 0;
	padding: 0;
	background: color-mix(in srgb, var(--ls-color-bg) 12%, transparent);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ls-color-bg) 28%, transparent);
	font-size: 15px;
}
.ls-pills--jump a { display: block; padding: 7px 14px; border-radius: inherit; color: var(--ls-color-bg); text-decoration: none; }
.ls-pills--jump a:is(:hover, :focus-visible) { background: var(--ls-color-accent); color: var(--ls-color-navy); }
/* Text link on the gold band: navy (blue would not read on gold) */
.ls-band-gold .ls-link a { color: var(--ls-color-navy); }
.ls-band-gold .ls-link a:is(:hover, :focus) { color: var(--ls-color-navy-dark); }

/* Columns on the light surface: Group ls-cols ls-cols--light in an
 * ls-surface-light band. Pale-blue icon circles, navy headings, blue links. */
.ls-cols--light .ls-col + .ls-col { border-color: var(--ls-color-border); }
.ls-band .ls-cols--light .ls-col :is(h2, h3) { color: var(--ls-color-navy); }
.ls-cols--light .ls-icon-box::before { background: var(--ls-color-primary-tint); box-shadow: none; }
.ls-cols--light .ls-icon-box::after { background: var(--ls-color-navy); }
.ls-cols--light p a { font-weight: var(--ls-font-weight-body-bold); color: var(--ls-color-primary-strong); text-decoration: underline 2px; text-underline-offset: 4px; }
.ls-cols--light p a:is(:hover, :focus) { color: var(--ls-color-primary-active); }
/* Column bands on the light surface (AI page): the pale circle off the top right corner */
.wp-block-group.ls-cols-band.ls-surface-light { --ls-c1: calc(100% + 60px) 20px; --ls-c1r: 280px; }
/* Highlight in an h2 on the light surface: blue (gold on navy, ls-components.css) */
.ls-surface-light h2 mark { color: var(--ls-color-primary-strong); }

/* ---- Steps: an ordered List ls-steps, numbered pills ----------------------
 * List items: ls-step-accent (gold, the first step), ls-step-navy (the last).
 * One column on phones; two once there is room for them.
 */
.ls-band .ls-steps {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(max(250px, 40%), 1fr));
	gap: clamp(10px, 9.30px + 0.188vw, 14px) 24px;
	padding: 0;
	list-style: none;
	counter-reset: ls-step;
}
.ls-steps li {
	counter-increment: ls-step;
	display: flex;
	align-items: center;
	gap: 14px;
	min-height: clamp(54px, 51.89px + 0.563vw, 60px);
	padding: 6px clamp(18px, 17.30px + 0.188vw, 20px);
	border: 1px solid var(--ls-color-border);
	border-radius: var(--ls-radius-pill);
	background: var(--ls-color-bg);
	color: var(--ls-color-navy);
	font-family: var(--ls-font-heading);
	font-size: clamp(16px, 15.65px + 0.094vw, 17px);
	font-weight: var(--ls-font-weight-heading);
	line-height: 1.25;
}
.ls-steps li::before {
	content: counter(ls-step);
	flex: none;
	display: flex;
	align-items: center;
	justify-content: center;
	width: clamp(28px, 27.30px + 0.188vw, 30px);
	aspect-ratio: 1;
	border-radius: 50%;
	background: var(--ls-color-primary-tint);
	color: var(--ls-color-primary-strong);
	font-size: clamp(13px, 12.65px + 0.094vw, 14px);
}
.ls-steps .ls-step-accent { border-color: var(--ls-color-accent); background: var(--ls-color-accent); }
.ls-steps .ls-step-accent::before { background: var(--ls-color-navy); color: var(--ls-color-bg); }
.ls-steps .ls-step-navy { border-color: var(--ls-color-navy); background: var(--ls-color-navy); color: var(--ls-color-bg); }
.ls-steps .ls-step-navy::before { background: var(--ls-color-bg); color: var(--ls-color-navy); }

/* Steps band: an ls-row on the light surface, steps on the right */
.wp-block-group.ls-steps-band {
	--ls-c1: -20px 40px;
	--ls-c1r: 180px;
	--ls-c1-solid: 72%;
	--ls-glow-at: 92% 12%;
	--ls-from: var(--ls-color-bg);
	--ls-to: var(--ls-color-bg-alt);
	--ls-to-at: 100%;
	--ls-dots: auto auto 40px 48px;
}
/* Steps that are sentences, in a row's panel (QuickBooks, Switching): one
 * column, body text, rounded boxes instead of pills */
.ls-band .ls-panel .ls-steps { grid-template-columns: minmax(0, 1fr); }
.ls-panel .ls-steps li {
	align-items: flex-start;
	padding: 14px clamp(18px, 17.30px + 0.188vw, 20px);
	border-radius: clamp(20px, 18.59px + 0.376vw, 24px);
	color: var(--ls-color-heading);
	font-family: var(--ls-font-body);
	font-size: 17px;
	font-weight: var(--ls-font-weight-body);
	line-height: 1.5;
}
.ls-panel .ls-steps li::before { font-family: var(--ls-font-heading); font-weight: var(--ls-font-weight-heading); }

/* ---- Feature cards (Features, two light bands and a navy one) ---------------
 * Group ls-bento of <article> Groups ls-bento__card: pale blue, or navy with
 * ls-bento__card--navy (link: ls-link-light); on ls-surface-strong translucent
 * with ls-bento__card--glass or --glass-dark; 5 of 12 columns from 821px,
 * ls-bento__card--wide 7. Each: ls-eyebrow, h2 (anchor), paragraphs, link and
 * Image blocks ls-bento__art (an art at the end of a card sits at its bottom).
 * Group ls-bento__split: a Group ls-bento__text and an art (or a Group
 * ls-bento__stack of two), side by side once the card is 560px wide inside.
 */
.ls-bento { display: grid; gap: var(--ls-space-3); }
.ls-band .ls-bento__card {
	container-type: inline-size;
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: clamp(var(--ls-space-3), 21.18px + 0.751vw, var(--ls-space-4));
	border-radius: var(--ls-radius-card);
	background: var(--ls-color-primary-tint);
	box-shadow: var(--ls-shadow-card);
}
.ls-band .ls-bento__card h2 { font-size: clamp(24px, 22.59px + 0.376vw, 28px); line-height: 1.2; letter-spacing: 0; }
.ls-bento__card p { max-width: 62ch; font-size: 17px; line-height: 1.6; }
.ls-band .ls-bento__card--navy { background: var(--ls-color-navy); color: var(--ls-color-on-navy); }
.ls-band .ls-bento__card--navy h2 { color: var(--ls-color-bg); }
.ls-band .ls-bento__card--navy .ls-eyebrow { color: var(--ls-color-accent); }
.ls-band .ls-bento__card:is(.ls-bento__card--glass, .ls-bento__card--glass-dark) {
	border: 1.5px solid var(--ls-color-glass-line);
	background: var(--ls-color-glass);
	box-shadow: none;
	color: var(--ls-color-on-navy);
}
.ls-band .ls-bento__card.ls-bento__card--glass-dark { background: var(--ls-color-glass-dark); }
/* The navy band of glass cards (ls-bento-band): the top glow moved off the
 * corner and no rings, so no text sits on the glow center or on a ring line
 * (gold eyebrows and body text stay AA through the translucent cards). */
.wp-block-group.ls-surface-strong.ls-bento-band { --ls-c1: calc(100% + 120px) -160px; --ls-ring: transparent; }
.ls-band .ls-bento__card > .ls-bento__art:last-child { margin-top: auto; padding-top: var(--ls-space-1); }
.ls-bento__art--account img { width: 420px; }
.ls-bento__art--countertop img { width: 250px; }
.ls-bento__art--estimate img { width: 180px; }
.ls-bento__art--units img { width: 220px; }
.ls-bento__art--week img { width: 320px; }
.ls-bento__art--report img { width: 230px; }
.ls-bento__art--roles img { width: 360px; }
.ls-bento__art--tools img { width: 440px; }
.ls-bento__art--devices img { width: 360px; }
.ls-bento__art--slabs img { width: 200px; }
.ls-bento__art--steps img,
.ls-bento__art--invoices img { width: 400px; }
.ls-bento__split { display: grid; gap: 20px 32px; }
.ls-bento__text { display: flex; flex-direction: column; gap: 14px; }
.ls-bento__stack { display: grid; justify-items: start; gap: 20px; }
/* Questions (ls-asks) in a split: by the card's width, not the viewport's.
 * Under the text: to the left as on phones; beside it: 300px, to the right. */
.ls-band .ls-bento__card .ls-ask { border-radius: 20px 20px 20px 6px; margin-right: 0; }
.ls-band .ls-bento__card .ls-ask:nth-child(2) { margin-left: 24px; }
.ls-band .ls-bento__card .ls-ask:nth-child(3) { margin-left: 8px; }
.ls-band .ls-bento__card .ls-ask:nth-child(4) { margin-left: 30px; }
.ls-bento__card .ls-asks__note { align-self: stretch; }
@container (min-width: 560px) {
	.ls-bento__split { grid-template-columns: minmax(0, 1fr) auto; align-items: start; }
	.ls-band .ls-bento__split > :is(.ls-bento__art, .ls-bento__stack) { margin-top: 5px; }
	.ls-bento__stack { justify-items: center; }
	.ls-bento__split > .ls-asks { width: 300px; align-items: flex-end; }
	.ls-band .ls-bento__card .ls-ask { border-radius: 20px 20px 6px 20px; }
	.ls-band .ls-bento__card .ls-ask:nth-child(n) { margin-left: 0; }
	.ls-band .ls-bento__card .ls-ask:nth-child(2) { margin-right: 24px; }
	.ls-band .ls-bento__card .ls-ask:nth-child(3) { margin-right: 8px; }
	.ls-band .ls-bento__card .ls-ask:nth-child(4) { margin-right: 30px; }
}

/* ---- Workflow (Features, gold band) -----------------------------------------
 * Group ls-workflow: a Group ls-workflow__text (eyebrow, h2, paragraphs, an
 * Image ls-workflow__art, link) and an ordered List ls-flow (navy number
 * squares, thin lines between). Side by side, 5 to 7, from 821px.
 */
.ls-workflow { display: grid; gap: clamp(var(--ls-space-3), 12.73px + 3.005vw, 56px); }
.ls-workflow__text { display: flex; flex-direction: column; gap: var(--ls-space-2); }
.ls-workflow__text p { max-width: 48ch; }
.ls-workflow__art img { width: 220px; }
.ls-band .ls-flow { --ls-flow-badge: clamp(32px, 30.59px + 0.376vw, 36px); padding: 0; list-style: none; counter-reset: ls-flow; }
.ls-flow li {
	counter-increment: ls-flow;
	display: grid;
	grid-template-columns: var(--ls-flow-badge) minmax(0, 1fr);
	align-items: baseline;
	column-gap: var(--ls-space-2);
	padding-block: 10px;
	border-bottom: 1px solid color-mix(in srgb, var(--ls-color-navy) 35%, transparent);
	color: var(--ls-color-navy);
}
.ls-flow li:last-child { border-bottom: 0; }
/* Grid with the number centered: its baseline lines up with the first text line */
.ls-flow li::before {
	content: counter(ls-flow);
	display: grid;
	place-items: center;
	width: var(--ls-flow-badge);
	aspect-ratio: 1;
	border-radius: var(--ls-radius-sm);
	background: var(--ls-color-navy);
	color: var(--ls-color-bg);
	font-weight: var(--ls-font-weight-body-bold);
	font-variant-numeric: tabular-nums;
}

@media (min-width: 821px) {
	.ls-bento { grid-template-columns: repeat(12, minmax(0, 1fr)); }
	.ls-bento__card { grid-column: span 5; }
	.ls-bento__card--wide { grid-column: span 7; }
	.ls-workflow { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: start; }
}

/* ---- Table: a Table block ls-table (Switching), navy header row ------------
 * In an ls-surface-light band ls-table-band: ls-head, the table, an ls-note. */
.ls-table-band > .ls-table { margin-block: 8px; }
.ls-band .ls-table table {
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
	border: 1px solid var(--ls-color-border);
	border-radius: clamp(16px, 13.18px + 0.751vw, 24px);
	background: var(--ls-color-bg);
	font-size: clamp(15px, 14.30px + 0.188vw, 17px);
	line-height: 1.45;
}
.ls-band .ls-table thead { border: 0; }
.ls-band .ls-table :is(th, td) { padding: clamp(12px, 9.89px + 0.563vw, 18px) clamp(12px, 7.77px + 1.127vw, 24px); border: 0; text-align: left; vertical-align: top; }
.ls-band .ls-table th { background: var(--ls-color-navy); color: var(--ls-color-bg); font-family: var(--ls-font-heading); font-weight: var(--ls-font-weight-heading); }
.ls-band .ls-table td { color: var(--ls-color-heading); }
.ls-band .ls-table tr > * + * { border-left: 1px solid var(--ls-color-border); }
.ls-band .ls-table th + th { border-left-color: var(--ls-color-line-on-navy); }
.ls-band .ls-table tbody tr + tr td { border-top: 1px solid var(--ls-color-border); }
.ls-table a { font-weight: var(--ls-font-weight-body-bold); color: var(--ls-color-primary-strong); text-decoration: underline 1.5px; text-underline-offset: 3px; }
.ls-table a:is(:hover, :focus) { color: var(--ls-color-primary-active); }

/* Small print on white after the closing band (Switching): ls-band ls-fineprint */
.wp-block-group.ls-fineprint { padding-block: clamp(28px, 23.77px + 1.127vw, 40px); }
.ls-band.ls-fineprint p { max-width: 760px; margin-inline: auto; font-size: var(--ls-font-size-small); line-height: 1.6; text-align: center; }

/* ---- Checks: a List ls-checks of white pills with a check icon ------------
 * A List item with an ls-icon-* class shows that icon instead of the check.
 * In the gold band: eyebrow, h2, p, the list, Buttons; from 922px the list
 * sits right of the text.
 */
.ls-checks { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E"); }
.ls-band .ls-checks { display: flex; flex-direction: column; gap: clamp(10px, 8.59px + 0.376vw, 14px); padding: 0; list-style: none; }
.ls-checks li {
	display: flex;
	align-items: center;
	gap: clamp(12px, 11.30px + 0.188vw, 14px);
	min-height: clamp(54px, 51.89px + 0.563vw, 60px);
	padding: 6px clamp(20px, 19.30px + 0.188vw, 22px);
	border-radius: var(--ls-radius-pill);
	background: var(--ls-color-bg);
	box-shadow: 0 16px 32px -16px color-mix(in srgb, var(--ls-color-navy) 45%, transparent);
	color: var(--ls-color-navy);
	font-family: var(--ls-font-heading);
	font-size: clamp(16px, 15.65px + 0.094vw, 17px);
	font-weight: var(--ls-font-weight-heading);
	line-height: 1.25;
}
.ls-checks li::before {
	content: "";
	flex: none;
	width: 22px;
	height: 22px;
	background: var(--ls-color-primary-strong);
	-webkit-mask: var(--ls-icon) center / contain no-repeat;
	mask: var(--ls-icon) center / contain no-repeat;
}

/* ---- Text pages (Privacy Policy, EULA): Group ls-prose in a plain band ---- */
.ls-prose { display: flex; flex-direction: column; gap: 16px; max-width: 760px; font-size: 17px; line-height: 1.7; }
.ls-band .ls-prose h2 { margin-top: 24px; font-size: clamp(24px, 22.59px + 0.376vw, 28px); line-height: 1.2; }
.ls-band .ls-prose h3 { margin-top: 8px; font-size: 20px; line-height: 1.3; letter-spacing: 0; color: var(--ls-color-navy); }
.ls-band .ls-prose :is(ul, ol) { display: flex; flex-direction: column; gap: 8px; padding-left: 1.4em; }
/* Text links: the ls-link look, underlined at all times */
.ls-prose a {
	font-weight: 600;
	color: var(--ls-color-primary-strong);
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
}
.ls-prose a:is(:hover, :focus) { color: var(--ls-color-primary-active); }
/* A phone number never breaks at its hyphens */
a[href^="tel:"] { white-space: nowrap; }

/* ---- Simple pages: Pricing, Book a demo, Contact, Security ---------------- */

/* Text links on the navy surface: white, gold underline (the hero has its own) */
.ls-surface-strong p a {
	font-weight: var(--ls-font-weight-body-bold);
	color: var(--ls-color-bg);
	text-decoration: underline 2px var(--ls-color-accent);
	text-underline-offset: 5px;
}
.ls-surface-strong p a:is(:hover, :focus) { color: var(--ls-color-accent); }
/* Text links on white panels, also when the panel sits in the navy hero */
.ls-band .ls-panel :is(p, li) a {
	color: var(--ls-color-primary-strong);
	text-decoration: underline 1.5px currentColor;
	text-underline-offset: 3px;
}
.ls-band .ls-panel :is(p, li) a:is(:hover, :focus) { color: var(--ls-color-primary-active); }
/* Gold buttons on white or pale surfaces: a navy focus ring (gold would not show) */
:is(.ls-surface-light, .ls-panel) .wp-block-button.ls-btn-accent .wp-block-button__link:focus-visible,
.ls-form .ls-btn:focus-visible { outline-color: var(--ls-color-navy); }

/* Plan: Group ls-panel ls-plan in the Pricing hero: h2 ls-eyebrow,
 * ls-plan__price, ls-plan__label, ls-checks ls-checks--2, ls-link */
.ls-plan { display: flex; flex-direction: column; gap: 16px; }
.ls-band .ls-plan .ls-eyebrow { color: var(--ls-color-primary-strong); }
.ls-band .ls-plan__price {
	font-family: var(--ls-font-heading);
	font-size: clamp(40px, 34.37px + 1.502vw, 56px);
	font-weight: var(--ls-font-weight-heading);
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--ls-color-navy);
}
.ls-band .ls-plan__label { margin-top: 8px; font-weight: var(--ls-font-weight-body-bold); color: var(--ls-color-heading); }
.ls-band .ls-plan .ls-link { margin-top: 8px; }

/* Checks in two columns from 640px: List ls-checks ls-checks--2 */
.ls-band .ls-checks--2 { display: grid; }
@media (min-width: 640px) {
	.ls-band .ls-checks--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
}
/* In a panel: plain lines with the check icon */
.ls-band .ls-panel .ls-checks { row-gap: 12px; }
.ls-panel .ls-checks li {
	align-items: flex-start;
	gap: 10px;
	min-height: 0;
	padding: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	font-family: var(--ls-font-body);
	font-size: 17px;
	font-weight: var(--ls-font-weight-body);
	line-height: 1.45;
	color: var(--ls-color-heading);
}
.ls-panel .ls-checks li::before { width: 20px; height: 20px; margin-top: 2px; }
/* Checks band (Security): h2 and the pills, a 1px border on the light surface */
.wp-block-group.ls-checks-band { gap: clamp(28px, 23.77px + 1.127vw, 40px); }
.ls-checks-band > .ls-checks { max-width: 880px; }
.ls-surface-light > .ls-checks li { border: 1px solid var(--ls-color-border); box-shadow: none; }

/* Security practices: icons for List items (ls-icon-lock is in ls-components.css),
 * drawn like the nodes of the Security hero graphic */
.ls-icon-eye-off { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.7 5.1A10 10 0 0 1 12 5c7 0 10 7 10 7a13 13 0 0 1-1.7 2.5'/%3E%3Cpath d='M6.6 6.6A13.5 13.5 0 0 0 2 12s3 7 10 7a9.7 9.7 0 0 0 5.4-1.6'/%3E%3Cpath d='m2 2 20 20'/%3E%3Cpath d='M9.9 9.9a3 3 0 0 0 4.2 4.2'/%3E%3C/svg%3E"); }
.ls-icon-database { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cellipse cx='12' cy='5' rx='9' ry='3'/%3E%3Cpath d='M3 5v6c0 1.7 4 3 9 3s9-1.3 9-3V5'/%3E%3Cpath d='M3 11v6c0 1.7 4 3 9 3s9-1.3 9-3v-6'/%3E%3C/svg%3E"); }
.ls-icon-trash { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18'/%3E%3Cpath d='M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2'/%3E%3Cpath d='m19 6-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6'/%3E%3Cpath d='M10 11v6'/%3E%3Cpath d='M14 11v6'/%3E%3C/svg%3E"); }
.ls-icon-key { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='7.5' cy='15.5' r='5.5'/%3E%3Cpath d='m21 2-9.6 9.6'/%3E%3Cpath d='m15.5 7.5 3 3L22 7l-3-3'/%3E%3C/svg%3E"); }
.ls-icon-shield-check { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E"); }
.ls-icon-clipboard-check { --ls-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='2' width='8' height='4' rx='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E"); }

/* Steps in one row on desktop (any count): List ls-steps ls-steps--row, right in the band */
.ls-band .ls-steps--row { grid-template-columns: minmax(0, 1fr); }
.ls-band > .ls-steps--row { margin-block: 12px 8px; }
.ls-steps--row li { text-wrap: balance; }
/* On the gold band: white pills with navy number circles */
.ls-band-gold .ls-steps li { border-color: var(--ls-color-bg); box-shadow: 0 16px 32px -16px color-mix(in srgb, var(--ls-color-navy) 45%, transparent); }
.ls-band-gold .ls-steps li::before { background: var(--ls-color-navy); color: var(--ls-color-bg); }
/* Compact (Book a demo hero): ls-steps ls-steps--compact, number circles and
 * white text, no pills */
.ls-band .ls-steps--compact { grid-template-columns: minmax(0, 1fr); gap: 12px; }
.ls-steps--compact li {
	align-items: flex-start;
	min-height: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	color: var(--ls-color-bg);
	font-family: var(--ls-font-body);
	font-size: var(--ls-fs-text);
	font-weight: var(--ls-font-weight-body);
	line-height: 1.5;
}
.ls-steps--compact li::before { background: var(--ls-color-accent); color: var(--ls-color-navy); font-family: var(--ls-font-heading); }

/* Panel in the hero instead of the screenshot: ls-hero-inner--panel (Pricing:
 * the plan; Book a demo: the form; Contact: the map). Under 1024px the panel
 * comes under the text. ls-hero-inner--overlap: from 1024px the panel reaches
 * 96px into the next band, which gets ls-band--after-overlap for that room. */
.ls-hero-inner > .ls-panel { width: 100%; max-width: 600px; color: var(--ls-color-body); }
/* ls-hero-inner__more: a second text Group after the panel (Book a demo: the
 * next steps), so the form comes right after the lead below 1024px. From
 * 1024px it sits under the first text Group, left of the panel. */
.ls-band.ls-hero-inner .ls-hero-inner__text h2 {
	margin-top: 12px;
	font-size: clamp(22px, 21.30px + 0.188vw, 24px);
	line-height: 1.25;
	letter-spacing: 0;
}

/* Graphic: Custom HTML block <div class="ls-graphic"> with an inline SVG.
 * ls-hero-inner--graphic: the graphic right of the hero text from 1024px.
 * ls-split: a Group with a Group ls-split__text and the graphic, side by
 * side from 1024px. Below, the graphic comes under the text. */
.ls-graphic { width: 100%; max-width: 520px; margin-inline: auto; }
.ls-graphic svg { display: block; width: 100%; height: auto; overflow: visible; }
.ls-split { display: flex; flex-direction: column; gap: 48px; }
.ls-split__text { display: flex; flex-direction: column; gap: 20px; }
.ls-split > .ls-graphic { max-width: 480px; }

/* Contact details on navy: <address class="ls-contact-list"> with a ul, each
 * li an inline SVG icon and the text (Custom HTML block) */
.ls-band .ls-contact-list { margin: 0; font-style: normal; }
.ls-band .ls-contact-list ul { display: flex; flex-direction: column; gap: 16px; padding: 0; list-style: none; }
.ls-contact-list li { display: flex; align-items: flex-start; gap: 16px; font-size: var(--ls-fs-text-lg); line-height: 1.5; color: var(--ls-color-bg); }
.ls-contact-list li > :last-child { padding-top: 6px; }
.ls-contact-list svg {
	flex: none;
	width: 42px;
	height: 42px;
	padding: 10px;
	border-radius: 50%;
	background: color-mix(in srgb, var(--ls-color-bg) 12%, transparent);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ls-color-bg) 28%, transparent);
	fill: none;
	stroke: var(--ls-color-accent);
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.ls-contact-list a { font-weight: var(--ls-font-weight-body-bold); color: var(--ls-color-bg); text-decoration: underline 2px var(--ls-color-accent); text-underline-offset: 5px; }
.ls-contact-list a:is(:hover, :focus) { color: var(--ls-color-accent); }

/* Map: <div class="ls-panel ls-map"> (Custom HTML block) with a pin, the
 * address and a "Show map" link to Google Maps. ls-map.js (only on pages with
 * a map) puts the Google Maps iframe in its place on click; nothing loads
 * from Google before that.
 * The world map (img/shapes/world-map.svg) is twice the panel width. New
 * Jersey (24% / 27.4% of this map, read off its coastline; the map is shifted
 * in longitude, so 29.4% would be the Atlantic) sits under the pin tip,
 * 42% from the left and 24% of the panel width from the top. All offsets are
 * shares of the panel width, so they hold at any panel height. */
.ls-band .ls-panel.ls-map {
	container-type: inline-size;
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	min-height: 240px;
	padding: 24px;
	overflow: hidden;
	border-color: var(--ls-color-line-on-navy);
	background:
		radial-gradient(circle at 85% 12%, color-mix(in srgb, var(--ls-color-blue-bright) 60%, transparent), transparent 50%),
		linear-gradient(160deg, var(--ls-color-navy-dark), var(--ls-color-primary-strong));
	color: var(--ls-color-bg);
	text-align: center;
}
.ls-map::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	z-index: -1;
	width: 200%;
	aspect-ratio: 2;
	/* margins in % of the panel width: pin spot minus NJ's spot on the map */
	margin: calc(24% - 27.4%) 0 0 calc(42% - 48%);
	background: url(../img/shapes/world-map.svg) 0 0 / 100% 100% no-repeat;
}
.ls-map > * { flex: none; }
/* The pin's tip (bottom center of the SVG) on New Jersey */
.ls-map svg { position: absolute; top: 0; left: 42%; width: 40px; height: auto; margin: calc(24% - 50px) 0 0 -20px; }
/* Address and button centered under the pin */
.ls-map > :not(svg) { translate: -8cqw 0; }
.ls-band .ls-map p { margin-top: calc(24cqw - 10px); font-size: var(--ls-fs-text-lg); line-height: 1.5; }
.ls-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; translate: none; }
@media (min-width: 600px) {
	.ls-band .ls-panel.ls-map { aspect-ratio: 16 / 10; }
}

/* ---- Animated graphics (Claude Design "Security-graphic", "Contact-rings") --
 * Keyframes here, the pulses of the Security graphic are SMIL in the SVG.
 * Reduced motion: no animation, the pulses and radar rings are hidden. */
@keyframes ls-sec-halo { 0%, 100% { transform: scale(1); opacity: 0.55; } 50% { transform: scale(1.1); opacity: 0.9; } }
@keyframes ls-sec-node { 0%, 7%, 100% { transform: scale(1); } 3.5% { transform: scale(1.12); } }
@keyframes ls-sec-rim { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }
.ls-sec-halo { transform-origin: 300px 290px; transform-box: view-box; animation: ls-sec-halo 6s ease-in-out infinite; }
.ls-sec-rim { animation: ls-sec-rim 6s ease-in-out infinite; }
.ls-sec-node { transform-box: fill-box; transform-origin: center; animation: ls-sec-node 24s ease-in-out infinite; }
@keyframes ls-ring-radar { 0% { r: 18px; opacity: 0.7; } 100% { r: 215px; opacity: 0; } }
@keyframes ls-ring-pin { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
.ls-ring-radar { animation: ls-ring-radar 4.5s ease-out infinite; }
.ls-ring-radar-2 { animation: ls-ring-radar 4.5s ease-out 2.25s infinite; }
.ls-ring-pin { transform-box: fill-box; transform-origin: center; animation: ls-ring-pin 3s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
	.ls-sec-halo, .ls-sec-rim, .ls-sec-node, .ls-ring-pin { animation: none; }
	.ls-sec-pulse, .ls-ring-radar, .ls-ring-radar-2 { display: none; }
}

/* ---- Forms: WPForms form-selector block with the class ls-form ------------
 * Classic WPForms markup with its base styling. Labels, fields and the submit
 * button (form setting: CSS class "ls-btn ls-btn-accent") come from here;
 * the required mark, the honeypot and the error messages keep WPForms' look.
 * Group ls-panel ls-form-panel around it; notes under it: ls-form-note.
 */
.ls-form-panel { display: flex; flex-direction: column; gap: 18px; }
.ls-band .ls-form-note { font-size: var(--ls-font-size-small); line-height: 1.55; color: var(--ls-color-body); }
.ls-form.wpforms-container { --ls-field-border: var(--ls-color-placeholder-line); margin: 0; }
.ls-form .wpforms-field-container { display: flex; flex-direction: column; gap: 20px; }
.ls-form.wpforms-container .wpforms-field { padding: 0; }
.ls-form.wpforms-container .wpforms-field-label {
	margin: 0 0 8px;
	font-family: var(--ls-font-heading);
	font-size: 15px;
	font-weight: var(--ls-font-weight-heading);
	line-height: 1.35;
	color: var(--ls-color-navy);
}
.ls-form.wpforms-container :is(input[type=text], input[type=email], textarea) {
	height: 54px;
	margin: 0;
	padding: 0 16px;
	border: 1.5px solid var(--ls-field-border);
	border-radius: 12px;
	background: var(--ls-color-bg);
	box-shadow: none;
	color: var(--ls-color-heading);
	font-family: var(--ls-font-body);
	font-size: 17px;
	line-height: 1.4;
}
.ls-form.wpforms-container .wpforms-field textarea { height: 140px; padding: 14px 16px; resize: vertical; }
.ls-form.wpforms-container :is(input, textarea):focus { border-color: var(--ls-color-primary); outline: 3px solid var(--ls-color-primary); outline-offset: 1px; }
.ls-form.wpforms-container .wpforms-field-description { margin-top: 6px; font-size: var(--ls-font-size-small); line-height: 1.45; color: var(--ls-color-body); }
/* Choices (Demo preference) */
.ls-form.wpforms-container .wpforms-field-radio ul { display: flex; flex-wrap: wrap; gap: 10px 28px; padding: 0; }
.ls-form.wpforms-container .wpforms-field-radio li { display: flex; align-items: center; gap: 10px; margin: 0; }
.ls-form.wpforms-container input[type=radio] { flex: none; width: 20px; height: 20px; margin: 0; accent-color: var(--ls-color-primary-strong); }
.ls-form.wpforms-container input[type=radio]:focus-visible { outline: 3px solid var(--ls-color-primary); outline-offset: 2px; }
.ls-form.wpforms-container .wpforms-field-label-inline { font-size: 17px; line-height: 1.4; color: var(--ls-color-heading); cursor: pointer; }
.ls-form.wpforms-container .wpforms-submit-container { display: flex; align-items: center; padding-top: 8px; }
/* The invisible reCAPTCHA (Contact) needs no room of its own */
.ls-form.wpforms-container .wpforms-is-recaptcha-type-invisible { padding: 0; }

/* Phones and tablets: full-width buttons in the hero, the gold band and forms */
@media (max-width: 921px) {
	.ls-band:is(.ls-hero-inner, .ls-band-gold):not(.ls-close) :is(.wp-block-button, .wp-block-button__link) { width: 100%; }
	.ls-form .wpforms-submit { width: 100%; }
}

/* ==== Desktop ============================================================== */
@media (min-width: 922px) {
	.wp-block-group.ls-hero-inner {
		--ls-c1: calc(100% - 190px) 70px;
		--ls-c1r: 450px;
		--ls-c2: 80px calc(100% + 380px);
		--ls-c2r: 800px;
		--ls-dots: auto auto 44px 48px;
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		align-items: center;
		column-gap: 32px;
		padding-top: calc(var(--ls-header-height) + 56px);
		padding-bottom: 112px;
	}
	.ls-hero-inner__text { grid-column: span 6; gap: 24px; }
	.ls-hero-inner > .ls-devices { grid-column: 7 / span 6; }
	.ls-hero-inner > .ls-devices::before { width: 560px; }
	.ls-hero-inner--text .ls-hero-inner__text { grid-column: 1 / -1; max-width: 760px; }
	.wp-block-group.ls-hero-inner--panel { align-items: start; }
	.ls-hero-inner--panel .ls-hero-inner__text { grid-column: 1 / span 5; padding-top: 24px; }
	.ls-hero-inner--panel .ls-hero-inner__more { padding-top: 0; }
	.ls-hero-inner--panel > .ls-panel { grid-column: 7 / span 6; max-width: none; }
	.ls-hero-inner > .ls-map { align-self: center; }
	.ls-hero-inner .wp-block-buttons { flex-direction: row; align-items: center; gap: 14px; margin-top: 8px; }
	.ls-band .ls-path { gap: 10px; }

	.wp-block-group.ls-rows {
		--ls-c1: calc(100% - 20px) 220px;
		--ls-c1r: 280px;
		--ls-dots: auto 64px 40px auto;
	}
	.ls-row { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: center; column-gap: 32px; }
	.ls-row > * { grid-row: 1; grid-column: 1 / span 5; }
	.ls-row > :last-child { grid-column: 7 / span 6; }
	.ls-row--flip > :first-child { grid-column: 8 / span 5; }
	.ls-row--flip > :last-child { grid-column: 1 / span 6; }
	.ls-row--top { align-items: start; }
	.ls-row__text { gap: 20px; }
	.ls-band .ls-panel { padding: 36px 40px; box-shadow: 0 32px 64px -40px color-mix(in srgb, var(--ls-color-navy) 35%, transparent); }

	.wp-block-group.ls-cols-band {
		--ls-c1: calc(100% - 110px) 50px;
		--ls-c1r: 410px;
		--ls-c2: 60px calc(100% - 20px);
		--ls-c2r: 320px;
		--ls-dots: auto 64px 44px auto;
	}
	.ls-col { gap: 18px; }

	.wp-block-group.ls-steps-band { --ls-c1: 20px 100px; --ls-c1r: 260px; }
	.ls-band .ls-steps--row { grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }

	.ls-band-gold:has(> .ls-checks) {
		display: grid;
		grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
		align-items: start;
		column-gap: 11%;
		row-gap: 22px;
	}
	.ls-band-gold:has(> .ls-checks) > * { grid-column: 1; }
	.ls-band-gold > .ls-checks { grid-column: 2; grid-row: 1 / span 4; align-self: center; }
}
/* Heroes with a panel or a graphic: one column up to 1023px */
@media (min-width: 922px) and (max-width: 1023px) {
	.wp-block-group.ls-hero-inner:is(.ls-hero-inner--panel, .ls-hero-inner--graphic) { display: flex; align-items: stretch; }
	.ls-hero-inner--panel > .ls-panel { max-width: 600px; }
}
@media (min-width: 1024px) {
	.ls-hero-inner > .ls-graphic { grid-column: 7 / span 6; max-width: 600px; }
	.wp-block-group.ls-hero-inner--overlap { z-index: 1; overflow: visible; }
	/* Bottom of the row, minus the hero's bottom padding (112px) and the 96px
	 * overlap: the panel ends 96px below the hero however tall the text is */
	.ls-hero-inner--overlap > .ls-panel { align-self: end; margin-bottom: -208px; }
	/* The 1fr row takes what the panel needs beyond the two text Groups */
	.wp-block-group.ls-hero-inner:has(> .ls-hero-inner__more) { grid-template-rows: auto 1fr; row-gap: 24px; }
	.ls-hero-inner:has(> .ls-hero-inner__more) > .ls-panel { grid-row: 1 / span 2; }
	.ls-hero-inner > .ls-hero-inner__more { grid-row: 2; }
	/* A text beside a form (Contact) is centered on the form's height */
	.ls-row--top > .ls-row__text:has(+ .ls-form-panel) { align-self: center; }
	.wp-block-group.ls-band--after-overlap { padding-top: calc(clamp(72px, 57.92px + 3.756vw, 112px) + 96px); }
	.ls-split { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); align-items: center; column-gap: 32px; }
	.ls-split__text { grid-column: 1 / span 5; }
	.ls-split > .ls-graphic { grid-column: 7 / span 6; max-width: 560px; }

	.ls-cols { grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
	.ls-col { padding: 0 40px; }
	.ls-col:first-child { padding-left: 0; }
	.ls-col:last-child { padding-right: 0; }
	.ls-col + .ls-col { border-top: 0; border-left: 1px solid var(--ls-color-line-on-navy); }
}

/* ==== AI page ===============================================================
 * Chat panel: Group ls-panel ls-ai-chat with an optional Group ls-ai-chat__head
 * (ls-ai-chat__title, ls-ai-chat__status), the question ls-ai-chat__q, the
 * lookup line ls-ai-chat__tool ls-icon-eye, the answer paragraphs and a Table
 * block ls-ai-chat__table. In the hero (ls-hero-inner--panel) or in a Group
 * ls-ai-chats (three side by side from 1200px). */
.ls-band .ls-panel.ls-ai-chat {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 18px 16px;
	border-radius: 22px;
	box-shadow: var(--ls-shadow-bubble);
	color: var(--ls-color-body);
	font-size: 16px;
	line-height: 1.55;
}
.ls-ai-chat strong { font-weight: var(--ls-font-weight-body-bold); color: var(--ls-color-navy); }
.ls-ai-chat__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; padding-bottom: 14px; border-bottom: 1px solid var(--ls-color-border); }
.ls-band .ls-ai-chat__title { font-family: var(--ls-font-heading); font-weight: var(--ls-font-weight-heading); color: var(--ls-color-navy); }
.ls-band .ls-ai-chat__status {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 4px 12px;
	border-radius: var(--ls-radius-pill);
	background: var(--ls-color-primary-tint);
	color: var(--ls-color-primary-strong);
	font-size: var(--ls-font-size-small);
	font-weight: var(--ls-font-weight-body-bold);
	line-height: 1.4;
	white-space: nowrap;
}
.ls-ai-chat__status::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
/* The person's question: a navy bubble on the right */
.ls-band .ls-ai-chat .ls-ai-chat__q {
	align-self: flex-end;
	max-width: 88%;
	padding: 12px 16px;
	border-radius: 18px 18px 4px 18px;
	background: var(--ls-color-navy);
	color: var(--ls-color-bg);
	font-weight: var(--ls-font-weight-body-bold);
	line-height: 1.45;
}
.ls-band .ls-ai-chat__tool { display: flex; align-items: center; gap: 8px; font-size: var(--ls-font-size-small); line-height: 1.4; color: var(--ls-color-text); }
.ls-ai-chat__tool::before {
	content: "";
	flex: none;
	width: 18px;
	height: 18px;
	background: var(--ls-color-primary-strong);
	-webkit-mask: var(--ls-icon) center / contain no-repeat;
	mask: var(--ls-icon) center / contain no-repeat;
}
.ls-band .ls-ai-chat__table table {
	width: 100%;
	margin: 0;
	border: 1px solid var(--ls-color-border);
	border-collapse: separate;
	border-spacing: 0;
	border-radius: 12px;
	font-size: var(--ls-font-size-small);
	line-height: 1.4;
}
.ls-band .ls-ai-chat__table td { padding: 10px 6px; border: 0; vertical-align: top; }
.ls-band .ls-ai-chat__table td:first-child { padding-left: 12px; }
.ls-band .ls-ai-chat__table td:last-child { padding-right: 12px; }
.ls-band .ls-ai-chat__table tr + tr td { border-top: 1px solid var(--ls-color-border); }
.ls-ai-chat__table td[data-align="right"] { white-space: nowrap; }
.ls-ai-chats { display: grid; gap: 20px; max-width: 640px; margin-block: clamp(16px, 8.96px + 1.878vw, 36px) 4px; }

/* Columns with the icon left of the heading, on one line (the roles):
 * ls-cols--icon-inline. 24px icon in a 36px circle, 12px gap; heading to
 * text 8px, text to the questions 16px. */
.ls-cols--icon-inline > .ls-col { gap: 8px; }
.ls-cols--icon-inline .ls-icon-box { --ls-ic: 36px; display: flex; align-items: center; gap: 12px; }
.ls-cols--icon-inline .ls-icon-box::before { flex: none; margin: 0; }
.ls-cols--icon-inline .ls-icon-box::after { top: calc(50% - 12px); left: 6px; width: 24px; height: 24px; }

/* Sample questions in a column: Group ls-ai-asks of paragraphs, speech
 * bubbles as in the Home AI band, light version */
.ls-ai-asks { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.ls-band .ls-col > .ls-ai-asks { margin-top: 8px; }
.ls-band .ls-ai-asks p {
	padding: 14px 18px;
	border-radius: 18px 18px 18px 6px;
	background: var(--ls-color-primary-tint);
	color: var(--ls-color-navy);
	font-family: var(--ls-font-heading);
	font-size: 16px;
	font-weight: var(--ls-font-weight-heading);
	line-height: 1.35;
}

/* Line items: Group ls-lines of Groups ls-lines__item (a label, then a line of
 * text), a hairline above each, no boxes. Three columns from 640px. */
.ls-lines { display: grid; column-gap: 32px; margin-top: clamp(4px, -1.63px + 1.502vw, 20px); }
.ls-lines__item { display: flex; flex-direction: column; gap: 8px; padding: 20px 0 24px; border-top: 1px solid var(--ls-color-border); }
.ls-band .ls-lines__item > :first-child {
	font-family: var(--ls-font-heading);
	font-size: clamp(12px, 11.65px + 0.094vw, 13px);
	font-weight: var(--ls-font-weight-heading);
	line-height: 1.4;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--ls-color-primary-strong);
}
.ls-band .ls-lines__item > :last-child { font-family: var(--ls-font-heading); font-size: 18px; font-weight: var(--ls-font-weight-heading); line-height: 1.35; color: var(--ls-color-navy); }

/* AI assistants on the gold band: Group ls-ai-tools of Groups ls-ai-tool, each
 * an Image ls-ai-tool__logo (a white pill) and its caption. In a row from 640px. */
.ls-ai-tools { display: grid; gap: 28px; max-width: 420px; margin-top: 12px; }
.ls-ai-tool { display: flex; flex-direction: column; gap: 14px; text-align: center; }
.ls-band .ls-ai-tool__logo {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 64px;
	border-radius: var(--ls-radius-pill);
	background: var(--ls-color-bg);
	box-shadow: 0 16px 32px -16px color-mix(in srgb, var(--ls-color-navy) 45%, transparent);
}
.ls-band .ls-ai-tool__logo img { width: auto; height: 24px; }
.ls-band .ls-ai-tool p { color: var(--ls-color-navy); }

/* Closing lines under the columns on navy: Group ls-ai-more (a line and links) */
.ls-ai-more { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 32px; padding-top: 28px; border-top: 1px solid var(--ls-color-line-on-navy); }

@media (min-width: 640px) {
	.ls-lines { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.ls-ai-tools { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; max-width: none; }
}
@media (min-width: 922px) {
	.ls-band .ls-panel.ls-ai-chat { padding: 26px 28px; }
	.ls-ai-tools { gap: 32px; }
}
@media (min-width: 1200px) {
	.ls-ai-chats { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; gap: 24px; max-width: none; }
}
