/*
Lavender Divi Modern Safe Skin
Version 1.1.0

Purpose:
- Modernise the existing Divi site without breaking the layout.
- No absolute positioning.
- No forced CSS Grid on existing Divi rows.
- No forced Flexbox on existing Divi columns.
- No rearranging images, text, modules or sections.
*/

:root {
  --lav-cream: #fffdf8;
  --lav-white: #ffffff;
  --lav-pale: #f7f1fb;
  --lav-pale-2: #efe5fa;
  --lav-soft: #d7c2ef;
  --lav-main: #af8ed3;
  --lav-deep: #67437f;
  --lav-ink: #30213d;
  --lav-charcoal: #29272f;
  --lav-muted: #665d70;
  --lav-border: rgba(103, 67, 127, 0.14);
  --lav-border-strong: rgba(103, 67, 127, 0.28);
  --lav-shadow: 0 16px 42px rgba(61, 38, 82, 0.12);
  --lav-shadow-hover: 0 22px 58px rgba(61, 38, 82, 0.18);
  --lav-radius-sm: 14px;
  --lav-radius-md: 24px;
  --lav-radius-lg: 34px;
  --lav-section-pad: clamp(54px, 7vw, 104px);
  --lav-row-width: min(92%, 1180px);
}

html {
  scroll-behavior: smooth;
}

