/* ==========================================================================
   LUVYMIA 6.0 — Visual Design System
   --------------------------------------------------------------------------
   One stylesheet for the whole 5.0/6.0 product layer: homepage, Decision
   Centers, Local, Tools, and any page rendered through _pageshell.py.
   Injected into every page by build_global_shell.py; the Python builders emit
   semantic class names only, never inline style.

   Two facts about the host theme that shape everything below:

   1. The Shopify theme sets html{font-size:13px}, so `rem` here would mean
      13px, not 16px. Font sizes are therefore declared in px inside clamp()
      so the editorial scale is exactly what it says it is. Spacing uses rem
      deliberately (it inherits the theme's own rhythm) or px where a value
      must be exact.
   2. The theme already ships a decent editorial serif stack for headings
      (Garamond / Baskerville / Caslon) and Assistant for body. We build on
      those rather than loading a web font — this site deliberately makes
      zero third-party requests, and adding Google Fonts would be the first.

   Load order: this file is injected last in <head>, so equal-specificity
   rules win over the theme without needing !important.
   ========================================================================== */

:root {
  /* Surfaces */
  --lv-ivory:        #FAF8F5;
  --lv-white:        #FFFFFF;
  --lv-blush:        #F6ECE8;

  /* Ink */
  --lv-ink:          #172033;
  --lv-ink-soft:     #6F6863;

  /* Accent — used sparingly: rules, eyebrows, link underlines. */
  --lv-rose:         #C88779;
  --lv-champagne:    #C6A77D;

  --lv-border:       rgba(23, 32, 51, .10);
  --lv-border-strong:rgba(23, 32, 51, .18);

  /* Layout */
  --lv-maxw:         1240px;
  --lv-maxw-wide:    1440px;
  --lv-maxw-text:    680px;
  --lv-maxw-page:    1000px;
  --lv-gutter:       clamp(20px, 5vw, 64px);

  /* Vertical rhythm */
  --lv-section-y:    clamp(64px, 9vw, 132px);
  --lv-section-y-sm: clamp(48px, 6vw, 88px);

  --lv-serif: Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text",
              "Times New Roman", serif;
  --lv-sans:  Assistant, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
              "Helvetica Neue", Arial, sans-serif;

  --lv-ease: cubic-bezier(.22, .61, .36, 1);
}

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */

.lv6 {
  background: var(--lv-white);
  color: var(--lv-ink);
}

.lv6 ::selection { background: var(--lv-blush); color: var(--lv-ink); }

.lv-shell {
  width: 100%;
  max-width: var(--lv-maxw);
  margin-inline: auto;
  padding-inline: var(--lv-gutter);
}
.lv-shell--wide { max-width: var(--lv-maxw-wide); }
.lv-shell--text { max-width: var(--lv-maxw-text); }
/* Interior reading pages. Narrower than the homepage's shell on purpose:
   a single left-aligned column inside 1240px leaves a dead half-page to its
   right, which reads as a layout that failed rather than as editorial
   restraint. */
.lv-shell--page { max-width: var(--lv-maxw-page); }

/* Section surfaces. Rhythm comes from alternating tone, not from borders. */
.lv-section       { padding-block: var(--lv-section-y); background: var(--lv-white); }
.lv-section--ivory{ background: var(--lv-ivory); }
.lv-section--blush{ background: var(--lv-blush); }
.lv-section--tight{ padding-block: var(--lv-section-y-sm); }

/* --------------------------------------------------------------------------
   Typography
   -------------------------------------------------------------------------- */

.lv-eyebrow {
  font-family: var(--lv-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--lv-ink-soft);
  margin: 0 0 20px;
}
.lv-eyebrow--accent { color: var(--lv-rose); }

.lv-display {
  font-family: var(--lv-serif);
  font-size: clamp(42px, 5.6vw, 76px);
  line-height: 1.04;
  letter-spacing: -.015em;
  font-weight: 400;
  color: var(--lv-ink);
  margin: 0 0 24px;
}
.lv-display .lv-display__line { display: block; }

.lv-h2 {
  font-family: var(--lv-serif);
  font-size: clamp(32px, 3.6vw, 52px);
  line-height: 1.1;
  letter-spacing: -.01em;
  font-weight: 400;
  color: var(--lv-ink);
  margin: 0 0 20px;
}

.lv-h3 {
  font-family: var(--lv-serif);
  font-size: clamp(21px, 1.7vw, 27px);
  line-height: 1.22;
  font-weight: 400;
  color: var(--lv-ink);
  margin: 0 0 10px;
}

.lv-lead {
  font-family: var(--lv-sans);
  font-size: clamp(17px, 1.35vw, 19px);
  line-height: 1.72;
  color: var(--lv-ink-soft);
  margin: 0 0 32px;
  max-width: 58ch;
}

.lv-body {
  font-family: var(--lv-sans);
  font-size: 17px;
  line-height: 1.75;
  color: var(--lv-ink-soft);
  margin: 0 0 18px;
  max-width: 64ch;
}

.lv-meta {
  font-family: var(--lv-sans);
  font-size: 13px;
  letter-spacing: .04em;
  color: var(--lv-ink-soft);
  margin: 0;
}

/* --------------------------------------------------------------------------
   Links & buttons
   -------------------------------------------------------------------------- */

.lv-link {
  font-family: var(--lv-sans);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .02em;
  color: var(--lv-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--lv-border-strong);
  padding-bottom: 3px;
  transition: border-color .25s var(--lv-ease), color .25s var(--lv-ease);
}
.lv-link:hover { color: var(--lv-rose); border-bottom-color: var(--lv-rose); }

.lv-link__arrow { display: inline-block; transition: transform .25s var(--lv-ease); }
.lv-link:hover .lv-link__arrow { transform: translateX(4px); }

.lv-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--lv-sans);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .03em;
  padding: 16px 34px;
  border-radius: 2px;
  text-decoration: none;
  border: 1px solid transparent;
  transition: background-color .25s var(--lv-ease), color .25s var(--lv-ease),
              border-color .25s var(--lv-ease);
}
.lv-btn--primary {
  background: var(--lv-ink);
  color: var(--lv-white);
}
.lv-btn--primary:hover { background: #24304a; color: var(--lv-white); }
.lv-btn--ghost {
  background: transparent;
  color: var(--lv-ink);
  border-color: var(--lv-border-strong);
}
.lv-btn--ghost:hover { border-color: var(--lv-ink); background: rgba(23,32,51,.03); }

.lv-btn-row { display: flex; flex-wrap: wrap; gap: 14px; }

/* --------------------------------------------------------------------------
   Hero — 55/45 split, image is half the layout, not an afterthought
   -------------------------------------------------------------------------- */

.lv-hero {
  display: grid;
  grid-template-columns: 1.08fr .92fr;
  align-items: stretch;
  background: var(--lv-white);
  min-height: clamp(620px, 74vh, 780px);
}

.lv-hero__inner {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(56px, 7vw, 104px) clamp(24px, 5vw, 88px);
  max-width: 760px;
  margin-left: auto;
  width: 100%;
}

.lv-hero__media { position: relative; overflow: hidden; background: var(--lv-blush); }
.lv-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
  display: block;
}

