/*
File: /wp-content/themes/legalsifter-child/style.css
Updated: 2026-08-16
Theme Name: LegalSifter WP Child
Template: generatepress
Version: 3.3.7
Description: Child theme + reusable "module" CSS library for the LegalSifter rebuild. Every page is built by combining these module classes inside Custom HTML blocks, so a single edit here updates every page that uses that module. See CHANGELOG.md for version history — bump this Version field with every edit going forward so the enqueued stylesheet cache-busts correctly.

v2 note: tokens and class names below were updated to match real
values/markup already found in 9 pages that carry prior work
(embedded per-page <style> blocks from earlier build attempts).
Rather than keep two incompatible naming systems, this stylesheet
adopts THEIR vocabulary (.ls-inner, .ls-button, .ls-lead, .ls-actions,
.ls-media-frame, .ls-value-grid, .is-reverse, etc.) so those 9 pages
can be reused as-is (just strip their embedded <style> block) and
the remaining ~138 pages get built against the same real system.
*/

/* =========================================================
   0. CONTAINER OVERRIDE
   Confirmed from actual page source: GeneratePress wraps the
   ENTIRE page in <div id="page" class="site grid-container ...">
   — #page IS the .grid-container being capped at 1425px, and it's
   an ANCESTOR of #content, not a descendant. The old selector
   (#content .grid-container) could never match it. This one does.
   ========================================================= */
html,body{margin:0 !important;padding:0 !important;}
#page.grid-container{
  max-width:100% !important;
  width:100% !important;
  margin-left:0 !important;
  margin-right:0 !important;
  padding-left:0 !important;
  padding-right:0 !important;
}
/* Kept as a harmless backup in case a different GP container mode
   nests another .grid-container inside #content. */
#content .grid-container{
  max-width:100% !important;
  width:100% !important;
  padding-left:0 !important;
  padding-right:0 !important;
}

/* =========================================================
   1. DESIGN TOKENS — real values, confirmed from prior work
   ========================================================= */
:root{
  --ls-purple:#6638B6;
  --ls-purple-dark:#4E278F;
  --ls-deep:#251545;
  --ls-green:#66C7A5;
  --ls-gray:#F2F2F2;
  --ls-soft:#F7F6F8;
  --ls-text:#333333;
  --ls-line:#DED9E8;
  --ls-white:#FFFFFF;

  --ls-font: 'Schibsted Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;

  --ls-space-xs: .5rem;
  --ls-space-sm: 1rem;
  --ls-space-md: 2rem;
  --ls-space-lg: 4rem;
  --ls-space-xl: 6rem;
  --ls-orange:#F26522;
  --ls-orange-dark:#D8540F;

  --ls-content-width: 1180px;   /* .ls-inner max-width */
  --ls-page-width: 1280px;      /* .ls-page outer max-width */
  --ls-radius: 16px;
  --ls-radius-lg: 22px;
  --ls-shadow: 0 10px 24px rgba(37,21,69,.08);
}

/* =========================================================
   2. BASE / LAYOUT PRIMITIVES
   ========================================================= */
body.ls-body,.ls-body{
  font-family:var(--ls-font);
  color:var(--ls-text);
  font-size:18px;
  line-height:1.65;
  overflow-x:hidden;
}
/* overflow-x:hidden at the BODY level (not on .ls-page or any
   inner wrapper) is the standard safe pairing for the 100vw
   breakout technique some pages use — guards against mobile
   horizontal scroll without clipping full-bleed sections the way
   overflow:hidden on an inner wrapper would. */
.ls-page{width:100%;}
/* Several pages use an inline 100vw + negative-margin "breakout"
   technique per-section to escape their parent's width. That
   technique has a classic flaw: 100vw includes the scrollbar width,
   the visible page doesn't, so they never quite match — causing
   content to sit shifted with a gap on one side. Now that #page and
   its ancestors are genuinely unconstrained, that workaround is not
   needed; plain 100% sits flush without the mismatch. Neutralized
   globally here rather than editing inline styles on every page. */
.ls-page section[style*="100vw"]{
  left:auto !important;
  right:auto !important;
  width:100% !important;
  margin-left:0 !important;
  margin-right:0 !important;
}
.ls-page *{box-sizing:border-box;}
.ls-page img,.ls-page video,.ls-page iframe{max-width:100%;}
.ls-page img{height:auto;vertical-align:middle;}
/* Was display:block, which broke every inline "icon + text" pattern
   sitewide (checkmark bullets stacking above their text instead of
   sitting beside it) — those icons are small inline <img> tags
   inside a text span, not standalone block images. Content images
   that DO need block display (.ls-media-frame img, etc.) already
   set that explicitly on their own selectors below. */

.ls-inner{width:min(100%,var(--ls-content-width));margin:0 auto;padding:0 28px;}
.ls-section{width:100%;padding:68px 0;}
/* IMPORTANT PATTERN: .ls-section is the full-width wrapper (carries
   full-bleed background); .ls-inner always goes INSIDE it, nested,
   to center/cap the readable content. Don't combine both classes
   on one element. */
