/* ============================================================
   License Hub Storefront v2 - site stylesheet
   Design: "BragDeal WordPress Plugins" (Claude Design, Sept 2026)
   Fonts are served from the Twenty Twenty-Five theme bundle so no
   external font host is contacted.
   ============================================================ */

@font-face {
  font-family: "Manrope";
  src: url("../../../themes/twentytwentyfive/assets/fonts/manrope/Manrope-VariableFont_wght.woff2") format("woff2-variations");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Fira Code";
  src: url("../../../themes/twentytwentyfive/assets/fonts/fira-code/FiraCode-VariableFont_wght.woff2") format("woff2-variations");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
}

/* ------------------------------------------------------------ tokens */
:root {
  --navy-50:#F2F5F8; --navy-100:#E1E8EF; --navy-200:#C3CFDB; --navy-300:#9DB0C2; --navy-400:#6E8299;
  --navy-500:#52708C; --navy-600:#415A72; --navy-700:#34495E; --navy-800:#2C3E50; --navy-900:#22303C; --navy-950:#172029;
  --blue-50:#E9F2FE; --blue-100:#CFE3FD; --blue-200:#A0C8FB; --blue-300:#63A6F8; --blue-400:#2E8BF6;
  --blue-500:#0D81F5; --blue-600:#0A68C7; --blue-700:#0A529C; --blue-800:#0C4477; --blue-900:#0E3A63;
  --gray-0:#FFFFFF; --gray-50:#F7F9FA; --gray-100:#EEF1F4; --gray-200:#E1E6EB; --gray-300:#CBD3DB; --gray-400:#9AA6B2;
  --gray-500:#6B7783; --gray-600:#4E5963; --gray-700:#3A434C; --gray-800:#262D34; --gray-900:#171B20;
  --green-50:#E7F6EF; --green-500:#1F9D6B; --green-600:#178055;
  --amber-50:#FEF4E2; --amber-500:#F5A623; --red-50:#FCEBEB; --red-500:#E03B3B; --red-600:#C22A2A;

  --text-strong:var(--navy-800); --text-body:var(--navy-700); --text-muted:var(--gray-500); --text-subtle:var(--gray-400);
  --text-link:var(--blue-600); --text-link-hover:var(--blue-700);
  --surface-card:#FFFFFF; --border-subtle:var(--gray-200); --border-default:var(--gray-300);
  --radius-md:10px; --radius-lg:16px; --radius-xl:24px;
  --shadow-md:0 1px 3px rgba(34,48,60,.06), 0 6px 16px -6px rgba(34,48,60,.14);
  --shadow-lg:0 2px 6px rgba(34,48,60,.06), 0 16px 36px -12px rgba(34,48,60,.22);
  --shadow-xl:0 4px 10px rgba(34,48,60,.06), 0 30px 60px -18px rgba(34,48,60,.30);
  --shadow-cta:0 8px 20px -8px rgba(13,129,245,.55);
  --font-sans:"Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono:"Fira Code", "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
  --dur-fast:120ms; --dur-base:200ms; --tracking-caps:.14em;

  /* Layout grid. --lh-content is the content width shared by the whole site.
     Elementor boxed containers apply their 32px padding OUTSIDE the 1200px
     boxed inner, so the chrome must reserve the gutters on top of the content
     width to line up with them. Use var(--lh-grid) for any max-width that has
     horizontal padding, and var(--lh-content) for one that does not. */
  --lh-gutter:32px; --lh-content:1200px; --lh-grid:calc(var(--lh-content) + var(--lh-gutter) * 2);
  --lh-aside:340px;

  /* WooCommerce blocktheme reads these for every form control. Pointing them at
     our own tokens stops the near-black 4px-radius inputs on checkout. */
  --wc-form-border-color:var(--border-default); --wc-form-border-radius:var(--radius-md); --wc-form-border-width:1px;

  /* v1 aliases kept for the cart / checkout rules below */
  --lh-blue:var(--blue-500); --lh-ink:var(--navy-900); --lh-page:#fff; --lh-surface:var(--gray-50); --lh-surface-2:var(--gray-100);
  --lh-line:var(--gray-200); --lh-line-soft:var(--gray-100); --lh-text:var(--navy-800); --lh-text-2:var(--navy-700); --lh-text-3:var(--gray-500);
  --lh-action-bg:var(--blue-500); --lh-action-fg:#fff; --lh-shadow:var(--shadow-md); --lh-r:var(--radius-lg); --lh-r-sm:var(--radius-md);
  --lh-display:var(--font-sans); --lh-mono:var(--font-mono); --lh-shield:var(--green-500); --lh-fest:var(--amber-500);
}

/* The gutter follows the page containers at every breakpoint so the header,
   footer and WooCommerce pages stay on the same grid as the Elementor
   sections: 32px desktop, 24px tablet, 20px mobile. Elementor's tablet
   breakpoint for this site is 1024px and its mobile breakpoint is 860px. */
@media (max-width: 1024px) {
  :root { --lh-gutter:24px; }
}
@media (max-width: 860px) {
  :root { --lh-gutter:20px; }
}

/* ------------------------------------------------------------ base */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body.lh-sf {
  margin: 0; font-family: var(--font-sans); color: var(--text-body); font-size: 16px; line-height: 1.5;
  /* The theme sets body{font-weight:300;letter-spacing:-0.1px}. Without these two
     the storefront renders Manrope Light while the Elementor pages render Regular,
     which is the main reason cart and checkout looked like a different typeface. */
  font-weight: 400; letter-spacing: normal;
  -webkit-font-smoothing: antialiased; background: #fff;
}
body.lh-sf.lh-surface-gray { background: var(--gray-50); }
body.lh-sf a { color: var(--text-link); }
body.lh-sf a:hover { color: var(--text-link-hover); }
body.lh-sf :focus-visible { outline: 2px solid var(--blue-500); outline-offset: 3px; border-radius: 4px; }
body.lh-sf img { max-width: 100%; height: auto; }
.lh-main { min-height: 40vh; }
.lh-wrap { max-width: var(--lh-grid); margin: 0 auto; padding: 0 var(--lh-gutter); box-sizing: border-box; }
[id] { scroll-margin-top: 96px; }