.lv-hero .lv-lead { margin-bottom: 36px; }

/* --------------------------------------------------------------------------
   Trust strip — typography only, no boxes
   -------------------------------------------------------------------------- */

.lv-trust {
  border-top: 1px solid var(--lv-border);
  border-bottom: 1px solid var(--lv-border);
  background: var(--lv-ivory);
}
.lv-trust__row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(16px, 3vw, 40px);
  padding-block: clamp(22px, 2.6vw, 34px);
}
.lv-trust__item {
  display: flex;
  align-items: center;
  gap: 11px;
  font-family: var(--lv-sans);
  font-size: 14px;
  letter-spacing: .02em;
  color: var(--lv-ink);
}
.lv-trust__mark {
  flex: none;
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--lv-champagne);
}

/* --------------------------------------------------------------------------
   Feature — big media beside content, reversible
   -------------------------------------------------------------------------- */

.lv-feature {
  display: grid;
  grid-template-columns: 1.12fr .88fr;
  gap: clamp(32px, 5vw, 76px);
  align-items: center;
}
.lv-feature--reverse .lv-feature__media { order: 2; }
.lv-feature--reverse .lv-feature__body  { order: 1; }

.lv-feature__media {
  position: relative;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border-radius: 4px;
  background: var(--lv-blush);
}
.lv-feature__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
/* Portrait crop, for a feature whose text column runs long. It keeps the
   image the same visual weight as the copy instead of leaving it floating in
   the middle of its cell, and on photographs that carry decorative text near
   their left and right edges it crops that text out rather than slicing it
   mid-word. */
.lv-feature--tall .lv-feature__media { aspect-ratio: 4 / 5; }
.lv-feature__body {
  max-width: 520px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* Focal points. Declared per image in data/site-images.json rather than
   guessed, because "centre" slices anything the photograph happens to carry
   at its edges. */
.lv-focus-left   { object-position: left center !important; }
.lv-focus-right  { object-position: right center !important; }
.lv-focus-top    { object-position: center top !important; }
.lv-focus-bottom { object-position: center bottom !important; }
.lv-focus-upper  { object-position: center 35% !important; }
.lv-focus-right-upper { object-position: 68% 32% !important; }

/* --------------------------------------------------------------------------
   Editorial list — numbered, no bullets, no boxes
   -------------------------------------------------------------------------- */

.lv-editorial-list { list-style: none; margin: 0; padding: 0; max-width: 860px; }

.lv-editorial-list__item { border-top: 1px solid var(--lv-border); }
.lv-editorial-list__item:last-child { border-bottom: 1px solid var(--lv-border); }

.lv-editorial-list__link {
  display: grid;
  grid-template-columns: 46px 1fr 22px;
  align-items: baseline;
  gap: 8px;
  padding: 22px 0;
  text-decoration: none;
  color: inherit;
  transition: transform .28s var(--lv-ease);
}
.lv-editorial-list__link:hover { transform: translateX(6px); }

.lv-editorial-list__num {
  font-family: var(--lv-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .12em;
  color: var(--lv-champagne);
}
.lv-editorial-list__title {
  font-family: var(--lv-serif);
  font-size: clamp(19px, 1.5vw, 23px);
  line-height: 1.3;
  color: var(--lv-ink);
  display: block;
  margin-bottom: 6px;
}
.lv-editorial-list__link:hover .lv-editorial-list__title { color: var(--lv-rose); }
.lv-editorial-list__context {
  font-family: var(--lv-sans);
  font-size: 13px;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--lv-ink-soft);
}
.lv-editorial-list__arrow {
  font-family: var(--lv-sans);
  color: var(--lv-ink-soft);
  justify-self: end;
  transition: transform .28s var(--lv-ease), color .28s var(--lv-ease);
}
.lv-editorial-list__link:hover .lv-editorial-list__arrow {
  color: var(--lv-rose); transform: translateX(3px);
}

/* --------------------------------------------------------------------------
   Cards — image-led, no heavy frames
   -------------------------------------------------------------------------- */

.lv-grid { display: grid; gap: clamp(24px, 2.6vw, 38px); }
.lv-grid--3 { grid-template-columns: repeat(3, 1fr); }
.lv-grid--2 { grid-template-columns: repeat(2, 1fr); }

.lv-card {
  display: flex;
  flex-direction: column;
  background: var(--lv-white);
  border-radius: 3px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  box-shadow: 0 1px 2px rgba(23,32,51,.04);
  transition: box-shadow .3s var(--lv-ease), transform .3s var(--lv-ease);
}
.lv-card:hover {
  box-shadow: 0 14px 34px rgba(23,32,51,.10);
  transform: translateY(-3px);
}
.lv-card__media {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--lv-blush);
}
.lv-card__media img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .6s var(--lv-ease);
}
.lv-card:hover .lv-card__media img { transform: scale(1.03); }
.lv-card__body { padding: 26px 28px 30px; display: flex; flex-direction: column; flex: 1; }
.lv-card__body .lv-h3 { margin-bottom: 8px; }
.lv-card__text {
  font-family: var(--lv-sans);
  font-size: 15px;
  line-height: 1.65;
  color: var(--lv-ink-soft);
  margin: 0 0 18px;
  flex: 1;
}
.lv-card__cue {
  font-family: var(--lv-sans);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .03em;
  color: var(--lv-ink);
}
.lv-card:hover .lv-card__cue { color: var(--lv-rose); }

/* Decision rows — used inside a feature, not as standalone boxes. */
.lv-decisions { list-style: none; margin: 28px 0 0; padding: 0; }
.lv-decisions__item { border-top: 1px solid var(--lv-border); }
.lv-decisions__item:last-child { border-bottom: 1px solid var(--lv-border); }
.lv-decisions__link {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 16px; padding: 18px 0; text-decoration: none; color: inherit;
  transition: padding-left .28s var(--lv-ease);
}
.lv-decisions__link:hover { padding-left: 6px; }
.lv-decisions__name {
  font-family: var(--lv-serif); font-size: 21px; color: var(--lv-ink);
}
.lv-decisions__link:hover .lv-decisions__name { color: var(--lv-rose); }
.lv-decisions__meta {
  font-family: var(--lv-sans); font-size: 12px; letter-spacing: .05em;
  text-transform: uppercase; color: var(--lv-ink-soft); white-space: nowrap;
}

/* --------------------------------------------------------------------------
   Tiles — two large feature blocks
   -------------------------------------------------------------------------- */