.ls-section--white{background:#fff;}
.ls-section--gray{background:var(--ls-gray);}
.ls-section--soft{background:var(--ls-soft);}
.ls-section--purple{background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));color:#fff;}
.ls-section--purple h1,.ls-section--purple h2,.ls-section--purple h3,.ls-section--purple p,.ls-section--purple li{color:#fff!important;}
.ls-section--tight{padding:36px 0;}

.ls-page h1,.ls-page h2,.ls-page h3,.ls-page h4,
.ls-body h1,.ls-body h2,.ls-body h3,.ls-body h4{
  margin-top:0;color:var(--ls-deep);font-family:inherit;line-height:1.15;
}
.ls-page h1,.ls-body h1{margin-bottom:20px;color:var(--ls-purple);font-size:clamp(38px,4.5vw,56px);font-weight:800;letter-spacing:-.025em;}
.ls-page h2,.ls-body h2{margin-bottom:18px;font-size:clamp(30px,3.5vw,44px);font-weight:800;letter-spacing:-.015em;}
.ls-page h3,.ls-body h3{margin-bottom:14px;font-size:clamp(23px,2.5vw,32px);font-weight:800;}
.ls-page h4,.ls-body h4{margin-bottom:10px;font-size:21px;font-weight:800;}
.ls-page p,.ls-body p{margin-top:0;}
.ls-page a{color:var(--ls-purple);}
.ls-hero-video-stage{max-width:820px !important;}
/* Second bump — was 520px originally, then 680px, now 820px.
   If this still isn't the right element (see note in chat), this
   rule may simply not be reaching it. */

/* Bullet icon spacing: the JS in modules.js moves the icon out of
   its <span> to be a sibling instead, so the page's own
   display:flex container (already correctly set up with gap:12px)
   handles alignment and wrapping natively. No margin needed here —
   the flex gap provides it. flex-shrink:0 just stops the icon from
   getting squeezed if the row is tight on space. */
.ls-page img[src*="bullet-icon" i]{flex-shrink:0;}
/* Some pages' hero H1s were authored with the brand purple text
   color even on dark gradient backgrounds, making them nearly
   unreadable where the gradient itself passes through that same
   purple. Every other element in these heroes (lead text, list
   items) already correctly uses white; this catches the H1s that
   were missed, without touching headings on light backgrounds. */
.ls-page section[style*="linear-gradient"] h1{color:#fff !important;}

.ls-eyebrow{margin:0 0 12px;display:block;color:var(--ls-purple);font-size:14px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;}
.ls-lead{max-width:780px;font-size:20px;line-height:1.55;color:var(--ls-text);}
.ls-centered{text-align:center;}
.ls-centered .ls-lead{margin-left:auto;margin-right:auto;}
.ls-text-muted{color:#5D5D72;}

/* Buttons */
.ls-button,.ls-btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;padding:12px 26px;border-radius:999px;
  border:1px solid var(--ls-purple);background:var(--ls-purple);color:#fff;
  font-family:var(--ls-font);font-weight:750;font-size:16px;text-decoration:none;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease;
}
.ls-button:hover,.ls-btn:hover{background:var(--ls-purple-dark);border-color:var(--ls-purple-dark);color:#fff;transform:translateY(-2px);box-shadow:var(--ls-shadow);}
.ls-button--outline{background:transparent;color:var(--ls-purple);}
.ls-button--outline:hover{background:var(--ls-purple);color:#fff;}
/* Beats the generic ".ls-page a { color: purple }" rule below, which
   otherwise wins on specificity and makes button text invisible
   (purple text on purple background) until hover. */
.ls-page a.ls-button,.ls-page a.ls-btn{color:#fff;}
.ls-page a.ls-button--outline{color:var(--ls-purple);}
.ls-page a.ls-button--outline:hover{color:#fff;}
.ls-actions{display:flex;gap:var(--ls-space-sm);flex-wrap:wrap;margin-top:22px;}
.ls-centered .ls-actions{justify-content:center;}

/* =========================================================
   3. HERO
   ========================================================= */
/* SITEWIDE HERO STANDARDIZATION (2.3.0)
   Gray is now the DEFAULT hero background, not an opt-in modifier.
   ~12 product/service/industry pages were authored with a bare
   .ls-hero and so rendered on plain white, making the site look like
   a collection of unrelated pages. Making gray the default fixes all
   of them in one edit instead of twelve content patches.
   .ls-hero--gray still works (it's now a no-op alias) so existing
   pages that DO carry it are unaffected. Use .ls-hero--white to
   explicitly opt out on a page that needs a white hero. */
.ls-hero{padding:72px 0 62px;background:var(--ls-gray);}
.ls-hero--white{background:#fff;}
/* Purple-gradient heroes set their own background further down and
   must not be overridden by the gray default above. */
.ls-hero.ls-section--purple{background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));}
.ls-hero--gray{background:var(--ls-gray);}
.ls-hero--purple{background:linear-gradient(135deg,var(--ls-deep),var(--ls-purple));color:#fff;}
.ls-hero--purple h1,.ls-hero--purple .ls-lead{color:#fff;}
.ls-hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;}
.ls-hero-copy h1{margin-bottom:16px;}
@media (max-width:820px){.ls-hero-grid{grid-template-columns:1fr;}}

/* Rounded media frame used throughout (hero images, screenshots) */
.ls-media-frame{
  position:relative;overflow:hidden;border-radius:var(--ls-radius);
  background:#fff;border:1px solid var(--ls-line);padding:20px;box-shadow:var(--ls-shadow);
}
.ls-media-frame img{width:100%;height:auto;display:block;margin:0 auto;border-radius:11px;object-fit:contain;}
/* This specific screenshot has its own content sitting close to its
   right edge (baked into the image, not a frame padding issue) —
   a little extra padding on just this one compensates visually. */
.ls-media-frame:has(img[src*="contract-review2" i]){padding-right:44px;}

/* =========================================================
   4. PAIN-POINT LIST ("Sound familiar?" style)
   ========================================================= */
.ls-pain-points{display:grid;gap:0;max-width:760px;margin:0 auto;}
.ls-pain-points p{font-weight:600;font-size:1.05rem;padding:var(--ls-space-sm) 0;border-bottom:1px solid var(--ls-line);}

/* =========================================================
   5. FEATURE ROW (alternating image/text)
   ========================================================= */
.ls-feature-row{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center;padding-block:var(--ls-space-lg);}
.ls-feature-row.is-reverse .ls-feature-copy{order:2;}
.ls-feature-row.is-reverse .ls-media-frame{order:1;}
@media (max-width:820px){
  .ls-feature-row{grid-template-columns:1fr;padding-block:var(--ls-space-md);}
  .ls-feature-row.is-reverse .ls-feature-copy,
  .ls-feature-row.is-reverse .ls-media-frame{order:initial;}
}

/* =========================================================
   6. VALUE / ICON GRID (icon + heading + text cards)
   ========================================================= */
.ls-value-grid,.ls-icon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:34px;}
.ls-value-card,.ls-icon-card{padding:28px;border:1px solid var(--ls-line);border-radius:var(--ls-radius);background:#fff;text-align:center;box-shadow:var(--ls-shadow);}
.ls-value-icon{display:grid;min-height:90px;place-items:center;margin-bottom:14px;}
.ls-value-icon img,.ls-icon-card img{width:64px;height:64px;object-fit:contain;}
@media (max-width:980px){.ls-value-grid,.ls-icon-grid{grid-template-columns:1fr;}}

/* =========================================================
   7. STAT GRID (big numbers)
   ========================================================= */
/* STAT BAND (2.7.0)
   Pages author these as .ls-stat-grid > .ls-stat-card > .ls-stat-number
   + .ls-stat-label. The theme previously only styled .ls-stat-grid__num /
   .ls-stat-grid__label (BEM names that appear on ZERO pages), so the numbers
   rendered as unstyled body text on 1581, 1747 and 1790. Restyled to the class
   names actually in use, matching the live site: orange rule on the left,
   deep-navy figure, small muted label, left-aligned. */
/* Three markup shapes exist across the migrated pages and all must render
   identically: .ls-stat-grid > .ls-stat-card (+ .ls-stat-label OR a bare <p>)
   on 1790/1581, and .ls-stats-grid > .ls-stat on 1747. Selectors below cover
   all three rather than rewriting page content. */
.ls-stat-grid,.ls-stats-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:32px 40px;margin-top:var(--ls-space-md);text-align:left;
}
.ls-stat-card,.ls-stats-grid .ls-stat{
  border-left:3px solid var(--ls-orange);padding:6px 0 6px 20px;
}
.ls-stat-card .ls-stat-number,
.ls-stats-grid .ls-stat .ls-stat-number{
  font-size:clamp(34px,4vw,46px);font-weight:800;line-height:1.05;
  color:var(--ls-deep);letter-spacing:-.01em;display:block;
}
.ls-stat-card .ls-stat-label,
.ls-stat-card p,
.ls-stats-grid .ls-stat p{
  margin:10px 0 0;color:var(--ls-text);font-size:15px;line-height:1.35;display:block;
}
/* Legacy BEM aliases kept so any page still using them doesn't regress. */
.ls-stat-grid__num{font-size:2.5rem;font-weight:800;color:var(--ls-deep);display:block;}
.ls-stat-grid__label{color:#5D5D72;font-size:.95rem;}

/* =========================================================
   8. LOGO / INDUSTRY GRID
   ========================================================= */
.ls-logo-grid{display:flex;flex-wrap:wrap;gap:var(--ls-space-md);justify-content:center;align-items:center;opacity:.85;}
.ls-logo-grid img{max-height:32px;width:auto;filter:grayscale(1);}

/* =========================================================
   9. COMPARISON CARDS
   ========================================================= */
.ls-comparison{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--ls-space-md);}
.ls-comparison__card{border:1px solid var(--ls-line);border-radius:var(--ls-radius);padding:var(--ls-space-md);background:#fff;}

/* =========================================================
   10. NUMBERED STEPS
   ========================================================= */
.ls-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--ls-space-md);counter-reset:ls-step;}
.ls-steps__item{position:relative;padding-top:calc(var(--ls-space-md) + .5rem);}
.ls-steps__item::before{counter-increment:ls-step;content:counter(ls-step);position:absolute;top:0;left:0;width:2.25rem;height:2.25rem;border-radius:50%;background:var(--ls-purple);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;}

/* =========================================================
   10b. TABS — visual styling. modules.js already handles the
   click/aria-selected behavior; this was never actually styled,
   so buttons were falling back to the theme's default button CSS
   (that dark charcoal box was literally GeneratePress's stock
   button color, not a bug in the markup).
   ========================================================= */
.ls-tab-list{display:flex;flex-wrap:wrap;background:var(--ls-gray);}
.ls-tab-button{
  appearance:none;-webkit-appearance:none;border:0;background:transparent;
  color:var(--ls-text);font-family:var(--ls-font);font-weight:700;font-size:14px;
  letter-spacing:.03em;text-transform:uppercase;padding:20px 28px;cursor:pointer;
  position:relative;transition:background .15s ease,color .15s ease;
}
.ls-tab-button:hover{background:rgba(102,56,182,.08);}
.ls-tab-button[aria-selected="true"]{background:var(--ls-purple);color:#fff;}
.ls-tab-button[aria-selected="true"]:hover{background:var(--ls-purple);}
.ls-tab-button[aria-selected="true"]::after{
  content:'';position:absolute;left:50%;bottom:-8px;transform:translateX(-50%);
  border:8px solid transparent;border-top-color:var(--ls-purple);
}
.ls-tab-panel{padding:36px clamp(20px,4vw,44px);}
@media (max-width:640px){.ls-tab-button{padding:14px 18px;font-size:13px;}}

/* Simple 3-across benefit block grid (title + description pairs) */
.ls-benefit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--ls-space-lg);margin-top:var(--ls-space-md);}
.ls-benefit-item h4{color:var(--ls-purple);font-size:18px;margin:0 0 8px;}
.ls-benefit-item p{margin:0;color:var(--ls-text);}

/* FAQ accordion (2.4.0) — self-contained, native <details>/<summary>.
   Deliberately NOT dependent on Ultimate FAQs: that plugin's markup
   is still unverified live, and pages that carry their FAQ inline
   (rather than as plugin posts) need styling that works on its own.
   modules.js already syncs aria-expanded on these for a11y. */
.ls-faq{max-width:820px;margin:0 auto;}
.ls-faq details{
  border:1px solid var(--ls-line);border-radius:11px;background:#fff;
  margin-bottom:12px;overflow:hidden;
}
.ls-faq summary{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:18px 22px;cursor:pointer;list-style:none;
  font-weight:750;color:var(--ls-deep);font-size:17px;
}
.ls-faq summary::-webkit-details-marker{display:none;}
/* Purple +/− affordance matching the live site's accordion icon. */
.ls-faq summary::after{
  content:"+";flex-shrink:0;font-size:26px;font-weight:400;
  line-height:1;color:var(--ls-purple);transition:transform .2s ease;
}
.ls-faq details[open] summary::after{content:"\2212";}
.ls-faq summary:hover{background:var(--ls-soft);}
.ls-faq .ls-faq-body{padding:0 22px 20px;color:var(--ls-text);}
.ls-faq .ls-faq-body p{margin:0 0 12px;}
.ls-faq .ls-faq-body ul{margin:0 0 12px;padding-left:20px;}
.ls-faq .ls-faq-body li{margin-bottom:6px;}

/* White cards sitting inside a purple section: .ls-section--purple
   forces white text on every heading/p/li beneath it, which made card
   copy invisible (white on white). Scope the card contents back to
   dark text. */
.ls-section--purple .ls-value-card h1,.ls-section--purple .ls-value-card h2,
.ls-section--purple .ls-value-card h3,.ls-section--purple .ls-value-card h4,
.ls-section--purple .ls-value-card p,.ls-section--purple .ls-value-card li,
.ls-section--purple .ls-benefit-item h4,.ls-section--purple .ls-benefit-item p{
  color:var(--ls-deep)!important;
}
.ls-section--purple .ls-value-card p,.ls-section--purple .ls-benefit-item p{
  color:var(--ls-text)!important;
}

/* Grid for short one-line bullet lists (agreement types, supported
   integrations, etc.) — the standard stacked bullet pattern is for
   items with a description; this is for short labels only, so a
   single column wastes a lot of vertical space. */
.ls-agreement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px 32px;margin-top:var(--ls-space-md);}

/* "Featured Resources" card grid (blog/resource thumbnails linked
   from a product/industry page) */
.ls-resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px;margin-top:var(--ls-space-md);}
/* 2.9.2: .ls-resource-card is used as a whole-card <a> on the home and
   healthcare pages. Making it a flex column with equal-height stretch
   stops the "image in a box that's too big" effect - previously the
   anchor wrapped ONLY the <img> and the text sat outside it as a
   separate grid item, so the anchor stretched to the row height with
   the image floating at the top of an otherwise empty box. */
.ls-resource-card{
  display:flex;flex-direction:column;height:100%;text-decoration:none;
  border:1px solid var(--ls-line);border-radius:var(--ls-radius);
  overflow:hidden;background:#fff;box-shadow:var(--ls-shadow);
  transition:box-shadow .18s ease,transform .18s ease;
}
.ls-resource-card:hover{box-shadow:0 14px 34px rgba(0,0,0,.10);transform:translateY(-2px);}
.ls-resource-grid{align-items:stretch;}
.ls-resource-card .ls-resource-card-body{display:flex;flex-direction:column;flex:1;}
.ls-resource-card .ls-resource-card-body h3{color:var(--ls-deep);}
.ls-resource-card .ls-resource-card-body p{color:var(--ls-text);font-size:14px;line-height:1.55;margin:0 0 14px;}
.ls-resource-card .ls-resource-more{
  color:var(--ls-purple);font-weight:700;font-size:14px;margin-top:auto;
}
.ls-resource-card img{width:100%;height:180px;object-fit:cover;display:block;}
.ls-resource-card .ls-resource-card__body{padding:16px 18px;}

/* Big-number stat callouts (e.g. "95%+ Accuracy") */
/* (Former .ls-stats-grid / .ls-stat rules removed in 2.7.0 — they sat AFTER
   the stat-band component above and silently overrode it, forcing centred
   layout and purple figures on 1747. The unified component now lives in the
   STAT BAND section earlier in this file.) */

/* Nav "Get a Demo" CTA — orange, distinct from the rest of the
   primary menu. #menu-item-11747 is the confirmed ID; the href
   selector is a backup in case the mobile menu duplicates this
   item under a different auto-generated ID. Placeholder orange —
   swap --ls-orange above if you have an exact brand hex. */
#menu-item-11747{display:flex!important;align-items:center!important;}
#menu-item-11747 > a,
.main-navigation a[href*="solutions/demo"]{
  display:inline-flex!important;
  align-items:center!important;
  align-self:center!important;
  background:var(--ls-orange)!important;color:#fff!important;
  padding:9px 22px!important;
  margin:0!important;
  line-height:1.3!important;
  height:auto!important;
  border-radius:999px!important;
  font-weight:700!important;
  font-size:15px!important;
}
#menu-item-11747 > a:hover,
.main-navigation a[href*="solutions/demo"]:hover{
  background:var(--ls-orange-dark)!important;color:#fff!important;
}

/* =========================================================
   11. STANDARD CTA BANNER
   ========================================================= */
.ls-standard-cta{margin:54px 0 10px;padding:clamp(28px,5vw,54px);border-radius:var(--ls-radius-lg);background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));color:#fff;text-align:center;}
.ls-standard-cta h2,.ls-standard-cta p{color:#fff!important;}
/* Targets ANY link in the CTA banner, not just ones carrying the
   .ls-button class — the actual page content usually just has a
   plain <a>, which was falling back to the generic underlined
   purple-on-purple link style with no contrast at all. */
.ls-standard-cta a{
  display:inline-block;margin-top:18px;padding:12px 26px;border-radius:999px;
  background:#fff;color:var(--ls-purple)!important;font-weight:700;
  text-decoration:none!important;border:1px solid #fff;
}
.ls-standard-cta a:hover{background:var(--ls-soft);}

/* =========================================================
   12. GLOBAL FOOTER
   Injected once via functions.php (generate_before_footer hook)
   so it's never duplicated per-page. Real content pulled from
   your migrated pages, not guessed.
   ========================================================= */
.ls-global-footer{margin-top:0;background:var(--ls-gray);border-top:1px solid #ddd;color:#1f1f1f;padding:54px 0 0;}
.ls-global-footer *{box-sizing:border-box;}
.ls-footer-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr .9fr;gap:48px;align-items:start;max-width:var(--ls-page-width);margin:0 auto;padding:0 clamp(24px,5vw,64px) 48px;box-sizing:border-box;}
.ls-footer-brand img{display:block;width:min(200px,100%);height:auto;margin-bottom:24px;}
.ls-footer-disclaimer{max-width:280px;font-size:15px;line-height:1.45;margin:0 0 24px;color:#1f1f1f;}
.ls-footer-social{display:flex;gap:18px;align-items:center;}
.ls-footer-social a{display:inline-flex;align-items:center;justify-content:center;color:#111;width:24px;height:24px;}
.ls-footer-social svg{width:22px;height:22px;display:block;fill:currentColor;}
.ls-footer-column{display:block;}
.ls-footer-group h2{font-size:15px;line-height:1.2;color:#202020;margin:0 0 14px;font-weight:800;text-transform:uppercase;}
.ls-footer-group ul{list-style:none;padding:0;margin:0;}
.ls-footer-group li{margin:0 0 9px;padding:0;}
.ls-footer-group a{color:#202020;text-decoration:none;font-size:15px;line-height:1.4;}
.ls-footer-group a:hover{text-decoration:underline;text-underline-offset:3px;}
.ls-footer-group+.ls-footer-group{margin-top:28px;}
.ls-footer-demo{display:inline-block;margin-top:24px;border:1px solid #202020;border-radius:999px;padding:10px 22px;color:#202020;text-decoration:none;font-size:15px;}
.ls-footer-demo:hover{background:var(--ls-purple);color:#fff;border-color:var(--ls-purple);}
@media (max-width:980px){.ls-footer-grid{grid-template-columns:1fr 1fr;gap:36px;}}
@media (max-width:620px){.ls-global-footer{padding:36px 0 0;}.ls-footer-grid{grid-template-columns:1fr;gap:30px;padding:0 22px 36px;}}


/* GeneratePress native footer is replaced by .ls-global-footer from functions.php. */
.site-footer{display:none!important;}

/* Contact form next to copy (distinct from the site footer above) */
.ls-footer-form{display:grid;grid-template-columns:1fr 1fr;gap:var(--ls-space-lg);align-items:start;}
@media (max-width:820px){.ls-footer-form{grid-template-columns:1fr;}}

/* =========================================================
   13. WPFORMS NORMALIZATION
   ========================================================= */
.ls-form-shell{background:var(--ls-soft);border:1px solid var(--ls-line);border-radius:18px;padding:clamp(22px,4vw,44px);margin:38px 0;}
.ls-page .wpforms-container button[type="submit"],
.ls-page .wpforms-container input[type="submit"],
.ls-page .wpforms-submit{
  appearance:none;background:var(--ls-purple)!important;border:2px solid var(--ls-purple)!important;
  border-radius:999px!important;color:#fff!important;min-height:48px;padding:12px 26px!important;
  font-weight:700!important;
}
.ls-page .wpforms-container button[type="submit"]:hover,
.ls-page .wpforms-container input[type="submit"]:hover,
.ls-page .wpforms-submit:hover{background:var(--ls-purple-dark)!important;border-color:var(--ls-purple-dark)!important;}


.ls-form-shell .wpforms-container{margin:0!important;}
.ls-form-shell .wpforms-field{padding:9px 0!important;}
.ls-form-shell label.wpforms-field-label{font-weight:700;color:var(--ls-deep);}
.ls-form-shell input[type=text],.ls-form-shell input[type=email],.ls-form-shell input[type=tel],
.ls-form-shell select,.ls-form-shell textarea{border:1px solid var(--ls-line)!important;border-radius:9px!important;padding:11px 13px!important;background:#fff!important;}

/* =========================================================
   14. BLOG POST / PAGE BODY TYPOGRAPHY
   Targets GeneratePress's default content wrapper (.entry-content)
   directly, so raw-HTML migrated posts get styled with ZERO
   per-post edits. Verify .entry-content is GP's real class on a
   live post tomorrow — if different, just tell me.
   ========================================================= */
.single .entry-content,
.ls-post-body{max-width:760px;margin-inline:auto;font-family:var(--ls-font);}
/* .entry-meta is a SIBLING of .entry-content inside .inside-article,
   not a child of it — GP outputs it twice, both with the same class:
   once in .entry-header (post date + byline) and again as a <footer>
   (categories + prev/next nav). Neither instance inherited the 760px
   cap above, so both sat flush against the wide .inside-article edge
   — e.g. the date line rendering far left of the centered article
   text/image instead of lining up with it. Same class, same fix. */
.single .entry-meta{max-width:760px;margin-inline:auto;}

/* Single posts render with GP's "right sidebar" layout, but the
   sidebar carries no widgets (confirmed empty in the page markup) —
   it just reserves 30% of the page width for nothing. That pushed
   the centered 760px .entry-content/.entry-meta column left of the
   page's true center, since it was only centering *within* the
   narrower 70% left column, not the actual page. Dropping the
   sidebar lets .content-area take the full width, so the auto
   margins above center against the real page — matching pages. */
.single #right-sidebar{display:none!important;}
.single .content-area{width:100%!important;}

/* The 760px reading-width cap now applies ONLY to .single (actual
   blog posts) — never to .page. Every "boxing" report so far has
   turned out to be a page (module-built, the glossary's own
   wrapper, a Content Views plugin grid, a Gutenverse block, etc.)
   getting caught by a rule meant for long-form article text. No
   page on this site is prose that benefits from a narrow reading
   column, so rather than keep enumerating each new page pattern
   as it surfaces, .page is excluded from the width cap entirely.
   Pages still get the typography rules below (heading color,
   paragraph spacing, image radius) — just not the width limit. */
.page .entry-content{
  max-width:var(--ls-content-width);
  margin:0 auto;
  padding:40px clamp(20px,4vw,40px) 0;
  font-family:var(--ls-font);
}
/* Top padding above is new — the sticky header change needed content
   below it to have real clearance instead of starting flush against
   its bottom edge (was causing page titles to render cramped/
   overlapping right under the header on load). */
.page .entry-content h1,.single .entry-content h1{scroll-margin-top:110px;}
/* Defensive: if a page is ever loaded via an anchor link or "skip to
   content" jump, the browser's default scroll target lands at the
   very top of the viewport — which a sticky header now covers. This
   keeps any such jump landing below the header instead of behind it. */

/* =========================================================
   17. ULTIMATE FAQS PLUGIN — restyled to match the site.
   Plugin markup is prefixed "ewd-ufaq-" per the developer's own
   documentation (older mirrors reference a plain "ufaq-" prefix
   from an earlier version) — both are targeted here as a safety
   net since I can't confirm the exact installed version without
   seeing the live rendered markup. If the open/closed toggle look
   doesn't quite match once it's live, send a screenshot + Inspect
   Element on one row and I'll correct the exact selector.
   ========================================================= */
.ewd-ufaq-faqs,.ufaq-faqs{max-width:820px;margin:0 auto;}
.ewd-ufaq-faqs h2,.ufaq-faqs h2{display:none;} /* plugin's own redundant heading */
.ewd-ufaq-faq,.ufaq-faq{
  border:1px solid var(--ls-line);
  border-radius:var(--ls-radius);
  margin-bottom:14px;
  overflow:hidden;
  background:#fff;
}
.ewd-ufaq-faq-title,.ufaq-faq-title{
  cursor:pointer;
  padding:20px 24px;
  font-weight:700;
  color:var(--ls-deep);
  font-size:17px;
  position:relative;
  padding-right:50px;
}
.ewd-ufaq-faq-title h3,.ewd-ufaq-faq-title h4,
.ufaq-faq-title h3,.ufaq-faq-title h4{
  margin:0;font-size:inherit;font-weight:inherit;color:inherit;
}
.ewd-ufaq-post-margin-symbol,.ufaq-toggle-icon{
  position:absolute;right:22px;top:50%;transform:translateY(-50%);
  color:var(--ls-purple);font-size:20px;
}
.ewd-ufaq-faq-body,.ufaq-faq-content{
  padding:0 24px 22px;
  color:var(--ls-text);
  line-height:1.65;
}
.ewd-ufaq-faq-category-title,.ufaq-faq-category-title{
  color:var(--ls-purple);
  font-weight:700;
  text-transform:uppercase;
  font-size:14px;
  letter-spacing:.03em;
  margin:32px 0 12px;
}
/* .ls-page module pages bring their own full-bleed hero sections
   plus their own internal .ls-inner max-width/padding per section —
   they need the entry-content wrapper to impose NOTHING, or the
   colored hero backgrounds can't reach the true edge of the screen.
   Everything else (native WP headings/paragraphs, the Content Views
   and Gutenverse plugin grids, the glossary) gets the sane default
   above instead of running edge-to-edge with zero breathing room. */
.entry-content:has(.ls-page){max-width:none;margin:0;padding:0;}
.single .entry-content h2,.page .entry-content h2,.ls-post-body h2{margin-top:var(--ls-space-lg);color:var(--ls-deep);}
.single .entry-content h3,.page .entry-content h3,.ls-post-body h3{margin-top:var(--ls-space-md);color:var(--ls-deep);}
.single .entry-content p,.page .entry-content p,.ls-post-body p{margin-bottom:var(--ls-space-sm);}
.single .entry-content img,.page .entry-content img,.ls-post-body img{border-radius:var(--ls-radius);height:auto;max-width:100%;}
.single .entry-content blockquote,.page .entry-content blockquote,.ls-post-body blockquote{border-left:4px solid var(--ls-purple);padding-left:var(--ls-space-sm);color:#5D5D72;font-style:italic;}

/* Neutralizes inline font/color cruft baked into HubSpot rich-text
   exports (e.g. <span style="color:#000;">). Delete if samples
   come back clean. */
.single .entry-content [style*="font-family"],
.single .entry-content [style*="color:"]{
  font-family:inherit !important;
  color:inherit !important;
}

/* =========================================================
   16. SITE HEADER — sticky nav, bold links, top breathing room
   ========================================================= */
#masthead.site-header{
  position:sticky;
  top:0;
  z-index:999;
  padding-top:6px;
}
/* WP's admin bar is fixed at true top:0 and pushes page content
   down via a margin-top on <html> — without this offset the
   sticky header would tuck itself underneath the admin bar for
   logged-in users instead of sitting just below it. Regular site
   visitors never see the admin bar, so they get top:0 as normal. */
.admin-bar #masthead.site-header{top:32px;}
@media screen and (max-width:782px){
  .admin-bar #masthead.site-header{top:46px;}
}
.main-navigation .main-nav > ul > li > a{font-weight:700;}

/* =========================================================
   DEMO CTA (2.6.0)
   Standard "Request a Demo" band appended above the footer on
   every content page, carrying the WPForms shortcode. Replaces the
   old per-page "Contact Us" sections, which were a HubSpot-era
   artifact and pointed at the wrong conversion step.
   ========================================================= */
.ls-demo-cta{
  background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));
  color:#fff;padding:64px 0;margin-top:0;
}
.ls-demo-cta h2{color:#fff!important;margin-bottom:12px;}
.ls-demo-cta > .ls-inner > p{
  color:rgba(255,255,255,.9)!important;max-width:640px;margin-bottom:28px;
}
.ls-demo-form{
  background:#fff;border-radius:14px;padding:28px 30px;max-width:760px;
  box-shadow:0 18px 44px rgba(0,0,0,.18);
}
/* WPForms ships its own spacing that fights the card padding above. */
.ls-demo-form .wpforms-container{margin:0!important;}
.ls-demo-form .wpforms-form .wpforms-field{padding:9px 0!important;}
.ls-demo-form .wpforms-form label.wpforms-field-label{
  font-weight:700;color:var(--ls-deep);font-size:15px;
}
.ls-demo-form .wpforms-form input[type=text],
.ls-demo-form .wpforms-form input[type=email],
.ls-demo-form .wpforms-form input[type=tel],
.ls-demo-form .wpforms-form select,
.ls-demo-form .wpforms-form textarea{
  border:1px solid var(--ls-line)!important;border-radius:9px!important;
  padding:11px 13px!important;background:#fff!important;
}
.ls-demo-form .wpforms-form input:focus,
.ls-demo-form .wpforms-form select:focus,
.ls-demo-form .wpforms-form textarea:focus{
  border-color:var(--ls-purple)!important;outline:none!important;
}
.ls-demo-form .wpforms-form button[type=submit]{
  background:var(--ls-purple)!important;color:#fff!important;border:0!important;
  border-radius:999px!important;padding:13px 30px!important;font-weight:700!important;
  cursor:pointer;
}
.ls-demo-form .wpforms-form button[type=submit]:hover{background:var(--ls-deep)!important;}
@media (max-width:820px){
  .ls-demo-cta{padding:48px 0;}
  .ls-demo-form{padding:22px 20px;}
}

/* =========================================================
   REVIEWPRO FLAGSHIP PAGE — .ls-ai-review (2.8.0)
   Page 1581 authored 21 component classes that had ZERO matching
   CSS in this stylesheet, so nearly every section rendered as
   unstyled body text. Built here to match the live page rather
   than rewriting the page's markup, so copy stays untouched.
   ========================================================= */

/* --- hero (2.9.1): GRAY band, matching every other product page.
   2.8.0 painted this hero dark purple, which made 1581 the only product
   page with a dark hero and forced a white h1 — overriding the brand
   heading style (.ls-page h1: purple, Schibsted Grotesk, 800). Reverted
   to the standard .ls-hero gray so the H1 inherits brand type/colour and
   the band matches 1790. Only the media column needs page-specific rules. */
.ls-ai-review .ls-hero-media{max-width:560px;width:100%;margin-left:auto;}
.ls-ai-review .ls-hero-media video,
.ls-ai-review .ls-hero-media img{
  width:100%;height:auto;display:block;background:transparent;
}
.ls-ai-review .ls-hero-intro{font-size:17px;line-height:1.55;margin-bottom:14px;max-width:52ch;}
.ls-ai-review .ls-hero-accent{
  color:var(--ls-deep);font-weight:700;font-size:17px;line-height:1.5;
  max-width:52ch;margin-bottom:26px;
}

/* --- "Sound familiar?" — purple band, pale cards --- */
.ls-ai-review .ls-familiar{
  background:linear-gradient(120deg,var(--ls-purple),#5326A6);color:#fff;
}
.ls-ai-review .ls-familiar h2{color:#fff!important;text-align:center;margin-bottom:34px;}
.ls-familiar-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:20px;max-width:1000px;margin:0 auto;
}
.ls-familiar-card{
  background:#EDE7FA;color:var(--ls-deep);border-radius:10px;
  padding:22px 20px;font-size:15px;line-height:1.45;font-weight:600;
}

/* --- pillars: heading left, prose right --- */
.ls-pillar-list{display:flex;flex-direction:column;gap:52px;margin-top:8px;}
.ls-pillar{display:grid;grid-template-columns:minmax(240px,.85fr) 1.15fr;gap:48px;align-items:start;}
.ls-pillar h3{font-size:clamp(22px,2.3vw,29px);line-height:1.2;color:var(--ls-deep);margin:0;}
.ls-pillar p{margin:0 0 14px;color:var(--ls-text);font-size:15px;line-height:1.6;}
.ls-pillar p:last-child{margin-bottom:0;}
@media (max-width:820px){.ls-pillar{grid-template-columns:1fr;gap:16px;}}

/* --- inside-reviewpro feature rows --- */
.ls-feature-list{display:flex;flex-direction:column;gap:60px;margin-top:10px;}
.ls-feature-list .ls-feature-row{align-items:center;}

/* --- playbook library + industries: link/label card grids --- */
.ls-card-grid,.ls-industry-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:14px 26px;margin-top:30px;
}
.ls-card,.ls-industry-card{
  border-top:1px solid var(--ls-line);padding:14px 4px 0;
  font-size:15px;font-weight:600;color:var(--ls-deep);
}
/* Industry entries that link to a real industry page get the purple
   affordance; unlinked ones stay as plain labels, matching live. */
.ls-industry-card a{color:var(--ls-purple);text-decoration:underline;text-underline-offset:3px;}
.ls-industry-card a:hover{color:var(--ls-deep);}

/* --- trust badges --- */
.ls-badge-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px;}
.ls-badge{
  border:1px solid var(--ls-line);border-radius:999px;padding:9px 20px;
  font-size:14px;font-weight:700;color:var(--ls-deep);background:#fff;
}

/* --- getting started: numbered purple step cards --- */
.ls-step-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));
  gap:20px;margin-top:32px;
}
.ls-step-card{
  background:linear-gradient(150deg,var(--ls-purple),#4A1F96);
  color:#fff;border-radius:12px;padding:26px 22px 30px;
}
.ls-step-number{
  font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:#D3C2FA;margin-bottom:12px;
}
.ls-step-card h4{color:#fff!important;margin:0;font-size:17px;line-height:1.35;}

/* --- ChatGPT comparison: two columns + pull quote + cards --- */
.ls-two-col{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:start;}
@media (max-width:900px){.ls-two-col{grid-template-columns:1fr;gap:32px;}}
.ls-quote{
  border-left:4px solid var(--ls-purple);background:#fff;
  padding:18px 22px;margin-top:24px;border-radius:0 10px 10px 0;
  font-weight:700;color:var(--ls-deep);line-height:1.5;
}
.ls-comparison-card{
  background:#fff;border:1px solid var(--ls-line);border-radius:12px;
  padding:20px 22px;margin-bottom:16px;
}
.ls-comparison-card:last-child{margin-bottom:0;}
.ls-comparison-card h4{margin:0 0 8px;color:var(--ls-deep);font-size:17px;}
.ls-comparison-card p{margin:0;color:var(--ls-text);font-size:14.5px;line-height:1.55;}

/* --- proof band: stat cards on purple --- */
.ls-ai-review .ls-proof{
  background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));color:#fff;
}
.ls-ai-review .ls-proof h2,.ls-ai-review .ls-proof .ls-eyebrow{color:#fff!important;}
.ls-ai-review .ls-proof .ls-stat-card{
  background:#fff;border-left:0;border-radius:12px;padding:24px 22px;
}
.ls-ai-review .ls-proof .ls-stat-card .ls-stat-number{color:var(--ls-purple);}
.ls-ai-review .ls-proof .ls-stat-card p{color:var(--ls-text);font-size:14px;}

/* --- light button for use on dark CTA bands --- */
.ls-button--light{background:#fff!important;color:var(--ls-deep)!important;}
.ls-button--light:hover{background:#F0EAFF!important;color:var(--ls-deep)!important;}

/* =========================================================
   COVERAGE LAYER (2.9.0)
   Closes every remaining "class used on a page but never defined here"
   gap. A full diff of classes-used (118) against classes-defined (95)
   across all 145 pages found 51 undefined classes on 11 pages.

   Root cause: the original HubSpot conversion invented a fresh class
   vocabulary per page instead of reusing the module system, so the same
   component exists under several names (ls-staffing-stat-card /
   ls-proof-card / ls-link-card / ls-management-card are all just cards).
   Rather than rewrite 11 pages' markup, the duplicate vocabularies are
   mapped onto the real components here.

   Namespace-only hooks (.ls-law-firms, .ls-clm, .ls-about-page,
   .ls-demo-page, .ls-contract-control, .ls-live-page, .ls-page-content)
   are intentionally NOT styled - they exist purely as page scopes.
   The .ls-legacy-* classes on page 1154 are dead HubSpot residue; that
   page needs its rebuild, not styling.
   ========================================================= */

/* --- CTA band parts (1002, 1282, 1433, 1478) --- */
.ls-cta-title{
  font-family:var(--ls-font);font-size:clamp(22px,2.6vw,30px);font-weight:800;
  line-height:1.25;color:#fff;margin-bottom:10px;
}
.ls-cta-button{
  display:inline-block;background:#fff;color:var(--ls-deep);font-weight:700;
  border-radius:999px;padding:13px 30px;text-decoration:none;margin-top:16px;
}
.ls-cta-button:hover{background:#F0EAFF;color:var(--ls-deep);}

/* --- checkmark lists (1282, 1478, 1790) --- */
.ls-check-list{list-style:none;padding:0;margin:18px 0 0;}
.ls-check-list li{
  position:relative;padding-left:30px;margin-bottom:12px;
  color:var(--ls-text);line-height:1.55;
}
.ls-check-list li::before{
  content:"✓";position:absolute;left:0;top:0;
  color:var(--ls-purple);font-weight:800;
}
.ls-check-icon{color:var(--ls-purple);font-weight:800;margin-right:10px;}

/* --- inline FAQ accordions: alias onto the .ls-faq component --- */
.ls-faq-wrap,.ls-faq-section{max-width:880px;margin-inline:auto;}
details.ls-faq-item{
  border:1px solid var(--ls-line);border-radius:11px;background:#fff;
  margin-bottom:12px;overflow:hidden;
}
details.ls-faq-item > summary,
summary.ls-faq-question{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:18px 22px;cursor:pointer;list-style:none;
  font-weight:750;color:var(--ls-deep);font-size:17px;
}
details.ls-faq-item > summary::-webkit-details-marker,
summary.ls-faq-question::-webkit-details-marker{display:none;}
/* These pages ship an empty <span class="ls-faq-toggle"> for the icon,
   so the +/- is drawn on the span rather than via summary::after. */
.ls-faq-toggle{flex-shrink:0;color:var(--ls-purple);font-size:26px;line-height:1;}
.ls-faq-toggle::after{content:"+";}
details[open] .ls-faq-toggle::after{content:"\2212";}
details.ls-faq-item > summary:hover,
summary.ls-faq-question:hover{background:var(--ls-soft);}
.ls-faq-answer{padding:0 22px 20px;color:var(--ls-text);line-height:1.6;}
.ls-faq-answer p{margin:0 0 12px;}

/* --- demo band (1478, 1790): copy left, form right --- */
.ls-demo-band{
  display:grid;grid-template-columns:1fr 1.15fr;gap:40px;align-items:center;
}
.ls-demo-band h2{margin:0;}
@media (max-width:900px){.ls-demo-band{grid-template-columns:1fr;gap:26px;}}

/* --- tab wrapper (1653, 2073); tab-list/-button/-panel already exist --- */
.ls-tabs{border:1px solid var(--ls-line);border-radius:14px;overflow:hidden;background:#fff;}
/* 2073 carries .ls-tabs-legacy alongside .ls-tabs and sets its own inline
   border/radius on the wrapper; neutralise the double border. */
.ls-tabs.ls-tabs-legacy{border:0;border-radius:0;}
.ls-tab-cta{margin-top:18px;}

/* --- About page (1282) --- */
.ls-values-grid{margin-top:26px;}
.ls-link-card-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:20px;margin-top:28px;
}
.ls-link-card{
  display:block;background:#fff;border:1px solid var(--ls-line);border-radius:12px;
  padding:22px;text-decoration:none;transition:box-shadow .18s ease,transform .18s ease;
}
.ls-link-card:hover{box-shadow:0 12px 30px rgba(0,0,0,.09);transform:translateY(-2px);}
.ls-link-card strong{display:block;color:var(--ls-deep);font-size:18px;margin-bottom:6px;}
.ls-link-card span{color:var(--ls-text);font-size:14.5px;line-height:1.5;}

/* --- Healthcare (1433) --- */
.ls-healthcare-playbook-cards > div{
  background:#fff;border:1px solid var(--ls-line);border-radius:12px;padding:22px;
}
.ls-purple-feature-section{
  background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));
  color:#fff;padding:64px 0;
}
.ls-purple-feature-section h2,.ls-purple-feature-section h3,
.ls-purple-feature-section p,.ls-purple-feature-section li{color:#fff!important;}

/* --- Law Firms (1478) --- */
.ls-anchor-pills{display:flex;flex-wrap:wrap;gap:12px;}
.ls-anchor-pills a{
  border:1px solid var(--ls-line);border-radius:999px;padding:9px 20px;
  font-size:14.5px;font-weight:600;color:var(--ls-deep);
  text-decoration:none;background:#fff;
}
.ls-anchor-pills a:hover{border-color:var(--ls-purple);color:var(--ls-purple);}
.ls-feature-split{
  display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;
}
@media (max-width:900px){.ls-feature-split{grid-template-columns:1fr;gap:28px;}}
.ls-purple-proof{
  background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));
  color:#fff;padding:64px 0;
}
.ls-purple-proof h2,.ls-purple-proof p{color:#fff!important;}
.ls-proof-card-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:16px;margin-top:26px;
}
.ls-proof-card{
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);
  border-radius:11px;padding:18px 20px;color:#fff;font-weight:600;line-height:1.45;
}
.ls-banner-section{
  background-size:cover;background-position:center;position:relative;
  padding:78px 0;color:#fff;
}
.ls-banner-section::before{
  content:"";position:absolute;inset:0;background:rgba(37,21,69,.72);
}
.ls-banner-section .ls-inner{position:relative;z-index:1;}
.ls-banner-content{max-width:660px;}
.ls-banner-content h2,.ls-banner-content p{color:#fff!important;}
.ls-management-card-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:22px;margin-top:26px;
}
.ls-management-card{
  background:#fff;border:1px solid var(--ls-line);border-radius:12px;padding:24px;
}
.ls-management-card h3{margin:0 0 12px;color:var(--ls-deep);font-size:19px;}
.ls-management-card ul{margin:0;padding-left:20px;}
.ls-management-card li{margin-bottom:8px;color:var(--ls-text);line-height:1.5;}
.ls-resource-card-body{padding:18px 20px 22px;}
.ls-resource-card-body h3{margin:6px 0 10px;font-size:17px;line-height:1.35;}

/* --- Staffing (1507): same stat band under a page-specific name --- */
.ls-staffing-proof-section{padding:60px 0;}
.ls-staffing-stat-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:32px 40px;margin-top:var(--ls-space-md);text-align:left;
}
.ls-staffing-stat-card{border-left:3px solid var(--ls-orange);padding:6px 0 6px 20px;}
.ls-staffing-stat-number{
  font-size:clamp(30px,3.6vw,42px);font-weight:800;line-height:1.05;
  color:var(--ls-deep);letter-spacing:-.01em;display:block;
}
.ls-staffing-stat-label{
  margin-top:10px;color:var(--ls-text);font-size:15px;line-height:1.35;display:block;
}

/* --- Home (2073) --- */
.ls-hero-transparent-video{width:100%;height:auto;display:block;background:transparent;}

/* --- Request a Demo (10502). The page ships its own inline <style>;
       these are equivalents so it still renders if that block is ever
       stripped by the editor. --- */
.ls-demo-hero{background:var(--ls-gray);padding:64px 0;}
.ls-demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start;}
@media (max-width:900px){.ls-demo-grid{grid-template-columns:1fr;gap:30px;}}
.ls-demo-copy h1{margin-bottom:14px;}
.ls-demo-form-card{
  background:#fff;border:1px solid var(--ls-line);border-radius:14px;
  padding:30px;box-shadow:0 16px 40px rgba(0,0,0,.09);
}
.ls-demo-form-card h2{margin:0 0 18px;font-size:22px;}

/* =========================================================
   20. NORMALIZED SINGLE-POST SHELL — recovery baseline 3.0.0
   ========================================================= */
.single.ls-normalized-post .entry-content{max-width:none!important;margin:0!important;padding:0!important;}
.single.ls-normalized-post .entry-header,
.single.ls-normalized-post .entry-footer{display:none!important;}
.ls-post-page{width:100%;max-width:1280px;margin:0 auto;color:var(--ls-text);font-family:var(--ls-font);}
.ls-post-article{width:min(100%,940px);margin:0 auto;padding:68px 28px 48px;}
.ls-post-header{margin-bottom:34px;padding-bottom:26px;border-bottom:1px solid var(--ls-line);}
.ls-post-header h1{max-width:900px;margin:0;color:var(--ls-purple)!important;font-family:var(--ls-font)!important;font-size:clamp(38px,4.5vw,56px)!important;font-weight:800!important;line-height:1.12!important;letter-spacing:-.025em!important;}
.ls-post-meta{margin:0 0 12px!important;color:#6B6573!important;font-size:14px!important;font-weight:700!important;letter-spacing:.05em;text-transform:uppercase;}
.ls-post-content{font-size:18px;line-height:1.72;}
.ls-post-content>*:first-child{margin-top:0;}
.ls-post-content h2,.ls-post-content h3,.ls-post-content h4{color:var(--ls-deep)!important;font-family:var(--ls-font)!important;line-height:1.2;}
.ls-post-content h2{margin:48px 0 18px;font-size:clamp(28px,3vw,40px);}
.ls-post-content h3{margin:38px 0 14px;font-size:clamp(23px,2.4vw,31px);}
.ls-post-content p,.ls-post-content ul,.ls-post-content ol{margin-bottom:22px;}
.ls-post-content a{color:var(--ls-purple);text-decoration-thickness:1px;text-underline-offset:3px;}
.ls-post-content img{display:block;width:auto;max-width:100%;height:auto;margin:30px auto;border-radius:var(--ls-radius);}
.ls-post-content blockquote{margin:34px 0;padding:24px 28px;border-left:5px solid var(--ls-purple);border-radius:0 var(--ls-radius) var(--ls-radius) 0;background:var(--ls-soft);color:var(--ls-deep);font-size:21px;font-weight:650;line-height:1.5;}
.ls-post-content table{width:100%!important;max-width:100%;border-collapse:collapse;margin:28px 0;display:block;overflow-x:auto;}
.ls-post-content th,.ls-post-content td{padding:12px 14px;vertical-align:top;}
.ls-post-content [style*="font-family"]{font-family:inherit!important;}
.ls-media-placeholder{display:flex;align-items:center;justify-content:center;min-height:120px;padding:20px;border:1px dashed var(--ls-line);border-radius:var(--ls-radius);background:var(--ls-soft);color:#6B6573;font-size:14px;font-weight:700;text-align:center;}
@media(max-width:760px){.ls-post-article{padding:48px 18px 34px}.ls-post-content{font-size:17px}.ls-post-content h2{margin-top:38px}}

/* =========================================================
   18. CONTEXTUAL END-OF-CONTENT CTA + FAQ ALIGNMENT
   Updated: 2026-08-16
   The CTA is injected by functions.php so every page/post has
   exactly one consistent conversion block and no embedded form.
   ========================================================= */
.ls-contextual-demo-cta{
  width:min(calc(100% - 48px),var(--ls-page-width));
  margin:64px auto 0;
  padding:clamp(54px,7vw,92px) clamp(22px,4vw,56px);
  border-radius:0;
  background:linear-gradient(110deg,var(--ls-deep) 0%,var(--ls-purple) 100%);
  text-align:center;
  color:var(--ls-white);
}
.ls-contextual-demo-cta h2{
  width:min(100%,980px);
  margin:0 auto 28px;
  color:var(--ls-white)!important;
  font-size:clamp(30px,3.2vw,48px);
  line-height:1.12;
  font-weight:750;
  text-align:center;
}
.ls-contextual-demo-cta a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:52px;
  margin:0!important;
  padding:12px 30px!important;
  border:1px solid rgba(255,255,255,.85);
  border-radius:999px;
  background:var(--ls-white);
  color:var(--ls-deep)!important;
  font-weight:750;
  line-height:1.2;
  text-decoration:none;
  box-shadow:none;
}
.ls-contextual-demo-cta a:hover,
.ls-contextual-demo-cta a:focus{
  background:#F4F1FA;
  color:var(--ls-deep)!important;
  transform:translateY(-1px);
}

/* Center the FAQ section label/heading while keeping questions and answers left-aligned. */
.ls-faq-wrap > h2,
.ls-faq-section > h2,
.ls-post-content .ls-faq-wrap > h2,
.ls-post-content .ls-faq-section > h2,
.ls-faq-page .ls-faq-hero,
.ls-faq-page .ls-faq-hero h1,
.ls-faq-page .ls-faq-hero p{
  text-align:center;
  margin-left:auto;
  margin-right:auto;
}
.ls-faq-wrap .ls-faq,
.ls-faq-section .ls-faq{
  margin-left:auto;
  margin-right:auto;
}
.ls-faq summary,
details.ls-faq-item > summary,
.ls-faq-answer,
.ls-faq .ls-faq-body{
  text-align:left;
}

@media (max-width:760px){
  .ls-contextual-demo-cta{
    width:calc(100% - 28px);
    margin-top:48px;
    padding:48px 20px;
  }
  .ls-contextual-demo-cta h2{font-size:clamp(28px,8vw,38px);}
}



/* =========================================================
   19. RECOVERY PACK 1 — responsive tabs, leadership grids,
   CTA/footer rhythm
   Updated: 2026-08-16
   ========================================================= */

/* Give the contextual CTA breathing room before the global footer. */
.ls-contextual-demo-cta{
  margin-bottom:64px;
}
@media (max-width:760px){
  .ls-contextual-demo-cta{margin-bottom:40px;}
}

/* Homepage/service tabs: inline desktop grid declarations from migrated
   content must collapse on narrow screens or their 280px second column
   crushes the text into a few pixels. */
@media (max-width:760px){
  .ls-tabs .ls-tab-list{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
  }
  .ls-tabs .ls-tab-button{
    width:100%;
    min-width:0;
    padding:15px 18px;
    text-align:left;
    white-space:normal;
  }
  .ls-tabs .ls-tab-button[aria-selected="true"]::after{display:none;}
  .ls-tabs .ls-tab-panel{
    padding:26px 18px;
    overflow:hidden;
  }
  .ls-tabs .ls-tab-panel > div[style*="grid-template-columns"]{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:24px!important;
    min-width:0!important;
  }
  .ls-tabs .ls-tab-panel > div[style*="grid-template-columns"] > *{
    min-width:0!important;
    width:auto!important;
  }
  .ls-tabs .ls-tab-panel h3,
  .ls-tabs .ls-tab-panel p{
    overflow-wrap:anywhere;
    word-break:normal;
  }
}
@media (min-width:761px) and (max-width:980px){
  .ls-tabs .ls-tab-list{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .ls-tabs .ls-tab-button{
    min-width:0;
    padding:16px 14px;
    white-space:normal;
    text-align:center;
  }
}

/* Resource cards keep a predictable crop across desktop/tablet/mobile. */
.ls-resource-card img{
  aspect-ratio:16/9;
  height:auto;
  min-height:0;
  object-fit:cover;
}
@media (max-width:620px){
  .ls-resource-grid{grid-template-columns:1fr;}
  .ls-resource-card img{aspect-ratio:16/9;}
}

/* Leadership / Board component */
.ls-leadership-hero{
  padding:72px 0 34px;
  text-align:center;
  background:#fff;
}
.ls-leadership-hero h1{
  margin:0;
  color:var(--ls-deep);
}
.ls-team-section{
  padding:42px 0 70px;
}
.ls-team-section--board{
  background:var(--ls-soft);
}
.ls-team-section-title{
  margin:0 0 30px;
  text-align:center;
  color:var(--ls-deep);
}
.ls-team-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:34px 26px;
  align-items:start;
}
.ls-team-card{
  min-width:0;
  text-align:center;
}
.ls-team-card-trigger{
  appearance:none;
  -webkit-appearance:none;
  display:block;
  width:100%;
  padding:0;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  cursor:pointer;
  text-align:center;
}
.ls-team-photo{
  position:relative;
  display:block;
  width:100%;
  aspect-ratio:1/1;
  overflow:hidden;
  border-radius:14px;
  background:#ece9f1;
  box-shadow:0 10px 30px rgba(37,21,69,.08);
}
.ls-team-photo img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.ls-team-photo-overlay{
  position:absolute;
  inset:auto 0 0;
  padding:14px 12px;
  background:linear-gradient(180deg,rgba(37,21,69,0),rgba(37,21,69,.90));
  color:#fff;
  font-size:14px;
  font-weight:700;
  opacity:0;
  transform:translateY(8px);
  transition:opacity .18s ease,transform .18s ease;
}
.ls-team-card-trigger:hover .ls-team-photo-overlay,
.ls-team-card-trigger:focus-visible .ls-team-photo-overlay{
  opacity:1;
  transform:none;
}
.ls-team-card-trigger:focus-visible{
  outline:3px solid rgba(102,56,182,.32);
  outline-offset:5px;
  border-radius:14px;
}
.ls-team-name{
  display:block;
  margin-top:17px;
  color:var(--ls-deep);
  font-size:20px;
  line-height:1.2;
  font-weight:800;
}
.ls-team-title{
  display:block;
  margin-top:6px;
  min-height:44px;
  color:var(--ls-text);
  font-size:15px;
  line-height:1.45;
}
.ls-team-linkedin{
  display:inline-block;
  margin-top:8px;
  color:var(--ls-purple);
  font-size:14px;
  font-weight:700;
  text-decoration:none;
}
.ls-team-linkedin:hover{text-decoration:underline;text-underline-offset:3px;}

.ls-team-modal[hidden]{display:none!important;}
.ls-team-modal{
  position:fixed;
  inset:0;
  z-index:99999;
  display:grid;
  place-items:center;
  padding:20px;
}
.ls-team-modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(21,14,33,.72);
  backdrop-filter:blur(3px);
}
.ls-team-modal-dialog{
  position:relative;
  z-index:1;
  width:min(920px,calc(100vw - 32px));
  max-height:min(88vh,850px);
  overflow:auto;
  padding:34px;
  border-radius:18px;
  background:#fff;
  box-shadow:0 30px 90px rgba(0,0,0,.30);
}
.ls-team-modal-close{
  position:absolute;
  top:14px;
  right:15px;
  width:40px;
  height:40px;
  border:0;
  border-radius:50%;
  background:var(--ls-soft);
  color:var(--ls-deep);
  font-size:28px;
  line-height:1;
  cursor:pointer;
}
.ls-team-modal-grid{
  display:grid;
  grid-template-columns:minmax(220px,300px) minmax(0,1fr);
  gap:34px;
  align-items:start;
}
.ls-team-modal-photo img{
  display:block;
  width:100%;
  aspect-ratio:1/1;
  object-fit:cover;
  border-radius:14px;
}
.ls-team-modal-content h2{
  margin:4px 48px 4px 0;
  color:var(--ls-deep);
}
.ls-team-modal-title{
  margin:0 0 22px;
  color:var(--ls-purple);
  font-weight:700;
}
.ls-team-modal-bio{
  color:var(--ls-text);
  font-size:16px;
  line-height:1.65;
}
.ls-team-modal-bio p{margin:0 0 16px;}
.ls-team-modal-bio a{color:var(--ls-purple);}
body.ls-modal-open{overflow:hidden;}

.ls-footer-legal{
  margin-top:44px;
  background:#151515;
  color:#fff;
}
.ls-footer-legal-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  max-width:var(--ls-page-width);
  margin:0 auto;
  padding:20px clamp(24px,5vw,64px);
}
.ls-footer-legal-links{
  display:flex;
  flex-wrap:wrap;
  gap:12px 24px;
}
.ls-footer-legal a{
  color:#fff;
  font-size:13px;
  text-decoration:none;
}
.ls-footer-legal a:hover{text-decoration:underline;}
.ls-footer-copyright{
  margin:0;
  font-size:13px;
  white-space:nowrap;
}
@media (max-width:980px){
  .ls-team-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media (max-width:760px){
  .ls-team-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 18px;}
  .ls-team-modal{padding:12px;}
  .ls-team-modal-dialog{padding:28px 20px 24px;}
  .ls-team-modal-grid{grid-template-columns:1fr;gap:22px;}
  .ls-team-modal-photo{max-width:260px;margin:0 auto;}
  .ls-footer-legal-inner{flex-direction:column;align-items:flex-start;}
  .ls-footer-copyright{white-space:normal;}
}
@media (max-width:480px){
  .ls-team-grid{grid-template-columns:1fr;max-width:330px;margin:0 auto;}
  .ls-team-title{min-height:0;}
}


