/* LymeCoaches Core
   Palette and type match the Elementor landing page so the directory,
   application and community pages read as one site. */

/* Design tokens live on the scope wrapper, which the plugin puts around every
   piece of shortcode output. Same palette and type as the landing page. */
.lc-scope, .lc-scope *, .lc-scope *::before, .lc-scope *::after { box-sizing: border-box; }

.lc-scope {
  --lc-cream: #F4F0E6;
  --lc-cream-2: #EBE6D9;
  --lc-sage: #E2E5D0;
  --lc-sage-line: #C9CFB2;
  --lc-card: #FBF8F1;
  --lc-olive: #56603F;
  --lc-olive-dark: #454E32;
  --lc-olive-deep: #3D4632;
  --lc-olive-tint: #E4E4D2;
  --lc-gold: #8F6F2B;
  --lc-ink: #6E6656;
  --lc-ink-strong: #4A4436;
  --lc-line: #DCD5C3;
  font-family: Lora, Georgia, "Times New Roman", serif;
  font-size: 17px;
  line-height: 1.7;
  color: var(--lc-ink);
}

/* Typography hardening. Themes commonly set fonts and heading colours on
   element selectors, which would otherwise win over the classes below. */
.lc-scope, .lc-scope p, .lc-scope li, .lc-scope label, .lc-scope input,
.lc-scope select, .lc-scope textarea, .lc-scope button, .lc-scope a {
  font-family: Lora, Georgia, "Times New Roman", serif !important;
}
.lc-scope h1, .lc-scope h2, .lc-scope h3, .lc-scope h4,
.lc-scope .lc-price, .lc-scope .lc-card-initials {
  font-family: "Playfair Display", Georgia, serif !important;
  font-weight: 400;
}
.lc-scope h1, .lc-scope h2, .lc-scope h3, .lc-scope h4 {
  color: var(--lc-olive-deep) !important;
  margin-top: 0;
}
.lc-scope p, .lc-scope li { color: inherit; }
.lc-scope a { color: var(--lc-olive-deep); }
.lc-scope ul { list-style: none; }

/* Page background, so a directory or application page reads as the same site
   as the landing page rather than a plain white theme page. Remove this rule
   if the theme background should win. */