.lv-tile { display: block; text-decoration: none; color: inherit; }
.lv-tile__media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border-radius: 4px;
  background: var(--lv-blush);
  margin-bottom: 22px;
}
.lv-tile__media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .6s var(--lv-ease);
}
.lv-tile:hover .lv-tile__media img { transform: scale(1.025); }
.lv-tile .lv-h3 { margin-bottom: 8px; }
.lv-tile__text {
  font-family: var(--lv-sans); font-size: 15px; line-height: 1.65;
  color: var(--lv-ink-soft); margin: 0 0 14px; max-width: 46ch;
}

/* --------------------------------------------------------------------------
   Brand statement — pure whitespace moment
   -------------------------------------------------------------------------- */

.lv-statement {
  text-align: center;
  padding-block: clamp(86px, 12vw, 168px);
  background: var(--lv-ivory);
}
.lv-statement__rule {
  width: 40px; height: 1px; background: var(--lv-champagne);
  margin: 0 auto 40px;
}
.lv-statement__line {
  font-family: var(--lv-serif);
  font-size: clamp(30px, 3.6vw, 50px);
  line-height: 1.22;
  color: var(--lv-ink);
  margin: 0 auto 22px;
  max-width: 18ch;
}
.lv-statement__sub {
  font-family: var(--lv-sans);
  font-size: 16px;
  letter-spacing: .03em;
  color: var(--lv-ink-soft);
  margin: 0;
}

/* --------------------------------------------------------------------------
   Section headers
   -------------------------------------------------------------------------- */

.lv-section-head { max-width: 620px; margin-bottom: clamp(36px, 4vw, 60px); }
.lv-section-head--center { margin-inline: auto; text-align: center; }
.lv-section-head .lv-lead { margin-bottom: 0; }

.lv-section-foot { margin-top: clamp(28px, 3vw, 44px); }

/* --------------------------------------------------------------------------
   Interior page shell (Decision Centers, Local, Tools)
   -------------------------------------------------------------------------- */

.lv-page { width: 100%; max-width: none; padding: 0; }
.lv-page-body { max-width: none; padding: 0; }
/* The theme's .rte adds its own typography; inside a 6.0 page our own
   classes own it. */
.lv-page-body > * { max-width: none; }

.lv-page-hero {
  background: var(--lv-ivory);
  border-bottom: 1px solid var(--lv-border);
  padding-block: clamp(48px, 7vw, 96px);
}
.lv-page-hero__inner { max-width: var(--lv-maxw-page); margin-inline: auto; padding-inline: var(--lv-gutter); }
.lv-page-hero .lv-display { font-size: clamp(36px, 4.4vw, 62px); margin-bottom: 18px; }
.lv-page-hero .lv-lead { margin-bottom: 0; }

.lv-crumb {
  font-family: var(--lv-sans);
  font-size: 13px;
  letter-spacing: .03em;
  color: var(--lv-ink-soft);
  margin: 0 0 22px;
}
.lv-crumb a { color: var(--lv-ink-soft); text-decoration: none; border-bottom: 1px solid transparent; }
.lv-crumb a:hover { color: var(--lv-ink); border-bottom-color: var(--lv-border-strong); }
.lv-crumb__sep { padding: 0 8px; opacity: .5; }

/* Journey steps on a Decision Center */
.lv-journey { list-style: none; margin: 0; padding: 0; max-width: 860px; }
.lv-journey__item {
  display: grid;
  grid-template-columns: 54px 1fr;
  gap: 10px;
  align-items: baseline;
  padding: 20px 0;
  border-top: 1px solid var(--lv-border);
}
.lv-journey__item:last-child { border-bottom: 1px solid var(--lv-border); }
.lv-journey__num {
  font-family: var(--lv-sans); font-size: 12px; font-weight: 600;
  letter-spacing: .12em; color: var(--lv-champagne);
}
.lv-journey__label {
  font-family: var(--lv-serif); font-size: clamp(18px, 1.4vw, 22px); color: var(--lv-ink);
  text-decoration: none;
}
a.lv-journey__label { border-bottom: 1px solid var(--lv-border-strong); padding-bottom: 2px; }
a.lv-journey__label:hover { color: var(--lv-rose); border-bottom-color: var(--lv-rose); }
.lv-journey__item--pending .lv-journey__label { color: var(--lv-ink-soft); opacity: .62; }
.lv-journey__pending {
  font-family: var(--lv-sans); font-size: 12px; letter-spacing: .05em;
  text-transform: uppercase; color: var(--lv-ink-soft); opacity: .7; margin-left: 10px;
}

/* Aside / note panel — replaces the old border-left blocks */
.lv-note {
  background: var(--lv-ivory);
  border-left: 2px solid var(--lv-champagne);
  padding: clamp(24px, 3vw, 34px) clamp(22px, 3vw, 38px);
  border-radius: 0 3px 3px 0;
}
.lv-note p { font-family: var(--lv-sans); font-size: 16px; line-height: 1.75; color: var(--lv-ink-soft); margin: 0 0 14px; }
.lv-note p:last-child { margin-bottom: 0; }
.lv-note code {
  font-size: 13px; background: rgba(23,32,51,.05); padding: 2px 6px; border-radius: 2px;
  color: var(--lv-ink); word-break: break-word;
}

/* Tool entries */
.lv-tool {
  display: block; text-decoration: none; color: inherit;
  padding: 26px 0; border-top: 1px solid var(--lv-border);
  transition: padding-left .28s var(--lv-ease);
}
.lv-tool:last-of-type { border-bottom: 1px solid var(--lv-border); }
.lv-tool:hover { padding-left: 6px; }
.lv-tool:hover .lv-h3 { color: var(--lv-rose); }

/* --------------------------------------------------------------------------
   Article pages
   --------------------------------------------------------------------------
   The 200 imported articles keep the theme's own markup — rewriting their
   HTML would mean touching every indexed page for cosmetic reasons — so the
   design system reaches them through their existing class names instead.
   Titles were rendering in the theme's mono-ish display face, which is the
   single loudest mismatch once everything around them is Garamond.
   -------------------------------------------------------------------------- */

.lv6 .article-template__title {
  font-family: var(--lv-serif);
  font-size: clamp(32px, 3.6vw, 52px);
  line-height: 1.12;
  letter-spacing: -.01em;
  font-weight: 400;
  color: var(--lv-ink);
  margin: 0 0 18px;
}

.lv6 .article-template__hero-container { margin-bottom: clamp(28px, 3vw, 44px); }