/* =========================================================
   20. RECOVERY PACK 2 — Leadership polish + Healthcare page
   Updated: 2026-08-16
   ========================================================= */

/* --- Leadership polish --- */
.ls-leadership-hero h1{
  color:var(--ls-purple);
  font-family:var(--ls-font);
  font-weight:800;
}

/* GeneratePress/global button hover rules must never paint the whole
   leadership card or leak a dark background behind rounded portraits. */
.ls-team-card-trigger,
.ls-team-card-trigger:hover,
.ls-team-card-trigger:focus,
.ls-team-card-trigger:active{
  background:transparent!important;
  background-color:transparent!important;
  color:inherit!important;
  border:0!important;
  box-shadow:none!important;
}
.ls-team-photo{
  isolation:isolate;
  background:#f5f2f9;
}
.ls-team-photo img{
  position:relative;
  z-index:1;
}
.ls-team-photo-overlay{
  z-index:2;
  inset:auto 0 0;
  padding:13px 12px;
  background:rgba(102,56,182,.86);
  color:#fff;
  opacity:0;
  transform:translateY(100%);
  transition:opacity .18s ease,transform .18s ease;
}
.ls-team-card-trigger:hover .ls-team-photo-overlay,
.ls-team-card-trigger:focus-visible .ls-team-photo-overlay{
  opacity:1;
  transform:translateY(0);
}
.ls-team-modal-close{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0!important;
  text-align:center;
  line-height:1!important;
  font-family:Arial,Helvetica,sans-serif;
  font-size:27px;
  font-weight:400;
}