/* ------------------------------------------------------------ buttons */
.lh-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; box-sizing: border-box;
  font-family: var(--font-sans); font-weight: 700; font-size: 15px; line-height: 1; letter-spacing: -.005em;
  padding: 14px 26px; border-radius: var(--radius-md); border: 1px solid transparent; text-decoration: none; cursor: pointer;
  white-space: nowrap; transition: background var(--dur-fast) ease, color var(--dur-fast) ease, border-color var(--dur-fast) ease, transform var(--dur-fast) ease, box-shadow var(--dur-fast) ease;
}
body.lh-sf .lh-btn-primary { background: var(--blue-500); color: #fff; }
body.lh-sf .lh-btn-primary:hover { background: var(--blue-600); color: #fff; transform: translateY(-1px); box-shadow: var(--shadow-cta); }
body.lh-sf .lh-btn-primary:active { background: var(--blue-700); transform: none; }
body.lh-sf .lh-btn-outline { background: transparent; color: var(--text-body); border-color: var(--border-default); }
body.lh-sf .lh-btn-outline:hover { background: var(--gray-50); color: var(--text-strong); border-color: var(--gray-400); }
body.lh-sf .lh-btn-ghost { background: transparent; color: var(--text-body); }
body.lh-sf .lh-btn-ghost:hover { background: var(--gray-100); color: var(--text-strong); }
body.lh-sf .lh-btn-outline-dark { background: transparent; color: #fff; border-color: rgba(255,255,255,.35); }
body.lh-sf .lh-btn-outline-dark:hover { background: rgba(255,255,255,.1); color: #fff; border-color: #fff; }
.lh-btn-sm { font-size: 14px; padding: 10px 16px; }
.lh-btn-lg { font-size: 16px; padding: 18px 30px; }
.lh-btn-full { width: 100%; }
.lh-link { font-weight: 700; text-decoration: none; color: var(--text-link); }
.lh-link:hover { text-decoration: underline; }
.lh-link-sm { font-size: 14px; font-weight: 600; }
.lh-link-xs { font-size: 12px; font-weight: 600; }
.lh-linkbtn { background: none; border: 0; padding: 0; cursor: pointer; font-family: inherit; }

/* ------------------------------------------------------------ announcement + header */
.lh-announce { background: var(--blue-50); color: var(--blue-700); text-align: center; padding: 10px 24px; font-size: 14px; font-weight: 600; }
.lh-announce a { color: var(--blue-600); font-weight: 700; text-decoration: none; }
.lh-announce a:hover { text-decoration: underline; }

.lh-header { position: sticky; top: 0; z-index: 50; background: rgba(255,255,255,.92); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); border-bottom: 1px solid var(--border-subtle); }
body.admin-bar .lh-header { top: 32px; }
.lh-header-in { max-width: var(--lh-grid); margin: 0 auto; padding: 0 var(--lh-gutter); min-height: 72px; display: flex; align-items: center; gap: 40px; box-sizing: border-box; }
.lh-logo { display: flex; align-items: center; flex: none; }
body.lh-sf .lh-header .lh-logo img { height: 40px; width: auto; display: block; }
.lh-nav { display: flex; align-items: center; gap: 32px; margin-left: auto; }
.lh-nav-list { display: flex; gap: 28px; align-items: center; list-style: none; margin: 0; padding: 0; }
body.lh-sf .lh-nav-list a { color: var(--navy-700); text-decoration: none; font-weight: 600; font-size: 14px; transition: color var(--dur-fast) ease; }
body.lh-sf .lh-nav-list a:hover, body.lh-sf .lh-nav-list a.is-current { color: var(--blue-600); }
body.lh-sf .lh-nav-list a.is-current { font-weight: 700; }
.lh-nav-actions { display: flex; align-items: center; gap: 16px; }
.lh-avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--navy-700); color: #fff; font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.lh-avatar:hover { background: var(--navy-800); color: #fff; }
.lh-cart-link { display: inline-flex; align-items: center; gap: 6px; color: var(--navy-700); text-decoration: none; font-size: 13px; font-weight: 700; }
.lh-cart-count { min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--blue-500); color: #fff; font-size: 11px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.lh-nav-toggle { display: none; margin-left: auto; width: 44px; height: 44px; border: 1px solid var(--border-subtle); background: #fff; border-radius: var(--radius-md); color: var(--navy-700); cursor: pointer; align-items: center; justify-content: center; }
.lh-nav-toggle .lh-ic-close { display: none; }
.lh-nav-toggle[aria-expanded="true"] .lh-ic-open { display: none; }
.lh-nav-toggle[aria-expanded="true"] .lh-ic-close { display: inline-flex; }

@media (max-width: 860px) {
  .lh-header-in { gap: 16px; padding: 0 var(--lh-gutter); }
  .lh-logo img { height: 34px; }
  .lh-nav-toggle { display: inline-flex; }
  .lh-nav { display: none; position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-bottom: 1px solid var(--border-subtle); box-shadow: var(--shadow-lg); flex-direction: column; align-items: stretch; gap: 0; padding: 12px 20px 20px; margin: 0; }
  .lh-nav.is-open { display: flex; }
  .lh-nav-list { flex-direction: column; align-items: stretch; gap: 0; }
  .lh-nav-list a { display: block; padding: 12px 4px; font-size: 16px; border-bottom: 1px solid var(--gray-100); }
  .lh-nav-actions { padding-top: 16px; justify-content: space-between; }
  .lh-nav-actions .lh-btn { flex: 1; }
}

/* ------------------------------------------------------------ footer */
.lh-footer { background: var(--navy-900); color: var(--navy-200); }
.lh-footer-grid { max-width: var(--lh-grid); margin: 0 auto; padding: 64px var(--lh-gutter) 40px; display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 48px; box-sizing: border-box; }
.lh-footer-brand { display: flex; flex-direction: column; gap: 16px; }
body.lh-sf .lh-footer-brand img { height: 40px; width: auto; align-self: flex-start; }
.lh-footer-brand p { margin: 0; font-size: 14px; line-height: 1.65; max-width: 34ch; }
.lh-footer-col { display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.lh-footer-title { font-weight: 700; font-size: 12px; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--gray-400); }
body.lh-sf .lh-footer-col a { color: var(--navy-200); text-decoration: none; }
body.lh-sf .lh-footer-col a:hover { color: #fff; }
body.lh-sf .lh-avatar { color: #fff; }
body.lh-sf .lh-cart-link { color: var(--navy-700); }
body.lh-sf .lh-announce a { color: var(--blue-600); }
.lh-footer-bar { border-top: 1px solid rgba(255,255,255,.14); }
.lh-footer-bar-in { max-width: var(--lh-grid); margin: 0 auto; padding: 20px var(--lh-gutter); font-size: 12px; color: var(--gray-400); display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; box-sizing: border-box; }
.lh-footer-light { background: #fff; color: var(--gray-400); }
.lh-footer-light .lh-footer-bar { border-top: 1px solid var(--border-subtle); }
@media (max-width: 860px) { .lh-footer-grid { grid-template-columns: 1fr 1fr; gap: 36px; padding: 48px var(--lh-gutter) 32px; } .lh-footer-brand { grid-column: 1 / -1; } }
@media (max-width: 560px) { .lh-footer-grid { grid-template-columns: 1fr; } }

/* The theme lays .woocommerce out as a grid. A grid item will not shrink below
   its min-content width, so wide notice banners on the cart and checkout push
   the track past the viewport on small screens. Letting the items shrink keeps
   those pages inside the grid. */
body.lh-sf .woocommerce > * { min-width: 0; }


/* ------------------------------------------------------------ Elementor helper classes */
/* For a container given a fixed px width in Elementor: keep that width as the
   cap but never let it push past its parent, so it cannot overflow the grid
   on narrow laptops and tablets. */
.bd-fluid { max-width: 100%; }
/* Elementor stores these containers with margin {unit:"px", left:"auto"} and
   concatenates the two into the invalid value "autopx", so --margin-left never
   resolves and a fixed-width container sits flush left inside its boxed inner.
   Setting the variables Elementor actually reads restores the intended centring;
   the selector is specific enough to beat Elementor's per-element rule. */
body.lh-sf .elementor .e-con.bd-center {
  --margin-left: auto; --margin-right: auto;
  --margin-inline-start: auto; --margin-inline-end: auto;
}
.bd-tile-logo { background: transparent; overflow: hidden; } .bd-tile-logo img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.lh-eyebrow, .bd-eyebrow .elementor-heading-title, .bd-eyebrow { font-family: var(--font-sans); font-weight: 700; font-size: 14px; line-height: 1; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--blue-600); }
.bd-eyebrow-dark .elementor-heading-title { color: var(--navy-200); font-size: 12px; }
.bd-brag { color: var(--blue-500); }
.bd-mt-auto { margin-top: auto; }
.bd-mt-36 { margin-top: 36px; }
body:not(.elementor-editor-active) .bd-pending-approval { display: none !important; }
.bd-muted, .bd-muted p { color: var(--text-muted); }
.bd-mono { font-family: var(--font-mono); }
.bd-reveal { opacity: 0; transform: translateY(20px); transition: opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1); }
.bd-reveal.is-visible, .elementor-editor-active .bd-reveal { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .bd-reveal { opacity: 1; transform: none; transition: none; } }

/* check lists (text-editor widget) */
.bd-check-list ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.bd-check-list li { display: flex; gap: 10px; font-size: 14px; color: var(--text-body); line-height: 1.5; }
.bd-check-list li::before { content: "\2713"; color: var(--blue-500); font-weight: 700; flex: none; }
.bd-check-list-dark li { color: var(--navy-100); }
.bd-check-list-dark li::before { color: #fff; }
/* spec row: "v3.3.2 · Free, or $59/yr · No CAPTCHA" */
.bd-spec p { margin: 0; display: flex; gap: 18px; flex-wrap: wrap; font-size: 12px; color: var(--text-muted); font-weight: 600; }
.bd-spec .bd-mono { font-family: var(--font-mono); }
/* stat band item */
.elementor-widget-heading.bd-stat .elementor-heading-title { font-size: 38px; font-weight: 800; letter-spacing: -.02em; color: var(--text-strong); line-height: 1.1; }
.elementor-widget-heading.bd-stat-blue .elementor-heading-title { color: var(--blue-600); }
.elementor-widget-heading.bd-stat-md .elementor-heading-title { font-size: 30px; }
@media (max-width: 860px) { .elementor-widget-heading.bd-stat .elementor-heading-title { font-size: 30px; } .elementor-widget-heading.bd-stat-md .elementor-heading-title { font-size: 24px; } }
/* icon tile */
.bd-tile { width: 52px; height: 52px; border-radius: var(--radius-md); background: var(--blue-50); color: var(--blue-600); display: flex; align-items: center; justify-content: center; }
.bd-tile svg { width: 26px; height: 26px; }
.bd-tile-lg { width: 60px; height: 60px; } .bd-tile-lg svg { width: 30px; height: 30px; }
.bd-tile-sm { width: 44px; height: 44px; } .bd-tile-sm svg { width: 22px; height: 22px; }
.bd-badge { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; padding: 4px 10px; font-size: 12px; font-weight: 700; background: var(--blue-50); color: var(--blue-600); white-space: nowrap; }
.bd-badge-green { background: var(--green-50); color: var(--green-600); }
.bd-badge-nav { background: var(--navy-700); color: #fff; }
.bd-pill-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
/* FAQ (details) */
details.bd-faq { background: var(--surface-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 20px 24px; }
details.bd-faq + details.bd-faq { margin-top: 12px; }
details.bd-faq > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 16px; font-weight: 700; color: var(--text-strong); font-size: 16px; }
details.bd-faq > summary::-webkit-details-marker { display: none; }
details.bd-faq .bd-chev { color: var(--blue-500); font-size: 24px; font-weight: 400; line-height: 1; transition: transform var(--dur-base) ease; flex: none; }
details.bd-faq[open] .bd-chev { transform: rotate(45deg); }
details.bd-faq p { margin: 14px 0 0; font-size: 14px; color: var(--text-muted); line-height: 1.65; }
/* callout */
.bd-callout { display: flex; gap: 12px; background: var(--blue-50); border: 1px solid var(--blue-100); border-radius: var(--radius-md); padding: 14px 16px; font-size: 14px; color: var(--blue-700); line-height: 1.65; }
.bd-callout svg { flex: none; margin-top: 2px; width: 18px; height: 18px; }
/* numbered steps */
.bd-steps { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 12px; }
.bd-steps li { display: grid; grid-template-columns: 32px 1fr; gap: 14px; align-items: start; font-size: 16px; color: var(--text-body); line-height: 1.65; }
.bd-steps li::before { counter-increment: bdstep; content: counter(bdstep); width: 32px; height: 32px; border-radius: 50%; background: var(--navy-700); color: #fff; font-family: var(--font-mono); font-weight: 700; font-size: 13px; display: inline-flex; align-items: center; justify-content: center; }
.bd-steps { counter-reset: bdstep; }
.bd-steps li > span { padding-top: 4px; }
/* tables */
.bd-table { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); overflow: hidden; overflow-x: auto; }
.bd-table table { width: 100%; border-collapse: collapse; font-size: 14px; margin: 0; }
.bd-table th { text-align: left; padding: 12px 16px; font-weight: 700; color: var(--text-strong); background: var(--gray-50); border-bottom: 1px solid var(--border-subtle); }
.bd-table td { padding: 12px 16px; border-bottom: 1px solid var(--border-subtle); color: var(--text-body); line-height: 1.65; vertical-align: top; }
.bd-table td:first-child { font-weight: 600; color: var(--text-strong); white-space: nowrap; }
.bd-table tr:last-child td { border-bottom: 0; }
/* code block */
.bd-code { margin: 0; background: var(--navy-900); color: var(--navy-100); border-radius: var(--radius-md); padding: 16px 20px; font-family: var(--font-mono); font-size: 13px; line-height: 1.6; overflow-x: auto; white-space: pre; }
/* license tag in docs headings */
.bd-lic { font-size: 12px; font-weight: 700; color: var(--blue-600); background: var(--blue-50); border-radius: 999px; padding: 3px 10px; vertical-align: middle; margin-left: 8px; }
/* docs sidebar */
.bd-sticky { position: sticky; top: 96px; }
.bd-side-group { display: flex; flex-direction: column; gap: 4px; }
.bd-side-title { font-weight: 700; font-size: 12px; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-muted); margin-bottom: 6px; }
.bd-side-group a { color: var(--navy-700); text-decoration: none; font-size: 14px; font-weight: 600; padding: 6px 10px; border-radius: 8px; display: block; }
.bd-side-group a:hover { background: var(--blue-50); color: var(--blue-600); }
.bd-docs-section { padding-bottom: 48px; border-bottom: 1px solid var(--border-subtle); }
.bd-docs-section .elementor-widget-heading h2 { font-size: 30px; }
.bd-doc-cta { display: flex; gap: 12px; flex-wrap: wrap; }
/* holiday chips (Festivello) */
.bd-holidays { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.bd-holiday { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.14); border-radius: var(--radius-md); padding: 14px 16px; }
.bd-holiday b { display: block; color: #fff; font-weight: 700; font-size: 14px; }
.bd-holiday small { color: var(--navy-200); font-size: 12px; font-family: var(--font-mono); }
.bd-holiday .sw { display: flex; gap: 4px; } .bd-holiday .sw span { width: 12px; height: 12px; border-radius: 3px; display: block; }
/* hero mockups */
.bd-mock { display: flex; flex-direction: column; gap: 10px; flex: 1; min-height: 190px; }
.bd-mock-row { display: flex; align-items: center; gap: 12px; background: var(--gray-50); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 12px 14px; }
.bd-mock-row.is-spam { border: 1px dashed var(--border-default); background: transparent; opacity: .55; }
.bd-mock-av { width: 32px; height: 32px; border-radius: 50%; color: #fff; font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.bd-mock-lines { display: flex; flex-direction: column; gap: 5px; flex: 1; }
.bd-mock-lines span { display: block; height: 8px; border-radius: 4px; background: var(--navy-300); }
.bd-mock-lines span + span { height: 6px; background: var(--gray-300); }
.bd-mock-tag { font-size: 11px; font-weight: 700; white-space: nowrap; color: var(--green-600); }
.bd-mock-tag.is-spam { color: var(--gray-500); text-decoration: line-through; }
.bd-mock-pill { align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; background: var(--navy-700); color: #fff; border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 700; margin-top: 4px; }
.bd-mock-pill svg { width: 14px; height: 14px; }
.bd-mock-kpi { display: flex; justify-content: space-between; align-items: baseline; }
.bd-mock-kpi .lbl { font-size: 11px; font-weight: 700; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-muted); }
.bd-mock-kpi .val { font-family: var(--font-mono); font-size: 30px; font-weight: 700; color: var(--text-strong); letter-spacing: -.02em; }
.bd-mock-kpi .delta { display: inline-flex; align-items: center; gap: 4px; background: var(--green-50); color: var(--green-600); border-radius: 999px; padding: 4px 10px; font-size: 12px; font-weight: 700; }
.bd-mock-bars { display: flex; align-items: flex-end; gap: 8px; height: 120px; border-bottom: 1px solid var(--border-subtle); }
.bd-mock-bars span { flex: 1; border-radius: 4px 4px 0 0; background: var(--gray-200); display: block; }
.bd-mock-axis { display: flex; justify-content: space-between; font-size: 11px; color: var(--text-muted); font-weight: 600; }
.bd-mock-site { flex: 1; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); overflow: hidden; background: #fff; display: flex; flex-direction: column; }
.bd-mock-chrome { display: flex; gap: 5px; padding: 8px 10px; background: var(--gray-50); border-bottom: 1px solid var(--border-subtle); }
.bd-mock-chrome span { width: 7px; height: 7px; border-radius: 50%; background: var(--gray-300); display: block; }
.bd-mock-banner { background: var(--navy-700); color: #fff; text-align: center; font-size: 11px; font-weight: 700; padding: 7px 10px; display: flex; align-items: center; justify-content: center; gap: 8px; }
.bd-mock-banner i { width: 5px; height: 5px; border-radius: 50%; background: rgba(255,255,255,.7); display: block; }
.bd-mock-body { padding: 16px 14px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.bd-mock-body .h { height: 12px; width: 78%; border-radius: 6px; background: var(--navy-400); margin-top: 8px; }
.bd-mock-body .l { height: 7px; border-radius: 4px; background: var(--gray-200); }
.bd-mock-body .nav { display: flex; justify-content: space-between; align-items: center; }
.bd-mock-body .nav > span { height: 8px; width: 36%; border-radius: 4px; background: var(--navy-300); }
.bd-mock-body .nav > div { display: flex; gap: 6px; } .bd-mock-body .nav > div span { height: 6px; width: 22px; border-radius: 3px; background: var(--gray-300); display: block; }
.bd-mock-cta { display: inline-flex; align-self: flex-start; background: var(--blue-500); color: #fff; border-radius: 6px; padding: 6px 12px; font-size: 11px; font-weight: 700; margin-top: 6px; }
.bd-mock-title { font-weight: 700; font-size: 16px; color: var(--text-strong); }
.bd-mock-desc { font-size: 14px; color: var(--text-muted); line-height: 1.65; margin-top: 6px; }
/* screenshot frames */
.bd-shot img { display: block; width: 100%; height: auto; }
.bd-shot-bleed { padding: 40px 0 0 40px; overflow: hidden; }
.bd-shot-bleed img { border-radius: var(--radius-lg) 0 0 0; box-shadow: var(--shadow-xl); display: block; width: 100%; height: auto; }
.bd-shot-bleed-light img { border: 1px solid var(--border-subtle); border-right: 0; border-bottom: 0; }
/* support cards as links */
.bd-linkcard { text-decoration: none; display: flex; flex-direction: column; gap: 14px; background: var(--surface-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 32px; color: inherit; transition: box-shadow var(--dur-fast) ease, transform var(--dur-fast) ease; }
.bd-linkcard:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); color: inherit; }
.bd-linkcard .t { font-weight: 700; font-size: 20px; color: var(--text-strong); }
.bd-linkcard .d { font-size: 14px; color: var(--text-muted); line-height: 1.65; }
.bd-linkcard .a { font-size: 14px; font-weight: 700; color: var(--blue-600); margin-top: auto; }
.bd-linkcard-sm { padding: 22px 24px; gap: 8px; }
.bd-linkcard-sm .t { font-size: 16px; }
.bd-cards-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.bd-cards-3-tight { gap: 16px; }
@media (max-width: 860px) { .bd-cards-3 { grid-template-columns: 1fr; } .bd-sticky { position: static; } }
/* pricing card */
.bd-price { display: flex; flex-direction: column; gap: 18px; background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 32px; height: 100%; box-sizing: border-box; }
.bd-price.is-featured { background: var(--navy-800); border-color: var(--navy-800); box-shadow: var(--shadow-xl); position: relative; }
.bd-price .badge { position: absolute; top: -12px; right: 24px; background: var(--blue-500); color: #fff; border-radius: 999px; padding: 5px 12px; font-size: 12px; font-weight: 700; letter-spacing: .02em; }
.bd-price .plan { font-weight: 800; font-size: 20px; color: var(--text-strong); }
.bd-price .desc { font-size: 14px; color: var(--text-muted); margin-top: 4px; }
.bd-price .amount { display: flex; align-items: baseline; gap: 6px; }
.bd-price .amount b { font-size: 48px; font-weight: 800; letter-spacing: -.03em; color: var(--text-strong); line-height: 1; }
.bd-price .amount span { font-size: 14px; color: var(--text-muted); font-weight: 600; }
.bd-price ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.bd-price li { display: flex; gap: 10px; font-size: 14px; color: var(--text-body); line-height: 1.5; }
.bd-price li::before { content: "\2713"; color: var(--blue-500); font-weight: 700; flex: none; }
.bd-price .lh-btn { margin-top: 8px; }
.bd-price .fine { font-size: 12px; color: var(--text-subtle); text-align: center; }
.bd-price.is-featured .plan, .bd-price.is-featured .amount b { color: #fff; }
.bd-price.is-featured .desc, .bd-price.is-featured .amount span, .bd-price.is-featured .fine { color: var(--navy-200); }
.bd-price.is-featured li { color: var(--navy-100); }
.bd-price.is-featured li::before { color: var(--blue-300); }
/* testimonial card */
.bd-quote { display: flex; flex-direction: column; gap: 16px; background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 28px; height: 100%; box-sizing: border-box; }
.bd-quote .stars { color: var(--amber-500); font-size: 16px; letter-spacing: 2px; }
.bd-quote blockquote { margin: 0; font-size: 16px; line-height: 1.65; color: var(--text-body); flex: 1; }
.bd-quote .who { display: flex; align-items: center; gap: 12px; }
.bd-quote .who .av { width: 40px; height: 40px; border-radius: 50%; background: var(--navy-700); color: #fff; font-size: 13px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.bd-quote .who b { display: block; font-size: 14px; color: var(--text-strong); }
.bd-quote .who small { font-size: 12px; color: var(--text-muted); }
/* CTA banner */
.bd-cta { background: var(--navy-800); border-radius: var(--radius-xl); padding: 64px 48px; text-align: center; color: #fff; }
.bd-cta .lh-eyebrow { color: var(--navy-200); margin-bottom: 14px; }
.bd-cta h2 { margin: 0 auto; max-width: 22ch; font-size: 38px; font-weight: 700; letter-spacing: -.015em; line-height: 1.2; color: #fff; }
.bd-cta p { margin: 16px auto 0; max-width: 60ch; font-size: 18px; line-height: 1.65; color: var(--navy-200); }
.bd-cta .lh-btn { margin-top: 32px; }
@media (max-width: 860px) { .bd-cta { padding: 44px 24px; } .bd-cta h2 { font-size: 30px; } }
/* Elementor button hover polish (kit handles colour) */
body.lh-sf .elementor-button { transition: background var(--dur-fast) ease, color var(--dur-fast) ease, border-color var(--dur-fast) ease, transform var(--dur-fast) ease, box-shadow var(--dur-fast) ease; }
body.lh-sf .bd-btn-primary .elementor-button:hover { transform: translateY(-1px); box-shadow: var(--shadow-cta); }
body.lh-sf .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
body.lh-sf .elementor-widget-text-editor p:first-child { margin-top: 0; }

/* ------------------------------------------------------------ forms (login, account, tickets) */
.lh-form { display: flex; flex-direction: column; gap: 18px; }
.lh-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.lh-field { display: flex; flex-direction: column; gap: 6px; }
.lh-field label { font-size: 14px; font-weight: 700; color: var(--text-strong); }
.lh-field input, .lh-field select, .lh-field textarea {
  width: 100%; box-sizing: border-box; font-family: var(--font-sans); font-size: 15px; color: var(--text-body);
  background: #fff; border: 1px solid var(--border-default); border-radius: var(--radius-md); padding: 12px 14px; min-height: 48px; line-height: 1.4;
}
.lh-field textarea { min-height: 140px; resize: vertical; }
.lh-field input:focus, .lh-field select:focus, .lh-field textarea:focus { outline: none; border-color: var(--blue-500); box-shadow: 0 0 0 3px rgba(13,129,245,.35); }
.lh-field input::placeholder, .lh-field textarea::placeholder { color: var(--text-subtle); }
.lh-helper { font-size: 12px; color: var(--text-muted); }
.lh-form-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.lh-form-row-between { justify-content: space-between; }
.lh-form-actions { display: flex; gap: 12px; margin-top: 2px; }
.lh-check { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--text-body); cursor: pointer; }
.lh-check input { width: 18px; height: 18px; accent-color: var(--blue-500); margin: 0; }
.lh-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.lh-notice { border-radius: var(--radius-md); padding: 12px 16px; font-size: 14px; border: 1px solid var(--border-subtle); background: var(--gray-50); color: var(--text-body); }
.lh-notice-error { background: var(--red-50); border-color: #f3c2c2; color: var(--red-600); }
@media (max-width: 720px) { .lh-form-grid { grid-template-columns: 1fr; } }

/* WooCommerce notices anywhere in the shell */
body.lh-sf .woocommerce-message, body.lh-sf .woocommerce-info, body.lh-sf .woocommerce-error, body.lh-sf .woocommerce-notices-wrapper > div {
  border-top: 0; border-left: 3px solid var(--blue-500); background: #fff; border-radius: var(--radius-md); box-shadow: var(--shadow-md);
  color: var(--text-body); font-size: 14px; padding: 14px 18px; margin: 0 0 18px; list-style: none;
}
body.lh-sf .woocommerce-error { border-left-color: var(--red-500); }
body.lh-sf .woocommerce-message::before, body.lh-sf .woocommerce-info::before, body.lh-sf .woocommerce-error li::before { display: none; }
body.lh-sf .woocommerce-error li { list-style: none; }

/* login */
.lh-login { width: 420px; max-width: 100%; margin: 0 auto; padding: 64px 0; }
.lh-login-card { background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: 40px; }
body.lh-sf .lh-login-mark { height: 40px; width: 40px; margin-bottom: 20px; display: block; }
@media (max-width: 860px) { body.lh-sf .lh-header .lh-logo img { height: 34px; } }
.lh-login-title { margin: 0; font-size: 30px; font-weight: 700; letter-spacing: -.015em; color: var(--text-strong); line-height: 1.25; }
.lh-login-sub { margin: 10px 0 28px; font-size: 14px; color: var(--text-muted); line-height: 1.5; }
.lh-login-note { text-align: center; margin: 24px 0 0; font-size: 14px; color: var(--text-muted); }
.lh-login-help { text-align: center; margin: 12px 0 0; font-size: 12px; color: var(--text-subtle); }
body.lh-sf .lh-account-wrap:has(.lh-login) { padding: 0; }

/* account */
.lh-section { padding: 48px 0 80px; }
.lh-account-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; margin-bottom: 36px; }
.lh-account-title { margin: 0; font-size: 38px; font-weight: 700; letter-spacing: -.015em; color: var(--text-strong); line-height: 1.2; }
.lh-eyebrow { margin-bottom: 10px; }
.lh-account-help { font-size: 14px; color: var(--text-muted); }
.lh-account-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 24px; align-items: start; }
.lh-account-main, .lh-account-side { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.lh-card { background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 32px; }
.lh-card-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 20px; }
.lh-card-head h2, .lh-card-head h3 { margin: 0; font-size: 24px; font-weight: 600; color: var(--text-strong); line-height: 1.25; }
.lh-card-head h3 { font-size: 16px; font-weight: 700; }
.lh-card-head-sm { margin-bottom: 16px; }
.lh-card-note { font-size: 12px; color: var(--text-muted); }
.lh-stack { display: flex; flex-direction: column; gap: 14px; }
.lh-stack-sm { gap: 12px; } .lh-stack-xs { gap: 10px; }
.lh-mt { margin-top: 22px; }
.lh-hr { border: 0; border-top: 1px solid var(--border-subtle); margin: 28px 0 24px; }
.lh-muted { color: var(--text-muted); font-size: 14px; margin: 0; }
.lh-fine { font-size: 12px; color: var(--text-muted); margin: 12px 0 0; }
.lh-mono { font-family: var(--font-mono); }
.lh-empty { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; }
.lh-empty p { margin: 0; font-size: 14px; color: var(--text-muted); line-height: 1.65; }
.lh-license { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 20px 22px; display: flex; flex-direction: column; gap: 14px; }
.lh-license-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.lh-license-name { font-weight: 700; color: var(--text-strong); font-size: 16px; }
.lh-license-meta { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.lh-license-key { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.lh-license-key code { flex: 1; min-width: 240px; font-family: var(--font-mono); font-size: 14px; color: var(--text-body); background: var(--gray-50); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 11px 14px; }
.lh-license-hint { margin: 0; font-size: 12px; color: var(--text-muted); line-height: 1.6; }
.lh-license-site { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; background: var(--gray-50); border-radius: var(--radius-md); padding: 12px 14px; }
.lh-license-site-left { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.lh-license-site-empty { font-size: 13px; color: var(--text-muted); }
.lh-label { font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: var(--tracking-caps); font-weight: 700; }
.lh-domain { font-family: var(--font-mono); font-size: 14px; color: var(--text-strong); font-weight: 600; }
.lh-badge { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; padding: 3px 10px; font-size: 12px; font-weight: 700; }
.lh-badge-green { background: var(--green-50); color: var(--green-600); }
.lh-badge-gray { background: var(--gray-100); color: var(--gray-600); }
.lh-badge-dot::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.lh-download { display: flex; justify-content: space-between; align-items: center; gap: 16px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 16px 20px; flex-wrap: wrap; }
.lh-download-name { font-weight: 700; color: var(--text-strong); font-size: 14px; }
.lh-download-meta { font-size: 12px; color: var(--text-muted); margin-top: 3px; }
.lh-changelog { display: inline; }
.lh-changelog summary { display: inline; cursor: pointer; color: var(--text-link); font-weight: 600; }
.lh-changelog p { margin: 8px 0 0; font-size: 12px; color: var(--text-body); line-height: 1.6; }
.lh-kv { display: flex; flex-direction: column; gap: 14px; font-size: 14px; }
.lh-kv-sm { gap: 10px; }
.lh-kv-row { display: flex; justify-content: space-between; gap: 12px; }
.lh-kv-row span { color: var(--text-muted); } .lh-kv-sm .lh-kv-row span { color: var(--text-body); }
.lh-kv-row strong { color: var(--text-strong); text-align: right; }
.lh-doclink { text-decoration: none; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 14px 16px; display: block; transition: box-shadow var(--dur-fast) ease; color: inherit; }
.lh-doclink:hover { box-shadow: var(--shadow-md); color: inherit; }
.lh-doclink-t { display: block; font-weight: 700; color: var(--text-strong); font-size: 14px; }
.lh-doclink-d { display: block; font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.lh-account-endpoint { margin-top: 0; }
.lh-account-endpoint table.shop_table { border: 0; border-collapse: collapse; width: 100%; font-size: 14px; }
.lh-account-endpoint table.shop_table th, .lh-account-endpoint table.shop_table td { border: 0; border-bottom: 1px solid var(--border-subtle); padding: 12px 8px; }
.lh-account-endpoint .woocommerce-button, .lh-account-endpoint .button { display: inline-flex; align-items: center; font-weight: 700; font-size: 14px; padding: 10px 16px; border-radius: var(--radius-md); background: var(--blue-500); color: #fff; text-decoration: none; border: 0; cursor: pointer; }
.lh-account-endpoint .woocommerce-button:hover, .lh-account-endpoint .button:hover { background: var(--blue-600); color: #fff; }
.lh-account-endpoint .form-row label { display: block; font-size: 14px; font-weight: 700; color: var(--text-strong); margin-bottom: 6px; }
.lh-account-endpoint .input-text, .lh-account-endpoint select { width: 100%; box-sizing: border-box; font-family: var(--font-sans); font-size: 15px; border: 1px solid var(--border-default); border-radius: var(--radius-md); padding: 12px 14px; min-height: 48px; }
.lh-account-endpoint .woocommerce-MyAccount-content, .lh-account-endpoint .woocommerce-MyAccount-content > * { max-width: 100%; }
body.lh-sf .woocommerce-MyAccount-content { float: none; width: 100%; }
body.lh-sf .woocommerce-MyAccount-navigation { display: none; }
@media (max-width: 900px) { .lh-account-grid { grid-template-columns: 1fr; } .lh-account-title { font-size: 30px; } .lh-card { padding: 24px; } }

/* ticket form */
.lh-ticket-form { background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); box-shadow: var(--shadow-md); padding: 40px; }
.lh-ticket-done { background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); box-shadow: var(--shadow-md); padding: 80px 40px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 16px; }
.lh-ticket-check { width: 56px; height: 56px; border-radius: 50%; background: var(--green-50); color: var(--green-600); display: flex; align-items: center; justify-content: center; }
.lh-ticket-done-title { font-weight: 800; font-size: 24px; color: var(--text-strong); }
.lh-ticket-done p { margin: 0; max-width: 40ch; font-size: 16px; color: var(--text-muted); line-height: 1.65; }
.lh-ticket-done code { font-family: var(--font-mono); font-weight: 700; color: var(--text-strong); }
@media (max-width: 720px) { .lh-ticket-form, .lh-ticket-done { padding: 24px; } }

/* prose fallback (privacy, refund policy, plain pages) */
.lh-prose { max-width: 760px; }
.lh-prose h1, .lh-prose h2, .lh-prose h3 { color: var(--text-strong); letter-spacing: -.015em; }
.lh-prose p, .lh-prose li { line-height: 1.65; }
.lh-ck-head { margin: 0 0 8px; font-size: clamp(26px, 3.2vw, 38px); font-weight: 800; letter-spacing: -.02em; color: var(--text-strong); }
.lh-ck-sub { margin: 0 0 30px; color: var(--text-muted); font-size: 16px; }

/* WooCommerce shop and product fallback inside the shell */
.lh-woo-fallback .woocommerce-products-header, .lh-woo-fallback .woocommerce-result-count, .lh-woo-fallback .woocommerce-ordering { display: none; }
.lh-woo-fallback ul.products { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; margin: 0; padding: 0; list-style: none; }
.lh-woo-fallback ul.products li.product { background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 28px; margin: 0; width: auto; float: none; display: flex; flex-direction: column; gap: 10px; }
.lh-woo-fallback ul.products li.product img { display: none; }
.lh-woo-fallback ul.products li.product .woocommerce-loop-product__title { font-size: 20px; font-weight: 700; color: var(--text-strong); padding: 0; }
.lh-woo-fallback ul.products li.product .price, .lh-woo-fallback .product .price { font-size: 18px; font-weight: 800; color: var(--text-strong); }
.lh-woo-fallback .button, .lh-woo-fallback .single_add_to_cart_button { display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; padding: 14px 26px; border-radius: var(--radius-md); background: var(--blue-500); color: #fff; text-decoration: none; border: 0; cursor: pointer; }
.lh-woo-fallback .button:hover, .lh-woo-fallback .single_add_to_cart_button:hover { background: var(--blue-600); color: #fff; }
.lh-woo-fallback .woocommerce-product-gallery, .lh-woo-fallback .product_meta, .lh-woo-fallback .related.products, .lh-woo-fallback .woocommerce-breadcrumb { display: none; }
.lh-woo-fallback .product .summary { float: none; width: 100%; max-width: 760px; }
.lh-woo-fallback .product .product_title { font-size: 38px; font-weight: 800; letter-spacing: -.02em; color: var(--text-strong); margin: 0 0 12px; }
.lh-woo-fallback .woocommerce-tabs { max-width: 760px; }
.lh-woo-fallback .woocommerce-tabs ul.tabs { display: none; }
.lh-woo-fallback .woocommerce-tabs .panel h2 { display: none; }
.lh-woo-fallback .woocommerce-tabs .panel { margin-top: 24px; }
@media (max-width: 760px) { .lh-woo-fallback ul.products { grid-template-columns: 1fr; } }

/* ------------------------------------------------------------ cart + checkout (classic Woo markup) */
.lh-checkout-wrap { padding: 44px 0 60px; }
/* woocommerce-blocktheme.css caps .woocommerce at max-width:1000px on cart,
   checkout and account, which held this content 200px short of the header and
   footer. max-width:none hands these pages back the site grid. */
body.lh-sf.woocommerce-cart .lh-main .woocommerce, body.lh-sf.woocommerce-checkout .lh-main .woocommerce, body.lh-sf.woocommerce-account .lh-main .woocommerce { max-width: none; }
body.lh-sf.woocommerce-cart .lh-main .woocommerce, body.lh-sf.woocommerce-checkout .lh-main .woocommerce { display: grid; grid-template-columns: 1fr var(--lh-aside); gap: 24px; align-items: start; }
body.lh-sf .lh-main .woocommerce-notices-wrapper, body.lh-sf .lh-main .woocommerce > .woocommerce-error, body.lh-sf .lh-main .woocommerce > .woocommerce-message, body.lh-sf .lh-main .woocommerce > .woocommerce-info { grid-column: 1 / -1; }
body.lh-sf .woocommerce-cart-form, body.lh-sf .cart-collaterals .cart_totals, body.lh-sf #customer_details, body.lh-sf .woocommerce-order { background: #fff; border: 1px solid var(--lh-line); border-radius: var(--lh-r); padding: 32px; }
body.lh-sf .cart-collaterals { position: sticky; top: 96px; }
body.lh-sf .woocommerce-cart-form table.shop_table { border: 0; margin: 0; width: 100%; border-collapse: collapse; }
body.lh-sf .woocommerce-cart-form thead { display: none; }
body.lh-sf .woocommerce-cart-form table.shop_table tbody { display: block; }
body.lh-sf tr.woocommerce-cart-form__cart-item { display: grid !important; grid-template-columns: 44px 1fr auto; gap: 4px 16px; align-items: start; grid-template-areas: "thumb name subtotal" "thumb remove subtotal"; padding: 20px 0; border-bottom: 1px solid var(--lh-line-soft); }
body.lh-sf tr.woocommerce-cart-form__cart-item:last-of-type { border-bottom: 0; }
body.lh-sf tr.woocommerce-cart-form__cart-item td { border: 0 !important; padding: 0 !important; background: transparent !important; display: block !important; text-align: left !important; }
body.lh-sf table.shop_table tr td::before { display: none !important; content: none !important; }
body.lh-sf td.product-thumbnail, body.lh-sf .woocommerce-cart-form .product-thumbnail { grid-area: thumb; width: 44px !important; }
body.lh-sf td.product-name { grid-area: name; font-size: 16px; font-weight: 700; letter-spacing: -.012em; color: var(--text-strong); }
body.lh-sf td.product-name a { color: var(--lh-text); text-decoration: none; }
body.lh-sf td.product-subtotal { grid-area: subtotal; font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; text-align: right !important; min-width: 78px; color: var(--text-strong); }
body.lh-sf tr.woocommerce-cart-form__cart-item td.product-price, body.lh-sf tr.woocommerce-cart-form__cart-item td.product-quantity, body.lh-sf td.product-price, body.lh-sf td.product-quantity, body.lh-sf td.actions { display: none !important; }
body.lh-sf td.product-remove { grid-area: remove; }
body.lh-sf td.product-remove a.remove { font-size: 0; color: var(--lh-text-3) !important; background: none; width: auto; height: auto; line-height: 1.4; text-align: left; display: inline-block; font-weight: 400; }
body.lh-sf td.product-remove a.remove::after { content: "Remove"; font-size: 13px; font-weight: 600; font-family: var(--font-sans); }
body.lh-sf td.product-remove a.remove:hover { color: var(--lh-text) !important; text-decoration: underline; background: none; }
.lh-thumb { width: 44px; height: 44px; flex: none; border-radius: var(--radius-md); display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: 14px; font-weight: 600; color: #fff; }
/* Festivello ships a real brand mark, so it renders as an image rather than a monogram. */
img.lh-thumb.lh-thumb-img { display: block; object-fit: cover; background: none; box-shadow: inset 0 0 0 1px rgba(34,48,60,.08); }
.lh-thumb-g { background: var(--lh-shield); } .lh-thumb-f { background: var(--lh-fest); }
.lh-li-meta { display: block; font-family: var(--font-sans); font-size: 13px; line-height: 1.5; color: var(--text-muted); font-weight: 400; margin-top: 4px; }
body.lh-sf .cart_totals h2 { margin: 0 0 16px; font-size: 12px; font-family: var(--font-sans); font-weight: 700; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-muted); }
body.lh-sf .cart_totals table.shop_table { border: 0; margin: 0 0 4px; width: 100%; }
body.lh-sf .cart_totals table.shop_table tr { display: flex; justify-content: space-between; align-items: baseline; width: 100%; }
body.lh-sf .cart_totals table.shop_table th, body.lh-sf .cart_totals table.shop_table td { display: block !important; border: 0; background: transparent; padding: 12px 0; font-size: 14px; font-weight: 400; color: var(--text-body); }
body.lh-sf .cart_totals table.shop_table td { text-align: right; color: var(--lh-text); font-weight: 600; font-variant-numeric: tabular-nums; }
body.lh-sf .cart_totals table.shop_table .order-total th, body.lh-sf .cart_totals table.shop_table .order-total td { border-top: 1px solid var(--lh-line); padding-top: 16px; font-size: 16px; color: var(--text-strong); font-weight: 700; }
body.lh-sf .cart_totals table.shop_table .order-total td { font-size: 20px; font-weight: 800; }
body.lh-sf .wc-proceed-to-checkout { padding: 0; margin-top: 24px; display: flex; flex-direction: column; gap: 12px; }
body.lh-sf .wc-proceed-to-checkout a.checkout-button { display: inline-flex; align-items: center; justify-content: center; width: 100%; margin: 0; font-family: var(--font-sans); font-size: 16px; font-weight: 700; padding: 16px 26px; min-height: 52px; border-radius: var(--lh-r-sm); background: var(--lh-action-bg); color: var(--lh-action-fg); text-decoration: none; box-shadow: var(--shadow-cta); transition: background .16s ease; }
body.lh-sf .wc-proceed-to-checkout a.checkout-button:hover { background: var(--blue-600); color: #fff; }
.lh-trust { display: flex; align-items: center; justify-content: center; gap: 7px; margin: 16px 0 0; font-family: var(--font-sans); font-size: 12px; font-weight: 600; letter-spacing: normal; color: var(--text-subtle); }
body.lh-sf form.woocommerce-checkout { display: grid; grid-template-columns: 1fr 340px; gap: 0 26px; align-items: start; grid-template-areas: "details heading" "details review"; grid-template-rows: auto 1fr; }
body.lh-sf .lh-main .woocommerce:has(form.woocommerce-checkout) { display: block; }
body.lh-sf #customer_details { grid-area: details; display: block; }
body.lh-sf #customer_details .col-1, body.lh-sf #customer_details .col-2 { float: none; width: 100%; }
body.lh-sf #order_review_heading { grid-area: heading; margin: 0; background: #fff; border: 1px solid var(--lh-line); border-bottom: 0; border-radius: var(--lh-r) var(--lh-r) 0 0; padding: 32px 32px 0; font-size: 12px; font-family: var(--font-sans); font-weight: 700; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-muted); }
body.lh-sf #order_review { grid-area: review; background: #fff; border: 1px solid var(--lh-line); border-top: 0; border-radius: 0 0 var(--lh-r) var(--lh-r); padding: 16px 32px 32px; }
body.lh-sf .woocommerce-billing-fields h3, body.lh-sf .woocommerce-account-fields h3 { margin: 0 0 14px; display: flex; align-items: center; gap: 10px; font-family: var(--font-sans); font-size: 12px; font-weight: 700; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-muted); }
body.lh-sf .woocommerce-billing-fields h3::after { content: ""; flex: 1; height: 1px; background: var(--lh-line-soft); }
body.lh-sf .form-row { margin: 0 0 16px; padding: 0; }
body.lh-sf .form-row label { display: block; font-size: 14px; font-weight: 700; color: var(--text-strong); margin-bottom: 6px; font-family: var(--font-sans); }
body.lh-sf .form-row .required { color: var(--lh-text-3); text-decoration: none; }
body.lh-sf .input-text, body.lh-sf .woocommerce form .form-row .input-text, body.lh-sf .woocommerce form .form-row textarea.input-text { width: 100%; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: #fff; padding: 12px 14px; font-family: var(--font-sans); font-size: 15px; color: var(--text-strong); min-height: 48px; box-sizing: border-box; }
body.lh-sf .input-text:focus { outline: none; border-color: var(--blue-500); box-shadow: 0 0 0 3px rgba(13,129,245,.35); }
body.lh-sf .lh-field-email .input-text, body.lh-sf .woocommerce form .form-row.lh-field-email .input-text { font-family: var(--font-sans); font-size: 15px; }
body.lh-sf .select2-container--default .select2-selection--single { height: 48px; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: #fff; }
body.lh-sf .select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 46px; padding-left: 14px; color: var(--text-strong); font-size: 15px; }
body.lh-sf .select2-container--default .select2-selection--single .select2-selection__arrow { height: 46px; }
body.lh-sf .woocommerce-additional-fields { display: none; }
body.lh-sf .woocommerce-form-login-toggle .woocommerce-info { grid-column: auto; }
body.lh-sf table.woocommerce-checkout-review-order-table { border: 0; width: 100%; border-collapse: collapse; margin: 0; }
body.lh-sf .woocommerce-checkout-review-order-table thead { display: none; }
body.lh-sf .woocommerce-checkout-review-order-table td, body.lh-sf .woocommerce-checkout-review-order-table th { border: 0; background: transparent; padding: 13px 0; font-size: 14px; color: var(--lh-text-2); font-weight: 400; }
body.lh-sf .woocommerce-checkout-review-order-table tr.cart_item { border-bottom: 1px solid var(--lh-line-soft); }
body.lh-sf .woocommerce-checkout-review-order-table tr.cart_item td.product-name { font-weight: 700; color: var(--lh-text); letter-spacing: -.012em; }
body.lh-sf .woocommerce-checkout-review-order-table .product-quantity { display: none; }
body.lh-sf .woocommerce-checkout-review-order-table td.product-total { text-align: right; font-weight: 700; color: var(--lh-text); font-variant-numeric: tabular-nums; }
body.lh-sf .woocommerce-checkout-review-order-table tfoot th { text-align: left; font-weight: 400; padding: 12px 0; }
body.lh-sf .woocommerce-checkout-review-order-table tfoot td { text-align: right; font-weight: 600; color: var(--text-strong); font-variant-numeric: tabular-nums; padding: 12px 0; }
body.lh-sf .woocommerce-checkout-review-order-table tr.cart-subtotal th, body.lh-sf .woocommerce-checkout-review-order-table tr.cart-subtotal td { border-top: 1px solid var(--lh-line); padding-top: 13px; }
body.lh-sf .woocommerce-checkout-review-order-table tr.order-total th, body.lh-sf .woocommerce-checkout-review-order-table tr.order-total td { border-top: 1px solid var(--lh-line); padding-top: 16px; font-size: 16px; color: var(--text-strong); font-weight: 700; }
body.lh-sf .woocommerce-checkout-review-order-table tr.order-total td { font-size: 20px; font-weight: 800; }
body.lh-sf #payment { background: transparent; border-radius: 0; }
body.lh-sf #payment ul.payment_methods { border-bottom: 0; padding: 14px 0 0; margin: 0; }
body.lh-sf #payment ul.payment_methods li { list-style: none; }
body.lh-sf #payment ul.payment_methods label { font-size: 14px; font-weight: 600; color: var(--lh-text); }
body.lh-sf #payment div.payment_box { background: var(--lh-surface); border: 1px solid var(--lh-line-soft); border-radius: var(--lh-r-sm); color: var(--lh-text-2); font-size: 13px; margin: 10px 0; }
body.lh-sf #payment div.payment_box::before { display: none; }
body.lh-sf #payment div.form-row.place-order { padding: 6px 0 0; }
body.lh-sf #place_order { width: 100%; font-family: var(--font-sans); font-size: 16px; font-weight: 700; padding: 16px 26px; min-height: 52px; border-radius: var(--lh-r-sm); border: 0; background: var(--lh-action-bg); color: var(--lh-action-fg); cursor: pointer; box-shadow: var(--shadow-cta); transition: background .16s ease; }
body.lh-sf #place_order:hover { background: var(--blue-600); }
body.lh-sf .woocommerce-privacy-policy-text p, body.lh-sf .woocommerce-terms-and-conditions-wrapper p { margin: 12px 0 0; font-size: 12px; color: var(--text-subtle); font-weight: 400; text-align: center; }
body.lh-sf .lh-main .woocommerce:has(.woocommerce-order) { display: block; }
body.lh-sf .woocommerce-order { max-width: 720px; }
body.lh-sf .woocommerce-thankyou-order-received { font-size: 17px; font-weight: 600; color: var(--lh-text); margin-top: 0; }
body.lh-sf ul.woocommerce-order-overview { display: flex; flex-wrap: wrap; gap: 10px 26px; margin: 16px 0; padding: 0; list-style: none; font-size: 13px; color: var(--lh-text-2); }
body.lh-sf ul.woocommerce-order-overview li { border: 0; padding: 0; margin: 0; float: none; }
body.lh-sf .cart-empty.woocommerce-info, body.lh-sf .return-to-shop { grid-column: 1 / -1; padding: 0; margin: 0; }
body.lh-sf .return-to-shop a.button { display: inline-flex; align-items: center; font-family: var(--font-sans); font-size: 16px; font-weight: 700; padding: 16px 26px; border-radius: var(--lh-r-sm); background: var(--lh-action-bg); color: var(--lh-action-fg); text-decoration: none; }
/* Coupons are enabled in WooCommerce; the disclosure below is the way into them. */
body.lh-sf .lh-main .woocommerce *, body.lh-sf .lh-main .woocommerce *::before, body.lh-sf .lh-main .woocommerce *::after { box-sizing: border-box; }
body.lh-sf .cart-collaterals, body.lh-sf .cart-collaterals .cart_totals { width: 100% !important; max-width: 100% !important; float: none !important; }
@media (max-width: 1024px) {
  /* Must match the specificity of the two-column rule above, otherwise the
     cart and checkout keep their 340px sidebar track on small screens and
     push past the viewport. Breakpoint matches Elementor tablet. */
  body.lh-sf.woocommerce-cart .lh-main .woocommerce, body.lh-sf.woocommerce-checkout .lh-main .woocommerce { grid-template-columns: minmax(0, 1fr); }
  body.lh-sf .cart-collaterals { position: static; }
  body.lh-sf form.woocommerce-checkout { grid-template-columns: 1fr; grid-template-areas: "details" "heading" "review"; grid-template-rows: auto auto auto; gap: 0; }
  body.lh-sf #customer_details { margin-bottom: 24px; }
}
@media (max-width: 860px) {
  .lh-checkout-wrap, .lh-section { padding: 32px 0 48px; }
  body.lh-sf tr.woocommerce-cart-form__cart-item { grid-template-columns: 38px 1fr; grid-template-areas: "thumb name" "thumb remove" "subtotal subtotal"; }
  body.lh-sf td.product-subtotal { text-align: left !important; padding-top: 8px !important; }
}
@media (prefers-reduced-motion: reduce) { body.lh-sf * { transition: none !important; animation: none !important; } }

/* shop + product fallback, stronger selectors */
body.lh-sf .lh-woo-fallback ul.products li.product img, body.lh-sf .lh-woo-fallback .wc-block-components-product-image, body.lh-sf .lh-woo-fallback .wc-block-grid__product-image, body.lh-sf .lh-woo-fallback img.woocommerce-placeholder, body.lh-sf .lh-woo-fallback .attachment-woocommerce_thumbnail, body.lh-sf .lh-woo-fallback .woocommerce-product-gallery { display: none !important; }
body.lh-sf .lh-woo-fallback div.product div.summary, body.lh-sf .lh-woo-fallback .woocommerce div.product div.summary { float: none !important; width: 100% !important; max-width: 760px; }
body.lh-sf .lh-woo-fallback h1.lh-ck-head + .lh-ck-sub { margin-bottom: 8px; }
body.lh-sf .lh-woo-fallback .woocommerce-products-header__title { display: none; }
body.lh-sf .lh-woo-fallback ul.products li.product .woocommerce-loop-product__title { font-size: 20px; font-weight: 700; color: var(--text-strong); padding: 0; }
body.lh-sf .lh-woo-fallback ul.products li.product a.button, body.lh-sf .lh-woo-fallback ul.products li.product .wp-block-button__link { align-self: flex-start; }
body.lh-sf .lh-woo-fallback .woocommerce-product-details__short-description p { font-size: 16px; line-height: 1.65; color: var(--text-muted); }
body.lh-sf .lh-woo-fallback form.cart { display: flex; gap: 12px; align-items: center; margin: 24px 0; }
body.lh-sf .lh-woo-fallback form.cart .quantity { display: none; }

/* account wrapper is a plain block; product fallback hides reviews */
body.lh-sf.woocommerce-account .lh-main .woocommerce { display: block; }
body.lh-sf .lh-woo-fallback #reviews, body.lh-sf .lh-woo-fallback .woocommerce-Reviews, body.lh-sf .lh-woo-fallback #tab-reviews { display: none !important; }

/* ------------------------------------------------------------ cart + checkout consistency pass
   Added 2026-09-09. Companion to the fixes inline above. Covers the empty-cart
   state, the coupon disclosure, the GST row and the express-wallet buttons. */

/* --- GST / tax rows. WooCommerce emits tr.tax-rate when itemised and
   tr.tax-total when combined. Both must read like the subtotal row, not like
   part of the total block underneath. */
body.lh-sf .cart_totals table.shop_table tr.tax-rate th,
body.lh-sf .cart_totals table.shop_table tr.tax-rate td,
body.lh-sf .cart_totals table.shop_table tr.tax-total th,
body.lh-sf .cart_totals table.shop_table tr.tax-total td { padding: 12px 0; font-size: 14px; }
body.lh-sf .cart_totals table.shop_table tr.tax-rate td,
body.lh-sf .cart_totals table.shop_table tr.tax-total td { font-weight: 600; color: var(--text-strong); }
body.lh-sf .woocommerce-checkout-review-order-table tr.tax-rate th,
body.lh-sf .woocommerce-checkout-review-order-table tr.tax-total th { text-align: left; font-weight: 400; padding: 12px 0; }
body.lh-sf .woocommerce-checkout-review-order-table tr.tax-rate td,
body.lh-sf .woocommerce-checkout-review-order-table tr.tax-total td { text-align: right; font-weight: 600; color: var(--text-strong); font-variant-numeric: tabular-nums; padding: 12px 0; }

/* --- Coupon disclosure. Lives at the bottom of the items card so the summary
   panel keeps an unbroken read from Subtotal to Total to the one button. */
body.lh-sf .woocommerce-form-coupon-toggle { margin: 20px 0 0; padding: 20px 0 0; border-top: 1px solid var(--gray-100); }
body.lh-sf .woocommerce-form-coupon-toggle .woocommerce-info { background: none; border: 0; padding: 0; margin: 0; color: var(--text-muted); font-size: 14px; display: block; }
body.lh-sf .woocommerce-form-coupon-toggle .woocommerce-info::before { display: none; }
body.lh-sf .woocommerce-form-coupon-toggle a { font-family: var(--font-sans); font-size: 14px; font-weight: 600; color: var(--text-link); text-decoration: none; }
body.lh-sf .woocommerce-form-coupon-toggle a:hover { text-decoration: underline; }
body.lh-sf form.checkout_coupon { margin: 16px 0 0; padding: 0; border: 0; border-radius: 0; background: none; display: flex; flex-wrap: wrap; gap: 12px; align-items: stretch; }
body.lh-sf form.checkout_coupon .form-row { margin: 0; padding: 0; float: none; width: auto; }
body.lh-sf form.checkout_coupon .form-row-first { flex: 1 1 200px; }
body.lh-sf form.checkout_coupon .form-row-last { flex: 0 0 auto; }
body.lh-sf form.checkout_coupon p:not(.form-row) { display: none; }
/* The cart page renders its own coupon controls inside td.actions instead. */
body.lh-sf .woocommerce-cart-form td.actions .coupon { display: flex; flex-wrap: wrap; gap: 12px; align-items: stretch; margin: 20px 0 0; padding: 20px 0 0; border-top: 1px solid var(--gray-100); }
body.lh-sf .woocommerce-cart-form td.actions .coupon label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
body.lh-sf #coupon_code { flex: 1 1 200px; width: auto; min-height: 48px; height: auto; padding: 12px 14px; border: 1px solid var(--border-default); border-radius: var(--radius-md); font-family: var(--font-sans); font-size: 15px; color: var(--text-strong); box-sizing: border-box; }
body.lh-sf #coupon_code:focus { outline: none; border-color: var(--blue-500); box-shadow: 0 0 0 3px rgba(13,129,245,.35); }
/* Apply is deliberately secondary. There is only one primary action per page. */
body.lh-sf form.checkout_coupon button[name="apply_coupon"],
body.lh-sf .coupon button[name="apply_coupon"] { flex: 0 0 auto; min-height: 48px; padding: 12px 22px; font-family: var(--font-sans); font-size: 15px; font-weight: 700; border-radius: var(--radius-md); background: #fff; color: var(--text-strong); border: 1px solid var(--border-default); cursor: pointer; transition: background var(--dur-fast) ease; }
body.lh-sf form.checkout_coupon button[name="apply_coupon"]:hover,
body.lh-sf .coupon button[name="apply_coupon"]:hover { background: var(--gray-100); }
body.lh-sf .woocommerce-cart-form td.actions button[name="update_cart"] { display: none; }
@media (max-width: 860px) {
  body.lh-sf form.checkout_coupon .form-row-first,
  body.lh-sf #coupon_code { flex: 1 1 100%; }
  body.lh-sf form.checkout_coupon button[name="apply_coupon"],
  body.lh-sf .coupon button[name="apply_coupon"] { flex: 1 1 100%; }
}

/* --- Express wallet buttons (Stripe injects these). Keep them visually below
   the real call to action rather than out-sizing it. */
body.lh-sf .wc-proceed-to-checkout [class*="express-checkout"] button,
body.lh-sf .wc-proceed-to-checkout [id*="express-checkout"] button,
body.lh-sf .wc-proceed-to-checkout [class*="express-payment"] button { max-height: 48px; border-radius: var(--radius-md) !important; }

/* --- wc-order-attribution-inputs is a real element in the grid flow and was
   consuming a cell. It carries no visible content. */
body.lh-sf .lh-main .woocommerce > wc-order-attribution-inputs { display: contents; }

/* --- Empty cart. WooCommerce 11 dropped .cart-empty/.woocommerce-info here and
   renders .wc-empty-cart-message > .wc-block-components-notice-banner instead,
   so the old selectors matched nothing and the state was left unstyled. */
body.lh-sf.woocommerce-cart .lh-main .woocommerce:has(.wc-empty-cart-message) { grid-template-columns: minmax(0, 1fr); }
body.lh-sf .wc-empty-cart-message, body.lh-sf .cart-empty, body.lh-sf .return-to-shop { grid-column: 1 / -1; }
body.lh-sf .wc-empty-cart-message .wc-block-components-notice-banner { background: none; border: 0; border-radius: 0; box-shadow: none; padding: 0 !important; margin: 0; display: block; font-size: inherit; color: inherit; }
body.lh-sf .wc-empty-cart-message .wc-block-components-notice-banner > svg { display: none; }
body.lh-sf .wc-empty-cart-message .wc-block-components-notice-banner__content { font-family: var(--font-sans); font-size: 16px; line-height: 1.65; color: var(--text-muted); }
/* The message and the action are separate siblings in the markup, so the card is
   drawn by wrapping rules on each rather than by one container. */
body.lh-sf.woocommerce-cart .lh-main .woocommerce:has(.wc-empty-cart-message) { display: block; max-width: 520px; margin: 0 auto; background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 48px 40px; text-align: center; }
body.lh-sf .wc-empty-cart-message { display: flex; flex-direction: column; align-items: center; gap: 16px; }
body.lh-sf .wc-empty-cart-message::before { content: ""; width: 56px; height: 56px; border-radius: 50%; background: var(--blue-50) center / 24px 24px no-repeat; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230A68C7' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='20' r='1.4'/%3E%3Ccircle cx='18' cy='20' r='1.4'/%3E%3Cpath d='M2 3h2.3l2.4 12.2a1.6 1.6 0 0 0 1.6 1.3h8.9a1.6 1.6 0 0 0 1.6-1.3L21 7H5.2'/%3E%3C/svg%3E"); }
body.lh-sf .wc-empty-cart-message::after { content: "Your cart is empty"; font-family: var(--font-sans); font-size: 24px; font-weight: 600; color: var(--text-strong); order: -1; }
body.lh-sf .wc-empty-cart-message .wc-block-components-notice-banner { max-width: 40ch; }
body.lh-sf .return-to-shop { margin: 24px 0 0; padding: 0; }
@media (max-width: 860px) {
  body.lh-sf.woocommerce-cart .lh-main .woocommerce:has(.wc-empty-cart-message) { padding: 32px 24px; }
}
body.lh-sf .wc-proceed-to-checkout .lh-keep-browsing { display: block; text-align: center; margin: 4px 0 0; }

/* ------------------------------------------------------------ 404
   The 404 renders inside the storefront shell, so it only needs its own body.
   Built from the same card idiom as .lh-ticket-done so it reads as this site
   rather than a theme default. */
.lh-404 { max-width: 560px; margin: 0 auto; padding: 72px 0 96px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 16px; }
.lh-404-code { font-family: var(--font-mono); font-size: 13px; font-weight: 600; letter-spacing: var(--tracking-caps); color: var(--blue-600); background: var(--blue-50); border-radius: 999px; padding: 6px 14px; }
.lh-404-title { margin: 8px 0 0; font-family: var(--font-sans); font-size: 38px; font-weight: 700; letter-spacing: -.015em; line-height: 1.2; color: var(--text-strong); }
.lh-404-text { margin: 0; max-width: 44ch; font-size: 16px; line-height: 1.65; color: var(--text-muted); }
.lh-404-actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 8px; }
.lh-404-help { margin: 16px 0 0; font-size: 14px; color: var(--text-muted); }
@media (max-width: 860px) {
  .lh-404 { padding: 48px 0 64px; }
  .lh-404-title { font-size: 30px; }
  .lh-404-actions { width: 100%; flex-direction: column; }
  .lh-404-actions .lh-btn { width: 100%; }
}

/* ------------------------------------------------------------ cart (approved layout)
   The cart renders from templates/woo/cart.php rather than the WooCommerce
   shortcode, so these are our own classes. The older .woocommerce-cart-form
   rules further up still cover the checkout review table and the mini cart. */
.lh-cart-wrap { padding: 40px 0 96px; }

.lh-cart-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin: 0 0 28px; }
.lh-cart-heading { display: flex; flex-direction: column; gap: 6px; }
.lh-cart-title { margin: 0; font-family: var(--font-sans); font-size: 44px; font-weight: 800; letter-spacing: -.025em; line-height: 1.05; color: var(--text-strong); }
.lh-cart-back { font-size: 15px; font-weight: 700; white-space: nowrap; }

.lh-cart-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.lh-cart-items, .lh-summary, .lh-assure { background: #fff; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 32px; box-sizing: border-box; }
.lh-cart-aside { display: flex; flex-direction: column; gap: 24px; position: sticky; top: 96px; }

.lh-card-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin: 0 0 20px; }
.lh-card-title { margin: 0; font-family: var(--font-sans); font-size: 20px; font-weight: 800; letter-spacing: -.015em; color: var(--text-strong); }
.lh-card-note { font-size: 13px; color: var(--text-muted); }

/* --- line item */
.lh-item { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); overflow: hidden; }
.lh-item + .lh-item { margin-top: 16px; }
.lh-item-top { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 16px; align-items: start; padding: 20px; }
.lh-item-main { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.lh-item-name { font-size: 16px; font-weight: 700; letter-spacing: -.012em; color: var(--text-strong); }
.lh-item-desc { font-size: 13.5px; line-height: 1.5; color: var(--text-muted); }
.lh-item-price { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; text-align: right; white-space: nowrap; }
.lh-item-total { font-size: 22px; font-weight: 800; letter-spacing: -.02em; color: var(--text-strong); font-variant-numeric: tabular-nums; }
.lh-item-unit { font-size: 12.5px; color: var(--text-muted); }

.lh-item-bar { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 12px 16px; background: var(--gray-50); border-top: 1px solid var(--border-subtle); }
.lh-item-bar-label { font-size: 11px; font-weight: 700; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--text-subtle); }
.lh-item-keys { font-size: 13px; color: var(--text-muted); }
.lh-item-remove { margin-left: auto; font-size: 13px; font-weight: 600; color: var(--text-muted); text-decoration: none; }
.lh-item-remove:hover { color: var(--text-strong); text-decoration: underline; }

/* --- quantity stepper. One licence key is issued per unit. */
.lh-qty { display: inline-flex; align-items: center; background: #fff; border: 1px solid var(--border-default); border-radius: var(--radius-md); overflow: hidden; }
.lh-qty-btn { width: 34px; height: 38px; border: 0; background: none; color: var(--text-body); font-size: 16px; font-weight: 700; line-height: 1; cursor: pointer; transition: background var(--dur-fast) ease; }
.lh-qty-btn:hover { background: var(--gray-100); color: var(--text-strong); }
.lh-qty-input { width: 40px; height: 38px; border: 0; border-left: 1px solid var(--border-subtle); border-right: 1px solid var(--border-subtle); text-align: center; font-family: var(--font-sans); font-size: 15px; font-weight: 700; color: var(--text-strong); background: #fff; -moz-appearance: textfield; appearance: textfield; }
.lh-qty-input::-webkit-outer-spin-button, .lh-qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.lh-qty-input:focus { outline: none; box-shadow: inset 0 0 0 2px var(--blue-200); }
/* The stepper submits the form itself, so the fallback button is only for no-JS. */
.lh-cart-update { margin-top: 16px; font-family: var(--font-sans); font-size: 14px; font-weight: 700; padding: 10px 18px; border-radius: var(--radius-md); border: 1px solid var(--border-default); background: #fff; color: var(--text-strong); cursor: pointer; }
.lh-cart-update:hover { background: var(--gray-100); }
.lh-has-js .lh-cart-update { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); margin: 0; }

/* --- order summary */
.lh-summary-lines { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.lh-summary-lines li { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; font-size: 15px; color: var(--text-muted); }
.lh-summary-lines li span:last-child { font-weight: 600; color: var(--text-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.lh-summary-discount span:last-child { color: var(--green-600); }
.lh-coupon-remove { margin-left: 8px; font-size: 12px; font-weight: 600; color: var(--text-subtle); text-decoration: none; }
.lh-coupon-remove:hover { text-decoration: underline; }

.lh-summary-total { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border-subtle); }
.lh-summary-total-label { font-size: 17px; font-weight: 700; color: var(--text-strong); }
.lh-summary-total-value { font-size: 34px; font-weight: 800; letter-spacing: -.03em; line-height: 1; color: var(--text-strong); font-variant-numeric: tabular-nums; }
.lh-summary-note { margin: 6px 0 0; text-align: right; font-size: 12px; color: var(--text-subtle); }
.lh-summary-cta { margin-top: 20px; font-size: 16px; padding: 16px 26px; min-height: 52px; box-shadow: var(--shadow-cta); }
.lh-summary-secure { margin: 12px 0 0; text-align: center; font-size: 12.5px; color: var(--text-subtle); }

/* --- coupon */
.lh-coupon { display: flex; gap: 12px; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border-subtle); }
.lh-coupon-input { flex: 1 1 auto; min-width: 0; min-height: 48px; padding: 12px 14px; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: #fff; font-family: var(--font-sans); font-size: 15px; color: var(--text-strong); box-sizing: border-box; }
.lh-coupon-input:focus { outline: none; border-color: var(--blue-500); box-shadow: 0 0 0 3px rgba(13,129,245,.28); }
.lh-coupon-apply { flex: none; min-height: 48px; padding: 12px 22px; font-family: var(--font-sans); font-size: 15px; font-weight: 700; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: #fff; color: var(--text-strong); cursor: pointer; transition: background var(--dur-fast) ease; }
.lh-coupon-apply:hover { background: var(--gray-100); }

/* --- reassurance panel */
.lh-assure ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
/* Inline flow, not grid: the bold lead-in and the sentence after it are separate
   nodes, so a two-column grid put them in different cells and wrapped the
   sentence one word per line inside the 18px tick column. */
.lh-assure li { position: relative; padding-left: 28px; font-size: 14px; line-height: 1.6; color: var(--text-muted); }
.lh-assure li::before { content: "\2713"; position: absolute; left: 0; top: 0; color: var(--green-500); font-weight: 700; }
.lh-assure b { color: var(--text-strong); font-weight: 700; }

@media (max-width: 1024px) {
  .lh-cart-grid { grid-template-columns: minmax(0, 1fr); }
  .lh-cart-aside { position: static; }
}
@media (max-width: 860px) {
  .lh-cart-wrap { padding: 32px 0 64px; }
  .lh-cart-title { font-size: 32px; }
  .lh-cart-items, .lh-summary, .lh-assure { padding: 24px; }
  .lh-item-top { grid-template-columns: 44px minmax(0, 1fr); }
  .lh-item-price { grid-column: 1 / -1; flex-direction: row; align-items: baseline; justify-content: space-between; text-align: left; }
  .lh-item-bar { gap: 12px; }
  .lh-item-remove { margin-left: 0; }
  .lh-coupon { flex-wrap: wrap; }
  .lh-coupon-input, .lh-coupon-apply { flex: 1 1 100%; }
}