.lv6 .article-template .rte,
.lv6 .article-template__content {
  font-family: var(--lv-sans);
  font-size: 17.5px;
  line-height: 1.78;
  color: #2A3242;
}
.lv6 .article-template .rte h2 {
  font-family: var(--lv-serif);
  font-size: clamp(24px, 2.2vw, 32px);
  line-height: 1.2;
  font-weight: 400;
  color: var(--lv-ink);
  margin: 2.2em 0 .6em;
}
.lv6 .article-template .rte h3 {
  font-family: var(--lv-serif);
  font-size: clamp(20px, 1.6vw, 25px);
  font-weight: 400;
  color: var(--lv-ink);
  margin: 1.8em 0 .5em;
}
.lv6 .article-template .rte p { margin: 0 0 1.15em; }
.lv6 .article-template .rte a { color: var(--lv-ink); text-decoration-color: var(--lv-border-strong); }
.lv6 .article-template .rte a:hover { color: var(--lv-rose); }

/* Furniture the pipeline adds to articles: breadcrumb, updated line,
   applicability badge, sources. */
.lv6 .lv-breadcrumb { font-family: var(--lv-sans); font-size: 13px; color: var(--lv-ink-soft); }
.lv6 .lv-applicability,
.lv6 .lv-furniture { font-family: var(--lv-sans); }
.lv6 .lv-sources {
  border-top: 1px solid var(--lv-border);
  font-family: var(--lv-sans);
}
.lv6 .lv-sources h2 {
  font-family: var(--lv-sans);
  font-size: 11.5px !important;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--lv-ink-soft);
}

/* --------------------------------------------------------------------------
   Header & footer refinements (hooks added by build_global_shell.py)
   -------------------------------------------------------------------------- */

.lv6 .header {
  padding-top: clamp(14px, 1.6vw, 22px);
  padding-bottom: clamp(14px, 1.6vw, 22px);
  border-bottom: 1px solid var(--lv-border);
}
.lv6 .header__heading-link { padding: 0; }

.lv-wordmark { display: flex; flex-direction: column; line-height: 1.05; }
.lv-wordmark__name {
  font-family: var(--lv-serif);
  font-size: clamp(22px, 2vw, 27px);
  letter-spacing: .16em;
  color: var(--lv-ink);
  font-weight: 400;
}
.lv-wordmark__sub {
  font-family: var(--lv-sans);
  font-size: 9.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--lv-ink-soft);
  margin-top: 6px;
  opacity: .85;
}

.lv6 .header__menu-item {
  font-family: var(--lv-sans);
  font-size: 14.5px;
  letter-spacing: .04em;
  color: var(--lv-ink);
  padding-inline: clamp(8px, .9vw, 15px);
  transition: color .22s var(--lv-ease);
}
.lv6 .header__menu-item:hover { color: var(--lv-rose); text-decoration: none; }
.lv6 .header__inline-menu .list-menu--inline { gap: clamp(2px, .5vw, 10px); }

.lv6 .announcement-bar__message {
  font-family: var(--lv-sans);
  font-size: 12.5px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--lv-ink-soft);
  padding-block: 11px;
}
.lv6 .utility-bar { background: var(--lv-ivory); border-bottom: 1px solid var(--lv-border); }

/* Footer */
.lv6 .footer {
  background: var(--lv-ink);
  color: rgba(255,255,255,.78);
  border-top: none;
  padding-block: clamp(56px, 7vw, 92px) clamp(28px, 3vw, 40px);
}
.lv6 .footer * { color: inherit; }
.lv6 .footer__content-top { padding-bottom: clamp(36px, 4vw, 56px); }
.lv6 .footer-block__heading {
  font-family: var(--lv-sans);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255,255,255,.5);
  margin-bottom: 18px;
}
.lv6 .footer-block__details-content a,
.lv6 .footer .list-menu__item--link {
  font-family: var(--lv-sans);
  font-size: 14.5px;
  color: rgba(255,255,255,.78);
  text-decoration: none;
  padding-block: 7px;
  transition: color .22s var(--lv-ease);
}
.lv6 .footer-block__details-content a:hover,
.lv6 .footer .list-menu__item--link:hover { color: var(--lv-white); }

.lv-footer-brand { max-width: 300px; }
.lv-footer-brand .lv-wordmark__name { color: var(--lv-white); }
.lv-footer-brand .lv-wordmark__sub { color: rgba(255,255,255,.5); }
.lv-footer-brand__line {
  font-family: var(--lv-sans);
  font-size: 14.5px;
  line-height: 1.7;
  color: rgba(255,255,255,.6);
  margin: 20px 0 0;
}

.lv6 .footer__content-bottom {
  border-top: 1px solid rgba(255,255,255,.14);
  padding-top: clamp(20px, 2vw, 28px);
}
.lv6 .footer .copyright__content,
.lv6 .footer .policies a { font-size: 12.5px; color: rgba(255,255,255,.5); }

/* Newsletter block in the dark footer */
.lv6 .newsletter__wrapper { background: var(--lv-ivory); }
.lv6 .newsletter__wrapper h2 {
  font-family: var(--lv-serif);
  font-size: clamp(26px, 2.6vw, 36px);
  color: var(--lv-ink);
  letter-spacing: -.005em;
}
.lv6 .newsletter__subheading p {
  font-family: var(--lv-sans); font-size: 16px; color: var(--lv-ink-soft);
}

/* The signup form build_global_shell.py writes into what was, until 6.0's
   marketing pass, an empty <div> — neutralize_commerce.py had stripped the
   original form outright because it posted to a dead Shopify endpoint. */
