/**
 * School Theme Styles
 * Design tokens + component styles for the school theme
 *
 * Reset & base utilities provided by parent theme (school-base)
 */

/* --- Design Tokens --- */
:root {
  --color-green-dark: #2d5016;
  --color-green: #3a6b1e;
  --color-green-light: #4a8428;
  --color-green-pale: #e8f0e0;
  --color-green-sage: #5f7b66;
  --color-green-muted: #59735c;
  --color-green-muted-dark: #57715a;
  --color-orange: #cf9228;
  --color-orange-dark: #c08827;
  --color-red: #c24c44;
  --color-red-dark: #ad433b;
  --color-cream: #f3eeeb;
  --color-white: #ffffff;
  --color-blue: #3a7bce;
  --color-blue-04: rgba(58, 123, 206, 0.4);
  --color-blue-medium: #3879cb;
  --color-blue-dark: #2f68af;
  --color-purple: #9b4f84;
  --color-text: #333333;
  --color-text-light: #666666;
  --color-border: #e0ddd8;

  --font-heading:
    "Google Sans Flex", "Open Sans", -apple-system, BlinkMacSystemFont,
    "Segoe UI", sans-serif;
  --font-body:
    "Google Sans Flex", "Open Sans", -apple-system, BlinkMacSystemFont,
    "Segoe UI", sans-serif;

  /* Spacing */
  --hero-spacing-top-axis: clamp(140px, 16vw, 250px);
  --hero-spacing-bottom-axis: clamp(100px, 18vw, 220px);

  --spacing-y-axis-lg: clamp(50px, 9vw, 160px);
  --spacing-y-axis-sm: clamp(50px, 6vw, 75px);

  --spacing-y-axis: clamp(50px, 6vw, 100px);
  --spacing-x-axis: clamp(20px, 5.2vw, 100px);
  --body-spacing-x-axis: clamp(20px, 5.2vw, 160px);

  /* Gap spacing */
  --g-01: clamp(15px, 3vw, 20px);
  --g-02: clamp(20px, 3vw, 40px);
  --g-03: clamp(30px, 4vw, 60px);
  --g-04: clamp(40px, 4vw, 80px);
  --g-05: clamp(50px, 5.2vw, 100px);

  /* Type: base body & eyebrow */
  --body-font-sm: clamp(0.8rem, 1.8vw, 0.9rem);
  --body-font: clamp(1.1rem, 2.2vw, 1.15rem);

  /* Type: Headings scale */
  --fs-hero: clamp(2.75rem, 6vw, 6rem);
  --fs-h1: clamp(2rem, 4.8vw, 3.5rem);
  --fs-h2: clamp(1.75rem, 4.2vw, 3rem);
  --fs-h3: clamp(1.5rem, 3.6vw, 2rem);
  --fs-h4: clamp(1.25rem, 3vw, 1.6rem);
  --fs-h5: clamp(1.05rem, 2.6vw, 1.3rem);

  /* Line-height scale (explicit) */
  --lh-100: 100%;
  --lh-110: 110%;
  --lh-120: 120%;
  --lh-130: 130%;
  --lh-140: 140%;
  --lh-150: 150%;
  --lh-160: 160%;
  --lh-170: 170%;

  --radius: 8px;
  --radius-lg: 12px;
  --shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
  --shadow-lg: 0 4px 24px rgba(0, 0, 0, 0.12);
  --transition: 0.25s ease;

  --footer-offset: 100px;
  --main-offset: calc(var(--footer-offset) + var(--footer-offset));

  --pageHeader-offset: 60px;
}

.nav-menu,
.footer-links {
  list-style: none;
  margin: 0;
  padding: 0;
}
/* ==============
   Text Utilities
=================*/

/* Heading sizes */

/* Sizes */
.fs-body-sm {
  font-size: var(--body-font-sm);
}
.fs-body {
  font-size: var(--body-font);
}

/* Line-heights (grouped) */
.fs-body-sm,
.fs-body {
  line-height: var(--lh-170);
}

.fs-sm,
.fs-base,
.fs-md,
.fs-lg,
.fs-xl,
.fs-2xl,
.fs-3xl,
.fs-4xl {
  line-height: var(--lh-120);
}
.fs-5xl,
.fs-6xl,
.fs-7xl,
.fs-8xl {
  line-height: var(--lh-110);
}

/* Line Height Utilities */
.lh-100 {
  line-height: var(--lh-100);
}
.lh-110 {
  line-height: var(--lh-110);
}
.lh-120 {
  line-height: var(--lh-120);
}
.lh-130 {
  line-height: var(--lh-130);
}
.lh-140 {
  line-height: var(--lh-140);
}
.lh-150 {
  line-height: var(--lh-150);
}
.lh-160 {
  line-height: var(--lh-160);
}
.lh-170 {
  line-height: var(--lh-170);
}

.heading {
  text-wrap: balance;
}

.subText {
  font-size: var(--fs-h5);
  font-weight: 600;
  line-height: 133%;
  text-wrap: balance;
}

.text-balance {
  text-wrap: balance;
}

/* =====================
   Font Weight Utilities
========================*/

.font-400 {
  font-weight: 400;
}
.font-500 {
  font-weight: 500;
}
.font-600 {
  font-weight: 600;
}
.font-700 {
  font-weight: 700;
}
.font-800 {
  font-weight: 800;
}

/* ===============
   Text width (ch)
===================*/
.text-w-20 {
  max-width: 20ch;
}

.text-w-22 {
  max-width: 22ch;
}

.text-w-24 {
  max-width: 24ch;
}

.text-w-26 {
  max-width: 26ch;
}

.text-w-28 {
  max-width: 28ch;
}

.text-w-30 {
  max-width: 30ch;
}

/* ===========
   Transitions
==============*/

svg,
span,
a,
button {
  transition-duration: 0.1s;
}

/* =====================
   Gap spacing Utilities
========================*/

/* Gap col & row */
.gap-sm {
  gap: var(--g-01) !important;
}

.gap-md {
  gap: var(--g-02) !important;
}

.gap-lg {
  gap: var(--g-03) !important;
}

.gap-xl {
  gap: var(--g-04) !important;
}

.gap-2xl {
  gap: var(--g-05) !important;
}

/* Gap col */
.col-gap-sm {
  column-gap: var(--g-01) !important;
}

.col-gap-md {
  column-gap: var(--g-02) !important;
}

.col-gap-lg {
  column-gap: var(--g-03) !important;
}

.col-gap-xl {
  column-gap: var(--g-04) !important;
}

.col-gap-2xl {
  column-gap: var(--g-05) !important;
}

/* Gap row */
.row-gap-sm {
  row-gap: var(--g-01) !important;
}

.row-gap-md {
  row-gap: var(--g-02) !important;
}

.row-gap-lg {
  row-gap: var(--g-03) !important;
}

.row-gap-xl {
  row-gap: var(--g-04) !important;
}

.row-gap-2xl {
  row-gap: var(--g-05) !important;
}

/* =================
   Spacing Utilities
====================*/

.padding-y {
  padding-top: var(--spacing-y-axis);
  padding-bottom: var(--spacing-y-axis);
}

.padding-x {
  padding-right: var(--spacing-x-axis);
  padding-left: var(--spacing-x-axis);
}

.padding-left-x {
  padding-left: var(--spacing-x-axis);
}
.padding-right-x {
  padding-right: var(--spacing-x-axis);
}
.padding-top-y {
  padding-top: var(--spacing-y-axis);
}
.padding-bottom-y {
  padding-bottom: var(--spacing-y-axis);
}

.padding-top-y-lg {
  padding-top: var(--spacing-y-axis-lg) !important;
}
.padding-bottom-y-lg {
  padding-bottom: var(--spacing-y-axis-lg) !important;
}
.padding-top-y-sm {
  padding-top: var(--spacing-y-axis-sm) !important;
}
.padding-bottom-y-sm {
  padding-bottom: var(--spacing-y-axis-sm) !important;
}

.group-spacing-small,
.wp-block-group.group-spacing-small {
  padding: clamp(20px, 4vw, 50px) !important;
}

/* ==================
   Background colours
=====================*/

.bgWhite {
  background-color: white;
}

.bgCream {
  background-color: var(--color-cream);
}

.bgSageGreen {
  background-color: var(--color-green-sage);
}

.bgOrange {
  background-color: var(--color-orange);
}

.bgPurple {
  background-color: var(--color-purple);
}

/* ============
   Text Colours
===============*/

.textWhite {
  color: #fff;
}

.textCream {
  color: var(--color-cream);
}

.textGreen {
  color: var(--color-green);
}

/* ===============
   Button Styles
==================*/
.btn {
  padding: clamp(7px, 1.5vw, 14px) clamp(15px, 3vw, 30px);
  max-width: fit-content;
  width: 100%;
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 4px;
  font-weight: 600;
  border-width: 2px;
  border-style: solid;
  border-radius: 10px;
  box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.25);
}

.btn > span {
  text-wrap: nowrap;
  font-size: var(--body-font);
}

.btn-sm {
  padding: clamp(6px, 1.5vw, 8px) clamp(10px, 3vw, 20px);
}

.btn-sm > span {
  font-size: var(--body-font-sm);
}

.btn-lg {
  padding: clamp(8px, 1.5vw, 16px) clamp(20px, 3vw, 40px);
}

.btn-lg > span {
  font-size: var(--fs-h5);
}

.solidWhiteBtn {
  background-color: white;
  color: var(--color-green-dark);
  border-color: white;
}

.solidWhiteBtn:hover {
  background-color: #f0f0f0;
}