/* --- Healthcare page --- */
.ls-healthcare-page{
  --health-gap:clamp(34px,5vw,64px);
}
.ls-healthcare-page .ls-hero{
  padding:68px 0;
}
.ls-healthcare-page .ls-hero-copy h1{
  color:var(--ls-purple);
  font-family:var(--ls-font);
}
.ls-healthcare-page .ls-hero .ls-media-frame{
  overflow:hidden;
  border-radius:16px;
  box-shadow:0 12px 34px rgba(37,21,69,.10);
}
.ls-healthcare-page .ls-hero .ls-media-frame img{
  width:100%;
  height:auto;
  display:block;
  object-fit:cover;
}
.ls-healthcare-intro{
  max-width:900px;
  margin:0 auto;
  text-align:center;
}
.ls-healthcare-intro p:last-child{margin-bottom:0;}

.ls-healthcare-eyebrow{
  margin:0 0 10px;
  color:var(--ls-purple);
  font-size:13px;
  line-height:1.3;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
}

.ls-healthcare-split{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:var(--health-gap);
  align-items:center;
}
.ls-healthcare-split.is-reverse .ls-healthcare-media{order:1;}
.ls-healthcare-split.is-reverse .ls-healthcare-copy{order:2;}

.ls-healthcare-copy h2{
  margin-top:0;
  color:var(--ls-deep);
}
.ls-healthcare-copy > p:last-of-type{margin-bottom:0;}

