/* Public-only CSS bundle for static export.
   Includes: base resets, page layout, style-system, preset visuals, responsive atoms.
   Excludes: editor.css, ai-panel.css, and all editor-only selectors.
*/

/* ── src/styles/parts/base.css ── */
@import url('https://fonts.googleapis.com/css2?family=Anton&family=Archivo+Black&family=Bricolage+Grotesque:wght@400;500;600;700;800&family=Fraunces:wght@400;500;600;700;900&family=Hanken+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&family=Newsreader:wght@400;500;600;700&family=Nunito:wght@400;500;600;700;800&family=Nunito+Sans:wght@400;500;600;700;800&family=Outfit:wght@400;500;600;700&family=Playfair+Display:wght@400;500;600;700;800;900&family=Sora:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&family=Unbounded:wght@400;500;600;700;800;900&display=swap');

:root {
  color-scheme: dark;
  font-family: var(--lms-body-font, system-ui, sans-serif);
  background: #060910;
  color: #f8fafc;
  --hdr-radius: 10px;
  --hdr-radius-popover: 20px;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-width: 320px;
  background: #060910;
}

a {
  color: inherit;
}

button,
input,
textarea {
  font: inherit;
}

.v2-shell {
  min-height: 100vh;
  background: #09090b;
}

/* ─── Builder header ─────────────────────────────────────────────────────── */

.v2-builder-header {
  /* ── One source of truth for every header control height (DESIGN_SYSTEM §5) ── */
  --ctl-h: 2.25rem; /* 36px — icon buttons, wf pill, overflow */
  --hdr-group-h: 28px; /* compact pill groups — matches settings panel tabs */
  --hdr-group-bg: rgba(24, 24, 27, 0.9); /* matches settings panel pill bg */
  --hdr-radius: 10px; /* chrome radius — independent of page design language */
  /* Chrome tiers — left pill groups darker (wf-pill), right icon buttons lighter */
  --hdr-chrome-border: rgba(100, 116, 139, 0.2);
  --hdr-chrome-bg-panel: rgba(100, 116, 139, 0.1);
  --hdr-chrome-bg-btn: #1c1c1f;
  --hdr-chrome-hover-panel: rgba(100, 116, 139, 0.16);
  --hdr-chrome-hover-btn: #27272a;
  /* Active chrome — same tokens as settings panel pills */
  --hdr-active-bg: rgba(245, 158, 11, 0.14);
  --hdr-active-border: rgba(245, 158, 11, 0.45);
  --hdr-active-color: #fbbf24;
  --builder-header-h: 4rem;

  position: sticky;
  top: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-height: 4rem;         /* ~64px */
  --v2-header-h: 4rem;
  padding: 0 1rem;
  border-bottom: 1px solid rgba(39, 39, 42, 0.9);
  background: #09090b;
  backdrop-filter: blur(18px);
  flex-wrap: nowrap;
  overflow: hidden;
}

/*
 * Universal header control token — EVERY interactive element in the header
 * must be exactly --ctl-h tall. Apply .v2-hdr-ctl directly or via the specific
 * sub-classes that extend it. box-sizing:border-box + line-height:1 ensure
 * padding+icon never inflate the height.
 */
.v2-hdr-ctl {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--ctl-h);
  line-height: 1;
  flex-shrink: 0;
}

.v2-builder-header__brand {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
}

.v2-builder-header--compact .v2-brand-text {
  display: none;
}

/* Center + actions stay side-by-side — never split across columns */
.v2-builder-header__toolbar {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex: 0 0 auto;
  margin-left: auto;
}

/* Brand text block */
.v2-brand-name {
  display: block;
  color: #fff;
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.25;
  white-space: nowrap;
}

.v2-brand-sub {
  display: block;
  color: #a1a1aa;
  font-size: 0.625rem;    /* 10px — matches V1 text-[10px] */
  font-weight: 500;
  margin-top: 0.05rem;
  white-space: nowrap;
}

.v2-agent-mode-badge {
  display: inline-block;
  margin-top: 0.2rem;
  padding: 0.1rem 0.4rem;
  font-size: 0.5625rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #fbbf24;
  background: rgba(245, 158, 11, 0.12);
  border: 1px solid rgba(245, 158, 11, 0.35);
  border-radius: var(--hdr-radius, 6px);
}

.v2-fleet {
  max-width: 1100px;
  margin: 0 auto;
  padding: 2rem 1.5rem;
  color: #e4e4e7;
}