.outlineWhiteBtn {
  background: transparent;
  color: var(--color-white);
  border-color: var(--color-white);
}

.outlineWhiteBtn:hover {
  background: var(--color-white);
  color: var(--color-green-dark);
  transform: translateY(-1px);
}

.solidBlackBtn {
  background-color: #080808;
  color: white;
  border: 1px solid #080808;
}

.solidBlackBtn:hover {
  background-color: #141414;
  color: var(--brand-yellow);
}

.outlineBlackBtn {
  background-color: #080808;
  color: white;
  border-color: #080808;
}

.outlineBlackBtn:hover {
  background-color: #333333;
  color: white;
}

.solidOrangeBtn {
  background: var(--color-orange);
  color: var(--color-white) !important;
  border-color: var(--color-orange);
}

.solidOrangeBtn:hover {
  background: var(--color-orange-dark);
  border-color: var(--color-orange-dark);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(232, 122, 46, 0.35);
}

.solidRedBtn {
  background: var(--color-red);
  color: var(--color-white) !important;
  border-color: var(--color-red);
}

.solidRedBtn:hover {
  background: var(--color-red-dark);
  border-color: var(--color-red-dark);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(208, 104, 32, 0.35);
}

.outlineBlueBtn {
  background: transparent;
  color: var(--color-blue);
  border-color: var(--color-blue);
}

.outlineBlueBtn:hover,
.outlineBlueBtn:focus-visible {
  background: var(--color-blue);
  color: var(--color-white);
  transform: translateY(-1px);
}

.solidBlueBtn {
  background: var(--color-blue);
  color: var(--color-white) !important;
  border-color: var(--color-blue);
}

.solidBlueBtn:hover,
.solidBlueBtn:focus-visible {
  background: var(--color-blue-dark);
  border-color: var(--color-blue-dark);
  transform: translateY(-1px);
}

.solidSageBtn {
  background: var(--color-green-sage);
  color: var(--color-white) !important;
  border-color: var(--color-green-sage);
}

.solidSageBtn:hover,
.solidSageBtn:focus-visible {
  background: var(--color-green-muted);
  border-color: var(--color-green-muted);
  transform: translateY(-1px);
}

.outlineSageBtn {
  background: transparent;
  color: var(--color-green-sage);
  border-color: var(--color-green-sage);
}

.outlineSageBtn:hover,
.outlineSageBtn:focus-visible {
  background: var(--color-green-sage);
  color: var(--color-white);
  transform: translateY(-1px);
}

.btnsContainer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 20px;
  row-gap: 10px;
  margin-top: clamp(10px, 2vw, 30px) !important;
}

.btnsContainer .btn {
  max-width: 100%;
}

@media (min-width: 768px) {
  .btnsContainer .btn {
    max-width: fit-content;
  }
}

/* ================
   Column Utilities
===================*/

.one-col {
  max-width: 1200px;
  width: 100%;
}

.two-cols {
  position: relative;
  z-index: 1;
}

.two-cols > div > :first-child {
  margin-top: 0;
}

.one-col,
.two-cols,
.three-cols,
.four-cols {
  display: grid;
  grid-template-columns: 1fr;
}

.column {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 15px;
}

.column > * {
  margin: 0;
}

.textColumn h2 {
  text-wrap: balance;
}

.textColumn img {
  max-width: 600px;
  width: 100%;
  height: auto;
  max-height: 400px;
  object-fit: contain;
}

.textColumn .btnsContainer {
  margin-top: 20px !important;
}

.pageHeader {
  position: relative;
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 900" preserveAspectRatio="none"><path fill="black" d="M0 0H1440V748C1348 761 1259 773 1171 784C957 811 754 835 542 839C350 843 173 826 0 799V0Z"/></svg>');
  mask-position: center;
  mask-repeat: no-repeat;
  mask-size: 100% 100%;
  background-color: var(--color-green-muted);
  padding-bottom: clamp(20px, 3vw, 30px);
}

.pageHeaderInner {
  position: relative;
  min-height: inherit;
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 900" preserveAspectRatio="none"><path fill="black" d="M0 0H1440V748C1348 761 1259 773 1171 784C957 811 754 835 542 839C350 843 173 826 0 799V0Z"/></svg>');
  mask-position: center;
  mask-repeat: no-repeat;
  mask-size: 100% 100%;
  padding-bottom: var(--pageHeader-offset);
}

.pageHeaderInner::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(8, 14, 24, 0.58) 0%,
    rgba(8, 14, 24, 0.34) 28%,
    rgba(8, 14, 24, 0.14) 52%,
    rgba(8, 14, 24, 0.04) 72%,
    rgba(8, 14, 24, 0) 100%
  );
  pointer-events: none;
  z-index: 0;
}

.pageHeaderInner > * {
  position: relative;
  z-index: 1;
}

.pageHeader .textColumn {
  gap: 5px;
}

.pageHeader .textColumn :is(h1, h2, h3, p) {
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.48);
}

.pageHeader .btnsContainer {
  margin-top: 15px !important;
}

.textColumn .ctaPillContainer {
  justify-content: flex-start;
  margin-top: 0;
}

.mediaColumn {
  align-items: center;
}

@media (max-width: 575px) {
  .two-cols.seventy-thirty-cols .textContentCardContainer {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 640px) {
  .two-cols,
  .three-cols,
  .four-cols {
    grid-template-columns: 1fr 1fr;
  }

  .two-cols.seventy-thirty-cols {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 1024px) {
  .three-cols,
  .four-cols {
    grid-template-columns: 1fr 1fr 1fr;
  }

  .two-cols.seventy-thirty-cols {
    grid-template-columns: 65% 35%;
  }

  .two-cols.seventy-thirty-cols:has(.sm-order-0) {
    grid-template-columns: 35% 65%;
  }
}

@media (min-width: 1400px) {
  .four-cols {
    grid-template-columns: 1fr 1fr 1fr 1fr;
  }
}

/* ===============
   Order Utilities
==================*/

/* Base (all sizes) */
.order-0 {
  order: 0;
}
.order-1 {
  order: 1;
}
.order-2 {
  order: 2;
}
.order-3 {
  order: 3;
}

/* ≥640px */
@media (min-width: 640px) {
  .sm-order-0 {
    order: 0;
  }
  .sm-order-1 {
    order: 1;
  }
  .sm-order-2 {
    order: 2;
  }
  .sm-order-3 {
    order: 3;
  }
}

/* ≥1024px */
@media (min-width: 1024px) {
  .lg-order-0 {
    order: 0;
  }
  .lg-order-1 {
    order: 1;
  }
  .lg-order-2 {
    order: 2;
  }
  .lg-order-3 {
    order: 3;
  }
}

/* ≥1200px */
@media (min-width: 1200px) {
  .xl-order-0 {
    order: 0;
  }
  .xl-order-1 {
    order: 1;
  }
  .xl-order-2 {
    order: 2;
  }
  .xl-order-3 {
    order: 3;
  }
}

/* ===============
   Image utilities
==================*/
.img-border-white-full,
.img-border-white-50 {
  border: clamp(5px, 1vw, 10px) solid;
  outline: 1px solid rgba(0, 0, 0, 0.1);
  box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2);
}

.img-border-white-full {
  border-color: white;
}

.img-border-white-50 {
  border-color: rgba(255, 255, 255, 0.5);
}

.singleMedia {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.imgContainer > img,
.imgContainer > iframe {
  object-fit: cover;
  object-position: center;
  height: 100%;
  width: 100%;
}

.imgMask img,
.imgMask::before {
  mask-position: center;
  mask-size: contain;
  mask-repeat: no-repeat;
  aspect-ratio: 1/1;
  max-width: 600px;
}

.imgMask {
  position: relative;
}

.imgMask img {
  position: relative;
  z-index: 2;
  transform: scale(0.9);
}

.imgMask::before {
  content: "";
  position: absolute;
  inset: 0;
  background-color: var(--color-cream);
  transform: scaleX(-1);
  z-index: 1;
}

.mask1 img,
.mask1::before {
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="512" height="519" viewBox="0 0 512 519" fill="none"><path fill="%23211C21" d="M108 54C178 8 290 -4 385 22C463 44 511 100 512 168C513 232 471 279 407 305C350 328 336 375 345 434C352 479 325 515 272 518C183 523 92 487 38 417C-8 359 -8 261 11 190C31 116 57 83 108 54Z" /></svg>');
}

.mask2 img,
.mask2::before {
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="544" height="544" viewBox="0 0 544 544" fill="none"><path fill="%23211C21" d="M157 41C224 6 323 -7 407 20C482 44 531 102 539 176C548 249 520 316 476 378C441 427 421 467 412 502C401 540 361 544 296 544C219 544 134 533 73 500C21 472 -9 437 3 386C17 324 61 267 95 214C126 166 145 128 151 91C153 73 154 56 157 41Z"/></svg>');
}

/* =======================
   Media Fitting Utilities
==========================*/
.media-cover,
.media-cover > img {
  object-fit: cover;
}

.media-contain,
.media-contain > img {
  object-fit: contain;
}

/* =============
   Media Styling
================*/

.section.media-style-1:not(:has(iframe)) .radius-20 {
  aspect-ratio: 1/1;
}

.section.media-style-2 .imgContainer {
  position: relative;
  max-width: 100%;
}

.section.media-style-2 .mediaColumn.order-0 {
  align-items: start;
}

.section.media-style-2 .mediaColumn.order-0.sm-order-1 {
  align-items: end;
}

.section.media-style-2 .mediaColumn.order-0 .imgContainer {
  left: calc(var(--spacing-x-axis) * -1);
}

.section.media-style-2 .mediaColumn.order-0.sm-order-1 .imgContainer {
  right: calc(var(--spacing-x-axis) * -1);
  left: unset;
}

/* ===============
   heading Section
==================*/

.headingSection:not(.two-cols) {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  max-width: 1100px;
}

.headingSection:not(.two-cols) .btnsContainer {
  margin-top: 15px !important;
}

.headingSection.center {
  align-items: center;
  justify-content: center;
  text-align: center;
  margin: 0 auto;
}

.headingSection.two-cols {
  align-items: center;
  column-gap: var(--g-03);
}

.headingSection {
  position: relative;
  z-index: 1;
  row-gap: 15px;
}

.headingSection :is(h1, h2, h3, h4, h5, p) {
  margin: 0;
  text-wrap: balance;
}

.headingSection > :last-of-type {
  margin-bottom: 0;
}

.headingSectionBlock {
  margin-bottom: 15px !important;
}

.headingSection.two-cols:has(> div.btnsContainer:nth-child(2))
  > .btnsContainer {
  justify-content: flex-end !important;
  margin: 0 !important;
}

/* =======
   Section
==========*/
.section {
  display: flex;
  flex-direction: column;
  row-gap: var(--g-03);
  position: relative;
}

.section.center {
  align-items: center;
}

section.padding-y:not(:last-of-type):not(.quoteBlock, .pageHeader) {
  padding-bottom: 0;
}
/* ==========================
   Single Text Area Section
=============================*/
.singleTextAreaSectionInner {
  width: 100%;
  max-width: 1000px;
}

.singleTextAreaSectionContent {
  width: 100%;
  text-align: left;
  color: var(--color-text);
}

.singleTextAreaSectionContent > :first-child {
  margin-top: 0;
}

.singleTextAreaSectionContent > :last-child {
  margin-bottom: 0;
}

/* =============
   Location Page
================*/
.locationMapSection {
  padding-top: 0;
}

.locationMapEmbed {
  margin-top: 30px;
  width: 100%;
  max-width: 1200px;
  overflow: hidden;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}

.locationMapEmbed iframe {
  display: block;
  width: 100%;
  min-height: 450px;
}

/* =============
   Quote Section
================*/

.quoteSectionInner {
  width: 100%;
  max-width: 1000px;
  margin: 0 auto;
}

.quoteSectionBlockquote {
  position: relative;
  margin: 0;
  text-align: center;
  color: var(--color-green-dark);
  background-color: white;
  padding: clamp(48px, 8vw, 72px) clamp(20px, 4vw, 48px) clamp(32px, 7vw, 64px);
  border-radius: var(--radius-lg);
  box-shadow: 0 12px 34px rgba(45, 80, 22, 0.12);
  isolation: isolate;
}

.quoteSectionBlockquote::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  transform: translate(-50%, -50%);
  z-index: 2;
  width: clamp(48px, 8vw, 64px);
  height: clamp(48px, 8vw, 64px);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-green-sage);
  background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path fill="%23ffffff" d="M96 280C96 213.7 149.7 160 216 160L224 160C241.7 160 256 174.3 256 192C256 209.7 241.7 224 224 224L216 224C185.1 224 160 249.1 160 280L160 288L224 288C259.3 288 288 316.7 288 352L288 416C288 451.3 259.3 480 224 480L160 480C124.7 480 96 451.3 96 416L96 280zM352 280C352 213.7 405.7 160 472 160L480 160C497.7 160 512 174.3 512 192C512 209.7 497.7 224 480 224L472 224C441.1 224 416 249.1 416 280L416 288L480 288C515.3 288 544 316.7 544 352L544 416C544 451.3 515.3 480 480 480L416 480C380.7 480 352 451.3 352 416L352 280z"/></svg>');
  background-repeat: no-repeat;
  background-position: center;
  background-size: 58%;
  pointer-events: none;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18);
}