.ls-healthcare-checks{
  list-style:none;
  padding:0;
  margin:22px 0 0;
  display:grid;
  gap:11px;
}
.ls-healthcare-checks li{
  position:relative;
  padding-left:30px;
  color:var(--ls-text);
  line-height:1.5;
}
.ls-healthcare-checks li::before{
  content:"✓";
  position:absolute;
  left:0;
  top:.02em;
  width:21px;
  height:21px;
  display:grid;
  place-items:center;
  border:2px solid var(--ls-purple);
  border-radius:50%;
  color:var(--ls-purple);
  font-size:12px;
  line-height:1;
  font-weight:800;
}

.ls-healthcare-media img{
  display:block;
  width:100%;
  height:auto;
  max-height:470px;
  object-fit:contain;
  border-radius:14px;
}
.ls-healthcare-media--cover img{
  aspect-ratio:16/10;
  max-height:none;
  object-fit:cover;
}

.ls-healthcare-video{
  position:relative;
  overflow:hidden;
  width:100%;
  aspect-ratio:16/9;
  margin-top:26px;
  border-radius:14px;
  background:linear-gradient(135deg,var(--ls-deep),var(--ls-purple));
  box-shadow:0 12px 34px rgba(37,21,69,.15);
}
.ls-healthcare-video iframe{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
}