body.lc-page { background-color: #F4F0E6 !important; }

/* The page title comes from the theme, outside the scope wrapper, so it is
   matched here by the class names themes and Elementor commonly use. */
body.lc-page h1.entry-title,
body.lc-page h1.page-title,
body.lc-page .page-header h1,
body.lc-page .elementor-heading-title,
body.lc-page .entry-header h1 {
  font-family: "Playfair Display", Georgia, serif !important;
  font-weight: 400;
  color: #3D4632 !important;
}

/* Anything sitting on the olive plan header needs light type, which the
   heading colour rule above would otherwise override. */
.lc-scope .lc-plan-featured .lc-plan-head h3 { color: #F6F4EA !important; }
.lc-scope .lc-plan-featured .lc-plan-head .lc-price { color: #F6F4EA !important; }
.lc-scope .lc-plan-featured .lc-plan-head .lc-price span,
.lc-scope .lc-plan-featured .lc-plan-head .lc-plan-note { color: rgba(246,244,234,.86); }

/* Buttons ---------------------------------------------------------- */
.lc-btn {
  display: inline-block;
  text-decoration: none !important;
  font-family: Lora, Georgia, serif;
  font-size: .95rem;
  padding: 12px 24px;
  border-radius: 4px;
  border: 1px solid transparent;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.lc-btn-solid { background: var(--lc-olive, #56603F) !important; color: #F7F5ED !important; border-color: var(--lc-olive, #56603F); }
.lc-btn-solid:hover { background: var(--lc-olive-dark, #454E32) !important; color: #fff !important; }
.lc-btn-ghost { background: transparent; color: var(--lc-ink-strong, #4A4436); border-color: #C9C2AE; }
.lc-btn-ghost:hover { background: rgba(86, 96, 63, .08); border-color: var(--lc-olive, #56603F); }
.lc-btn-light { background: #F5F2E8 !important; color: var(--lc-olive-deep, #3D4632) !important; border-color: #F5F2E8; }
.lc-btn-block { width: 100%; text-align: center; }
.lc-btn:focus-visible,
.lc-form input:focus-visible,
.lc-form select:focus-visible,
.lc-form textarea:focus-visible { outline: 2px solid var(--lc-olive, #56603F); outline-offset: 2px; }

/* Notices ---------------------------------------------------------- */
.lc-notice {
  border: 1px solid var(--lc-line, #DCD5C3);
  border-left-width: 4px;
  background: #FBF8F1;
  padding: 16px 20px;
  border-radius: 4px;
  margin: 0 0 24px;
}
.lc-notice-success { border-left-color: #56603F; }
.lc-notice-error { border-left-color: #9C4A3C; }
.lc-notice-locked { border-left-color: #B08A46; }
.lc-notice-info { border-left-color: #7C8B6A; }

/* Filters ---------------------------------------------------------- */
.lc-filters {
  background: var(--lc-cream-2, #EBE6D9);
  border: 1px solid var(--lc-line, #DCD5C3);
  border-radius: 6px;
  padding: 22px 24px;
  margin-bottom: 26px;
}
.lc-filters-row {
  display: grid;
  grid-template-columns: 1.6fr repeat(4, 1fr);
  gap: 16px;
}
.lc-filters-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: 18px;
}
.lc-field { display: block; }
.lc-field-wide { display: block; margin: 18px 0; }
.lc-field-label { display: block; font-size: .86rem; margin-bottom: 6px; color: var(--lc-ink-strong, #4A4436); }
.lc-field input,
.lc-field select,
.lc-field textarea,
.lc-form input,
.lc-form select,
.lc-form textarea {
  width: 100%;
  padding: 11px 12px;
  border: 1px solid var(--lc-line, #DCD5C3);
  border-radius: 4px;
  background: #fff;
  font-family: inherit;
  font-size: .95rem;
  color: var(--lc-ink-strong, #4A4436);
}
.lc-hint { display: block; font-size: .82rem; margin-top: 6px; opacity: .8; }
.lc-req { color: #9C4A3C; }
.lc-check { display: flex; align-items: flex-start; gap: 9px; font-size: .92rem; }
.lc-check input { width: auto; margin-top: 4px; }
.lc-hp { position: absolute; left: -9999px; }

.lc-directory-count { font-size: .9rem; margin: 0 0 18px; }

/* Cards ------------------------------------------------------------ */
.lc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 24px;
}
.lc-card {
  background: var(--lc-card, #FBF8F1);
  border: 1px solid var(--lc-line, #DCD5C3);
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.lc-card-featured { background: #fff; box-shadow: 0 10px 26px rgba(74, 68, 54, .09); }
.lc-card-media { display: block; aspect-ratio: 4 / 3; background: var(--lc-olive-tint, #E4E4D2); overflow: hidden; }
.lc-card-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lc-card-initials {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
  font-family: "Playfair Display", Georgia, serif;
  font-size: 2.6rem; color: var(--lc-olive, #56603F);
}
.lc-card-body { padding: 20px 20px 22px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.lc-badge {
  align-self: flex-start;
  font-size: .72rem;
  letter-spacing: .04em;
  background: var(--lc-olive, #56603F);
  color: #F7F5ED;
  padding: 3px 9px;
  border-radius: 3px;
}
.lc-card-title { margin: 0; font-size: 1.25rem; }
.lc-card-title a { text-decoration: none; color: inherit; }
.lc-card-creds { margin: 0; font-size: .84rem; opacity: .85; }
.lc-card-tagline { margin: 0; font-size: .93rem; line-height: 1.55; }
.lc-tags { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 0; padding: 0; }
.lc-tags li {
  font-size: .78rem;
  background: var(--lc-cream-2, #EBE6D9);
  border-radius: 3px;
  padding: 3px 8px;
}
.lc-card-meta { margin: 4px 0 0; font-size: .84rem; display: flex; flex-wrap: wrap; gap: 10px; }
.lc-open { color: var(--lc-olive, #56603F); }
.lc-card-link { margin-top: auto; text-decoration: none; color: var(--lc-olive-deep, #3D4632); border-bottom: 1px solid var(--lc-olive, #56603F); align-self: flex-start; padding-bottom: 2px; }
.lc-locked { font-size: .86rem; margin: 0; opacity: .85; }

.lc-empty { text-align: center; padding: 40px 20px; background: var(--lc-cream-2, #EBE6D9); border-radius: 6px; }

.lc-pagination { display: flex; gap: 8px; justify-content: center; margin-top: 32px; flex-wrap: wrap; }
.lc-pagination .page-numbers {
  padding: 8px 14px;
  border: 1px solid var(--lc-line, #DCD5C3);
  border-radius: 4px;
  text-decoration: none;
  color: var(--lc-ink-strong, #4A4436);
}
.lc-pagination .current { background: var(--lc-olive, #56603F); color: #F7F5ED; border-color: var(--lc-olive, #56603F); }

/* Forms ------------------------------------------------------------ */
.lc-form { max-width: 780px; }
.lc-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.lc-fieldset { border: 1px solid var(--lc-line, #DCD5C3); border-radius: 6px; padding: 16px 18px; margin: 18px 0; }
.lc-fieldset legend { font-size: .86rem; padding: 0 6px; color: var(--lc-ink-strong, #4A4436); }
.lc-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }

/* Plans ------------------------------------------------------------ */
.lc-plans { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; align-items: stretch; }
.lc-plan {
  background: var(--lc-card, #FBF8F1);
  border: 1px solid var(--lc-line, #DCD5C3);
  border-radius: 6px;
  box-shadow: 0 10px 30px rgba(74, 68, 54, .08);
  display: flex; flex-direction: column; overflow: hidden;
}
.lc-plan-head { padding: 32px 28px 24px; text-align: center; border-bottom: 1px solid var(--lc-line, #DCD5C3); }
.lc-plan-head h3 { margin: 0 0 10px; font-size: 1.5rem; }
.lc-price { font-family: "Playfair Display", Georgia, serif; font-size: 2.1rem; color: var(--lc-olive-deep, #3D4632); margin: 0; line-height: 1; }
.lc-price span { font-family: Lora, serif; font-size: .92rem; color: var(--lc-ink, #6E6656); }
.lc-plan-note { margin: 12px 0 0; font-size: .86rem; }
.lc-plan-body { padding: 26px 28px 30px; display: flex; flex-direction: column; gap: 22px; flex: 1; }
.lc-features { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.lc-features li { position: relative; padding-left: 26px; font-size: .94rem; }
.lc-features li::before {
  content: ""; position: absolute; left: 2px; top: .5em;
  width: 10px; height: 6px;
  border-left: 1.5px solid var(--lc-olive, #56603F);
  border-bottom: 1.5px solid var(--lc-olive, #56603F);
  transform: rotate(-45deg);
}
.lc-plan .lc-btn { margin-top: auto; width: 100%; text-align: center; }
.lc-plan-featured { background: var(--lc-olive-tint, #E4E4D2); }
.lc-plan-featured .lc-plan-head { background: var(--lc-olive, #56603F); border-bottom-color: var(--lc-olive, #56603F); }
.lc-plan-featured .lc-plan-head h3,
.lc-plan-featured .lc-price { color: #F6F4EA; }
.lc-plan-featured .lc-price span,
.lc-plan-featured .lc-plan-note { color: rgba(246, 244, 234, .86); }

/* Profile ---------------------------------------------------------- */
.lc-profile { margin-top: 32px; }
.lc-profile-tagline { font-size: 1.15rem; color: var(--lc-olive-deep, #3D4632); }
.lc-profile-grid { border-top: 1px solid var(--lc-line, #DCD5C3); margin: 22px 0; }
.lc-profile-row { display: grid; grid-template-columns: 200px 1fr; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--lc-line, #DCD5C3); }
.lc-profile-label { color: var(--lc-ink-strong, #4A4436); font-size: .88rem; }
.lc-profile-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 24px 0; }
.lc-profile-disclaimer { font-size: .82rem; opacity: .8; }

/* Dashboard and hub ------------------------------------------------ */
.lc-dash-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; align-items: center; border-bottom: 1px solid var(--lc-line, #DCD5C3); padding-bottom: 18px; margin-bottom: 24px; }
.lc-dash-head h3 { margin: 0 0 6px; }
.lc-dash-meta { margin: 0; font-size: .9rem; }
.lc-pill { display: inline-block; font-size: .76rem; padding: 3px 10px; border-radius: 12px; }
.lc-pill-live { background: var(--lc-olive, #56603F); color: #F7F5ED; }
.lc-pill-pending { background: #E7DFC8; color: #6B5A2E; }
.lc-dash-tier { margin: 0; font-size: .9rem; }
.lc-current-photo img { border-radius: 4px; margin-bottom: 18px; }

.lc-hub { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 20px; }
.lc-hub-card {
  display: block;
  background: var(--lc-card, #FBF8F1);
  border: 1px solid var(--lc-line, #DCD5C3);
  border-radius: 6px;
  padding: 22px 22px 24px;
  text-decoration: none;
  transition: border-color .2s ease, transform .2s ease;
}
.lc-hub-card:hover { border-color: var(--lc-olive, #56603F); }
.lc-hub-title { display: block; font-size: 1.2rem; margin-bottom: 8px; }
.lc-hub-text { display: block; font-size: .9rem; color: var(--lc-ink, #6E6656); }
.lc-hub-greeting { font-size: 1.05rem; margin-bottom: 20px; }
.lc-join-intro { max-width: 62ch; }
.lc-join-alt {
  max-width: 62ch;
  background: var(--lc-cream-2);
  border-left: 3px solid var(--lc-olive);
  border-radius: 0 4px 4px 0;
  padding: 14px 18px;
  margin: 0 0 26px;
  font-size: .95rem;
}
.lc-login { max-width: 420px; }

@media (max-width: 900px) {
  .lc-filters-row { grid-template-columns: 1fr 1fr; }
  .lc-plans { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .lc-filters-row,
  .lc-form-grid { grid-template-columns: 1fr; }
  .lc-profile-row { grid-template-columns: 1fr; gap: 2px; }
}
@media (prefers-reduced-motion: reduce) {
  .lc-btn, .lc-hub-card { transition: none; }
}

/* Audience labels, matching the landing page zones ------------------ */
.lc-audience-tag { display: flex; align-items: center; gap: 14px; margin: 0 0 22px; font-size: .95rem; color: var(--lc-olive); }
.lc-audience-tag::after { content: ""; flex: 1; height: 1px; background: currentColor; opacity: .35; }
.lc-scope .lc-plans { --lc-zone: var(--lc-sage); }
.lc-donate-wrap { margin-bottom: 28px; }
.lc-btn-gold { background: #D9B15E !important; color: #33301F !important; border-color: #D9B15E; }
.lc-btn-gold:hover { background: #E5C177 !important; }


/* =====================================================================
   Site chrome: header, footer and page shell.
   These sit outside .lc-scope, so they carry their own tokens.
   ===================================================================== */
.lc-site-header, .lc-site-footer, .lc-main {
  --lc-cream: #F4F0E6;
  --lc-cream-2: #EBE6D9;
  --lc-card: #FBF8F1;
  --lc-olive: #56603F;
  --lc-olive-dark: #454E32;
  --lc-olive-deep: #3D4632;
  --lc-ink: #6E6656;
  --lc-ink-strong: #4A4436;
  --lc-line: #DCD5C3;
  box-sizing: border-box;
}
.lc-site-header *, .lc-site-footer *, .lc-main * { box-sizing: border-box; }

/* Page background.
   :has means this applies to any page where the LymeCoaches header is present,
   including pages rendered by the theme's own header.php, not just pages built
   from the plugin template. The class selectors after it are the fallback for
   older browsers. */
html:has(.lc-site-header),
body:has(.lc-site-header),
body.lc-chrome,
body.lc-page {
  margin: 0;
  background-color: #F4F0E6;
}

/* Astra and several other themes paint their own background on the page and
   content wrappers, which would otherwise show as a white band above the
   footer. */
body:has(.lc-site-header) #page,
body:has(.lc-site-header) #content,
body:has(.lc-site-header) .site-content,
body.lc-page #page,
body.lc-page #content,
body.lc-page .site-content {
  background-color: transparent;
}
.lc-shell { width: 100%; max-width: 1180px; margin: 0 auto; padding: 0 28px; }
.lc-main { min-height: 40vh; font-family: Lora, Georgia, serif; color: var(--lc-ink); }
.lc-page-head { padding: 54px 28px 8px; }
.lc-page-title {
  font-family: "Playfair Display", Georgia, serif !important;
  font-weight: 400;
  font-size: clamp(2rem, 3.4vw, 2.7rem);
  color: var(--lc-olive-deep) !important;
  margin: 0;
}
.lc-page-body { padding: 26px 28px 80px; }
.lc-page-body-wide { padding: 0; max-width: none; }

/* Header ------------------------------------------------------------ */
.lc-site-header {
  position: sticky; top: 0; z-index: 40;
  background: rgba(244, 240, 230, .95);
  backdrop-filter: saturate(140%) blur(6px);
  border-bottom: 1px solid var(--lc-line);
}
.lc-header-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 74px; }
.lc-wordmark {
  font-family: "Playfair Display", Georgia, serif !important;
  font-size: 1.5rem; text-decoration: none; color: var(--lc-olive-deep);
}
.lc-mark-b { color: var(--lc-olive); }
.lc-logo img { max-height: 46px; width: auto; }
.lc-nav { display: flex; align-items: center; gap: 30px; }
.lc-site-header ul { list-style: none; margin: 0; padding: 0; }
.lc-menu { display: flex; align-items: center; gap: 30px; }
.lc-menu > li { position: relative; }

/* Submenus. A menu item with children opens on hover, and on keyboard focus
   so it is reachable without a mouse. */
.lc-menu .sub-menu {
  position: absolute;
  top: 100%;
  left: -14px;
  min-width: 230px;
  background: #F4F0E6;
  border: 1px solid var(--lc-line);
  border-radius: 4px;
  padding: 8px 0;
  box-shadow: 0 14px 30px rgba(74, 68, 54, .14);
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
  transition: opacity .16s ease, transform .16s ease, visibility .16s;
  z-index: 60;
}
.lc-menu > li:hover > .sub-menu,
.lc-menu > li:focus-within > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.lc-menu .sub-menu li { display: block; }
.lc-menu .sub-menu a {
  display: block;
  padding: 9px 18px;
  border-bottom: 0;
  white-space: nowrap;
}
.lc-menu .sub-menu a:hover { background: rgba(86, 96, 63, .09); color: var(--lc-olive-deep); border-bottom: 0; }

/* Small caret on parent items. */
.lc-menu .menu-item-has-children > a { position: relative; padding-right: 15px; }
.lc-menu .menu-item-has-children > a::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  width: 6px;
  height: 6px;
  margin-top: -4px;
  border-right: 1.4px solid currentColor;
  border-bottom: 1.4px solid currentColor;
  transform: rotate(45deg);
  opacity: .7;
}
.lc-menu a {
  font-family: Lora, Georgia, serif !important;
  text-decoration: none; font-size: .95rem; color: var(--lc-ink);
  padding-bottom: 2px; border-bottom: 1px solid transparent;
}
.lc-menu a:hover, .lc-menu .current-menu-item > a { color: var(--lc-olive-deep); border-color: var(--lc-olive); }
.lc-header-cta { padding: 10px 20px !important; }

/* Give any menu item the CSS class lc-cta, under Appearance, Menus, and it
   renders as the solid button. */
.lc-menu li.lc-cta > a {
  background: var(--lc-olive);
  color: #F7F5ED !important;
  border-radius: 4px;
  padding: 10px 20px;
  border-bottom: 0;
}
.lc-menu li.lc-cta > a:hover { background: var(--lc-olive-dark); border-bottom: 0; }
.lc-nav-toggle {
  display: none; background: none; border: 1px solid var(--lc-line);
  border-radius: 4px; padding: 8px 12px; color: var(--lc-ink-strong);
  font-family: Lora, Georgia, serif; cursor: pointer;
}

/* Footer ------------------------------------------------------------ */
.lc-site-footer {
  background: var(--lc-olive-deep);
  color: rgba(244, 240, 230, .82);
  font-family: Lora, Georgia, serif;
  font-size: .95rem;
  padding: 78px 0 30px;
  margin-top: 0;
  width: 100%;
}
.lc-footer-grid { display: grid; grid-template-columns: 1.6fr repeat(4, 1fr); gap: 34px; }
.lc-site-footer .lc-wordmark { color: #F4F0E6; }
.lc-site-footer .lc-mark-b { color: #C7CBAE; }
.lc-footer-brand p { max-width: 34ch; margin-top: 14px; }
.lc-site-footer h4 {
  font-family: "Playfair Display", Georgia, serif !important;
  font-weight: 400; font-size: 1.05rem; color: #F4F0E6 !important; margin: 0 0 14px;
}
.lc-footer-menu { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.lc-site-footer a { color: inherit; text-decoration: none; }
.lc-site-footer a:hover { color: #fff; }
.lc-footer-base {
  margin-top: 48px; padding-top: 22px;
  border-top: 1px solid rgba(244, 240, 230, .18);
  display: flex; flex-wrap: wrap; gap: 14px; justify-content: space-between;
  font-size: .86rem;
}

@media (max-width: 1024px) {
  .lc-footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) {
  .lc-site-header { position: relative; }
  .lc-nav { display: none; }
  .lc-nav-toggle { display: inline-block; }
  .lc-nav.lc-open {
    display: flex; flex-direction: column; align-items: flex-start; gap: 18px;
    position: absolute; left: 0; right: 0; top: 100%;
    background: var(--lc-cream); border-bottom: 1px solid var(--lc-line);
    padding: 22px 28px 26px;
  }
  .lc-nav.lc-open .lc-menu { flex-direction: column; align-items: flex-start; gap: 16px; width: 100%; }
  .lc-nav.lc-open .lc-menu > li { width: 100%; }
  .lc-nav.lc-open .lc-menu .sub-menu {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: none;
    border: 0;
    background: transparent;
    min-width: 0;
    padding: 8px 0 0 14px;
    border-left: 1px solid var(--lc-line);
    margin-top: 10px;
  }
  .lc-nav.lc-open .lc-menu .sub-menu a { padding: 7px 0; }
  .lc-menu .menu-item-has-children > a::after { display: none; }
  .lc-footer-grid { grid-template-columns: 1fr; }
  .lc-page-head { padding-top: 38px; }
}