.quoteSectionText {
  position: relative;
  z-index: 1;
  margin: 0;
  white-space: pre-line;
  text-wrap: balance;
  color: var(--color-text);
  line-height: 120% !important;
  font-weight: 500;
}

.quoteSectionAuthorDivider {
  width: min(220px, 40%);
  border-top: 5px dotted rgba(13, 29, 50, 0.28);
  margin: clamp(22px, 4vw, 30px) auto clamp(14px, 2vw, 18px);
}

.quoteSectionAuthor {
  margin: 0;
  text-align: center;
  color: var(--color-green-dark);
  line-height: 1.35;
  font-weight: 600;
  letter-spacing: 0.01em;
}

/* ============================================
   HEADER
   ============================================ */

.site-header {
  --header-logo-width: 80px;
  background: transparent;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000;
  isolation: isolate;
}

.site-header .headerInner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  z-index: 2;
  padding: 20px var(--spacing-x-axis);
}

.site-header.is-scrolled {
  --header-logo-width: 60px;
  box-shadow: 0 2px 16px rgba(0, 0, 0, 0.2);
  background: var(--color-green-muted);
}

.siteLogo {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
}

.logoMark {
  display: inline-flex;
  align-items: center;
}

.logoMark svg,
.footer-logo-mark svg {
  display: block;
  width: var(--header-logo-width);
  height: auto;
  transition-duration: 0.1s;
}

.siteLogo .custom-logo-link,
.siteLogo .custom-logo {
  display: block;
}

.logoText {
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--color-white);
  max-width: 16ch;
  text-align: left;
  text-wrap: balance;
}

.mainNav {
  display: flex;
  align-items: center;
  gap: 30px;
}

.navSlot {
  display: contents;
}

.navShell {
  display: flex;
  align-items: center;
}

.mainNav,
.mainMenu a,
.mainMenu .menu-toggle,
.mainMenu span {
  color: var(--color-white);
}

.mainMenu :is(a, .menu-toggle, span):hover {
  color: var(--color-green-pale);
}

.mainMenu {
  display: flex;
  align-items: center;
  gap: 30px;
}

.mainMenu,
.mainMenu ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.mainMenu .menu-toggle {
  border: 0;
  background: transparent;
  font: inherit;
  cursor: pointer;
}

.mainMenu a:hover,
.mainMenu .menu-toggle:hover,
.mainMenu a:focus-visible,
.mainMenu .menu-toggle:focus-visible {
  color: var(--color-white);
}

.mainMenu .menu-toggle > span {
  position: relative;
  padding-right: 1rem;
}

.mainMenu .menu-toggle > span::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 0;
  width: 0.5rem;
  height: 0.5rem;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-70%) rotate(45deg);
  transition: transform var(--transition);
}

.mainMenu .menu-item {
  color: white;
  font-weight: 500;
}

.mainMenu .menu-item-has-children.is-open > .menu-toggle > span::after {
  transform: translateY(-20%) rotate(-135deg);
}

.mainMenu .sub-menu {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.nav-btn {
  font-size: 0.85rem !important;
  padding: 0.5rem 1.25rem !important;
}

.nav-btn--contact {
  background: var(--color-green-light);
}

.nav-btn--contact:hover {
  background: var(--color-green) !important;
  opacity: 1 !important;
}

.nav-btn--portal {
  background: var(--color-orange);
}

.nav-btn--portal:hover {
  background: var(--color-orange-dark) !important;
  opacity: 1 !important;
}

.navButtons {
  margin-top: 0 !important;
  flex-wrap: nowrap;
}

.navToggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: var(--radius);
  background: transparent;
  color: var(--color-white);
  cursor: pointer;
}

.navToggle:focus-visible {
  outline: 2px solid var(--color-white);
  outline-offset: 2px;
}

.navToggle i {
  font-size: 2rem;
  color: var(--color-cream);
}

.offcanvas {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(420px, 100%);
  display: flex;
  flex-direction: column;
  background: var(--color-green-muted);
  transform: translateX(100%);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  box-shadow: -10px 0 30px rgba(0, 0, 0, 0.3);
  transition:
    transform 0.18s ease-in-out,
    opacity 0.18s ease-in-out,
    visibility 0s linear 0.18s;
  z-index: 3;
}

.offcanvas.show {
  transform: translateX(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition:
    transform 0.18s ease-in-out,
    opacity 0.18s ease-in-out,
    visibility 0s linear 0s;
}

.offcanvas-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  color: var(--color-white);
}

.offcanvas-header #navOffcanvasTitle {
  display: inline-flex;
  align-items: center;
  color: var(--color-cream);
}

.offcanvas-header .siteLogo img {
  width: auto;
  height: 40px;
}

.offcanvas-header .logoMark svg {
  width: auto;
  height: 40px;
}

.offcanvas-header .siteLogo .custom-logo-link,
.offcanvas-header .siteLogo .custom-logo {
  display: block;
}

.offcanvas-header .siteLogo .custom-logo {
  width: auto;
  height: 40px;
}

.offcanvasClose {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--color-white);
  font-size: 1.75rem;
  line-height: 1;
  cursor: pointer;
}

.offcanvasClose i {
  font-size: 2rem;
}

.offcanvasClose:hover,
.offcanvasClose:focus-visible {
  color: var(--color-orange);
}

.offcanvas-body {
  overflow: auto;
  flex: 1;
  padding: 1.25rem;
}

body.offcanvas-open {
  overflow: hidden;
}

.site-header .headerInner::after {
  content: "";
  position: fixed;
  background: rgba(0, 0, 0, 0.45);
  z-index: 1;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  backdrop-filter: blur(0);
  -webkit-backdrop-filter: blur(0);
  transition:
    opacity 0.18s ease-in-out,
    visibility 0s linear 0.18s,
    backdrop-filter 0.18s ease-in-out,
    -webkit-backdrop-filter 0.18s ease-in-out;
}