.ls-healthcare-playbooks{
  max-width:980px;
  margin:32px auto 0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:22px;
}
.ls-healthcare-playbook{
  padding:28px;
  border-radius:14px;
  background:linear-gradient(145deg,var(--ls-deep),var(--ls-purple));
  color:#fff;
  box-shadow:0 10px 28px rgba(37,21,69,.12);
}
.ls-healthcare-playbook h3{
  margin:0 0 16px;
  color:#fff;
  font-size:20px;
}
.ls-healthcare-playbook ul{
  margin:0;
  padding-left:20px;
}
.ls-healthcare-playbook li{
  margin:8px 0;
  color:#fff;
}

.ls-healthcare-operations{
  background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));
  color:#fff;
  text-align:center;
}
.ls-healthcare-operations h2,
.ls-healthcare-operations p{
  color:#fff;
}
.ls-healthcare-operation-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px;
  margin-top:28px;
}
.ls-healthcare-operation-card{
  min-height:112px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:22px 18px;
  border-radius:12px;
  background:#fff;
  color:var(--ls-deep);
  font-weight:800;
  line-height:1.35;
  box-shadow:0 7px 22px rgba(0,0,0,.10);
}

.ls-healthcare-resource-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:22px;
  margin-top:30px;
}
.ls-healthcare-resource-card{
  overflow:hidden;
  border:1px solid #e3e0e7;
  border-radius:13px;
  background:#fff;
  box-shadow:0 7px 20px rgba(37,21,69,.06);
}
.ls-healthcare-resource-card img{
  display:block;
  width:100%;
  aspect-ratio:16/9;
  object-fit:cover;
}
.ls-healthcare-resource-body{
  padding:20px;
}
.ls-healthcare-resource-body h3{
  margin:0 0 10px;
  color:var(--ls-deep);
  font-size:19px;
}
.ls-healthcare-resource-body a{
  color:var(--ls-purple);
  font-weight:800;
  text-decoration:none;
}
.ls-healthcare-resource-body a:hover{
  text-decoration:underline;
  text-underline-offset:3px;
}

/* Use the same centered FAQ treatment everywhere. */
.ls-healthcare-page .ls-faq-wrap{
  max-width:880px;
  margin-inline:auto;
}
.ls-healthcare-page .ls-faq-wrap > h2{
  text-align:center;
  color:var(--ls-deep);
}

/* Industry content should never produce stretched screenshots/media. */
.ls-healthcare-page img{
  max-width:100%;
}

@media (max-width:900px){
  .ls-healthcare-split{
    grid-template-columns:1fr;
  }
  .ls-healthcare-split.is-reverse .ls-healthcare-media,
  .ls-healthcare-split.is-reverse .ls-healthcare-copy{
    order:initial;
  }
  .ls-healthcare-operation-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .ls-healthcare-resource-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media (max-width:680px){
  .ls-healthcare-playbooks,
  .ls-healthcare-resource-grid{
    grid-template-columns:1fr;
  }
  .ls-healthcare-operation-grid{
    grid-template-columns:1fr;
  }
  .ls-healthcare-playbook{
    padding:24px 20px;
  }
}


/* =========================================================
   21. RECOVERY PACK 3 — FAQ, industry bullets, Combined Intelligence
   Updated: 2026-08-16
   ========================================================= */

/* The global FAQ component owns the +/- icon through summary::after.
   Older page markup sometimes carries a second .ls-faq-toggle span. */
.ls-faq .ls-faq-toggle{
  display:none!important;
}

/* FAQ wrappers are always centered, regardless of legacy section markup. */
.ls-faq-wrap{
  width:min(100%,880px);
  margin-left:auto!important;
  margin-right:auto!important;
}
.ls-faq-wrap > h2,
.ls-faq-section > h2{
  text-align:center!important;
}

/* Reusable LegalSifter check bullets. */
.ls-check-list,
.ls-management-card .ls-check-list{
  list-style:none!important;
  padding-left:0!important;
  margin:18px 0 0!important;
}
.ls-check-list li,
.ls-management-card .ls-check-list li{
  position:relative;
  padding-left:30px!important;
  margin:0 0 12px!important;
  line-height:1.55;
  text-align:left;
}
.ls-check-list li::before,
.ls-management-card .ls-check-list li::before{
  content:"✓";
  position:absolute;
  left:0;
  top:.06em;
  width:20px;
  height:20px;
  display:grid;
  place-items:center;
  border:2px solid var(--ls-purple);
  border-radius:50%;
  color:var(--ls-purple);
  font-size:11px;
  line-height:1;
  font-weight:800;
}

/* Healthcare: later generic page-heading rules were winning the cascade.
   Purple cards/bands must always use white headings. */
.ls-healthcare-page .ls-healthcare-playbook h2,
.ls-healthcare-page .ls-healthcare-playbook h3,
.ls-healthcare-page .ls-healthcare-playbook h4,
.ls-healthcare-page .ls-healthcare-operations h2,
.ls-healthcare-page .ls-healthcare-operations h3,
.ls-healthcare-page .ls-healthcare-operations h4{
  color:#fff!important;
}
.ls-healthcare-page .ls-healthcare-playbook p,
.ls-healthcare-page .ls-healthcare-playbook li,
.ls-healthcare-page .ls-healthcare-operations p{
  color:#fff!important;
}

/* --- Combined Intelligence --- */
.ls-ci-hero{
  text-align:center;
}
.ls-ci-hero-copy{
  width:min(100%,900px);
  margin:0 auto;
}
.ls-ci-hero h1{
  color:var(--ls-purple);
  font-family:var(--ls-font);
}
.ls-ci-intro{
  width:min(100%,900px);
  margin:0 auto;
  text-align:center;
}
.ls-ci-intro h2{
  margin-top:0!important;
}
.ls-ci-pillar-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:22px;
  margin-top:38px;
}
.ls-ci-pillar{
  position:relative;
  min-height:260px;
  padding:32px 28px 28px;
  border:1px solid var(--ls-line);
  border-radius:16px;
  background:#fff;
  box-shadow:var(--ls-shadow);
}
.ls-ci-pillar-number{
  display:inline-flex;
  width:42px;
  height:42px;
  align-items:center;
  justify-content:center;
  margin-bottom:22px;
  border-radius:50%;
  background:var(--ls-purple);
  color:#fff;
  font-size:13px;
  font-weight:800;
}
.ls-ci-pillar h3{
  margin:0 0 12px!important;
  color:var(--ls-deep);
}
.ls-ci-pillar p{
  margin:0;
}
.ls-ci-service-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:28px;
}
.ls-ci-service{
  padding:34px;
  border:1px solid var(--ls-line);
  border-radius:16px;
  background:#fff;
  box-shadow:var(--ls-shadow);
}
.ls-ci-service h2{
  margin-top:0!important;
}
.ls-ci-text-link{
  margin-top:24px;
}
.ls-ci-text-link a{
  color:var(--ls-purple);
  font-weight:800;
  text-decoration:none;
}
.ls-ci-text-link a:hover{
  text-decoration:underline;
  text-underline-offset:3px;
}
.ls-ci-benefit-band{
  background:linear-gradient(120deg,var(--ls-deep),var(--ls-purple));
  color:#fff;
  text-align:center;
}
.ls-ci-benefit-band h2,
.ls-ci-benefit-band p,
.ls-ci-benefit-band .ls-eyebrow{
  color:#fff!important;
}
.ls-ci-benefit-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px;
  margin-top:30px;
}
.ls-ci-benefit{
  display:flex;
  min-height:150px;
  flex-direction:column;
  justify-content:center;
  gap:8px;
  padding:24px 18px;
  border-radius:12px;
  background:#fff;
  color:var(--ls-deep);
}
.ls-ci-benefit strong{
  color:var(--ls-purple);
  font-size:20px;
}
.ls-ci-benefit span{
  color:var(--ls-text);
  line-height:1.5;
}
.ls-ci-quote{
  width:min(100%,920px);
  margin:0 auto;
  padding:38px;
  border-left:6px solid var(--ls-purple);
  border-radius:0 16px 16px 0;
  background:var(--ls-soft);
}
.ls-ci-quote blockquote{
  margin:12px 0 20px!important;
  padding:0!important;
  border:0!important;
  color:var(--ls-deep)!important;
  font-family:var(--ls-font);
  font-size:clamp(22px,3vw,32px);
  line-height:1.35;
  font-style:normal!important;
  font-weight:700;
}
.ls-ci-quote-name{
  margin:0!important;
  color:var(--ls-purple)!important;
  font-weight:800;
}
@media (max-width:900px){
  .ls-ci-pillar-grid{
    grid-template-columns:1fr;
  }
  .ls-ci-pillar{
    min-height:0;
  }
  .ls-ci-benefit-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media (max-width:700px){
  .ls-ci-service-grid,
  .ls-ci-benefit-grid{
    grid-template-columns:1fr;
  }
  .ls-ci-service,
  .ls-ci-quote{
    padding:26px 22px;
  }
}


/* =========================================================
   22. RECOVERY PACK 4 — Support page
   Updated: 2026-08-16
   ========================================================= */

.ls-support-hero{
  padding:70px 0 38px;
  background:#fff;
}
.ls-support-hero h1{
  margin:0 0 12px;
  color:var(--ls-deep);
}
.ls-support-hero .ls-lead{
  max-width:980px;
  margin:0;
}

.ls-support-card-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:22px;
}
.ls-support-card{
  min-width:0;
  padding:28px;
  border-radius:18px;
  background:var(--ls-gray);
}
.ls-support-card h2{
  margin:0 0 18px!important;
  color:#151515;
  font-size:18px;
  line-height:1.25;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.ls-support-card p{
  margin:0 0 15px;
  color:var(--ls-text);
  line-height:1.55;
}
.ls-support-card a:not(.ls-button){
  color:var(--ls-purple);
  font-weight:700;
}
.ls-support-link-list{
  list-style:none;
  margin:16px 0 0;
  padding:0;
}
.ls-support-link-list li{
  margin:11px 0;
}
.ls-support-link-list a{
  color:var(--ls-purple);
  font-weight:700;
  text-decoration:none;
}
.ls-support-link-list a:hover{
  text-decoration:underline;
  text-underline-offset:3px;
}
.ls-button--dark{
  background:#252525!important;
  color:#fff!important;
  border-color:#252525!important;
}
.ls-button--dark:hover{
  background:var(--ls-purple)!important;
  border-color:var(--ls-purple)!important;
}

.ls-support-testimonial{
  width:min(100%,900px);
  margin:0 auto;
  padding:38px clamp(26px,5vw,54px);
  border-left:6px solid var(--ls-purple);
  border-radius:0 16px 16px 0;
  background:#fff;
  box-shadow:var(--ls-shadow);
}
.ls-support-testimonial blockquote{
  margin:10px 0 18px!important;
  padding:0!important;
  border:0!important;
  color:var(--ls-deep)!important;
  font-family:var(--ls-font);
  font-size:clamp(22px,3vw,30px);
  line-height:1.38;
  font-weight:700;
  font-style:normal!important;
}
.ls-support-quote-name{
  margin:0!important;
  color:var(--ls-purple)!important;
  font-weight:800;
}

.ls-support-page .ls-faq-wrap{
  width:min(100%,760px);
}
.ls-support-page .ls-faq-item{
  border-radius:18px;
  background:var(--ls-gray);
}
.ls-support-page .ls-faq-item summary{
  padding:25px 58px 25px 26px;
  color:#151515;
  font-size:18px;
}
.ls-support-page .ls-faq-answer{
  padding:0 26px 28px;
  color:var(--ls-text);
}
.ls-support-page .ls-faq-answer p{
  margin:0;
  line-height:1.65;
}

.ls-support-resource-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:26px;
  margin-top:30px;
}
.ls-support-resource-card{
  position:relative;
  display:block;
  min-height:235px;
  overflow:hidden;
  border-radius:14px;
  box-shadow:var(--ls-shadow);
  background:var(--ls-deep);
}
.ls-support-resource-card img{
  display:block;
  width:100%;
  height:100%;
  min-height:235px;
  aspect-ratio:16/9;
  object-fit:cover;
  transition:transform .24s ease;
}
.ls-support-resource-card::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(37,21,69,.08),rgba(37,21,69,.80));
}
.ls-support-resource-overlay{
  position:absolute;
  z-index:2;
  left:24px;
  right:24px;
  bottom:22px;
  display:flex;
  flex-direction:column;
  gap:5px;
  color:#fff;
}
.ls-support-resource-overlay strong{
  color:#fff;
  font-size:24px;
  line-height:1.15;
}
.ls-support-resource-overlay span{
  color:#fff;
  font-size:18px;
  line-height:1.3;
}
.ls-support-resource-card:hover img{
  transform:scale(1.035);
}
.ls-support-resource-card:focus-visible{
  outline:3px solid var(--ls-purple);
  outline-offset:4px;
}

@media (max-width:900px){
  .ls-support-card-grid,
  .ls-support-resource-grid{
    grid-template-columns:1fr;
  }
  .ls-support-resource-card,
  .ls-support-resource-card img{
    min-height:220px;
  }
}
@media (max-width:620px){
  .ls-support-card{
    padding:24px 20px;
  }
  .ls-support-testimonial{
    padding:28px 22px;
  }
  .ls-support-page .ls-faq-item summary{
    padding:22px 52px 22px 20px;
    font-size:17px;
  }
  .ls-support-page .ls-faq-answer{
    padding:0 20px 24px;
  }
}


/* =========================================================
   23. RECOVERY PACK 5 — global H2 typography + CI CTA alignment
   Updated: 2026-08-16
   ========================================================= */

/* All H2s use the LegalSifter typeface. This is intentionally global so
   legacy blocks, Gutenberg content, and rebuilt `.ls-page` sections cannot
   silently fall back to a theme/system font. */