body {
  background: var(--lav-cream) !important;
  color: var(--lav-charcoal) !important;
  font-family: Lato, "Open Sans", Arial, sans-serif !important;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body,
.et_pb_text,
.et_pb_blurb_description,
.et_pb_module p,
.et_pb_contact_field,
.et_pb_contact_field input,
.et_pb_contact_field textarea,
.et_pb_contact_field select,
.et_pb_button {
  font-family: Lato, "Open Sans", Arial, sans-serif !important;
  color: var(--lav-charcoal);
  line-height: 1.72;
}

h1, h2, h3, h4, h5, h6,
.et_pb_module_header,
.et_pb_text h1,
.et_pb_text h2,
.et_pb_text h3,
.et_pb_text h4,
.et_pb_fullwidth_header .header-content h1,
.et_pb_slide_description h2,
.et_pb_promo_description h2 {
  font-family: Garamond, "Cormorant Garamond", "EB Garamond", Georgia, serif !important;
  color: var(--lav-ink) !important;
  letter-spacing: -0.02em;
  line-height: 1.08;
  font-weight: 600;
}

h1,
.et_pb_fullwidth_header .header-content h1,
.et_pb_slide_description h2 {
  font-size: clamp(2.6rem, 5.6vw, 5.6rem) !important;
  margin-bottom: 0.35em;
}

h2,
.et_pb_text h2,
.et_pb_promo_description h2 {
  font-size: clamp(2rem, 3.9vw, 3.8rem) !important;
  margin-bottom: 0.45em;
}

h3,
.et_pb_text h3,
.et_pb_module_header {
  font-size: clamp(1.32rem, 2.15vw, 2.05rem) !important;
}

p {
  font-size: clamp(1rem, 1vw, 1.08rem);
}

/* Keep Divi's layout, but give the whole site cleaner rhythm. */
.et_pb_section {
  background-color: var(--lav-cream) !important;
}

.et_pb_section:nth-of-type(even):not(.et_pb_fullwidth_section) {
  background: linear-gradient(180deg, var(--lav-white) 0%, var(--lav-pale) 100%) !important;
}

.et_pb_section:not(.et_pb_fullwidth_section) {
  padding-top: var(--lav-section-pad) !important;
  padding-bottom: var(--lav-section-pad) !important;
}

.et_pb_row {
  width: var(--lav-row-width) !important;
  max-width: 1180px !important;
}

.et_pb_text_inner > *:last-child,
.et_pb_blurb_description > *:last-child,
.et_pb_promo_description > *:last-child {
  margin-bottom: 0 !important;
}

/* Header and menu polish. */
#main-header,
.et-l--header,
.et_pb_menu,
.et_pb_menu_inner_container {
  background: rgba(255, 253, 248, 0.92) !important;
  backdrop-filter: blur(12px);
  box-shadow: 0 8px 28px rgba(48, 33, 61, 0.07) !important;
}

#top-menu li a,
.et_pb_menu__menu nav ul li a,
.et_mobile_menu li a {
  color: var(--lav-ink) !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em;
}

#top-menu li a:hover,
.et_pb_menu__menu nav ul li a:hover,
.et_mobile_menu li a:hover {
  color: var(--lav-deep) !important;
  opacity: 1 !important;
}

/* Hero / fullwidth areas: modern but safe. */
.et_pb_fullwidth_header,
.et_pb_fullwidth_header_container,
.et_pb_slider,
.et_pb_slide {
  background: radial-gradient(circle at top left, rgba(215, 194, 239, 0.55), transparent 34%), linear-gradient(135deg, var(--lav-cream), var(--lav-pale)) !important;
}

.et_pb_fullwidth_header,
.et_pb_slide {
  padding-top: clamp(70px, 9vw, 136px) !important;
  padding-bottom: clamp(70px, 9vw, 136px) !important;
}

.et_pb_fullwidth_header .header-content,
.et_pb_slide_description {
  max-width: 820px !important;
}

.et_pb_fullwidth_header .et_pb_fullwidth_header_subhead,
.et_pb_fullwidth_header p,
.et_pb_slide_description p {
  font-size: clamp(1.06rem, 1.6vw, 1.36rem) !important;
  line-height: 1.68 !important;
  color: var(--lav-muted) !important;
}

/* Images: softer, more premium, without moving them. */
.et_pb_image img,
.et_pb_gallery_image img,
.et_pb_slider .et_pb_slide_image img,
.et_pb_fullwidth_image img,
.et_pb_post img,
.wp-post-image {
  border-radius: var(--lav-radius-lg) !important;
  box-shadow: var(--lav-shadow);
}

.et_pb_image,
.et_pb_gallery_item,
.et_pb_module img {
  transition: transform 260ms ease, filter 260ms ease, box-shadow 260ms ease;
}

.et_pb_image:hover img,
.et_pb_gallery_item:hover img {
  transform: translateY(-3px);
  box-shadow: var(--lav-shadow-hover);
}

/* Cards: applies to modules commonly used as content blocks, but keeps their original positions. */
.et_pb_blurb,
.et_pb_testimonial,
.et_pb_pricing_table,
.et_pb_contact_form_container,
.et_pb_toggle,
.et_pb_accordion_item {
  background: rgba(255, 255, 255, 0.94) !important;
  border-radius: var(--lav-radius-md) !important;
  box-shadow: var(--lav-shadow) !important;
  border: 1px solid var(--lav-border) !important;
  padding: clamp(20px, 2.4vw, 34px) !important;
  transition: transform 220ms ease, box-shadow 220ms ease, border-color 220ms ease, background-color 220ms ease;
}

.et_pb_blurb:hover,
.et_pb_testimonial:hover,
.et_pb_pricing_table:hover,
.et_pb_toggle:hover,
.et_pb_accordion_item:hover {
  transform: translateY(-4px);
  box-shadow: var(--lav-shadow-hover) !important;
  border-color: var(--lav-border-strong) !important;
}

.et_pb_blurb .et_pb_main_blurb_image,
.et_pb_blurb .et_pb_image_wrap {
  margin-bottom: 18px !important;
}

.et_pb_main_blurb_image .et-pb-icon {
  color: var(--lav-deep) !important;
  background: var(--lav-pale-2);
  border-radius: 999px;
  padding: 14px;
}

/* Buttons: clear conversion focus. */
.et_pb_button,
.et_pb_button_module_wrapper .et_pb_button,
.et_pb_promo_button,
.et_pb_contact_submit,
button.et_pb_contact_submit {
  background: var(--lav-deep) !important;
  color: var(--lav-white) !important;
  border: 0 !important;
  border-radius: 999px !important;
  padding: 0.86rem 1.65rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.01em !important;
  box-shadow: 0 12px 26px rgba(103, 67, 127, 0.25) !important;
  transition: transform 220ms ease, background-color 220ms ease, box-shadow 220ms ease !important;
}

.et_pb_button:hover,
.et_pb_promo_button:hover,
.et_pb_contact_submit:hover,
button.et_pb_contact_submit:hover {
  background: var(--lav-charcoal) !important;
  color: var(--lav-white) !important;
  transform: translateY(-2px);
  box-shadow: 0 16px 34px rgba(41, 39, 47, 0.23) !important;
}

.et_pb_button:after,
.et_pb_promo_button:after {
  line-height: 1.6em !important;
}

/* Call-to-action blocks. */
.et_pb_promo,
.et_pb_call_to_action,
.et_pb_cta {
  background: radial-gradient(circle at top right, rgba(255, 255, 255, 0.22), transparent 32%), linear-gradient(135deg, var(--lav-deep), var(--lav-main)) !important;
  border-radius: var(--lav-radius-lg) !important;
  box-shadow: var(--lav-shadow-hover) !important;
  overflow: hidden;
  border: 0 !important;
}

.et_pb_promo h1,
.et_pb_promo h2,
.et_pb_promo h3,
.et_pb_call_to_action h1,
.et_pb_call_to_action h2,
.et_pb_call_to_action h3,
.et_pb_cta h1,
.et_pb_cta h2,
.et_pb_cta h3,
.et_pb_promo p,
.et_pb_call_to_action p,
.et_pb_cta p {
  color: var(--lav-white) !important;
}

/* Lists, useful for the preschool bullet points. */
.et_pb_text ul,
.et_pb_text ol {
  margin-top: 1rem;
  padding-left: 1.25rem;
}

.et_pb_text li {
  margin-bottom: 0.65rem;
}

.et_pb_text ul li::marker {
  color: var(--lav-deep);
}

/* Forms. */
.et_pb_contact_field input,
.et_pb_contact_field textarea,
.et_pb_contact_field select,
input[type="text"],
input[type="email"],
input[type="tel"],
textarea,
select {
  border-radius: var(--lav-radius-sm) !important;
  border: 1px solid var(--lav-border-strong) !important;
  background: var(--lav-white) !important;
  padding: 14px 16px !important;
  box-shadow: none !important;
}

.et_pb_contact_field input:focus,
.et_pb_contact_field textarea:focus,
.et_pb_contact_field select:focus,
input[type="text"]:focus,
input[type="email"]:focus,
input[type="tel"]:focus,
textarea:focus,
select:focus {
  border-color: var(--lav-deep) !important;
  box-shadow: 0 0 0 4px rgba(175, 142, 211, 0.22) !important;
  outline: none !important;
}

/* Blog/news cards, if used on the homepage or news pages. */
.et_pb_blog_grid .et_pb_post,
.et_pb_posts .et_pb_post,
.et_pb_ajax_pagination_container .et_pb_post {
  background: var(--lav-white) !important;
  border: 1px solid var(--lav-border) !important;
  border-radius: var(--lav-radius-md) !important;
  box-shadow: var(--lav-shadow) !important;
  overflow: hidden;
  padding: clamp(20px, 2vw, 30px) !important;
}

.et_pb_post .entry-title a,
.et_pb_post h2 a {
  color: var(--lav-ink) !important;
}

.et_pb_post .post-meta,
.et_pb_post .post-meta a {
  color: var(--lav-muted) !important;
}

/* Tables, useful for fees, term dates or policy pages. */
table {
  border-collapse: separate !important;
  border-spacing: 0 !important;
  width: 100%;
  overflow: hidden;
  border-radius: var(--lav-radius-md);
  box-shadow: var(--lav-shadow);
}

th {
  background: var(--lav-deep) !important;
  color: var(--lav-white) !important;
}

td, th {
  border: 1px solid var(--lav-border) !important;
  padding: 0.9rem 1rem !important;
}

tr:nth-child(even) td {
  background: var(--lav-pale) !important;
}

/* Homepage-specific extra polish, still safe. */
.home .et_pb_section:first-of-type,
.page-id-2 .et_pb_section:first-of-type {
  background: radial-gradient(circle at 8% 10%, rgba(215, 194, 239, 0.55), transparent 28%), linear-gradient(135deg, var(--lav-cream), var(--lav-pale)) !important;
}

.home .et_pb_section:first-of-type .et_pb_text,
.page-id-2 .et_pb_section:first-of-type .et_pb_text {
  max-width: 860px;
}

/* Footer. */
#main-footer,
.et-l--footer,
footer {
  background: var(--lav-ink) !important;
  color: rgba(255,255,255,0.86) !important;
}

#main-footer a,
.et-l--footer a,
footer a {
  color: var(--lav-soft) !important;
}

/* Accessibility. */
a:focus-visible,
button:focus-visible,
.et_pb_button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid rgba(103, 67, 127, 0.45) !important;
  outline-offset: 3px !important;
}

/* Mobile tuning. */
@media (max-width: 980px) {
  .et_pb_row {
    width: 90% !important;
  }

  .et_pb_column {
    margin-bottom: 28px !important;
  }

  .et_pb_section:not(.et_pb_fullwidth_section) {
    padding-top: 58px !important;
    padding-bottom: 58px !important;
  }

  #main-header,
  .et-l--header,
  .et_pb_menu {
    backdrop-filter: none;
  }
}

@media (max-width: 640px) {
  h1,
  .et_pb_fullwidth_header .header-content h1,
  .et_pb_slide_description h2 {
    font-size: 2.45rem !important;
  }

  h2,
  .et_pb_text h2,
  .et_pb_promo_description h2 {
    font-size: 2rem !important;
  }

  .et_pb_blurb,
  .et_pb_testimonial,
  .et_pb_contact_form_container,
  .et_pb_toggle,
  .et_pb_accordion_item {
    padding: 22px !important;
  }

  .et_pb_button,
  .et_pb_promo_button,
  .et_pb_contact_submit {
    display: inline-block !important;
    width: auto;
    max-width: 100%;
    text-align: center;
  }
}