body.offcanvas-open .site-header .headerInner::after {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  backdrop-filter: blur(5px);
  transition:
    opacity 0.18s ease-in-out,
    visibility 0s linear 0s,
    backdrop-filter 0.18s ease-in-out,
    -webkit-backdrop-filter 0.18s ease-in-out;
}

.site-header.has-mega-menu-open .headerInner::after {
  width: 100%;
  height: 100vh;
  top: 120px;
  left: 0;
  background: rgba(7, 16, 34, 0.24);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  backdrop-filter: blur(5px);
  transition:
    opacity 0.18s ease-in-out,
    visibility 0s linear 0s,
    backdrop-filter 0.18s ease-in-out,
    -webkit-backdrop-filter 0.18s ease-in-out;
}

@media (min-width: 576px) {
  .logoText {
    font-size: 1.1rem;
  }
}

@media (min-width: 768px) {
  .logoText {
    font-size: 1.2rem;
  }
}

@media (min-width: 1400px) {
  .navToggle,
  #navOffcanvas {
    display: none;
  }

  .navSlotDesktop .mainMenu > .dropdownItem {
    position: relative;
  }

  .navSlotDesktop .mainMenu > .menu-item-has-children > .menu-toggle {
    position: relative;
    z-index: 21;
  }

  .navSlotDesktop .navShell {
    display: flex;
  }

  .navSlotDesktop .mainMenu {
    display: flex;
  }

  .navSlotDesktop .mainMenu > .is-open > .menu-toggle > span::before {
    content: "";
    position: absolute;
    top: -14px;
    left: -13px;
    width: calc(100% + 30px);
    height: 54px;
    border-radius: 10px 10px 0 0;
    background: var(--color-green-muted);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-bottom: 0;
    z-index: -1;
  }

  .site-header.is-scrolled
    .navSlotDesktop
    .mainMenu
    > .is-open
    > .menu-toggle
    > span::before {
    content: none;
  }

  .navSlotDesktop .mainMenu > .menu-item-has-children > .sub-menu {
    position: absolute;
    top: 88px;
    left: 0;
    display: block;
    padding: 0.5rem;
    border-radius: var(--radius);
    background: var(--color-green-muted);
    border: 1px solid rgba(255, 255, 255, 0.2);
    z-index: 20;
    opacity: 0;
    visibility: hidden;
    transform: translateY(12px);
    pointer-events: none;
  }

  .navSlotDesktop .mainMenu > .is-open > .sub-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
  }

  .navSlotDesktop .mainMenu > .dropdownItem > .dropdownPanel {
    position: absolute;
    top: calc(100% + 11px);
    left: -12px;
    min-width: 220px;
    max-width: min(320px, 100vw);
    padding: 5px 0;
    border: 1px solid rgba(22, 40, 60, 0.15);
    border-radius: 0 10px 10px 10px;
    background: var(--color-green-muted);
    gap: 0;
  }

  .navSlotDesktop
    .mainMenu
    > .dropdownItem
    > .dropdownPanel
    > li
    > :is(a, span) {
    display: block;
    width: 100%;
    padding: 5px 15px;
    font-size: 1rem;
    color: var(--color-white);
  }

  .navSlotDesktop .mainMenu > .dropdownItem > .dropdownPanel > li > a:hover,
  .navSlotDesktop
    .mainMenu
    > .dropdownItem
    > .dropdownPanel
    > li
    > a:focus-visible {
    color: var(--color-white);
    background: rgba(255, 255, 255, 0.08);
  }

  .navSlotDesktop .mainMenu > .megaItem > .megaPanel {
    left: 0;
    width: 100%;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    border-radius: 0;
    background:
      linear-gradient(
        to top,
        rgba(255, 255, 255, 0.06),
        rgba(255, 255, 255, 0)
      ),
      var(--color-green-muted);
    max-width: 100%;
    max-height: 80vh;
    overflow: auto;
  }

  .navSlotDesktop .mainMenu > .megaItem > .megaPanel > li {
    min-width: 0;
    padding: 40px var(--spacing-x-axis);
  }

  .navSlotDesktop .mainMenu > .megaItem > .megaPanel > li:nth-of-type(2n) {
    background-color: var(--color-green-muted-dark);
  }

  .navSlotDesktop
    .mainMenu
    > .megaItem
    > .megaPanel
    > li
    > :is(a, .menu-toggle) {
    display: block;
    margin-bottom: 0.85rem;
    font-weight: 700;
  }

  .navSlotDesktop
    .mainMenu
    > .megaItem
    > .megaPanel
    > li
    > .menu-toggle
    > span {
    padding: 0;
    font-size: var(--fs-h4);
  }

  .navSlotDesktop .megaPanel .subPanel {
    display: grid;
    column-gap: 15px;
    row-gap: 0;
    margin-top: 0;
    padding-top: 0.8rem;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
    opacity: 1;
    transform: none;
    pointer-events: auto;
    transition: none;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    align-items: center;
  }

  .navSlotDesktop .megaPanel .subPanel :is(a, .menu-toggle, span) {
    display: block;
    color: rgba(255, 255, 255, 0.92);
    text-wrap: balance;
  }

  .navSlotDesktop .megaPanel .subPanel > li > a {
    padding: 0.25rem 0.7rem;
    margin-left: -0.7rem;
    margin-right: -0.25rem;
    border-radius: var(--radius);
    transition:
      color var(--transition),
      background-color var(--transition),
      box-shadow var(--transition),
      transform var(--transition);
  }

  .navSlotDesktop .megaPanel .subPanel > li > a:hover,
  .navSlotDesktop .megaPanel .subPanel > li > a:focus-visible,
  .navSlotDesktop .megaPanel .subPanel > li.current-menu-item > a,
  .navSlotDesktop .megaPanel .subPanel > li.current-menu-ancestor > a {
    background: rgba(255, 255, 255, 0.08);
    color: var(--color-white);
    transform: translateX(4px);
  }

  .navSlotDesktop .megaPanel :is(a, .menu-toggle):hover,
  .navSlotDesktop .megaPanel :is(a, .menu-toggle):focus-visible {
    color: var(--color-white);
  }

  .navSlotDesktop .megaPanel .menu-toggle {
    cursor: default;
  }

  .navSlotDesktop .megaPanel .menu-toggle > span::after {
    display: none;
  }

  .logoText {
    font-size: 1.3rem;
  }
}

@media (max-width: 1399px) {
  .site-header {
    --header-logo-width: 60px;
  }

  .site-header.is-scrolled {
    --header-logo-width: 40px;
  }

  .navSlotDesktop {
    display: none;
  }

  .navToggle {
    display: inline-flex;
  }

  .navSlotMobile :is(.navShell, .mainNav) {
    width: 100%;
  }

  .navSlotMobile .mainNav {
    flex-direction: column;
    align-items: stretch;
    gap: 1rem;
  }

  .navSlotMobile .mainMenu {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    width: 100%;
  }

  .navSlotMobile .mainMenu > li > :is(a, .menu-toggle) {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 0.75rem 0;
    font-weight: 600;
  }

  .navSlotMobile .sub-menu {
    gap: 0.5rem;
    width: 100%;
  }

  .navSlotMobile .sub-menu .sub-menu {
    display: flex !important;
  }

  .navSlotMobile .sub-menu .menu-toggle {
    cursor: default;
  }

  .navSlotMobile .sub-menu .menu-toggle > span::after {
    display: none;
  }

  .navSlotMobile .mainMenu a,
  .navSlotMobile .mainMenu .menu-toggle,
  .navSlotMobile .mainMenu span,
  .offcanvas-header #navOffcanvasTitle,
  .offcanvasClose {
    color: var(--color-white);
  }

  .navSlotMobile .mainMenu :is(li, a, .menu-toggle, .menu-toggle > span) {
    width: 100%;
  }

  .navSlotMobile .mainMenu .menu-toggle {
    justify-content: space-between;
    text-align: left;
  }

  .navSlotMobile .sub-menu :is(a, .menu-toggle) {
    display: flex;
    align-items: center;
    width: 100%;
    padding: 0.5rem 0;
  }

  .navSlotMobile .mainMenu > .dropdownItem > .dropdownPanel {
    margin-top: 0;
    padding-left: 15px;
    border-left: 1px solid rgba(255, 255, 255, 0.25);
  }

  .navSlotMobile .megaPanel {
    gap: 0;
    margin-top: 0;
    padding-left: 0;
    border-left: 0;
  }

  .navSlotMobile .megaPanel > li {
    padding: 0 15px;
    border-left: 1px solid rgba(255, 255, 255, 0.25);
    margin-left: 0;
  }

  .navSlotMobile .megaPanel > li:first-of-type {
    margin-top: 5px;
  }

  .navSlotMobile .megaPanel > li:not(:first-of-type) {
    margin-top: 30px;
  }

  .navSlotMobile .megaPanel > li:last-of-type {
    margin-bottom: 10px;
  }

  .navSlotMobile .megaPanel > li:nth-of-type(2n) {
    background-color: var(--color-green-muted-dark);
  }

  .navSlotMobile .megaPanel > li > .menu-toggle {
    padding: 0;
    margin-bottom: 0.35rem;
    background: transparent;
    border-radius: 0;
  }

  .navSlotMobile .megaPanel > li > .menu-toggle > span {
    color: var(--color-white);
    font-size: var(--fs-h4);
    font-weight: 700;
  }

  .navSlotMobile .megaPanel .subPanel {
    gap: 0rem;
    margin-top: 0;
    padding-top: 0.5rem;
    border-top: 3px solid rgba(255, 255, 255, 0.25);
  }

  .navSlotMobile .sub-menu span {
    display: block;
    width: 100%;
    padding: 0;
  }

  .navSlotMobile .navButtons {
    flex-direction: column;
    flex-wrap: wrap;
    gap: 0.85rem;
    width: 100%;
  }

  .navSlotMobile .navButtons .btn,
  .navSlotMobile .navButtons .nav-btn {
    display: flex;
    justify-content: center;
    max-width: 100%;
    width: 100%;
  }
}