h2,
.entry-content h2,
.site-content h2,
.ls-page h2,
.ls-post-content h2{
  font-family:var(--ls-font)!important;
}

/* Combined Intelligence hero is centered; center the flex-based action row too. */
.ls-ci-hero .ls-actions{
  justify-content:center!important;
}

/* Law Firms hero/image recovery: never collapse if an intrinsic dimension from
   the migrated content is missing. */
.ls-law-firms-page .ls-hero img,
.ls-page[data-page="law-firms"] .ls-hero img{
  display:block;
  width:100%;
  height:auto;
  object-fit:cover;
}

/* Redlining FAQ uses the same centered standard component as the rest of site. */
body.page-id-1716 .ls-faq-wrap{
  width:min(100%,880px);
  margin-inline:auto!important;
}
body.page-id-1716 .ls-faq-wrap > h2{
  text-align:center!important;
}


/* =========================================================
   24. DROPDOWN MENU DESCRIPTIONS
   Updated: 2026-08-16
   ========================================================= */

/*
 * WordPress native menu descriptions are rendered by functions.php.
 * Only described submenu items receive this richer card-like layout.
 */
.main-navigation .main-nav ul ul{
  width:360px;
  max-width:min(360px,calc(100vw - 32px));
  padding:8px 0;
  border:1px solid #e4e0e8;
  border-radius:14px;
  background:#fff;
  box-shadow:0 12px 34px rgba(37,21,69,.14);
  overflow:hidden;
}

.main-navigation .main-nav ul ul li.ls-menu-has-description > a{
  display:flex!important;
  flex-direction:column;
  align-items:flex-start;
  gap:3px;
  height:auto!important;
  min-height:0!important;
  padding:15px 20px!important;
  line-height:1.25!important;
  white-space:normal;
  background:#fff;
  color:#202020!important;
}

.main-navigation .main-nav ul ul li.ls-menu-has-description > a:hover,
.main-navigation .main-nav ul ul li.ls-menu-has-description > a:focus{
  background:#f7f4fb!important;
  color:#202020!important;
}

.ls-menu-label{
  display:block;
  color:#202020;
  font-family:var(--ls-font);
  font-size:16px;
  line-height:1.3;
  font-weight:800;
}

.ls-menu-arrow{
  display:inline;
  margin-left:2px;
  color:#454047;
  font-weight:500;
}

.ls-menu-description{
  display:block;
  max-width:300px;
  color:#333;
  font-family:var(--ls-font);
  font-size:14px;
  line-height:1.4;
  font-weight:400;
}

/* Avoid divider-style borders fighting the card treatment. */
.main-navigation .main-nav ul ul li.ls-menu-has-description > a{
  border-bottom:0!important;
}

/* GeneratePress mobile navigation uses nested menus in-flow rather than
   desktop flyouts. Keep descriptions readable without forcing a 360px menu. */
@media (max-width:768px){
  .main-navigation .main-nav ul ul{
    width:100%!important;
    max-width:none!important;
    border-radius:0;
    border-left:0;
    border-right:0;
    box-shadow:none;
  }

  .main-navigation .main-nav ul ul li.ls-menu-has-description > a{
    padding:14px 24px!important;
  }

  .ls-menu-description{
    max-width:none;
    font-size:13px;
  }
}


/* =========================================================
   25. WHO WE SERVE / INDUSTRY H1 NORMALIZATION
   Updated: 2026-08-16
   ========================================================= */

/*
 * Every direct child of the Industries parent receives
 * `.ls-who-we-serve-page` from functions.php. Normalize the hero H1 to
 * the same preferred treatment already seen on Healthcare and Law Firms.
 *
 * `!important` is deliberate: several migrated industry pages still
 * carry inline or page-specific font-size declarations.
 */
body.ls-who-we-serve-page .entry-content h1,
body.ls-who-we-serve-page .site-content h1,
body.ls-who-we-serve-page .ls-page h1,
body.ls-who-we-serve-page .ls-hero h1,
body.ls-who-we-serve-page .ls-hero-copy h1{
  font-family:var(--ls-font)!important;
  font-size:clamp(38px,4.5vw,56px)!important;
  line-height:1.08!important;
  font-weight:800!important;
  letter-spacing:-.025em!important;
}

/*
 * Product screenshots on Law Firms should display at their natural
 * aspect ratio and never be scaled to an arbitrary fixed height.
 */
body.page-id-1478 .ls-media-frame img{
  display:block;
  width:100%;
  height:auto!important;
  max-height:none!important;
  object-fit:contain!important;
}


/* =========================================================
   26. DROPDOWN MENU TYPOGRAPHY + SPACING NORMALIZATION
   Updated: 2026-08-16
   ========================================================= */

/*
 * Apply the same strong LegalSifter typography and breathing room to
 * every dropdown item, whether or not it has a Description field.
 */
.main-navigation .main-nav ul ul li.menu-item > a{
  display:flex!important;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  height:auto!important;
  min-height:0!important;
  padding:15px 20px!important;
  color:#202020!important;
  background:#fff;
  font-family:var(--ls-font)!important;
  font-size:16px!important;
  line-height:1.3!important;
  font-weight:800!important;
  white-space:normal;
  border-bottom:0!important;
}

/* Keep hover/focus consistent across described and plain items. */
.main-navigation .main-nav ul ul li.menu-item > a:hover,
.main-navigation .main-nav ul ul li.menu-item > a:focus{
  background:#f7f4fb!important;
  color:#202020!important;
}

/*
 * Plain items do not have `.ls-menu-label`, so their anchor text itself
 * carries the label styling above. Described items retain their second line.
 */
.main-navigation .main-nav ul ul li.ls-menu-has-description > a{
  gap:3px;
}

/* Add a little separation between dropdown rows without visible dividers. */
.main-navigation .main-nav ul ul li.menu-item + li.menu-item{
  margin-top:1px;
}

/* Normalize submenu indicator/caret alignment if GeneratePress adds one. */
.main-navigation .main-nav ul ul li.menu-item > a .dropdown-menu-toggle{
  margin-left:auto;
  padding-left:12px;
  color:#454047;
}

/* Mobile dropdowns keep the same hierarchy but slightly tighter spacing. */
@media (max-width:768px){
  .main-navigation .main-nav ul ul li.menu-item > a{
    padding:14px 24px!important;
    font-size:15px!important;
    line-height:1.35!important;
  }
}


/* =========================================================
   27. 404 PAGE
   Updated: 2026-08-16
   ========================================================= */

/* Center the default GeneratePress 404 experience and keep it visually
   consistent with the LegalSifter design system. */
body.error404 .site-content{
  min-height:520px;
}

body.error404 .site-main{
  width:100%;
}

body.error404 .site-main > *{
  max-width:900px;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center;
}

body.error404 .page-header,
body.error404 .inside-article{
  padding-top:54px;
  padding-bottom:72px;
}

body.error404 .page-title,
body.error404 h1{
  margin:0 auto 24px!important;
  color:var(--ls-purple)!important;
  font-family:var(--ls-font)!important;
  font-size:clamp(40px,6vw,64px)!important;
  line-height:1.05!important;
  font-weight:800!important;
  letter-spacing:-.03em!important;
  text-align:center!important;
}

body.error404 .site-main p{
  max-width:680px;
  margin:0 auto 30px!important;
  color:var(--ls-text);
  font-family:var(--ls-font);
  font-size:18px;
  line-height:1.55;
  text-align:center;
}

body.error404 .search-form{
  display:flex;
  justify-content:center;
  width:min(100%,430px);
  margin:0 auto!important;
}

body.error404 .search-form label{
  flex:1 1 auto;
}

body.error404 .search-form .search-field{
  width:100%;
  min-height:48px;
  padding:11px 16px;
  border:1px solid var(--ls-line);
  border-radius:8px 0 0 8px;
  font-family:var(--ls-font);
  font-size:16px;
}

body.error404 .search-form .search-submit{
  min-width:58px;
  min-height:48px;
  margin:0;
  border-radius:0 8px 8px 0;
  background:var(--ls-purple);
  color:#fff;
}

body.error404 .search-form .search-submit:hover,
body.error404 .search-form .search-submit:focus{
  background:var(--ls-deep);
}

@media (max-width:620px){
  body.error404 .page-header,
  body.error404 .inside-article{
    padding:42px 20px 58px;
  }

  body.error404 .site-main p{
    font-size:17px;
  }

  body.error404 .search-form{
    width:100%;
  }
}


/* =========================================================
   28. WHO WE SERVE HERO CONTENT SAFEGUARDS
   Updated: 2026-08-16
   ========================================================= */

/*
 * Standard challenge/check list for Who We Serve hero sections.
 * Used immediately by Universities and available as the canonical
 * replacement for inline legacy bullet markup on the remaining industries.
 */
body.ls-who-we-serve-page .ls-industry-hero-checks{
  list-style:none!important;
  margin:8px 0 18px!important;
  padding:0!important;
  display:grid;
  gap:13px;
}
body.ls-who-we-serve-page .ls-industry-hero-checks li{
  position:relative;
  margin:0!important;
  padding:0 0 0 38px!important;
  color:#333;
  font-family:var(--ls-font);
  font-size:17px;
  line-height:1.5;
}
body.ls-who-we-serve-page .ls-industry-hero-checks li::before{
  content:"✓";
  position:absolute;
  left:0;
  top:1px;
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  box-sizing:border-box;
  border:3px solid var(--ls-purple);
  border-radius:50%;
  color:var(--ls-purple);
  font-size:13px;
  line-height:1;
  font-weight:900;
}

/*
 * Existing Insurance / Manufacturing / SaaS heroes still use inline SVG
 * checkmarks. Preserve their size/alignment even as global industry H1 and
 * responsive rules evolve.
 */
body.ls-who-we-serve-page .site-content section:first-of-type svg{
  flex:0 0 auto!important;
  width:22px!important;
  height:22px!important;
  min-width:22px!important;
  margin-top:2px!important;
}

/* Hero copy must retain readable spacing around bullets on every breakpoint. */
body.ls-who-we-serve-page .site-content section:first-of-type p{
  max-width:100%;
}

@media (max-width:760px){
  body.ls-who-we-serve-page .ls-industry-hero-checks{
    gap:12px;
    margin-bottom:16px!important;
  }

  body.ls-who-we-serve-page .ls-industry-hero-checks li{
    padding-left:35px!important;
    font-size:16px;
  }

  body.ls-who-we-serve-page .ls-industry-hero-checks li::before{
    width:22px;
    height:22px;
    border-width:2px;
    font-size:12px;
  }
}


/* =========================================================
   29. LEGALSIFTER ORGANIZE / CONTRACT ORGANIZATION
   Updated: 2026-08-16
   ========================================================= */

.ls-organize-hero .ls-hero-copy h1{
  color:var(--ls-purple);
  font-family:var(--ls-font);
}
.ls-organize-hero-media{
  padding:0;
  overflow:hidden;
  border:0;
  background:transparent;
  box-shadow:none;
}
.ls-organize-hero-media img{
  display:block;
  width:100%;
  height:auto;
  object-fit:contain;
}

.ls-organize-intro{
  width:min(100%,980px);
  margin:0 auto;
  text-align:center;
  font-size:17px;
  line-height:1.7;
}

.ls-organize-feature{
  display:grid;
  grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);
  gap:clamp(36px,6vw,76px);
  align-items:center;
}
.ls-organize-feature--reverse .ls-organize-media{
  order:2;
}
.ls-organize-feature--reverse .ls-organize-copy{
  order:1;
}
.ls-organize-copy h2{
  margin-top:0!important;
  color:var(--ls-deep);
}
.ls-organize-copy .ls-eyebrow{
  margin-bottom:9px;
}
.ls-organize-copy .ls-check-list{
  margin-top:22px!important;
}
.ls-organize-media img{
  display:block;
  width:100%;
  height:auto!important;
  max-height:440px;
  object-fit:contain!important;
}

.ls-organize-benefits{
  text-align:center;
}
.ls-organize-benefit-grid{
  width:min(100%,860px);
  margin:32px auto 0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:28px;
}
.ls-organize-benefit-card{
  display:flex;
  min-height:310px;
  flex-direction:column;
  justify-content:center;
  padding:38px 36px;
  border-radius:16px;
  background:var(--ls-purple);
  color:#fff;
  box-shadow:0 14px 34px rgba(37,21,69,.12);
}
.ls-organize-benefit-card h3{
  margin:0 0 22px!important;
  color:#fff!important;
  font-family:var(--ls-font);
  font-size:25px;
  line-height:1.18;
}
.ls-organize-benefit-card p{
  margin:0!important;
  color:#fff!important;
  font-size:17px;
  line-height:1.55;
}

/* Keep eyebrow labels visually consistent with the current LegalSifter site. */
.ls-organize-page .ls-eyebrow{
  color:var(--ls-purple)!important;
  font-family:var(--ls-font);
  font-size:13px;
  line-height:1.3;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
}

/* Organize page gets the standard centered FAQ treatment. */
body.page-id-1678 .ls-faq-wrap{
  width:min(100%,880px);
  margin-inline:auto!important;
}
body.page-id-1678 .ls-faq-wrap > h2{
  text-align:center!important;
}

@media (max-width:900px){
  .ls-organize-feature{
    grid-template-columns:1fr;
    gap:30px;
  }
  .ls-organize-feature--reverse .ls-organize-media,
  .ls-organize-feature--reverse .ls-organize-copy{
    order:initial;
  }
  .ls-organize-media{
    width:min(100%,720px);
    margin-inline:auto;
  }
}
@media (max-width:680px){
  .ls-organize-benefit-grid{
    grid-template-columns:1fr;
  }
  .ls-organize-benefit-card{
    min-height:0;
    padding:30px 24px;
  }
}