.lv-subscribe { max-width: 420px; margin: 28px auto 0; }
.lv-subscribe__row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.lv-subscribe__input {
  flex: 1 1 220px;
  min-width: 0;
  font-family: var(--lv-sans);
  font-size: 15px;
  padding: 13px 16px;
  border: 1px solid var(--lv-border-strong);
  border-radius: 2px;
  background: var(--lv-white);
  color: var(--lv-ink);
}
.lv-subscribe__input:focus {
  outline: none;
  border-color: var(--lv-ink);
}
.lv-subscribe__btn {
  flex: 0 0 auto;
  font-family: var(--lv-sans);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .02em;
  padding: 13px 26px;
  border: 1px solid var(--lv-ink);
  border-radius: 2px;
  background: var(--lv-ink);
  color: var(--lv-white);
  cursor: pointer;
  transition: background-color .25s var(--lv-ease);
}
.lv-subscribe__btn:hover { background: #24304a; }
.lv-subscribe__btn:disabled { opacity: .6; cursor: default; }
.lv-subscribe__msg {
  margin: 10px 0 0;
  font-family: var(--lv-sans);
  font-size: 13.5px;
  color: var(--lv-ink-soft);
}
.lv-subscribe__msg--error { color: var(--lv-rose); }
.lv-subscribe__msg--ok { color: #3B6E52; }
/* Honeypot: present in the DOM for scrapers that fill every field, invisible
   and unreachable for a person using a mouse, keyboard, or screen reader. */
.lv-subscribe__hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px; height: 1px;
  overflow: hidden;
}

/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */

/* Between the drawer breakpoint and full desktop there is not room for
   seven real words plus the wordmark and the utility icons, and the menu
   wrapped onto a second line. Tighten the type, and drop "Home" — the
   wordmark beside it is already a link to the homepage. */
@media (max-width: 1240px) and (min-width: 861px) {
  .lv6 .header__menu-item {
    font-size: 12.5px;
    letter-spacing: .01em;
    padding-inline: 5px;
  }
  .lv6 .header__inline-menu > ul > li:first-child { display: none; }
}

@media (max-width: 1100px) {
  .lv-hero { grid-template-columns: 1fr .88fr; min-height: 560px; }
  .lv-feature { grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 48px); }
  .lv-grid--3 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 860px) {
  .lv-hero {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .lv-hero__inner {
    max-width: none;
    margin-left: 0;
    padding: clamp(44px, 8vw, 64px) var(--lv-gutter) clamp(32px, 5vw, 44px);
  }
  .lv-hero__media { aspect-ratio: 16 / 10; }
  .lv-hero__media img { object-position: center 45%; }

  .lv-feature,
  .lv-feature--reverse { grid-template-columns: 1fr; }
  .lv-feature--reverse .lv-feature__media,
  .lv-feature--reverse .lv-feature__body { order: initial; }
  .lv-feature__media { aspect-ratio: 16 / 10; }
  .lv-feature__body { max-width: none; }

  .lv-grid--3, .lv-grid--2 { grid-template-columns: 1fr; }

  .lv-trust__row { grid-template-columns: repeat(2, 1fr); gap: 16px 20px; }

  .lv-btn-row { flex-direction: column; align-items: stretch; }
  .lv-btn { width: 100%; }

  .lv-editorial-list__link { grid-template-columns: 38px 1fr 18px; padding: 18px 0; }

  .lv-page-hero { padding-block: clamp(36px, 8vw, 56px); }
}

@media (max-width: 520px) {
  .lv6 .header .lv-wordmark__sub { display: none; }
  .lv-trust__row { grid-template-columns: 1fr; gap: 12px; }
  .lv-card__body { padding: 22px 22px 26px; }
  .lv-decisions__link { flex-direction: column; gap: 6px; }
  .lv-journey__item { grid-template-columns: 40px 1fr; }
}

/* --------------------------------------------------------------------------
   Checklist tool (build_checklist_tool.py) — /tools/wedding-checklist
   -------------------------------------------------------------------------- */

.lv-studio-tool-wrap {
  background: var(--lv-ivory);
  border: 1px solid var(--lv-border);
  border-radius: 4px;
  padding: clamp(24px, 4vw, 44px);
  margin: 0 0 32px;
}
.lv-checklist-tool__input-row {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.lv-checklist-tool__label {
  font-family: var(--lv-sans);
  font-size: 14px;
  font-weight: 600;
  color: var(--lv-ink);
}
.lv-checklist-tool__date {
  font-family: var(--lv-sans);
  font-size: 16px;
  padding: 11px 14px;
  border: 1px solid var(--lv-border-strong);
  border-radius: 2px;
  background: var(--lv-white);
  color: var(--lv-ink);
}
.lv-checklist-tool__date:focus { outline: none; border-color: var(--lv-ink); }

.lv-checklist-tool__countdown {
  font-family: var(--lv-serif);
  font-size: clamp(24px, 2.6vw, 34px);
  color: var(--lv-rose);
  margin: 28px 0 4px;
}
.lv-checklist-tool__empty {
  font-family: var(--lv-sans);
  font-size: 14px;
  color: var(--lv-ink-soft);
  margin: 20px 0 0;
}

.lv-checklist { list-style: none; margin: 24px 0 0; padding: 0; }
.lv-checklist__item {
  padding: 16px 0;
  border-top: 1px solid var(--lv-border);
  display: grid;
  grid-template-columns: 130px 1fr;
  gap: 4px 18px;
}
.lv-checklist__item:last-child { border-bottom: 1px solid var(--lv-border); }
.lv-checklist__tier {
  font-family: var(--lv-sans);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--lv-ink-soft);
  padding-top: 3px;
}
.lv-checklist__title {
  font-family: var(--lv-sans);
  font-size: 16px;
  font-weight: 600;
  color: var(--lv-ink);
}
.lv-checklist__title a { color: inherit; text-decoration-color: var(--lv-border-strong); }
.lv-checklist__title a:hover { color: var(--lv-rose); }
.lv-checklist__note {
  grid-column: 2;
  font-family: var(--lv-sans);
  font-size: 14px;
  color: var(--lv-ink-soft);
  margin: 4px 0 0;
}
/* The window that's actually current gets the accent; everything else stays
   quiet so the one thing worth acting on this week doesn't have to compete
   with eleven other rows for attention. */
.lv-checklist__item--soon { background: var(--lv-blush); margin-inline: -20px; padding-inline: 20px; border-radius: 3px; border-top-color: transparent; }
.lv-checklist__item--soon .lv-checklist__tier { color: var(--lv-rose); }
.lv-checklist__item--later { opacity: .55; }
.lv-checklist__item--done-window { opacity: .4; }

.lv-checklist-tool__catchall { margin: 0 0 32px; }
.lv-checklist-tool__subscribe {
  margin: 44px 0 0;
  padding: 32px clamp(24px, 4vw, 44px);
  background: var(--lv-blush);
  border-radius: 4px;
  text-align: center;
}

@media (max-width: 520px) {
  .lv-checklist__item { grid-template-columns: 1fr; }
  .lv-checklist__note { grid-column: 1; }
}

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

/* --------------------------------------------------------------------------
   Free Wedding Studio — shared components across every tool builder
   (build_calc_tools.py, build_checklist_tool.py, build_timeline_tool.py,
   build_venue_comparison_tool.py, build_invitation_generator.py).
   .lv-studio-tool-wrap (above) is the one shared container box; everything
   below it is either generic form-field styling reused by every engine, or
   one block per engine.
   -------------------------------------------------------------------------- */

.lv-featured-tools {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 18px;
  margin: 0 0 8px;
}
.lv-featured-tool {
  display: block; text-decoration: none; color: inherit;
  padding: 26px 24px; background: var(--lv-ivory); border: 1px solid var(--lv-border);
  border-radius: 4px; transition: transform .28s var(--lv-ease), border-color .28s var(--lv-ease);
}
.lv-featured-tool:hover { transform: translateY(-3px); border-color: var(--lv-rose); }
.lv-featured-tool:hover .lv-h3 { color: var(--lv-rose); }
.lv-featured-tool .lv-card__text { min-height: 42px; }

.lv-studio-badge {
  font-family: var(--lv-sans);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--lv-rose);
  margin: 0 0 16px;
}