@media (max-width: 767px) {
  .offcanvas-header {
    padding: 0.85rem 1rem;
  }

  .offcanvas-body {
    padding: 1rem;
  }
}

/* ============================================
   HERO
   ============================================ */
.pageHeader {
  position: relative;
  min-height: calc(60vh + var(--pageHeader-offset));
}

.home .pageHeader {
  --pageHeader-offset: 110px;
  min-height: calc(80vh + var(--pageHeader-offset));
}

.pageHeaderInner {
  min-height: inherit;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}

.bgArea {
  position: absolute;
  inset: 0;
  background-image: var(--page-header-bg-image);
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  z-index: 0;
}

@media (max-width: 767px) {
  .pageHeader .bgArea {
    background-image: var(--page-header-bg-image-mobile);
  }
}

.bgArea::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(30, 60, 10, 0.75) 10%,
    transparent 30%
  );
}

.bgArea.bgBlue::after {
  background: linear-gradient(
    to bottom,
    rgba(58, 123, 206, 0.75) 10%,
    transparent 30%
  );
}

.bgArea.bgGreenDark::after {
  background: linear-gradient(
    to bottom,
    rgba(45, 80, 22, 0.75) 10%,
    transparent 30%
  );
}

.bgArea.bgGreen::after {
  background: linear-gradient(
    to bottom,
    rgba(58, 107, 30, 0.75) 10%,
    transparent 30%
  );
}

.bgArea.bgGreenLight::after {
  background: linear-gradient(
    to bottom,
    rgba(74, 132, 40, 0.75) 10%,
    transparent 30%
  );
}

.bgArea.bgGreenPale::after {
  background: linear-gradient(
    to bottom,
    rgba(232, 240, 224, 0.82) 10%,
    transparent 30%
  );
}

.bgArea.bgGreenSage::after {
  background: linear-gradient(
    to bottom,
    rgba(95, 123, 102, 0.75) 10%,
    transparent 30%
  );
}

.bgArea.bgGreenMuted::after {
  background: linear-gradient(
    to bottom,
    rgba(89, 115, 92, 0.75) 10%,
    transparent 30%
  );
}

.featuredCardsSection {
  padding-top: 0;
  margin-top: calc(0px - 150px);
}

@media (min-width: 768px) {
  .home .pageHeader {
    --pageHeader-offset: 160px;
  }

  .featuredCardsSection {
    padding-top: 0;
    margin-top: calc(0px - 200px);
  }
}

/* ============================================
   FEATURE CARDS
   ============================================ */

.cardStyle1,
.cardStyle2,
.cardStyle3,
.cardStyle4 {
  border: 1px solid rgba(0, 0, 0, 0.2);
}

.cardStyle1 {
  display: flex;
  flex-direction: column;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow);
  transition:
    transform var(--transition),
    box-shadow var(--transition);
}

.cardStyle1:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}

.cardStyle1 .cardImg {
  aspect-ratio: 4 / 3;
  overflow: hidden;
}

.cardStyle1 .cardImg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.cardStyle1:hover .cardImg img {
  transform: scale(1.05);
}

.cardStyle1 .cardBody {
  min-height: 5rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
  background: white;
  position: relative;
  z-index: 1;
}

.cardStyle1 .cardBody h3,
.cardStyle1 .cardBody span {
  padding: 20px;
}

.cardStyle1 .cardBody h3 {
  font-family: var(--font-body);
  font-size: var(--fs-h5);
  font-weight: 700;
  color: var(--color-text);
  margin: 0;
  line-height: 1.35;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.cardStyle1 .cardBody span {
  font-size: var(--body-font);
  font-weight: 600;
  color: var(--color-green);
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem;
  margin: 0;
  transition: gap var(--transition);
}

.cardStyle1:hover .cardBody span {
  gap: 0.6rem;
}

/* ============================================
   NEWS & CALENDAR
   ============================================ */

/* Card Style 3 */
.cardStyle3 {
  display: flex;
  gap: 1rem;
  box-shadow: var(--shadow);
  transition:
    transform var(--transition),
    box-shadow var(--transition);
  position: relative;
  min-height: 220px;
  border-radius: var(--radius-lg);
  background: url("../images/hero.jpg") center / cover no-repeat;
  overflow: hidden;
  padding: 0;
  align-items: flex-end;
  justify-content: flex-end;
  isolation: isolate;
}

.cardStyle3:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}

.cardStyle3::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(0, 0, 0, 0.92) 0%,
    rgba(0, 0, 0, 0.55) 45%,
    rgba(0, 0, 0, 0) 80%
  );
  z-index: 0;
}

.cardStyle3 .cardBody {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
  position: relative;
  z-index: 1;
  margin-left: auto;
  align-items: flex-end;
  text-align: right;
  padding: var(--g-01);
  max-width: 100%;
}

.cardStyle3 .cardBody h3 {
  font-family: var(--font-body);
  font-weight: 700;
  margin: 0;
  color: var(--color-white);
}

.cardStyle3 .cardBody time {
  font-size: var(--body-font);
  color: rgba(255, 255, 255, 0.86);
}

/* Calendar */

.calendarCard {
  gap: 0;
  padding: 0;
  border: 0;
  align-items: stretch;
  overflow: visible;
  position: relative;
}

.calendarCard > div:first-child {
  width: auto;
  height: auto;
  min-height: 100%;
  padding: var(--g-01) 10px;
  background: var(--calendar-category-color, var(--color-green-dark));
  flex-shrink: 0;
  color: var(--color-white);
  border-radius: var(--radius-lg) 0 0 var(--radius-lg);
}

.calendarCard .dateMeta {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1;
  position: relative;
}

.calendarCard .dateMeta .day {
  font-size: var(--fs-h2);
  font-weight: 700;
}

.calendarCard .dateMeta .weekday {
  font-size: var(--body-font-sm);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 4px;
}

.calendarCard .dateMeta .month {
  font-size: var(--body-font-sm);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 4px;
}

.calendarCard .dateMeta .year {
  font-size: var(--body-font-sm);
  font-weight: 600;
  letter-spacing: 0.5px;
  margin-top: 4px;
}

.calendarCard .cardBody {
  padding: var(--g-01) var(--g-02);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
  border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
}

.calendarCard .cardBody h3 {
  font-family: var(--font-body);
  font-size: var(--fs-h5);
  font-weight: 700;
  color: var(--color-text);
  margin: 0;
}

.calendarCard .cardBody p {
  font-size: var(--body-font);
  color: var(--color-text-light);
  line-height: normal;
  margin: 0;
}

.calendarCardIcon {
  align-items: center;
  background: var(--color-white);
  border: 2px solid var(--calendar-category-color, var(--color-green-dark));
  border-radius: 999px;
  box-shadow: var(--shadow);
  color: var(--calendar-category-color, var(--color-green-dark));
  display: inline-flex;
  height: 40px;
  justify-content: center;
  left: -0.65rem;
  position: absolute;
  top: -0.65rem;
  width: 40px;
  z-index: 1;
}

.calendarCard.hasCategoryIcon .cardBody {
  padding-top: calc(var(--g-01) + 0.4rem);
}

.schoolCalendarDayEvent {
  background: var(--color-white);
  border-left: 4px solid var(--calendar-category-color, var(--color-red));
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 10px;
  position: relative;
}

.schoolCalendarDayEventIcon {
  align-items: center;
  background: var(--calendar-category-color, var(--color-red));
  border-radius: 999px;
  box-shadow: var(--shadow);
  color: var(--color-white);
  display: inline-flex;
  font-size: 0.75rem;
  height: 1.7rem;
  justify-content: center;
  left: 10px;
  position: absolute;
  top: -0.5rem;
  width: 1.7rem;
}

.schoolCalendarDayEvent.hasCategoryIcon {
  padding-top: 18px;
}

.site-main form {
  margin: 0 0 1.5rem;
}

.site-main form p {
  margin: 0 0 0.75rem;
}

.site-main label {
  display: block;
  margin-bottom: 0.35rem;
  font-weight: 700;
}

.site-main
  :is(input, select, textarea):not([type="checkbox"]):not([type="radio"]):not(
    [type="submit"]
  ):not([type="button"]):not([type="hidden"]) {
  min-width: 220px;
  max-width: 100%;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  background-color: var(--color-white);
  color: var(--color-text);
}

.site-main select:not([multiple]):not([size]) {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  padding-right: 2.5rem;
  background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12"%3E%3Cpath d="M2 4.5L6 8.5L10 4.5" fill="none" stroke="%23333333" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E');
  background-repeat: no-repeat;
  background-position: right 0.9rem center;
  background-size: 0.8rem;
}

.site-main select:not([multiple]):not([size])::-ms-expand {
  display: none;
}

/* ============================================
   HEADTEACHER'S WELCOME
   ============================================ */