.v2-fleet__title { font-size: 1.5rem; font-weight: 700; margin: 0; }
.v2-fleet__sub { color: #a1a1aa; font-size: 0.75rem; margin: 0.25rem 0 0; }
.v2-fleet__table { width: 100%; border-collapse: collapse; margin-top: 1.5rem; font-size: 0.8125rem; }
.v2-fleet__table th,
.v2-fleet__table td { padding: 0.65rem 0.5rem; border-bottom: 1px solid rgba(63, 63, 70, 0.6); text-align: left; }
.v2-fleet__table th { color: #a1a1aa; font-weight: 600; font-size: 0.6875rem; text-transform: uppercase; }
.v2-fleet__link { background: none; border: none; color: #fbbf24; cursor: pointer; font-weight: 600; padding: 0; }
.v2-fleet__slug { color: #71717a; font-size: 0.6875rem; }
.v2-fleet__health { display: inline-flex; align-items: center; gap: 0.25rem; text-transform: capitalize; }
.v2-fleet__cap { display: inline-flex; align-items: center; gap: 0.25rem; color: #a1a1aa; }
.v2-fleet__muted, .v2-fleet__error { margin-top: 1rem; }
.v2-fleet__error { color: #f87171; }

/* ─── Center column (undo/redo + device) ────────────────────────────────────── */

.v2-builder-header__center {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  flex: 0 0 auto;
}

/* Outer wrapper holding the two ctrl-groups */
.v2-center-controls {
  display: flex;
  align-items: center;
  gap: 6px;
}

.v2-ctrl-group {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: var(--hdr-group-h);
  padding: 2px;
  border-radius: var(--hdr-radius);
  border: none;
  background: var(--hdr-group-bg);
}

.v2-ctrl-btn {
  box-sizing: border-box;
  display: grid;
  place-items: center;
  width: calc(var(--hdr-group-h) - 4px);
  height: calc(var(--hdr-group-h) - 4px);
  padding: 0;
  border: none;
  border-radius: var(--hdr-radius);
  background: transparent;
  color: #e4e4e7;
  cursor: pointer;
  transition: background 140ms ease, color 140ms ease;
  line-height: 1;
  flex-shrink: 0;
}

.v2-ctrl-btn:hover:not(:disabled):not(.v2-ctrl-btn--active) {
  color: #fff;
  background: var(--hdr-chrome-hover-panel);
}

.v2-ctrl-btn:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.v2-ctrl-btn.v2-ctrl-btn--active {
  color: var(--hdr-active-color);
  background: var(--hdr-active-bg);
}

.v2-ctrl-btn.v2-ctrl-btn--active:hover:not(:disabled) {
  color: #fff;
  background: var(--hdr-active-bg);
}

/* Icon tone modifiers on secondary chrome */
.v2-hdr-btn.v2-hdr-btn--secondary.v2-hdr-icon-sq--success {
  color: #34d399;
}

.v2-hdr-btn.v2-hdr-btn--secondary.v2-hdr-icon-sq--success:hover:not(:disabled) {
  color: #6ee7b7;
}

.v2-hdr-btn.v2-hdr-btn--secondary.v2-hdr-icon-sq--muted,
.v2-hdr-btn.v2-hdr-btn--secondary.v2-hdr-icon-sq--muted:disabled {
  color: #52525b;
  opacity: 1;
  cursor: not-allowed;
  pointer-events: none;
}

/* ─── Icon-only save button (legacy alias — same grid as icon-sq) ─────────── */

.v2-hdr-icon-sq {
  width: var(--ctl-h);     /* 36px — 1:1 square */
  height: var(--ctl-h);
  padding: 0;
}

/* CRITICAL FIX: the icon-only square buttons (save, overflow ⋯, panel toggle) ALSO
 * carry `.v2-hdr-btn`, whose `padding: 0 0.875rem` (14px each side) + inline-flex are
 * defined LATER in this file and were SQUISHING the 16px icon to ~6px wide (measured).
 * Out-specify it (0,2,0 > 0,1,0) so these are true 36px squares with a full 16px icon,
 * the same visual size as every other header icon. */
.v2-hdr-btn.v2-hdr-icon-sq {
  padding: 0;
  display: grid;
  place-items: center;
}

/* Open panel / menu (Seaded, AI, overflow…) — amber chrome; hover = white icon only */
.v2-hdr-btn.v2-hdr-icon-sq--active {
  background: var(--hdr-active-bg);
  color: var(--hdr-active-color);
}

.v2-hdr-btn.v2-hdr-icon-sq--active:hover:not(:disabled) {
  color: #fff;
}

/* AI header icon — light blue chrome (matches language card AI btn) */
.v2-hdr-btn.v2-hdr-icon-sq--ai:hover:not(:disabled):not(.v2-hdr-icon-sq--muted) {
  background: color-mix(in srgb, #38bdf8 18%, transparent);
  color: #38bdf8;
}

.v2-hdr-btn.v2-hdr-icon-sq--ai.v2-hdr-icon-sq--active {
  background: color-mix(in srgb, #38bdf8 18%, transparent);
  color: #38bdf8;
}

.v2-hdr-btn.v2-hdr-icon-sq--ai.v2-hdr-icon-sq--active:hover:not(:disabled) {
  color: #fff;
}

.v2-hdr-btn.v2-hdr-icon-sq svg {
  background: none;
}

/* ─── Overflow menu popover ───────────────────────────────────────────────── */

.v2-overflow-menu {
  border-radius: var(--hdr-radius-popover);
  border: 1px solid rgba(39,39,42,0.9);
  background: rgba(9,9,11,0.98);
  backdrop-filter: blur(18px);
  box-shadow: 0 16px 48px rgba(0,0,0,0.6);
  padding: 0.35rem;
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}

.v2-overflow-menu__title {
  margin: 0;
  padding: 0.35rem 0.75rem 0.25rem;
  color: #71717a;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.v2-overflow-menu__soon {
  margin-left: auto;
  color: #71717a;
  font-size: 0.625rem;
  font-weight: 500;
  font-style: italic;
}

.v2-overflow-menu__item--disabled,
.v2-overflow-menu__item--disabled:disabled {
  color: #71717a;
  cursor: not-allowed;
  opacity: 0.85;
}

.v2-overflow-menu__item--disabled:hover,
.v2-overflow-menu__item--disabled:disabled:hover {
  background: transparent;
  color: #71717a;
}

.v2-overflow-menu__item {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  width: 100%;
  padding: 0.55rem 0.75rem;
  border: none;
  border-radius: var(--hdr-radius);
  background: transparent;
  color: #e4e4e7;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  text-align: left;
  transition: background 120ms ease, color 120ms ease;
}

.v2-overflow-menu__item:hover {
  background: rgba(39,39,42,0.8);
  color: #fff;
}

.v2-overflow-menu__item--danger {
  color: #f87171;
}

.v2-overflow-menu__item--danger:hover {
  background: rgba(239,68,68,0.1);
  color: #fca5a5;
}

.v2-overflow-menu__divider {
  height: 1px;
  background: rgba(39,39,42,0.6);
  margin: 0.2rem 0.35rem;
}

/* ─── Mode toggle — segmented pill (matches V1 device-toggle pill) ──────────── */

.v2-mode-pill {
  display: flex;
  align-items: center;
  gap: 0.375rem;           /* gap-1.5 */
  background: #09090b;     /* bg-slate-900 */
  border: 1px solid #1c1c1f; /* border-slate-800 */
  border-radius: var(--hdr-radius);  /* rounded-xl */
  padding: 4px;
  justify-self: center;
  flex-shrink: 0;
}

.v2-mode-pill__seg {
  height: auto;
  padding: 0.5rem 0.75rem; /* p-2 / px-3 */
  border: none;
  border-radius: var(--hdr-radius);   /* rounded-lg */
  background: transparent;
  color: #a1a1aa;          /* text-slate-400 */
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 140ms ease, color 140ms ease;
  white-space: nowrap;
  line-height: 1;
}

.v2-mode-pill__seg:hover:not(.v2-mode-pill__seg--active) {
  color: #fff;
  background: #1c1c1f;     /* hover:bg-slate-800 */
}

.v2-mode-pill__seg--active {
  background: #f59e0b;     /* bg-amber-500 */
  color: #1c1917;          /* text-stone-950 */
  font-weight: 900;
}

.v2-mode-pill__seg--active:hover {
  color: #fff;
}

/* ─── Header action buttons (right cluster) ─────────────────────────────────── */

.v2-builder-header__actions {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
}

/*
 * Base action button — EXACTLY var(--ctl-h) tall, all variants.
 * height:var(--ctl-h) is the source of truth; padding-block is zeroed out and
 * replaced by the fixed height + align-items:center so icons never inflate it.
 */
.v2-hdr-btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  /* exact --ctl-h height — do NOT use padding-block for height control */
  height: var(--ctl-h);       /* 36px */
  padding: 0 0.875rem;        /* horizontal only — icon-only uses .v2-hdr-icon-sq override */
  border-radius: var(--hdr-radius);
  font-size: 0.75rem;         /* text-xs */
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 140ms ease, color 140ms ease;
  /* default = secondary slate */
  border: none;
  background: var(--hdr-chrome-bg-btn);
  color: #e4e4e7;
}

.v2-hdr-btn:hover:not(:disabled):not(.v2-hdr-icon-sq--active) {
  background: var(--hdr-chrome-hover-btn);
  color: #fff;
}

/* Primary — solid amber (V1 "Genereeri AI-ga" / Save dirty style) */
.v2-hdr-btn--primary {
  border: none;
  background: #f59e0b;        /* bg-amber-500 */
  color: #1c1917;             /* text-stone-950 */
  font-weight: 700;
}

.v2-hdr-btn--primary:hover:not(:disabled) {
  background: #d97706;        /* hover:bg-amber-600 */
  color: #1c1917;
}

/*
 * Secondary — explicit class so Reset / Demo / JSON / ZIP all look alike.
 * (same as base, declared for clarity)
 */
.v2-hdr-btn--secondary {
  border: none;
  background: var(--hdr-chrome-bg-btn);
  color: #e4e4e7;
}

.v2-hdr-btn--secondary:hover:not(:disabled):not(.v2-hdr-icon-sq--active) {
  background: var(--hdr-chrome-hover-btn);
  color: #fff;
}

/*
 * Save button — slightly wider (px-5 = 1.25rem) + uppercase tracking, like V1.
 * Two state classes appended in JSX.
 */
.v2-hdr-btn--save {
  padding: 0.5rem 1.25rem;    /* px-5 py-2 — V1 Save exact */
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* dirty / idle → amber */
.v2-hdr-btn--save-dirty {
  border: none;
  background: #f59e0b;
  color: #1c1917;
}

.v2-hdr-btn--save-dirty:hover:not(:disabled) {
  background: #d97706;
  color: #1c1917;
}

/* saved → emerald */
.v2-hdr-btn--save-done {
  border: none;
  background: #059669;        /* bg-emerald-600 */
  color: #fff;
}

.v2-hdr-btn--save-done:hover:not(:disabled) {
  background: #047857;        /* hover:bg-emerald-700 */
}

.v2-hdr-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ─── Workflow pill in header ─────────────────────────────────────────────── */

.v2-wf-pill-wrap {
  position: relative;
}

.v2-wf-pill {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  height: 25px;
  padding: 0 8px;
  border: none;
  border-radius: 999px;
  background: var(--hdr-chrome-bg-btn);
  font-size: 8px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  cursor: pointer;
  white-space: nowrap;
  line-height: 1;
  transition: opacity 140ms ease, filter 140ms ease;
}

.v2-wf-pill:hover {
  filter: brightness(1.15);
}

/* ─── Workflow floating popover ────────────────────────────────────────────── */

.v2-wf-popover {
  border-radius: var(--hdr-radius-popover);
  border: 1px solid rgba(39, 39, 42, 0.8);
  background: rgba(9, 9, 11, 0.98);
  backdrop-filter: blur(20px);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.7);
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.v2-wf-popover__heading {
  font-size: 0.6rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #52525b;
}

.v2-wf-popover__status-label {
  font-size: 0.88rem;
  font-weight: 800;
  color: #f4f4f5;
  line-height: 1.3;
}

.v2-wf-popover__desc {
  font-size: 0.73rem;
  color: #71717a;
  line-height: 1.5;
}

.v2-wf-popover__divider {
  border: none;
  border-top: 1px solid rgba(39, 39, 42, 0.6);
  margin: 0;
}

.v2-wf-popover__meta-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.45rem 0.65rem;
  border: 1px solid rgba(39, 39, 42, 0.6);
  border-radius: var(--hdr-radius);
  background: rgba(9, 9, 11, 0.4);
  font-size: 0.73rem;
}

.v2-wf-popover__meta-key {
  color: #52525b;
}

.v2-wf-popover__meta-val {
  color: #a1a1aa;
  font-weight: 600;
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.v2-wf-popover__pin-wrap {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.v2-wf-popover__pin-val {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.35rem;
  max-width: none;
  overflow: visible;
}

.v2-wf-pin-input {
  width: 4.5rem;
  padding: 0;
  border: none;
  background: transparent;
  color: #71717a;
  font: inherit;
  font-weight: 600;
  text-align: right;
  letter-spacing: 0.12em;
  outline: none;
}

.v2-wf-pin-input::placeholder {
  color: #52525b;
  letter-spacing: 0.08em;
}

.v2-wf-pin-input.is-active {
  color: #fbbf24;
  font-weight: 800;
}

.v2-wf-pin-error,
.v2-wf-pin-success {
  padding: 0 0.65rem;
  font-size: 0.65rem;
  font-weight: 600;
}

.v2-wf-pin-error {
  color: #f87171;
}

.v2-wf-pin-success {
  color: #34d399;
}

.v2-wf-popover__advance-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  width: 100%;
  padding: 0.6rem 1rem;
  border: none;
  border-radius: var(--hdr-radius);
  background: #f59e0b;
  color: #0a0a0a;
  font-weight: 900;
  font-size: 0.78rem;
  cursor: pointer;
  transition: background 140ms ease;
}

.v2-wf-popover__advance-btn:hover:not(:disabled) {
  background: #fbbf24;
}

.v2-wf-popover__advance-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.v2-wf-popover__no-action {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.55rem 0.65rem;
  border: 1px solid rgba(39, 39, 42, 0.5);
  border-radius: var(--hdr-radius);
  background: rgba(9, 9, 11, 0.4);
  font-size: 0.72rem;
  color: #52525b;
  line-height: 1.5;
}

.v2-preview {
  min-height: calc(100vh - 4.2rem);
}

.v2-json {
  display: grid;
  gap: 1rem;
  padding: 1rem;
}

.v2-json textarea {
  width: 100%;
  min-height: calc(100vh - 10rem);
  resize: vertical;
  border: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: var(--lms-radius);
  padding: 1rem;
  background: rgba(2, 6, 23, 0.92);
  color: #e5e7eb;
  line-height: 1.6;
}

.v2-json > div {
  display: flex;
  gap: 0.6rem;
}

/* ─── Back button in builder header ─────────────────────────────────────── */

/* Back button — var(--ctl-h) square, matches all other header controls */
.v2-back-btn {
  box-sizing: border-box;
  display: grid;
  place-items: center;
  width: var(--ctl-h);     /* 36px — 1:1 square */
  height: var(--ctl-h);
  border: 1px solid rgba(63, 63, 70, 0.5);
  border-radius: var(--hdr-radius);
  padding: 0;
  background: rgba(30, 30, 34, 0.8);
  color: #94a3b8;
  cursor: pointer;
  flex-shrink: 0;
  line-height: 1;
  transition: background 140ms ease, color 140ms ease, border-color 140ms ease;
}

.v2-back-btn:hover {
  background: rgba(39, 39, 42, 0.9);        /* hover:bg-slate-700 */
  border-color: rgba(63, 63, 70, 0.9);
  color: #fff;
}

/* ─── Task 5: Puck right sidebar slide animation ─────────────────────────────
 *
 * Puck controls the right panel via two mechanisms:
 *   1. Grid column width: _PuckLayout-inner changes grid-template-columns from
 *      "… 0" → "… var(--puck-right-side-bar-width)" when rightSideBarVisible.
 *      Puck already transitions grid-template-rows; we add grid-template-columns.
 *   2. The sidebar element itself uses display:none → display:flex, which cannot
 *      be transitioned directly. The grid column animation achieves the visual
 *      slide because the sidebar content is constrained by the grid track width.
 *
 * We target Puck's hashed class names via [class*="..."] attribute selectors —
 * this survives hash changes across Puck versions since the semantic prefix
 * (PuckLayout-inner, Sidebar--right) is stable.
 * ─────────────────────────────────────────────────────────────────────────── */

/* Animate the grid column so the right panel slides in/out */
[class*="PuckLayout-inner"] {
  transition:
    grid-template-columns 200ms ease,
    grid-template-rows 150ms ease-in; /* preserve Puck's existing row transition */
}

/* Smooth opacity on the sidebar content so it fades in as the column expands */
[class*="Sidebar--right"] {
  transition: opacity 180ms ease;
}

/* When hidden (display:none is set by Puck before this class is removed) the
   sidebar is invisible; once visible, fade the content in slightly after the
   column starts expanding — a subtle stagger makes the slide feel intentional */
[class*="Sidebar--isVisible"][class*="Sidebar--right"] {
  animation: v2-panel-fade-in 200ms ease forwards;
}

@keyframes v2-panel-fade-in {
  from { opacity: 0; transform: translateX(8px); }
  to   { opacity: 1; transform: translateX(0);   }
}

/* ─── Puck editor chrome (PuckChromeSync data attributes) ─────────────────── */

@media (min-width: 638px) {
  .lms-site-root[data-v2-left-chrome='closed'][data-v2-right-chrome='closed'] [class*='PuckLayout-inner'] {
    --puck-side-nav-width: 0 !important;
    grid-template-columns: 0 0 minmax(266px, auto) 0 !important;
  }

  .lms-site-root[data-v2-left-chrome='closed'][data-v2-right-chrome='open'] [class*='PuckLayout-inner'] {
    --puck-side-nav-width: 0 !important;
    grid-template-columns: 0 0 minmax(266px, auto) var(--puck-right-side-bar-width) !important;
  }

  .lms-site-root[data-v2-left-chrome='open'][data-v2-right-chrome='closed'] [class*='PuckLayout-inner'] {
    grid-template-columns:
      var(--puck-side-nav-width)
      var(--puck-left-side-bar-width)
      minmax(266px, auto)
      0 !important;
  }

  .lms-site-root[data-v2-left-chrome='open'][data-v2-right-chrome='open'] [class*='PuckLayout-inner'] {
    grid-template-columns:
      var(--puck-side-nav-width)
      var(--puck-left-side-bar-width)
      minmax(266px, auto)
      var(--puck-right-side-bar-width) !important;
  }
}

.lms-site-root[data-v2-left-chrome='closed'] [class*='PuckLayout-nav'],
.lms-site-root[data-v2-left-chrome='closed'] [class*='Sidebar--left'],
.lms-site-root[data-v2-left-chrome='closed'] [class*='Sidebar--left'] + [class*='Sidebar-resizeHandle'],
.lms-site-root[data-v2-left-chrome='closed'] [class*='ResizeHandle--left'] {
  display: none !important;
  width: 0 !important;
  min-width: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

.lms-site-root[data-v2-right-chrome='closed'] [class*='Sidebar--right'],
.lms-site-root[data-v2-right-chrome='closed'] [class*='Sidebar--right'] + [class*='Sidebar-resizeHandle'],
.lms-site-root[data-v2-right-chrome='closed'] [class*='ResizeHandle--right'] {
  display: none !important;
  width: 0 !important;
  min-width: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

/* spin animation for Save icon */
.v2-spin {
  animation: v2-spin-icon 0.8s linear infinite;
}

@keyframes v2-spin-icon {
  to { transform: rotate(360deg); }
}

/* ─── Builder fields + wizard toggle (editor/admin shared) ─────────────── */

.v2-field {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.v2-label {
  color: #64748b;
  font-size: 0.67rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.v2-input {
  width: 100%;
  border: 1px solid rgba(148,163,184,0.18);
  border-radius: var(--lms-radius, 0.5rem);
  padding: 0.7rem 1rem;
  background: rgba(2,6,23,0.85);
  color: #f8fafc;
  font-size: 0.9rem;
  transition: border-color 140ms ease, outline 140ms ease;
}

.v2-input:focus {
  outline: 2px solid rgba(245,158,11,0.45);
  border-color: rgba(245,158,11,0.5);
}

textarea.v2-input {
  resize: vertical;
  line-height: 1.55;
}

.v2-toggle {
  position: relative;
  width: 2.4rem;
  height: 1.3rem;
  flex-shrink: 0;
}

.v2-toggle input { opacity: 0; width: 0; height: 0; }

.v2-toggle__track {
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: rgba(148,163,184,0.18);
  border: 1px solid rgba(148,163,184,0.2);
  cursor: pointer;
  transition: background 150ms ease;
}

.v2-toggle input:checked + .v2-toggle__track {
  background: rgba(245,158,11,0.6);
  border-color: rgba(245,158,11,0.7);
}

.v2-toggle__track::after {
  content: '';
  position: absolute;
  top: 0.15rem;
  left: 0.15rem;
  width: 0.9rem;
  height: 0.9rem;
  border-radius: 50%;
  background: #94a3b8;
  transition: transform 150ms ease, background 150ms ease;
}

.v2-toggle input:checked + .v2-toggle__track::after {
  transform: translateX(1.1rem);
  background: #fbbf24;
}

/* ─── Workflow badge (builder + list) ────────────────────────────────────── */

.v2-wf-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.65rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  border: 1px solid;
  white-space: nowrap;
}

.v2-wf-progress {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0.2rem;
  margin-top: 0.45rem;
}

.v2-wf-progress__bar {
  height: 5px;
  border-radius: 999px;
}

.v2-wf-label {
  margin-top: 0.3rem;
  font-size: 0.65rem;
  font-weight: 600;
  color: #475569;
  line-height: 1.3;
}


/* ─── Device preview width (skin-v1 editor) ──────────────────────────────────
 *
 * App.tsx adds v2-device--{desktop|tablet|mobile} to .lms-site-root.
 * The live preview pane (.v2-preview) is constrained accordingly.
 * Desktop has no override (stays 100%).
 * ─────────────────────────────────────────────────────────────────────────── */

.v2-device--tablet .v2-preview {
  max-width: 820px !important;
  margin-inline: auto !important;
}

.v2-device--mobile .v2-preview {
  max-width: 400px !important;
  margin-inline: auto !important;
}

/* desktop = no override → 100% */

/* ─── Editor canvas: floating site nav overlays hero (not in document flow) ─
 * rootConfig sets position:fixed for floating+sticky headers (correct for export).
 * Puck used sticky here, which reserved nav height and left a gap above the hero.
 * Floating headers → absolute within .lms-page (position:relative) so the hero
 * image runs edge-to-edge with nav painted on top. Solid bars keep inline sticky.
 * ─────────────────────────────────────────────────────────────────────────── */

.lms-site-root .lms-site-nav:not(.lms-site-nav--solid) {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
}

/* ─── Header transparent→glass scroll state ─────────────────────────────────
 * Applied by initLmsHeaderScroll (runtime/headerScroll.ts) when window.scrollY > 64.
 * Works in both preview/editor (via useEffect) and static export (IIFE script).
 * Transition is declared on the base .lms-site-nav; state changes trigger it here.
 * ─────────────────────────────────────────────────────────────────────────── */

.lms-site-nav {
  transition:
    background 280ms ease,
    backdrop-filter 280ms ease,
    -webkit-backdrop-filter 280ms ease,
    border-color 280ms ease,
    box-shadow 280ms ease;
}

/* Frost-lite scroll state — see _chrome-system.css for .lms-site-nav--frost / .is-scrolled */

/* ─── Site footer (slim bar) ────────────────────────────────────────────────
 * Single flex row: copyright left, legal links right.
 * Stacks centered on mobile. Themed via --lms-* tokens.
 * ─────────────────────────────────────────────────────────────────────────── */

.lms-site-footer {
  border-top: 1px solid color-mix(in srgb, var(--lms-text, #f3f5fa) 8%, transparent);
  padding-block: 1.25rem;
  padding-inline: clamp(1.5rem, 5vw, 4rem);
}

.lms-site-footer__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  margin-inline: auto;
  flex-wrap: nowrap;
}

.lms-site-footer__copy {
  font-size: 0.78rem;
  color: var(--lms-text-muted, rgba(243, 245, 250, 0.45));
  line-height: 1.5;
}

.lms-site-footer__lsm-link {
  color: var(--lms-text-muted, rgba(243, 245, 250, 0.45));
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color 160ms ease;
}

.lms-site-footer__lsm-link:hover {
  color: var(--lms-text, #f3f5fa);
}

.lms-site-footer__legal {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  flex-shrink: 0;
  white-space: nowrap;
}

.lms-site-footer__made {
  white-space: nowrap;
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.78rem;
  font-weight: 400;
  color: var(--lms-text-muted, rgba(243, 245, 250, 0.45));
}

.lms-site-footer__legal a {
  font-size: 0.78rem;
  color: var(--lms-text-muted, rgba(243, 245, 250, 0.45));
  text-decoration: none;
  transition: color 160ms ease;
  cursor: pointer;
}

.lms-site-footer__legal a:hover {
  color: var(--lms-text, #f3f5fa);
}

/* Light theme overrides */
.lms-page--light .lms-site-footer {
  border-top-color: rgba(17, 24, 39, 0.1);
}

.lms-page--light .lms-site-footer__copy,
.lms-page--light .lms-site-footer__lsm-link,
.lms-page--light .lms-site-footer__legal a {
  color: rgba(17, 24, 39, 0.45);
}

.lms-page--light .lms-site-footer__lsm-link:hover,
.lms-page--light .lms-site-footer__legal a:hover {
  color: #111827;
}

/* Mobile: vertical stack — copyright → legal → made by */
@media (max-width: 600px) {
  .lms-site-footer__inner {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.5rem;
    font-size: 0.7rem;
  }
  .lms-site-footer__copy,
  .lms-site-footer__legal a,
  .lms-site-footer__made {
    font-size: 0.7rem;
  }
  .lms-site-footer__legal {
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
  }
}

/* ─────────────────────────────────────────────────────────────────────────────
 * V1-STYLE RIGHT PANEL SKIN  (Phase 1 reskin, #7 from EDITOR_PLAN.md)
 *
 * Selectors use [class*="…"] attribute matching — Puck 0.21 generates CSS
 * module names like `_Sidebar_o396p`, `_SidebarSection_5otpt`, etc. The
 * semantic prefix before the first `_` hash is stable across minor Puck updates,
 * so we match on it without the trailing hash.
 *
 * Ownership: this block lives in base.css (agent-owned file). Do NOT duplicate
 * or override these in editor.css.
 * ───────────────────────────────────────────────────────────────────────────── */

/* ── 1. Panel container ─────────────────────────────────────────────────────── */

/* Right sidebar shell — dark panel, no Puck's white default */
.lms-site-root [class*="_Sidebar--right_"] {
  background: #0f1117 !important;
  border-left: 1px solid rgba(39, 39, 42, 0.85) !important;
  box-shadow: -4px 0 24px rgba(0, 0, 0, 0.35) !important;
}

/* Slim custom scrollbar on the right panel */
.lms-site-root [class*="_Sidebar--right_"]::-webkit-scrollbar {
  width: 4px;
}
.lms-site-root [class*="_Sidebar--right_"]::-webkit-scrollbar-track {
  background: transparent;
}
.lms-site-root [class*="_Sidebar--right_"]::-webkit-scrollbar-thumb {
  background: rgba(63, 63, 70, 0.6);
  border-radius: 999px;
}
.lms-site-root [class*="_Sidebar--right_"]::-webkit-scrollbar-thumb:hover {
  background: rgba(82, 82, 91, 0.9);
}

/* ── 2. FieldsPlugin wrapper (the whole field panel root) ───────────────────── */

.lms-site-root [class*="_FieldsPlugin_"] {
  background: #0f1117 !important;
  color: #f4f4f5 !important;
}

/* Custom v2-settings-panel owns chrome — fill sidebar, hide Puck header */
.lms-site-root [class*="_FieldsPlugin_"]:has(.v2-settings-panel) {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
  min-height: 0 !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:has(.v2-settings-panel) [class*="_FieldsPlugin-header_"] {
  display: none !important;
}

/* FieldsPlugin header ("Properties" / component name bar) — legacy Puck fields only */
.lms-site-root [class*="_FieldsPlugin-header_"] {
  background: #161b26 !important;
  border-bottom: 1px solid rgba(39, 39, 42, 0.85) !important;
  padding: 14px 16px !important;
  font-size: 0.6875rem !important;
  font-weight: 900 !important;
  letter-spacing: 0.09em !important;
  text-transform: uppercase !important;
  color: #52525b !important;
}

/* ── 3. SidebarSection — section group card ──────────────────────────────────── */

.lms-site-root [class*="_SidebarSection_"] {
  background: transparent !important;
  border: none !important;
  color: #f4f4f5 !important;
}

/* Section title / group header — hidden when custom settings panel is active */
.lms-site-root [class*="_SidebarSection_"]:has(.v2-settings-panel) [class*="_SidebarSection-title_"],
.lms-site-root [class*="_SidebarSection_"]:has(.v2-settings-panel) [class*="_SidebarSection-breadcrumbs_"] {
  display: none !important;
}

/* Section title / group header — V1's "section-card" style */
.lms-site-root [class*="_SidebarSection-title_"] {
  background: #161b26 !important;
  border-top: 1px solid rgba(39, 39, 42, 0.85) !important;
  border-bottom: 1px solid rgba(39, 39, 42, 0.6) !important;
  padding: 10px 16px !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
}

/* Section title text (the heading inside the bar) */
.lms-site-root [class*="_SidebarSection-heading_"] {
  font-size: 0.6875rem !important;
  font-weight: 900 !important;
  letter-spacing: 0.09em !important;
  text-transform: uppercase !important;
  color: #71717a !important;
  flex: 1 !important;
}

/* Section content area */
.lms-site-root [class*="_SidebarSection-content_"] {
  background: #0f1117 !important;
  padding: 0 !important;
}

/* Breadcrumbs row (back navigation inside section) */
.lms-site-root [class*="_SidebarSection-breadcrumbs_"] {
  background: #0f1117 !important;
  border-bottom: 1px solid rgba(39, 39, 42, 0.5) !important;
  padding: 8px 16px !important;
}

.lms-site-root [class*="_SidebarSection-breadcrumb_"],
.lms-site-root [class*="_SidebarSection-breadcrumbLabel_"] {
  color: #a1a1aa !important;
  font-size: 0.72rem !important;
  font-weight: 600 !important;
}

.lms-site-root [class*="_SidebarSection-breadcrumbLabel_"]:hover {
  color: #fbbf24 !important;
  background: transparent !important;
}

/* No-border-top variant (used when section follows directly) */
.lms-site-root [class*="_SidebarSection--noBorderTop_"] [class*="_SidebarSection-title_"] {
  border-top: none !important;
}

/* ── 4. PuckFields — individual field wrappers ──────────────────────────────── */

.lms-site-root [class*="_PuckFields_"] {
  background: #0f1117 !important;
  color: #f4f4f5 !important;
}

.lms-site-root form[class*="_PuckFields_"]:has(.v2-settings-panel) {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 !important;
  min-height: 0 !important;
  height: 100% !important;
  padding: 0 !important;
  background: transparent !important;
}

/* Each field row — consistent padding, soft separator */
.lms-site-root [class*="_PuckFields-field_"] {
  padding: 14px 16px 12px !important;
  border-top: 1px solid rgba(39, 39, 42, 0.45) !important;
  background: transparent !important;
  color: #e4e4e7 !important;
}

/* First field: no top border (the section title already provides visual separation) */
.lms-site-root [class*="_PuckFields-field_"]:first-child {
  border-top: none !important;
}

/* ── 5–8. Legacy Puck field skin (only when v2-settings-panel is absent) ───── */

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input-label_"] {
  color: #94a3b8 !important;
  font-size: 0.625rem !important;      /* 10px — matches V1 .editor-label */
  font-weight: 700 !important;
  letter-spacing: 0.07em !important;
  text-transform: uppercase !important;
  padding-bottom: 8px !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input-input_"] {
  background: rgba(9, 9, 11, 0.9) !important;
  border: 1px solid rgba(63, 63, 70, 0.7) !important;
  border-radius: var(--lms-radius) !important;
  color: #f8fafc !important;
  font-size: 13px !important;
  padding: 10px 14px !important;
  transition: border-color 150ms ease, box-shadow 150ms ease !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input-input_"]:hover:not([disabled]):not([readonly]) {
  border-color: rgba(82, 82, 91, 0.9) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input-input_"]:focus {
  border-color: rgba(245, 158, 11, 0.6) !important;
  outline: 2px solid rgba(245, 158, 11, 0.2) !important;
  box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.08) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) select[class*="_Input-input_"] {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%2371717a'><polygon points='0,0 100,0 50,50'/></svg>") !important;
  background-color: rgba(9, 9, 11, 0.9) !important;
  background-repeat: no-repeat !important;
  background-size: 10px !important;
  background-position: calc(100% - 12px) calc(50% + 2px) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) select[class*="_Input-input_"]:hover:not([disabled]) {
  background-color: rgba(24, 24, 27, 0.95) !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23a1a1aa'><polygon points='0,0 100,0 50,50'/></svg>") !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input--readOnly_"] [class*="_Input-input_"] {
  background: rgba(24, 24, 27, 0.5) !important;
  border-color: rgba(39, 39, 42, 0.6) !important;
  color: #71717a !important;
  opacity: 1 !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input-radioGroupItems_"] {
  background: rgba(9, 9, 11, 0.7) !important;
  border: 1px solid rgba(63, 63, 70, 0.7) !important;
  border-radius: var(--lms-radius) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input-radio_"] {
  border-color: rgba(63, 63, 70, 0.5) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_Input-radioInner_"] {
  background: transparent !important;
  color: #a1a1aa !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayField_"] {
  background: rgba(9, 9, 11, 0.5) !important;
  border: 1px solid rgba(63, 63, 70, 0.5) !important;
  border-radius: var(--lms-radius) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayField-addButton_"] {
  background: rgba(9, 9, 11, 0.6) !important;
  color: #f59e0b !important;
  border-top: 1px solid rgba(63, 63, 70, 0.5) !important;
  border-radius: 0 0 var(--lms-radius) var(--lms-radius) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  padding: 12px 14px !important;
  transition: background 140ms ease !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayField-addButton_"]:hover {
  background: rgba(245, 158, 11, 0.08) !important;
  color: #fbbf24 !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayFieldItem_"] {
  background: rgba(9, 9, 11, 0.4) !important;
  border-bottom: 1px solid rgba(39, 39, 42, 0.5) !important;
  color: #e4e4e7 !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayFieldItem-summary_"] {
  background: rgba(22, 27, 38, 0.6) !important;
  color: #e4e4e7 !important;
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  padding: 10px 14px !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayFieldItem--isExpanded_"] [class*="_ArrayFieldItem-summary_"] {
  background: rgba(245, 158, 11, 0.07) !important;
  border-bottom: 1px solid rgba(245, 158, 11, 0.2) !important;
  color: #fbbf24 !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayFieldItem-body_"] {
  background: #0f1117 !important;
  border-top: 1px solid rgba(39, 39, 42, 0.4) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayFieldItem-fieldset_"] {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayFieldItem-actions_"] {
  background: rgba(22, 27, 38, 0.6) !important;
  border-left: 1px solid rgba(39, 39, 42, 0.5) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ArrayFieldItem-rhs_"] {
  color: #71717a !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ObjectField_"] {
  background: rgba(9, 9, 11, 0.4) !important;
  border: 1px solid rgba(63, 63, 70, 0.5) !important;
  border-radius: var(--lms-radius) !important;
}

.lms-site-root [class*="_FieldsPlugin_"]:not(:has(.v2-settings-panel)) [class*="_ObjectField-fieldset_"] {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* ── 9. Puck's drag icon / action-bar within the field area ────────────────── */

.lms-site-root [class*="_DragIcon_"] {
  color: #52525b !important;
}

.lms-site-root [class*="_DragIcon_"]:hover {
  color: #a1a1aa !important;
}

/* ── 10. Loading overlays ─────────────────────────────────────────────────────── */

.lms-site-root [class*="_PuckFields-loadingOverlay_"],
.lms-site-root [class*="_SidebarSection-loadingOverlay_"] {
  background: rgba(15, 17, 23, 0.85) !important;
}

/* ── 11. InputWrapper spacing ─────────────────────────────────────────────────── */

.lms-site-root [class*="_InputWrapper_"] + [class*="_InputWrapper_"] {
  margin-top: 10px !important;
}

/* ── 12. Action Bar (field-level action buttons above/below the field group) ─── */

.lms-site-root [class*="_ActionBar_"] {
  background: #161b26 !important;
  border: 1px solid rgba(39, 39, 42, 0.7) !important;
  border-radius: var(--lms-radius) !important;
}

.lms-site-root [class*="_ActionBarAction_"] {
  color: #94a3b8 !important;
  border-radius: var(--lms-radius) !important;
  padding: 5px 8px !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
  transition: background 130ms ease, color 130ms ease !important;
}

.lms-site-root [class*="_ActionBarAction_"]:hover,
.lms-site-root [class*="_ActionBarAction--active_"] {
  background: rgba(245, 158, 11, 0.12) !important;
  color: #fbbf24 !important;
}

.lms-site-root [class*="_ActionBar-label_"] {
  color: #52525b !important;
  font-size: 0.6rem !important;
  font-weight: 900 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.08em !important;
}

.lms-site-root [class*="_ActionBar-separator_"] {
  background: rgba(39, 39, 42, 0.7) !important;
}

/* ── 13. ExternalInput (file/URL picker within Puck) ─────────────────────────── */

.lms-site-root [class*="_ExternalInput_"] {
  background: rgba(9, 9, 11, 0.7) !important;
  border: 1px solid rgba(63, 63, 70, 0.6) !important;
  border-radius: var(--lms-radius) !important;
  padding: 8px 12px !important;
}

.lms-site-root [class*="_ExternalInput-button_"] {
  background: rgba(24, 24, 27, 0.9) !important;
  border: 1px solid rgba(63, 63, 70, 0.6) !important;
  border-radius: var(--lms-radius) !important;
  color: #a1a1aa !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  padding: 8px 12px !important;
  transition: background 130ms ease, border-color 130ms ease, color 130ms ease !important;
}

.lms-site-root [class*="_ExternalInput-button_"]:hover {
  background: rgba(39, 39, 42, 0.9) !important;
  border-color: rgba(245, 158, 11, 0.5) !important;
  color: #fbbf24 !important;
}

/* ── 14. Panel-level scrollbar (FieldsPlugin scroll area) ───────────────────── */

/* ─────────────────────────────────────────────────────────────────────────────
 * REFINED COLOR FIELD — palette variant with swatch wrapper + clear button
 *
 * The base `.v2-color-field` in editor.css uses 3 grid columns (label / swatch /
 * hex input). The `--palette` modifier extends it to 4 columns by adding a
 * clear button or inherit-dot. These classes are only added by our own field
 * components (paletteColorField.tsx, colorField) — safe to define here in base.css.
 * ───────────────────────────────────────────────────────────────────────────── */

/* 4-column palette layout: label / swatch / hex text / clear or dot */
.v2-color-field--palette {
  grid-template-columns: auto 2.6rem minmax(0, 1fr) 1.6rem !important;
  align-items: center !important;
  gap: 0.55rem !important;
}

/* Swatch wrapper — contains the native color input, styled as a rounded chip */
.v2-color-field__swatch-wrap {
  display: grid;
  place-items: center;
  width: 2.6rem;
  height: 2.4rem;
  border-radius: var(--lms-radius);
  border: 1px solid rgba(63, 63, 70, 0.7);
  background: rgba(9, 9, 11, 0.7);
  overflow: hidden;
  padding: 0;
  position: relative;
}

.v2-color-field__swatch-wrap input[type='color'] {
  /* fill the swatch wrapper — the browser draws the color swatch */
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  padding: 0.1rem !important;
  cursor: pointer;
}

/* Clear (×) button — shown when a value is explicitly set */
.v2-color-field__clear {
  display: grid;
  place-items: center;
  width: 1.6rem;
  height: 1.6rem;
  border: 1px solid rgba(63, 63, 70, 0.6);
  border-radius: 50%;
  background: rgba(9, 9, 11, 0.6);
  color: #71717a;
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  padding: 0;
  flex-shrink: 0;
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
}

.v2-color-field__clear:hover:not(:disabled) {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.4);
  color: #f87171;
}

.v2-color-field__clear:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

/* Inherit dot — shown when value is empty (colour inherits from design language) */
.v2-color-field__inherit-dot {
  display: block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: rgba(82, 82, 91, 0.5);
  border: 1px solid rgba(63, 63, 70, 0.5);
  margin: auto;
  cursor: default;
}

.lms-site-root [class*="_FieldsPlugin_"]::-webkit-scrollbar {
  width: 4px;
}
.lms-site-root [class*="_FieldsPlugin_"]::-webkit-scrollbar-track {
  background: transparent;
}
.lms-site-root [class*="_FieldsPlugin_"]::-webkit-scrollbar-thumb {
  background: rgba(63, 63, 70, 0.55);
  border-radius: 999px;
}
.lms-site-root [class*="_FieldsPlugin_"]::-webkit-scrollbar-thumb:hover {
  background: rgba(82, 82, 91, 0.85);
}

/* ─────────────────────────────────────────────────────────────────────────────
 * AI GENERATE SIDE PANEL  — standalone, self-owned, not inside Puck sidebar
 *
 * Fixed to the right edge of the viewport, below the builder header.
 * Uses the same dark-panel token values as the Puck right-sidebar skin above
 * so it looks like a natural continuation of the editor chrome.
 *
 * z-index: sits above Puck canvas (200) but below header (300) and modals.
 * ───────────────────────────────────────────────────────────────────────────── */

/* Backdrop — subtle dimming overlay over the canvas while panel is open */
.v2-ai-side-panel-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.30);
  z-index: 210;
  pointer-events: none;           /* clicks still reach canvas for dismiss */
  opacity: 0;
  transition: opacity 220ms ease;
}
.v2-ai-side-panel-backdrop--visible {
  opacity: 1;
}

/* Panel shell */
.v2-ai-side-panel {
  position: fixed;
  top: var(--builder-header-h, 4rem);
  right: 0;
  bottom: 0;
  width: 380px;
  z-index: 220;

  display: flex;
  flex-direction: column;

  background: #0f1117;
  border-left: 1px solid rgba(39, 39, 42, 0.85);
  box-shadow: -6px 0 32px rgba(0, 0, 0, 0.45);

  /* Slide-in from right */
  transform: translateX(100%);
  opacity: 0;
  transition:
    transform 240ms cubic-bezier(0.22, 1, 0.36, 1),
    opacity   180ms ease;
}
.v2-ai-side-panel--open {
  transform: translateX(0);
  opacity: 1;
}

.v2-ai-side-panel .v2-settings-panel {
  flex: 1;
  min-height: 0;
  height: 100%;
}

/* Skin editor — AI panel lives in the right column, not a fixed overlay */
.v2-ai-embedded-panel {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  flex: 1;
}

.v2-ai-embedded-panel .v2-settings-panel {
  flex: 1;
  min-height: 0;
  height: 100%;
}

@media (prefers-reduced-motion: reduce) {
  .v2-ai-side-panel {
    transition: opacity 120ms ease;
    transform: translateX(0);
  }
  .v2-ai-side-panel-backdrop {
    transition: opacity 80ms ease;
  }
}

/* Dev gallery toolbar (?gallery) */
.v2-gallery-toolbar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 99999;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 8px 12px;
  background: rgba(10, 10, 12, 0.92);
  backdrop-filter: blur(8px);
  border-top: 1px solid #2a2a30;
  font-family: ui-sans-serif, system-ui, sans-serif;
}

.v2-gallery-toolbar__label {
  color: #777;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.v2-gallery-toolbar__select,
.v2-gallery-toolbar__input {
  height: 28px;
  padding: 0 8px;
  border-radius: var(--hdr-radius);
  border: 1px solid #444;
  background: #18181b;
  color: #e4e4e7;
  font-size: 12px;
}

.v2-gallery-toolbar__input {
  min-width: 120px;
}

.v2-gallery-toolbar__btn {
  height: 28px;
  padding: 0 10px;
  border-radius: var(--hdr-radius);
  border: 1px solid #444;
  background: transparent;
  color: #ccc;
  font-size: 12px;
  cursor: pointer;
}

.v2-gallery-toolbar__btn.is-active {
  border-color: #f59e0b;
  background: rgba(245, 158, 11, 0.15);
  color: #fbbf24;
  font-weight: 700;
}

.v2-gallery-toolbar__link {
  color: #93c5fd;
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
}

.v2-gallery-toolbar__link:hover {
  text-decoration: underline;
}

.v2-gallery-compare {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0.75rem;
  padding: 1rem;
  overflow-x: auto;
}

.v2-gallery-compare__col {
  min-width: 0;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: var(--hdr-radius);
  overflow: hidden;
  background: #0a0a0a;
}

.v2-gallery-compare__label {
  margin: 0;
  padding: 0.5rem 0.75rem;
  background: rgba(255, 255, 255, 0.06);
  color: #e2e8f0;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-align: center;
  text-transform: uppercase;
}

@media (max-width: 1200px) {
  .v2-gallery-compare {
    grid-template-columns: repeat(2, minmax(280px, 1fr));
  }
}

@media (max-width: 640px) {
  .v2-gallery-compare {
    grid-template-columns: 1fr;
  }
}

/* ── Left sidebar — Blocks drawer rows (Outline styles: V2SectionOutline.css) ─ */

.lms-site-root [class*='_BlocksPlugin_'] [class*='_Drawer_'] {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.lms-site-root [class*='_DrawerItem-draggable_'] {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  min-height: 40px;
  padding: 12px;
  border: 1px solid rgba(63, 63, 70, 0.75);
  border-radius: var(--lms-radius, 8px);
  background: rgba(24, 24, 27, 0.92);
  color: #e4e4e7;
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.3;
  cursor: grab;
  transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
}

@media (hover: hover) and (pointer: fine) {
  .lms-site-root [class*='_DrawerItem-draggable_']:hover {
    background: rgba(245, 158, 11, 0.08);
    border-color: rgba(245, 158, 11, 0.35);
    color: #fafafa;
  }
}

.lms-site-root [class*='_DrawerItem-name_'] {
  overflow: hidden;
  flex: 1;
  min-width: 0;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lms-site-root [class*='_DrawerItem-draggable_'] svg {
  flex-shrink: 0;
  color: #71717a;
}

.lms-site-root [class*='_DrawerItem-draggable_']:hover svg {
  color: #a1a1aa;
}



/* ── src/styles/parts/backgrounds.css ── */
/* ─── Background System — Art-Direction Engine (DESIGN_SYSTEM §3) ─────────
 *
 * Each class is a self-contained, GPU-friendly background layer.
 * Applied to .lms-page by rootConfig based on the active design language's
 * bg.system value: className `lms-bg--${bgSystem}`.
 *
 * Performance: radial-gradient / conic-gradient / SVG data-uri — no JS.
 * Motion: animations gated behind @media (prefers-reduced-motion: no-preference).
 * ─────────────────────────────────────────────────────────────────────────── */

/* ─── 1. Aurora — multi-layer blurred radial gradients (premium-dark) ─── */

.lms-bg--aurora {
  background-color: var(--lms-bg, #06080f);
  background-image:
    radial-gradient(
      ellipse 80% 40% at 50% -8%,
      color-mix(in srgb, var(--lms-primary, #f59e0b) 10%, transparent),
      transparent
    ),
    radial-gradient(
      ellipse 60% 30% at 80% 60%,
      color-mix(in srgb, var(--lms-accent, var(--lms-primary)) 6%, transparent),
      transparent
    ),
    linear-gradient(
      175deg,
      var(--lms-bg) 0%,
      color-mix(in srgb, var(--lms-bg) 70%, var(--lms-surface) 30%) 55%,
      color-mix(in srgb, var(--lms-bg) 92%, #000 8%) 100%
    );
}

/* Aurora glow orbs — fixed pseudo-elements animate slowly */
.lms-bg--aurora::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    radial-gradient(
      ellipse 55% 45% at 20% 30%,
      color-mix(in srgb, var(--lms-primary, #f59e0b) 5%, transparent),
      transparent
    ),
    radial-gradient(
      ellipse 40% 50% at 75% 75%,
      color-mix(in srgb, var(--lms-accent, var(--lms-primary)) 7%, transparent),
      transparent
    );
  opacity: calc(0.8 * var(--lms-bg-strength, 1));
}

@media (prefers-reduced-motion: no-preference) {
  .lms-bg--aurora::before {
    animation: lms-aurora-drift 18s ease-in-out infinite alternate;
  }
}

@keyframes lms-aurora-drift {
  0%   { transform: translate(0, 0) scale(1); }
  50%  { transform: translate(2%, 1.5%) scale(1.04); }
  100% { transform: translate(-1.5%, 2%) scale(0.97); }
}

/* ─── 2. Mesh gradient — vibrant blended blobs (glass-futuristic) ─────── */

.lms-bg--mesh {
  background-color: var(--lms-bg, #0a0e1a);
  background-image:
    radial-gradient(ellipse 70% 60% at 15% 20%, color-mix(in srgb, var(--lms-primary) 8%, transparent), transparent),
    radial-gradient(ellipse 55% 55% at 85% 15%, color-mix(in srgb, var(--lms-accent) 9%, transparent), transparent),
    radial-gradient(ellipse 60% 50% at 50% 80%, color-mix(in srgb, var(--lms-primary) 5%, transparent), transparent),
    radial-gradient(ellipse 80% 70% at 50% 50%, color-mix(in srgb, var(--lms-bg) 95%, transparent), transparent);
}

/* Dot-grid overlay always accompanies mesh (glass-futuristic spec) */
.lms-bg--mesh::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  /* SVG dot-grid: 24px grid, 1px dots, low opacity */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Ccircle cx='1' cy='1' r='0.8' fill='rgba(100%2C160%2C255%2C0.12)'/%3E%3C/svg%3E");
  background-size: 24px 24px;
  opacity: var(--lms-bg-strength, 1);
}

/* ─── 3. Dot-grid — standalone dot pattern ────────────────────────────── */

.lms-bg--dotgrid {
  background-color: var(--lms-bg, #06080f);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Ccircle cx='1' cy='1' r='0.9' fill='rgba(200%2C210%2C230%2C0.1)'/%3E%3C/svg%3E");
  background-size: 28px 28px;
}

/* ─── 4. Spotlight — radial vignette focal point ──────────────────────── */

.lms-bg--spotlight {
  background-color: var(--lms-bg, #06080f);
  background-image:
    radial-gradient(
      ellipse 65% 50% at 50% 0%,
      color-mix(in srgb, var(--lms-primary, #f59e0b) 8%, transparent),
      transparent 70%
    ),
    radial-gradient(
      ellipse 90% 60% at 50% -5%,
      color-mix(in srgb, var(--lms-text) 3%, transparent),
      transparent 60%
    ),
    linear-gradient(
      180deg,
      var(--lms-bg) 0%,
      color-mix(in srgb, var(--lms-bg) 88%, #000 12%) 100%
    );
}

/* ─── 5. Grain / Noise — SVG fractal noise overlay ───────────────────── */

.lms-bg--grain {
  background-color: var(--lms-bg, #06080f);
  background-image: linear-gradient(
    175deg,
    var(--lms-bg) 0%,
    color-mix(in srgb, var(--lms-bg) 75%, var(--lms-surface) 25%) 100%
  );
}

.lms-bg--grain::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  opacity: calc(0.045 * var(--lms-bg-strength, 1));
  /* SVG feTurbulence noise */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 200px 200px;
}

/* ─── 6. Flat — clean solid (minimal-editorial, no decoration) ────────── */

.lms-bg--flat {
  background-color: var(--lms-bg, #faf9f6);
  background-image: none;
}

.lms-bg--flat::before,
.lms-bg--flat::after {
  display: none;
}

/* ─── Shared: pseudo layers must sit behind content ──────────────────── */

.lms-bg--aurora::before,
.lms-bg--mesh::after,
.lms-bg--grain::before {
  pointer-events: none;
}

/* Ensure .lms-page children are always above the pseudo-layers */
.lms-bg--aurora > *,
.lms-bg--mesh > *,
.lms-bg--grain > * {
  position: relative;
  z-index: 1;
}

/* ─── Disable all bg animations when user prefers reduced motion ──────── */

@media (prefers-reduced-motion: reduce) {
  .lms-bg--aurora::before {
    animation: none;
  }
}



/* ── src/styles/parts/page-layout.css ── */
/* ─── Page shell ─────────────────────────────────────────────────────────── */

.lms-page {
  position: relative; /* required so position:absolute header is contained here */
  min-height: 100vh;
  /* Background is provided by the .lms-bg--* class applied by rootConfig.
   * Fallback here matches premium-dark defaults so the page is never unstyled. */
  background-color: var(--lms-bg, #06080f);
  color: var(--lms-text, #f3f5fa);
  font-family: var(--lms-body-font), Inter, system-ui, sans-serif;
  /* clip (not hidden) — overflow:hidden creates a scroll container that breaks position:sticky */
  overflow-x: clip;
  scroll-behavior: smooth;
}

.lms-page--light {
  background: var(--lms-bg, #f8fafc);
  color: var(--lms-text, #111827);
}

.lms-page h1,
.lms-page h2,
.lms-page h3 {
  margin: 0;
  font-family: var(--lms-heading-font), 'Sora', system-ui, sans-serif;
  color: var(--lms-text);
  letter-spacing: -0.015em;
}

.lms-page p {
  margin: 0;
}

/* ─── Anchor scroll margin (for sticky header) ──────────────────────────────── */

.lms-page [id] {
  scroll-margin-top: 84px;
}

/* ─── Nav ────────────────────────────────────────────────────────────────── */

.lms-site-nav {
  /* position, background, backdrop-filter, border-bottom set via inline style (rootConfig.tsx) */
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 4rem;
  padding: 0 clamp(1.5rem, 5vw, 4rem);
  /* Smooth transition for scroll-linked background changes */
  transition: background 260ms ease, backdrop-filter 260ms ease, box-shadow 260ms ease, border-color 260ms ease;
}

/* Inner content row — constrained to the same max-width as section content */
.lms-site-nav__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  width: 100%;
  min-height: 4rem;
  max-width: var(--lms-content-max-width, 1120px);
}

.lms-site-nav__inner > div,
.lms-site-nav__inner .lms-site-nav__links {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

/* Fallback: legacy layout without __inner wrapper (header inner only) */
.lms-site-nav > .lms-site-nav__inner,
.lms-site-nav .lms-site-nav__links {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

.lms-site-nav__brand {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  min-width: 0;
}

.lms-site-nav__logo {
  display: block;
  height: var(--lms-logo-height, 2rem);
  width: auto;
  max-width: min(12rem, 40vw);
  object-fit: contain;
  object-position: left center;
  flex-shrink: 0;
}

.lms-site-nav strong {
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--lms-text);
  text-transform: uppercase;
}

.lms-site-nav .lms-site-nav__links {
  gap: 2rem;
}

.lms-site-nav .lms-site-nav__links a {
  color: var(--lms-text-muted);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: color 180ms ease;
}

.lms-site-nav .lms-site-nav__links a:hover {
  color: var(--lms-text);
}

.lms-nav-cta {
  display: inline-flex;
  align-items: center;
  padding: 0.45rem 1rem;
  border: 1px solid color-mix(in srgb, var(--lms-primary, #f59e0b) 35%, transparent);
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  background: color-mix(in srgb, var(--lms-primary, #f59e0b) 6%, transparent);
  backdrop-filter: var(--lms-chrome-backdrop);
  -webkit-backdrop-filter: var(--lms-chrome-backdrop);
  color: var(--lms-primary, rgba(251, 191, 36, 0.82)) !important;
  font-size: 0.8125rem;
  font-weight: 600;
  transition: background 160ms ease, border-color 160ms ease;
}

.lms-nav-cta:hover {
  background: color-mix(in srgb, var(--lms-primary, #f59e0b) 12%, transparent) !important;
  border-color: color-mix(in srgb, var(--lms-primary, #f59e0b) 55%, transparent) !important;
  color: var(--lms-primary, rgba(251, 191, 36, 0.95)) !important;
}

.lms-nav-cta.lms-chat-trigger {
  height: 34px;
  padding: 0 0.6em;
  justify-content: center;
}

@media (min-width: 901px) {
  .lms-site-nav .lms-site-nav__links > .lms-nav-cta + .lms-chat-trigger {
    margin-inline-start: -1.5rem;
  }
}

/* ─── Header: solid background (primaryColor bg → dark text) ────────────── */

.lms-site-nav--solid strong,
.lms-site-nav--solid .lms-site-nav__links a {
  color: #05070d;
}

.lms-site-nav--solid .lms-site-nav__links a:hover {
  color: rgba(5, 7, 13, 0.75);
}

.lms-site-nav--solid .lms-nav-cta {
  border-color: rgba(5, 7, 13, 0.28) !important;
  background: rgba(5, 7, 13, 0.08) !important;
  color: #05070d !important;
}

.lms-site-nav--solid .lms-nav-cta:hover {
  background: rgba(5, 7, 13, 0.14) !important;
  border-color: rgba(5, 7, 13, 0.4) !important;
}

/* Nav tone + frost → _chrome-readability.css (data-nav-tone) */

/* ─── Sections ───────────────────────────────────────────────────────────── */

.lms-section {
  padding-inline: clamp(1rem, 5vw, 4rem);
}

.lms-section--small {
  padding-block: 2.5rem;
}

.lms-section--medium {
  padding-block: 4rem;
}

.lms-section--large {
  padding-block: 6rem;
}

.lms-section--hero {
  padding-block: 6rem;
}

.lms-section--surface {
  background: var(--lms-surface);
}

.lms-section--accent {
  /* Subtle bottom-anchored glow — no colour at the top edge, no hero-leak */
  background:
    radial-gradient(ellipse 80% 50% at 50% 120%, color-mix(in srgb, var(--lms-primary) 10%, transparent), transparent),
    var(--lms-surface);
}

.lms-section--dark {
  background: var(--lms-bg);
}

/* ─── Containers ─────────────────────────────────────────────────────────── */

.lms-container,
.lms-container--inherit,
.lms-container--narrow,
.lms-container--normal,
.lms-container--wide,
.lms-container--full {
  width: min(100%, var(--lms-content-max-width, 1120px));
  margin-inline: auto;
}

/* ─── Alignment ──────────────────────────────────────────────────────────── */

.lms-align-left {
  text-align: left;
  align-items: flex-start;
}

.lms-align-center {
  text-align: center;
  align-items: center;
}

.lms-align-right {
  text-align: right;
  align-items: flex-end;
}

/* ─── Legacy section-heading (preset-visuals compat) ────────────────────── */

.lms-eyebrow {
  color: var(--lms-text-muted);
  font-family: var(--lms-heading-font), 'Sora', system-ui, sans-serif;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.lms-section-heading {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-width: 900px;
  margin: 0 auto 3.5rem;
}

.lms-section-heading h2 {
  font-size: clamp(2rem, 3.2vw, 3rem);
  line-height: 1.1;
}

.lms-subtitle,
.lms-text-block,
.lms-hero__copy p,
.lms-card p,
.lms-service-card p,
.lms-pricing-card p {
  color: var(--lms-text-muted);
  font-size: 1.0625rem;
  line-height: 1.65;
}

/* ─── Divider ────────────────────────────────────────────────────────────── */

.lms-divider {
  width: 3rem;
  height: 1px;
  background: color-mix(in srgb, var(--lms-primary, #f59e0b) 30%, transparent);
}

.lms-section-heading.lms-align-center .lms-divider {
  margin-inline: auto;
}

/* ─── Section background image ───────────────────────────────────────────── */

.lms-section--bg {
  position: relative;
  overflow: hidden;
}

.lms-section-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, rgba(5, 7, 13, 0.45) 0%, rgba(5, 7, 13, 0.88) 100%);
  pointer-events: none;
  z-index: 0;
}

.lms-section-fg {
  position: relative;
  z-index: 1;
}

.lms-section--bg .lms-page h1,
.lms-section--bg .lms-page h2,
.lms-section--bg h1,
.lms-section--bg h2 {
  color: #f3f5fa;
  text-shadow: 0 2px 24px rgba(0, 0, 0, 0.5);
}

.lms-section--bg p {
  color: rgba(226, 232, 240, 0.88);
}

/* ─── Hero ───────────────────────────────────────────────────────────────── */

.lms-hero {
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(320px, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}

.lms-hero__copy {
  display: grid;
  gap: 1.5rem;
}

.lms-hero__copy h1 {
  font-size: clamp(2.75rem, 4.8vw, 4.75rem);
  line-height: 1.02;
  letter-spacing: -0.035em;
  font-weight: 700;
}

/* Premium depth on the hero image */
#hero .lms-atom-image {
  border-color: var(--lms-border);
  box-shadow:
    0 24px 80px -16px rgba(0, 0, 0, 0.2),
    0 0 80px -24px color-mix(in srgb, var(--lms-primary) 30%, transparent);
}

/* ─── Buttons ────────────────────────────────────────────────────────────── */

.lms-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin-top: 0.5rem;
}

.lms-button {
  display: inline-flex;
  max-width: 100%;
  min-height: 2.875rem;
  align-items: center;
  justify-content: center;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0 1.5rem;
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.15;
  text-align: center;
  text-decoration: none;
  white-space: normal;
  overflow-wrap: anywhere;
  transition:
    filter 180ms ease,
    transform 180ms ease,
    box-shadow 180ms ease;
}

/*
 * Variants set CSS variables (NOT direct background/color) so the style-system
 * layer (.lms-styled--button, which loads later and would otherwise win on
 * equal specificity) consumes them as fallbacks. Cascade becomes:
 * explicit style field  >  variant  >  hardcoded default.
 */
.lms-button--primary {
  --lms-btn-bg: var(--lms-primary);
  --lms-btn-fg: #05070d;
  --lms-btn-border: transparent;
  --lms-btn-border-w: 0;
}

.lms-button--primary:hover {
  filter: brightness(1.08);
  transform: translateY(-1px);
}

.lms-button--secondary {
  --lms-btn-bg: var(--lms-surface);
  --lms-btn-fg: var(--lms-text);
  --lms-btn-border: var(--lms-border);
  --lms-btn-border-w: 1px;
}

.lms-button--secondary:hover {
  --lms-btn-bg: var(--lms-surface-elevated);
  --lms-btn-border: color-mix(in srgb, var(--lms-text) 20%, transparent);
}

.lms-button--ghost {
  --lms-btn-bg: transparent;
  --lms-btn-fg: var(--lms-primary);
  --lms-btn-border: transparent;
  --lms-btn-border-w: 0;
}

/*
 * Button alignment must survive Puck's editor wrapper divs (DropZone +
 * DraggableComponent), which break justify-self/align-self because the button
 * is no longer a direct grid child. A fit-content flex element with auto
 * inline margins centers within ANY block-level parent, wrappers or not.
 */
.lms-button.lms-place-left,
.lms-button.lms-place-center,
.lms-button.lms-place-right {
  display: flex;
  width: fit-content;
  max-width: 100%;
}

.lms-button.lms-place-left {
  margin-inline: 0 auto;
}

.lms-button.lms-place-center {
  margin-inline: auto;
}

.lms-button.lms-place-right {
  margin-inline: auto 0;
}



/* ── src/styles/parts/style-system.css ── */
.lms-styled {
  /*
   * CRITICAL: per-element style variables MUST NOT inherit. CSS custom
   * properties cascade by default, so without this reset a parent's
   * min-height / max-width / radius / shadow / bg / padding leaks into every
   * styled descendant (e.g. a card's `min-height: 360` forced its title,
   * text, price and button to 360px each → ~1900px elongated cards).
   * Resetting to `initial` here means each element only consumes the values
   * its own inline style sets; children fall back to the rule defaults.
   */
  --lms-style-color: initial;
  --lms-style-bg: initial;
  --lms-style-font-size: initial;
  --lms-style-font-weight: initial;
  --lms-style-line-height: initial;
  --lms-style-letter-spacing: initial;
  --lms-style-text-align: initial;
  --lms-style-padding: initial;
  --lms-style-padding-x: initial;
  --lms-style-padding-y: initial;
  --lms-style-gap: initial;
  --lms-style-radius: initial;
  --lms-style-border-width: initial;
  --lms-style-border-color: initial;
  --lms-style-shadow: initial;
  --lms-style-max-width: initial;
  --lms-style-min-height: initial;

  max-width: var(--lms-style-max-width, revert-layer);
  min-height: var(--lms-style-min-height, revert-layer);
  opacity: var(--lms-style-opacity, 1);
}

.lms-place-left {
  justify-self: start;
  align-self: flex-start;
  margin-inline: 0 auto;
}

.lms-place-center {
  justify-self: center;
  align-self: center;
  margin-inline: auto;
}

.lms-place-right {
  justify-self: end;
  align-self: flex-end;
  margin-inline: auto 0;
}

.lms-styled--text {
  color: var(--lms-style-color, inherit);
  font-size: var(--lms-style-font-size, revert-layer);
  font-weight: var(--lms-style-font-weight, revert-layer);
  line-height: var(--lms-style-line-height, revert-layer);
  letter-spacing: var(--lms-style-letter-spacing, 0);
  text-align: var(--lms-style-text-align, var(--lms-atom-align, revert-layer));
}

.lms-styled--text:hover {
  color: var(--lms-style-color-hover, var(--lms-style-color, inherit));
}

.lms-styled--text:active {
  color: var(--lms-style-color-active, var(--lms-style-color-hover, var(--lms-style-color, inherit)));
}

.lms-styled--button {
  width: auto;
  max-width: var(--lms-style-max-width, 100%);
  padding-inline: var(--lms-style-padding-x, 1.25rem);
  padding-block: var(--lms-style-padding-y, 0.9rem);
  border-width: var(--lms-style-border-width, var(--lms-btn-border-w, 0));
  border-color: var(--lms-style-border-color, var(--lms-btn-border, transparent));
  border-style: solid;
  border-radius: var(--lms-style-radius, var(--lms-control-radius, var(--lms-radius-md, 1rem)));
  background: var(--lms-style-bg, var(--lms-btn-bg, var(--lms-primary)));
  box-shadow: var(--lms-style-shadow, none);
  color: var(--lms-style-color, var(--lms-btn-fg, #05070d));
  font-size: var(--lms-style-font-size, inherit);
  font-weight: var(--lms-style-font-weight, 950);
  letter-spacing: var(--lms-style-letter-spacing, 0.06em);
  transition:
    transform var(--lms-motion-duration, 220ms) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1)),
    filter var(--lms-motion-duration, 220ms) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1)),
    box-shadow var(--lms-motion-duration, 220ms) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1));
}

.lms-styled--button:hover {
  border-color: var(--lms-style-border-color-hover, var(--lms-style-border-color, var(--lms-btn-border, transparent)));
  background: var(--lms-style-bg-hover, var(--lms-style-bg, var(--lms-btn-bg, var(--lms-primary))));
  box-shadow: var(--lms-style-shadow-hover, var(--lms-style-shadow, none));
  color: var(--lms-style-color-hover, var(--lms-style-color, var(--lms-btn-fg, #05070d)));
}

.lms-styled--button:active {
  border-color: var(--lms-style-border-color-active, var(--lms-style-border-color-hover, var(--lms-style-border-color, var(--lms-btn-border, transparent))));
  background: var(--lms-style-bg-active, var(--lms-style-bg-hover, var(--lms-style-bg, var(--lms-btn-bg, var(--lms-primary)))));
  box-shadow: var(--lms-style-shadow-active, var(--lms-style-shadow-hover, var(--lms-style-shadow, none)));
  color: var(--lms-style-color-active, var(--lms-style-color-hover, var(--lms-style-color, var(--lms-btn-fg, #05070d))));
}

.lms-style-full-width {
  width: 100%;
  align-self: stretch;
  margin-inline: 0;
}

.lms-hover-lift:hover {
  transform: translateY(-3px);
  filter: brightness(1.04);
}

.lms-hover-glow:hover {
  box-shadow:
    var(--lms-style-shadow, 0 18px 40px rgba(0, 0, 0, 0.22)),
    0 0 32px color-mix(in srgb, var(--lms-primary) 38%, transparent);
  filter: brightness(1.06) saturate(1.08);
}

.lms-hover-soft-scale:hover {
  transform: translateY(-1px) scale(1.025);
}

.lms-hover-shine {
  position: relative;
  overflow: hidden;
}

.lms-hover-shine::after {
  content: '';
  position: absolute;
  inset: -1px;
  pointer-events: none;
  opacity: 0;
  transform: translateX(-120%) skewX(-18deg);
  background: linear-gradient(110deg, transparent 20%, rgba(255, 255, 255, 0.34) 48%, transparent 76%);
  transition:
    opacity var(--lms-motion-duration, 220ms) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1)),
    transform calc(var(--lms-motion-duration, 220ms) * 2.2) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1));
}

.lms-hover-shine:hover::after {
  opacity: 1;
  transform: translateX(120%) skewX(-18deg);
}

.lms-hover-outline-fill:hover {
  background: var(--lms-primary);
  border-color: var(--lms-primary);
  color: #05070d;
}

.lms-press-compress:active {
  transform: translateY(1px) scale(0.972);
}

.lms-press-sink:active {
  transform: translateY(2px);
}

.lms-press-pulse:active {
  transform: scale(1.035);
}

@media (prefers-reduced-motion: reduce) {
  .lms-styled,
  .lms-styled::before,
  .lms-styled::after {
    transition: none !important;
  }

  .lms-styled:hover,
  .lms-styled:active {
    transform: none !important;
  }
}



/* ── src/styles/parts/preset-visuals.css ── */
/*
 * preset-visuals.css
 *
 * Visual rules for non-atom preset classes used by the static export CSS and
 * by any legacy class names still referenced in presets.tsx.
 *
 * NOTE: The old .lms-badge, .lms-price-row, .lms-pricing-card li, and
 * .lms-service-card rules have been REMOVED — those classes are not emitted by
 * the atom recipes (atoms use .lms-atom-*). Compositions are now built inside
 * atomRecipes.ts using designed atom nodes.  Keep this file for genuinely
 * shared non-atom utility classes only.
 */

/* ─── Hero image frame ────────────────────────────────────────────────────── */

.lms-hero__media,
.lms-image-frame {
  overflow: hidden;
  border: 1px solid var(--lms-border);
  border-radius: var(--lms-radius);
  background: var(--lms-surface);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}

.lms-hero__media img,
.lms-image-frame img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 11;
  object-fit: cover;
}

/* ─── Generic card grid (legacy preset components) ────────────────────────── */

.lms-card-grid {
  display: grid;
  gap: 1.25rem;
}

.lms-card-grid--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* ─── Generic card shell (used by presets.tsx SectionAtom wrappers) ───────── */

.lms-card,
.lms-contact-card,
.lms-cta-card,
.lms-faq {
  border: 1px solid var(--lms-border);
  border-radius: var(--lms-radius);
  background: var(--lms-surface);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
}

.lms-card {
  display: flex;
  min-height: 100%;
  flex-direction: column;
  gap: 1rem;
  padding: clamp(1.25rem, 3vw, 2rem);
}

.lms-card h3 {
  font-size: clamp(1.3rem, 1.6vw, 1.55rem);
  line-height: 1.2;
  letter-spacing: -0.01em;
}

/* ─── Icon badge ──────────────────────────────────────────────────────────── */

.lms-icon-badge {
  display: inline-grid;
  width: 3.25rem;
  height: 3.25rem;
  place-items: center;
  border-radius: var(--lms-radius);
  background: color-mix(in srgb, var(--lms-primary) 12%, transparent);
  color: var(--lms-primary);
}

.lms-icon-badge svg {
  width: 1em;
  height: 1em;
}

/* ─── CTA card ────────────────────────────────────────────────────────────── */

.lms-cta-card {
  display: grid;
  justify-items: center;
  gap: 1.25rem;
  padding: clamp(2rem, 6vw, 4.5rem);
  text-align: center;
}

.lms-cta-card h2 {
  max-width: 1000px;
  font-size: clamp(2rem, 3.2vw, 3rem);
  line-height: 1.1;
  letter-spacing: -0.015em;
}

.lms-cta-card p {
  color: var(--lms-text-muted);
  font-size: 1.0625rem;
}

/* ─── Contact card ────────────────────────────────────────────────────────── */

.lms-contact-card {
  padding: clamp(1.5rem, 5vw, 3.5rem);
}

/* ─── Form ────────────────────────────────────────────────────────────────── */

.lms-form {
  display: grid;
  gap: 1rem;
}

.lms-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.lms-form label {
  display: grid;
  gap: 0.45rem;
}

.lms-form span {
  color: var(--lms-text-muted);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.lms-form input,
.lms-form textarea {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  border: 1px solid var(--lms-border);
  border-radius: var(--lms-radius);
  padding: 0.9rem 1.1rem;
  background: var(--lms-surface);
  color: var(--lms-text);
  transition: border-color 150ms ease;
}

.lms-form input:focus,
.lms-form textarea:focus {
  outline: none;
  border-color: var(--lms-primary);
}

.lms-form button {
  min-height: 3.25rem;
  border: 0;
  border-radius: 999px;
  background: var(--lms-primary);
  color: #05070d;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.05em;
}

.lms-contact-meta {
  display: grid;
  gap: 0.4rem;
  margin-top: 2rem;
  border-top: 1px solid var(--lms-border);
  padding-top: 1.25rem;
  color: var(--lms-text-muted);
  text-align: center;
  letter-spacing: 0.1em;
}



/* ── src/styles/parts/atoms-responsive.css ── */
/* ─── FAQ ─────────────────────────────────────────────────────────────────── */

.lms-faq-list {
  display: grid;
  gap: 0.75rem;
}

.lms-faq {
  padding: 1.3rem 1.5rem;
}

.lms-faq summary {
  cursor: pointer;
  color: var(--lms-text);
  font-weight: 700;
}

.lms-faq p {
  margin-top: 0.8rem;
  color: var(--lms-text-muted);
  line-height: 1.7;
}

.lms-faq-item {
  min-width: 0;
  border: 1px solid color-mix(in srgb, var(--lms-text) 9%, transparent);
  border-radius: var(--lms-radius);
  background: color-mix(in srgb, var(--lms-surface) 55%, transparent);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, #fff 5%, transparent),
    0 10px 28px -16px rgba(0, 0, 0, 0.4);
  transition: border-color 200ms ease, background 200ms ease;
}

.lms-faq-item:hover {
  border-color: color-mix(in srgb, var(--lms-primary) 24%, transparent);
}

.lms-faq-item[open] {
  border-color: color-mix(in srgb, var(--lms-primary) 30%, transparent);
  background:
    radial-gradient(120% 100% at 0% 0%, color-mix(in srgb, var(--lms-primary) 9%, transparent) 0%, transparent 45%),
    color-mix(in srgb, var(--lms-surface) 62%, transparent);
}

.lms-faq-item summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1rem;
  align-items: center;
  min-height: 3.75rem;
  padding: 1rem 1.25rem;
  color: var(--lms-text);
  cursor: pointer;
  font-family: var(--lms-heading-font), Georgia, serif;
  font-size: clamp(1.05rem, 1.6vw, 1.35rem);
  font-weight: 700;
  line-height: 1.2;
  list-style: none;
}

.lms-faq-item summary::-webkit-details-marker {
  display: none;
}

.lms-faq-item summary span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.lms-faq-item summary svg {
  color: var(--lms-primary);
  transition: transform 160ms ease;
  opacity: 0.7;
}

.lms-faq-item[open] summary svg {
  transform: rotate(180deg);
}

/* FAQ accordion motion + answer typography: interactions.css */

/* ─── Testimonial quote ───────────────────────────────────────────────────── */

.lms-quote {
  font-family: var(--lms-heading-font), Georgia, serif;
  font-style: italic;
}

/* ─── Gallery ─────────────────────────────────────────────────────────────── */

.lms-gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
}

.lms-gallery-grid img {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: var(--lms-radius);
  object-fit: cover;
}

/* ─── Slots / layout ─────────────────────────────────────────────────────── */

.lms-slot {
  display: grid;
  gap: 1rem;
  min-width: 0;
}

.lms-slot > * {
  min-width: 0;
}

.lms-slot--grid {
  grid-template-columns: inherit;
  gap: inherit;
}

.lms-columns {
  display: grid;
  align-items: stretch;
  min-width: 0;
}

.lms-columns > div {
  min-width: 0;
}

.lms-grid {
  display: grid;
  align-items: stretch;
  min-width: 0;
}

.lms-grid > .lms-slot {
  display: grid;
  align-items: stretch;
}

/*
 * Puck editor: each card in a grid slot is wrapped in 2 extra divs
 * (DropZone-item + DraggableComponent). Propagate stretch height through
 * them so cards in a row reach equal heights in the editor as well as in
 * the Render/preview view.
 */
.lms-slot--grid > * {
  height: 100%;
}

.lms-slot--grid > * > * {
  height: 100%;
}

.lms-grid--2 > .lms-slot {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
}

.lms-grid--3 > .lms-slot {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
}

.lms-grid--4 > .lms-slot {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
}

.lms-columns--1-1 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.lms-columns--1-2 {
  grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr);
}

.lms-columns--2-1 {
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr);
}

/* ─── Card atom ───────────────────────────────────────────────────────────── */

.lms-atom-card {
  display: grid;
  height: 100%;
  min-height: 100%;
  min-width: 0;
  border: 1px solid var(--lms-border);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}

.lms-styled--card {
  max-width: var(--lms-style-max-width, 100%);
  min-height: var(--lms-style-min-height, 100%);
  padding: var(--lms-style-padding, revert-layer);
  border-width: var(--lms-style-border-width, 1px);
  border-color: var(--lms-style-border-color, var(--lms-border));
  border-style: solid;
  border-radius: var(--lms-style-radius, revert-layer);
  background: var(--lms-style-bg, revert-layer);
  box-shadow: var(--lms-style-shadow, revert-layer);
  transition:
    transform var(--lms-motion-duration, 220ms) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1)),
    box-shadow var(--lms-motion-duration, 220ms) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1)),
    border-color var(--lms-motion-duration, 220ms) var(--lms-motion-ease, cubic-bezier(0.2, 0, 0, 1));
}

.lms-styled--card:hover {
  border-color: var(--lms-style-border-color-hover, var(--lms-style-border-color, var(--lms-border)));
  background: var(--lms-style-bg-hover, var(--lms-style-bg, revert-layer));
  box-shadow: var(--lms-style-shadow-hover, var(--lms-style-shadow, revert-layer));
}

.lms-styled--card:active {
  border-color: var(--lms-style-border-color-active, var(--lms-style-border-color-hover, var(--lms-style-border-color, var(--lms-border))));
  background: var(--lms-style-bg-active, var(--lms-style-bg-hover, var(--lms-style-bg, revert-layer)));
  box-shadow: var(--lms-style-shadow-active, var(--lms-style-shadow-hover, var(--lms-style-shadow, revert-layer)));
}

.lms-styled--image {
  max-width: var(--lms-style-max-width, 100%);
  border-width: var(--lms-style-border-width, 1px);
  border-color: var(--lms-style-border-color, var(--lms-border));
  border-style: solid;
  border-radius: var(--lms-style-radius, revert-layer);
  box-shadow: var(--lms-style-shadow, 0 8px 32px rgba(0, 0, 0, 0.12));
}

.lms-styled--image:hover {
  border-color: var(--lms-style-border-color-hover, var(--lms-style-border-color, var(--lms-border)));
  box-shadow: var(--lms-style-shadow-hover, var(--lms-style-shadow, 0 8px 32px rgba(0, 0, 0, 0.12)));
}

.lms-styled--icon {
  padding: var(--lms-style-padding, 0);
  border-radius: var(--lms-style-radius, 0.875rem);
  background: var(--lms-style-bg, color-mix(in srgb, var(--lms-primary) 12%, transparent));
  color: var(--lms-style-color, var(--lms-primary));
  font-size: var(--lms-style-font-size, 1.375rem);
}

.lms-styled--icon:hover {
  background: var(--lms-style-bg-hover, var(--lms-style-bg, color-mix(in srgb, var(--lms-primary) 12%, transparent)));
  color: var(--lms-style-color-hover, var(--lms-style-color, var(--lms-primary)));
}

.lms-styled--line {
  max-width: var(--lms-style-max-width, 100%);
  min-height: var(--lms-style-min-height, 1px);
  border-radius: var(--lms-style-radius, 0);
  background: var(--lms-style-bg, color-mix(in srgb, var(--lms-primary, #f59e0b) 30%, transparent));
}

.lms-styled--input {
  padding: var(--lms-style-padding, 0.95rem 1.15rem);
  border-width: var(--lms-style-border-width, 1px);
  border-color: var(--lms-style-border-color, var(--lms-border));
  border-style: solid;
  border-radius: var(--lms-style-radius, 0.875rem);
  background: var(--lms-style-bg, var(--lms-surface));
  color: var(--lms-style-color, var(--lms-text));
  font-size: var(--lms-style-font-size, inherit);
}

.lms-styled--input:hover,
.lms-styled--input:focus {
  outline: none;
  border-color: var(--lms-style-border-color-hover, color-mix(in srgb, var(--lms-primary) 50%, var(--lms-border)));
  background: var(--lms-style-bg-hover, var(--lms-style-bg, var(--lms-surface)));
}

.lms-atom-card > .lms-slot {
  display: flex;
  min-width: 0;
  height: 100%;
  flex-direction: column;
  gap: var(--lms-style-gap, 0.875rem);
}

/*
 * Push the CTA button to the card bottom.
 */
.lms-atom-card .lms-button:last-child {
  margin-top: auto;
}

.lms-atom-card > .lms-slot > *:last-child:has(.lms-button) {
  margin-top: auto;
}

/* Service card: no padding on card, inner padding on content below image */
.lms-atom-card--surface.lms-service-content > .lms-slot {
  padding: 1.25rem;
}

.lms-atom-card--surface {
  background: var(--lms-surface);
}

.lms-atom-card--transparent {
  background: transparent;
}

.lms-atom-card--accent {
  border-color: color-mix(in srgb, var(--lms-primary) 28%, var(--lms-border));
  background:
    radial-gradient(ellipse 100% 60% at 50% -10%, color-mix(in srgb, var(--lms-primary) 14%, transparent), transparent),
    var(--lms-surface-elevated);
}

/* ─── Text atom — CSS is the source of truth for scale ───────────────────── */

.lms-atom-text {
  position: relative;
  display: block;
  max-width: 100%;
  color: inherit;
  white-space: pre-line;
}

p.lms-atom-text {
  hyphens: auto;
  overflow-wrap: break-word;
  color: var(--lms-text-muted);
  font-size: 1.0625rem;
  line-height: 1.65;
}

h1.lms-atom-text {
  color: var(--lms-text);
  font-size: clamp(2.75rem, 4.5vw, 4.25rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
}

h2.lms-atom-text {
  color: var(--lms-text);
  font-size: clamp(2rem, 3.2vw, 3rem);
  line-height: 1.1;
  letter-spacing: -0.015em;
}

h3.lms-atom-text {
  color: var(--lms-text);
  font-size: clamp(1.3rem, 1.6vw, 1.55rem);
  line-height: 1.2;
  letter-spacing: -0.01em;
}

/* Price display inside a card uses a tighter h2 scale */
.lms-atom-card h2.lms-atom-text {
  font-size: clamp(2.25rem, 3vw, 3rem);
  line-height: 1.0;
  font-weight: 700;
}

.lms-atom-card h3.lms-atom-text {
  font-size: clamp(1.3rem, 1.6vw, 1.55rem);
  line-height: 1.2;
}

/* ─── Image atom ──────────────────────────────────────────────────────────── */

.lms-atom-image {
  overflow: hidden;
  min-width: 0;
  border: 1px solid var(--lms-border);
  background: var(--lms-surface);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}

.lms-atom-image img {
  display: block;
  width: 100%;
  object-fit: cover;
}

/* ─── Divider atom ────────────────────────────────────────────────────────── */

.lms-atom-divider {
  display: block;
  height: 1px;
  margin-inline: auto;
}

/* ─── Form field atom ─────────────────────────────────────────────────────── */

.lms-atom-form-field {
  display: grid;
  gap: 0.5rem;
  min-width: 0;
}

/* ─── Tablet (≤ 900px) ────────────────────────────────────────────────────── */

@media (max-width: 900px) {
  .lms-styled {
    max-width: var(--lms-style-max-width-tablet, var(--lms-style-max-width, revert-layer));
    min-height: var(--lms-style-min-height-tablet, var(--lms-style-min-height, revert-layer));
  }

  .lms-styled--text {
    color: var(--lms-style-color-tablet, var(--lms-style-color, inherit));
    font-size: var(--lms-style-font-size-tablet, var(--lms-style-font-size, revert-layer));
    font-weight: var(--lms-style-font-weight-tablet, var(--lms-style-font-weight, revert-layer));
    line-height: var(--lms-style-line-height-tablet, var(--lms-style-line-height, revert-layer));
    letter-spacing: var(--lms-style-letter-spacing-tablet, var(--lms-style-letter-spacing, 0));
    text-align: var(--lms-style-text-align-tablet, var(--lms-style-text-align, var(--lms-atom-align, inherit)));
  }

  .lms-styled--button {
    max-width: var(--lms-style-max-width-tablet, var(--lms-style-max-width, 100%));
    padding-inline: var(--lms-style-padding-x-tablet, var(--lms-style-padding-x, 1.25rem));
    padding-block: var(--lms-style-padding-y-tablet, var(--lms-style-padding-y, 0.9rem));
    border-width: var(--lms-style-border-width-tablet, var(--lms-style-border-width, var(--lms-btn-border-w, 0)));
    border-radius: var(--lms-style-radius-tablet, var(--lms-style-radius, 999px));
    font-size: var(--lms-style-font-size-tablet, var(--lms-style-font-size, inherit));
  }

  .lms-place-tablet-left {
    justify-self: start;
    align-self: flex-start;
    margin-inline: 0 auto;
  }

  .lms-place-tablet-center {
    justify-self: center;
    align-self: center;
    margin-inline: auto;
  }

  .lms-place-tablet-right {
    justify-self: end;
    align-self: flex-end;
    margin-inline: auto 0;
  }

  .lms-styled--card {
    min-height: var(--lms-style-min-height-tablet, var(--lms-style-min-height, 100%));
    padding: var(--lms-style-padding-tablet, var(--lms-style-padding, revert-layer));
    border-width: var(--lms-style-border-width-tablet, var(--lms-style-border-width, 1px));
    border-radius: var(--lms-style-radius-tablet, var(--lms-style-radius, revert-layer));
  }

  .lms-atom-card > .lms-slot {
    gap: var(--lms-style-gap-tablet, var(--lms-style-gap, 0.875rem));
  }

  .lms-hero,
  .lms-card-grid--3,
  .lms-form-grid,
  .lms-gallery-grid,
  .lms-grid--2 > .lms-slot,
  .lms-grid--3 > .lms-slot,
  .lms-grid--4 > .lms-slot,
  .lms-columns,
  .lms-columns--1-1,
  .lms-columns--1-2,
  .lms-columns--2-1 {
    grid-template-columns: 1fr;
  }

  .lms-pricing-card--featured {
    transform: none;
  }
}

/* ─── Mobile (≤ 640px) ────────────────────────────────────────────────────── */

@media (max-width: 640px) {
  .lms-styled {
    max-width: var(--lms-style-max-width-mobile, var(--lms-style-max-width-tablet, var(--lms-style-max-width, revert-layer)));
    min-height: var(--lms-style-min-height-mobile, var(--lms-style-min-height-tablet, var(--lms-style-min-height, revert-layer)));
  }

  .lms-styled--text {
    color: var(--lms-style-color-mobile, var(--lms-style-color-tablet, var(--lms-style-color, inherit)));
    font-size: var(--lms-style-font-size-mobile, var(--lms-style-font-size-tablet, var(--lms-style-font-size, revert-layer)));
    font-weight: var(--lms-style-font-weight-mobile, var(--lms-style-font-weight-tablet, var(--lms-style-font-weight, revert-layer)));
    line-height: var(--lms-style-line-height-mobile, var(--lms-style-line-height-tablet, var(--lms-style-line-height, revert-layer)));
    letter-spacing: var(--lms-style-letter-spacing-mobile, var(--lms-style-letter-spacing-tablet, var(--lms-style-letter-spacing, 0)));
    text-align: var(--lms-style-text-align-mobile, var(--lms-style-text-align-tablet, var(--lms-style-text-align, var(--lms-atom-align, inherit))));
  }

  .lms-styled--button {
    max-width: var(--lms-style-max-width-mobile, var(--lms-style-max-width-tablet, var(--lms-style-max-width, 100%)));
    padding-inline: var(--lms-style-padding-x-mobile, var(--lms-style-padding-x-tablet, var(--lms-style-padding-x, 1.25rem)));
    padding-block: var(--lms-style-padding-y-mobile, var(--lms-style-padding-y-tablet, var(--lms-style-padding-y, 0.9rem)));
    border-width: var(--lms-style-border-width-mobile, var(--lms-style-border-width-tablet, var(--lms-style-border-width, var(--lms-btn-border-w, 0))));
    border-radius: var(--lms-style-radius-mobile, var(--lms-style-radius-tablet, var(--lms-style-radius, 999px)));
    font-size: var(--lms-style-font-size-mobile, var(--lms-style-font-size-tablet, var(--lms-style-font-size, inherit)));
  }

  .lms-place-mobile-left {
    justify-self: start;
    align-self: flex-start;
    margin-inline: 0 auto;
  }

  .lms-place-mobile-center {
    justify-self: center;
    align-self: center;
    margin-inline: auto;
  }

  .lms-place-mobile-right {
    justify-self: end;
    align-self: flex-end;
    margin-inline: auto 0;
  }

  .lms-styled--card {
    min-height: var(--lms-style-min-height-mobile, var(--lms-style-min-height-tablet, var(--lms-style-min-height, 100%)));
    padding: var(--lms-style-padding-mobile, var(--lms-style-padding-tablet, var(--lms-style-padding, revert-layer)));
    border-width: var(--lms-style-border-width-mobile, var(--lms-style-border-width-tablet, var(--lms-style-border-width, 1px)));
    border-radius: var(--lms-style-radius-mobile, var(--lms-style-radius-tablet, var(--lms-style-radius, revert-layer)));
  }

  .lms-atom-card > .lms-slot {
    gap: var(--lms-style-gap-mobile, var(--lms-style-gap-tablet, var(--lms-style-gap, 0.875rem)));
  }

  .v2-topbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .lms-section {
    padding-inline: 1rem;
  }

  .lms-section--hero,
  .lms-section--large {
    padding-block: 3.5rem;
  }

  .lms-site-nav {
    padding-inline: 1rem;
  }
}



/* ── src/styles/parts/lightbox.css ── */
/* ── Lightbox overlay ────────────────────────────────────────────────────── */

.lms-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.22s ease;
}

.lms-lightbox--open {
  display: flex;
  opacity: 1;
}

/* Fade-in animation on open */
@keyframes lms-lb-fadein {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.lms-lightbox--open {
  animation: lms-lb-fadein 0.22s ease forwards;
}

/* Backdrop */
.lms-lightbox__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* Image wrapper — above the backdrop */
.lms-lightbox__img-wrap {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  max-height: 82vh;
  max-width: 90vw;
}

/* The enlarged image */
.lms-lightbox__img {
  display: block;
  max-height: 82vh;
  max-width: 90vw;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: var(--lms-radius);
  box-shadow:
    0 24px 64px rgba(0, 0, 0, 0.6),
    0 4px 16px rgba(0, 0, 0, 0.4);
  user-select: none;
  -webkit-user-select: none;
}

/* ── Control buttons ─────────────────────────────────────────────────────── */

.lms-lightbox__btn {
  position: absolute;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--lms-text, #f8fafc) 12%, transparent);
  background: color-mix(in srgb, var(--lms-surface, #0f172a) 82%, transparent);
  color: color-mix(in srgb, var(--lms-text, #f8fafc) 90%, transparent);
  cursor: pointer;
  transition: background 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
  padding: 0;
  line-height: 1;
  outline-offset: 3px;
}

.lms-lightbox__btn:hover,
.lms-lightbox__btn:focus-visible {
  background: color-mix(in srgb, var(--lms-primary, #6366f1) 32%, var(--lms-surface, #0f172a));
  border-color: color-mix(in srgb, var(--lms-primary, #6366f1) 45%, transparent);
  transform: scale(1.08);
}

.lms-lightbox__btn:active {
  transform: scale(0.96);
}

/* Positioning */
.lms-lightbox__btn--close {
  top: 1rem;
  right: 1rem;
}

.lms-lightbox__btn--prev {
  left: 1rem;
  top: 50%;
  transform: translateY(-50%);
}
.lms-lightbox__btn--prev:hover,
.lms-lightbox__btn--prev:focus-visible {
  transform: translateY(-50%) scale(1.08);
}
.lms-lightbox__btn--prev:active {
  transform: translateY(-50%) scale(0.96);
}

.lms-lightbox__btn--next {
  right: 1rem;
  top: 50%;
  transform: translateY(-50%);
}
.lms-lightbox__btn--next:hover,
.lms-lightbox__btn--next:focus-visible {
  transform: translateY(-50%) scale(1.08);
}
.lms-lightbox__btn--next:active {
  transform: translateY(-50%) scale(0.96);
}

/* Counter badge */
.lms-lightbox__counter {
  position: absolute;
  z-index: 2;
  bottom: 1.25rem;
  left: 50%;
  transform: translateX(-50%);
  background: color-mix(in srgb, var(--lms-surface, #0f172a) 82%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-text, #f8fafc) 12%, transparent);
  color: color-mix(in srgb, var(--lms-text, #f8fafc) 80%, transparent);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  padding: 0.3rem 0.85rem;
  border-radius: 999px;
  white-space: nowrap;
  pointer-events: none;
}

/* ── Gallery image hover overlay ─────────────────────────────────────────── */

/* Make the wrapper the positioning context and signal clickability */
.lms-atom-image[data-lms-lightbox] {
  cursor: zoom-in;
  position: relative;
  overflow: hidden;
}

/* Dark scrim + magnify icon — appears on hover */
.lms-image-zoom {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0);
  border-radius: inherit;
  opacity: 0;
  transition: opacity 0.2s ease, background 0.2s ease;
  pointer-events: none;
}

.lms-atom-image[data-lms-lightbox]:hover .lms-image-zoom,
.lms-atom-image[data-lms-lightbox]:focus-within .lms-image-zoom {
  opacity: 1;
  background: rgba(0, 0, 0, 0.42);
}

.lms-page--light .lms-atom-image[data-lms-lightbox]:hover .lms-image-zoom,
.lms-page--light .lms-atom-image[data-lms-lightbox]:focus-within .lms-image-zoom {
  background: color-mix(in srgb, var(--lms-bg) 72%, transparent);
}

.lms-page--light .lms-atom-image[data-lms-lightbox]:hover .lms-image-zoom svg,
.lms-page--light .lms-atom-image[data-lms-lightbox]:focus-within .lms-image-zoom svg {
  color: var(--lms-text);
  filter: none;
}

/* The SVG icon inside the zoom span */
.lms-image-zoom svg {
  width: 2rem;
  height: 2rem;
  color: rgba(255, 255, 255, 0.9);
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.5));
}

/* Responsive adjustments */
@media (max-width: 640px) {
  .lms-lightbox__btn--prev { left: 0.5rem; }
  .lms-lightbox__btn--next { right: 0.5rem; }
  .lms-lightbox__btn--close { top: 0.5rem; right: 0.5rem; }
  .lms-lightbox__img {
    max-height: 75vh;
    max-width: 95vw;
  }
}



/* ── src/styles/parts/motion.css ── */
/* ─── Motion layer: scroll-reveal + hover-lift ────────────────────────────────
 * The .lms-motion-ready class is added by initLmsMotion() once JS runs.
 * Without it, .lms-reveal elements are fully visible (no-JS / SEO safety).
 * With it, elements start hidden and transition in when .is-visible is added
 * by the IntersectionObserver.
 *
 * Premium feel: long ease-out-expo settle, a subtle scale, an opt-in blur-in,
 * directional variants, a tunable stagger, and tinted (never pure-black) hover
 * depth. All animated props are transform/opacity (+ opt-in filter on --soft).
 * Tunable per theme by overriding the --lms-reveal-* / --lms-stagger-step vars.
 * ─────────────────────────────────────────────────────────────────────────── */

:root {
  --lms-reveal-ease: cubic-bezier(0.16, 1, 0.3, 1); /* ease-out-expo */
  --lms-reveal-dur: 0.85s;
  --lms-reveal-shift: 32px;
  --lms-stagger-step: 70ms;
}

/* ── Scroll-reveal (base: rise + fade + micro-scale settle) ─────────────────── */

.lms-motion-ready .lms-reveal {
  opacity: 0;
  transform: translateY(var(--lms-reveal-shift)) scale(0.985);
  transition:
    opacity var(--lms-reveal-dur) var(--lms-reveal-ease),
    transform var(--lms-reveal-dur) var(--lms-reveal-ease),
    filter var(--lms-reveal-dur) var(--lms-reveal-ease);
  will-change: transform, opacity;
}

.lms-motion-ready .lms-reveal.is-visible {
  opacity: 1;
  transform: none;
  filter: none;
  will-change: auto;
}

/* ── Reveal variants (override the hidden-state transform; same settle) ──────── */
/* Placed after base so equal-specificity rules win by source order.            */

.lms-motion-ready .lms-reveal--soft  { filter: blur(10px); }                                            /* cinematic blur-in */
.lms-motion-ready .lms-reveal--left  { transform: translateX(calc(var(--lms-reveal-shift) * -1)) scale(0.99); }
.lms-motion-ready .lms-reveal--right { transform: translateX(var(--lms-reveal-shift)) scale(0.99); }
.lms-motion-ready .lms-reveal--scale { transform: scale(0.94); }                                        /* focus-in, no shift */

/* ── Stagger: direct children of .lms-reveal--stagger animate in sequence ───── */

.lms-motion-ready .lms-reveal--stagger:not(.is-visible) > * {
  opacity: 0;
  transform: translateY(var(--lms-reveal-shift)) scale(0.985);
  transition:
    opacity var(--lms-reveal-dur) var(--lms-reveal-ease),
    transform var(--lms-reveal-dur) var(--lms-reveal-ease);
  transition-delay: 0ms;
}

.lms-motion-ready .lms-reveal--stagger.is-visible > * {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--lms-reveal-dur) var(--lms-reveal-ease),
    transform var(--lms-reveal-dur) var(--lms-reveal-ease);
}

.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(1)  { transition-delay: calc(var(--lms-stagger-step) * 0); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(2)  { transition-delay: calc(var(--lms-stagger-step) * 1); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(3)  { transition-delay: calc(var(--lms-stagger-step) * 2); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(4)  { transition-delay: calc(var(--lms-stagger-step) * 3); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(5)  { transition-delay: calc(var(--lms-stagger-step) * 4); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(6)  { transition-delay: calc(var(--lms-stagger-step) * 5); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(7)  { transition-delay: calc(var(--lms-stagger-step) * 6); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(8)  { transition-delay: calc(var(--lms-stagger-step) * 7); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(9)  { transition-delay: calc(var(--lms-stagger-step) * 8); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(10) { transition-delay: calc(var(--lms-stagger-step) * 9); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(11) { transition-delay: calc(var(--lms-stagger-step) * 10); }
.lms-motion-ready .lms-reveal--stagger.is-visible > *:nth-child(12) { transition-delay: calc(var(--lms-stagger-step) * 11); }

/* ── Hover-lift: tactile depth on hover (tinted shadows, never pure black) ───── */
/* Applied regardless of motion-ready state — purely a pointer interaction.      */

.lms-bento-card,
.lms-pricing-card,
.lms-testimonial-card {
  transition:
    transform 0.35s cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.lms-bento-card:hover,
.lms-pricing-card:hover,
.lms-testimonial-card:hover {
  transform: translateY(-6px) scale(1.012);
  box-shadow:
    0 1px 0 color-mix(in srgb, var(--lms-text) 6%, transparent),
    0 18px 40px -20px color-mix(in srgb, var(--lms-text) 35%, transparent),
    0 8px 22px -14px color-mix(in srgb, var(--lms-primary) 22%, transparent);
}

/* Highlighted pricing card keeps a stronger, primary-tinted elevation */
.lms-pricing-card--highlighted:hover {
  transform: translateY(-14px) scale(1.015);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 50%, transparent),
    0 28px 60px -20px color-mix(in srgb, var(--lms-primary) 38%, transparent);
}

/* ── prefers-reduced-motion: full override ────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  /* Reveals (all variants): always fully visible, no transform/filter */
  .lms-reveal,
  .lms-motion-ready .lms-reveal,
  .lms-motion-ready .lms-reveal.is-visible,
  .lms-motion-ready .lms-reveal--soft,
  .lms-motion-ready .lms-reveal--left,
  .lms-motion-ready .lms-reveal--right,
  .lms-motion-ready .lms-reveal--scale,
  .lms-motion-ready .lms-reveal--stagger:not(.is-visible) > *,
  .lms-motion-ready .lms-reveal--stagger.is-visible > * {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }

  /* Hover-lift: disable transform, keep (tinted) box-shadow only */
  .lms-bento-card:hover,
  .lms-pricing-card:hover,
  .lms-pricing-card--highlighted:hover,
  .lms-testimonial-card:hover {
    transform: none;
  }

  .lms-bento-card,
  .lms-pricing-card,
  .lms-testimonial-card {
    transition: box-shadow 0.25s ease;
  }
}



/* ── src/styles/parts/motion-advanced.css ── */
/* ─── Advanced motion utilities ─────────────────────────────────────────────── */
/*                                                                               */
/* .lms-parallax   — marks elements driven by data-lms-parallax="<0..1>"        */
/*                   JS applies transform: translate3d(0, <px>, 0)              */
/* .lms-hero-scale — hero element that scales 1 → ~1.08 as it scrolls out       */
/*                   JS applies transform: scale3d(...)                          */
/*                                                                               */
/* Both classes use will-change: transform so the GPU layer is promoted early.  */
/* The @media block resets transforms for users who prefer reduced motion        */
/* (the JS runtime bails out first, but the CSS reset is a belt-and-suspenders  */
/* safety net for SSR / no-JS contexts).                                         */

.lms-parallax {
  will-change: transform;
}

.lms-hero-scale {
  will-change: transform;
  transform-origin: center;
}

@media (prefers-reduced-motion: reduce) {
  .lms-parallax,
  .lms-hero-scale {
    will-change: auto;
    transform: none !important;
  }
}



/* ── src/styles/parts/glass.css ── */
/* Glass morphism utilities — frosted-glass effect using backdrop-filter + token-driven colors */

.lms-glass {
  backdrop-filter: blur(14px) saturate(140%);
  background: color-mix(in srgb, var(--lms-surface) 72%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-border) 60%, transparent);
}

.lms-glass--strong {
  backdrop-filter: blur(22px) saturate(180%);
  background: color-mix(in srgb, var(--lms-surface) 72%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-border) 60%, transparent);
}

.lms-glass--soft {
  backdrop-filter: blur(8px) saturate(120%);
  background: color-mix(in srgb, var(--lms-surface) 72%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-border) 60%, transparent);
}

.lms-glass--card {
  backdrop-filter: blur(14px) saturate(140%);
  background: color-mix(in srgb, var(--lms-surface) 72%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-border) 60%, transparent);
  border-radius: var(--lms-radius);
  box-shadow: 0 8px 32px color-mix(in srgb, var(--lms-text) 12%, transparent);
}

.lms-glass--nav {
  backdrop-filter: blur(12px);
  background: color-mix(in srgb, var(--lms-surface) 88%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-border) 60%, transparent);
}

/* Graceful fallback for browsers without backdrop-filter support */
@supports not (backdrop-filter: blur(1px)) {
  .lms-glass,
  .lms-glass--strong,
  .lms-glass--soft,
  .lms-glass--card,
  .lms-glass--nav {
    backdrop-filter: none;
    background: color-mix(in srgb, var(--lms-surface) 95%, transparent);
  }
}



/* ── src/styles/parts/signatures/_index.css ── */

/* ── src/styles/parts/signatures/hero-scroll-mask.css ── */
/* ─── Hero scroll-mask signature ───────────────────────────────────────────── */
/* Progress inherits from #hero (set by initLmsSignatures). Default 1 = visible on load. */

.lms-sig-mask .lms-sig-word {
  display: inline-block;
  -webkit-mask-image: linear-gradient(
    90deg,
    #000 calc(var(--sig-progress, 1) * 100%),
    transparent calc(var(--sig-progress, 1) * 100% + 8%)
  );
  mask-image: linear-gradient(
    90deg,
    #000 calc(var(--sig-progress, 1) * 100%),
    transparent calc(var(--sig-progress, 1) * 100% + 8%)
  );
}

@media (prefers-reduced-motion: reduce) {
  .lms-sig-mask .lms-sig-word {
    -webkit-mask-image: none;
    mask-image: none;
    animation: none;
  }
}



/* ── src/styles/parts/signatures/hero-word-stagger.css ── */
/* ─── Hero word-stagger signature ──────────────────────────────────────────── */

.lms-motion-ready .lms-reveal--stagger .lms-sig-word {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
}

.lms-motion-ready .lms-reveal--stagger.is-visible .lms-sig-word {
  opacity: 1;
  transform: none;
}

.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(1) { transition-delay: 40ms; }
.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(2) { transition-delay: 90ms; }
.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(3) { transition-delay: 140ms; }
.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(4) { transition-delay: 190ms; }
.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(5) { transition-delay: 240ms; }
.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(6) { transition-delay: 290ms; }
.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(7) { transition-delay: 340ms; }
.lms-motion-ready .lms-reveal--stagger > .lms-sig-word:nth-child(8) { transition-delay: 390ms; }

@media (prefers-reduced-motion: reduce) {
  .lms-motion-ready .lms-reveal--stagger .lms-sig-word {
    opacity: 1;
    transform: none;
    transition: none;
  }
}





/* ── src/styles/parts/sections/_index.css ── */

/* ── src/styles/parts/sections/_shared.css ── */
/* ─── World-Class Section Styles ─────────────────────────────────────────────
 * All visual rules for HeroSection, FeaturesBento, and PricingTiers.
 * Every colour/font/radius/spacing value comes from --lms-* tokens so the
 * same markup looks premium across all design languages.
 * No hardcoded dark colours that would break the light editorial theme.
 * ─────────────────────────────────────────────────────────────────────────── */

/* ─── Shared eyebrow + section title ────────────────────────────────────────── */

.lms-section-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  width: fit-content;
  max-width: 100%;
  align-self: flex-start;
  margin: 0 0 1rem;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 25%, transparent);
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.3rem 0.85rem;
  background: color-mix(in srgb, var(--lms-primary) 8%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.lms-section-title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.875rem, 3.5vw, 2.75rem);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.1;
}



/* ── src/styles/parts/sections/_primitives.css ── */
/* ─── Section primitives — shared glass, glow, grain (single source) ───────── */

.lms-glass-surface {
  box-sizing: border-box;
  background: var(--lms-surface-bg, color-mix(in srgb, var(--lms-surface, #080c16) 72%, transparent));
  border: var(--lms-surface-border, 1px solid color-mix(in srgb, var(--lms-border, rgba(255, 255, 255, 0.07)) 85%, transparent));
  border-radius: var(--lms-radius-md, 1rem);
  backdrop-filter: var(--lms-surface-backdrop, blur(16px));
  -webkit-backdrop-filter: var(--lms-surface-backdrop, blur(16px));
  box-shadow: var(--lms-surface-shadow, none);
}

.lms-glass-surface--strong {
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

.lms-glow-orb {
  position: absolute;
  pointer-events: none;
  border-radius: 50%;
  background: radial-gradient(
    circle at center,
    color-mix(in srgb, var(--lms-primary) 22%, transparent),
    transparent 70%
  );
  filter: blur(40px);
}

.lms-grain-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.04;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.lms-section-shell {
  position: relative;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  margin-inline: auto;
  padding-inline: clamp(1rem, 4vw, 2rem);
}

.lms-primitive-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  width: fit-content;
  max-width: 100%;
  align-self: flex-start;
  margin: 0 auto 1rem;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 25%, transparent);
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.3rem 0.85rem;
  background: color-mix(in srgb, var(--lms-primary) 8%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-align: center;
  text-transform: uppercase;
}



/* ── src/sections/primitives/styles/read-more.css ── */
/* Expandable body copy — clamp + toggle (initLmsReadMore) */

.lms-read-more {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5rem;
  width: 100%;
  min-width: 0;
}

.lms-read-more__body {
  margin: 0;
  width: 100%;
}

.lms-read-more__body.is-clamped {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: var(--lms-read-more-lines, 5);
  overflow: hidden;
}

.lms-read-more__toggle {
  flex-shrink: 0;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  color: var(--lms-primary);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.3;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.lms-read-more__toggle:hover {
  color: color-mix(in srgb, var(--lms-primary) 82%, var(--lms-text));
}

.lms-read-more__toggle:focus-visible {
  outline: 2px solid var(--lms-primary);
  outline-offset: 2px;
  border-radius: 2px;
}

.lms-section-column[data-align="center"] .lms-read-more {
  align-items: center;
}

.lms-section-column[data-align="center"] .lms-read-more__toggle {
  align-self: center;
}

@media (prefers-reduced-motion: reduce) {
  .lms-read-more__toggle {
    transition: none;
  }
}



/* ── src/styles/parts/sections/_surface-system.css ── */
/* ─── Surface system — cardStyle drives all section card surfaces ───────────
 * Set via data-card-style on .lms-page (from designLanguage.surface.cardStyle).
 * Sections read --lms-surface-* vars; never hardcode backdrop-filter.
 * ─────────────────────────────────────────────────────────────────────────── */

/* ── Surface grammar — global effect intensity (glow, aurora, decorative depth) ─ */
.lms-page[data-surface-grammar="minimal"] {
  --lms-effect-intensity: 0;
  --lms-surface-glow-opacity: 0;
  --lms-stat-text-glow: none;
  --lms-chrome-glow-strength: 0;
}

.lms-page[data-surface-grammar="balanced"] {
  --lms-effect-intensity: 0.45;
  --lms-chrome-glow-strength: 0.25;
}

.lms-page[data-surface-grammar="expressive"] {
  --lms-effect-intensity: 1;
  --lms-chrome-glow-strength: 1;
}

/* Minimal grammar: suppress animated page-bg pseudo layers */
.lms-page.lms-bg--aurora[data-surface-grammar="minimal"]::before,
.lms-page.lms-bg--mesh[data-surface-grammar="minimal"]::after,
.lms-page.lms-bg--grain[data-surface-grammar="minimal"]::before {
  display: none;
}

.lms-page.lms-bg--aurora[data-surface-grammar="balanced"]::before,
.lms-page.lms-bg--mesh[data-surface-grammar="balanced"]::after,
.lms-page.lms-bg--grain[data-surface-grammar="balanced"]::before {
  opacity: calc(0.45 * var(--lms-bg-strength, 1));
}

/* Defaults (glass) — overridden per card style below */
.lms-page {
  --lms-effect-intensity: 1;
  --lms-chrome-glow-strength: 1;
  /* Small frosted blur for pills, nav CTAs, ghost buttons — always on transparent chrome */
  --lms-chrome-backdrop: blur(2px) saturate(1.15);
  --lms-surface-bg: color-mix(in srgb, var(--lms-surface, #080c16) 58%, transparent);
  --lms-surface-backdrop: blur(16px);
  --lms-surface-border: 1px solid color-mix(in srgb, var(--lms-text, #fff) 9%, transparent);
  --lms-surface-shadow:
    inset 0 1px 0 color-mix(in srgb, #fff 6%, transparent),
    0 12px 32px -14px rgba(0, 0, 0, 0.45);
  --lms-surface-shadow-hover:
    inset 0 1px 0 color-mix(in srgb, #fff 9%, transparent),
    0 26px 54px -18px rgba(0, 0, 0, 0.55),
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 10%, transparent);
  --lms-surface-glow-opacity: 0.6;
  --lms-stat-text-glow: 0 0 28px color-mix(in srgb, var(--lms-primary) 35%, transparent);
  --lms-surface-hover-border: color-mix(in srgb, var(--lms-primary) 32%, transparent);
  --lms-surface-hover-lift: translateY(-4px);
}

.lms-page[data-card-style="glass"] {
  --lms-surface-bg: color-mix(in srgb, var(--lms-surface, #080c16) 58%, transparent);
  --lms-surface-backdrop: blur(16px);
  --lms-surface-border: 1px solid color-mix(in srgb, var(--lms-text, #fff) 9%, transparent);
  --lms-surface-shadow:
    inset 0 1px 0 color-mix(in srgb, #fff 6%, transparent),
    0 12px 32px -14px rgba(0, 0, 0, 0.45);
  --lms-surface-shadow-hover:
    inset 0 1px 0 color-mix(in srgb, #fff 9%, transparent),
    0 26px 54px -18px rgba(0, 0, 0, 0.55),
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 10%, transparent);
  --lms-surface-glow-opacity: 0.6;
  --lms-stat-text-glow: 0 0 28px color-mix(in srgb, var(--lms-primary) 35%, transparent);
}

.lms-page[data-card-style="bordered"] {
  --lms-surface-bg: var(--lms-surface, #ffffff);
  --lms-surface-backdrop: none;
  --lms-surface-border: 1px solid var(--lms-border, rgba(0, 0, 0, 0.1));
  --lms-surface-shadow: none;
  --lms-surface-shadow-hover: 0 0 0 1px color-mix(in srgb, var(--lms-primary) 25%, transparent);
  --lms-surface-glow-opacity: 0;
  --lms-stat-text-glow: none;
  --lms-chrome-glow-strength: 0.35;
  --lms-surface-hover-border: color-mix(in srgb, var(--lms-primary) 40%, transparent);
  --lms-surface-hover-lift: translateY(-2px);
}

.lms-page[data-card-style="elevated"] {
  --lms-surface-bg: var(--lms-surface-elevated, var(--lms-surface, #ffffff));
  --lms-surface-backdrop: none;
  --lms-surface-border: 1px solid color-mix(in srgb, var(--lms-border, rgba(0, 0, 0, 0.08)) 80%, transparent);
  --lms-surface-shadow:
    0 4px 6px -1px rgba(0, 0, 0, 0.06),
    0 12px 28px -8px rgba(0, 0, 0, 0.12);
  --lms-surface-shadow-hover:
    0 8px 16px -4px rgba(0, 0, 0, 0.08),
    0 20px 40px -12px rgba(0, 0, 0, 0.15);
  --lms-surface-glow-opacity: 0;
  --lms-stat-text-glow: none;
  --lms-surface-hover-border: color-mix(in srgb, var(--lms-primary) 20%, transparent);
  --lms-surface-hover-lift: translateY(-6px);
}

.lms-page[data-card-style="flat"] {
  --lms-surface-bg: transparent;
  --lms-surface-backdrop: none;
  --lms-surface-border: none;
  --lms-surface-shadow: none;
  --lms-surface-shadow-hover: none;
  --lms-surface-glow-opacity: 0;
  --lms-stat-text-glow: none;
  --lms-surface-hover-border: transparent;
  --lms-surface-hover-lift: none;
}

.lms-page--light[data-card-style="glass"] {
  --lms-surface-bg: color-mix(in srgb, var(--lms-surface, #fff) 85%, transparent);
  --lms-surface-border: 1px solid color-mix(in srgb, var(--lms-text, #111) 8%, transparent);
  --lms-surface-shadow:
    inset 0 1px 0 color-mix(in srgb, #fff 80%, transparent),
    0 12px 32px -14px rgba(0, 0, 0, 0.08);
  --lms-surface-glow-opacity: 0.28;
}

/* Shared card surface utility */
.lms-surface-card {
  box-sizing: border-box;
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  border-radius: var(--lms-radius-md, var(--lms-radius, 1rem));
  box-shadow: var(--lms-surface-shadow);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-surface-card:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

@media (prefers-reduced-motion: reduce) {
  .lms-surface-card {
    transition: none;
  }

  .lms-surface-card:hover {
    transform: none;
  }
}

/* Decorative glow orbs — only when language uses glass */
.lms-page[data-card-style="glass"] .lms-surface-glow,
.lms-page:not([data-card-style]) .lms-surface-glow {
  opacity: var(--lms-surface-glow-opacity, 0);
}

.lms-page[data-card-style="bordered"] .lms-surface-glow,
.lms-page[data-card-style="elevated"] .lms-surface-glow,
.lms-page[data-card-style="flat"] .lms-surface-glow {
  display: none;
}

.lms-page[data-card-style="glass"] .lms-testimonial-card--featured {
  background:
    radial-gradient(120% 80% at 50% 0%, color-mix(in srgb, var(--lms-primary) 14%, transparent) 0%, transparent 55%),
    var(--lms-surface-bg);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, var(--lms-primary) 18%, transparent),
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    0 20px 50px -18px color-mix(in srgb, var(--lms-primary) 28%, transparent);
}

.lms-page[data-card-style="bordered"] .lms-testimonial-card--featured::after,
.lms-page[data-card-style="elevated"] .lms-testimonial-card--featured::after,
.lms-page[data-card-style="flat"] .lms-testimonial-card--featured::after {
  display: none;
}

.lms-page[data-card-style="glass"] .lms-testimonial-spotlight {
  background:
    radial-gradient(120% 90% at 12% 6%, color-mix(in srgb, var(--lms-primary) 14%, transparent) 0%, transparent 55%),
    var(--lms-surface-bg);
  border-color: color-mix(in srgb, var(--lms-primary) 30%, transparent);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, var(--lms-primary) 16%, transparent),
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 16%, transparent),
    0 26px 64px -22px color-mix(in srgb, var(--lms-primary) 22%, transparent);
}

.lms-page[data-card-style="bordered"] .lms-testimonial-spotlight::after,
.lms-page[data-card-style="elevated"] .lms-testimonial-spotlight::after,
.lms-page[data-card-style="flat"] .lms-testimonial-spotlight::after,
.lms-page[data-card-style="bordered"] .lms-services-card::after,
.lms-page[data-card-style="elevated"] .lms-services-card::after,
.lms-page[data-card-style="flat"] .lms-services-card::after {
  display: none;
}

.lms-page[data-card-style="bordered"] .lms-bento-card--featured::after,
.lms-page[data-card-style="bordered"] .lms-bento-card--secondary::after,
.lms-page[data-card-style="elevated"] .lms-bento-card--featured::after,
.lms-page[data-card-style="elevated"] .lms-bento-card--secondary::after,
.lms-page[data-card-style="flat"] .lms-bento-card--featured::after,
.lms-page[data-card-style="flat"] .lms-bento-card--secondary::after,
.lms-page[data-card-style="bordered"] .lms-cta-section__card::after,
.lms-page[data-card-style="elevated"] .lms-cta-section__card::after,
.lms-page[data-card-style="flat"] .lms-cta-section__card::after {
  display: none;
}

.lms-page[data-card-style="glass"] .lms-bento-card--featured {
  background:
    radial-gradient(125% 90% at 10% 6%, color-mix(in srgb, var(--lms-primary) 16%, transparent) 0%, transparent 52%),
    var(--lms-surface-bg);
}

.lms-page[data-card-style="bordered"] .lms-bento-card--featured,
.lms-page[data-card-style="elevated"] .lms-bento-card--featured,
.lms-page[data-card-style="flat"] .lms-bento-card--featured {
  background: var(--lms-surface-bg);
}

.lms-page[data-card-style="glass"] .lms-cta-section__card {
  background:
    radial-gradient(120% 120% at 50% 0%, color-mix(in srgb, var(--lms-primary) 13%, transparent) 0%, transparent 55%),
    var(--lms-surface-bg);
}

.lms-page[data-card-style="bordered"] .lms-cta-section__card,
.lms-page[data-card-style="elevated"] .lms-cta-section__card {
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  box-shadow: var(--lms-surface-shadow);
}

.lms-page[data-card-style="glass"] .lms-pricing-card--highlighted {
  background:
    radial-gradient(120% 70% at 50% 0%, color-mix(in srgb, var(--lms-primary) 18%, transparent) 0%, transparent 55%),
    var(--lms-surface-bg);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, var(--lms-primary) 22%, transparent),
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 30%, transparent),
    0 24px 60px -18px color-mix(in srgb, var(--lms-primary) 35%, transparent);
}

.lms-page[data-card-style="bordered"] .lms-pricing-card--highlighted,
.lms-page[data-card-style="elevated"] .lms-pricing-card--highlighted {
  background: var(--lms-surface-bg);
  border-color: color-mix(in srgb, var(--lms-primary) 45%, transparent);
  box-shadow: var(--lms-surface-shadow);
  transform: translateY(-8px);
}

/* ── Minimal grammar — flat surfaces (stats-inline parity), any cardStyle ─── */

.lms-page[data-surface-grammar="minimal"] {
  --lms-surface-bg: transparent;
  --lms-surface-backdrop: none;
  --lms-surface-border: none;
  --lms-surface-shadow: none;
  --lms-surface-shadow-hover: none;
  --lms-surface-hover-border: var(--lms-border);
  --lms-surface-hover-lift: none;
}

.lms-page[data-surface-grammar="minimal"] .lms-glass-surface,
.lms-page[data-surface-grammar="minimal"] .lms-surface-card {
  border-radius: 0;
  background: transparent;
  border: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}

.lms-page[data-surface-grammar="minimal"] .lms-surface-card:hover {
  transform: none;
  box-shadow: none;
}

.lms-page[data-surface-grammar="minimal"] .lms-cta-section__card,
.lms-page[data-surface-grammar="minimal"] .lms-bento-card--featured,
.lms-page[data-surface-grammar="minimal"] .lms-testimonial-card--featured,
.lms-page[data-surface-grammar="minimal"] .lms-testimonial-spotlight,
.lms-page[data-surface-grammar="minimal"] .lms-pricing-card--highlighted {
  background: transparent;
  box-shadow: none;
}

.lms-page[data-surface-grammar="minimal"] .lms-cta-section__card::after,
.lms-page[data-surface-grammar="minimal"] .lms-bento-card--featured::after,
.lms-page[data-surface-grammar="minimal"] .lms-services-card::after {
  display: none;
}



/* ── src/styles/parts/sections/_chrome-system.css ── */
/* ─── Chrome system — control radius, eyebrow mode, section header align ─────
 * Wired via data-eyebrow-mode / data-section-header-align on .lms-page
 * (from resolveChromeProfile in seededVariation.ts).
 * ─────────────────────────────────────────────────────────────────────────── */

.lms-page {
  --lms-control-radius: var(--lms-radius-md, var(--lms-radius, 1rem));
  --lms-eyebrow-mode: pill;
  --lms-section-header-align: center;
  --lms-header-frost-blur: 5px;
  --lms-header-frost-bg: transparent;
  /* ADR-006 locked hero backdrop timing */
  --lms-hero-ken-burns-duration: 22s;
  --lms-hero-slide-interval: 7s;
  --lms-hero-slide-crossfade: 1.8s;
  --lms-hero-nav-blur: 6px;
  /* ADR-007 immersive scroll-sink */
  --lms-hero-immersive-scale-max: 0.1;
  --lms-hero-immersive-sink-distance: 28vh;
  --lms-hero-immersive-scrim-boost: 0.25;
}

/* Archetype defaults */
.lms-page[data-card-style="bordered"],
.lms-page[data-card-style="flat"] {
  --lms-control-radius: var(--lms-radius-sm, var(--lms-radius, 0.25rem));
}

/* Grammar overrides */
.lms-page[data-surface-grammar="minimal"] {
  --lms-control-radius: var(--lms-radius-sm, var(--lms-radius, 0.25rem));
  --lms-eyebrow-mode: label;
  --lms-section-header-align: start;
}

.lms-page[data-surface-grammar="balanced"] {
  --lms-control-radius: var(--lms-radius-md, var(--lms-radius, 1rem));
}

.lms-page[data-surface-grammar="expressive"] {
  --lms-control-radius: var(--lms-radius-md, var(--lms-radius, 1rem));
}

/* Explicit data attrs from resolveChromeProfile (override grammar defaults when set) */
.lms-page[data-eyebrow-mode="label"] {
  --lms-eyebrow-mode: label;
}

.lms-page[data-eyebrow-mode="pill"] {
  --lms-eyebrow-mode: pill;
}

.lms-page[data-section-header-align="start"] {
  --lms-section-header-align: start;
}

.lms-page[data-section-header-align="center"] {
  --lms-section-header-align: center;
}

/* Page chrome visibility — CSS fallback when context unavailable */
.lms-page[data-show-eyebrows="false"] .lms-section-eyebrow,
.lms-page[data-show-eyebrows="false"] .lms-hero-section__eyebrow {
  display: none !important;
}

.lms-page[data-show-secondary-cta="false"] .lms-hero-section__cta--secondary,
.lms-page[data-show-secondary-cta="false"] .lms-cta-section__btn--secondary,
.lms-page[data-show-secondary-cta="false"] .lms-cta-strip__btn--secondary {
  display: none !important;
}

.lms-page[data-show-trust-line="false"] .lms-hero-section__trust {
  display: none !important;
}

/* Rect nav CTA when brutalist / editorial */
.lms-page[data-nav-cta-style="rect"] .lms-nav-cta {
  border-radius: var(--lms-control-radius);
}

/* Label eyebrow — visual only; alignment owned by _layout-spine.css */
.lms-page[data-eyebrow-mode="label"] .lms-section-eyebrow {
  margin: 0 0 0.5rem;
  border: none;
  background: none;
  padding: 0;
  border-radius: 0;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}

/* Frost on scroll — auto mode only; pinned override uses _chrome-readability.css */

.lms-site-nav.is-scrolled[data-nav-bar-surface="auto"] {
  border-bottom-color: color-mix(in srgb, var(--lms-border) 75%, transparent) !important;
}



/* ── src/styles/parts/sections/_chrome-readability.css ── */
/* ─── Chrome readability — nav tone, frost, hero chips ─────────────────────
 * Text: data-nav-tone on .lms-site-nav
 * Bar:  data-nav-bar-surface (auto | light | dark frost)
 * Override pairs: dark text → light bar; light text → dark bar (resolveNavBarSurface).
 * Auto: page theme + headerScroll.ts on scroll (no manual overlay).
 * ─────────────────────────────────────────────────────────────────────────── */

.lms-page {
  --lms-chrome-chip-blur: 8px;
  --lms-chrome-chip-bg: color-mix(in srgb, var(--lms-surface) 68%, transparent);
  --lms-chrome-chip-border: color-mix(in srgb, var(--lms-border) 70%, transparent);
  --lms-nav-frost-blur: 12px;
  --lms-nav-frost-bg-scrolled-dark: rgba(6, 8, 15, var(--lms-nav-overlay-opacity, 0.5));
  --lms-nav-frost-bg-scrolled-light: rgba(255, 255, 255, var(--lms-nav-overlay-opacity, 0.32));
  --lms-nav-frost-bg-scrolled: var(--lms-nav-frost-bg-scrolled-light);
  --lms-mobile-drawer-bg: var(--lms-surface, #0f1117);
  --lms-nav-bar-h: 4rem;
}

/* Automaatne — scroll/hero defaults (not the manual 0–100% sliders) */
.lms-page--dark[data-nav-tone-override="auto"] {
  --lms-nav-overlay-opacity: 0.5;
}

.lms-page--light[data-nav-tone-override="auto"] {
  --lms-nav-overlay-opacity: 0.32;
}

/* ── Shared chip primitive (hero eyebrow + secondary CTA) ───────────────── */

.lms-chrome-chip {
  border: 1px solid var(--lms-chrome-chip-border);
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  background: var(--lms-chrome-chip-bg);
  backdrop-filter: blur(var(--lms-chrome-chip-blur));
  -webkit-backdrop-filter: blur(var(--lms-chrome-chip-blur));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lms-border) 25%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 10%, transparent);
}

.lms-chrome-chip--on-light {
  --lms-chrome-chip-bg: color-mix(in srgb, var(--lms-primary) 10%, transparent);
  --lms-chrome-chip-border: color-mix(in srgb, var(--lms-primary) 32%, transparent);
  color: var(--lms-primary);
}

.lms-chrome-chip--on-dark {
  --lms-chrome-chip-bg: rgba(255, 255, 255, 0.12);
  --lms-chrome-chip-border: rgba(255, 255, 255, 0.28);
  color: rgba(255, 255, 255, 0.92);
}

.lms-hero-section__eyebrow.lms-chrome-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.4rem 0.95rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.lms-hero-section__cta--secondary.lms-chrome-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.85rem 1.5rem;
  font-size: 0.9375rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease;
}

.lms-hero-section__cta--secondary.lms-chrome-chip--on-dark:hover {
  background: rgba(255, 255, 255, 0.18);
  border-color: rgba(255, 255, 255, 0.4);
  color: #fff;
}

.lms-hero-section__cta--secondary.lms-chrome-chip--on-light:hover {
  background: color-mix(in srgb, var(--lms-primary) 16%, transparent);
  border-color: color-mix(in srgb, var(--lms-primary) 45%, transparent);
}

/* ── Nav tone: dark text on light/frost bar ─────────────────────────────── */

.lms-site-nav[data-nav-tone="dark"] strong {
  color: #111827;
}

.lms-site-nav[data-nav-tone="dark"] .lms-site-nav__links a {
  color: rgba(17, 24, 39, 0.62);
}

.lms-site-nav[data-nav-tone="dark"] .lms-site-nav__links a:hover {
  color: #111827;
}

.lms-site-nav[data-nav-tone="dark"] .lms-nav-cta {
  border-color: rgba(17, 24, 39, 0.2) !important;
  background: rgba(17, 24, 39, 0.04) !important;
  color: #111827 !important;
}

.lms-site-nav[data-nav-tone="dark"] .lms-nav-cta:hover {
  background: rgba(17, 24, 39, 0.08) !important;
  border-color: rgba(17, 24, 39, 0.35) !important;
}

.lms-site-nav[data-nav-tone="dark"] .lms-site-nav__toggle {
  color: #111827;
}

/* ── Nav tone: light text on photo / dark scrim ─────────────────────────── */

.lms-site-nav[data-nav-tone="light"] strong {
  color: rgba(255, 255, 255, 0.95);
}

.lms-site-nav[data-nav-tone="light"] .lms-site-nav__links a {
  color: rgba(255, 255, 255, 0.82);
}

.lms-site-nav[data-nav-tone="light"] .lms-site-nav__links a:hover {
  color: #fff;
}

.lms-site-nav[data-nav-tone="light"] .lms-nav-cta {
  border-color: rgba(255, 255, 255, 0.42) !important;
  background: rgba(255, 255, 255, 0.14) !important;
  color: #fff !important;
}

.lms-site-nav[data-nav-tone="light"] .lms-nav-cta:hover {
  background: rgba(255, 255, 255, 0.22) !important;
  border-color: rgba(255, 255, 255, 0.55) !important;
  color: #fff !important;
}

.lms-site-nav[data-nav-tone="light"] .lms-site-nav__toggle {
  color: rgba(255, 255, 255, 0.95);
}

/* ── Frost bar — scroll-bound surfaces only apply bg when .is-scrolled ─── */

.lms-page--dark {
  --lms-nav-frost-bg-scrolled: var(--lms-nav-frost-bg-scrolled-dark);
}

.lms-page--light {
  --lms-nav-frost-bg-scrolled: var(--lms-nav-frost-bg-scrolled-light);
}

.lms-site-nav[data-nav-bar-surface="light"]:is(
  [data-surface="transparent-to-glass"],
  [data-surface="transparent-to-frost"]
) {
  --lms-nav-frost-bg-scrolled: var(--lms-nav-frost-bg-scrolled-light);
  --lms-header-frost-bg: var(--lms-nav-frost-bg-scrolled-light);
}

.lms-site-nav[data-nav-bar-surface="dark"]:is(
  [data-surface="transparent-to-glass"],
  [data-surface="transparent-to-frost"]
) {
  --lms-nav-frost-bg-scrolled: var(--lms-nav-frost-bg-scrolled-dark);
  --lms-header-frost-bg: var(--lms-nav-frost-bg-scrolled-dark);
}

/* Frost/glass bar — ONLY after scroll (manual override included) */
.lms-site-nav:is(
  [data-surface="transparent-to-glass"],
  [data-surface="transparent-to-frost"]
).is-scrolled:is(
  [data-nav-bar-surface="auto"],
  [data-nav-bar-surface="light"],
  [data-nav-bar-surface="dark"]
) {
  --lms-header-frost-bg: var(--lms-nav-frost-bg-scrolled);
  background: var(--lms-nav-frost-bg-scrolled) !important;
  backdrop-filter: blur(var(--lms-nav-frost-blur)) !important;
  -webkit-backdrop-filter: blur(var(--lms-nav-frost-blur)) !important;
  border-bottom: 1px solid color-mix(in srgb, var(--lms-border) 55%, transparent) !important;
  box-shadow: none !important;
  transition: background 160ms ease, border-color 160ms ease, backdrop-filter 160ms ease;
}

/* Manual nav tone (hele/tume): pinned bar before scroll */
.lms-page:is([data-nav-tone-override="light"], [data-nav-tone-override="dark"])
  .lms-site-nav[data-surface="transparent-to-frost"]:not(.is-scrolled) {
  background: color-mix(in srgb, var(--lms-nav-frost-bg-scrolled) calc(var(--lms-nav-overlay-opacity, 1) * 100%), transparent) !important;
  backdrop-filter: blur(var(--lms-nav-frost-blur)) !important;
  -webkit-backdrop-filter: blur(var(--lms-nav-frost-blur)) !important;
  border-bottom: 1px solid color-mix(in srgb, var(--lms-border) calc(var(--lms-nav-overlay-opacity, 1) * 35%), transparent) !important;
}

.lms-page:is([data-nav-tone-override="light"], [data-nav-tone-override="dark"])
  .lms-site-nav[data-surface="transparent-to-glass"]:not(.is-scrolled) {
  background: color-mix(in srgb, var(--lms-nav-frost-bg-scrolled) calc(var(--lms-nav-overlay-opacity, 1) * 100%), transparent) !important;
  backdrop-filter: blur(var(--lms-nav-frost-blur)) !important;
  -webkit-backdrop-filter: blur(var(--lms-nav-frost-blur)) !important;
  border-bottom: 1px solid color-mix(in srgb, var(--lms-border) calc(var(--lms-nav-overlay-opacity, 1) * 20%), transparent) !important;
}

@media (prefers-reduced-motion: reduce) {
  .lms-site-nav:is(
    [data-surface="transparent-to-glass"],
    [data-surface="transparent-to-frost"]
  ) {
    transition: none;
  }
}

/* always-glass — static bar; overlay = fill, frost = blur */
.lms-site-nav[data-surface="always-glass"] {
  background: rgba(6, 8, 15, var(--lms-nav-overlay-opacity, 1)) !important;
  backdrop-filter: blur(var(--lms-nav-frost-blur)) saturate(1.4) !important;
  -webkit-backdrop-filter: blur(var(--lms-nav-frost-blur)) saturate(1.4) !important;
  border-bottom: 1px solid rgba(255, 255, 255, calc(var(--lms-nav-overlay-opacity, 1) * 0.06)) !important;
  box-shadow: 0 4px 18px rgba(0, 0, 0, calc(var(--lms-nav-overlay-opacity, 1) * 0.18)) !important;
}

.lms-page--light .lms-site-nav[data-surface="always-glass"] {
  background: rgba(255, 255, 255, var(--lms-nav-overlay-opacity, 1)) !important;
  border-bottom: 1px solid rgba(0, 0, 0, calc(var(--lms-nav-overlay-opacity, 1) * 0.08)) !important;
  box-shadow: 0 4px 18px rgba(0, 0, 0, calc(var(--lms-nav-overlay-opacity, 1) * 0.06)) !important;
}

/* ── Mobile nav panel — theme surface on backdrop layer ─────────────────── */

.lms-mobile-nav__panel {
  color: var(--lms-text);
}

.lms-mobile-nav__links a {
  color: var(--lms-text-muted);
}

.lms-mobile-nav__links a:hover {
  color: var(--lms-text);
}

html.lms-nav-menu-open .lms-mobile-nav__links .lms-nav-cta--mobile,
.lms-site-root.lms-nav-menu-open .lms-mobile-nav__links .lms-nav-cta--mobile {
  color: var(--lms-primary, #f59e0b) !important;
  text-shadow: none;
}



/* ── src/styles/parts/sections/_language-switcher.css ── */
/* ─── Language switcher (site nav) — V1 parity on V2 nav tokens ─────────── */

.lms-language-switcher-wrap {
  position: relative;
  flex-shrink: 0;
}

.lms-language-switcher-backdrop {
  position: fixed;
  inset: 0;
  z-index: 40;
  border: none;
  padding: 0;
  margin: 0;
  background: transparent;
  cursor: default;
}

.lms-language-switcher {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  cursor: pointer;
  font-family: inherit;
  font-size: 0.625rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--lms-text, #f3f5fa);
  background: color-mix(in srgb, var(--lms-text, #f3f5fa) 6%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-text, #f3f5fa) 14%, transparent);
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.375rem 0.625rem;
  transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
}

.lms-language-switcher--control:hover,
.lms-language-switcher-wrap.is-open .lms-language-switcher--control {
  background: color-mix(in srgb, var(--lms-text, #f3f5fa) 10%, transparent);
  border-color: color-mix(in srgb, var(--lms-text, #f3f5fa) 22%, transparent);
}

/* Trigger content holder — keeps flag+label grouped so the runtime can mirror
   the chosen option into it without disturbing the chevron. */
.lms-language-switcher__current {
  display: inline-flex;
  align-items: center;
  gap: inherit;
}

.lms-language-switcher.is-ghost {
  background: transparent;
  border: 1px solid transparent;
}

.lms-language-switcher.is-minimal {
  background: transparent;
  border: none;
  padding-inline: 0.25rem;
}

.lms-language-switcher.is-no-border {
  border-color: transparent !important;
}

.lms-language-switcher.is-transparent {
  background: transparent !important;
}

.lms-language-switcher.is-subtle {
  background: color-mix(in srgb, var(--lms-text, #f3f5fa) 5%, transparent) !important;
}

.lms-language-switcher.is-compact {
  padding: 0.25rem 0.5rem;
  gap: 0.25rem;
}

.lms-language-switcher.is-spacious {
  padding: 0.5rem 0.875rem;
  gap: 0.5rem;
}

.lms-language-switcher__flag {
  width: 0.875rem;
  height: 0.583rem;
  display: block;
  flex-shrink: 0;
  border-radius: 2px;
  background: none;
}

.lms-language-switcher.is-flag-only .lms-language-switcher__flag {
  width: 1rem;
  height: 0.667rem;
}

.lms-language-switcher.is-compact .lms-language-switcher__flag {
  width: 0.75rem;
  height: 0.5rem;
}

.lms-language-switcher.is-compact.is-flag-only .lms-language-switcher__flag {
  width: 0.875rem;
  height: 0.583rem;
}

.lms-language-switcher.is-spacious .lms-language-switcher__flag {
  width: 1rem;
  height: 0.667rem;
}

.lms-language-switcher.is-spacious.is-flag-only .lms-language-switcher__flag {
  width: 1.125rem;
  height: 0.75rem;
}

.lms-language-switcher__globe,
.lms-language-switcher__chevron {
  flex-shrink: 0;
  opacity: 0.65;
}

.lms-language-switcher__chevron {
  transition: transform 180ms ease;
}

.lms-language-switcher-wrap.is-open .lms-language-switcher__chevron {
  transform: rotate(180deg);
}

@keyframes lms-language-menu-in {
  from {
    opacity: 0;
    transform: translateY(-6px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.lms-language-switcher-menu {
  position: absolute;
  top: calc(100% + 0.375rem);
  right: 0;
  z-index: 50;
  min-width: 7.5rem;
  max-height: min(20rem, 60vh);
  overflow-y: auto;
  padding: 0.25rem 0;
  margin: 0;
  border-radius: var(--lms-radius-md, 0.75rem);
  background: color-mix(in srgb, var(--lms-bg, #06080f) 88%, transparent);
  border: 1px solid color-mix(in srgb, var(--lms-text, #f3f5fa) 12%, transparent);
  box-shadow: 0 12px 32px rgba(2, 6, 23, 0.28);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  /* Hidden by default; shown when the wrap is open (React in editor/preview,
     serialized runtime in the exported static site). */
  display: none;
}

.lms-language-switcher-wrap.is-open .lms-language-switcher-menu {
  display: block;
  animation: lms-language-menu-in 180ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

@media (prefers-reduced-motion: reduce) {
  .lms-language-switcher-menu {
    animation: none;
  }

  .lms-language-switcher__chevron,
  .lms-language-switcher-wrap.is-open .lms-language-switcher__chevron {
    transition: none;
    transform: none;
  }
}

.lms-language-switcher-menu button {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  width: 100%;
  padding: 0.625rem 0.75rem;
  border: none;
  background: transparent;
  color: var(--lms-text-muted, rgba(243, 245, 250, 0.62));
  font-family: inherit;
  font-size: 0.625rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-align: left;
  cursor: pointer;
  transition: background 140ms ease, color 140ms ease;
}

.lms-language-switcher-menu button:hover,
.lms-language-switcher-menu button.is-active {
  color: var(--lms-primary, #f59e0b);
  background: color-mix(in srgb, var(--lms-primary, #f59e0b) 10%, transparent);
}

.lms-language-switcher-mobile {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  width: 100%;
  padding-block: 0.5rem;
}

.lms-language-switcher-mobile .lms-language-switcher.is-active {
  color: var(--lms-primary, #f59e0b);
  border-color: color-mix(in srgb, var(--lms-primary, #f59e0b) 45%, transparent);
  background: color-mix(in srgb, var(--lms-primary, #f59e0b) 10%, transparent);
}

/* Nav tone readability */
.lms-site-nav[data-nav-tone="dark"] .lms-language-switcher {
  color: #05070d;
  background: color-mix(in srgb, #05070d 6%, transparent);
  border-color: color-mix(in srgb, #05070d 14%, transparent);
}

.lms-site-nav[data-nav-tone="dark"] .lms-language-switcher-menu {
  background: rgba(255, 255, 255, 0.96);
  border-color: rgba(5, 7, 13, 0.1);
  color: #05070d;
}

.lms-site-nav[data-nav-tone="dark"] .lms-language-switcher-menu button {
  color: rgba(5, 7, 13, 0.62);
}

.lms-site-nav[data-nav-tone="dark"] .lms-language-switcher-menu button:hover,
.lms-site-nav[data-nav-tone="dark"] .lms-language-switcher-menu button.is-active {
  color: var(--lms-primary, #f59e0b);
}

.lms-site-nav--solid .lms-language-switcher {
  color: #05070d;
  background: color-mix(in srgb, #05070d 6%, transparent);
  border-color: color-mix(in srgb, #05070d 14%, transparent);
}



/* ── src/styles/parts/sections/_mobile-nav.css ── */
/* ─── Mobile navigation v2 — full-screen overlay (≤900px + Puck device) ─── */

.lms-site-nav {
  z-index: 400;
}

.lms-site-nav__toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  cursor: pointer;
  flex-shrink: 0;
}

.lms-site-nav__toggle:focus-visible {
  outline: 2px solid var(--lms-primary, #f59e0b);
  outline-offset: 2px;
}

.lms-site-nav__toggle-icon {
  position: relative;
  display: block;
  width: 1.125rem;
  height: 2px;
  background: currentColor;
  border-radius: 1px;
  transition: background 200ms ease;
}

.lms-site-nav__toggle-icon::before,
.lms-site-nav__toggle-icon::after {
  content: '';
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  background: currentColor;
  border-radius: 1px;
  transition: transform 200ms ease, top 200ms ease;
}

.lms-site-nav__toggle-icon::before {
  top: -6px;
}

.lms-site-nav__toggle-icon::after {
  top: 6px;
}

html.lms-nav-menu-open .lms-site-nav__toggle-icon,
.lms-site-root.lms-nav-menu-open .lms-site-nav__toggle-icon {
  background: transparent;
}

html.lms-nav-menu-open .lms-site-nav__toggle-icon::before,
.lms-site-root.lms-nav-menu-open .lms-site-nav__toggle-icon::before {
  top: 0;
  transform: rotate(45deg);
}

html.lms-nav-menu-open .lms-site-nav__toggle-icon::after,
.lms-site-root.lms-nav-menu-open .lms-site-nav__toggle-icon::after {
  top: 0;
  transform: rotate(-45deg);
}

/* Header transparent over open menu (overrides is-scrolled frost) */
html.lms-nav-menu-open .lms-site-nav,
.lms-site-root.lms-nav-menu-open .lms-site-nav {
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border-bottom-color: transparent !important;
  box-shadow: none !important;
}

/* ─── Overlay shell — closed by default, open via ancestor class ─────────── */

.lms-mobile-nav {
  display: none;
}

html.lms-nav-menu-open .lms-mobile-nav,
.lms-site-root.lms-nav-menu-open .lms-mobile-nav {
  display: block;
  position: fixed;
  inset: 0;
  z-index: 390;
  isolation: isolate;
  pointer-events: none;
}

/* Puck canvas: overlay covers the page, not the IDE viewport */
.lms-site-root.lms-nav-menu-open .lms-mobile-nav {
  position: absolute;
}

.lms-mobile-nav__backdrop {
  display: none;
}

html.lms-nav-menu-open .lms-mobile-nav__backdrop,
.lms-site-root.lms-nav-menu-open .lms-mobile-nav__backdrop {
  display: block;
  position: absolute;
  inset: 0;
  z-index: 0;
  margin: 0;
  padding: 0;
  border: none;
  background: var(--lms-mobile-drawer-bg, var(--lms-surface, #0f1117));
  cursor: pointer;
  pointer-events: auto;
  animation: lms-mobile-backdrop-in 240ms ease both;
}

.lms-mobile-nav__panel {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  background: transparent;
  color: var(--lms-text);
  pointer-events: none;
  padding:
    max(1.25rem, env(safe-area-inset-top))
    max(1.5rem, env(safe-area-inset-right))
    max(2rem, env(safe-area-inset-bottom))
    max(1.5rem, env(safe-area-inset-left));
  padding-top: calc(var(--lms-nav-bar-h, 4rem) + max(1.25rem, env(safe-area-inset-top)));
  animation: lms-mobile-panel-in 280ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.lms-mobile-nav__links {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0;
  padding: 0;
  pointer-events: auto;
}

.lms-mobile-nav__links > * {
  animation: lms-mobile-link-in 320ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.lms-mobile-nav__links > *:nth-child(1) { animation-delay: 40ms; }
.lms-mobile-nav__links > *:nth-child(2) { animation-delay: 80ms; }
.lms-mobile-nav__links > *:nth-child(3) { animation-delay: 120ms; }
.lms-mobile-nav__links > *:nth-child(4) { animation-delay: 160ms; }
.lms-mobile-nav__links > *:nth-child(5) { animation-delay: 200ms; }
.lms-mobile-nav__links > *:nth-child(6) { animation-delay: 240ms; }
.lms-mobile-nav__links > *:nth-child(7) { animation-delay: 280ms; }
.lms-mobile-nav__links > *:nth-child(8) { animation-delay: 320ms; }

.lms-mobile-nav__links a {
  display: flex;
  align-items: center;
  min-height: 3rem;
  padding: 0.5rem 0;
  font-size: 1.125rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-decoration: none;
  color: var(--lms-text-muted);
  transition: color 160ms ease;
}

.lms-mobile-nav__links a:hover {
  color: var(--lms-text);
}

.lms-mobile-nav__links a:focus-visible {
  outline: 2px solid var(--lms-primary, #f59e0b);
  outline-offset: 2px;
  border-radius: 4px;
}

.lms-mobile-nav__links .lms-nav-cta--mobile {
  justify-content: center;
  min-height: 3rem;
  margin-top: 1.5rem;
  padding: 0.875rem 1.25rem;
  font-size: 0.9375rem;
  width: 100%;
}

html.lms-nav-menu-open .lms-mobile-nav__links .lms-nav-cta--mobile,
.lms-site-root.lms-nav-menu-open .lms-mobile-nav__links .lms-nav-cta--mobile {
  color: var(--lms-primary, #f59e0b) !important;
  text-shadow: none;
}

/* Export / preview — lock page scroll when menu open */
html.lms-nav-menu-open,
html.lms-nav-menu-open body {
  overflow: hidden;
  touch-action: none;
}

/* Skin editor — lock preview pane when mobile nav is open */
.lms-site-root.lms-nav-menu-open .v2-preview,
.lms-site-root.lms-nav-menu-open .v2-preview .lms-page {
  overflow: hidden;
  touch-action: none;
}

/* ─── Breakpoint: viewport mobile ─────────────────────────────────────── */

@media (max-width: 900px) {
  .lms-site-nav__links {
    display: none !important;
  }

  .lms-site-nav__toggle {
    display: inline-flex;
  }
}

/* Puck editor device toggle — mirror without viewport MQ */
.lms-site-root.v2-device--mobile .lms-site-nav__links {
  display: none !important;
}

.lms-site-root.v2-device--mobile .lms-site-nav__toggle {
  display: inline-flex;
}

@media (max-width: 900px) and (prefers-reduced-motion: reduce) {
  html.lms-nav-menu-open .lms-mobile-nav__backdrop,
  .lms-site-root.lms-nav-menu-open .lms-mobile-nav__backdrop,
  html.lms-nav-menu-open .lms-mobile-nav__panel,
  .lms-site-root.lms-nav-menu-open .lms-mobile-nav__panel,
  html.lms-nav-menu-open .lms-mobile-nav__links > *,
  .lms-site-root.lms-nav-menu-open .lms-mobile-nav__links > * {
    animation: none;
  }
}

@keyframes lms-mobile-backdrop-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes lms-mobile-panel-in {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes lms-mobile-link-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (min-width: 901px) {
  .lms-site-root:not(.v2-device--mobile) .lms-site-nav__toggle,
  .lms-site-root:not(.v2-device--mobile) .lms-mobile-nav {
    display: none !important;
  }

  .lms-site-nav__toggle,
  .lms-mobile-nav {
    display: none !important;
  }
}



/* ── src/styles/parts/sections/_layout-spine.css ── */
/* ─── Layout spine — shared column + header alignment ───────────────────────
 * Page tokens: --lms-section-align, --lms-section-column-width, --lms-section-narrow-width
 * Wired via data-section-align on .lms-page (resolveLayoutSpine).
 * Sections always set data-align on SectionColumn / SectionHeader (useResolvedSectionAlign).
 * ─────────────────────────────────────────────────────────────────────────── */

.lms-page {
  --lms-section-align: center;
  --lms-section-column-width: var(--lms-content-max-width, 1120px);
  --lms-section-narrow-width: 640px;
}

.lms-page[data-surface-grammar="minimal"] {
  --lms-section-align: start;
  --lms-section-narrow-width: 480px;
}

.lms-page[data-surface-grammar="balanced"] {
  --lms-section-align: center;
  --lms-section-narrow-width: 640px;
}

.lms-page[data-surface-grammar="expressive"] {
  --lms-section-align: center;
  --lms-section-narrow-width: 640px;
}

.lms-page[data-section-align="start"] {
  --lms-section-align: start;
}

.lms-page[data-section-align="center"] {
  --lms-section-align: center;
}

/* ── Content column — header + body share one alignment axis ─────────────── */

.lms-section-column {
  display: flex;
  width: 100%;
  max-width: var(--lms-section-column-width);
  margin-inline: auto;
  flex-direction: column;
  align-items: stretch;
  gap: var(--lms-section-gap, 3rem);
}

.lms-section-column--narrow {
  max-width: var(--lms-section-narrow-width);
}

.lms-section-column[data-align="start"] {
  align-items: flex-start;
  text-align: start;
}

.lms-section-column[data-align="center"] {
  align-items: center;
  text-align: center;
}

/* ── Section header primitive ─────────────────────────────────────────────── */

.lms-section-header {
  display: flex;
  width: 100%;
  flex-direction: column;
  gap: 0.75rem;
}

[data-section-layout="contained"] .lms-section-header {
  width: 100%;
  max-width: var(--lms-section-column-width);
}

.lms-section-header[data-align="start"] {
  align-items: flex-start;
  text-align: start;
}

.lms-section-header[data-align="start"] .lms-section-title,
.lms-section-header[data-align="start"] .lms-section-eyebrow,
.lms-section-header[data-align="start"] .lms-section-subtitle {
  margin-inline: 0;
  text-align: start;
  align-self: flex-start;
}

.lms-section-header[data-align="center"] {
  align-items: center;
  text-align: center;
}

.lms-section-header[data-align="center"] .lms-section-title,
.lms-section-header[data-align="center"] .lms-section-eyebrow,
.lms-section-header[data-align="center"] .lms-section-subtitle {
  margin-inline: auto;
  text-align: center;
  align-self: center;
}

.lms-section-header[data-align="center"] .lms-section-title {
  text-wrap: balance;
}

/* Minimal grammar — eyebrow + title on one baseline row */
.lms-page[data-surface-grammar="minimal"] .lms-section-header {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0 0.65rem;
}

.lms-page[data-surface-grammar="minimal"] .lms-section-header .lms-section-eyebrow {
  margin: 0;
  align-self: auto;
}

.lms-page[data-surface-grammar="minimal"] .lms-section-header .lms-section-title {
  margin: 0;
  align-self: auto;
}

.lms-page[data-surface-grammar="minimal"] .lms-section-header .lms-section-eyebrow::after {
  content: '·';
  margin-left: 0.65rem;
  color: var(--lms-text-muted);
  font-weight: 400;
  letter-spacing: normal;
}

.lms-page[data-surface-grammar="minimal"] .lms-section-header .lms-section-subtitle {
  flex: 1 1 100%;
  margin-top: 0.35rem;
  align-self: flex-start;
}

.lms-section-subtitle {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.65;
}

/* ── Column body inherits the same axis (open + contained) ───────────────── */

.lms-section-column[data-align="center"] [class*="__main"],
.lms-section-column[data-align="center"] [class*="__body"] {
  align-items: center;
  text-align: center;
}

.lms-section-column[data-align="center"] [class*="__text"],
.lms-section-column[data-align="center"] [class*="__title"]:not(.lms-section-title) {
  margin-inline: auto;
  text-align: center;
}

.lms-section-column[data-align="start"] [class*="__main"],
.lms-section-column[data-align="start"] [class*="__body"] {
  align-items: flex-start;
  text-align: start;
}



/* ── src/sections/hero/styles/_index.css ── */

/* ── src/sections/hero/styles/base.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 1. HeroSection                                                              */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-hero-section {
  position: relative;
  display: flex;
  min-height: 100vh;
  min-height: 100svh;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding-block: clamp(2rem, 4vw, 3rem);
  text-align: center;
}

/* ── Background layer ─────────────────────────────────────────────────────── */

.lms-hero-section__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  user-select: none;
}

/* Spotlight — soft radial glow rising behind the headline */

.lms-hero-section__spotlight {
  position: absolute;
  top: -18%;
  left: 50%;
  width: 78%;
  height: 80%;
  transform: translateX(-50%);
  background: radial-gradient(
    ellipse at center,
    color-mix(in srgb, var(--lms-primary) 28%, transparent) 0%,
    color-mix(in srgb, var(--lms-primary) 8%, transparent) 38%,
    transparent 66%
  );
  filter: blur(36px);
  opacity: calc(0.85 * var(--lms-effect-intensity, 1));
}

/* Aurora blobs — tinted by primary/accent, controlled by design language */

.lms-hero-section__aurora {
  position: absolute;
  border-radius: 50%;
  filter: blur(90px);
  will-change: transform, opacity;
}

.lms-hero-section__aurora--1 {
  top: -18%;
  left: -12%;
  width: 62%;
  height: 62%;
  background: radial-gradient(circle, var(--lms-primary) 0%, transparent 70%);
  animation: lms-aurora-drift-1 26s ease-in-out infinite;
}

.lms-hero-section__aurora--2 {
  right: -10%;
  bottom: -14%;
  width: 58%;
  height: 58%;
  background: radial-gradient(circle, var(--lms-accent) 0%, transparent 70%);
  animation: lms-aurora-drift-2 32s ease-in-out infinite;
}

.lms-hero-section__aurora--3 {
  top: 14%;
  left: 28%;
  width: 46%;
  height: 46%;
  background: radial-gradient(circle, color-mix(in srgb, var(--lms-primary) 55%, var(--lms-accent)) 0%, transparent 70%);
  animation: lms-aurora-drift-3 22s ease-in-out infinite;
}

/* Dot grid overlay */

.lms-hero-section__dotgrid {
  position: absolute;
  inset: 0;
  color: var(--lms-border);
  opacity: calc(0.35 * var(--lms-effect-intensity, 1));
  mask-image: radial-gradient(ellipse 75% 70% at 50% 38%, #000 0%, transparent 78%);
  -webkit-mask-image: radial-gradient(ellipse 75% 70% at 50% 38%, #000 0%, transparent 78%);
}

/* Film-grain texture — subtle high-frequency noise for a premium surface */

.lms-hero-section__grain {
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: calc(0.05 * var(--lms-effect-intensity, 1));
  mix-blend-mode: overlay;
}

.lms-page--light .lms-hero-section__grain {
  opacity: calc(0.03 * var(--lms-effect-intensity, 1));
}

/* Photo background variant */

.lms-hero-section--image .lms-hero-section__bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--lms-hero-bg);
  background-position: center;
  background-size: cover;
}

.lms-hero-section--image .lms-hero-section__aurora {
  display: none;
}

.lms-hero-section__scrim {
  position: absolute;
  inset: 0;
}

/* ── Content ──────────────────────────────────────────────────────────────── */

.lms-hero-section__inner {
  position: relative;
  z-index: 1;
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
  padding-inline: 1.5rem;
}

/* Scroll-mask wraps content outside __inner flex — mirror inner spacing */
.lms-hero-section__sig-body {
  display: flex;
  width: 100%;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
}

/* Eyebrow pill */

.lms-hero-section__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  width: fit-content;
  max-width: 100%;
  align-self: flex-start;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 32%, transparent);
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.4rem 0.95rem;
  background: color-mix(in srgb, var(--lms-primary) 10%, transparent);
  backdrop-filter: var(--lms-chrome-backdrop);
  -webkit-backdrop-filter: var(--lms-chrome-backdrop);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 6%, transparent),
    0 6px 24px color-mix(in srgb, var(--lms-primary) 16%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 12%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.lms-hero-section__eyebrow svg {
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--lms-primary) 60%, transparent));
}

/* Headline */

.lms-hero-section__title {
  max-width: 880px;
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  /* Medium size — new default: tasteful, confident without overwhelming */
  font-size: clamp(2rem, 4.2vw, 3.25rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.1;
}

/* ── Size modifiers — set via titleSize prop in HeroSection ─────────────── */

.lms-hero-section__title--small {
  font-size: clamp(1.5rem, 2.8vw, 2.25rem);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

/* Large: the original "too big" size, kept as an explicit opt-in */
.lms-hero-section__title--large {
  font-size: clamp(2.75rem, 6.4vw, 5rem);
  letter-spacing: -0.035em;
  line-height: 1.03;
}

/* Dark themes: give the headline depth with a vertical gradient fill */

.lms-page--dark .lms-hero-section__title {
  background: linear-gradient(
    180deg,
    color-mix(in srgb, #fff 94%, var(--lms-text)) 0%,
    var(--lms-text) 62%
  );
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  text-shadow: 0 1px 40px color-mix(in srgb, var(--lms-primary) 14%, transparent);
}

.lms-hero-section--image .lms-hero-section__eyebrow.lms-chrome-chip--on-dark svg {
  filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.35));
}

/* Subtitle */

.lms-hero-section__subtitle {
  max-width: 480px;
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: clamp(1rem, 1.5vw, 1.125rem);
  line-height: 1.65;
}

/* CTA row */

.lms-hero-section__ctas {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
}

.lms-hero-section__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.85rem 1.75rem;
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  transition:
    opacity var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-hero-section__cta--primary {
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, #fff) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, #0a0a0a);
  box-shadow:
    0 6px 24px color-mix(in srgb, var(--lms-primary) 42%, transparent),
    0 1px 0 color-mix(in srgb, #fff 35%, transparent) inset;
}

.lms-hero-section__cta--primary:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 40px color-mix(in srgb, var(--lms-primary) 55%, transparent),
    0 1px 0 color-mix(in srgb, #fff 45%, transparent) inset;
}

.lms-hero-section__cta--secondary {
  border: 1px solid color-mix(in srgb, var(--lms-text) 16%, transparent);
  background: var(--lms-surface-bg);
  backdrop-filter: var(--lms-chrome-backdrop);
  -webkit-backdrop-filter: var(--lms-chrome-backdrop);
  color: var(--lms-text);
}

.lms-hero-section__cta--secondary:hover {
  border-color: color-mix(in srgb, var(--lms-text) 28%, transparent);
  background: color-mix(in srgb, var(--lms-text) 9%, transparent);
  transform: translateY(-2px);
}

/* Trust row */

.lms-hero-section__trust {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  letter-spacing: 0.02em;
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-hero-section__cta {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  .lms-hero-section {
    padding-block: clamp(1.75rem, 5vw, 2.5rem);
  }

  .lms-hero-section__cta {
    padding: 0.8rem 1.4rem;
    font-size: 0.875rem;
  }
}

@media (max-width: 390px) {
  .lms-hero-section__ctas {
    flex-direction: column;
    width: 100%;
  }

  .lms-hero-section__cta {
    width: 100%;
    justify-content: center;
  }
}



/* ── src/sections/hero/styles/highlight-motion.css ── */
/* Hero photo-less background motion — brighter sweep peaks (grammar-scoped) */

.lms-hero-section {
  --lms-hero-highlight-boost: 1;
}

.lms-page[data-surface-grammar="balanced"] .lms-hero-section {
  --lms-hero-highlight-boost: 0.7;
}

.lms-page[data-surface-grammar="minimal"] .lms-hero-section {
  --lms-hero-highlight-boost: 0;
}

.lms-hero-section__spotlight {
  animation: lms-hero-spotlight-pulse 22s ease-in-out infinite;
}

@keyframes lms-hero-spotlight-pulse {
  0%, 100% { opacity: calc(0.72 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  48% { opacity: calc(1 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

.lms-page--light .lms-hero-section__spotlight {
  animation: lms-hero-spotlight-pulse-light 22s ease-in-out infinite;
}

@keyframes lms-hero-spotlight-pulse-light {
  0%, 100% { opacity: calc(0.38 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  48% { opacity: calc(0.62 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

.lms-hero-section__highlight-sweep {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(72px);
  mix-blend-mode: screen;
  will-change: transform, opacity;
}

.lms-page--light .lms-hero-section__highlight-sweep {
  mix-blend-mode: soft-light;
}

.lms-hero-section__highlight-sweep--1 {
  top: 8%;
  left: -8%;
  width: 42%;
  height: 42%;
  background: radial-gradient(
    circle,
    color-mix(in srgb, var(--lms-primary) 50%, #fff 18%) 0%,
    transparent 68%
  );
  animation: lms-hero-highlight-sweep-1 16s ease-in-out infinite;
}

.lms-hero-section__highlight-sweep--2 {
  right: -6%;
  bottom: 6%;
  width: 38%;
  height: 38%;
  background: radial-gradient(
    circle,
    color-mix(in srgb, var(--lms-accent, var(--lms-primary)) 45%, #fff 14%) 0%,
    transparent 70%
  );
  animation: lms-hero-highlight-sweep-2 21s ease-in-out infinite;
}

@keyframes lms-hero-highlight-sweep-1 {
  0%, 100% { transform: translate(0, 0) scale(0.92); opacity: calc(0.12 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  42% { transform: translate(38%, 12%) scale(1.18); opacity: calc(0.62 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  68% { transform: translate(18%, 4%) scale(1.05); opacity: calc(0.28 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

@keyframes lms-hero-highlight-sweep-2 {
  0%, 100% { transform: translate(0, 0) scale(0.9); opacity: calc(0.1 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  55% { transform: translate(-32%, -14%) scale(1.15); opacity: calc(0.55 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  78% { transform: translate(-12%, -6%) scale(1.02); opacity: calc(0.22 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

.lms-page--light .lms-hero-section__aurora--1,
.lms-page--light .lms-hero-section__aurora--2,
.lms-page--light .lms-hero-section__aurora--3 {
  filter: blur(80px);
}

@keyframes lms-aurora-drift-1 {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: calc(0.34 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  50% { transform: translate(7%, 5%) scale(1.14); opacity: calc(0.58 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

@keyframes lms-aurora-drift-2 {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: calc(0.28 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  50% { transform: translate(-6%, -6%) scale(1.12); opacity: calc(0.52 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

@keyframes lms-aurora-drift-3 {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: calc(0.18 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  50% { transform: translate(5%, -8%) scale(0.9); opacity: calc(0.42 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

.lms-hero-section--image .lms-hero-section__highlight-sweep {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-section__aurora {
    animation: none !important;
  }

  .lms-hero-section__highlight-sweep {
    animation: none !important;
    opacity: calc(0.2 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }

  .lms-hero-section__spotlight {
    animation: none !important;
    opacity: calc(0.75 * var(--lms-effect-intensity, 1));
  }
}



/* ── src/sections/hero/styles/split.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 1b. HeroSection — variant: split                                            */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-hero-section--split {
  /* Override base centered flex — split uses its own grid wrapper */
  display: block;
  position: relative;
  overflow: hidden;
}

/* Photo in side column only — page background shows through copy column */
.lms-hero-section--split-has-photo {
  background: transparent;
}

/* Two-column grid */

.lms-hero-split__grid {
  position: relative;
  z-index: 1;
  display: grid;
  width: 100%;
  min-height: 100vh;
  min-height: 100svh;
  max-width: var(--lms-content-max-width, 1120px);
  margin-inline: auto;
  grid-template-columns: 1.1fr 0.9fr;
  align-items: center;
  gap: clamp(2.5rem, 5vw, 5rem);
  padding-block: clamp(2rem, 4vw, 3rem);
  padding-inline: clamp(1.5rem, 5vw, 4rem);
  box-sizing: border-box;
}

/* Left: content */

.lms-hero-split__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1.5rem;
}

/* Left-align overrides for eyebrow / title / subtitle */

.lms-hero-split__content .lms-hero-section__eyebrow {
  /* inherits base pill styles */
}

.lms-hero-split__content .lms-hero-section__title {
  text-align: left;
}

.lms-hero-split__content .lms-hero-section__subtitle {
  text-align: left;
}

.lms-hero-split__content .lms-hero-section__trust {
  text-align: left;
}

.lms-hero-section__ctas--left {
  justify-content: flex-start;
}

/* Right: visual */

.lms-hero-split__visual {
  position: relative;
  border-radius: var(--lms-radius);
  overflow: hidden;
  border: 1px solid var(--lms-border);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 20%, transparent),
    0 24px 80px color-mix(in srgb, var(--lms-primary) 18%, transparent),
    0 8px 32px rgba(0, 0, 0, 0.18);
  aspect-ratio: 4 / 3;
}

/* Image inside split visual */

.lms-hero-split__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Aurora panel (no image fallback) */

.lms-hero-split__aurora-panel {
  position: relative;
  width: 100%;
  height: 100%;
  background: color-mix(in srgb, var(--lms-primary) 6%, var(--lms-surface));
  overflow: hidden;
}

.lms-hero-split__aurora-glow {
  position: absolute;
  border-radius: 50%;
  filter: blur(60px);
  will-change: transform, opacity;
  animation: lms-hero-split-glow-drift 24s ease-in-out infinite;
}

.lms-hero-split__aurora-glow--1 {
  top: -20%;
  left: -10%;
  width: 80%;
  height: 80%;
  background: radial-gradient(circle, var(--lms-primary) 0%, transparent 70%);
  animation-delay: 0s;
}

.lms-hero-split__aurora-glow--2 {
  bottom: -20%;
  right: -10%;
  width: 70%;
  height: 70%;
  background: radial-gradient(circle, var(--lms-accent) 0%, transparent 70%);
  animation-delay: -8s;
}

@keyframes lms-hero-split-glow-drift {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: calc(0.18 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
  50% { transform: translate(6%, -5%) scale(1.1); opacity: calc(0.42 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1)); }
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-split__aurora-glow {
    animation: none;
    opacity: calc(0.24 * var(--lms-effect-intensity, 1));
  }
}

.lms-hero-split__dotgrid {
  position: absolute;
  inset: 0;
  color: var(--lms-border);
  opacity: 0.35;
}

/* Copy-only split (no image) — single editorial column */

.lms-hero-section--split-copy-only .lms-hero-split__grid {
  grid-template-columns: 1fr;
  max-width: 720px;
}

.lms-hero-section--split-copy-only {
  min-height: auto;
}

/* ─── Responsive: split → stacked ────────────────────────────────────────── */

@media (max-width: 768px) {
  .lms-hero-split__grid {
    grid-template-columns: 1fr;
    padding-block: clamp(2.75rem, 8vw, 4.5rem);
    gap: 2.5rem;
  }

  .lms-hero-split__content {
    align-items: center;
  }

  .lms-hero-split__content .lms-hero-section__title,
  .lms-hero-split__content .lms-hero-section__subtitle,
  .lms-hero-split__content .lms-hero-section__trust {
    text-align: center;
  }

  .lms-hero-section__ctas--left {
    justify-content: center;
  }

  .lms-hero-split__visual {
    width: 100%;
    max-width: 520px;
    margin-inline: auto;
    aspect-ratio: 16 / 9;
  }
}

@media (max-width: 390px) {
  .lms-hero-split__grid {
    padding-inline: 1rem;
  }
}



/* ── src/sections/hero/styles/fullbleed.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 1c. HeroSection — variant: fullbleed                                        */
/* ═══════════════════════════════════════════════════════════════════════════ */

/* Photo background — applied via --lms-hero-bg CSS variable */

.lms-hero-section--fullbleed {
  /* Full viewport — base .lms-hero-section sets 100svh */
}

.lms-hero-section--fullbleed.lms-hero-section--image .lms-hero-section__bg::before {
  /* The existing --image rule handles the cover photo; nothing extra needed */
}

/* Gradient fallback (no imageUrl) — strong aurora instead of photo */

.lms-hero-section--fullbleed-gradient .lms-hero-section__bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 100% 80% at 20% 10%, color-mix(in srgb, var(--lms-primary) 28%, transparent), transparent 55%),
    radial-gradient(ellipse 80% 60% at 80% 90%, color-mix(in srgb, var(--lms-accent) 22%, transparent), transparent 55%);
}

/* Fullbleed scrim — hero-scrim.css via data-hero-scrim-tone */

/* Gradient variant scrim: softer — just darkens the aurora slightly */

.lms-hero-section--fullbleed-gradient .lms-hero-section__scrim--gradient {
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, var(--lms-bg) 10%, transparent) 0%,
    color-mix(in srgb, var(--lms-bg) 40%, transparent) 100%
  );
}

/* Fullbleed inner: wider content, bottom-left or centered layout */

.lms-hero-section__inner--fullbleed {
  max-width: var(--lms-content-max-width, 1120px);
  padding-inline: clamp(1.5rem, 5vw, 4rem);
  /* Centered by default — text over photo always readable via text-shadow (token override allowed for photo) */
}

/* Fullbleed headline: large cinematic size */

.lms-hero-section--fullbleed .lms-hero-section__title {
  font-size: clamp(3rem, 7vw, 5.5rem);
  letter-spacing: -0.04em;
}

/* Photo fullbleed text colors — hero-chrome-surface.css + data-hero-text-tone */

.lms-hero-section--fullbleed-gradient .lms-hero-section__title {
  /* Inherits --lms-text from base */
}

/* ─── Responsive: fullbleed ──────────────────────────────────────────────── */

@media (max-width: 768px) {
  .lms-hero-section--fullbleed .lms-hero-section__title {
    font-size: clamp(2.25rem, 8vw, 3.5rem);
  }
}

@media (max-width: 390px) {
  .lms-hero-section--fullbleed .lms-hero-section__title {
    font-size: clamp(2rem, 9vw, 2.75rem);
  }
}



/* ── src/sections/hero/styles/animated.css ── */
/* Animated gradient hero */
.lms-hero-section--animated {
  overflow: hidden;
}

.lms-hero-section__animated-mesh {
  position: absolute;
  inset: -24%;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(ellipse 60% 50% at 20% 30%, color-mix(in srgb, var(--lms-primary) 26%, transparent), transparent 68%),
    radial-gradient(ellipse 50% 40% at 80% 60%, color-mix(in srgb, var(--lms-accent) 20%, transparent), transparent 68%),
    radial-gradient(ellipse 35% 30% at 55% 42%, color-mix(in srgb, var(--lms-primary) 32%, #fff 10%), transparent 72%);
  animation: lms-hero-mesh-drift 20s ease-in-out infinite;
  will-change: transform, opacity;
}

@keyframes lms-hero-mesh-drift {
  0%, 100% {
    transform: translate(0, 0) scale(1);
    opacity: calc(0.55 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }
  45% {
    transform: translate(6%, -4%) scale(1.08);
    opacity: calc(0.95 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }
  70% {
    transform: translate(2%, 3%) scale(1.03);
    opacity: calc(0.68 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-section__animated-mesh {
    animation: none;
    opacity: calc(0.7 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }
}

.lms-hero-section--animated .lms-hero-section__inner {
  position: relative;
  z-index: 1;
}



/* ── src/sections/hero/styles/cinematic.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 1d. HeroSection — variant: cinematic (photo + scrim, no aurora/mesh)       */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-hero-section--cinematic {
  justify-content: center;
}

.lms-hero-cinematic__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  user-select: none;
}

.lms-hero-cinematic__photo {
  position: absolute;
  inset: 0;
  background-image: var(--lms-hero-bg);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

.lms-hero-cinematic__scrim {
  position: absolute;
  inset: 0;
}

.lms-hero-cinematic__fallback {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      165deg,
      color-mix(in srgb, var(--lms-bg) 92%, var(--lms-primary) 8%) 0%,
      var(--lms-bg) 55%,
      color-mix(in srgb, var(--lms-bg) 88%, var(--lms-accent) 12%) 100%
    );
}

.lms-hero-section__inner--cinematic {
  position: relative;
  z-index: 1;
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
  justify-content: center;
  gap: 1.25rem;
  margin-inline: auto;
  padding-inline: clamp(1.5rem, 5vw, 4rem);
  padding-block: clamp(2rem, 4vw, 3rem);
}

/* Title sizing — colors from hero-chrome-surface.css */
.lms-hero-section--cinematic.lms-hero-section--image .lms-hero-section__title {
  font-size: clamp(2.75rem, 6.5vw, 5rem);
  letter-spacing: -0.04em;
}

.lms-hero-section--cinematic.lms-hero-section--image .lms-hero-section__subtitle {
  max-width: 36rem;
}

@keyframes lms-hero-cinematic-reveal {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.lms-hero-section--cinematic .lms-hero-section__inner--cinematic {
  animation: lms-hero-cinematic-reveal 0.7s var(--lms-motion-ease, ease) both;
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-section--cinematic .lms-hero-section__inner--cinematic {
    animation: none;
  }
}

@media (max-width: 768px) {
  .lms-hero-section--cinematic.lms-hero-section--image .lms-hero-section__title {
    font-size: clamp(2.25rem, 8vw, 3.25rem);
  }
}



/* ── src/sections/hero/styles/scroll-cue.css ── */
/* Scroll cue — premium drift dot on a soft vertical rail */

.lms-hero-scroll-cue {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  margin-top: 0.85rem;
  padding: 0.15rem 0.35rem 0.25rem;
  color: color-mix(in srgb, var(--lms-text, #fff) 68%, transparent);
  text-decoration: none;
  opacity: 0.82;
  transition: opacity 280ms ease, color 280ms ease, transform 280ms ease;
}

.lms-hero-scroll-cue:hover {
  opacity: 1;
  color: var(--lms-text, #fff);
  transform: translateY(1px);
}

.lms-hero-scroll-cue--start {
  align-self: flex-start;
}

.lms-hero-section--image .lms-hero-scroll-cue {
  color: rgba(255, 255, 255, 0.78);
}

.lms-hero-section--image .lms-hero-scroll-cue:hover {
  color: rgba(255, 255, 255, 0.96);
}

.lms-hero-scroll-cue__track {
  position: relative;
  width: 1px;
  height: 2.75rem;
  border-radius: 1px;
  background: linear-gradient(
    to bottom,
    transparent 0%,
    color-mix(in srgb, currentColor 55%, transparent) 22%,
    color-mix(in srgb, currentColor 55%, transparent) 78%,
    transparent 100%
  );
  opacity: 0.55;
}

.lms-hero-scroll-cue__beam {
  position: absolute;
  top: 0;
  left: 50%;
  width: 0.3125rem;
  height: 0.3125rem;
  border-radius: 50%;
  background: currentColor;
  box-shadow:
    0 0 0 3px color-mix(in srgb, currentColor 14%, transparent),
    0 0 14px color-mix(in srgb, currentColor 45%, transparent);
  transform: translateX(-50%);
  animation: lms-hero-scroll-cue-drift 3.6s cubic-bezier(0.42, 0, 0.2, 1) infinite;
}

@keyframes lms-hero-scroll-cue-drift {
  0% {
    top: 0;
    opacity: 0;
    transform: translateX(-50%) scale(0.65);
  }
  12% {
    opacity: 1;
    transform: translateX(-50%) scale(1);
  }
  52% {
    top: calc(100% - 0.3125rem);
    opacity: 1;
    transform: translateX(-50%) scale(1);
  }
  68% {
    top: calc(100% - 0.3125rem);
    opacity: 0;
    transform: translateX(-50%) scale(0.75);
  }
  100% {
    top: 0;
    opacity: 0;
    transform: translateX(-50%) scale(0.65);
  }
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-scroll-cue__beam {
    animation: none;
    top: 35%;
    opacity: 0.85;
  }
}



/* ── src/sections/hero/styles/align.css ── */
/* Hero content alignment — wired to sectionAlign prop (start | center) */

.lms-hero-section--align-center {
  align-items: center;
  text-align: center;
}

.lms-hero-section--align-start {
  align-items: flex-start;
  text-align: left;
}

.lms-hero-section--align-start .lms-hero-section__inner,
.lms-hero-section--align-start .lms-hero-section__inner--fullbleed,
.lms-hero-section--align-start .lms-hero-section__inner--cinematic {
  align-items: flex-start;
  align-self: stretch;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  margin-inline: 0;
  padding-inline: clamp(1.5rem, 5vw, 4rem);
  text-align: left;
  box-sizing: border-box;
}

.lms-hero-section--align-start .lms-hero-section__title,
.lms-hero-section--align-start .lms-hero-section__subtitle,
.lms-hero-section--align-start .lms-hero-section__trust {
  text-align: left;
  margin-inline: 0;
}

.lms-hero-section--align-start .lms-hero-section__ctas {
  justify-content: flex-start;
}

.lms-hero-section--align-start .lms-hero-section__eyebrow {
  align-self: flex-start;
}

.lms-hero-section--align-center .lms-hero-split__content {
  align-items: center;
  text-align: center;
}

.lms-hero-section--align-center .lms-hero-split__content .lms-hero-section__title,
.lms-hero-section--align-center .lms-hero-split__content .lms-hero-section__subtitle,
.lms-hero-section--align-center .lms-hero-split__content .lms-hero-section__trust {
  text-align: center;
}

.lms-hero-section--align-center .lms-hero-split__content .lms-hero-section__ctas {
  justify-content: center;
}

.lms-hero-section--align-center .lms-hero-section__eyebrow,
.lms-hero-section--align-center .lms-hero-split__content .lms-hero-section__eyebrow {
  align-self: center;
}

.lms-hero-section--align-center .lms-hero-section__sig-body {
  align-items: center;
  text-align: center;
}

.lms-hero-section--align-center .lms-hero-section__sig-body .lms-hero-section__eyebrow {
  align-self: center;
}

.lms-hero-section--align-start .lms-hero-section__sig-body {
  align-items: flex-start;
  text-align: left;
}

.lms-hero-section--align-start .lms-hero-section__sig-body .lms-hero-section__title,
.lms-hero-section--align-start .lms-hero-section__sig-body .lms-hero-section__subtitle,
.lms-hero-section--align-start .lms-hero-section__sig-body .lms-hero-section__trust {
  text-align: left;
}

.lms-hero-section--align-start .lms-hero-section__sig-body .lms-hero-section__ctas {
  justify-content: flex-start;
}

.lms-hero-section--align-start .lms-hero-section__sig-body .lms-hero-section__eyebrow {
  align-self: flex-start;
}



/* ── src/sections/hero/styles/label-chrome.css ── */
/* Label eyebrow — strip hero chip after base/cinematic chrome (loads last in hero bundle) */

.lms-page[data-eyebrow-mode="label"] .lms-hero-section__eyebrow {
  border: none;
  background: none;
  padding: 0;
  border-radius: 0;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}

.lms-page[data-eyebrow-mode="label"] .lms-hero-section__eyebrow svg {
  filter: none;
}



/* ── src/sections/hero/styles/backdrop.css ── */
/* @contract HERO_CHROME — owns: backdrop geometry + dot progress. Colors in hero-chrome-surface.css */

.lms-hero-backdrop {
  --lms-hero-ken-burns-duration: 22s;
  --lms-hero-slide-interval: 7s;
  --lms-hero-slide-crossfade: 1.8s;
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}

.lms-hero-backdrop__layer {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition:
    opacity var(--lms-hero-slide-crossfade) ease-in-out,
    filter var(--lms-hero-slide-crossfade) ease-in-out,
    transform var(--lms-hero-slide-crossfade) cubic-bezier(0.4, 0, 0.2, 1);
}

.lms-hero-backdrop__layer.is-active {
  opacity: 1;
  z-index: 2;
}

.lms-hero-backdrop__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1) translate(0, 0);
  will-change: transform;
}

/* Ken Burns on all slideshow layers — motion never resets on slide change */
.lms-hero-backdrop--single .lms-hero-backdrop__img,
.lms-hero-backdrop--slideshow .lms-hero-backdrop__img {
  animation: lms-hero-ken-burns var(--lms-hero-ken-burns-duration) ease-in-out infinite alternate;
}

@keyframes lms-hero-ken-burns {
  0%, 100% { transform: scale(1) translate(0, 0); }
  50%      { transform: scale(1.07) translate(-1%, -0.5%); }
}

/* Dissolve — blur melt (default) */
.lms-hero-backdrop--dissolve .lms-hero-backdrop__layer {
  filter: blur(10px);
}

.lms-hero-backdrop--dissolve .lms-hero-backdrop__layer.is-active {
  filter: blur(0);
}

/* Slide — horizontal handoff synced with Ken Burns */
.lms-hero-backdrop--slide .lms-hero-backdrop__layer {
  opacity: 1;
  filter: none;
  transform: translateX(100%);
}

.lms-hero-backdrop--slide .lms-hero-backdrop__layer.is-active {
  transform: translateX(0);
}

.lms-hero-backdrop--slide .lms-hero-backdrop__layer.is-exit-next {
  transform: translateX(-100%);
  z-index: 1;
}

.lms-hero-backdrop--slide .lms-hero-backdrop__layer.is-exit-prev {
  transform: translateX(100%);
  z-index: 1;
}

/* ADR-006: scroll-mask wins over backdrop motion */
#hero[data-signature="hero-scroll-mask"] .lms-hero-backdrop__img {
  animation: none;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-backdrop__img {
    animation: none !important;
    transform: none !important;
  }

  .lms-hero-backdrop__layer {
    transition: none;
    filter: none !important;
    transform: none !important;
  }
}

/* Slideshow controls — inline (split column) */
.lms-hero-backdrop__nav {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  grid-template-columns: auto 1fr auto;
  grid-template-rows: 1fr auto;
  align-items: center;
  padding: clamp(0.75rem, 3vw, 1.25rem);
  gap: 0.5rem;
  pointer-events: none;
}

/* Overlay nav sits above scrim on full-bleed / cinematic heroes */
.lms-hero-backdrop__nav--overlay {
  z-index: 3;
}

.lms-hero-backdrop__btn {
  grid-row: 1;
  display: inline-grid;
  width: auto;
  height: auto;
  min-width: 2rem;
  min-height: 2rem;
  padding: 0.15rem;
  place-items: center;
  border: none;
  border-radius: 0;
  background: transparent;
  color: #fff;
  font-size: 1.85rem;
  font-weight: 300;
  line-height: 1;
  cursor: pointer;
  pointer-events: auto;
  box-shadow: none;
  opacity: 0.88;
  transition: opacity 160ms ease, transform 160ms ease;
}

.lms-hero-backdrop__btn:hover {
  opacity: 1;
  transform: scale(1.06);
}

.lms-hero-backdrop__btn--prev {
  grid-column: 1;
  justify-self: start;
}

.lms-hero-backdrop__btn--next {
  grid-column: 3;
  justify-self: end;
}

.lms-hero-backdrop__dots {
  grid-column: 1 / -1;
  grid-row: 2;
  justify-self: center;
  display: flex;
  gap: 0.4rem;
  padding: 0.25rem 0;
  border-radius: 0;
  background: transparent;
  pointer-events: auto;
}

.lms-hero-backdrop__dot {
  position: relative;
  width: 2rem;
  height: 3px;
  padding: 0;
  border: none;
  border-radius: 0;
  background: var(--lms-hero-dot-track, color-mix(in srgb, #fff 45%, transparent));
  cursor: pointer;
  overflow: hidden;
}

.lms-hero-backdrop__dot::after {
  content: '';
  position: absolute;
  inset: 0;
  transform: scaleX(0);
  transform-origin: left center;
  background: var(--lms-hero-dot-fill, var(--lms-primary, #f59e0b));
}

.lms-hero-backdrop__dot.is-complete::after {
  transform: scaleX(1);
  animation: none;
}

.lms-hero-backdrop__dot.is-active::after {
  animation: lms-hero-dot-progress var(--lms-hero-dot-duration, 7s) linear forwards;
}

.lms-hero-backdrop__dot.is-paused.is-active::after {
  animation-play-state: paused;
}

@keyframes lms-hero-dot-progress {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-backdrop__dot.is-active::after {
    animation: none;
    transform: scaleX(1);
  }
}

.lms-page[data-surface-grammar="minimal"] .lms-hero-backdrop__nav {
  display: none;
}

/* Fullbleed / cinematic: backdrop inside bg shell */
.lms-hero-section__bg--photo-backdrop::before {
  display: none;
}

.lms-hero-cinematic__bg .lms-hero-backdrop,
.lms-hero-section__bg .lms-hero-backdrop {
  z-index: 0;
}

.lms-hero-cinematic__scrim,
.lms-hero-section__scrim {
  z-index: 1;
}

.lms-hero-split__visual .lms-hero-backdrop {
  border-radius: inherit;
}

.lms-hero-split__visual:has(.lms-hero-backdrop) .lms-hero-split__image {
  display: none;
}



/* ── src/sections/hero/styles/hero-scrim.css ── */
/* @contract HERO_CHROME — owns: scrim gradient on *.__scrim only. Do not add text/nav rules here. */

.lms-page {
  /* Dark overlay stops */
  --lms-hero-scrim-a0: 0.78;
  --lms-hero-scrim-a1: 0.45;
  --lms-hero-scrim-a2: 0.2;
  --lms-hero-scrim-fb0: 0.35;
  --lms-hero-scrim-fb1: 0.55;
  --lms-hero-scrim-fb2: 0.7;
  /* Light overlay stops — white rgba, visibly different from dark */
  --lms-hero-scrim-light-a0: 0.72;
  --lms-hero-scrim-light-a1: 0.48;
  --lms-hero-scrim-light-a2: 0.18;
  --lms-hero-scrim-light-fb0: 0.28;
  --lms-hero-scrim-light-fb1: 0.42;
  --lms-hero-scrim-light-fb2: 0.58;
}

.lms-hero-cinematic__scrim,
.lms-hero-section__scrim {
  transition: opacity 0.35s ease;
}

/* ── Dark tone ──────────────────────────────────────────────────────────── */

#hero[data-hero-scrim-tone="dark"] .lms-hero-cinematic__scrim,
.lms-page--dark #hero[data-hero-scrim-tone="auto"] .lms-hero-cinematic__scrim,
#hero[data-hero-scrim-tone="dark"] .lms-hero-section__scrim,
.lms-page--dark #hero[data-hero-scrim-tone="auto"] .lms-hero-section__scrim {
  background: linear-gradient(
    to top,
    rgba(0, 0, 0, var(--lms-hero-scrim-a0)) 0%,
    rgba(0, 0, 0, var(--lms-hero-scrim-a1)) 42%,
    rgba(0, 0, 0, var(--lms-hero-scrim-a2)) 100%
  );
  opacity: var(--lms-hero-scrim-strength, 1);
}

.lms-page--dark #hero[data-hero-scrim-tone="auto"] .lms-hero-section__scrim {
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, var(--lms-hero-scrim-fb0)) 0%,
    rgba(0, 0, 0, var(--lms-hero-scrim-fb1)) 60%,
    rgba(0, 0, 0, var(--lms-hero-scrim-fb2)) 100%
  );
  opacity: var(--lms-hero-scrim-strength, 1);
}

/* ── Light tone — white overlay ───────────────────────────────────────────── */

#hero[data-hero-scrim-tone="light"] .lms-hero-cinematic__scrim,
.lms-page--light #hero[data-hero-scrim-tone="auto"] .lms-hero-cinematic__scrim,
#hero[data-hero-scrim-tone="light"] .lms-hero-section__scrim,
.lms-page--light #hero[data-hero-scrim-tone="auto"] .lms-hero-section__scrim {
  background: linear-gradient(
    to top,
    rgba(255, 255, 255, var(--lms-hero-scrim-light-a0)) 0%,
    rgba(255, 255, 255, var(--lms-hero-scrim-light-a1)) 42%,
    rgba(255, 255, 255, var(--lms-hero-scrim-light-a2)) 100%
  );
  opacity: var(--lms-hero-scrim-strength, 1);
}

.lms-page--light #hero[data-hero-scrim-tone="auto"] .lms-hero-section__scrim {
  background: linear-gradient(
    to bottom,
    rgba(255, 255, 255, var(--lms-hero-scrim-light-fb0)) 0%,
    rgba(255, 255, 255, var(--lms-hero-scrim-light-fb1)) 55%,
    rgba(255, 255, 255, var(--lms-hero-scrim-light-fb2)) 88%
  );
  opacity: var(--lms-hero-scrim-strength, 1);
}

/* ── Off ────────────────────────────────────────────────────────────────── */

#hero[data-hero-scrim-tone="off"] .lms-hero-cinematic__scrim,
#hero[data-hero-scrim-tone="off"] .lms-hero-section__scrim {
  opacity: 0;
  pointer-events: none;
}



/* ── src/sections/hero/styles/hero-chrome-surface.css ── */
/* @contract HERO_CHROME — owns: hero text/chips/backdrop colors from data-hero-text-tone. No scrim bg. */

/* ── Dark text (light page or manual override) ───────────────────────────── */

#hero[data-hero-text-tone="dark"] .lms-hero-section__title,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-hero-section__title {
  background: none;
  -webkit-background-clip: unset;
  background-clip: unset;
  -webkit-text-fill-color: unset;
  color: var(--lms-text);
  text-shadow: none;
}

#hero[data-hero-text-tone="dark"] .lms-hero-section__subtitle,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-hero-section__subtitle {
  -webkit-text-fill-color: unset;
  color: var(--lms-text-muted);
  text-shadow: none;
}

#hero[data-hero-text-tone="dark"] .lms-hero-section__trust,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-hero-section__trust {
  -webkit-text-fill-color: unset;
  color: var(--lms-text-muted);
  text-shadow: none;
}

/* ── Light text (dark page or manual override) ─────────────────────────── */

#hero[data-hero-text-tone="light"] .lms-hero-section__title,
.lms-page--dark #hero[data-hero-text-tone="auto"] .lms-hero-section__title {
  background: none;
  -webkit-background-clip: unset;
  background-clip: unset;
  -webkit-text-fill-color: #fff;
  color: #fff;
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.45);
}

#hero[data-hero-text-tone="light"] .lms-hero-section__subtitle,
.lms-page--dark #hero[data-hero-text-tone="auto"] .lms-hero-section__subtitle {
  -webkit-text-fill-color: rgba(255, 255, 255, 0.88);
  color: rgba(255, 255, 255, 0.88);
  text-shadow: 0 1px 10px rgba(0, 0, 0, 0.35);
}

#hero[data-hero-text-tone="light"] .lms-hero-section__trust,
.lms-page--dark #hero[data-hero-text-tone="auto"] .lms-hero-section__trust {
  color: rgba(255, 255, 255, 0.72);
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.35);
}

/* Scroll cue */
#hero[data-hero-text-tone="dark"] .lms-hero-scroll-cue,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-hero-scroll-cue {
  color: color-mix(in srgb, var(--lms-text) 68%, transparent);
}

#hero[data-hero-text-tone="dark"] .lms-hero-scroll-cue:hover,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-hero-scroll-cue:hover {
  color: var(--lms-text);
}

#hero[data-hero-text-tone="light"] .lms-hero-scroll-cue,
.lms-page--dark #hero[data-hero-text-tone="auto"] .lms-hero-scroll-cue {
  color: rgba(255, 255, 255, 0.72);
}

/* Chips */
#hero[data-hero-text-tone="dark"] .lms-chrome-chip--on-dark,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-chrome-chip--on-dark {
  border-color: color-mix(in srgb, var(--lms-text) 14%, transparent);
  background: color-mix(in srgb, var(--lms-text) 6%, transparent);
  color: var(--lms-text-muted);
}

#hero[data-hero-text-tone="dark"] .lms-chrome-chip--on-dark svg,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-chrome-chip--on-dark svg {
  color: var(--lms-primary);
}

/* Backdrop controls — track/fill tokens (geometry in backdrop.css) */
#hero[data-hero-text-tone="dark"] .lms-hero-backdrop__btn,
.lms-page--light #hero[data-hero-text-tone="auto"] .lms-hero-backdrop__btn {
  color: var(--lms-text);
  text-shadow: none;
}

#hero[data-hero-text-tone="dark"] {
  --lms-hero-dot-track: color-mix(in srgb, var(--lms-text) 28%, transparent);
  --lms-hero-dot-fill: var(--lms-primary, #f59e0b);
}

.lms-page--light #hero[data-hero-text-tone="auto"] {
  --lms-hero-dot-track: color-mix(in srgb, var(--lms-text) 28%, transparent);
  --lms-hero-dot-fill: var(--lms-primary, #f59e0b);
}

#hero[data-hero-text-tone="light"] .lms-hero-backdrop__btn,
.lms-page--dark #hero[data-hero-text-tone="auto"] .lms-hero-backdrop__btn {
  color: #fff;
  text-shadow: none;
}

#hero[data-hero-text-tone="light"] {
  --lms-hero-dot-track: color-mix(in srgb, #fff 45%, transparent);
  --lms-hero-dot-fill: var(--lms-primary, #f59e0b);
}

.lms-page--dark #hero[data-hero-text-tone="auto"] {
  --lms-hero-dot-track: color-mix(in srgb, #fff 45%, transparent);
  --lms-hero-dot-fill: var(--lms-primary, #f59e0b);
}



/* ── src/sections/hero/styles/hero-cta-chrome.css ── */
/* Hero secondary CTA — appearance-based glass (not theme primary tint) */

.lms-hero-section__cta--primary {
  opacity: var(--hero-primary-cta-opacity, 1);
  border-radius: var(--hero-primary-cta-radius, var(--lms-control-radius, var(--lms-radius-md, 1rem)));
}

.lms-hero-section__cta--secondary.lms-chrome-chip {
  --lms-chrome-chip-blur: var(--hero-secondary-cta-blur, 8px);
  border-radius: var(--hero-secondary-cta-radius, var(--lms-control-radius, var(--lms-radius-md, 1rem)));
  background: transparent;
  color: inherit;
}

.lms-hero-section__cta--secondary.lms-chrome-chip[data-cta-surface='glass-white'] {
  background: rgba(255, 255, 255, var(--hero-secondary-cta-opacity, 0.12));
  border-color: rgba(255, 255, 255, min(1, calc(var(--hero-secondary-cta-opacity, 0.12) + 0.16)));
  color: rgba(255, 255, 255, 0.95);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.lms-hero-section__cta--secondary.lms-chrome-chip[data-cta-surface='glass-dark'] {
  background: rgba(6, 8, 15, var(--hero-secondary-cta-opacity, 0.55));
  border-color: rgba(255, 255, 255, 0.12);
  color: rgba(243, 245, 250, 0.96);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.lms-hero-section__cta--secondary.lms-chrome-chip[data-cta-surface='glass-white']:hover {
  background: rgba(255, 255, 255, min(1, calc(var(--hero-secondary-cta-opacity, 0.12) + 0.08)));
  border-color: rgba(255, 255, 255, 0.42);
  color: #fff;
}

.lms-hero-section__cta--secondary.lms-chrome-chip[data-cta-surface='glass-dark']:hover {
  background: rgba(6, 8, 15, min(1, calc(var(--hero-secondary-cta-opacity, 0.55) + 0.1)));
  border-color: rgba(255, 255, 255, 0.22);
  color: #fff;
}

/* Light-page heroes: dark glass gets readable dark text on pale fills */
.lms-page--light .lms-hero-section__cta--secondary.lms-chrome-chip[data-cta-surface='glass-dark'] {
  background: rgba(5, 7, 13, var(--hero-secondary-cta-opacity, 0.08));
  border-color: rgba(5, 7, 13, min(1, calc(var(--hero-secondary-cta-opacity, 0.08) + 0.12)));
  color: rgba(5, 7, 13, 0.92);
}

.lms-page--light .lms-hero-section__cta--secondary.lms-chrome-chip[data-cta-surface='glass-dark']:hover {
  background: rgba(5, 7, 13, min(1, calc(var(--hero-secondary-cta-opacity, 0.08) + 0.06)));
  border-color: rgba(5, 7, 13, 0.28);
  color: rgba(5, 7, 13, 0.98);
}



/* ── src/sections/hero/styles/immersive.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* HeroSection — variant: immersive (scroll-sink + zoom)                         */
/* ADR-007 — progress via --hero-scroll-progress on #hero                        */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-hero-section--immersive {
  overflow: hidden;
  position: relative;
}

.lms-hero-section--immersive .lms-hero-section__bg,
.lms-hero-section--immersive .lms-hero-backdrop {
  transform: scale(calc(1 + var(--hero-scroll-progress, 0) * var(--lms-hero-immersive-scale-max, 0.1)));
  transform-origin: center center;
  will-change: transform;
}

.lms-hero-section--immersive .lms-hero-backdrop__img {
  animation: none !important;
}

.lms-hero-section--immersive .lms-hero-section__scrim {
  opacity: calc(1 + var(--hero-scroll-progress, 0) * var(--lms-hero-immersive-scrim-boost, 0.25));
}

.lms-hero-section--immersive .lms-hero-section__immersive-stack {
  transform: translateY(calc(var(--hero-scroll-progress, 0) * var(--lms-hero-immersive-sink-distance, 28vh)));
  will-change: transform;
}

.lms-hero-section--immersive .lms-hero-section__inner--immersive {
  /* no lms-reveal on immersive — ADR-007 */
}

.lms-hero-section--immersive .lms-hero-section__title,
.lms-hero-section--immersive .lms-hero-section__subtitle,
.lms-hero-section--immersive .lms-hero-section__trust {
  color: #fff;
}

.lms-hero-section--immersive .lms-hero-section__scrim {
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0.25) 0%,
    rgba(0, 0, 0, 0.5) 50%,
    rgba(0, 0, 0, 0.72) 100%
  );
}

@media (prefers-reduced-motion: reduce) {
  .lms-hero-section--immersive .lms-hero-section__bg,
  .lms-hero-section--immersive .lms-hero-backdrop,
  .lms-hero-section--immersive .lms-hero-section__immersive-stack {
    transform: none !important;
    will-change: auto;
  }

  .lms-hero-section--immersive .lms-hero-section__scrim {
    opacity: 1;
  }
}



/* ── src/sections/hero/styles/atmosphere.css ── */
/* Hero atmosphere — v2 gradient drift (CSS-only) */

.lms-hero-atmosphere {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}

.lms-hero-atmosphere--aurora::before,
.lms-hero-atmosphere--mesh::before,
.lms-hero-atmosphere--grain-gradient::before {
  content: '';
  position: absolute;
  inset: -8%;
  pointer-events: none;
}

.lms-hero-atmosphere--aurora::before {
  background:
    radial-gradient(ellipse 55% 45% at 20% 30%, color-mix(in srgb, var(--lms-primary) 24%, transparent), transparent 70%),
    radial-gradient(ellipse 40% 50% at 75% 75%, color-mix(in srgb, var(--lms-accent, var(--lms-primary)) 18%, transparent), transparent 70%),
    radial-gradient(ellipse 30% 28% at 48% 38%, color-mix(in srgb, var(--lms-primary) 28%, #fff 8%), transparent 72%);
}

.lms-hero-atmosphere--mesh::before {
  background:
    radial-gradient(ellipse 70% 60% at 15% 20%, color-mix(in srgb, var(--lms-primary) 12%, transparent), transparent),
    radial-gradient(ellipse 55% 55% at 85% 15%, color-mix(in srgb, var(--lms-accent, var(--lms-primary)) 14%, transparent), transparent),
    radial-gradient(ellipse 60% 50% at 50% 80%, color-mix(in srgb, var(--lms-primary) 8%, transparent), transparent);
}

.lms-hero-atmosphere--grain-gradient::before {
  background:
    conic-gradient(from 200deg at 50% 50%,
      color-mix(in srgb, var(--lms-primary) 16%, transparent),
      color-mix(in srgb, var(--lms-accent, var(--lms-primary)) 12%, transparent),
      color-mix(in srgb, var(--lms-bg) 88%, var(--lms-primary) 12%),
      color-mix(in srgb, var(--lms-primary) 14%, transparent));
}

.lms-hero-atmosphere--grain-gradient::after {
  content: '';
  position: absolute;
  inset: 0;
  opacity: 0.05;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode: overlay;
}

@media (prefers-reduced-motion: no-preference) {
  .lms-hero-atmosphere--aurora::before,
  .lms-hero-atmosphere--mesh::before,
  .lms-hero-atmosphere--grain-gradient::before {
    animation: lms-hero-atmosphere-drift 20s ease-in-out infinite alternate;
  }
}

@keyframes lms-hero-atmosphere-drift {
  0%, 100% {
    transform: translate(0, 0) scale(1);
    opacity: calc(0.5 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }
  45% {
    transform: translate(4%, 2.5%) scale(1.06);
    opacity: calc(0.92 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }
  70% {
    transform: translate(-2%, 3%) scale(0.99);
    opacity: calc(0.62 * var(--lms-effect-intensity, 1) * var(--lms-hero-highlight-boost, 1));
  }
}

.lms-page[data-surface-grammar="minimal"] .lms-hero-atmosphere::before {
  animation: none;
}

/* Reduce page-level bg drift when hero has local atmosphere (ADR-006 v2) */
#hero[data-hero-atmosphere]:not([data-hero-atmosphere="inherit"]) ~ *,
.lms-page:has(#hero[data-hero-atmosphere]:not([data-hero-atmosphere="inherit"])) {
  /* page pseudo handled below */
}

.lms-page:has(#hero[data-hero-atmosphere="aurora"])::before,
.lms-page:has(#hero[data-hero-atmosphere="mesh"])::after,
.lms-page:has(#hero[data-hero-atmosphere="grain-gradient"])::before {
  opacity: calc(0.35 * var(--lms-bg-strength, 1));
}





/* ── src/sections/features/styles/_index.css ── */

/* ── src/sections/features/styles/features.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 2. FeaturesBento                                                            */
/* ═══════════════════════════════════════════════════════════════════════════ */

/* Sections stay fully transparent over the continuous page background
 * (.lms-bg--*). No per-section glow/overflow — depth lives in the page layer
 * and inside the glass cards, so block transitions never show a colour seam. */
.lms-bento-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

/* ── Grid ─────────────────────────────────────────────────────────────────── */

.lms-bento-section__grid {
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  grid-template-columns: 1.5fr 1fr;
  grid-template-rows: auto auto;
  gap: 1.25rem;
}

/* ── Cards ────────────────────────────────────────────────────────────────── */

.lms-bento-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  border-radius: var(--lms-radius);
  padding: clamp(1.5rem, 3vw, 2.1rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  overflow: hidden;
  box-shadow: var(--lms-surface-shadow);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-bento-card:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

/* Featured card — spans both rows, primary glow fills the negative space */

.lms-bento-card--featured {
  grid-row: span 2;
}

.lms-bento-card--featured::after {
  content: '';
  position: absolute;
  right: -18%;
  bottom: -26%;
  width: 65%;
  height: 65%;
  background: radial-gradient(circle, color-mix(in srgb, var(--lms-primary) 22%, transparent) 0%, transparent 70%);
  filter: blur(48px);
  pointer-events: none;
  z-index: 0;
}

.lms-bento-card--featured > * {
  position: relative;
  z-index: 1;
}

/* Secondary cards — accent-tinted glow corner */

.lms-bento-card--secondary::after {
  content: '';
  position: absolute;
  right: -28%;
  top: -34%;
  width: 60%;
  height: 60%;
  background: radial-gradient(circle, color-mix(in srgb, var(--lms-accent) 14%, transparent) 0%, transparent 70%);
  filter: blur(44px);
  pointer-events: none;
  z-index: 0;
}

.lms-bento-card--secondary > * {
  position: relative;
  z-index: 1;
}

/* ── Icon badges ──────────────────────────────────────────────────────────── */

.lms-bento-card__icon-badge {
  display: inline-grid;
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  place-items: center;
  border-radius: var(--lms-radius);
  border: 1px solid transparent;
}

.lms-bento-card__icon-badge--primary {
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 24%, transparent) 0%,
    color-mix(in srgb, var(--lms-primary) 8%, transparent) 100%
  );
  border-color: color-mix(in srgb, var(--lms-primary) 24%, transparent);
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  color: var(--lms-primary);
}

.lms-bento-card__icon-badge--accent {
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-accent) 24%, transparent) 0%,
    color-mix(in srgb, var(--lms-accent) 8%, transparent) 100%
  );
  border-color: color-mix(in srgb, var(--lms-accent) 24%, transparent);
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--lms-accent) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  color: var(--lms-primary);
}

.lms-page--light .lms-bento-card__icon-badge--accent {
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 24%, transparent) 0%,
    color-mix(in srgb, var(--lms-primary) 8%, transparent) 100%
  );
  border-color: color-mix(in srgb, var(--lms-primary) 24%, transparent);
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
}

/* ── Card text ────────────────────────────────────────────────────────────── */

.lms-bento-card__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.1rem, 1.6vw, 1.375rem);
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.2;
}

.lms-bento-card__text {
  flex: 1;
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.65;
}

/* ── Stats row (featured card only) ──────────────────────────────────────── */

.lms-bento-card__stats {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
  margin-top: auto;
  padding-top: 1.25rem;
  border-top: 1px solid var(--lms-border);
}

.lms-bento-card__stat {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.lms-bento-card__stat-value {
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 1.625rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1;
}

.lms-bento-card__stat-label {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-bento-card {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  .lms-bento-section__grid {
    grid-template-columns: 1fr;
  }

  .lms-bento-card--featured {
    grid-row: span 1;
  }
}



/* ── src/sections/features/styles/features-variants.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 2b. FeaturesSection — variant: grid                                         */
/* Uniform 3-col icon+title+text cards, generous spacing, editorial feel.      */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-features-grid-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-features-grid-section__grid {
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  gap: clamp(1.5rem, 3vw, 2.5rem);
  grid-template-columns: repeat(3, 1fr);
}

.lms-features-grid-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  border-radius: var(--lms-radius);
  padding: clamp(1.75rem, 3.5vw, 2.5rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-features-grid-card:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

.lms-features-grid-card__icon {
  display: inline-grid;
  flex-shrink: 0;
  width: 3.25rem;
  height: 3.25rem;
  place-items: center;
  border-radius: var(--lms-radius);
  border: 1px solid color-mix(in srgb, var(--lms-primary) 24%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 24%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  color: var(--lms-primary);
}

.lms-features-grid-card__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.0625rem, 1.5vw, 1.25rem);
  font-weight: 700;
  letter-spacing: -0.012em;
  line-height: 1.25;
}

.lms-features-grid-card__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.7;
}

@media (prefers-reduced-motion: reduce) {
  .lms-features-grid-card {
    transition: none;
  }
}

@media (max-width: 900px) {
  .lms-features-grid-section__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 540px) {
  .lms-features-grid-section__grid {
    grid-template-columns: 1fr;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════ */
/* 2c. FeaturesSection — variant: alternating                                  */
/* Full-width editorial rows: text left / visual right, alternating each row.  */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-features-alt-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-features-alt-section__list {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  gap: clamp(3rem, 6vw, 5rem);
}

.lms-features-alt-row {
  display: grid;
  align-items: center;
  gap: clamp(2rem, 5vw, 5rem);
  grid-template-columns: 1fr 1fr;
}

/* Odd rows: text left, visual right (natural order) */
/* Even rows: visual left, text right (reverse) */
.lms-features-alt-row--reverse {
  direction: rtl;
}

.lms-features-alt-row--reverse > * {
  direction: ltr;
}

.lms-features-alt-row__content {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.lms-features-alt-row__number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 35%, transparent);
  background: color-mix(in srgb, var(--lms-primary) 8%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  flex-shrink: 0;
}

.lms-features-alt-row__icon {
  display: inline-grid;
  flex-shrink: 0;
  width: 3.25rem;
  height: 3.25rem;
  place-items: center;
  border-radius: var(--lms-radius);
  border: 1px solid color-mix(in srgb, var(--lms-primary) 24%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 24%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  color: var(--lms-primary);
}

.lms-features-alt-row__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.375rem, 2.2vw, 1.875rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.15;
}

.lms-features-alt-row__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: clamp(0.9375rem, 1.2vw, 1.0625rem);
  line-height: 1.75;
  max-width: 480px;
}

.lms-features-alt-row__visual {
  position: relative;
  border-radius: var(--lms-radius);
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
}

.lms-features-alt-row__visual-inner {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.lms-features-alt-row__visual-inner--image {
  display: block;
}

.lms-features-alt-row__visual-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.lms-features-alt-row__glow {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 70% 60% at 50% 50%, color-mix(in srgb, var(--lms-primary) 18%, transparent), transparent 70%);
  pointer-events: none;
  opacity: var(--lms-effect-intensity, 1);
}

.lms-features-alt-row__visual-icon {
  position: relative;
  z-index: 1;
  display: inline-grid;
  width: 5rem;
  height: 5rem;
  place-items: center;
  border-radius: var(--lms-radius);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 28%, transparent),
    color-mix(in srgb, var(--lms-primary) 10%, transparent)
  );
  border: 1px solid color-mix(in srgb, var(--lms-primary) 30%, transparent);
  color: var(--lms-primary);
  box-shadow:
    0 10px 36px color-mix(in srgb, var(--lms-primary) 26%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 16%, transparent);
}

@media (max-width: 768px) {
  .lms-features-alt-row {
    grid-template-columns: 1fr;
  }

  .lms-features-alt-row--reverse {
    direction: ltr;
  }

  .lms-features-alt-row__visual {
    order: -1;
    aspect-ratio: 16 / 9;
  }
}



/* ── src/sections/features/styles/features-carousel.css ── */
/* Features carousel variant */
.lms-features-carousel-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-features-carousel-section__header {
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
}

.lms-features-carousel {
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  gap: 1rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 0.5rem 0 1.5rem;
  scrollbar-width: thin;
}

.lms-features-carousel__slide {
  flex: 0 0 min(320px, 85vw);
  scroll-snap-align: start;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.lms-features-carousel__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--lms-radius-sm, 0.5rem);
  background: color-mix(in srgb, var(--lms-primary) 12%, transparent);
  color: var(--lms-primary);
}

.lms-features-carousel__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 1.125rem;
  font-weight: 600;
}

.lms-features-carousel__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-size: 0.875rem;
  line-height: 1.55;
}



/* ── src/sections/features/styles/features-list.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* Features — variant: list (advantages rows, no cards)                       */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-features-list-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-features-list-section__list {
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
}

.lms-features-list-row {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 1.25rem;
  padding-block: clamp(1.35rem, 2.5vw, 1.75rem);
  border-bottom: 1px solid var(--lms-border);
}

.lms-features-list-row:first-child {
  border-top: 1px solid var(--lms-border);
}

.lms-features-list-row__icon {
  display: inline-grid;
  flex-shrink: 0;
  width: 2.5rem;
  height: 2.5rem;
  place-items: center;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 28%, transparent);
  background: color-mix(in srgb, var(--lms-primary) 8%, transparent);
  color: var(--lms-primary);
}

.lms-features-list-row__body {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  min-width: 0;
}

.lms-features-list-row__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.0625rem, 1.8vw, 1.25rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
}

.lms-features-list-row__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.6;
}

@media (min-width: 900px) {
  .lms-features-list-section__list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    column-gap: clamp(2rem, 4vw, 3.5rem);
  }

  .lms-features-list-row:nth-child(odd):last-child {
    grid-column: 1 / -1;
    max-width: calc(50% - clamp(1rem, 2vw, 1.75rem));
  }
}

@media (max-width: 390px) {
  .lms-features-list-row {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }
}





/* ── src/sections/pricing/styles/_index.css ── */

/* ── src/sections/pricing/styles/pricing.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 3. PricingTiers                                                             */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-pricing-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

/* ── Grid ─────────────────────────────────────────────────────────────────── */

.lms-pricing-section__grid {
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  align-items: start;
  gap: 1.25rem;
  grid-template-columns: repeat(3, 1fr);
}

/* ── Card shell ───────────────────────────────────────────────────────────── */

.lms-pricing-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  border-radius: var(--lms-radius);
  padding: clamp(1.5rem, 3vw, 2.1rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-pricing-card:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

/* Highlighted card — primary glass + internal glow + lift */

.lms-pricing-card--highlighted {
  border-color: color-mix(in srgb, var(--lms-primary) 55%, transparent);
  transform: translateY(-12px);
}

/* Glow lives INSIDE the card (inset:0 + border-radius:inherit) so it clips to
   the rounded corners WITHOUT overflow:hidden — the "POPULAARSEIM" badge sits
   outside the top edge (top:-0.8rem) and must NOT be clipped. */
.lms-pricing-card--highlighted::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(80% 55% at 50% 118%, color-mix(in srgb, var(--lms-primary) 30%, transparent) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

.lms-pricing-card--highlighted > * {
  position: relative;
  z-index: 1;
}

.lms-pricing-card--highlighted:hover {
  transform: translateY(-15px);
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, var(--lms-primary) 26%, transparent),
    0 0 0 1px color-mix(in srgb, var(--lms-primary) 42%, transparent),
    0 30px 72px -18px color-mix(in srgb, var(--lms-primary) 42%, transparent);
}

/* ── Badge ────────────────────────────────────────────────────────────────── */

.lms-pricing-card__badge {
  position: absolute;
  top: -0.8rem;
  left: 50%;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.25rem 0.85rem;
  background: var(--lms-primary);
  color: var(--lms-primary-contrast, #0a0a0a);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  transform: translateX(-50%);
  white-space: nowrap;
}

/* ── Card header ──────────────────────────────────────────────────────────── */

.lms-pricing-card__header {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.lms-pricing-card__name {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.lms-pricing-card__price-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.4rem;
}

.lms-pricing-card__price {
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.875rem, 3vw, 2.5rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1;
}

.lms-pricing-card__period {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
}

/* ── Feature list ─────────────────────────────────────────────────────────── */

.lms-pricing-card__features {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 0.65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lms-pricing-card__feature {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9rem;
  line-height: 1.5;
}

.lms-pricing-card__check {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 1.3rem;
  height: 1.3rem;
  margin-top: 0.05rem;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 28%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 26%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  box-shadow: 0 2px 8px color-mix(in srgb, var(--lms-primary) 18%, transparent);
  color: var(--lms-primary);
}

/* Highlighted card: check icon uses accent colour */

.lms-pricing-card--highlighted .lms-pricing-card__check {
  background: color-mix(in srgb, var(--lms-primary) 16%, transparent);
  color: var(--lms-primary);
}

/* ── CTA button ───────────────────────────────────────────────────────────── */

.lms-pricing-card__cta {
  display: block;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.875rem 1.5rem;
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-align: center;
  text-decoration: none;
  transition:
    opacity var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-pricing-card__cta--primary {
  background: linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, #fff) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, #0a0a0a);
  box-shadow:
    0 6px 22px color-mix(in srgb, var(--lms-primary) 40%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 35%, transparent);
}

.lms-pricing-card__cta--primary:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 36px color-mix(in srgb, var(--lms-primary) 52%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 45%, transparent);
}

.lms-pricing-card__cta--secondary {
  border: 1px solid color-mix(in srgb, var(--lms-text) 16%, transparent);
  background: var(--lms-surface-bg);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  color: var(--lms-text);
}

.lms-pricing-card__cta--secondary:hover {
  border-color: color-mix(in srgb, var(--lms-text) 28%, transparent);
  background: color-mix(in srgb, var(--lms-text) 9%, transparent);
  transform: translateY(-2px);
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-pricing-card,
  .lms-pricing-card__cta {
    transition: none;
  }

  .lms-pricing-card--highlighted {
    transform: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  .lms-pricing-section__grid {
    grid-template-columns: 1fr;
  }

  .lms-pricing-card--highlighted {
    transform: none;
    order: -1;
  }

  .lms-pricing-card--highlighted:hover {
    transform: translateY(-2px);
  }
}

.lms-pricing-section--highlighted .lms-pricing-card--highlighted {
  transform: scale(1.04);
  z-index: 1;
}



/* ── src/sections/pricing/styles/pricing-table.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 3b. PricingSection — variant: table                                          */
/* Comparison table: features as rows, plans as columns, checkmarks.           */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-pricing-table-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-pricing-table-wrap {
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  overflow-x: auto;
  border-radius: var(--lms-radius);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
}

.lms-pricing-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 560px;
}

/* Plan header row */
.lms-pricing-table__head {
  border-bottom: 1px solid var(--lms-border);
}

.lms-pricing-table__head th {
  padding: clamp(1.25rem, 2.5vw, 2rem) clamp(1rem, 2vw, 1.5rem);
  text-align: center;
  vertical-align: bottom;
}

.lms-pricing-table__head th:first-child {
  text-align: left;
}

.lms-pricing-table__plan-name {
  display: block;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 0.4rem;
}

.lms-pricing-table__plan-price {
  display: block;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1;
}

.lms-pricing-table__plan-period {
  display: block;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.75rem;
  margin-top: 0.25rem;
}

/* Highlighted plan column header */
.lms-pricing-table__col--highlighted .lms-pricing-table__plan-name {
  color: var(--lms-primary);
}

.lms-pricing-table__col--highlighted .lms-pricing-table__plan-price {
  color: var(--lms-primary);
}

/* Feature rows */
.lms-pricing-table__row {
  border-bottom: 1px solid var(--lms-border);
  transition: background var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-pricing-table__row:last-child {
  border-bottom: none;
}

.lms-pricing-table__row:hover {
  background: color-mix(in srgb, var(--lms-primary) 3%, transparent);
}

.lms-pricing-table__row td {
  padding: clamp(0.75rem, 1.5vw, 1.25rem) clamp(1rem, 2vw, 1.5rem);
  text-align: center;
  vertical-align: middle;
}

.lms-pricing-table__row td:first-child {
  text-align: left;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9rem;
}

.lms-pricing-table__check-cell {
  display: inline-grid;
  width: 1.55rem;
  height: 1.55rem;
  place-items: center;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 28%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 26%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  box-shadow: 0 2px 8px color-mix(in srgb, var(--lms-primary) 18%, transparent);
  color: var(--lms-primary);
}

.lms-pricing-table__col--highlighted td {
  background: color-mix(in srgb, var(--lms-primary) 8%, transparent);
}

/* CTA row */
.lms-pricing-table__cta-row td {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
  border-top: 1px solid var(--lms-border);
  border-bottom: none;
}

.lms-pricing-table__cta-row td:not(:first-child) {
  text-align: center;
}

.lms-pricing-table__cta-btn {
  display: inline-block;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.6rem 1.25rem;
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;
  transition:
    opacity var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-pricing-table__cta-btn--primary {
  background: linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, #fff) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, #0a0a0a);
  box-shadow:
    0 5px 18px color-mix(in srgb, var(--lms-primary) 38%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 32%, transparent);
}

.lms-pricing-table__cta-btn--primary:hover {
  transform: translateY(-2px);
  box-shadow:
    0 10px 28px color-mix(in srgb, var(--lms-primary) 50%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 42%, transparent);
}

.lms-pricing-table__cta-btn--secondary {
  border: 1px solid var(--lms-border);
  color: var(--lms-text);
}

.lms-pricing-table__cta-btn--secondary:hover {
  background: color-mix(in srgb, var(--lms-text) 5%, transparent);
}

/* Minimal grammar — open table, divider lines only */
.lms-page[data-surface-grammar="minimal"] .lms-pricing-table-wrap {
  border-radius: 0;
  border-block: 1px solid var(--lms-border);
}

.lms-page[data-surface-grammar="minimal"] .lms-pricing-table__row:hover {
  background: transparent;
}

.lms-page[data-surface-grammar="minimal"] .lms-pricing-table__col--highlighted td {
  background: transparent;
}

.lms-page[data-surface-grammar="minimal"] .lms-pricing-table__check-cell {
  width: auto;
  height: auto;
  padding: 0;
  border-radius: 0;
  border: none;
  background: none;
  box-shadow: none;
}

@media (prefers-reduced-motion: reduce) {
  .lms-pricing-table__cta-btn {
    transition: none;
  }
}





/* ── src/sections/testimonials/styles/_index.css ── */

/* ── src/sections/testimonials/styles/testimonials.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 4. TestimonialsSection                                                       */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-testimonials-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

/* ── Grid ─────────────────────────────────────────────────────────────────── */

.lms-testimonials-section__grid {
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  gap: 1.25rem;
  grid-template-columns: repeat(3, 1fr);
  align-items: start;
}

/* ── Card ─────────────────────────────────────────────────────────────────── */

.lms-testimonial-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  border-radius: var(--lms-radius);
  overflow: hidden;
  padding: clamp(1.5rem, 3vw, 2.1rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-testimonial-card:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

/* Featured (middle) card — primary accent */

.lms-testimonial-card--featured {
  border-color: color-mix(in srgb, var(--lms-primary) 42%, transparent);
}

.lms-testimonial-card--featured::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: -28%;
  width: 78%;
  height: 58%;
  transform: translateX(-50%);
  background: radial-gradient(circle, color-mix(in srgb, var(--lms-primary) 18%, transparent) 0%, transparent 70%);
  filter: blur(46px);
  pointer-events: none;
  z-index: 0;
}

.lms-testimonial-card--featured > * {
  position: relative;
  z-index: 1;
}

/* ── Stars ────────────────────────────────────────────────────────────────── */

.lms-testimonial-card__stars {
  color: var(--lms-primary);
  font-size: 1rem;
  letter-spacing: 0.12em;
  text-shadow: 0 0 12px color-mix(in srgb, var(--lms-primary) 45%, transparent);
}

/* ── Quote ────────────────────────────────────────────────────────────────── */

.lms-testimonial-card__quote {
  flex: 1;
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-style: italic;
  line-height: 1.7;
  opacity: 0.85;
}

/* ── Rule ─────────────────────────────────────────────────────────────────── */

.lms-testimonial-card__rule {
  margin: 0;
  border: none;
  border-top: 1px solid var(--lms-border);
}

/* ── Attribution ──────────────────────────────────────────────────────────── */

.lms-testimonial-card__attribution {
  display: flex;
  align-items: center;
  gap: 0.85rem;
}

.lms-testimonial-card__avatar {
  display: inline-grid;
  flex-shrink: 0;
  width: 2.6rem;
  height: 2.6rem;
  place-items: center;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 28%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 26%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  box-shadow:
    0 4px 14px color-mix(in srgb, var(--lms-primary) 20%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.lms-testimonial-card__author {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}

.lms-testimonial-card__name {
  color: var(--lms-text);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.875rem;
  font-weight: 700;
}

.lms-testimonial-card__role {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.75rem;
  line-height: 1.4;
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-testimonial-card {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 900px) {
  .lms-testimonials-section__grid {
    grid-template-columns: 1fr;
  }
}



/* ── src/sections/testimonials/styles/testimonials-spotlight.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 4b. TestimonialsSection — variant: spotlight                                 */
/* One large featured quote + supporting smaller quotes below.                 */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-testimonials-spotlight-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-testimonials-spotlight-section__layout {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  gap: 2rem;
}

/* ── Large spotlight card ─────────────────────────────────────────────────── */

.lms-testimonial-spotlight {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
  border-radius: var(--lms-radius);
  padding: clamp(2rem, 5vw, 3.5rem);
  overflow: hidden;
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
}

.lms-testimonial-spotlight::after {
  content: '';
  position: absolute;
  right: -15%;
  bottom: -30%;
  width: 55%;
  height: 70%;
  background: radial-gradient(circle, color-mix(in srgb, var(--lms-primary) 18%, transparent) 0%, transparent 70%);
  filter: blur(50px);
  pointer-events: none;
  z-index: 0;
}

.lms-testimonial-spotlight > * {
  position: relative;
  z-index: 1;
}

.lms-testimonial-spotlight__mark {
  color: color-mix(in srgb, var(--lms-primary) 18%, transparent);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 5rem;
  font-weight: 700;
  line-height: 1;
  user-select: none;
  pointer-events: none;
}

.lms-testimonial-spotlight__quote {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.25rem, 2.5vw, 1.75rem);
  font-style: italic;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: -0.01em;
}

.lms-testimonial-spotlight__attribution {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--lms-border);
}

.lms-testimonial-spotlight__avatar {
  display: inline-grid;
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  place-items: center;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--lms-primary) 30%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 28%, transparent),
    color-mix(in srgb, var(--lms-primary) 9%, transparent)
  );
  box-shadow:
    0 4px 16px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.lms-testimonial-spotlight__stars {
  text-shadow: 0 0 12px color-mix(in srgb, var(--lms-primary) 45%, transparent);
}

.lms-testimonial-spotlight__author {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.lms-testimonial-spotlight__name {
  color: var(--lms-text);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 1rem;
  font-weight: 700;
}

.lms-testimonial-spotlight__role {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
}

.lms-testimonial-spotlight__stars {
  margin-left: auto;
  color: var(--lms-primary);
  font-size: 1rem;
  letter-spacing: 0.12em;
}

/* ── Supporting mini quotes grid ──────────────────────────────────────────── */

.lms-testimonials-spotlight__supporting {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(2, 1fr);
}

.lms-testimonial-mini {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  border-radius: var(--lms-radius);
  padding: clamp(1.25rem, 2.5vw, 1.75rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-testimonial-mini:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

.lms-testimonial-mini__stars {
  color: var(--lms-primary);
  font-size: 0.875rem;
  letter-spacing: 0.1em;
}

.lms-testimonial-mini__quote {
  margin: 0;
  flex: 1;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9rem;
  font-style: italic;
  line-height: 1.65;
}

.lms-testimonial-mini__attribution {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--lms-border);
}

.lms-testimonial-mini__avatar {
  display: inline-grid;
  flex-shrink: 0;
  width: 2rem;
  height: 2rem;
  place-items: center;
  border-radius: 50%;
  background: color-mix(in srgb, var(--lms-primary) 12%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.lms-testimonial-mini__author {
  display: flex;
  flex-direction: column;
}

.lms-testimonial-mini__name {
  color: var(--lms-text);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  font-weight: 700;
}

.lms-testimonial-mini__role {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.6875rem;
  line-height: 1.4;
}

@media (prefers-reduced-motion: reduce) {
  .lms-testimonial-mini {
    transition: none;
  }
}

@media (max-width: 640px) {
  .lms-testimonials-spotlight__supporting {
    grid-template-columns: 1fr;
  }
}



/* ── src/sections/testimonials/styles/testimonials-quotes.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* Testimonials — variant: quotes (typographic, no cards)                     */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-testimonials-quotes-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-testimonials-quotes-section__layout {
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
  gap: clamp(2rem, 4vw, 3rem);
}

.lms-testimonial-quote-featured {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  padding-inline: clamp(0rem, 2vw, 1rem);
  border-left: 3px solid var(--lms-primary);
}

.lms-testimonial-quote-featured__mark {
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 3rem;
  font-weight: 700;
  line-height: 1;
  opacity: 0.65;
}

.lms-testimonial-quote-featured__text {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.375rem, 2.8vw, 2rem);
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.35;
}

.lms-testimonial-quote-featured__attribution {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.lms-testimonial-quote-featured__name {
  color: var(--lms-text);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-weight: 700;
}

.lms-testimonial-quote-featured__role {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.875rem;
}

.lms-testimonials-quotes__supporting {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: clamp(1.25rem, 3vw, 2rem);
  padding-top: clamp(1rem, 2vw, 1.5rem);
  border-top: 1px solid var(--lms-border);
}

.lms-testimonial-quote-mini {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.lms-testimonial-quote-mini__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.6;
}

.lms-testimonial-quote-mini__name {
  color: var(--lms-text);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  font-weight: 700;
}

.lms-testimonial-quote-mini__role {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.75rem;
}

.lms-testimonial-quote-mini footer {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.lms-testimonial-quote-featured footer {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.lms-testimonial-quote-featured__name,
.lms-testimonial-quote-mini__name {
  font-style: normal;
}





/* ── src/sections/cta/styles/_index.css ── */

/* ── src/sections/cta/styles/cta.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 5. CtaSection                                                                */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-cta-section {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
  overflow: hidden;
}

/* Subtle glow — contained beneath the card, no top-edge bleed */

/* No section-level glow — the CTA card carries its own internal glow, and the
 * section stays transparent over the continuous page background (no seam). */
.lms-cta-section__glow {
  display: none;
}

/* Card — glass banner with internal primary glow */

.lms-cta-section__card {
  position: relative;
  z-index: 1;
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
  align-items: center;
  gap: 1.25rem;
  overflow: hidden;
  border-radius: var(--lms-radius);
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1.5rem, 4vw, 3rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
}

.lms-cta-section__card[data-align="start"] {
  align-items: flex-start;
  text-align: start;
}

.lms-cta-section__card[data-align="center"] {
  align-items: center;
  text-align: center;
}

.lms-cta-section__card .lms-cta-section__actions {
  align-self: stretch;
}

.lms-cta-section__card[data-align="center"] .lms-cta-section__actions {
  justify-content: center;
}

.lms-cta-section__card[data-align="start"] .lms-cta-section__actions {
  justify-content: flex-start;
}

.lms-cta-section__card::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: -42%;
  width: 72%;
  height: 80%;
  transform: translateX(-50%);
  background: radial-gradient(circle, color-mix(in srgb, var(--lms-primary) calc(22% * var(--lms-surface-glow-opacity, 0.6) * var(--lms-chrome-glow-strength, 1)), transparent) 0%, transparent 70%);
  filter: blur(56px);
  pointer-events: none;
  z-index: 0;
}

.lms-cta-section__card > * {
  position: relative;
  z-index: 1;
}

/* Title */

.lms-cta-section__title {
  margin: 0;
  max-width: 640px;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(2rem, 4vw, 3.25rem);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.1;
}

/* Subtitle */

.lms-cta-section__subtitle {
  margin: 0;
  max-width: 480px;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
  line-height: 1.65;
}

/* Actions row */

.lms-cta-section__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 0.5rem;
}

/* Buttons */

.lms-cta-section__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.875rem 1.75rem;
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  transition:
    opacity var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-cta-section__btn--primary {
  background: linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, #fff) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, #0a0a0a);
  box-shadow:
    0 6px 24px color-mix(in srgb, var(--lms-primary) calc(42% * var(--lms-chrome-glow-strength, 1)), transparent),
    inset 0 1px 0 color-mix(in srgb, #fff calc(35% * var(--lms-chrome-glow-strength, 1)), transparent);
}

.lms-cta-section__btn--primary:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 40px color-mix(in srgb, var(--lms-primary) 55%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 45%, transparent);
}

.lms-cta-section__btn--secondary {
  border: 1px solid color-mix(in srgb, var(--lms-text) 16%, transparent);
  background: var(--lms-surface-bg);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  color: var(--lms-text);
}

.lms-cta-section__btn--secondary:hover {
  border-color: color-mix(in srgb, var(--lms-text) 28%, transparent);
  background: color-mix(in srgb, var(--lms-text) 9%, transparent);
  transform: translateY(-2px);
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-cta-section__btn {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 480px) {
  .lms-cta-section__actions {
    flex-direction: column;
    width: 100%;
  }

  .lms-cta-section__btn {
    width: 100%;
    justify-content: center;
  }
}

/* CTA inset variant — matte bordered editorial panel */
.lms-cta-section--inset {
  overflow: visible;
}

.lms-cta-inset {
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
  gap: 1.25rem;
  border-radius: var(--lms-radius);
  padding: clamp(2rem, 4vw, 3rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  box-shadow: none;
}

.lms-cta-inset[data-align="start"] {
  align-items: flex-start;
  text-align: start;
}

.lms-cta-inset[data-align="center"] {
  align-items: center;
  text-align: center;
}

.lms-cta-inset__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  margin-top: 0.25rem;
}

.lms-cta-inset[data-align="center"] .lms-cta-inset__actions {
  justify-content: center;
}

.lms-cta-inset__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.875rem 1.75rem;
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  transition:
    opacity var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-cta-inset__btn--primary {
  background: linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, #fff) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, #0a0a0a);
  box-shadow:
    0 6px 24px color-mix(in srgb, var(--lms-primary) calc(42% * var(--lms-chrome-glow-strength, 1)), transparent),
    inset 0 1px 0 color-mix(in srgb, #fff calc(35% * var(--lms-chrome-glow-strength, 1)), transparent);
}

.lms-cta-inset__btn--primary:hover {
  transform: translateY(-2px);
}

.lms-cta-inset__btn--secondary {
  border: 1px solid color-mix(in srgb, var(--lms-text) 16%, transparent);
  background: transparent;
  color: var(--lms-text);
}

/* CTA strip variant */
.lms-cta-strip-section {
  padding: var(--lms-section-padding, 4rem) clamp(1rem, 4vw, 2rem);
}

.lms-cta-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  max-width: var(--lms-content-max-width, 1120px);
  margin: 0 auto;
  padding: 1.5rem 1.75rem;
}

.lms-cta-strip__copy {
  display: flex;
  flex: 1 1 280px;
  flex-direction: column;
  gap: 1rem;
  min-width: 0;
}

.lms-cta-strip__copy[data-align="center"] {
  align-items: center;
  text-align: center;
}

.lms-cta-strip__copy[data-align="start"] {
  align-items: flex-start;
  text-align: start;
}

.lms-cta-strip__copy .lms-section-eyebrow {
  margin: 0;
}

.lms-cta-strip__copy[data-align="center"] .lms-section-eyebrow {
  align-self: center;
}

.lms-cta-strip__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.25rem, 2.5vw, 1.75rem);
  font-weight: 700;
  line-height: 1.2;
}

.lms-cta-strip__subtitle {
  margin: 0;
  color: var(--lms-text-muted);
  font-size: 0.9375rem;
  line-height: 1.5;
}

.lms-cta-strip__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.lms-cta-strip__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.65rem 1.1rem;
  border-radius: var(--lms-radius-sm, 0.5rem);
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  transition: opacity 140ms ease, transform 140ms ease;
}

.lms-cta-strip__btn--primary {
  background: linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, var(--lms-text)) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, var(--lms-text));
}

.lms-cta-strip__btn--secondary {
  border: 1px solid var(--lms-border);
  color: var(--lms-text-muted);
}

/* Minimal grammar — divider band like stats inline */
.lms-page[data-surface-grammar="minimal"] .lms-cta-strip {
  border-block: 1px solid var(--lms-border);
  border-radius: 0;
  padding-block: clamp(1.5rem, 3vw, 2.25rem);
}





/* ── src/sections/contact/styles/_index.css ── */

/* ── src/sections/contact/styles/contact.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 6. ContactSection                                                            */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-contact-section {
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-contact-section__shell {
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  margin-inline: auto;
}

.lms-contact-section__inner {
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  margin-inline: auto;
  gap: clamp(2rem, 4vw, 4rem);
  grid-template-columns: 1fr 1.25fr;
  align-items: start;
}

/* ── Left info column ─────────────────────────────────────────────────────── */

.lms-contact-section__info {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.lms-contact-section__info .lms-section-header {
  gap: 0.75rem;
}

/* Contact detail list */

.lms-contact-section__details {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lms-contact-section__detail {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
}

.lms-contact-section__detail--hours {
  align-items: flex-start;
}

.lms-contact-section__detail-hours {
  white-space: pre-line;
  /* First line aligns with icon vertical center (icon = 2.4rem); extra lines grow down */
  padding-top: calc(1.2rem - 0.5lh);
}

.lms-contact-section--split-reverse .lms-contact-section__inner {
  grid-template-columns: 1.25fr 1fr;
}

.lms-contact-section__detail-icon {
  display: inline-grid;
  flex-shrink: 0;
  width: 2.4rem;
  height: 2.4rem;
  place-items: center;
  border-radius: var(--lms-radius);
  border: 1px solid color-mix(in srgb, var(--lms-primary) 24%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 24%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  box-shadow:
    0 4px 14px color-mix(in srgb, var(--lms-primary) calc(18% * var(--lms-chrome-glow-strength, 1)), transparent),
    inset 0 1px 0 color-mix(in srgb, #fff calc(14% * var(--lms-chrome-glow-strength, 1)), transparent);
  color: var(--lms-primary);
}

.lms-contact-section__detail-link {
  color: var(--lms-text-muted);
  text-decoration: none;
  transition: color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-contact-section__detail-link:hover {
  color: var(--lms-primary);
}

/* ── Right form card ──────────────────────────────────────────────────────── */

.lms-contact-section__form-card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  border-radius: var(--lms-radius);
  padding: clamp(1.5rem, 3vw, 2.25rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
}

/* Export wraps fields in <form> — restore the same vertical rhythm as editor direct children */
.lms-contact-form {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  width: 100%;
  margin: 0;
}

.lms-contact-form .lms-form-status {
  margin-top: 0;
  min-height: 1.4em;
  font-weight: 700;
}

/* Form field label text */

.lms-contact-section__form-card .lms-form > span {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
}

/* Input & textarea */

.lms-contact-section__form-card .lms-atom-form-input {
  width: 100%;
  border: 1px solid var(--lms-border);
  border-radius: var(--lms-radius);
  padding: 0.825rem 1rem;
  background: color-mix(in srgb, var(--lms-surface-elevated) 60%, transparent);
  color: var(--lms-text);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  outline: none;
  transition: border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-contact-section__form-card .lms-atom-form-input::placeholder {
  color: color-mix(in srgb, var(--lms-text-muted) 50%, transparent);
}

.lms-contact-section__form-card .lms-atom-form-input:focus {
  border-color: color-mix(in srgb, var(--lms-primary) 55%, transparent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--lms-primary) 14%, transparent);
}

/* Submit button */

.lms-contact-section__submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  width: 100%;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.9rem 1.75rem;
  background: linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, #fff) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, #0a0a0a);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  box-shadow:
    0 6px 24px color-mix(in srgb, var(--lms-primary) calc(40% * var(--lms-chrome-glow-strength, 1)), transparent),
    inset 0 1px 0 color-mix(in srgb, #fff calc(35% * var(--lms-chrome-glow-strength, 1)), transparent);
  transition:
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-contact-section__submit:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 40px color-mix(in srgb, var(--lms-primary) calc(52% * var(--lms-chrome-glow-strength, 1)), transparent),
    inset 0 1px 0 color-mix(in srgb, #fff calc(45% * var(--lms-chrome-glow-strength, 1)), transparent);
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-contact-section__detail-link,
  .lms-contact-section__form-card .lms-atom-form-input,
  .lms-contact-section__submit {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  .lms-contact-section__inner {
    grid-template-columns: 1fr;
  }
}

/* ── variant: stacked — single column via layout spine ─────────────────── */

.lms-contact-section--stacked .lms-contact-section__form-card {
  width: 100%;
}

.lms-contact-section--stacked .lms-contact-section__stacked-details {
  width: 100%;
  padding-top: 0.5rem;
  border-top: 1px solid var(--lms-border);
}

.lms-contact-section--stacked .lms-contact-section__details {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 1.25rem 2.5rem;
  justify-content: center;
}

.lms-page[data-section-align="start"] .lms-contact-section--stacked .lms-contact-section__details {
  justify-content: flex-start;
}

@media (max-width: 640px) {
  .lms-contact-section--stacked .lms-contact-section__details {
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0.85rem;
  }
}

/* ── variant: minimal — form only, no card chrome ───────────────────────── */

.lms-contact-section--minimal .lms-section-column {
  gap: 1.5rem;
}

.lms-contact-section--minimal .lms-contact-section__form-card--bare {
  width: 100%;
  padding: 0;
  background: transparent;
  border: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.lms-contact-section--minimal .lms-contact-section__form-card--bare .lms-atom-form-input {
  background: color-mix(in srgb, var(--lms-surface-elevated) 40%, transparent);
}






/* ── src/sections/faq/styles/_index.css ── */

/* ── src/sections/faq/styles/faq.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 7. FaqSection                                                                */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-faq-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-faq-section__list {
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
  gap: 0.75rem;
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 640px) {
  .lms-faq-section {
    padding-inline: 1rem;
  }
}

.lms-faq-section--split {
  align-items: stretch;
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-faq-section__split {
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  gap: clamp(2rem, 4vw, 4rem);
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  align-items: start;
}

.lms-faq-section__split-info {
  position: sticky;
  top: calc(var(--lms-nav-bar-h, 4rem) + 1.5rem);
}

.lms-faq-section--split .lms-faq-section__list {
  max-width: none;
}

@media (max-width: 768px) {
  .lms-faq-section__split {
    grid-template-columns: 1fr;
  }

  .lms-faq-section__split-info {
    position: static;
  }
}

.lms-faq-item summary .lms-faq-item__icon {
  display: inline-flex;
  flex-shrink: 0;
  color: var(--lms-primary);
}

.lms-faq-item[open] .lms-faq-item__icon-v {
  opacity: 0;
}

/* Minimal grammar — flat accordion rows (stats-inline parity) */
.lms-page[data-surface-grammar="minimal"] .lms-faq-section__list {
  gap: 0;
}

.lms-page[data-surface-grammar="minimal"] .lms-faq-item {
  border: none;
  border-radius: 0;
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
  border-bottom: 1px solid var(--lms-border);
}

.lms-page[data-surface-grammar="minimal"] .lms-faq-item:hover,
.lms-page[data-surface-grammar="minimal"] .lms-faq-item[open] {
  background: transparent;
  border-color: var(--lms-border);
}





/* ── src/sections/gallery/styles/_index.css ── */

/* ── src/sections/gallery/styles/gallery.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 8. GallerySection                                                            */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-gallery-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-gallery-section__header .lms-section-subtitle,
.lms-gallery-section__subtitle {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: clamp(0.9375rem, 1.4vw, 1.0625rem);
  line-height: 1.65;
  max-width: 520px;
}

/* ── CSS grid — column count via custom property (responsive caps override) ─── */
/*
 * --lms-gallery-cols set from data-lms-gallery-cols (min(itemCount, 4)) in TSX.
 * Desktop: up to 4 cols. ≤900px: cap at 2. Single-item galleries stay 1 col.
 */

.lms-gallery-section__grid {
  --lms-gallery-cols: 4;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  display: grid;
  grid-template-columns: repeat(var(--lms-gallery-cols), minmax(0, 1fr));
  gap: 1.125rem;
}

.lms-gallery-section__grid[data-lms-gallery-cols="1"] { --lms-gallery-cols: 1; }
.lms-gallery-section__grid[data-lms-gallery-cols="2"] { --lms-gallery-cols: 2; }
.lms-gallery-section__grid[data-lms-gallery-cols="3"] { --lms-gallery-cols: 3; }
.lms-gallery-section__grid[data-lms-gallery-cols="4"] { --lms-gallery-cols: 4; }

/* ── Masonry variant — CSS multi-column, natural image heights ─────────────── */
.lms-gallery-section__grid--masonry {
  display: block;
  column-count: var(--lms-gallery-cols);
  column-gap: 1.125rem;
}

.lms-gallery-section__grid--masonry .lms-gallery-section__item {
  aspect-ratio: auto;
  width: 100%;
  margin-bottom: 1.125rem;
  break-inside: avoid;
  -webkit-column-break-inside: avoid;
}

.lms-gallery-section__grid--masonry .lms-gallery-section__item img {
  height: auto;
}

/* ── Individual item ──────────────────────────────────────────────────────── */

.lms-gallery-section__item {
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  border: 1px solid color-mix(in srgb, var(--lms-text) 9%, transparent);
  border-radius: var(--lms-radius);
  background: color-mix(in srgb, var(--lms-surface) 60%, transparent);
  cursor: zoom-in;
  transition:
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-gallery-section__item:hover {
  border-color: color-mix(in srgb, var(--lms-primary) 24%, transparent);
  box-shadow: 0 22px 50px -16px rgba(0, 0, 0, 0.5);
}

.lms-gallery-section__item img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 400ms cubic-bezier(0.2, 0, 0, 1);
  will-change: transform;
}

.lms-gallery-section__item:hover img {
  transform: scale(1.04);
}

.lms-gallery-section__item .lms-image-zoom {
  border-radius: inherit;
}

.lms-gallery-section__item:hover .lms-image-zoom,
.lms-gallery-section__item:focus-within .lms-image-zoom {
  opacity: 1;
  background: rgba(0, 0, 0, 0.42);
}

/* Explicit hover tone overrides */
.lms-gallery-section[data-gallery-hover-tone="light"] .lms-gallery-section__item:hover,
.lms-gallery-section[data-gallery-hover-tone="light"] .lms-gallery-section__item:focus-within {
  border-color: color-mix(in srgb, var(--lms-primary) 20%, transparent);
  box-shadow: 0 18px 40px -16px color-mix(in srgb, var(--lms-text) 10%, transparent);
}

.lms-gallery-section[data-gallery-hover-tone="light"] .lms-gallery-section__item:hover .lms-image-zoom,
.lms-gallery-section[data-gallery-hover-tone="light"] .lms-gallery-section__item:focus-within .lms-image-zoom {
  background: color-mix(in srgb, var(--lms-bg) 72%, transparent);
}

.lms-gallery-section[data-gallery-hover-tone="light"] .lms-gallery-section__item:hover .lms-image-zoom svg,
.lms-gallery-section[data-gallery-hover-tone="light"] .lms-gallery-section__item:focus-within .lms-image-zoom svg {
  color: var(--lms-text);
  filter: none;
}

.lms-gallery-section[data-gallery-hover-tone="dark"] .lms-gallery-section__item:hover .lms-image-zoom,
.lms-gallery-section[data-gallery-hover-tone="dark"] .lms-gallery-section__item:focus-within .lms-image-zoom {
  background: rgba(0, 0, 0, 0.42);
}

.lms-gallery-section[data-gallery-hover-tone="dark"] .lms-gallery-section__item:hover .lms-image-zoom svg,
.lms-gallery-section[data-gallery-hover-tone="dark"] .lms-gallery-section__item:focus-within .lms-image-zoom svg {
  color: rgba(255, 255, 255, 0.9);
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.5));
}

/* Auto: follow page theme */
.lms-page--light .lms-gallery-section[data-gallery-hover-tone="auto"] .lms-gallery-section__item:hover,
.lms-page--light .lms-gallery-section[data-gallery-hover-tone="auto"] .lms-gallery-section__item:focus-within {
  border-color: color-mix(in srgb, var(--lms-primary) 20%, transparent);
  box-shadow: 0 18px 40px -16px color-mix(in srgb, var(--lms-text) 10%, transparent);
}

.lms-page--light .lms-gallery-section[data-gallery-hover-tone="auto"] .lms-gallery-section__item:hover .lms-image-zoom,
.lms-page--light .lms-gallery-section[data-gallery-hover-tone="auto"] .lms-gallery-section__item:focus-within .lms-image-zoom {
  background: color-mix(in srgb, var(--lms-bg) 72%, transparent);
}

.lms-page--light .lms-gallery-section[data-gallery-hover-tone="auto"] .lms-gallery-section__item:hover .lms-image-zoom svg,
.lms-page--light .lms-gallery-section[data-gallery-hover-tone="auto"] .lms-gallery-section__item:focus-within .lms-image-zoom svg {
  color: var(--lms-text);
  filter: none;
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

/* ≤900px (mobile nav): max 2 columns — min() beats data-attribute desktop cols */
@media (max-width: 900px) {
  .lms-gallery-section__grid {
    grid-template-columns: repeat(min(var(--lms-gallery-cols), 2), minmax(0, 1fr));
    gap: 0.875rem;
  }

  .lms-gallery-section__item {
    aspect-ratio: 1;
  }

  .lms-gallery-section__grid--masonry {
    column-count: min(var(--lms-gallery-cols), 2);
    column-gap: 0.875rem;
  }

  .lms-gallery-section__grid--masonry .lms-gallery-section__item {
    aspect-ratio: auto;
    margin-bottom: 0.875rem;
  }
}

/* ≤540px: tighter gap, same 2-col cap */
@media (max-width: 540px) {
  .lms-gallery-section__grid {
    gap: 0.625rem;
  }

  .lms-gallery-section__grid--masonry {
    column-count: 1;
  }
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-gallery-section__item img {
    transition: none;
  }

  .lms-gallery-section__item:hover img {
    transform: none;
  }
}





/* ── src/sections/logocloud/styles/_index.css ── */

/* ── src/sections/logocloud/styles/logocloud.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 9. LogoCloud — "trusted by" seamless marquee band                           */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-logocloud-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
}

.lms-logocloud-section .lms-container {
  width: 100%;
}

.lms-logocloud-section .header-block {
  width: 100%;
}

/* ── Marquee wrapper — clips overflow and masks edges ───────────────────── */

.lms-logocloud-section__track-wrap {
  position: relative;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  overflow: hidden;
  /* Room for chip shadows so overflow clip does not slice them */
  padding-block: 1rem;
  margin-block: -1rem;
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 10%,
    #000 90%,
    transparent 100%
  );
  mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 10%,
    #000 90%,
    transparent 100%
  );
}

/* ── Grid variant — static centered wall (no motion, reduced-motion safe) ──── */

.lms-logocloud-section__grid {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: clamp(1rem, 2.5vw, 2.25rem) clamp(1.25rem, 3vw, 2.75rem);
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
}

/* Single animating row: two identical sets, -50% = seamless loop */

.lms-logocloud-section__marquee {
  display: flex;
  width: max-content;
  animation: lms-logocloud-marquee 32s linear infinite;
  will-change: transform;
}

@keyframes lms-logocloud-marquee {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

.lms-logocloud-section[data-logocloud-motion="marquee-right"] .lms-logocloud-section__marquee {
  animation-direction: reverse;
}

.lms-logocloud-section[data-logocloud-motion="static"] .lms-logocloud-section__marquee {
  animation: none;
  width: 100%;
  justify-content: center;
}

.lms-logocloud-section[data-logocloud-motion="static"] .lms-logocloud-section__track-set--clone {
  display: none;
}

.lms-logocloud-section__track-set {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  gap: clamp(1.25rem, 3vw, 2.5rem);
  padding-inline: clamp(0.5rem, 1.5vw, 1rem);
}

/* Clone set is visual-only — must not steal hover from the primary track */
.lms-logocloud-section__track-set--clone {
  pointer-events: none;
  user-select: none;
}

/* ── Section chrome overrides (builder + static export) ─────────────────── */

.lms-logocloud-section[data-logocloud-chip-style="flat"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only) {
  border-radius: 0;
  padding: 0.25rem 0.75rem;
  background: transparent;
  border: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.lms-logocloud-section[data-logocloud-chip-style="flat"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only):hover {
  border-color: transparent;
  box-shadow: none;
}

.lms-logocloud-section[data-logocloud-chip-style="card"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only) {
  border-radius: 999px;
  padding: 0.55rem 1.2rem 0.55rem 0.6rem;
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: none;
}

.lms-page[data-card-style="glass"] .lms-logocloud-section[data-logocloud-chip-style="card"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only) {
  box-shadow: 0 4px 14px -6px rgba(0, 0, 0, 0.18);
}

.lms-page[data-card-style="elevated"] .lms-logocloud-section[data-logocloud-chip-style="card"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only) {
  border-radius: var(--lms-radius);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.lms-logocloud-section[data-logocloud-logo-hover="none"] .lms-logocloud-chip:hover .lms-logocloud-chip__img {
  filter: grayscale(1);
  opacity: 0.7;
}

.lms-page--light .lms-logocloud-section[data-logocloud-logo-hover="none"] .lms-logocloud-chip:hover .lms-logocloud-chip__img {
  opacity: 0.62;
}

.lms-logocloud-section[data-logocloud-logo-hover="brighten"] .lms-logocloud-chip:hover .lms-logocloud-chip__img {
  filter: grayscale(0);
  opacity: 1;
}

.lms-logocloud-section[data-logocloud-marquee-pause="hover"] .lms-logocloud-section__track-wrap:hover .lms-logocloud-section__marquee {
  animation-play-state: paused;
}

/* ── Chip — glass/elevated default (pill); bordered/flat strip chrome ───── */

.lms-logocloud-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  flex-shrink: 0;
  isolation: isolate;
  border-radius: 999px;
  padding: 0.55rem 1.2rem 0.55rem 0.6rem;
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  /* Marquee chips: avoid full card drop-shadow (stacks dark in gaps) */
  box-shadow: none;
  transition:
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    filter var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-page[data-card-style="glass"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only) {
  box-shadow: 0 4px 14px -6px rgba(0, 0, 0, 0.18);
}

.lms-page[data-card-style="elevated"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only) {
  border-radius: var(--lms-radius);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.lms-page[data-card-style="elevated"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only):hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.07);
}

.lms-logocloud-chip:hover {
  border-color: var(--lms-surface-hover-border);
}

.lms-page[data-card-style="glass"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only):hover {
  box-shadow: 0 6px 18px -8px rgba(0, 0, 0, 0.22);
}

.lms-logocloud-chip--logo-only {
  padding: 0.35rem 0.5rem;
  background: transparent;
  border: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.lms-page[data-surface-grammar="minimal"] .lms-logocloud-chip,
.lms-page[data-card-style="bordered"] .lms-logocloud-chip,
.lms-page[data-card-style="flat"] .lms-logocloud-chip {
  border-radius: 0;
  padding: 0.25rem 0.75rem;
  background: transparent;
  border: none;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.lms-page[data-surface-grammar="minimal"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only),
.lms-page[data-surface-grammar="minimal"] .lms-logocloud-chip:not(.lms-logocloud-chip--logo-only):hover,
.lms-page[data-card-style="bordered"] .lms-logocloud-chip:hover,
.lms-page[data-card-style="flat"] .lms-logocloud-chip:hover {
  box-shadow: none;
}

.lms-page[data-card-style="bordered"] .lms-logocloud-chip__monogram,
.lms-page[data-card-style="flat"] .lms-logocloud-chip__monogram {
  border-radius: var(--lms-radius);
  box-shadow: none;
}

.lms-page[data-card-style="elevated"] .lms-logocloud-chip__monogram {
  box-shadow: none;
}

.lms-page[data-card-style="glass"] .lms-logocloud-chip__monogram {
  box-shadow: 0 4px 12px color-mix(in srgb, var(--lms-primary) 18%, transparent);
}

.lms-page[data-surface-grammar="minimal"] .lms-logocloud-chip__monogram {
  width: auto;
  height: auto;
  padding: 0;
  border-radius: 0;
  background: none;
  border: none;
  box-shadow: none;
}

/* Monogram fallback when no logo image */

.lms-logocloud-chip__monogram {
  display: inline-grid;
  flex-shrink: 0;
  width: calc(var(--lms-logocloud-logo-height, 5rem) * 0.9);
  height: calc(var(--lms-logocloud-logo-height, 5rem) * 0.9);
  min-width: 2.25rem;
  min-height: 2.25rem;
  place-items: center;
  border-radius: 50%;
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 26%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  border: 1px solid color-mix(in srgb, var(--lms-primary) 22%, transparent);
  box-shadow: none;
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

/* Logo image — grayscale wall treatment */

.lms-logocloud-chip__img {
  display: block;
  flex-shrink: 0;
  width: auto;
  height: var(--lms-logocloud-logo-height, 5rem);
  max-width: calc(var(--lms-logocloud-logo-height, 5rem) * 2.5);
  border-radius: 0;
  object-fit: contain;
  object-position: center;
  filter: grayscale(1);
  opacity: 0.7;
  transition:
    filter var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    opacity var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-logocloud-chip:hover .lms-logocloud-chip__img {
  filter: grayscale(0);
  opacity: 1;
}

.lms-page--light .lms-logocloud-chip__img {
  opacity: 0.62;
}

.lms-page--light .lms-logocloud-chip:hover .lms-logocloud-chip__img {
  opacity: 1;
}

.lms-logocloud-chip__name {
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .lms-logocloud-section__marquee {
    animation-play-state: paused;
  }

  .lms-logocloud-chip {
    transition: none;
  }

  .lms-logocloud-chip__img {
    transition: none;
  }
}





/* ── src/sections/stats/styles/_index.css ── */

/* ── src/sections/stats/styles/stats.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 10. StatsBand — metrics band (cells | inline | strip variants)              */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-stats-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-stats-section__column {
  gap: var(--lms-section-gap, 3rem);
}

.lms-stats-section__grid {
  width: 100%;
  min-width: 0;
}

/* ── cells variant — 4-col grid with surface cards ───────────────────────── */

.lms-stats-section--cells .lms-stats-section__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.125rem;
}

.lms-stats-section--cells .lms-stats-cell {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  overflow: hidden;
  border-radius: var(--lms-radius);
  padding: clamp(1.75rem, 3vw, 2.5rem) clamp(1rem, 2vw, 1.5rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
  text-align: center;
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-stats-section--cells .lms-stats-cell:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

.lms-stats-cell__glow {
  position: absolute;
  top: -30%;
  left: 50%;
  width: 80%;
  height: 80%;
  transform: translateX(-50%);
  background: radial-gradient(
    ellipse at center,
    color-mix(in srgb, var(--lms-primary) 28%, transparent) 0%,
    transparent 70%
  );
  filter: blur(32px);
  opacity: var(--lms-surface-glow-opacity, 0);
  pointer-events: none;
  z-index: 0;
}

.lms-page--light .lms-stats-cell__glow {
  opacity: calc(var(--lms-surface-glow-opacity, 0) * 0.5);
}

.lms-stats-cell__value {
  position: relative;
  z-index: 1;
  display: block;
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(2.25rem, 4vw, 3.5rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 1;
  text-shadow: var(--lms-stat-text-glow, none);
}

.lms-stats-cell__label {
  position: relative;
  z-index: 1;
  display: block;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  line-height: 1.4;
}

/* ── inline variant — single row with dividers, no boxes ───────────────── */

.lms-stats-section--inline .lms-stats-section__grid {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  justify-content: center;
  gap: 0;
  border-block: 1px solid var(--lms-border);
}

.lms-stats-section--inline .lms-stats-cell {
  display: flex;
  flex: 1 1 0;
  min-width: min(100%, 9.5rem);
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  padding: clamp(1.5rem, 3vw, 2.25rem) clamp(1rem, 2vw, 1.5rem);
  text-align: center;
  background: transparent;
  border: none;
  box-shadow: none;
}

.lms-stats-section--inline .lms-stats-cell:not(:last-child) {
  border-right: 1px solid var(--lms-border);
}

.lms-stats-section--inline .lms-stats-cell__glow {
  display: none;
}

.lms-stats-section--inline .lms-stats-cell__value {
  font-size: clamp(2rem, 3.5vw, 3rem);
  text-shadow: none;
}

/* ── strip variant — full-width contrasting band ───────────────────────── */

.lms-stats-section--strip {
  padding-inline: 0;
}

.lms-stats-section--strip .lms-stats-section__column {
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-stats-section--strip .lms-stats-section__grid {
  display: flex;
  width: 100%;
  max-width: none;
  flex-wrap: wrap;
  align-items: stretch;
  justify-content: center;
  gap: 0;
  padding-block: clamp(2rem, 4vw, 3rem);
  background: color-mix(in srgb, var(--lms-surface-elevated, var(--lms-surface)) 92%, var(--lms-primary) 8%);
  border-block: 1px solid var(--lms-border);
}

.lms-stats-section--strip .lms-stats-cell {
  display: flex;
  flex: 1 1 0;
  min-width: min(100%, 10.5rem);
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: clamp(1rem, 2vw, 1.5rem) clamp(1.25rem, 3vw, 2rem);
  text-align: center;
  background: transparent;
  border: none;
  box-shadow: none;
}

.lms-stats-section--strip .lms-stats-cell:not(:last-child) {
  border-right: 1px solid var(--lms-border);
}

.lms-stats-section--strip .lms-stats-cell__glow {
  display: none;
}

.lms-stats-section--strip .lms-stats-cell__value {
  font-size: clamp(2.5rem, 5vw, 4rem);
  font-weight: 800;
  text-shadow: none;
  letter-spacing: -0.05em;
}

.lms-stats-section--strip .lms-stats-cell__label {
  font-size: 0.8125rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-stats-section--cells .lms-stats-cell {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 900px) {
  .lms-stats-section--cells .lms-stats-section__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .lms-stats-section--inline .lms-stats-cell:nth-child(2) {
    border-right: none;
  }

  .lms-stats-section--inline .lms-stats-cell:nth-child(-n + 2) {
    border-bottom: 1px solid var(--lms-border);
  }

  .lms-stats-section--strip .lms-stats-cell:nth-child(2) {
    border-right: none;
  }

  .lms-stats-section--strip .lms-stats-cell:nth-child(-n + 2) {
    border-bottom: 1px solid var(--lms-border);
  }
}

@media (max-width: 480px) {
  .lms-stats-section--cells .lms-stats-section__grid {
    grid-template-columns: 1fr 1fr;
    gap: 0.875rem;
  }

  .lms-stats-section--cells .lms-stats-cell__value {
    font-size: clamp(1.875rem, 8vw, 2.5rem);
  }

  .lms-stats-section--inline .lms-stats-cell,
  .lms-stats-section--strip .lms-stats-cell {
    flex: 1 1 45%;
    border-right: none !important;
  }

  .lms-stats-section--inline .lms-stats-cell:not(:last-child),
  .lms-stats-section--strip .lms-stats-cell:not(:last-child) {
    border-bottom: 1px solid var(--lms-border);
  }
}





/* ── src/sections/steps/styles/_index.css ── */

/* ── src/sections/steps/styles/steps.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 11. StepsSection — "how it works" numbered steps                            */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-steps-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

/* ── Steps list — horizontal on desktop, stacked on mobile ───────────────── */

.lms-steps-section__list {
  position: relative;
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  --steps-gap: clamp(1.25rem, 3vw, 2rem);
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--steps-gap);
}

/* ── Step card ────────────────────────────────────────────────────────────── */

.lms-step-card {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  border-radius: var(--lms-radius);
  padding: clamp(1.75rem, 3vw, 2.5rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  box-shadow: var(--lms-surface-shadow);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-step-card:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

/* Horizontal connector — spans only the grid gap between cards, at badge height */

.lms-step-card__connector {
  position: absolute;
  top: clamp(2.25rem, 4vw, 3rem);
  left: 100%;
  width: var(--steps-gap, 1.25rem);
  height: 1px;
  background: linear-gradient(
    to right,
    color-mix(in srgb, var(--lms-primary) 28%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  pointer-events: none;
  z-index: 0;
}

/* ── Number badge ─────────────────────────────────────────────────────────── */

.lms-step-card__badge {
  position: relative;
  display: inline-grid;
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  place-items: center;
  border-radius: var(--lms-radius);
  border: 1px solid color-mix(in srgb, var(--lms-primary) 30%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 26%, transparent),
    color-mix(in srgb, var(--lms-primary) 8%, transparent)
  );
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  overflow: hidden;
}

/* Glow behind the badge number */

.lms-step-card__badge-glow {
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at 50% 30%,
    color-mix(in srgb, var(--lms-primary) 45%, transparent),
    transparent 70%
  );
  pointer-events: none;
  z-index: 0;
  opacity: var(--lms-effect-intensity, 1);
}

.lms-step-card__badge > span {
  position: relative;
  z-index: 1;
}

/* ── Card body ────────────────────────────────────────────────────────────── */

.lms-step-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}

.lms-step-card__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.0625rem, 1.5vw, 1.25rem);
  font-weight: 700;
  letter-spacing: -0.012em;
  line-height: 1.25;
}

.lms-step-card__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.7;
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-step-card {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  /* On tablet/mobile the connector doesn't make visual sense in a vertical stack */
  .lms-step-card__connector {
    display: none;
  }

  .lms-steps-section__list {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 390px) {
  .lms-steps-section {
    padding-inline: 1rem;
  }
}



/* ── src/sections/steps/styles/steps-timeline.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* Steps — variant: timeline (vertical connector, no card boxes)              */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-steps-section--timeline {
  align-items: flex-start;
}

.lms-steps-timeline {
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lms-steps-timeline__item {
  --lms-steps-marker-size: 3rem;
  --lms-steps-item-pad: clamp(1.25rem, 2.5vw, 1.75rem);
  position: relative;
  display: grid;
  grid-template-columns: var(--lms-steps-marker-size) 1fr;
  gap: 1.25rem 1.5rem;
  padding-block: var(--lms-steps-item-pad);
}

.lms-steps-timeline__item:not(:last-child)::after {
  content: '';
  position: absolute;
  top: calc(var(--lms-steps-item-pad) + var(--lms-steps-marker-size));
  bottom: 0;
  left: calc(var(--lms-steps-marker-size) / 2);
  width: 1px;
  transform: translateX(-50%);
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, var(--lms-primary) 28%, transparent),
    color-mix(in srgb, var(--lms-primary) 6%, transparent)
  );
}

.lms-steps-timeline__marker {
  display: grid;
  width: var(--lms-steps-marker-size);
  height: var(--lms-steps-marker-size);
  place-items: center;
  border-radius: var(--lms-radius-sm, var(--lms-radius));
  border: 1px solid color-mix(in srgb, var(--lms-primary) 30%, transparent);
  background: color-mix(in srgb, var(--lms-primary) 8%, transparent);
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.lms-steps-timeline__body {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding-top: 0.35rem;
}

.lms-steps-timeline__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.0625rem, 1.5vw, 1.25rem);
  font-weight: 700;
  letter-spacing: -0.012em;
  line-height: 1.25;
}

.lms-steps-timeline__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.7;
}

@media (max-width: 390px) {
  .lms-steps-timeline__item {
    --lms-steps-marker-size: 2.5rem;
    grid-template-columns: var(--lms-steps-marker-size) 1fr;
    gap: 1rem;
  }

  .lms-steps-timeline__marker {
    font-size: 0.75rem;
  }
}





/* ── src/sections/services/styles/_index.css ── */

/* ── src/sections/services/styles/services.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* 12. ServicesSection                                                          */
/* ═══════════════════════════════════════════════════════════════════════════ */

/* Sections stay fully transparent over the continuous page background
 * (.lms-bg--*). No per-section overflow:hidden + ambient glow — seam-safe. */
.lms-services-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

/* ── Grid ─────────────────────────────────────────────────────────────────── */

.lms-services-section__grid {
  display: grid;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  gap: 1.25rem;
  grid-template-columns: repeat(3, 1fr);
  align-items: stretch;
}

/* ── Card shell — glass treatment mirrors FeaturesBento exactly ──────────── */

.lms-services-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  height: 100%;
  border-radius: var(--lms-radius);
  padding: clamp(1.5rem, 3vw, 2.1rem);
  background: var(--lms-surface-bg);
  border: var(--lms-surface-border);
  backdrop-filter: var(--lms-surface-backdrop);
  -webkit-backdrop-filter: var(--lms-surface-backdrop);
  overflow: hidden;
  box-shadow: var(--lms-surface-shadow);
  transition:
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    border-color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-services-card:hover {
  transform: var(--lms-surface-hover-lift);
  border-color: var(--lms-surface-hover-border);
  box-shadow: var(--lms-surface-shadow-hover);
}

/* Accent-tinted glow corner (matches .lms-bento-card--secondary::after) */

.lms-services-card::after {
  content: '';
  position: absolute;
  right: -28%;
  top: -34%;
  width: 60%;
  height: 60%;
  background: radial-gradient(circle, color-mix(in srgb, var(--lms-accent) 14%, transparent) 0%, transparent 70%);
  filter: blur(44px);
  pointer-events: none;
  z-index: 0;
}

.lms-services-card > * {
  position: relative;
  z-index: 1;
}

/* ── Image at top ─────────────────────────────────────────────────────────── */

.lms-services-card__image-wrap {
  width: calc(100% + clamp(3rem, 6vw, 4.2rem));
  /* Negative margin to bleed the image to card edges (mirrors GallerySection) */
  margin: calc(-1 * clamp(1.5rem, 3vw, 2.1rem));
  margin-bottom: 0;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: var(--lms-radius) var(--lms-radius) 0 0;
  flex-shrink: 0;
}

.lms-services-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Smooth zoom on hover — reduced-motion safe (no motion declared here; parent
   * card handles the translateY lift; this is purely a visual polish) */
  transition: transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-services-card:hover .lms-services-card__image {
  transform: scale(1.04);
}

/* ── Icon-glow badge (no image fallback) ──────────────────────────────────── */

.lms-services-card__icon-badge {
  position: relative;
  display: inline-grid;
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  place-items: center;
  border-radius: var(--lms-radius);
  border: 1px solid color-mix(in srgb, var(--lms-primary) 24%, transparent);
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--lms-primary) 24%, transparent) 0%,
    color-mix(in srgb, var(--lms-primary) 8%, transparent) 100%
  );
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--lms-primary) 22%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 14%, transparent);
  overflow: hidden;
}

.lms-services-card__icon-glow {
  position: absolute;
  inset: 0;
  background: radial-gradient(
    circle at 50% 30%,
    color-mix(in srgb, var(--lms-primary) 45%, transparent),
    transparent 70%
  );
  pointer-events: none;
  z-index: 0;
  opacity: var(--lms-effect-intensity, 1);
}

.lms-services-card__icon-inner {
  position: relative;
  z-index: 1;
  color: var(--lms-primary);
  font-size: 1.125rem;
  line-height: 1;
}

/* ── Card text ────────────────────────────────────────────────────────────── */

.lms-services-card__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.0625rem, 1.5vw, 1.25rem);
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.2;
}

.lms-services-card__text {
  flex: 1;
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.65;
}

/* ── Price chip — amber, mirrors Pricing amber style ──────────────────────── */

.lms-services-card__price {
  margin: 0;
  margin-top: auto;
  color: color-mix(in srgb, var(--lms-primary) 85%, var(--lms-accent));
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.125rem, 2vw, 1.5rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1;
}

/* ── CTA button — gradient primary, mirrors Pricing card CTA ─────────────── */

.lms-services-card:not(:has(.lms-services-card__price)) .lms-services-card__cta {
  margin-top: auto;
}

.lms-services-card__cta {
  display: block;
  margin-top: 0.5rem;
  border-radius: var(--lms-control-radius, var(--lms-radius-md, 1rem));
  padding: 0.875rem 1.5rem;
  background: linear-gradient(135deg, color-mix(in srgb, var(--lms-primary) 88%, #fff) 0%, var(--lms-primary) 55%);
  color: var(--lms-primary-contrast, #0a0a0a);
  box-shadow:
    0 6px 22px color-mix(in srgb, var(--lms-primary) 40%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 35%, transparent);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-align: center;
  text-decoration: none;
  transition:
    opacity var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    transform var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease),
    box-shadow var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-services-card__cta:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 36px color-mix(in srgb, var(--lms-primary) 52%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 45%, transparent);
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-services-card,
  .lms-services-card__image,
  .lms-services-card__cta {
    transition: none;
  }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 900px) {
  .lms-services-section__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 600px) {
  .lms-services-section__grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 390px) {
  .lms-services-section {
    padding-inline: 1rem;
  }
}



/* ── src/sections/services/styles/services-rows.css ── */
/* ═══════════════════════════════════════════════════════════════════════════ */
/* Services — variant: rows (open list, no cards)                             */
/* ═══════════════════════════════════════════════════════════════════════════ */

.lms-services-rows-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lms-section-gap, 3rem);
  padding-block: var(--lms-section-pad, 5rem);
  padding-inline: clamp(1rem, 4vw, 3rem);
}

.lms-services-rows-section__list {
  display: flex;
  width: 100%;
  max-width: var(--lms-content-max-width, 1120px);
  flex-direction: column;
}

.lms-services-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 1.5rem;
  padding-block: clamp(1.35rem, 2.5vw, 1.75rem);
  border-bottom: 1px solid var(--lms-border);
  transition: color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-services-row:first-child {
  border-top: 1px solid var(--lms-border);
}

.lms-services-row__main {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  min-width: 0;
}

.lms-services-row__title {
  margin: 0;
  color: var(--lms-text);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: clamp(1.0625rem, 1.8vw, 1.25rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
}

.lms-services-row__text {
  margin: 0;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.9375rem;
  line-height: 1.6;
  max-width: 52ch;
}

.lms-services-row__meta {
  display: flex;
  flex-shrink: 0;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.5rem;
}

.lms-services-row__price {
  margin: 0;
  color: var(--lms-primary);
  font-family: var(--lms-heading-font, Sora, sans-serif);
  font-size: 0.9375rem;
  font-weight: 700;
  white-space: nowrap;
}

.lms-services-row__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: var(--lms-text-muted);
  font-family: var(--lms-body-font, Inter, sans-serif);
  font-size: 0.8125rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  transition: color var(--lms-motion-duration, 260ms) var(--lms-motion-ease, ease);
}

.lms-services-row__cta:hover {
  color: var(--lms-primary);
}

.lms-services-row__cta::after {
  content: '→';
}

/* Center axis — meta row below title so copy stays optically centered */
.lms-section-column[data-align="center"] .lms-services-row {
  grid-template-columns: 1fr;
  justify-items: center;
  text-align: center;
}

.lms-section-column[data-align="center"] .lms-services-row__main {
  align-items: center;
  width: 100%;
}

.lms-section-column[data-align="center"] .lms-services-row__text {
  max-width: 52ch;
}

.lms-section-column[data-align="center"] .lms-services-row__meta {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.65rem 1.25rem;
  width: 100%;
}

@media (max-width: 640px) {
  .lms-services-row {
    grid-template-columns: 1fr;
    align-items: flex-start;
  }

  .lms-section-column[data-align="center"] .lms-services-row {
    align-items: center;
  }

  .lms-services-row__meta {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }

  .lms-section-column[data-align="center"] .lms-services-row__meta {
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.65rem 1.25rem;
  }
}





/* ── src/styles/parts/sections/_typography.css ── */
/* ─── Typography contract — headings never break mid-word ───────────────────
 * Loaded last in sections/_index.css (after signatures + section CSS).
 * Body copy may use break-word / hyphens in atoms-responsive.css.
 * ─────────────────────────────────────────────────────────────────────────── */

.lms-section-title,
.lms-hero-section__title,
.lms-cta-strip__title,
.lms-cta-section__title,
h1.lms-atom-text,
h2.lms-atom-text,
h3.lms-atom-text {
  overflow-wrap: normal;
  word-break: normal;
  hyphens: manual;
}

/* Signature words = one unbreakable unit; line breaks only between words */
.lms-sig-word {
  display: inline-block;
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: manual;
}

.lms-sig-mask {
  overflow-wrap: normal;
  word-break: normal;
}





/* ── src/styles/parts/interactions.css ── */
/* ─── Interaction Polish ─────────────────────────────────────────────────────
 * Owns two visible interaction defects:
 *   1. FAQ accordion height animation (grid-template-rows technique)
 *   2. Smooth scroll + sticky-header offset for in-page anchor links
 *
 * Imported by app.css AND sitePublic.css so editor == preview == export.
 * All motion respects prefers-reduced-motion.
 * ─────────────────────────────────────────────────────────────────────────── */

/* ═══════════════════════════════════════════════════════════════════════════ */
/* 1. FAQ accordion — smooth height + opacity expand/collapse                  */
/* ═══════════════════════════════════════════════════════════════════════════ */

/*
 * Technique: CSS grid-template-rows 0fr → 1fr.
 *
 * The <details> element gains a .lms-faq-item__body wrapper (added in
 * Faq.tsx) that acts as the grid cell. Its min-height is 0 so the grid
 * can collapse it to zero. The <p> inside receives overflow:hidden so
 * content is clipped during the transition.
 *
 * Native <details> toggles display (not visibility/height), so we cannot
 * transition on [open] directly — instead we use the grid approach which
 * works during both the open AND close phases because the DOM node stays
 * present; only the attribute changes.
 *
 * This is a pure-CSS solution: no JS, no runtime serialisation needed.
 * It works identically in editor (React), preview, and static export.
 */

.lms-faq-item__body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 320ms cubic-bezier(0.4, 0, 0.2, 1);
}

.lms-faq-item[open] .lms-faq-item__body {
  grid-template-rows: 1fr;
}

/*
 * is-closing: JS sets this while [open] is still present so we can animate
 * grid-template-rows back to 0fr. JS removes [open] after transitionend.
 */
.lms-faq-item.is-closing[open] .lms-faq-item__body {
  grid-template-rows: 0fr;
  /* Wait for answer text to fade before collapsing height */
  transition-delay: 180ms;
  transition-duration: 320ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/*
 * The <p> inside the wrapper must have overflow:hidden so it is clipped
 * when grid-template-rows is 0fr. We also fade it in/out for a polished feel.
 */
.lms-faq-item__body > p {
  overflow: hidden;
  margin: 0;
  padding: 0 1.25rem 1.25rem;
  color: var(--lms-text-muted);
  font-size: clamp(0.9rem, 1.1vw, 1.05rem);
  line-height: 1.7;
  overflow-wrap: anywhere;
  white-space: pre-line;
  opacity: 0;
  transform: translateY(-4px);
  transition:
    opacity 260ms cubic-bezier(0.4, 0, 0.2, 1) 60ms,
    transform 260ms cubic-bezier(0.4, 0, 0.2, 1) 60ms;
}

.lms-faq-item[open] .lms-faq-item__body > p {
  opacity: 1;
  transform: translateY(0);
}

/* [open] stays until JS finalises — must beat the open-state opacity rule. */
.lms-faq-item.is-closing[open] .lms-faq-item__body > p {
  opacity: 0;
  transform: translateY(-4px);
  transition:
    opacity 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,
    transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
}

/*
 * Chevron rotation is already handled in atoms-responsive.css
 * (.lms-faq-item[open] summary svg → rotate(180deg)).
 * We only need to ensure the transition duration is consistent.
 */
.lms-faq-item summary svg {
  transition: transform 320ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-faq-item__body {
    transition: none;
  }

  .lms-faq-item__body > p {
    transition: none;
    opacity: 1;
    transform: none;
  }

  .lms-faq-item summary svg {
    transition: none;
  }
}


/* ═══════════════════════════════════════════════════════════════════════════ */
/* 2. Smooth scroll + sticky-header offset for in-page anchor links            */
/* ═══════════════════════════════════════════════════════════════════════════ */

/*
 * Problem: scroll-behavior:smooth on .lms-page is ineffective because
 * overflow-x:clip does NOT make .lms-page a scroll container — the actual
 * scroll happens on the viewport (html/body). We add it to html here.
 *
 * The existing page-layout.css already declares:
 *   .lms-page [id] { scroll-margin-top: 84px; }
 * That value (84px) covers the 4rem (64px) min-height nav + 20px breathing
 * room, which is correct. We keep it and add a CSS custom property for
 * maintainability (other lanes can override --lms-nav-h if nav height changes).
 *
 * The initLmsHeaderScroll runtime sets the glass look but does NOT change
 * element height, so the static 84px offset remains accurate at all scroll
 * positions.
 */

/* scroll-behavior is AUTO on purpose: the initLmsSmoothScroll runtime drives a
 * custom rAF animation whose duration scales with distance (consistent feel on
 * short AND long pages). CSS `smooth` here would fight the per-frame scrollTo and
 * make it laggy. scroll-margin-top below still positions anchors under the nav for
 * any non-JS fallback jump. */
html {
  scroll-behavior: auto;
}

/*
 * Export: the exported site wraps content in .lms-page directly inside <body>.
 * The html rule above covers it. No JS assist is needed because:
 *   - All section ids are on the section elements themselves
 *   - scroll-margin-top on .lms-page [id] ensures target isn't hidden under nav
 *   - The sticky nav min-height is 64px + we give 84px margin (enough for all
 *     design languages including light theme which may render nav slightly taller)
 */

/*
 * Reinforce scroll-margin-top with a variable so it's easy to adjust.
 * We intentionally do NOT import this override into sections.css to avoid
 * touching page-layout.css. The higher specificity wins over the existing rule.
 */
:root {
  --lms-nav-h: 84px;
}

.lms-page [id] {
  scroll-margin-top: var(--lms-nav-h);
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}


/* ═══════════════════════════════════════════════════════════════════════════ */
/* 3. Legal popup — Privacy policy / Terms of service modal overlay            */
/* ═══════════════════════════════════════════════════════════════════════════ */

/*
 * Triggered by [data-lms-legal="privacy"] / [data-lms-legal="terms"] links in
 * the footer. initLmsLegalPopup (runtime/legalPopup.ts) wires the JS; this CSS
 * owns all visual styles.
 *
 * Theming: all colours, radius, and fonts come from --lms-* tokens set by
 * applyRootVars() + the active design language — so the popup matches every
 * theme automatically with zero overrides.
 *
 * Transitions respect prefers-reduced-motion.
 */

/* ── backdrop + full-screen overlay ─────────────────────────────────────── */

.lms-legal-popup {
  /* hidden by default; JS adds .lms-legal-popup--open */
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9000;
}

.lms-legal-popup--open {
  display: block;
}

.lms-legal-popup__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  animation: lms-legal-fade-in 200ms ease both;
}

/* ── panel ───────────────────────────────────────────────────────────────── */

.lms-legal-popup__panel {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(680px, calc(100vw - 2rem));
  max-height: min(80vh, 720px);
  display: flex;
  flex-direction: column;

  background: var(--lms-surface, #1a1a2e);
  color: var(--lms-text, #e2e8f0);
  border: 1px solid var(--lms-border, rgba(255, 255, 255, 0.1));
  border-radius: var(--lms-radius);
  box-shadow:
    0 8px 40px rgba(0, 0, 0, 0.4),
    0 2px 8px rgba(0, 0, 0, 0.2);

  animation: lms-legal-slide-up 250ms cubic-bezier(0.34, 1.1, 0.64, 1) both;
}

/* ── header row ─────────────────────────────────────────────────────────── */

.lms-legal-popup__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--lms-border, rgba(255, 255, 255, 0.1));
  flex-shrink: 0;
}

.lms-legal-popup__title {
  font-family: var(--lms-heading-font, inherit);
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
  margin: 0;
  color: var(--lms-text, #e2e8f0);
}

.lms-legal-popup__close {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid var(--lms-border, rgba(255, 255, 255, 0.12));
  border-radius: var(--lms-radius);
  background: transparent;
  color: var(--lms-text-muted, rgba(255, 255, 255, 0.5));
  cursor: pointer;
  transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}

.lms-legal-popup__close:hover,
.lms-legal-popup__close:focus-visible {
  background: var(--lms-primary-alpha, rgba(255, 255, 255, 0.08));
  color: var(--lms-text, #e2e8f0);
  border-color: var(--lms-primary, #6366f1);
  outline: none;
}

/* ── scrollable body ────────────────────────────────────────────────────── */

.lms-legal-popup__body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 1.5rem;
  overscroll-behavior: contain;
  /* Custom scrollbar — subtle, inherits theme */
  scrollbar-width: thin;
  scrollbar-color: var(--lms-border, rgba(255,255,255,0.15)) transparent;
}

.lms-legal-popup__body::-webkit-scrollbar {
  width: 6px;
}

.lms-legal-popup__body::-webkit-scrollbar-track {
  background: transparent;
}

.lms-legal-popup__body::-webkit-scrollbar-thumb {
  background: var(--lms-border, rgba(255, 255, 255, 0.15));
  border-radius: var(--lms-radius);
}

.lms-legal-popup__text {
  font-family: var(--lms-font-body, inherit);
  font-size: 0.9375rem;
  line-height: 1.75;
  color: var(--lms-text-muted, rgba(255, 255, 255, 0.7));
  white-space: pre-wrap;
  margin: 0;
}

/* ── animations ─────────────────────────────────────────────────────────── */

@keyframes lms-legal-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes lms-legal-slide-up {
  from {
    opacity: 0;
    transform: translate(-50%, calc(-50% + 20px));
  }
  to {
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}

/* ─── prefers-reduced-motion ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .lms-legal-popup__backdrop {
    animation: none;
  }

  .lms-legal-popup__panel {
    animation: none;
    transform: translate(-50%, -50%);
  }

  .lms-legal-popup__close {
    transition: none;
  }
}




/* page layout overrides */
#lms-page[data-skin-heading-align="left"] .header-block,
#lms-page[data-skin-heading-align="left"] .lms-section-header {
  text-align: left;
}
#lms-page[data-skin-heading-align="center"] .header-block,
#lms-page[data-skin-heading-align="center"] .lms-section-header {
  text-align: center;
}
#lms-page[data-skin-width="custom"] .container,
#lms-page[data-skin-width="custom"] .lms-container {
  max-width: var(--lms-container, var(--lms-content-max-width, 1180px));
}