.lv-field { display: block; margin: 0 0 16px; }
.lv-field__label {
  display: block;
  font-family: var(--lv-sans);
  font-size: 13px;
  font-weight: 600;
  color: var(--lv-ink);
  margin: 0 0 6px;
}
.lv-field__input {
  width: 100%;
  font-family: var(--lv-sans);
  font-size: 15px;
  padding: 11px 14px;
  border: 1px solid var(--lv-border-strong);
  border-radius: 2px;
  background: var(--lv-white);
  color: var(--lv-ink);
  box-sizing: border-box;
}
.lv-field__input:focus { outline: none; border-color: var(--lv-ink); }
textarea.lv-field__input { resize: vertical; min-height: 44px; }

/* Tool-info footer: how-to / assumptions / FAQ / related guides
   (_pageshell.tool_info_html), shared by every tool page. */
.lv-tool-info { margin: 40px 0 0; }
.lv-tool-info h2 { margin: 0 0 12px; }
.lv-faq-item { margin: 0 0 20px; }
.lv-faq-item h3 { font-size: 17px; margin: 0 0 6px; }
.lv-related-list { list-style: none; padding: 0; margin: 0; }
.lv-related-list li { padding: 10px 0; border-top: 1px solid var(--lv-border); }
.lv-related-list a { color: var(--lv-ink); text-decoration-color: var(--lv-border-strong); }
.lv-related-list a:hover { color: var(--lv-rose); }
.lv-tool-verified { font-family: var(--lv-sans); font-size: 13px; color: var(--lv-ink-soft); margin: 24px 0 0; }

/* "Free tool for this guide" — inserted into an article body when its
   front matter declares related_tools (build_new_articles.py). */
.lv-related-tool {
  margin: 36px 0;
  padding: 24px 28px;
  background: var(--lv-blush);
  border-radius: 4px;
}
.lv-related-tool__link { display: block; text-decoration: none; color: inherit; }
.lv-related-tool__link h3 { margin: 4px 0 8px; }
.lv-related-tool__link:hover h3 { color: var(--lv-rose); }
.lv-related-tool__note { font-weight: 400; color: var(--lv-ink-soft); font-size: 14px; margin-left: 4px; }

/* --------------------------------------------------------------------------
   Calculator Engine (lv-calc-engine.js)
   -------------------------------------------------------------------------- */
.lv-calc__total-row { max-width: 360px; margin: 0 0 8px; }
.lv-calc__total-input { font-size: 22px; font-family: var(--lv-serif); }
.lv-calc__hint { font-family: var(--lv-sans); font-size: 14px; color: var(--lv-ink-soft); margin: 0 0 20px; max-width: 560px; }
.lv-calc__allocated-note { font-family: var(--lv-sans); font-size: 14px; font-weight: 600; color: var(--lv-ink); margin: 0 0 16px; }
.lv-calc__allocated-note--over { color: var(--lv-rose); }
.lv-calc__scroll { overflow-x: auto; }
.lv-calc__table { width: 100%; min-width: 560px; border-collapse: collapse; font-family: var(--lv-sans); font-size: 14.5px; }
.lv-calc__table th { text-align: left; font-size: 12px; letter-spacing: .04em; text-transform: uppercase; color: var(--lv-ink-soft); padding: 0 8px 10px; }
.lv-calc__table td { padding: 8px; border-top: 1px solid var(--lv-border); vertical-align: middle; }
.lv-calc__cat { font-weight: 600; color: var(--lv-ink); }
.lv-calc__pct, .lv-calc__actual {
  width: 100%; font-family: var(--lv-sans); font-size: 14.5px; padding: 8px 10px;
  border: 1px solid var(--lv-border-strong); border-radius: 2px; background: var(--lv-white); box-sizing: border-box;
}
.lv-calc__allocated { font-weight: 600; }
.lv-calc__remaining--over { color: var(--lv-rose); font-weight: 600; }
.lv-calc__totals { display: flex; flex-wrap: wrap; gap: 24px; margin: 24px 0 20px; padding-top: 16px; border-top: 1px solid var(--lv-border-strong); }
.lv-calc__totals-item { font-family: var(--lv-sans); }
.lv-calc__totals-item span { display: block; font-size: 12px; color: var(--lv-ink-soft); text-transform: uppercase; letter-spacing: .04em; }
.lv-calc__totals-item strong { font-family: var(--lv-serif); font-size: 22px; color: var(--lv-ink); }
.lv-calc__grid-inputs { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 16px; margin: 0 0 20px; }
.lv-calc__mix-note { font-family: var(--lv-sans); font-size: 13.5px; color: var(--lv-ink-soft); margin: 0 0 12px; }
.lv-calc__suggested { color: var(--lv-ink-soft); white-space: nowrap; }

/* --------------------------------------------------------------------------
   Checklist Engine additions — checkbox + actions (lv-checklist-engine.js).
   Item/tier/countdown styling itself is the pre-existing block above.
   -------------------------------------------------------------------------- */
.lv-checklist__item { align-items: start; }
.lv-checklist__check { display: inline-flex; align-items: center; cursor: pointer; grid-row: 1 / span 2; }
.lv-checklist__check input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.lv-checklist__box {
  width: 20px; height: 20px; border: 1.5px solid var(--lv-border-strong); border-radius: 3px;
  background: var(--lv-white); flex: 0 0 auto; position: relative;
}
.lv-checklist__check input:checked + .lv-checklist__box { background: var(--lv-ink); border-color: var(--lv-ink); }
.lv-checklist__check input:checked + .lv-checklist__box::after {
  content: ""; position: absolute; left: 6px; top: 2px; width: 5px; height: 10px;
  border: solid var(--lv-white); border-width: 0 2px 2px 0; transform: rotate(45deg);
}
.lv-checklist__item { grid-template-columns: 24px 130px 1fr; }
.lv-checklist__body { display: contents; }
.lv-checklist__note { grid-column: 2 / span 2; }
.lv-checklist-tool__actions { display: flex; gap: 14px; flex-wrap: wrap; margin: 28px 0 0; }
.lv-checklist__section { margin: 0 0 32px; }
.lv-checklist__section h3 { margin: 0 0 8px; }

@media (max-width: 520px) {
  .lv-checklist__item { grid-template-columns: 24px 1fr; }
  .lv-checklist__tier { grid-column: 2; }
  .lv-checklist__title { grid-column: 2; }
  .lv-checklist__note { grid-column: 2; }
}

/* --------------------------------------------------------------------------
   Timeline Builder (lv-timeline-tool.js)
   -------------------------------------------------------------------------- */