.cardStyle2,
.cardStyle4 {
  position: relative;
  z-index: 1;
  display: grid;
  background: var(--color-white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
}

.cardStyle2 {
  grid-template-columns: 1.5fr 2fr;
}

.cardStyle4 {
  grid-template-columns: 100px 1fr;
}

.cardStyle2 .cardImg,
.cardStyle4 .cardImg {
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
}

.cardStyle2 .cardImg {
  border-radius: var(--radius-lg) 0 0 var(--radius-lg);
}

.cardStyle2 .cardBody {
  border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
}

.cardStyle2 .cardImg img,
.cardStyle4 .cardImg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cardStyle2 .cardCaption,
.cardStyle4 .cardCaption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
  color: var(--color-white);
  padding: var(--g-01) var(--g-02);
  display: flex;
  flex-direction: column;
}

.cardStyle2 .cardCaption > *,
.cardStyle4 .cardCaption > * {
  margin: 0;
  color: inherit;
  line-height: inherit;
}
.cardStyle2 .cardCaption .cardCaptionSecondary,
.cardStyle4 .cardCaption .cardCaptionSecondary {
  opacity: 0.85;
}

.cardStyle2 .cardBody,
.cardStyle4 .cardBody {
  padding: var(--g-01) var(--g-02);
  display: flex;
  flex-direction: column;
  gap: 15px;
  justify-content: center;
}

:is(.cardStyle2, .cardStyle4) :is(h3, p) {
  margin: 0;
}

.cardStyle2 .cardBody h2,
.cardStyle4 .cardBody h2 {
  font-size: var(--fs-h3) !important;
}

.cardStyle2 .cardBody h3,
.cardStyle4 .cardBody h3 {
  color: var(--color-green-dark);
}

.cardStyle2 .cardBody p,
.cardStyle4 .cardBody p {
  color: var(--color-text-light);
}

.read-more {
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--color-green);
  transition: color var(--transition);
}

.read-more:hover {
  color: var(--color-green-dark);
}

/* ============================================
   Main
   ============================================ */

.relatedPages {
  padding-bottom: 0 !important;
  margin-bottom: calc(0px - var(--main-offset));
}

/* ============================================
   CAROUSEL
   ============================================ */

body .splide {
  overflow: hidden;
}

body .splide li {
  margin-top: 0 !important;
}

.carousel-section {
  width: 100%;
  --carousel-slide-height: 50vh;
}

.carousel-section .splide__track {
  overflow: visible;
}

.carousel-section .splide__track,
.carousel-section .splide__list,
.carousel-section .splide__slide {
  cursor: grab;
}

.carousel-section .splide.is-dragging .splide__track,
.carousel-section .splide.is-dragging .splide__list,
.carousel-section .splide.is-dragging .splide__slide {
  cursor: grabbing;
}

.carousel-section .splide__slide,
.carousel-section .carousel__figure {
  height: var(--carousel-slide-height);
}

.carousel-section .carousel__figure {
  margin: 0;
}

.carousel-section .carousel__image {
  width: 100%;
  height: var(--carousel-slide-height);
  object-fit: cover;
  display: block;
}

.wp-block-gallery {
  display: grid !important;
  grid-template-columns: repeat(1, 1fr) !important;
}

.wp-block-gallery > figure {
  width: 100% !important;
  max-width: 100% !important;
  aspect-ratio: 16/9 !important;
}

@media (min-width: 768px) {
  .wp-block-gallery {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
  }
}

@media (min-width: 1024px) {
  .wp-block-gallery {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
  }
}

.contactPageIntro {
  max-width: 760px;
  margin: 0 auto clamp(28px, 4vw, 48px);
  text-align: center;
}

.contactPanelKicker {
  margin: 0 0 10px;
  color: var(--color-blue-dark);
  font-size: var(--body-font-sm);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.contactPanelTitle {
  margin: 0;
  color: var(--color-green-dark);
  line-height: var(--lh-110);
  font-size: var(--fs-h3);
}

.contactPageSummary,
.contactPageContent {
  margin: 18px auto 0;
  max-width: 60ch;
  color: var(--color-text-light);
}

.contactPageContent > :first-child {
  margin-top: 0;
}

.contactPageContent > :last-child {
  margin-bottom: 0;
}

.contactPageGrid {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(20px, 3vw, 34px);
  align-items: start;
  max-width: 1200px;
  margin: 0 auto;
}

.contactDetailsPanel,
.contactFormPanel {
  border: 1px solid rgba(45, 80, 22, 0.12);
  border-radius: 24px;
  padding: clamp(24px, 4vw, 40px);
  box-shadow: 0 18px 45px rgba(47, 104, 175, 0.08);
}

.contactPanelHeader {
  margin-bottom: clamp(20px, 3vw, 28px);
}

.contactDetailsPanel {
  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.94),
      rgba(255, 255, 255, 0.98)
    ),
    linear-gradient(140deg, rgba(95, 123, 102, 0.12), rgba(58, 123, 206, 0.06));
}

.contactFormPanel {
  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.96),
      rgba(248, 251, 244, 0.98)
    ),
    linear-gradient(145deg, rgba(58, 123, 206, 0.08), rgba(232, 240, 224, 0.45));
}

.contactDetailsList {
  display: grid;
  gap: clamp(18px, 2.2vw, 24px);
}

