.elementor-kit-4{--e-global-color-primary:#B03050;--e-global-color-secondary:#412D68;--e-global-color-text:#100020;--e-global-color-accent:#ED4576;--e-global-color-llraqua:#3FDFCF;--e-global-color-llryellow:#F8EA15;--e-global-color-llrorchid:#E57DE6;--e-global-color-llrsage:#9EB29E;--e-global-color-llrsagepl:#C0D8C0;--e-global-color-llrsand:#E6C694;--e-global-color-llrcoral:#F07050;--e-global-color-llrorange:#F08040;--e-global-color-llramber:#F0B040;--e-global-color-llrshell:#F4F3ED;--e-global-color-llrwhite:#FFFFFF;--e-global-color-llrhover:#8F2642;--e-global-typography-primary-font-family:"Outfit";--e-global-typography-primary-font-weight:700;--e-global-typography-primary-line-height:1.15em;--e-global-typography-secondary-font-family:"Outfit";--e-global-typography-secondary-font-weight:600;--e-global-typography-secondary-line-height:1.2em;--e-global-typography-text-font-family:"Open Sans";--e-global-typography-text-font-size:18px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.6em;--e-global-typography-accent-font-family:"Open Sans";--e-global-typography-accent-font-weight:600;color:#100020;font-family:"Open Sans", Sans-serif;font-size:18px;font-weight:400;line-height:1.6em;}.elementor-kit-4 button,.elementor-kit-4 input[type="button"],.elementor-kit-4 input[type="submit"],.elementor-kit-4 .elementor-button{background-color:#B03050;font-family:"Open Sans", Sans-serif;font-size:18px;font-weight:700;color:#FFFFFF;border-radius:999px 999px 999px 999px;padding:12px 32px 12px 32px;}.elementor-kit-4 button:hover,.elementor-kit-4 button:focus,.elementor-kit-4 input[type="button"]:hover,.elementor-kit-4 input[type="button"]:focus,.elementor-kit-4 input[type="submit"]:hover,.elementor-kit-4 input[type="submit"]:focus,.elementor-kit-4 .elementor-button:hover,.elementor-kit-4 .elementor-button:focus{background-color:#8F2642;color:#FFFFFF;}.elementor-kit-4 e-page-transition{background-color:#FFBC7D;}.elementor-kit-4 a{color:#B03050;}.elementor-kit-4 a:hover{color:#8F2642;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1320px;}.e-con{--container-max-width:1320px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-header .site-branding .site-logo img{width:300px;max-width:300px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}.site-header .site-branding .site-logo img{width:250px;max-width:250px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}.site-header .site-branding .site-logo img{width:196px;max-width:196px;}}
/* Start custom CSS *//* ============================================================
   LOVING LIGHT REGENERATION — brand + playful section system
   Lives in Elementor → Site Settings → Custom CSS so the owner
   can see and edit it in wp-admin. Tokens mirror the Kit Globals.

   ACCESSIBILITY IS NOT DECORATIVE:
   - bright surfaces carry --llr-ink, never white text
   - only --llr-action carries white text on a button (6.20:1)
   - any text over the sunset gradient sits on a scrim
   ============================================================ */

:root{
  --llr-ink:#100020; --llr-plum:#412D68; --llr-shell:#F4F3ED; --llr-white:#fff;
  --llr-action:#B03050; --llr-action-hov:#8F2642; --llr-pink:#ED4576;
  --llr-aqua:#3FDFCF; --llr-yellow:#F8EA15; --llr-orchid:#E57DE6;
  --llr-sage:#9EB29E; --llr-sage-pale:#C0D8C0; --llr-sand:#E6C694;
  --llr-coral:#F07050; --llr-orange:#F08040; --llr-amber:#F0B040;
  --llr-sunset:linear-gradient(135deg,#100020 0%,#B03050 35%,#F07050 62%,#F0B040 85%,#F0F080 100%);
  --llr-r-pill:999px;
}

body{ background:var(--llr-shell); color:var(--llr-ink); }

/* ---------- 1 · Curved section bands -------------------------------
   Straight edges are the "clinic" look. Every colour band gets a
   soft curve so sections read as overlapping shapes, not stacked boxes. */

.llr-band{ position:relative; padding:clamp(48px,7vw,104px) 0; }

/* smile — curves in at the bottom */
.llr-band--smile{ border-radius:0 0 clamp(40px,9vw,110px) clamp(40px,9vw,110px); }
/* arch — curves in at the top */
.llr-band--arch{ border-radius:clamp(40px,9vw,110px) clamp(40px,9vw,110px) 0 0; }
/* lozenge — both, and asymmetric so it never reads as a rounded rectangle */
.llr-band--lozenge{ border-radius:clamp(40px,9vw,110px) 8px clamp(40px,9vw,110px) 8px; }
/* wave — an actual curved edge, masked, no image */
.llr-band--wave{
  -webkit-mask:radial-gradient(120% 100% at 50% 0,#000 99%,transparent 100%);
          mask:radial-gradient(120% 100% at 50% 0,#000 99%,transparent 100%);
}

/* container — one measure for every band */
.llr-wrap{ max-width:1140px; margin:0 auto; padding:0 clamp(20px,4vw,32px); }

/* bands pull up under the curve of the one above, so shapes overlap
   instead of leaving a straight seam */
.llr-band + .llr-band{ margin-top:clamp(-56px,-5vw,-24px); }
.llr-band--shell{ background:var(--llr-shell); color:var(--llr-ink); }
.llr-band--aqua  { background:var(--llr-aqua);      color:var(--llr-ink); }
.llr-band--yellow{ background:var(--llr-yellow);    color:var(--llr-ink); }
.llr-band--pink  { background:var(--llr-pink);      color:var(--llr-ink); }
.llr-band--sand  { background:var(--llr-sand);      color:var(--llr-ink); }
.llr-band--sage  { background:var(--llr-sage-pale); color:var(--llr-ink); }
.llr-band--plum  { background:var(--llr-plum);      color:var(--llr-white); }

/* Sunset band — decorative gradient, text ALWAYS on the scrim.
   Bare, 4 of 5 gradient stops fail contrast. */
.llr-band--sunset{ background:var(--llr-sunset); color:var(--llr-white); overflow:hidden; }
.llr-band--sunset::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(90deg,rgba(16,0,32,.92) 0%,rgba(16,0,32,.82) 52%,rgba(16,0,32,.30) 100%);
}
.llr-band--sunset > *{ position:relative; z-index:1; }

/* ---------- 2 · Blobs, not boxes ----------------------------------- */

.llr-blob{
  border-radius:42% 58% 63% 37% / 41% 44% 56% 59%;
  padding:clamp(24px,4vw,44px);
}
.llr-blob--b{ border-radius:63% 37% 41% 59% / 56% 63% 37% 44%; }

/* soft colour blob floating behind a heading */
.llr-pop{ position:relative; display:inline-block; }
.llr-pop::before{
  content:""; position:absolute; z-index:-1;
  inset:-.35em -.6em -.25em -.6em;
  background:var(--llr-yellow);
  border-radius:58% 42% 47% 53% / 62% 55% 45% 38%;
  transform:rotate(-1.5deg);
}
.llr-pop--aqua::before  { background:var(--llr-aqua); }
.llr-pop--orchid::before{ background:var(--llr-orchid); }

/* ---------- 3 · Cards — asymmetric, never a plain rectangle -------- */

.llr-card{
  background:var(--llr-white); color:var(--llr-ink);
  border-radius:30px 30px 30px 6px;
  padding:clamp(22px,3vw,34px);
  box-shadow:0 4px 12px rgba(16,0,32,.09), 0 14px 34px rgba(16,0,32,.08);
}
.llr-card:nth-child(even){ border-radius:30px 30px 6px 30px; }

/* ---------- 4 · Buttons — sticker energy --------------------------- */

.llr-btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:12px 32px;
  font-family:"Open Sans",system-ui,sans-serif; font-weight:700; font-size:1.125rem;
  border:0; border-radius:var(--llr-r-pill); cursor:pointer;
  text-decoration:none !important; /* theme underlines every <a>; a pill button is not a text link */
  transition:transform .12s cubic-bezier(.34,1.56,.64,1), background-color .15s ease;
}
/* Selectors are `a.llr-btn-*`, not `.llr-btn-*`, on purpose.
   The Kit's link colour emits a bare `a{color:#B03050}` that loads AFTER this
   file — a class alone ties on specificity and loses on order, which rendered
   crimson text on a crimson button at 1:1 contrast. Raising to (0,1,1) wins
   regardless of load order. Do not "simplify" these back to a bare class. */
a.llr-btn-primary,
.llr-btn-primary{ background:var(--llr-action); color:#fff; }
a.llr-btn-primary:hover,
.llr-btn-primary:hover{ background:var(--llr-action-hov); color:#fff; transform:translateY(-2px) rotate(-1deg); }
a.llr-btn-secondary,
.llr-btn-secondary{ background:transparent; color:var(--llr-ink); box-shadow:inset 0 0 0 2px var(--llr-ink); }
a.llr-btn-secondary:hover,
.llr-btn-secondary:hover{ background:var(--llr-ink); color:#fff; transform:translateY(-2px) rotate(1deg); }
.llr-btn:active{ transform:translateY(0) rotate(0); }
.llr-cta{ display:flex; flex-wrap:wrap; gap:14px; align-items:center; }

/* on a dark band the outline button needs to be light */
.llr-band--plum a.llr-btn-secondary,
.llr-band--sunset a.llr-btn-secondary{ color:#fff; box-shadow:inset 0 0 0 2px #fff; }
.llr-band--plum a.llr-btn-secondary:hover,
.llr-band--sunset a.llr-btn-secondary:hover{ background:#fff; color:var(--llr-ink); }

/* ---------- 5 · Type ----------------------------------------------- */

h1,h2,h3{ font-family:"Outfit",system-ui,sans-serif; line-height:1.15; }
h1{ font-size:clamp(2rem,1.4rem+2.6vw,3.5rem); font-weight:700; letter-spacing:-.02em; }
h2{ font-size:clamp(1.5rem,1.2rem+1.5vw,2.25rem); font-weight:600; }
h3{ font-size:clamp(1.2rem,1.1rem+.6vw,1.5rem); font-weight:600; }
p,li{ max-width:65ch; }
/* A 65ch cap constrains the BLOCK; text-align:center then centres the text
   inside a block that is still sitting hard left. Centre the block too, or
   every centred paragraph reads as misaligned against its heading. */
p[style*="text-align:center"],
p[style*="text-align: center"],
.elementor-widget-text-editor[class*="align-center"] p,
.llr-center p{ margin-left:auto; margin-right:auto; }
.llr-rule{ border:0; height:0; margin:clamp(28px,4vw,48px) 0; }

/* ---------- 6 · Tables --------------------------------------------- */

.llr-tablewrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.llr-tablewrap table{ width:100%; border-collapse:collapse; background:var(--llr-white);
  border-radius:22px; overflow:hidden; box-shadow:0 4px 12px rgba(16,0,32,.08); }
.llr-tablewrap th{ background:var(--llr-sage-pale); color:var(--llr-ink);
  font-family:"Outfit",sans-serif; font-weight:700; font-size:.8125rem;
  letter-spacing:.06em; text-transform:uppercase; text-align:left; padding:13px 18px; }
.llr-tablewrap td{ padding:13px 18px; border-bottom:1px solid rgba(16,0,32,.08); }
.llr-tablewrap tr:last-child td{ border-bottom:0; }

/* ---------- 7 · Focus — ink inner, white outer.
   Palette is light-dominant, so the ink ring is the one that shows. --- */

:focus-visible{ outline:none; box-shadow:0 0 0 3px var(--llr-ink), 0 0 0 6px var(--llr-white); }

/* ---------- 7 · Scroll reveal -------------------------------------
   FAIL-VISIBLE BY DESIGN. Elements are visible by default; the reveal applies
   only inside @supports for scroll-driven animation. Unsupported browser =
   content simply appears. The opposite arrangement (hide first, reveal later)
   is exactly what left 13 sections permanently invisible when Elementor's
   animation stylesheet never loaded. */

@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .llr-reveal > *{
      animation: llr-rise linear both;
      animation-timeline: view();
      animation-range: entry 5% cover 26%;
    }
    /* images trail the text beside them, slightly slower and with a touch of scale */
    .llr-reveal .elementor-widget-image{
      animation: llr-rise-slow linear both;
      animation-timeline: view();
      animation-range: entry 0% cover 34%;
    }
  }
}
/* Motion is TRANSFORM-LED, and opacity never starts at 0.
   A reveal that begins invisible means any non-scrolling context — a full-page
   screenshot, print, save-as, a crawler that snapshots — renders empty bands.
   That already happened once on this build. Starting at 0.35 keeps every word
   present and legible at all times while the movement still reads. */
@keyframes llr-rise{
  from{ opacity:1; transform:translateY(22px); }
  to{ opacity:1; transform:none; }
}
@keyframes llr-rise-slow{
  from{ opacity:1; transform:translateY(32px) scale(.99); }
  to{ opacity:1; transform:none; }
}

/* ---------- 7a · Reference-borrowed devices -------------------------
   From Othership (duration badges, hero social proof) and Remedy Place
   (credibility strip). Motion is CSS-only: transform/opacity, no JS. */

.llr-badge{
  display:inline-block; padding:6px 14px; border-radius:999px;
  background:rgba(16,0,32,.10); color:var(--llr-ink);
  font-family:"Open Sans",sans-serif; font-weight:700;
  font-size:11.5px; letter-spacing:.10em; text-transform:uppercase;
}
.llr-proof{ color:var(--llr-yellow); letter-spacing:.14em; font-size:15px; }

/* marquee — transform only, so it never triggers layout */
.llr-marquee{ overflow:hidden; width:100%; }
.llr-marquee__track{
  display:inline-flex; gap:44px; white-space:nowrap; will-change:transform;
  animation:llr-marquee 34s linear infinite;
}
.llr-marquee__track span{
  font-family:"Outfit",sans-serif; font-weight:700; font-size:16px;
  letter-spacing:.10em; text-transform:uppercase; color:var(--llr-ink);
}
.llr-marquee__track span::after{ content:"·"; margin-left:44px; opacity:.45; }
@keyframes llr-marquee{ to{ transform:translateX(-50%); } }
.llr-marquee:hover .llr-marquee__track{ animation-play-state:paused; }

/* ---------- 7b · Tap targets ---------------------------------------
   Hello Elementor's menu toggle renders 30x36px — under the 44x44 floor.
   Measured on a 390px viewport, not assumed. Kickers are uppercase labels,
   so they get a floor too rather than shrinking further on small screens. */

.elementor-menu-toggle,
.menu-toggle,
button[aria-label*="enu"]{
  min-width:44px; min-height:44px;
  display:inline-flex; align-items:center; justify-content:center;
}

/* Accordion headers rendered 26px tall at every viewport — and on the FAQ page
   they ARE the primary interaction. Measured, not assumed. */
.elementor-accordion .elementor-tab-title{
  min-height:56px; display:flex; align-items:center; gap:12px;
  padding-top:14px; padding-bottom:14px;
  border-bottom:1px solid rgba(16,0,32,.10);
}
/* Elementor nests an <a class="elementor-accordion-title"> inside the tab title.
   Padding only the outer div left that anchor at 24px, so the real hit area was
   still under the floor. Make the anchor fill its parent. */
.elementor-accordion .elementor-accordion-title{
  display:flex; align-items:center; flex:1 1 auto; min-height:44px;
}
.elementor-accordion .elementor-tab-title:hover{ background:rgba(16,0,32,.03); }
.elementor-accordion .elementor-tab-content{ padding-top:4px; padding-bottom:22px; }

@media (max-width:767px){
  /* no kicker label below 13px on a phone */
  .elementor-widget-text-editor p[style*="uppercase"]{ font-size:13px !important; }
}

/* ---------- 8 · Motion respect ------------------------------------- */

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ transition:none !important; animation:none !important; }
  .llr-btn:hover{ transform:none; }
  /* the marquee stops dead and stays readable rather than freezing mid-slide */
  .llr-marquee__track{ animation:none !important; transform:none !important; }
  /* Elementor entrance animations leave elements at opacity:0 if the animation
     never runs — force them visible instead of invisible */
  .elementor-invisible{ visibility:visible !important; opacity:1 !important; }
}

/* ---- llr-tap-target : WCAG 2.5.8 minimum 44px touch target ----
   Kit button padding is overridden by Elementor's .elementor-size-* classes,
   so the floor is enforced here instead of in N widgets. */
.elementor-button,
.elementor-button-link,
.elementor-field-type-submit .elementor-button{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

/* ---- llr-wordmark : brand name in the DISPLAY face ----
   Hello Elementor renders .site-title in the body font (Open Sans). Every heading
   on this site is Outfit; the brand name should not be the exception. */
.site-header .site-title,
.site-header .site-title a{
  font-family:'Outfit', sans-serif;
  font-weight:700;
  letter-spacing:-0.5px;
}

/* === LLR SITE CHROME — header + footer =====================================
   Lives in Elementor > Site Settings > Custom CSS so the owner can edit it.
   The header logo is set in Appearance > Customize > Site Identity.
   ========================================================================= */

/* ---------- header ---------- */
.site-header.dynamic-header{
  position:sticky; top:0; z-index:200;
  background:rgba(244,243,237,.9);
  -webkit-backdrop-filter:saturate(150%) blur(12px);
          backdrop-filter:saturate(150%) blur(12px);
  border-bottom:1px solid rgba(16,0,32,.09);
}
.admin-bar .site-header.dynamic-header{ top:32px; }
.site-header .header-inner{
  max-width:1560px; margin:0 auto;
  padding:12px clamp(20px,4vw,48px);
  display:flex; align-items:center; justify-content:space-between; gap:28px;
}
.site-header .site-logo img.custom-logo{
  width:300px; max-width:100%; height:auto; display:block;
}

/* nav */
.site-header .site-navigation ul.menu{
  display:flex; align-items:center; gap:2px; list-style:none; margin:0; padding:0;
}
.site-header .site-navigation ul.menu > li > a{
  display:inline-flex; align-items:center; min-height:44px;
  padding:10px 15px; border-radius:999px;
  font-family:'Outfit',system-ui,sans-serif; font-weight:600; font-size:16px;
  color:#100020; text-decoration:none; white-space:nowrap;
  transition:background-color .18s ease,color .18s ease;
}
.site-header .site-navigation ul.menu > li > a:hover{
  background:rgba(237,69,118,.16); color:#8F2642;
}
.site-header .site-navigation ul.menu > li.current-menu-item > a{ color:#B03050; }
/* last item reads as the action */
.site-header .site-navigation ul.menu > li:last-child > a{
  background:#B03050; color:#fff; padding:10px 24px; margin-left:10px;
}
.site-header .site-navigation ul.menu > li:last-child > a:hover{
  background:#8F2642; color:#fff;
}

/* mobile toggle + dropdown */
.site-header .site-navigation-toggle{
  width:44px; height:44px; display:flex; align-items:center; justify-content:center;
  background:transparent; border:0; border-radius:12px; color:#100020; cursor:pointer;
}
.site-header .site-navigation-toggle:hover{ background:rgba(16,0,32,.06); }
.site-header .site-navigation-dropdown{
  background:#F4F3ED; border-top:1px solid rgba(16,0,32,.09);
  box-shadow:0 18px 40px rgba(16,0,32,.12);
}
.site-header .site-navigation-dropdown ul.menu > li > a{
  display:flex; align-items:center; min-height:56px;
  padding:0 clamp(20px,5vw,32px);
  font-family:'Outfit',system-ui,sans-serif; font-weight:600; font-size:19px;
  color:#100020; text-decoration:none;
  border-bottom:1px solid rgba(16,0,32,.07);
}
.site-header .site-navigation-dropdown ul.menu > li > a:hover,
.site-header .site-navigation-dropdown ul.menu > li.current-menu-item > a{
  background:rgba(237,69,118,.12); color:#8F2642;
}

/* ---------- footer ---------- */
.site-footer.dynamic-footer{
  background:#100020; color:rgba(255,255,255,.86);
  padding:clamp(48px,6vw,84px) clamp(20px,4vw,48px) clamp(30px,3.4vw,48px);
}
.site-footer .footer-inner{
  max-width:1560px; margin:0 auto;
  display:flex; flex-direction:column; align-items:center; text-align:center; gap:22px;
}
.site-footer .site-branding{ display:flex; flex-direction:column; align-items:center; }
.site-footer .site-branding::before{
  content:""; display:block; width:66px; height:66px; margin:0 auto 16px;
  background:url('https://lovinglightregeneration.com/wp-content/uploads/2026/08/llr-mark-512-300x300.png') center/contain no-repeat;
}
.site-footer .site-title a{
  font-family:'Outfit',system-ui,sans-serif; font-weight:700;
  font-size:clamp(24px,2.4vw,32px); letter-spacing:-.02em;
  color:#fff; text-decoration:none;
}
.site-footer .site-title a:hover{ color:#3FDFCF; }
.site-footer .site-description{
  font-family:'Open Sans',system-ui,sans-serif; font-weight:600; font-size:11.5px;
  letter-spacing:.235em; text-transform:uppercase; color:#3FDFCF;
  margin:10px 0 0;
}
.site-footer .site-navigation ul.menu{
  display:flex; flex-wrap:wrap; justify-content:center; gap:4px;
  list-style:none; margin:0; padding:0;
}
.site-footer .site-navigation ul.menu > li > a{
  display:inline-flex; align-items:center; min-height:44px; padding:8px 16px;
  border-radius:999px;
  font-family:'Outfit',system-ui,sans-serif; font-weight:600; font-size:16px;
  color:rgba(255,255,255,.86); text-decoration:none;
  transition:background-color .18s ease,color .18s ease;
}
.site-footer .site-navigation ul.menu > li > a:hover{
  background:rgba(255,255,255,.10); color:#3FDFCF;
}
/* Hello ships `.site-footer .footer-inner .copyright{display:flex;justify-content:flex-end}`
   at (0,3,0) — it pushes the <p> to the right and text-align cannot reach it.
   Match that specificity rather than fight it with !important. */
.site-footer .footer-inner .copyright{
  display:block;
  border-top:1px solid rgba(255,255,255,.14);
  padding-top:22px; width:100%; max-width:none;
}
.site-footer .footer-inner .copyright p{
  /* something upstream caps this paragraph at ~502px, which stops it centring */
  margin:0 auto; max-width:none; text-align:center;
  font-size:13.5px; line-height:1.7; color:rgba(255,255,255,.6);
}
.site-footer .copyright .nb{ white-space:nowrap; }

@media (max-width:1024px){
  .site-header .site-logo img.custom-logo{ width:250px; }
}
@media (max-width:767px){
  .site-header .header-inner{ padding:8px 20px; }
  .site-header .site-logo img.custom-logo{ width:196px; }
}

/* === LLR blog archive : managed by llr-kit-archive-css.php === */
/* Hello Elementor renders /blog/ and single posts from its own templates, so
   these are styled here rather than in a page HTML widget. Scoped to the blog
   body classes so nothing leaks into the seven built pages. */
body.blog, body.single-post, body.archive{
  --llr-ink:#100020; --llr-plum:#412D68; --llr-action:#B03050; --llr-aqua:#3FDFCF;
  --llr-shell:#F4F3ED; --llr-sand:#E6C694;
  background:var(--llr-shell);
}
body.blog .site-main, body.single-post .site-main, body.archive .site-main{
  max-width:1180px; margin-inline:auto; padding:clamp(48px,6vw,96px) clamp(20px,4vw,48px);
}
body.blog .page-header, body.archive .page-header{ margin-bottom:clamp(28px,3.4vw,52px); }
body.blog .page-header .entry-title, body.archive .page-header .entry-title{
  font-family:'Outfit',system-ui,sans-serif; font-weight:800;
  font-size:clamp(38px,6vw,84px); line-height:1.02; letter-spacing:-.03em;
  color:var(--llr-ink); text-wrap:balance;
}
/* post cards */
body.blog article.post, body.archive article.post{
  background:#fff; border-radius:24px 28px 20px 26px; padding:clamp(26px,3vw,44px);
  margin-bottom:clamp(18px,2.2vw,30px); border:1px solid rgba(16,0,32,.08);
}
body.blog article.post:nth-of-type(3n+2), body.archive article.post:nth-of-type(3n+2){
  background:var(--llr-sand); border-color:transparent; border-radius:28px 20px 26px 24px;
}
body.blog article.post .entry-title, body.archive article.post .entry-title{
  font-family:'Outfit',system-ui,sans-serif; font-weight:700;
  font-size:clamp(24px,2.6vw,40px); line-height:1.1; letter-spacing:-.022em; margin:0 0 .3em;
}
body.blog article.post .entry-title a, body.archive article.post .entry-title a{
  color:var(--llr-ink); text-decoration:none;
}
body.blog article.post .entry-title a:hover, body.archive article.post .entry-title a:hover{ color:var(--llr-action); }
body.blog .entry-meta, body.archive .entry-meta, body.single-post .entry-meta{
  font-family:'Outfit',system-ui,sans-serif; font-size:13px; letter-spacing:.13em;
  text-transform:uppercase; color:rgba(16,0,32,.55); margin-bottom:1em;
}
body.blog .entry-excerpt, body.archive .entry-excerpt{ font-size:17.5px; line-height:1.6; max-width:66ch; }
/* single post */
body.single-post .entry-title{
  font-family:'Outfit',system-ui,sans-serif; font-weight:800;
  font-size:clamp(34px,5vw,72px); line-height:1.04; letter-spacing:-.028em;
  color:var(--llr-ink); text-wrap:balance; margin-bottom:.3em;
}
body.single-post .entry-content{ max-width:70ch; font-size:18px; line-height:1.7; }
body.single-post .entry-content h2{
  font-family:'Outfit',system-ui,sans-serif; font-weight:700;
  font-size:clamp(24px,2.4vw,34px); letter-spacing:-.02em; line-height:1.15;
  margin:1.9em 0 .5em; color:var(--llr-ink);
}
body.single-post .entry-content ul{ padding-left:1.15em; }
body.single-post .entry-content li{ margin:.5em 0; }
body.single-post .entry-content li::marker{ color:var(--llr-action); }
body.single-post .entry-content a{ color:var(--llr-action); text-underline-offset:3px; }
body.single-post .llr-cta{
  background:var(--llr-plum); color:#fff; border-radius:20px;
  padding:clamp(20px,2.2vw,30px); margin:2em 0 1.2em; font-size:17px;
}
body.single-post .llr-cta a{ color:var(--llr-aqua); font-weight:700; }
body.single-post .llr-disc{
  font-size:14.5px; line-height:1.6; color:rgba(16,0,32,.62);
  border-top:1px solid rgba(16,0,32,.15); padding-top:1.1em; margin-top:1.4em;
}
/* === end LLR blog archive === *//* End custom CSS */