.lv-timeline__list { list-style: none; margin: 0; padding: 0; }
.lv-timeline__row {
  display: grid; grid-template-columns: 24px 110px 1fr 130px 32px; gap: 10px; align-items: center;
  padding: 10px 0; border-top: 1px solid var(--lv-border);
}
.lv-timeline__drag { cursor: grab; color: var(--lv-ink-soft); text-align: center; user-select: none; }
.lv-timeline__time, .lv-timeline__label, .lv-timeline__cat {
  font-family: var(--lv-sans); font-size: 14.5px; padding: 8px 10px;
  border: 1px solid var(--lv-border-strong); border-radius: 2px; background: var(--lv-white); box-sizing: border-box; width: 100%;
}
.lv-timeline__remove { border: none; background: none; color: var(--lv-ink-soft); font-size: 20px; cursor: pointer; }
.lv-timeline__remove:hover { color: var(--lv-rose); }
.lv-timeline__actions { display: flex; gap: 14px; flex-wrap: wrap; margin: 20px 0 0; }
.lv-timeline__row.sortable-ghost { opacity: .4; }

@media (max-width: 620px) {
  .lv-timeline__row { grid-template-columns: 20px 90px 1fr 26px; }
  .lv-timeline__cat { grid-column: 2 / span 2; }
}

/* --------------------------------------------------------------------------
   Venue Comparison Tool (lv-venue-comparison-tool.js)
   -------------------------------------------------------------------------- */
.lv-venue-compare__scroll { overflow-x: auto; margin: 0 0 20px; }
.lv-venue-compare__table { border-collapse: collapse; width: 100%; min-width: 640px; font-family: var(--lv-sans); font-size: 14px; }
.lv-venue-compare__table th, .lv-venue-compare__table td { border: 1px solid var(--lv-border); padding: 10px 12px; vertical-align: top; text-align: left; }
.lv-venue-compare__row-label { font-weight: 600; color: var(--lv-ink-soft); font-size: 12.5px; text-transform: uppercase; letter-spacing: .03em; white-space: nowrap; background: var(--lv-ivory); }
.lv-venue-compare__table input, .lv-venue-compare__table textarea {
  width: 100%; font-family: var(--lv-sans); font-size: 14px; border: 1px solid transparent; border-radius: 2px;
  padding: 6px 8px; background: transparent; box-sizing: border-box;
}
.lv-venue-compare__table input:focus, .lv-venue-compare__table textarea:focus { outline: none; border-color: var(--lv-border-strong); background: var(--lv-white); }
.lv-venue-compare__vname { font-family: var(--lv-serif); font-size: 17px; font-weight: 600; margin-bottom: 4px; }
.lv-venue-compare__name-row th { position: relative; }
.lv-venue-compare__remove { position: absolute; top: 6px; right: 6px; border: none; background: none; color: var(--lv-ink-soft); font-size: 16px; cursor: pointer; }
.lv-venue-compare__remove:hover { color: var(--lv-rose); }
.lv-venue-compare__actions { display: flex; gap: 14px; flex-wrap: wrap; }

/* --------------------------------------------------------------------------
   Guest List Planner (lv-guest-list-tool.js)
   -------------------------------------------------------------------------- */
.lv-guest-list__table { border-collapse: collapse; width: 100%; min-width: 720px; font-family: var(--lv-sans); font-size: 14px; }
.lv-guest-list__table th { text-align: left; font-size: 12px; letter-spacing: .03em; text-transform: uppercase; color: var(--lv-ink-soft); padding: 0 10px 10px; }
.lv-guest-list__table td { padding: 6px 10px; border-top: 1px solid var(--lv-border); }
.lv-guest-list__table input, .lv-guest-list__table select {
  width: 100%; font-family: var(--lv-sans); font-size: 14px; padding: 8px 10px;
  border: 1px solid var(--lv-border-strong); border-radius: 2px; background: var(--lv-white); box-sizing: border-box;
}
.lv-guest-list__summary { margin: 0 0 24px; }

/* --------------------------------------------------------------------------
   Seating Chart Planner (lv-seating-tool.js, lv-seating-solver.js)
   -------------------------------------------------------------------------- */