.contactDetailsBlock h3 {
  margin: 0 0 8px;
  color: var(--color-green);
  font-size: var(--body-font-sm);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.contactDetailsBlock p,
.contactDetailsBlock address {
  margin: 0;
  color: var(--color-text);
  font-size: var(--body-font);
  line-height: var(--lh-160);
  font-style: normal;
}

.contactDetailsBlock a {
  color: var(--color-green-dark);
  font-weight: 600;
}

.contactDetailsBlock a:hover,
.contactDetailsBlock a:focus-visible {
  color: var(--color-blue-dark);
}

/* ===================
   Gravity Form Styles
   =================== */
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) {
  --ta-gf-surface: #ffffff;
  --ta-gf-surface-alt: #f8fbf4;
  --ta-gf-border: rgba(45, 80, 22, 0.14);
  --ta-gf-border-focus: var(--color-blue);
  --ta-gf-text: var(--color-green-dark);
  --ta-gf-muted: var(--color-text-light);
  --ta-gf-field-text: var(--color-text);
  --ta-gf-required: var(--color-orange-dark);
  --ta-gf-error-bg: #fff4f2;
  --ta-gf-error-border: rgba(194, 76, 68, 0.45);
  --ta-gf-error-text: #7f2a25;
  --ta-gf-success-bg: rgba(74, 132, 40, 0.1);
  --ta-gf-success-border: rgba(74, 132, 40, 0.26);

  color: var(--ta-gf-text);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gform_heading {
  margin-bottom: clamp(18px, 2vw, 24px);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gform_title {
  margin: 0;
  color: var(--color-green-dark);
  font-size: var(--fs-h4);
  line-height: var(--lh-120);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gform_description,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gfield_description,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gsection_description,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .instruction {
  color: var(--ta-gf-muted);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gfield_label,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gform-field-label {
  color: var(--ta-gf-text);
  font-size: var(--body-font-sm);
  font-weight: 700;
  letter-spacing: 0.02em;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gfield_required,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gfield_required_asterisk,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_required_legend {
  color: var(--ta-gf-required);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gform_fields {
  row-gap: clamp(14px, 2vw, 22px);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="text"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="email"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="tel"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="url"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="number"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  input[type="password"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="search"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="date"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="time"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="month"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) select,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) textarea {
  width: 100%;
  min-height: 54px;
  background-color: var(--ta-gf-surface);
  color: var(--ta-gf-field-text);
  border: 1px solid var(--ta-gf-border);
  border-radius: 14px;
  padding: 14px 16px;
  line-height: 1.45;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) textarea {
  min-height: 180px;
  resize: vertical;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input::placeholder,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  textarea::placeholder {
  color: rgba(51, 51, 51, 0.58);
  opacity: 1;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input:focus,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) select:focus,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) textarea:focus {
  border-color: var(--ta-gf-border-focus);
  box-shadow: 0 0 0 4px rgba(58, 123, 206, 0.14);
  outline: 0;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  input[type="checkbox"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) input[type="radio"] {
  accent-color: var(--color-green);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gform_footer,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gform_page_footer {
  margin-top: clamp(20px, 3vw, 28px);
  padding-top: 0;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_footer
  input[type="submit"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_footer
  input[type="button"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_page_footer
  input[type="button"],
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_page_footer
  input[type="submit"] {
  min-height: 54px;
  padding: 0 28px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: var(--color-blue);
  color: var(--color-white);
  font-weight: 700;
  font-size: var(--fs-h5);
  letter-spacing: 0.02em;
  cursor: pointer;
  box-shadow: 0 12px 28px rgba(58, 123, 206, 0.2);
  transition:
    transform 0.15s ease,
    box-shadow 0.15s ease,
    filter 0.15s ease;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_footer
  input[type="submit"]:hover,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_footer
  input[type="button"]:hover,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_page_footer
  input[type="button"]:hover,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_page_footer
  input[type="submit"]:hover {
  background: var(--color-blue-dark);
  border-color: var(--color-blue-dark);
  transform: translateY(-1px);
  box-shadow: 0 16px 32px rgba(58, 123, 206, 0.24);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_footer
  input[type="submit"]:focus,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_footer
  input[type="button"]:focus,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_page_footer
  input[type="button"]:focus,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_page_footer
  input[type="submit"]:focus {
  box-shadow:
    0 0 0 4px rgba(58, 123, 206, 0.16),
    0 16px 32px rgba(58, 123, 206, 0.24);
  outline: 0;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gfield_error input,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .gfield_error select,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gfield_error
  textarea {
  border-color: var(--ta-gf-error-border);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_submission_error {
  padding: 10px;
  margin: 0 !important;
  font-weight: 700;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gfield_validation_message,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .validation_message,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3) .validation_error,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_validation_errors {
  background-color: var(--ta-gf-error-bg);
  border: 1px solid var(--ta-gf-error-border);
  border-left-width: 4px;
  border-radius: 14px;
  color: var(--ta-gf-error-text);
  font-weight: 600;
  line-height: 1.4;
  padding: 12px 14px;
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_validation_errors
  > h2,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_validation_errors
  > ol,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_validation_errors
  > ul,
:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_validation_errors
  a {
  color: var(--ta-gf-error-text);
}

:is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
  .gform_validation_errors
  a {
  text-decoration: underline;
  text-underline-offset: 2px;
}

:is(
  #gform_confirmation_message_1,
  #gform_confirmation_message_2,
  #gform_confirmation_message_3
) {
  background-color: var(--ta-gf-success-bg);
  border-radius: 14px;
  color: var(--color-green-dark);
  padding: 0;
  font-weight: 600;
}

@media (max-width: 991.98px) {
  .contactPageGrid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 767.98px) {
  .contactDetailsPanel,
  .contactFormPanel {
    padding: 22px;
    border-radius: 20px;
  }
}

@media (max-width: 575.98px) {
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_footer
    input[type="submit"],
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_footer
    input[type="button"],
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_page_footer
    input[type="button"],
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_page_footer
    input[type="submit"] {
    display: block;
    width: 100%;
    max-width: none;
    margin-left: 0;
  }
}

@media (min-width: 576px) {
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_footer
    input[type="submit"],
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_footer
    input[type="button"],
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_page_footer
    input[type="button"],
  :is(#gform_wrapper_1, #gform_wrapper_2, #gform_wrapper_3)
    .gform_page_footer
    input[type="submit"] {
    display: block;
    width: 100%;
    max-width: 280px;
    margin-left: auto;
  }
}

.headteacherWelcomeSection {
  padding-bottom: 0;
  margin-bottom: calc(0px - 100px);
}
/* ============================================
   FOOTER
   ============================================ */
.site-footer {
  background:
    linear-gradient(rgba(89, 115, 92, 0.9), rgba(89, 115, 92, 0.9)),
    url("/wp-content/themes/bentham-school/assets/images/school-bg.webp");
  color: rgba(255, 255, 255, 0.8);
  padding: var(--spacing-y-axis) var(--spacing-x-axis) 0 var(--spacing-x-axis);
}

.home .site-footer {
  padding: calc(var(--spacing-y-axis) + 80px) var(--spacing-x-axis) 0
    var(--spacing-x-axis);
}

body:has(.site-main > .relatedPages) .site-footer {
  padding-top: calc(var(--spacing-y-axis) + 50px);
}

.footer-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 2rem;
  padding-bottom: 2rem;
}

.footer-col h4 {
  font-family: var(--font-body);
  font-size: var(--fs-h5);
  font-weight: 700;
  color: var(--color-white);
  margin-bottom: 0.25rem;
  text-transform: capitalize;
  letter-spacing: 0.5px;
}

.footer-col p {
  margin: 0 0 1rem 0;
}

.footer-col a {
  color: rgba(255, 255, 255, 0.8);
  transition: color var(--transition);
}

.footer-col a:hover {
  color: var(--color-white);
}

.footer-links {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.footer-col--logo {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  gap: 0.75rem;
}

.footer-col--logo img {
  height: 60px;
  width: auto;
  opacity: 0.9;
}

.footer-logo-mark {
  display: inline-flex;
  align-items: center;
}

.footer-logo-mark svg {
  width: 120px;
}

.footerLogo {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.footer-logo-text {
  color: var(--color-white);
  font-family: var(--font-body);
  font-size: clamp(1.4rem, 3vw, 1.8rem);
  font-weight: 700;
  line-height: 1.2;
  max-width: 11ch;
  text-align: left;
  text-wrap: balance;
  order: 2;
}

.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.15);
  padding: 1.25rem 0;
  display: flex;
  justify-content: space-between;
  font-size: 0.8rem;
}
/* ==================
   Resources Section
=====================*/

.attachmentsBox {
  max-width: 1000px;
  margin: 0;
  border-radius: 0 20px 20px 0;
  overflow: hidden;
  background: #ffffff;
  border: 1px solid #d8e3d3;
  box-shadow: 0 8px 22px rgba(20, 38, 23, 0.08);
}

.attachmentsBox > :first-child {
  padding: clamp(16px, 2.2vw, 24px) var(--spacing-x-axis);
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  background: var(--color-blue);
}

.attachmentsBox > :first-child h2 {
  margin: 0;
  color: var(--color-white);
  font-size: clamp(1.3rem, 2.3vw, 1.8rem);
  font-weight: 700;
  line-height: var(--lh-120);
  letter-spacing: 0.01em;
  text-transform: uppercase;
}

.attachmentsBox > :nth-child(2) {
  padding: clamp(14px, 2.2vw, 26px) var(--spacing-x-axis)
    clamp(18px, 2.6vw, 28px);
}

.attachmentsBox > :nth-child(2) h3 {
  margin: 0 0 8px;
  color: #4c6a54;
  font-size: 0.86rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.attachmentsBox > :nth-child(2) > section + section {
  margin-top: clamp(14px, 2vw, 24px);
}

.attachmentsFilesGridScroller {
  width: 100%;
}

.attachmentsBox .attachmentsFilesTable {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}

.attachmentsBox .attachmentsFilesTable thead,
.attachmentsBox .attachmentsFilesTable tbody,
.attachmentsBox .attachmentsFilesTable tr,
.attachmentsBox .attachmentsFilesTable th,
.attachmentsBox .attachmentsFilesTable td {
  background: transparent;
  box-shadow: none;
}

.attachmentsBox .attachmentsFilesTable th {
  margin: 0 0 8px;
  padding: 0 0 8px;
  color: #4c6a54;
  font-size: 0.86rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: var(--lh-120);
  text-align: left;
  text-transform: uppercase;
  border: 0;
}

.attachmentsBox .attachmentsFilesTable th:first-child,
.attachmentsBox .attachmentsFilesTable td:first-child {
  padding-left: 24px;
}

.attachmentsBox .attachmentsFilesTable th:nth-child(2),
.attachmentsBox .attachmentsFilesTable th:nth-child(3),
.attachmentsBox .attachmentsFilesTable td:nth-child(2),
.attachmentsBox .attachmentsFilesTable td:nth-child(3) {
  width: 120px;
  min-width: 120px;
  padding-left: 12px;
}

.attachmentsBox .attachmentsFilesTable td {
  padding-top: clamp(12px, 2vw, 16px);
  padding-bottom: clamp(12px, 2vw, 16px);
  border-top: 1px dashed #d2dfcb;
  vertical-align: middle;
  color: #1f3a28;
  border-left: 0;
  border-right: 0;
}

.attachmentsBox .attachmentsFilesTable tbody tr:last-child td {
  border-bottom: 1px dashed #d2dfcb;
}

.attachmentsBox .attachmentsFilesTable__file {
  position: relative;
}

.attachmentsBox .attachmentsFilesTable__file::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 16px;
  height: 16px;
  transform: translateY(-50%);
  background-color: #1f3a28;
  -webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M192 64C156.7 64 128 92.7 128 128L128 512C128 547.3 156.7 576 192 576L448 576C483.3 576 512 547.3 512 512L512 234.5C512 217.5 505.3 201.2 493.3 189.2L386.7 82.7C374.7 70.7 358.5 64 341.5 64L192 64zM453.5 240L360 240C346.7 240 336 229.3 336 216L336 122.5L453.5 240z"/></svg>');
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
  -webkit-mask-size: contain;
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M192 64C156.7 64 128 92.7 128 128L128 512C128 547.3 156.7 576 192 576L448 576C483.3 576 512 547.3 512 512L512 234.5C512 217.5 505.3 201.2 493.3 189.2L386.7 82.7C374.7 70.7 358.5 64 341.5 64L192 64zM453.5 240L360 240C346.7 240 336 229.3 336 216L336 122.5L453.5 240z"/></svg>');
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}

.attachmentsBox
  .attachmentsFilesTable
  tbody
  tr:hover
  .attachmentsFilesTable__file::before,
.attachmentsBox
  .attachmentsFilesTable
  tbody
  tr:focus-within
  .attachmentsFilesTable__file::before {
  background-color: #2f7a42;
}

.attachmentsList {
  list-style: none;
  margin: 0;
  padding: 0;
}

.attachmentsList > li {
  margin-top: 0 !important;
  position: relative;
  border-top: 1px dashed #d2dfcb;
}

.attachmentsList > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 16px;
  height: 16px;
  transform: translateY(-50%);
  background-color: #1f3a28;
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
  -webkit-mask-size: contain;
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}

.attachmentsList > li.is-files::before {
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M192 64C156.7 64 128 92.7 128 128L128 512C128 547.3 156.7 576 192 576L448 576C483.3 576 512 547.3 512 512L512 234.5C512 217.5 505.3 201.2 493.3 189.2L386.7 82.7C374.7 70.7 358.5 64 341.5 64L192 64zM453.5 240L360 240C346.7 240 336 229.3 336 216L336 122.5L453.5 240z"/></svg>');
}

.attachmentsList > li.is-link::before {
  mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M451.5 160C434.9 160 418.8 164.5 404.7 172.7C388.9 156.7 370.5 143.3 350.2 133.2C378.4 109.2 414.3 96 451.5 96C537.9 96 608 166 608 252.5C608 294 591.5 333.8 562.2 363.1L491.1 434.2C461.8 463.5 422 480 380.5 480C294.1 480 224 410 224 323.5C224 322 224 320.5 224.1 319C224.6 301.3 239.3 287.4 257 287.9C274.7 288.4 288.6 303.1 288.1 320.8C288.1 321.7 288.1 322.6 288.1 323.4C288.1 374.5 329.5 415.9 380.6 415.9C405.1 415.9 428.6 406.2 446 388.8L517.1 317.7C534.4 300.4 544.2 276.8 544.2 252.3C544.2 201.2 502.8 159.8 451.7 159.8zM307.2 237.3C305.3 236.5 303.4 235.4 301.7 234.2C289.1 227.7 274.7 224 259.6 224C235.1 224 211.6 233.7 194.2 251.1L123.1 322.2C105.8 339.5 96 363.1 96 387.6C96 438.7 137.4 480.1 188.5 480.1C205 480.1 221.1 475.7 235.2 467.5C251 483.5 269.4 496.9 289.8 507C261.6 530.9 225.8 544.2 188.5 544.2C102.1 544.2 32 474.2 32 387.7C32 346.2 48.5 306.4 77.8 277.1L148.9 206C178.2 176.7 218 160.2 259.5 160.2C346.1 160.2 416 230.8 416 317.1C416 318.4 416 319.7 416 321C415.6 338.7 400.9 352.6 383.2 352.2C365.5 351.8 351.6 337.1 352 319.4C352 318.6 352 317.9 352 317.1C352 283.4 334 253.8 307.2 237.5z"/></svg>');
}

.attachmentsList > li:last-child {
  border-bottom: 1px dashed #d2dfcb;
}

.attachmentLink {
  color: #1f3a28;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  padding: clamp(12px, 2vw, 16px) 0 clamp(12px, 2vw, 16px) 24px;
  font-weight: 600;
  font-size: clamp(0.96rem, 1.8vw, 1.06rem);
  line-height: var(--lh-140);
  text-wrap: wrap;
}

.attachmentLink:hover,
.attachmentLink:focus-visible {
  color: #2f7a42;
}

.attachmentsList > li:hover::before,
.attachmentsList > li:focus-within::before {
  background-color: #2f7a42;
}

.attachmentLink > i {
  font-size: 1.15rem;
  line-height: 1;
}

.attachmentLink--fileGrid {
  padding: 0;
  display: block;
  width: auto;
  min-width: 0;
}

.attachmentFileMeta {
  color: #1f3a28;
  font-size: clamp(0.86rem, 1.5vw, 0.95rem);
  font-weight: 600;
  line-height: var(--lh-140);
}

/* ==========================
   Newsletter Archive Cards
=========================== */

.newsletter-archive-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}

.newsletterArchiveControls {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-bottom: 18px;
}

.newsletterArchiveControls > div {
  display: grid;
  gap: 6px;
}

.newsletterArchiveControls label {
  margin: 0;
  font-weight: 600;
}

.newsletterArchiveControls input,
.newsletterArchiveControls select {
  width: 100%;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 10px 12px;
  background: var(--color-white);
}

.newsletterArchiveNoResults {
  margin: 12px 0 0;
  color: var(--color-text-light);
}

.archivePagination,
.navigation.pagination {
  margin-top: clamp(20px, 3vw, 28px);
  display: flex;
  justify-content: center;
}

.archivePagination .pageNumbers,
.navigation.pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}

.archivePagination .page-numbers,
.navigation.pagination .page-numbers {
  min-width: 42px;
  height: 42px;
  padding: 0 12px;
  border: 1px solid var(--color-blue);
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  color: var(--color-blue);
  background: var(--color-white);
  transition: var(--transition);
}

.archivePagination .page-numbers:hover,
.archivePagination .page-numbers:focus-visible,
.navigation.pagination .page-numbers:hover,
.navigation.pagination .page-numbers:focus-visible {
  background: var(--color-blue);
  color: var(--color-white);
}

.archivePagination .page-numbers.current,
.navigation.pagination .page-numbers.current {
  background: var(--color-blue);
  color: var(--color-white);
  box-shadow: 0 2px 10px rgba(58, 123, 206, 0.25);
}

.newsletter-archive-grid .newsletterCard {
  grid-template-columns: 100px 1fr;
  align-items: stretch;
}

.newsletter-archive-grid .newsletterCard > .dateMeta {
  background-color: var(--color-blue);
}

.newsletter-archive-grid .newsletterCard .cardBody {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.5rem;
}

.newsletter-archive-grid .newsletterCard .cardContent {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.newsletter-archive-grid .newsletterCard .cardBody h3 {
  margin: 0;
  color: var(--color-text);
}

.newsletter-archive-grid .newsletterCard .cardBody p {
  margin: 10px 0 0;
  color: var(--color-text-light);
}

.newsletter-archive-grid .newsletterCard .btnContainer {
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  padding-top: var(--g-01);
  border-top: 1px solid var(--color-border);
}

.newsletter-archive-grid .newsletterCard .btnContainer .btn {
  max-width: 100%;
  width: 100%;
}

.cardStyle5 {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.08);
}

.cardStyle5 > :first-child {
  background-color: var(--color-blue);
  padding: 16px 18px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.cardStyle5 > :first-child h2 {
  margin: 0;
  color: var(--color-white);
  font-size: clamp(1.05rem, 3.4vw, 1.5rem);
  line-height: var(--lh-120);
  flex: 1;
}

.cardStyle5 > :first-child span {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border: 1px solid rgba(255, 255, 255, 0.75);
  border-radius: 999px;
  color: var(--color-white);
  font-size: var(--body-font-sm);
  line-height: 1.2;
  font-weight: 600;
}

.cardStyle5 > :nth-child(2) {
  padding: 16px 18px;
}

.cardStyle5 > :nth-child(2) p {
  margin: 0;
  color: var(--color-text-light);
}

.cardStyle5 > :last-child {
  padding: 0 18px 18px;
}

.cardStyle5 > :last-child .btn {
  max-width: 100%;
}

@media (min-width: 768px) {
  .newsletterArchiveControls {
    grid-template-columns: 1fr 280px;
    align-items: end;
    gap: 16px;
    margin-bottom: 20px;
  }

  .newsletter-archive-grid {
    gap: 20px;
  }

  .newsletter-archive-grid .newsletterCard .cardBody {
    grid-template-columns: 1fr auto;
    column-gap: var(--g-02);
    row-gap: 0.35rem;
    align-items: center;
  }

  .newsletter-archive-grid .newsletterCard .cardContent {
    grid-column: 1;
  }

  .newsletter-archive-grid .newsletterCard .btnContainer {
    grid-column: 2;
    grid-row: 1;
    align-items: center;
    justify-content: flex-end;
    padding-top: 0;
    padding-left: var(--g-02);
    border-top: 0;
    border-left: 1px solid var(--color-border);
  }

  .newsletter-archive-grid .newsletterCard .btnContainer .btn {
    max-width: fit-content;
    width: auto;
  }

  .cardStyle5 {
    display: grid;
    grid-template-columns: 1fr auto;
  }

  .cardStyle5 > :first-child {
    grid-column: 1 / -1;
    gap: 16px;
  }

  .cardStyle5 > :last-child {
    display: flex;
    align-items: center;
    padding: 16px 18px;
  }

  .cardStyle5 > :last-child .btn {
    max-width: fit-content;
  }
}

/* ============================================
   RESPONSIVE
   ============================================ */
@media (max-width: 1024px) {
  .cardGrid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  /* Hero */
  .hero {
    min-height: 420px;
  }

  .hero h1 {
    font-size: 2.4rem;
  }

  .hero-content {
    padding: 3rem 0 2.5rem;
  }

  /* News & Calendar */
  .news-calendar__grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  /* Welcome */
  .cardStyle2 {
    grid-template-columns: 1fr;
  }

  .cardStyle4 {
    grid-template-columns: 100px 1fr;
  }

  .cardStyle2 .cardImg,
  .cardStyle4 .cardImg {
    width: 100%;
    height: 240px;
  }

  .cardStyle2 .cardBody,
  .cardStyle4 .cardBody {
    padding: 1.5rem;
  }

  /* Footer */
  .footer-grid {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }

  .footer-col--logo {
    justify-content: flex-start;
  }

  .footer-bottom {
    flex-direction: column;
    gap: 0.5rem;
  }

  .attachmentsBox .attachmentsFilesTable {
    width: max-content;
    min-width: 100%;
  }

  .attachmentsBox .attachmentsFilesTable th:first-child,
  .attachmentsBox .attachmentsFilesTable td:first-child {
    min-width: 220px;
  }

  .attachmentsBox .attachmentsFilesTable th:nth-child(2),
  .attachmentsBox .attachmentsFilesTable th:nth-child(3),
  .attachmentsBox .attachmentsFilesTable td:nth-child(2),
  .attachmentsBox .attachmentsFilesTable td:nth-child(3) {
    width: 90px;
    min-width: 90px;
    padding-left: 20px;
  }

  .attachmentsFilesGridScroller {
    overflow-x: auto;
    padding-bottom: 4px;
  }
}

@media (max-width: 480px) {
  .cardGrid {
    grid-template-columns: 1fr;
  }

  .hero h1 {
    font-size: 2rem;
  }

  .hero-subtitle {
    font-size: 1rem;
  }

  .hero-actions {
    flex-direction: column;
  }

  .btn {
    width: 100%;
    text-align: center;
  }
}