/* =========================================================
   30. MANAGED SERVICES TABS + BUTTON SPACING
   Updated: 2026-08-16
   ========================================================= */

/* Give page-content buttons appropriate separation from preceding copy. */
.ls-page .ls-actions,
.ls-page .ls-button-row,
.ls-page .ls-managed-button-row{
  margin-top:24px!important;
}
.ls-page p + .ls-button,
.ls-page ul + .ls-button{
  margin-top:24px!important;
}

/* Managed Services tabs */
.ls-managed-services-section h2{
  margin:0 0 24px!important;
  color:var(--ls-deep);
}
.ls-managed-services-tabs{
  overflow:hidden;
  border:1px solid var(--ls-line);
  border-radius:14px;
  background:#fff;
  box-shadow:0 10px 28px rgba(37,21,69,.06);
}
.ls-managed-services-tabs .ls-tab-list{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  background:var(--ls-gray);
}
.ls-managed-services-tabs .ls-tab-button{
  position:relative;
  min-height:64px;
  padding:18px 20px;
  border:0;
  border-radius:0;
  background:transparent;
  color:#333;
  font-family:var(--ls-font);
  font-size:15px;
  line-height:1.3;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  white-space:normal;
  cursor:pointer;
}
.ls-managed-services-tabs .ls-tab-button[aria-selected="true"]{
  background:var(--ls-purple);
  color:#fff;
}
.ls-managed-services-tabs .ls-tab-button[aria-selected="true"]::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:-9px;
  width:18px;
  height:18px;
  transform:translateX(-50%) rotate(45deg);
  background:var(--ls-purple);
  z-index:2;
}
.ls-managed-services-tabs .ls-tab-panel{
  padding:52px clamp(28px,5vw,72px);
}
.ls-managed-panel{
  display:grid;
  grid-template-columns:minmax(0,.95fr) minmax(0,1.25fr);
  gap:clamp(40px,7vw,90px);
  align-items:start;
}
.ls-managed-copy h3{
  margin:0 0 18px!important;
  color:#333;
  font-family:var(--ls-font);
  font-size:24px;
}
.ls-managed-copy p{
  color:var(--ls-text);
  font-size:17px;
  line-height:1.55;
}
.ls-managed-services-intro{
  margin:0 0 20px!important;
  color:#222!important;
  font-size:17px;
}
.ls-managed-services .ls-check-list{
  margin-top:0!important;
}
.ls-managed-services .ls-check-list li{
  margin-bottom:19px!important;
}
.ls-managed-button-row{
  margin-bottom:0!important;
}

/* Testimonial */
.ls-managed-testimonial{
  padding-top:0;
  padding-bottom:0;
  background:linear-gradient(120deg,var(--ls-purple),var(--ls-deep));
  color:#fff;
}
.ls-managed-testimonial-grid{
  display:grid;
  grid-template-columns:minmax(0,1.55fr) minmax(280px,.65fr);
  gap:40px;
  align-items:end;
}
.ls-managed-testimonial-copy{
  padding:60px 0;
}
.ls-managed-testimonial .ls-eyebrow{
  color:#fff!important;
}
.ls-managed-testimonial blockquote{
  margin:24px 0 36px!important;
  padding:0!important;
  border:0!important;
  color:#fff!important;
  font-family:var(--ls-font);
  font-size:clamp(24px,3vw,38px);
  line-height:1.35;
  font-style:normal!important;
  font-weight:500;
}
.ls-managed-testimonial-name{
  margin:0!important;
  color:#fff!important;
  font-weight:700;
}
.ls-managed-testimonial-photo{
  align-self:end;
  min-width:0;
}
.ls-managed-testimonial-photo img{
  display:block;
  width:100%;
  max-height:470px;
  object-fit:contain;
  object-position:center bottom;
}

@media (max-width:900px){
  .ls-managed-panel{
    grid-template-columns:1fr;
    gap:30px;
  }
  .ls-managed-testimonial-grid{
    grid-template-columns:1fr;
  }
  .ls-managed-testimonial-copy{
    padding:44px 0 12px;
  }
  .ls-managed-testimonial-photo{
    width:min(100%,420px);
    margin:0 auto;
  }
}

@media (max-width:760px){
  .ls-managed-services-tabs .ls-tab-list{
    grid-template-columns:1fr;
  }
  .ls-managed-services-tabs .ls-tab-button{
    min-height:0;
    padding:15px 18px;
    text-align:left;
  }
  .ls-managed-services-tabs .ls-tab-button[aria-selected="true"]::after{
    display:none;
  }
  .ls-managed-services-tabs .ls-tab-panel{
    padding:30px 20px;
  }
}


/* =========================================================
   31. CANONICAL FEATURED RESOURCE CARDS
   Updated: 2026-08-17
   ========================================================= */

.ls-resource-grid,
.ls-healthcare-resource-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:22px!important;
  align-items:stretch;
  margin-top:30px!important;
}

.ls-resource-card,
.ls-healthcare-resource-card{
  min-width:0;
  height:100%;
  overflow:hidden;
  border:1px solid var(--ls-line)!important;
  border-radius:14px!important;
  background:#fff!important;
  box-shadow:0 8px 24px rgba(37,21,69,.07)!important;
  transition:transform .18s ease,box-shadow .18s ease;
}

a.ls-resource-card{
  display:flex!important;
  flex-direction:column;
  color:inherit!important;
  text-decoration:none!important;
}
article.ls-resource-card,
article.ls-healthcare-resource-card{
  display:flex!important;
  flex-direction:column;
}

.ls-resource-card:hover,
.ls-healthcare-resource-card:hover{
  transform:translateY(-2px);
  box-shadow:0 14px 34px rgba(37,21,69,.11)!important;
}

.ls-resource-card > img,
.ls-resource-card > a:first-child > img,
.ls-healthcare-resource-card > img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  aspect-ratio:16/9!important;
  object-fit:cover!important;
  border-radius:0!important;
}

.ls-resource-card-body,
.ls-resource-card__body,
.ls-healthcare-resource-body{
  display:flex!important;
  flex:1;
  flex-direction:column;
  padding:20px!important;
}

.ls-resource-card .ls-eyebrow,
.ls-resource-card__body .ls-eyebrow,
.ls-healthcare-resource-body .ls-eyebrow{
  margin:0 0 12px!important;
  color:var(--ls-purple)!important;
  font-family:var(--ls-font);
  font-size:12px!important;
  font-weight:800!important;
  letter-spacing:.12em;
  text-transform:uppercase;
}

.ls-resource-card h3,
.ls-resource-card h4,
.ls-healthcare-resource-card h3{
  margin:0 0 12px!important;
  color:var(--ls-deep)!important;
  font-family:var(--ls-font)!important;
  font-size:18px!important;
  line-height:1.32!important;
  font-weight:800!important;
}

.ls-resource-card h3 a,
.ls-resource-card h4 a,
.ls-healthcare-resource-card h3 a{
  color:var(--ls-deep)!important;
  text-decoration:none!important;
}

.ls-resource-card-body > p:not(.ls-eyebrow),
.ls-resource-card__body > p:not(.ls-eyebrow),
.ls-healthcare-resource-body > p:not(.ls-eyebrow){
  margin:0 0 16px!important;
  color:var(--ls-text)!important;
  font-size:14px!important;
  line-height:1.55!important;
}

.ls-resource-more,
.ls-resource-card__body > a:last-child,
.ls-resource-card-body > a:last-child,
.ls-healthcare-resource-body > a:last-child{
  display:inline-block;
  margin-top:auto!important;
  color:var(--ls-purple)!important;
  font-family:var(--ls-font);
  font-size:14px!important;
  line-height:1.35;
  font-weight:800!important;
  text-decoration:none!important;
}

.ls-resource-card__body > a:last-child:hover,
.ls-resource-card-body > a:last-child:hover,
.ls-healthcare-resource-body > a:last-child:hover{
  text-decoration:underline!important;
  text-underline-offset:3px;
}

.ls-resource-section > .ls-inner > h2{
  text-align:center!important;
}

@media (max-width:900px){
  .ls-resource-grid,
  .ls-healthcare-resource-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media (max-width:620px){
  .ls-resource-grid,
  .ls-healthcare-resource-grid{
    grid-template-columns:1fr!important;
  }
}


/* =========================================================
   32. AI CONTRACT REVIEW DUPLICATE CTA FAILSAFE
   Updated: 2026-08-17
   ========================================================= */

/*
 * Final visual failsafe for the obsolete content CTA on page 1747.
 * The PHP output filter removes this node from final HTML; this rule
 * guarantees it cannot display if another layer bypasses that filter.
 */
body.page-id-1581 section#demo.ls-section--purple,
body.page-id-1747 section#demo.ls-section--purple{
  display:none!important;
}


/* =========================================================
   33. CONTACT PAGE + CONTACT US FORM
   Updated: 2026-08-16
   ========================================================= */

/*
 * Contact is an intentional exception to the normal "forms only on Demo"
 * rule. Keep the current form centralized and visually separate from the
 * introductory content without embedding styling in the page itself.
 */
body.page-id-1931 .site-main,
body.page-id-1931 .entry-content{
  width:100%;
}

body.page-id-1931 .ls-page{
  margin-bottom:0;
}

body.page-id-1931 .ls-hero{
  padding-bottom:42px;
}

/* The WPForms form becomes a clean centered LegalSifter card. */
body.page-id-1931 .wpforms-container{
  width:min(100% - 40px,920px)!important;
  margin:42px auto 72px!important;
  padding:clamp(24px,4vw,44px)!important;
  box-sizing:border-box;
  border:1px solid var(--ls-line);
  border-radius:18px;
  background:#fff;
  box-shadow:0 14px 38px rgba(37,21,69,.09);
}

/* Give the form a subtle page-level frame without changing its markup. */
body.page-id-1931 .wpforms-container::before{
  content:"Contact Us";
  display:block;
  margin:0 0 6px;
  color:var(--ls-deep);
  font-family:var(--ls-font);
  font-size:clamp(26px,3vw,34px);
  line-height:1.15;
  font-weight:800;
}

body.page-id-1931 .wpforms-container::after{
  content:"Complete the form and our team will get back to you.";
  display:block;
  order:-1;
  margin:0 0 24px;
  color:var(--ls-text);
  font-family:var(--ls-font);
  font-size:15px;
  line-height:1.5;
}

/* Normalize form spacing and typography. */
body.page-id-1931 .wpforms-container .wpforms-field{
  padding:9px 0!important;
}

body.page-id-1931 .wpforms-container .wpforms-field-label{
  margin-bottom:6px!important;
  color:var(--ls-deep)!important;
  font-family:var(--ls-font);
  font-size:15px!important;
  font-weight:700!important;
}

body.page-id-1931 .wpforms-container input[type="text"],
body.page-id-1931 .wpforms-container input[type="email"],
body.page-id-1931 .wpforms-container input[type="tel"],
body.page-id-1931 .wpforms-container input[type="url"],
body.page-id-1931 .wpforms-container input[type="number"],
body.page-id-1931 .wpforms-container select,
body.page-id-1931 .wpforms-container textarea{
  width:100%;
  min-height:48px;
  padding:11px 13px!important;
  border:1px solid #d9d5df!important;
  border-radius:9px!important;
  background:#fff!important;
  color:#222!important;
  font-family:var(--ls-font);
  font-size:15px!important;
  box-shadow:none!important;
}

body.page-id-1931 .wpforms-container textarea{
  min-height:140px;
  resize:vertical;
}

body.page-id-1931 .wpforms-container input:focus,
body.page-id-1931 .wpforms-container select:focus,
body.page-id-1931 .wpforms-container textarea:focus{
  border-color:var(--ls-purple)!important;
  outline:2px solid rgba(102,56,182,.12)!important;
  outline-offset:1px;
}

/* Checkbox/radio groups get readable vertical rhythm. */
body.page-id-1931 .wpforms-container ul,
body.page-id-1931 .wpforms-container .wpforms-field-checkbox ul,
body.page-id-1931 .wpforms-container .wpforms-field-radio ul{
  margin-top:8px!important;
}

body.page-id-1931 .wpforms-container .wpforms-field-checkbox li,
body.page-id-1931 .wpforms-container .wpforms-field-radio li{
  margin-bottom:8px!important;
  line-height:1.45;
}

/* Submit follows LegalSifter CTA styling, but stays inside the form. */
body.page-id-1931 .wpforms-container button[type="submit"],
body.page-id-1931 .wpforms-container input[type="submit"],
body.page-id-1931 .wpforms-container .wpforms-submit{
  min-width:150px;
  margin-top:16px!important;
  padding:12px 28px!important;
  border:2px solid var(--ls-purple)!important;
  border-radius:999px!important;
  background:var(--ls-purple)!important;
  color:#fff!important;
  font-family:var(--ls-font);
  font-size:15px!important;
  font-weight:800!important;
}

body.page-id-1931 .wpforms-container button[type="submit"]:hover,
body.page-id-1931 .wpforms-container button[type="submit"]:focus,
body.page-id-1931 .wpforms-container input[type="submit"]:hover,
body.page-id-1931 .wpforms-container .wpforms-submit:hover{
  border-color:var(--ls-deep)!important;
  background:var(--ls-deep)!important;
}

/* The Contact page should flow directly from form to global footer.
   There is intentionally no contextual demo CTA on this page. */
body.page-id-1931 .ls-contextual-demo-cta{
  display:none!important;
}

@media (max-width:620px){
  body.page-id-1931 .wpforms-container{
    width:calc(100% - 28px)!important;
    margin:30px auto 48px!important;
    padding:24px 18px!important;
    border-radius:14px;
  }
}