.lv-seating-tool [hidden] { display: none !important; }
.lv-seating__step { margin: 0 0 36px; }
.lv-seating__step > .lv-h4 { margin: 0 0 14px; }
.lv-seating__optional { font-family: var(--lv-sans); font-size: 13px; font-weight: 400; color: var(--lv-ink-soft); }
.lv-seating__hint { font-family: var(--lv-sans); font-size: 13.5px; line-height: 1.55; color: var(--lv-ink-soft); margin: 0 0 12px; }
.lv-seating__hint code { font-size: 12.5px; background: rgba(23,32,51,.05); padding: 1px 5px; border-radius: 3px; }
.lv-seating__paste { width: 100%; box-sizing: border-box; margin: 0 0 12px; font-family: var(--lv-sans); font-size: 14px; }
.lv-seating__guestbox { margin: 16px 0 0; }
.lv-seating__guestsum { cursor: pointer; font-family: var(--lv-sans); font-size: 14px; color: var(--lv-ink); padding: 6px 0; }
.lv-seating__guests { display: flex; flex-direction: column; gap: 10px; margin: 12px 0 0; max-height: 460px; overflow-y: auto; padding-right: 4px; }
.lv-seating__guest { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px; border: 1px solid var(--lv-border); border-radius: 4px; background: var(--lv-ivory); }
.lv-seating__guest .lv-seating__gname { flex: 2 1 180px; min-width: 0; }
.lv-seating__guest .lv-seating__ggroup { flex: 1 1 140px; min-width: 0; }
.lv-seating__check { font-family: var(--lv-sans); font-size: 13px; color: var(--lv-ink); display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.lv-seating__check input { width: 18px; height: 18px; margin: 0; }
.lv-seating__ruleline { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 14px; }
.lv-seating__ruleline > .lv-field__label { flex: 0 0 100%; margin: 0; }
.lv-seating__ruleline select { width: auto; max-width: 100%; min-width: 150px; }
.lv-seating__rpair, .lv-seating__rtable, .lv-seating__rgroup { display: inline-flex; flex-wrap: wrap; gap: 10px; }
.lv-seating__rpair[hidden], .lv-seating__rtable[hidden], .lv-seating__rgroup[hidden] { display: none; }
.lv-seating__rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.lv-seating__rule { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--lv-border); border-radius: 4px; font-family: var(--lv-sans); font-size: 14px; background: var(--lv-white); }
.lv-seating__rule--empty { color: var(--lv-ink-soft); background: transparent; border-style: dashed; }
.lv-seating__rremove { background: none; border: 0; color: var(--lv-ink-soft); text-decoration: underline; cursor: pointer; font-family: var(--lv-sans); font-size: 13px; padding: 6px; }
.lv-seating__result { font-family: var(--lv-sans); font-size: 14.5px; line-height: 1.55; margin: 14px 0 0; }
.lv-seating__result p { margin: 0 0 8px; }
.lv-seating__result ul { margin: 0 0 8px; padding-left: 20px; }
.lv-seating__summary { margin: 4px 0 18px; }
.lv-seating__notice { display: none; font-family: var(--lv-sans); font-size: 14px; padding: 10px 12px; margin: 0 0 12px; border-radius: 4px; background: rgba(23,32,51,.05); }
.lv-seating__notice--on { display: block; }
.lv-seating__movebar { position: sticky; top: 8px; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 12px; margin: 0 0 14px; background: var(--lv-ink); color: var(--lv-white); border-radius: 4px; font-family: var(--lv-sans); font-size: 14px; }
.lv-seating__movebar[hidden] { display: none; }
.lv-seating__movebar select { width: auto; max-width: 100%; }
.lv-seating__movebar .lv-btn--ghost { color: var(--lv-white); border-color: rgba(255,255,255,.5); }
.lv-seating__tables { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; margin: 0 0 24px; }
.lv-seating__table { border: 1px solid var(--lv-border); border-radius: 4px; padding: 14px; background: var(--lv-ivory); }
.lv-seating__table--pool { background: var(--lv-white); border-style: dashed; grid-column: 1 / -1; }
.lv-seating__table--pool .lv-seating__seats { min-height: 44px; flex-direction: row; flex-wrap: wrap; }
.lv-seating__table--over, .lv-seating__table--flag { border-color: var(--lv-rose); box-shadow: 0 0 0 1px var(--lv-rose) inset; }
.lv-seating__table-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 0 0 8px; }
.lv-seating__tname { flex: 1 1 auto; min-width: 0; font-family: var(--lv-serif); font-size: 18px; color: var(--lv-ink); background: transparent; border: 0; border-bottom: 1px dashed transparent; padding: 2px 0; }
.lv-seating__tname:hover, .lv-seating__tname:focus { border-bottom-color: var(--lv-border-strong); outline: none; }
.lv-seating__tname::placeholder { color: var(--lv-ink); opacity: 1; }
.lv-seating__count { font-family: var(--lv-sans); font-size: 12.5px; color: var(--lv-ink-soft); white-space: nowrap; }
.lv-seating__table--over .lv-seating__count { color: var(--lv-rose); font-weight: 600; }
.lv-seating__table > .lv-seating__check { margin: 0 0 8px; font-size: 12.5px; color: var(--lv-ink-soft); }
.lv-seating__seats { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; min-height: 36px; }
.lv-seating__chip { font-family: var(--lv-sans); font-size: 14px; padding: 9px 10px; background: var(--lv-white); border: 1px solid var(--lv-border-strong); border-radius: 3px; cursor: grab; user-select: none; -webkit-user-select: none; touch-action: manipulation; }
.lv-seating__chip:focus-visible { outline: 2px solid var(--lv-ink); outline-offset: 1px; }
.lv-seating__chip--selected { background: var(--lv-ink); color: var(--lv-white); border-color: var(--lv-ink); }
.lv-seating__tag { font-size: 12px; opacity: .75; }
.lv-seating__ghost { opacity: .35; }
.lv-seating__problems-box { border: 1px solid var(--lv-rose); border-radius: 4px; padding: 12px 16px; font-family: var(--lv-sans); font-size: 14px; background: rgba(200,135,121,.07); }
.lv-seating__problems-box .lv-h4 { margin: 0 0 6px; }
.lv-seating__problems-box ul { margin: 0; padding-left: 20px; }
.lv-seating__ok { font-family: var(--lv-sans); font-size: 14px; color: var(--lv-ink-soft); margin: 0; }
.lv-seating__print-title, .lv-seating__printonly { display: none; }
@media (max-width: 560px) {
  .lv-seating__ruleline select { flex: 1 1 100%; }
  .lv-seating__rpair, .lv-seating__rtable, .lv-seating__rgroup { flex: 1 1 100%; }
  .lv-seating__tables { grid-template-columns: 1fr; }
  .lv-seating__chip { padding: 12px 12px; }
}

/* --------------------------------------------------------------------------
   Generator Engine (lv-generator-engine.js) — Invitation/Save-the-Date/etc.
   -------------------------------------------------------------------------- */
.lv-gen__layout { display: grid; grid-template-columns: 340px 1fr; gap: clamp(24px, 4vw, 48px); align-items: start; }
.lv-gen__themes { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.lv-gen__theme-btn {
  font-family: var(--lv-sans); font-size: 13px; padding: 8px 14px; border: 1px solid var(--lv-border-strong);
  border-radius: 20px; background: var(--lv-white); color: var(--lv-ink); cursor: pointer;
}
.lv-gen__theme-btn--active { background: var(--lv-ink); border-color: var(--lv-ink); color: var(--lv-white); }
.lv-gen__swatches { display: flex; gap: 10px; margin: 0 0 24px; }
.lv-gen__swatch {
  width: 28px; height: 28px; border-radius: 50%; border: 2px solid transparent; background: var(--sw);
  cursor: pointer; padding: 0;
}
.lv-gen__swatch--active { border-color: var(--lv-ink); }
.lv-gen__preview-wrap { position: sticky; top: 24px; }
.lv-gen__preview { aspect-ratio: 1000 / 1400; max-width: 420px; margin: 0 auto; box-shadow: 0 10px 40px rgba(23,32,51,.14); }
.lv-gen__preview svg { width: 100%; height: 100%; display: block; }
.lv-gen__export { display: flex; gap: 12px; justify-content: center; margin: 20px 0 0; flex-wrap: wrap; }

@media (max-width: 860px) {
  .lv-gen__layout { grid-template-columns: 1fr; }
  .lv-gen__preview-wrap { position: static; }
  .lv-gen__preview { max-width: 340px; }
}

/* --------------------------------------------------------------------------
   Print — Timeline / Checklist / Venue Comparison "Print" buttons call
   window.print(); this keeps the printed page to the tool itself.
   -------------------------------------------------------------------------- */
@media print {
  .lv6 .header, .lv6 .footer, .lv-page-hero, .lv-subscribe-wrap,
  .lv-checklist-tool__actions, .lv-timeline__actions, .lv-venue-compare__actions,
  .lv-tool-info, .lv-studio-badge, .lv-gen__controls, .lv-gen__export,
  .lv-checklist-tool__subscribe, .announcement-bar,
  .lv-guest-list__csv, .lv-guest-list__add, .lv-seating__print, .lv-seating__noprint { display: none !important; }
  .lv-seating__print-title { display: block !important; font-family: var(--lv-serif); font-size: 22px; margin: 0 0 12px; }
  .lv-seating__printonly { display: block !important; font-size: 11px; font-style: italic; margin: 0 0 6px; }
  .lv-seating__tname { border: 0 !important; }
  .lv-seating__chip { cursor: default; border-color: #ccc; }
  .lv-seating__table { break-inside: avoid; }
  .lv-studio-tool-wrap { border: none; padding: 0; }
}
