:root {
  --bg: #faf8f3;
  --surface: #ffffff;
  --ink: #171717;
  --muted: #5a5a5a;
  --line: #e7dfcf;
  --brand: #c2ac7f;
  --brand-dark: #a89062;
  --accent: #000000;
  --shadow: 0 8px 24px rgba(20, 20, 20, 0.08);
  --radius: 14px;
  --container: 1160px;
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
}

body {
  font-family: "Montserrat", sans-serif;
  color: var(--ink);
  background: linear-gradient(45deg, #ffffff 0%, #fffdea 100%);
  line-height: 1.5;
}

a {
  color: inherit;
  text-decoration: none;
}

.container {
  width: min(100% - 2rem, var(--container));
  margin-inline: auto;
}

.topbar {
  background: #f1eee8;
  color: #24211d;
  border-bottom: 1px solid rgba(194, 172, 127, 0.42);
  font-size: 0.84rem;
  font-weight: 700;
  overflow: hidden;
  transition: max-height 0.42s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.34s ease, transform 0.34s ease, padding 0.42s cubic-bezier(0.22, 1, 0.36, 1), border-bottom-width 0.42s cubic-bezier(0.22, 1, 0.36, 1);
}

.topbar-inner {
  display: flex;
  gap: 0.55rem 1rem;
  justify-content: space-between;
  align-items: center;
  min-height: 40px;
  flex-wrap: wrap;
}

.topbar a,
.topbar-inner > span:not(.topbar-social) {
  display: inline-flex;
  align-items: center;
  gap: 0.42rem;
  line-height: 1.2;
  white-space: nowrap;
}

.topbar a {
  transition: color 0.2s ease;
}

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

.topbar-inner > a::before,
.topbar-inner > span:not(.topbar-social)::before {
  content: "";
  width: 0.48rem;
  height: 0.48rem;
  flex: 0 0 auto;
  border-radius: 999px;
  background: var(--brand);
  box-shadow: 0 0 0 3px rgba(194, 172, 127, 0.16);
}

.alertbar {
  background: #000000;
  color: #ffffff;
  font-weight: 700;
  text-align: center;
  padding: 0.5rem 0;
  overflow: hidden;
  transition: max-height 0.42s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.34s ease, transform 0.34s ease, padding 0.42s cubic-bezier(0.22, 1, 0.36, 1), border-bottom-width 0.42s cubic-bezier(0.22, 1, 0.36, 1);
}

.alertbar-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.alertbar-klarna-logo {
  display: block;
  max-height: 1.25rem;
  width: auto;
}

.alertbar a {
  color: #ffffff;
  /* The Klarna wordmark sits high within its own artwork, so the text needs a nudge
     down to read as level with it rather than floating above the baseline. */
  position: relative;
  top: 2px;
}

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  z-index: 40;
  background: #000000;
  overflow-anchor: none;
  box-shadow: 0 4px 20px rgba(12, 15, 21, 0.08);
  transition: box-shadow 0.38s cubic-bezier(0.22, 1, 0.36, 1);
}

main {
  padding-top: var(--oracle-header-offset, 160px);
}

.nav-wrap {
  background: #000000;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  border-bottom: 1px solid rgba(194, 172, 127, 0.35);
}

.nav-inner {
  min-height: 78px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  transition: min-height 0.38s cubic-bezier(0.22, 1, 0.36, 1);
}

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

.brand-mark {
  width: 42px;
  height: 42px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--accent), #1d7aad);
  color: #ffffff;
  display: grid;
  place-items: center;
  font-family: "Montserrat", sans-serif;
  font-weight: 700;
}

.brand-text strong {
  display: block;
  font-family: "Montserrat", sans-serif;
  letter-spacing: 0.03em;
}

.brand-text small {
  color: #d6d6d6;
  font-size: 0.78rem;
}

.primary-nav {
  display: flex;
  align-items: center;
  gap: 0.3rem;
}

.primary-nav-list {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.primary-nav-list li {
  position: relative;
}

.primary-nav-list .sub-menu {
  display: none;
  position: absolute;
  top: calc(100% + 0.5rem);
  left: 0;
  min-width: 220px;
  background: #ffffff;
  border: 1px solid rgba(194, 172, 127, 0.25);
  border-radius: 16px;
  box-shadow: 0 18px 40px rgba(20, 20, 20, 0.12);
  padding: 0.5rem 0;
  z-index: 50;
}

.primary-nav-list .sub-menu li {
  margin: 0;
}

.primary-nav-list .sub-menu a {
  display: block;
  padding: 0.75rem 1rem;
  color: var(--ink);
  background: none;
  border-radius: 0;
}

.primary-nav-list .sub-menu a:hover {
  background: rgba(194, 172, 127, 0.12);
}

.primary-nav-list li:hover > .sub-menu {
  display: block;
}

.primary-nav a {
  font-weight: 700;
  color: #ffffff;
  padding: 0.6rem 0.9rem;
  border-radius: 10px;
}

.primary-nav a:hover,
.primary-nav .current-menu-item > a,
.primary-nav .current_page_item > a {
  background: rgba(194, 172, 127, 0.2);
}

.primary-nav-list .menu-item-basket {
  margin-left: 0.2rem;
}

.primary-nav-list .menu-item-basket > a {
  background: var(--brand);
  border: 1px solid var(--brand);
  color: #000000;
  font-weight: 800;
}

.primary-nav-list .menu-item-basket > a:hover,
.primary-nav-list .menu-item-basket > a:focus,
.primary-nav-list .menu-item-basket > a:focus-visible,
.primary-nav-list .menu-item-basket.current-menu-item > a,
.primary-nav-list .menu-item-basket.current_page_item > a {
  background: var(--accent-dark);
  border-color: var(--accent-dark);
  color: #ffffff;
}

.course-category-links {
  margin: 1.5rem 0 2rem;
  padding: 1.5rem 1.5rem 1.2rem;
  background: rgba(248, 247, 244, 0.9);
  border: 1px solid rgba(194, 172, 127, 0.25);
  border-radius: 16px;
}

.course-category-links .course-category-label {
  display: block;
  margin-bottom: 0.8rem;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--brand-dark);
}

.course-category-links ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.course-category-links li {
  margin: 0;
}

.course-category-links a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1rem;
  background: #ffffff;
  border: 1px solid rgba(194, 172, 127, 0.25);
  border-radius: 999px;
  color: var(--brand-dark);
  text-decoration: none;
  transition: background 0.25s ease, transform 0.25s ease;
}

.course-category-links a:hover {
  background: rgba(194, 172, 127, 0.12);
  transform: translateY(-1px);
}

.course-date-selector {
  grid-column: 1 / -1;
  margin: 1.25rem 0 1rem;
}

.course-date-selector label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 700;
  color: var(--brand-dark);
}

.course-date-selector select {
  width: 100%;
  max-width: 100%;
  padding: 0.85rem 1rem;
  border: 1px solid rgba(17, 17, 17, 0.12);
  border-radius: 12px;
  background: #ffffff;
  color: var(--ink);
  font-size: 0.95rem;
}

.course-date-selector select:focus {
  outline: none;
  border-color: rgba(194, 172, 127, 0.7);
  box-shadow: 0 0 0 3px rgba(194, 172, 127, 0.12);
}

.course-date-tbc {
  grid-column: 1 / -1;
  margin: 1.25rem 0 1rem;
  font-weight: 700;
  color: var(--brand-dark);
}

.course-date-tbc a {
  color: inherit;
  text-decoration: underline;
}

.course-price-tbc {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--brand-dark);
}

.course-enquiry-panel {
  margin: 1.5rem 0;
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--brand);
  border-radius: var(--radius);
  background: var(--bg);
}

.course-enquiry-heading {
  margin: 0 0 0.5rem;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--brand-dark);
}

.course-enquiry-panel p {
  margin: 0 0 0.85rem;
}

.course-enquiry-phone {
  margin: 0.85rem 0 0;
  font-size: 0.9rem;
}

.course-next-date {
  margin: 0.35rem 0 0.75rem;
  color: var(--brand-dark);
  font-size: 0.88rem;
  font-weight: 700;
}

.course-dates-panel {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.25rem;
  margin: 1.5rem 0 2rem;
}

.course-dates-panel h3 {
  margin: 0 0 0.75rem;
  font-size: 1rem;
}

.course-dates-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.6rem;
  padding: 0;
  margin: 0;
  list-style: none;
}

.course-dates-list li {
  padding: 0.7rem 0.85rem;
  border: 1px solid rgba(194, 172, 127, 0.28);
  border-radius: 10px;
  background: #fffdf8;
  color: var(--ink);
  font-weight: 700;
  font-size: 0.9rem;
}

.mobile-toggle {
  display: none;
}

.mobile-nav-actions {
  display: none;
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.section {
  padding: 4.5rem 0;
}

/* Ensure default WooCommerce shop output has body spacing and container padding. */
body.woocommerce-shop main,
body.tax-product_cat main {
  padding: calc(var(--oracle-header-offset, 160px) + 1rem) 0 2rem;
}

body.woocommerce-shop main > .page-title,
body.woocommerce-shop main > .woocommerce-notices-wrapper,
body.woocommerce-shop main > ul.products,
body.woocommerce-shop main > .oracle-fallback-grid {
  width: min(100% - 2rem, var(--container));
  margin-inline: auto;
}

.hero-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 2rem;
  align-items: center;
}

.kicker {
  font-weight: 700;
  text-transform: uppercase;
  color: var(--brand-dark);
  letter-spacing: 0.08em;
  font-size: 0.8rem;
  margin: 0;
}

h1,
h2,
h3,
h4 {
  font-family: "Montserrat", sans-serif;
  margin-top: 0;
}

h1 {
  font-size: clamp(2rem, 4vw, 3.2rem);
  line-height: 1.1;
  margin-bottom: 1rem;
}

.lead {
  color: var(--muted);
  max-width: 60ch;
}

.hero-actions {
  margin-top: 1.5rem;
  display: flex;
  gap: 0.8rem;
  flex-wrap: wrap;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.8rem 1.1rem;
  border-radius: 10px;
  font-weight: 700;
  border: 1px solid transparent;
}

.btn-primary {
  background: var(--brand);
  color: #ffffff;
}

.btn-primary:hover {
  background: var(--brand-dark);
}

.btn-ghost {
  border-color: var(--line);
  background: #ffffff;
}

.hero-panel {
  padding: 1.4rem;
  border-radius: var(--radius);
  background: var(--surface);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
}

.hero-panel ul {
  margin: 0;
  padding-left: 1rem;
}

.hero-image {
  width: 100%;
  height: auto;
  max-height: 420px;
  object-fit: contain;
  border-radius: 12px;
  display: block;
}

@media (max-width: 980px) {
  .hero-image {
    max-height: 360px;
  }
}

@media (max-width: 640px) {
  .hero-image {
    max-height: 300px;
  }
}

.section-alt {
  background: #f6f2e8;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.section-heading {
  margin-bottom: 1rem;
}

.news-view-all-link {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.35rem;
  font-weight: 700;
  color: var(--brand-dark);
  text-decoration: none;
}

.news-view-all-link:hover,
.news-view-all-link:focus-visible {
  text-decoration: underline;
}

.cards-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.card {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 1.2rem;
  box-shadow: var(--shadow);
}

.card a {
  color: var(--brand-dark);
  font-weight: 700;
}

.news-slider-section {
  overflow: hidden;
}

.news-slider {
  --news-gap: 1rem;
  --news-per-view: 3;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: stretch;
  gap: 0.7rem;
}

.news-slider-viewport {
  overflow: hidden;
}

.news-slider-track {
  display: flex;
  gap: var(--news-gap);
  will-change: transform;
}

.news-slide {
  flex: 0 0 calc((100% - (var(--news-gap) * (var(--news-per-view) - 1))) / var(--news-per-view));
  display: flex;
  flex-direction: column;
  box-shadow: none;
}

.news-slide-image-link {
  display: block;
  margin-bottom: 0.7rem;
}

.news-slide-image {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: 12px;
  border: 1px solid rgba(0, 0, 0, 0.06);
}

.news-slide .card-link {
  margin-top: auto;
}

.news-slider-arrow {
  align-self: center;
  width: 58px;
  height: 58px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  border: 2px solid rgba(0, 0, 0, 0.32);
  background: #ffffff;
  color: #101010;
  font-size: 1.65rem;
  font-weight: 900;
  line-height: 1;
  overflow: visible;
  cursor: pointer;
  box-shadow: none;
  transition: transform 0.2s ease, background 0.2s ease;
}

.news-slider-arrow > span {
  display: none;
}

.news-slider-arrow::before {
  content: "";
  width: 13px;
  height: 13px;
  border-top: 4px solid currentColor;
  border-right: 4px solid currentColor;
  display: block;
  box-sizing: border-box;
}

.news-slider-arrow--prev::before {
  transform: rotate(-135deg);
  margin-left: 2px;
}

.news-slider-arrow--next::before {
  transform: rotate(45deg);
  margin-right: 2px;
}

.news-slider-arrow:hover,
.news-slider-arrow:focus-visible {
  transform: translateY(-1px);
  background: #f8f2e4;
}

.news-slider-arrow[disabled] {
  opacity: 0.45;
  cursor: not-allowed;
}

@media (max-width: 980px) {
  .news-slider {
    --news-per-view: 2;
  }
}

@media (max-width: 700px) {
  .news-slider {
    --news-per-view: 1;
    grid-template-columns: 1fr;
    gap: 0.85rem;
  }

  .news-slider-arrow {
    width: 52px;
    height: 52px;
    font-size: 1.45rem;
  }

  .news-slider-arrow::before {
    width: 12px;
    height: 12px;
    border-top-width: 3.5px;
    border-right-width: 3.5px;
  }

  .news-slider-arrow--prev,
  .news-slider-arrow--next {
    justify-self: start;
  }
}

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #ffffff;
  padding: 1rem;
  box-shadow: var(--shadow);
}

.woocommerce ul.products li.product .button,
.woocommerce-page ul.products li.product .button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt {
  background: var(--brand);
  color: #ffffff;
  border-radius: 10px;
}

.oracle-course-notice {
  border-left: 4px solid var(--brand);
  background: #f6f2e8;
  padding: 0.75rem 0.9rem;
  margin: 1rem 0;
  border-radius: 8px;
  color: #0f2f4a;
  font-weight: 600;
}

.cta-band {
  background: linear-gradient(100deg, #000000 0%, #1a1a1a 60%, #2c2b2d 100%);
  color: #f9fbff;
}

.cta-band-inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.site-footer {
  padding-top: 3rem;
  background: #000000;
  color: #ffffff;
}

/* ============================================================
   ORACLE — CART AND CHECKOUT
   ============================================================ */
.woocommerce-cart .section .container,
.woocommerce-checkout .section .container {
  max-width: var(--container);
}

.woocommerce-cart .hero.section {
  padding: 1.35rem 0 1rem;
}

.woocommerce-cart .hero-grid {
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
}

.woocommerce-cart .hero .kicker {
  margin-bottom: 0.25rem;
}

.woocommerce-cart .hero h1 {
  margin-bottom: 0;
  font-size: clamp(2rem, 4vw, 3rem);
}

.woocommerce-cart .hero .lead,
.woocommerce-cart .hero-panel {
  display: none;
}

.woocommerce-cart main > .section:not(.hero):first-of-type {
  padding-top: 1.25rem;
}

.woocommerce-cart .page-stack {
  gap: 1.25rem;
}

.woocommerce-cart .siwk-button {
  display: none !important;
}

.woocommerce-cart klarna-express-button {
  display: block;
  width: 100% !important;
  min-height: 50px;
  margin: 0 0 0.75rem;
}

/* Basket and checkout are tables and totals, not prose, so they use the full container
   width rather than the 800px reading measure that standard pages get. */
.woocommerce-cart .page-article,
.woocommerce-checkout .page-article {
  width: 100%;
  max-width: none;
  padding: 0;
}

.woocommerce-checkout .content-panel {
  border: 0;
  background: transparent;
  box-shadow: none;
  padding: 0;
}

.woocommerce-cart .woocommerce,
.woocommerce-checkout .woocommerce {
  background: rgba(255, 255, 255, 0.98);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.75rem;
  color: var(--ink);
}

.woocommerce-checkout .woocommerce {
  width: 100%;
}

.oracle-booking-intro {
  margin-bottom: 1.5rem;
  padding: 1.25rem;
  border: 1px solid rgba(194, 172, 127, 0.32);
  border-radius: var(--radius);
  background: linear-gradient(180deg, #fffdf8 0%, #ffffff 100%);
}

.oracle-booking-intro .kicker {
  margin-bottom: 0.35rem;
}

.oracle-booking-intro h2 {
  margin: 0 0 0.45rem;
  font-size: clamp(1.45rem, 3vw, 2rem);
}

.oracle-booking-intro p:last-child {
  margin-bottom: 0;
  color: var(--muted);
}

.woocommerce-checkout form.checkout {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(340px, 0.75fr);
  gap: 1.5rem;
  align-items: start;
}

.woocommerce-cart .woocommerce h1,
.woocommerce-cart .woocommerce h2,
.woocommerce-cart .woocommerce h3,
.woocommerce-checkout .woocommerce h1,
.woocommerce-checkout .woocommerce h2,
.woocommerce-checkout .woocommerce h3 {
  color: var(--ink);
}
.woocommerce-cart .woocommerce form .form-row,
.woocommerce-checkout .woocommerce form .form-row {
  margin-bottom: 1.25rem;
}
.woocommerce-cart .woocommerce .button,
.woocommerce-checkout .woocommerce .button,
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
  border-radius: 10px;
  font-weight: 700;
  letter-spacing: 0.01em;
}

.woocommerce-cart table.shop_table,
.woocommerce-checkout table.shop_table {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  background: #ffffff;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
  border-color: var(--line);
  padding: 1rem;
}

.oracle-checkout-item-name {
  display: block;
  color: var(--brand-dark);
  font-weight: 800;
  margin-bottom: 0.35rem;
}

.oracle-checkout-remove-item {
  display: inline-flex;
  align-items: center;
  width: max-content;
  margin-top: 0.35rem;
  padding: 0.35rem 0.55rem;
  border: 1px solid rgba(23, 23, 23, 0.12);
  border-radius: 999px;
  background: #ffffff;
  color: #7a1f1f;
  font-size: 0.76rem;
  font-weight: 800;
  line-height: 1;
}

.oracle-checkout-remove-item:hover,
.oracle-checkout-remove-item:focus-visible {
  border-color: #7a1f1f;
  color: #7a1f1f;
}

.woocommerce-cart .cart_totals,
.woocommerce-checkout-review-order {
  background: #fffdf8;
  border: 1px solid rgba(194, 172, 127, 0.35);
  border-radius: var(--radius);
  padding: 1.25rem;
}

.woocommerce form .form-row {
  padding: 0;
  margin: 0 0 1rem;
}

.woocommerce form .form-row label {
  color: var(--ink);
  font-weight: 700;
  margin-bottom: 0.35rem;
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection--single {
  min-height: 46px;
  border: 1px solid rgba(17, 17, 17, 0.15);
  border-radius: 10px;
  background: #ffffff;
  color: var(--ink);
  padding: 0.75rem 0.9rem;
}

.woocommerce .select2-container .select2-selection--single .select2-selection__rendered {
  line-height: 28px;
  padding-left: 0;
}

.woocommerce-checkout .col2-set {
  grid-column: 1;
  grid-row: 1;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  width: 100%;
}

.woocommerce-checkout .col2-set .col-1,
.woocommerce-checkout .col2-set .col-2 {
  width: 100%;
  float: none;
  padding: 1.25rem;
  border: 1px solid rgba(194, 172, 127, 0.24);
  border-radius: var(--radius);
  background: #fffdf8;
}

.woocommerce-checkout h3,
.woocommerce-cart .cart_totals h2 {
  font-size: 1.15rem;
  margin: 0 0 1rem;
}

.woocommerce-checkout #order_review_heading {
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  margin: 0;
  padding: 1.1rem 1.25rem;
  border: 1px solid rgba(194, 172, 127, 0.35);
  border-bottom: 0;
  border-radius: var(--radius) var(--radius) 0 0;
  background: #fffdf8;
}

.woocommerce-checkout #order_review {
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  margin-top: 5rem;
}

.woocommerce-checkout #payment {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
}

.woocommerce-checkout #payment div.payment_box {
  background: #f8f4eb;
  color: var(--ink);
}

.woocommerce-checkout #payment div.payment_box::before {
  border-bottom-color: #f8f4eb;
}

.woocommerce #payment #place_order,
.woocommerce-page #payment #place_order,
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
  width: 100%;
  border-radius: 10px;
  background: var(--accent);
  color: #ffffff;
  font-weight: 800;
  padding: 0.95rem 1.2rem;
}

.woocommerce-info,
.woocommerce-message,
.woocommerce-error {
  border: 1px solid rgba(194, 172, 127, 0.32);
  border-top-color: var(--brand);
  border-top-width: 3px;
  border-radius: 10px;
  background: #ffffff;
  color: var(--ink);
  box-shadow: var(--shadow);
}

.woocommerce-info::before,
.woocommerce-message::before,
.woocommerce-error::before {
  color: var(--brand-dark);
}

.woocommerce-message .button,
.woocommerce-info .button {
  border-radius: 8px;
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 1rem;
}

.site-footer h3,
.site-footer h4 {
  color: #ffffff;
}

.footer-brand {
  display: grid;
  align-content: start;
  gap: 0.75rem;
}

.footer-logo-link {
  display: inline-flex;
  width: max-content;
  max-width: 100%;
}

.footer-logo {
  display: block;
  width: min(260px, 100%);
  height: auto;
  max-height: 74px;
  object-fit: contain;
}

.footer-brand h4 {
  margin-top: 0.25rem;
}

.site-footer ul,
.site-footer .menu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.3rem;
}

.legal-row {
  margin-top: 2rem;
  padding: 1rem 0 2rem;
  border-top: 1px solid rgba(255, 255, 255, 0.18);
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.legal-row div {
  display: flex;
  gap: 1rem;
}

.page-stack {
  display: grid;
  gap: 1.5rem;
}

.two-col-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.stat-card,
.content-panel {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.stat-card {
  padding: 1.25rem;
}

.stat-card strong {
  display: block;
  font-size: 2rem;
  line-height: 1;
  margin-bottom: 0.5rem;
  color: var(--brand-dark);
}

.content-panel {
  padding: 1.5rem;
}

.contact-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.9fr);
  gap: 1rem;
  align-items: start;
}

.contact-details-stack {
  display: grid;
  gap: 1rem;
}

.contact-form-panel h2,
.contact-details-stack h2 {
  margin-bottom: 0.75rem;
}

.contact-form-shell {
  margin-top: 1.25rem;
  padding: 1.25rem;
  border: 1px solid var(--line);
  border-radius: calc(var(--radius) - 4px);
  background: linear-gradient(180deg, #fffdf8 0%, #ffffff 100%);
}

.contact-form-shell .wpcf7 {
  width: 100%;
}

.contact-form-shell .wpcf7 form {
  display: grid;
  gap: 1rem;
}

.contact-form-shell .wpcf7-form label {
  display: grid;
  gap: 0.45rem;
  font-weight: 700;
  color: var(--ink);
}

.contact-form-shell .wpcf7-form-control-wrap {
  display: block;
}

.contact-form-shell input[type="text"],
.contact-form-shell input[type="email"],
.contact-form-shell input[type="tel"],
.contact-form-shell textarea {
  width: 100%;
  padding: 0.9rem 1rem;
  border: 1px solid rgba(194, 172, 127, 0.42);
  border-radius: 12px;
  background: #ffffff;
  color: var(--ink);
  font: inherit;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.contact-form-shell textarea {
  min-height: 180px;
  resize: vertical;
}

.contact-form-shell input[type="text"]:focus,
.contact-form-shell input[type="email"]:focus,
.contact-form-shell input[type="tel"]:focus,
.contact-form-shell textarea:focus {
  outline: none;
  border-color: var(--brand-dark);
  box-shadow: 0 0 0 4px rgba(194, 172, 127, 0.16);
}

.contact-form-shell .wpcf7-acceptance {
  display: block;
}

.contact-form-shell .wpcf7-list-item {
  margin: 0;
}

.contact-form-shell .wpcf7-list-item label {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  font-weight: 600;
}

.contact-form-shell .wpcf7-list-item input {
  margin-top: 0.18rem;
}

/* CF7 renders the submit as <input>, so it can't take the .btn class. Mirror .btn +
   .btn-primary here. appearance:none is needed for iOS Safari to honour the background
   and radius on an input. font-weight follows the font shorthand, which would reset it. */
.contact-form-shell .wpcf7-submit {
  min-width: 180px;
  appearance: none;
  -webkit-appearance: none;
  padding: 0.8rem 1.1rem;
  border: 1px solid transparent;
  border-radius: 10px;
  background: var(--brand);
  color: #ffffff;
  font: inherit;
  font-weight: 700;
  text-align: center;
  cursor: pointer;
  transition: background 0.2s ease;
}

.contact-form-shell .wpcf7-submit:hover,
.contact-form-shell .wpcf7-submit:focus-visible {
  background: var(--brand-dark);
}

.contact-form-shell .wpcf7-submit:disabled {
  cursor: not-allowed;
  opacity: 0.6;
}

.contact-form-shell .wpcf7-spinner {
  margin: 0.7rem 0 0;
}

.contact-form-shell .wpcf7-not-valid-tip,
.contact-form-shell .wpcf7 form .wpcf7-response-output,
.contact-form-status {
  font-size: 0.95rem;
}

.contact-form-status {
  margin: 0;
  padding: 1rem 1.1rem;
  border-radius: 12px;
  background: rgba(194, 172, 127, 0.16);
}

.contact-method-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.8rem;
}

.contact-method-list li {
  padding-bottom: 0.8rem;
  border-bottom: 1px solid rgba(194, 172, 127, 0.22);
}

.contact-method-list li:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.feature-list {
  margin: 0;
  padding-left: 1.2rem;
  display: grid;
  gap: 0.7rem;
}

.tag-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 0.6rem;
  flex-wrap: wrap;
}

.tag-list li {
  padding: 0.45rem 0.8rem;
  border-radius: 999px;
  background: rgba(194, 172, 127, 0.16);
  color: var(--ink);
  font-weight: 700;
}

.inline-label {
  margin-bottom: 0.75rem;
  font-weight: 700;
  color: var(--brand-dark);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.82rem;
}

.legal-copy {
  max-width: 860px;
}

.legal-copy h2 {
  margin-top: 2rem;
  margin-bottom: 0.8rem;
}

.legal-copy ul {
  padding-left: 1.25rem;
}

/* Blog & Article Styles */

.blog-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}

.blog-post-card {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 1.2rem;
  box-shadow: var(--shadow);
  transition: transform 0.2s, box-shadow 0.2s;
}

.blog-post-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(17, 27, 45, 0.13);
}

.post-meta {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
  font-size: 0.85rem;
}

.post-date {
  color: var(--muted);
  font-weight: 500;
}

.post-category {
  display: inline-block;
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  color: #000000;
  padding: 0.25rem 0.6rem;
  border-radius: 6px;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.blog-post-card h3 {
  margin: 0.75rem 0;
  font-size: 1.35rem;
  line-height: 1.25;
}

.blog-post-card h3 a {
  color: var(--ink);
  transition: color 0.2s;
}

.blog-post-card h3 a:hover {
  color: var(--brand);
}

.blog-post-card p {
  color: var(--muted);
  margin: 0.75rem 0;
  font-size: 0.95rem;
  line-height: 1.6;
}

.post-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--line);
  font-size: 0.85rem;
}

.post-author {
  color: var(--muted);
}

.read-more {
  color: var(--brand);
  font-weight: 700;
  transition: color 0.2s;
}

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

.blog-section {
  padding: 3rem;
  max-width: 1200px;
  margin: 0 auto;
}

.section-header {
  text-align: center;
  margin-bottom: 2.5rem;
}

.section-header h2 {
  font-size: 2.2rem;
  margin-bottom: 0.5rem;
  color: var(--ink);
}

.section-header p {
  color: var(--muted);
  font-size: 1.1rem;
  max-width: 500px;
  margin: 0 auto;
}

/* Article/Post Page Styles */

.blog-article,
.page-article {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 1rem;
}

/* Individual blog posts span the full .container width so their left and right edges
   line up with the header and footer. Scoped to .single-post so standard pages, which
   share .page-article, keep the narrower measure. */
.single-post .page-article,
.single-post .prose {
  width: 100%;
  max-width: none;
  padding: 0;
}

.post-header-meta {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 1.5rem;
  font-size: 0.9rem;
  color: var(--muted);
}

.post-separator {
  color: var(--line);
}

.post-content {
  font-size: 1.05rem;
  line-height: 1.8;
  color: var(--ink);
  margin: 2rem 0;
}

.post-content h2 {
  margin-top: 1.8rem;
  margin-bottom: 0.75rem;
  color: var(--ink);
}

.post-content h3 {
  margin-top: 1.5rem;
  margin-bottom: 0.6rem;
}

.post-content p {
  margin-bottom: 1rem;
}

.post-content ul,
.post-content ol {
  margin-bottom: 1rem;
  padding-left: 2rem;
}

.post-content li {
  margin-bottom: 0.5rem;
}

.post-footer {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--line);
}

.post-tags {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
  font-size: 0.9rem;
}

.post-tags a {
  display: inline-block;
  background: #f0f5f9;
  color: var(--accent);
  padding: 0.35rem 0.75rem;
  border-radius: 6px;
  transition: background 0.2s;
}

.post-tags a:hover {
  background: #e0ebf5;
}

/* Pagination */

.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 2rem;
  margin: 2rem 0;
  flex-wrap: wrap;
}

.page-info {
  color: var(--muted);
  font-size: 0.9rem;
}

.page-links {
  display: flex;
  gap: 0.5rem;
}

.page-links a,
.page-links .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--ink);
  transition: all 0.2s;
}

.page-links a:hover {
  background: var(--brand);
  color: #ffffff;
  border-color: var(--brand);
}

.page-links .page-numbers.current {
  background: var(--brand);
  color: #ffffff;
  border-color: var(--brand);
}

/* Related Posts */

.related-posts {
  margin: 3rem 0;
  padding: 2rem 0;
}

.related-posts .blog-grid {
  margin-top: 1.5rem;
}

/* No Posts Message */

.no-posts {
  text-align: center;
  padding: 2rem;
  color: var(--muted);
}

@media (max-width: 980px) {
  .hero-grid,
  .cards-grid,
  .cards-grid--4,
  .footer-grid,
  .two-col-grid,
  .blog-grid {
    grid-template-columns: 1fr;
  }

  .blog-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .mobile-toggle {
    display: inline-flex;
    position: relative;
    z-index: 2;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: 1px solid var(--line);
    background: #ffffff;
    border-radius: 10px;
    padding: 0;
  }

  .mobile-toggle-icon,
  .mobile-toggle-icon::before,
  .mobile-toggle-icon::after {
    display: block;
    width: 20px;
    height: 2px;
    border-radius: 999px;
    background: #000000;
    transition: transform 0.2s ease, opacity 0.2s ease;
  }

  .mobile-toggle-icon {
    position: relative;
  }

  .mobile-toggle-icon::before,
  .mobile-toggle-icon::after {
    content: "";
    position: absolute;
    left: 0;
  }

  .mobile-toggle-icon::before {
    transform: translateY(-7px);
  }

  .mobile-toggle-icon::after {
    transform: translateY(7px);
  }

  .mobile-toggle[aria-expanded="true"] .mobile-toggle-icon {
    background: transparent;
  }

  .mobile-toggle[aria-expanded="true"] .mobile-toggle-icon::before {
    transform: rotate(45deg);
  }

  .mobile-toggle[aria-expanded="true"] .mobile-toggle-icon::after {
    transform: rotate(-45deg);
  }

  .nav-wrap {
    position: relative;
  }

  .nav-inner {
    gap: 0.75rem;
  }

  .brand {
    flex: 1 1 auto;
    min-width: 0;
    max-width: calc(100% - 5.5rem);
  }

  .site-header .brand-logo,
  .woocommerce .site-header .brand-logo,
  .woocommerce-page .site-header .brand-logo {
    height: 40px;
    max-width: 100%;
    object-fit: contain;
  }

  .brand-text {
    display: none;
  }

  .primary-nav {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    background: #000000;
    border-top: 1px solid rgba(194, 172, 127, 0.2);
    border-bottom: 1px solid rgba(194, 172, 127, 0.35);
    box-shadow: 0 20px 38px rgba(0, 0, 0, 0.22);
    height: calc(100vh - 58px);
    max-height: calc(100vh - 58px);
    overflow-y: auto;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.4rem;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-0.5rem);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
    visibility: hidden;
    z-index: 60;
  }

  .primary-nav.is-open {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
    visibility: visible;
  }

  .primary-nav::before {
    content: "Menu";
    color: var(--brand);
    display: block;
    font-family: "Montserrat", sans-serif;
    font-size: 0.8rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    margin: 0.15rem 0 0.35rem;
    text-transform: uppercase;
  }

  .primary-nav-list {
    align-items: stretch;
    flex-direction: column;
    gap: 0.4rem;
    list-style: none;
    margin: 0;
    padding: 0;
    width: 100%;
  }

  .primary-nav-list li {
    width: 100%;
  }

  .primary-nav a {
    display: flex;
    align-items: center;
    min-height: 48px;
    width: 100%;
    border: 1px solid rgba(194, 172, 127, 0.35);
    border-radius: 10px;
    padding: 0.85rem 1rem;
    margin-bottom: 0;
  }

  .primary-nav a:hover,
  .primary-nav a:focus,
  .primary-nav a:focus-visible,
  .primary-nav .current-menu-item > a,
  .primary-nav .current_page_item > a {
    background: rgba(194, 172, 127, 0.22);
  }

  .primary-nav-list .menu-item-basket {
    margin-left: 0;
  }

  .primary-nav-list .menu-item-basket > a {
    justify-content: center;
    background: var(--brand);
    border-color: var(--brand);
    color: #000000;
  }

  .primary-nav-list .menu-item-basket > a:hover,
  .primary-nav-list .menu-item-basket > a:focus,
  .primary-nav-list .menu-item-basket > a:focus-visible,
  .primary-nav-list .menu-item-basket.current-menu-item > a,
  .primary-nav-list .menu-item-basket.current_page_item > a {
    background: var(--accent-dark);
    border-color: var(--accent-dark);
    color: #ffffff;
  }

  .primary-nav a:focus-visible,
  .mobile-toggle:focus-visible {
    outline: 2px solid var(--brand);
    outline-offset: 3px;
  }

  .primary-nav-list .sub-menu {
    position: static;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
    padding: 0.35rem 0 0 0.75rem;
    border: 0;
    box-shadow: none;
    background: transparent;
  }

  .primary-nav-list .sub-menu a {
    min-height: 44px;
    color: #ffffff;
    background: rgba(255, 255, 255, 0.06);
  }

  .mobile-nav-actions {
    display: grid;
    gap: 0.65rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(194, 172, 127, 0.24);
  }

  .mobile-nav-action {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    width: 100%;
    border: 1px solid rgba(194, 172, 127, 0.45);
    border-radius: 10px;
    color: #ffffff;
    font-weight: 800;
    text-align: center;
  }

  .mobile-nav-action--primary {
    background: var(--brand);
    border-color: var(--brand);
    color: #000000;
  }
}

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

  .courses-list,
  .two-col-grid,
  .stats-grid {
    grid-template-columns: 1fr;
  }

  .blog-post-card {
    padding: 1rem;
  }

  .section-header h2 {
    font-size: 1.6rem;
  }

  .post-footer {
    flex-direction: column;
  }
}

/* ============================================================
   ORACLE — STATS BAND
   ============================================================ */
.stats-band {
  background: var(--brand);
  color: #ffffff;
  padding: 2rem 0;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  text-align: center;
}

.stat-item strong {
  display: block;
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1;
  font-family: 'Montserrat', sans-serif;
}

.stat-item span {
  font-size: 0.9rem;
  opacity: 0.85;
  margin-top: 0.25rem;
  display: block;
}

/* ============================================================
   ORACLE — ABOUT BAND
   ============================================================ */
.about-band-grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 3rem;
  align-items: center;
}

.about-band-content p {
  margin-bottom: 1rem;
  color: var(--muted);
}

.about-band-accreditations {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(0.9rem, 1.8vw, 1.25rem);
  align-items: stretch;
}

.accreditation-box {
  display: flex;
  min-height: 176px;
  width: 100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--brand);
  border-radius: var(--radius);
  padding: clamp(1.15rem, 2vw, 1.5rem);
  text-align: center;
  background: #ffffff;
}

.accreditation-logo {
  display: block;
  width: auto;
  max-width: min(160px, 82%);
  max-height: 64px;
  margin: 0 auto 0.85rem;
  object-fit: contain;
}

/* Square badges (e.g. Ofsted Good Provider) would render tiny against the 64px cap that
   suits the landscape wordmarks, so give them more height. */
.accreditation-logo--badge {
  max-height: 96px;
}

.accreditation-label {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  margin: 0;
}

.accreditation-grade {
  font-size: 1.6rem;
  font-weight: 800;
  color: var(--brand-dark);
  margin: 0.25rem 0 0;
  font-family: 'Montserrat', sans-serif;
}

.accreditation-year {
  font-size: 0.85rem;
  color: var(--muted);
  margin: 0;
}

/* ============================================================
   ORACLE — PROGRAMMES GRID
   ============================================================ */
.programmes-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.programme-item {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.4rem;
  box-shadow: var(--shadow);
}

.programme-item h3 {
  font-size: 1rem;
  font-weight: 700;
  margin: 0 0 0.5rem;
}

.programme-item p {
  font-size: 0.9rem;
  color: var(--muted);
  margin: 0 0 0.75rem;
}

.programme-item a {
  font-weight: 700;
  color: var(--brand-dark);
  font-size: 0.9rem;
}

/* ============================================================
   ORACLE — CTA BAND ACTIONS
   ============================================================ */
.cta-band-actions {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.btn-ghost-light {
  border: 2px solid rgba(255,255,255,0.5);
  color: #ffffff;
  background: transparent;
  padding: 0.7rem 1.6rem;
  border-radius: 10px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
}

.btn-ghost-light:hover {
  background: rgba(255,255,255,0.12);
  border-color: #ffffff;
}

/* ============================================================
   ORACLE — CARDS GRID 4-UP
   ============================================================ */
.cards-grid--4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.card-icon {
  font-size: 1.8rem;
  margin-bottom: 0.5rem;
}

.card-meta {
  font-size: 0.8rem;
  color: var(--muted);
  margin: 0 0 0.4rem;
}

/* ============================================================
   ORACLE — COURSES GRID (WP / WOOCOMMERCE)
   ============================================================ */
.courses-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
  width: 100%;
  margin-bottom: 2rem;
}

.courses-grid--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.courses-grid--wp {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.courses-grid--shop {
  gap: 1.75rem;
}

.course-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.75rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid rgba(23, 23, 23, 0.08);
}

.course-count {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ink);
}

.course-filter-row,
.course-sort-row,
.course-controls-row {
  width: 100%;
  margin-bottom: 1rem;
  padding: 1rem;
  border: 1px solid rgba(194, 172, 127, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.72);
}

.course-sort-row,
.course-controls-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(220px, 0.45fr);
  align-items: start;
  gap: 1rem;
  margin-bottom: 1.75rem;
  box-sizing: border-box;
}

.course-sort-row::after,
.course-controls-row::after {
  content: none;
}

.course-sort-row .woocommerce-notices-wrapper:empty,
.course-controls-row .woocommerce-notices-wrapper:empty {
  display: none;
}

.course-sort-row .woocommerce-result-count,
.course-sort-row .woocommerce-ordering,
.course-controls-row .woocommerce-result-count,
.course-controls-row .woocommerce-ordering {
  float: none;
  margin: 0;
}

.course-sort-row .woocommerce-result-count,
.course-controls-row .woocommerce-result-count {
  color: var(--ink);
  font-weight: 700;
}

.course-sort-row .woocommerce-ordering,
.course-controls-row .woocommerce-ordering {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.45rem;
  justify-self: stretch;
  width: 100%;
  min-width: 0;
}

.course-sort-row .woocommerce-ordering::before,
.course-controls-row .woocommerce-ordering::before {
  content: "Sort";
  display: block;
  color: var(--brand-dark);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: uppercase;
}

.course-sort-row .woocommerce-ordering::after,
.course-controls-row .woocommerce-ordering::after {
  content: "";
  position: absolute;
  right: 0.95rem;
  bottom: 0.95rem;
  width: 0.58rem;
  height: 0.58rem;
  border-right: 2px solid var(--brand-dark);
  border-bottom: 2px solid var(--brand-dark);
  pointer-events: none;
  transform: rotate(45deg);
}

.course-sort-row .woocommerce-ordering select,
.course-controls-row .woocommerce-ordering select {
  width: 100%;
  min-width: 220px;
  min-height: 42px;
  appearance: none;
  border: 1px solid rgba(194, 172, 127, 0.42);
  border-radius: 999px;
  background:
    linear-gradient(180deg, #ffffff 0%, #fffdf8 100%);
  color: var(--ink);
  font: inherit;
  font-size: 0.84rem;
  font-weight: 700;
  line-height: 1.15;
  padding: 0.62rem 2.45rem 0.62rem 0.9rem;
  box-shadow: 0 8px 18px rgba(20, 20, 20, 0.06);
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.course-sort-row .woocommerce-ordering select:hover,
.course-controls-row .woocommerce-ordering select:hover {
  border-color: var(--brand-dark);
  transform: translateY(-1px);
}

.course-sort-row .woocommerce-ordering select:focus,
.course-sort-row .woocommerce-ordering select:focus-visible,
.course-controls-row .woocommerce-ordering select:focus,
.course-controls-row .woocommerce-ordering select:focus-visible {
  outline: none;
  border-color: var(--brand-dark);
  box-shadow: 0 0 0 3px rgba(194, 172, 127, 0.18), 0 8px 18px rgba(20, 20, 20, 0.06);
}

.course-results-pagination-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  margin: 0 0 2rem;
  padding: 1rem;
  border: 1px solid rgba(194, 172, 127, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.72);
}

.course-results-pagination-row .woocommerce-result-count {
  float: none;
  margin: 0;
  color: var(--ink);
  font-size: 0.84rem;
  font-weight: 700;
  line-height: 1.15;
}

.course-results-pagination-row .woocommerce-pagination {
  margin: 0;
}

.course-results-pagination-row.is-filtered .woocommerce-pagination {
  display: none;
}

.course-results-pagination-row .woocommerce-pagination ul {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  border: 0;
}

.course-results-pagination-row .woocommerce-pagination ul li {
  border: 0;
}

.course-results-pagination-row .woocommerce-pagination ul li a,
.course-results-pagination-row .woocommerce-pagination ul li span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  min-height: 42px;
  padding: 0.62rem 0.9rem;
  border: 1px solid rgba(194, 172, 127, 0.42);
  border-radius: 999px;
  background: linear-gradient(180deg, #ffffff 0%, #fffdf8 100%);
  color: var(--ink);
  font-size: 0.84rem;
  font-weight: 700;
  line-height: 1.15;
  box-shadow: 0 8px 18px rgba(20, 20, 20, 0.06);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.course-results-pagination-row .woocommerce-pagination ul li span.current,
.course-results-pagination-row .woocommerce-pagination ul li a:hover,
.course-results-pagination-row .woocommerce-pagination ul li a:focus-visible {
  border-color: var(--brand);
  background: var(--brand);
  color: #000000;
  transform: translateY(-1px);
}

.course-category-links--inline {
  display: flex;
  align-items: stretch;
  flex-direction: column;
  gap: 0.45rem;
  flex-wrap: nowrap;
  min-width: 0;
}

.course-controls-row .course-category-links {
  justify-self: stretch;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

@media (min-width: 641px) {
  .course-controls-row {
    padding: 1rem;
  }

  .course-controls-row .course-category-links {
    overflow: visible;
  }
}

.course-category-links--inline .course-category-label {
  font-weight: 700;
  color: var(--ink);
}

.course-controls-row .course-category-links--inline .course-category-label {
  display: block;
  margin: 0;
  color: var(--brand-dark);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: uppercase;
}

.course-category-links--inline ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  min-width: 0;
}

.course-category-links--inline li a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0.62rem 0.9rem;
  border: 1px solid rgba(194, 172, 127, 0.42);
  border-radius: 999px;
  background: linear-gradient(180deg, #ffffff 0%, #fffdf8 100%);
  color: var(--ink);
  font-size: 0.84rem;
  font-weight: 700;
  line-height: 1.15;
  box-shadow: 0 8px 18px rgba(20, 20, 20, 0.06);
  white-space: nowrap;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.course-category-links--inline li a:hover {
  border-color: var(--accent);
  color: var(--accent);
  transform: translateY(-1px);
}

.course-category-links--inline li a.is-active {
  border-color: var(--brand);
  background: var(--brand);
  color: #000000;
}

.course-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.course-card.is-filtered-out,
.course-card[hidden] {
  display: none !important;
}

.course-card-img img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  display: block;
}

.course-card-img a {
  display: block;
  color: inherit;
  text-decoration: none;
}

.courses-grid--shop .course-card {
  background: linear-gradient(180deg, #fffdf8 0%, #ffffff 100%);
}

.courses-grid--shop .course-card-img {
  padding: 0.9rem 0.9rem 0;
  background: #f6f2e8;
}

.courses-grid--shop .course-card-img img {
  height: 235px;
  border-radius: 12px;
  object-position: left top;
}

.courses-grid--shop .course-card-body {
  padding-top: 1.2rem;
}

.courses-grid--shop .course-card-title {
  font-size: 1.2rem;
}

.courses-grid--shop .course-excerpt {
  line-height: 1.65;
}

.courses-grid--shop .course-price-wrap {
  padding-top: 0.2rem;
  border-top: 1px solid rgba(194, 172, 127, 0.22);
}

.course-card-body {
  padding: 1.4rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.course-card-title {
  font-size: 1.1rem;
  font-weight: 700;
  margin: 0 0 0.4rem;
}

.course-card-title a {
  color: var(--ink);
}

.course-card-title a:hover {
  color: var(--brand-dark);
}

.course-category {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--brand-dark);
  font-weight: 600;
  margin: 0 0 0.6rem;
}

.course-category a {
  color: var(--brand-dark);
  font-weight: 800;
  text-decoration: none;
}

.course-category a:hover {
  text-decoration: underline;
}

.courses-grid--related .course-card-img img {
  height: 220px;
  object-fit: cover;
  object-position: center top;
}

.course-excerpt {
  color: var(--muted);
  font-size: 0.9rem;
  margin-bottom: 1rem;
  flex: 1;
}

.course-card-footer {
  margin-top: auto;
}

.course-price-wrap {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
  margin-bottom: 0.75rem;
}

.course-price,
.course-price-wrap .course-price {
  font-size: 1.3rem;
  font-weight: 800;
  color: var(--brand-dark);
  font-family: 'Montserrat', sans-serif;
}

.course-price-note {
  font-size: 0.8rem;
  color: var(--muted);
}

.course-actions {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 0.5rem;
}

.klarna-badge {
  font-size: 0.75rem;
  color: var(--muted);
  margin: 0;
  padding: 0.3rem 0;
}

.klarna-badge::before {
  content: "🔒 ";
}

.section-cta {
  text-align: center;
  margin-top: 2rem;
}

.no-courses {
  text-align: center;
  padding: 3rem;
}

/* ============================================================
   ORACLE — KLARNA INFO BAR
   ============================================================ */
.klarna-info-bar {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 1rem;
  flex-wrap: wrap;
}

.klarna-badge-lg {
  background: #17120e;
  color: #ffd600;
  font-weight: 700;
  font-size: 0.85rem;
  padding: 0.35rem 0.8rem;
  border-radius: 6px;
  letter-spacing: 0.03em;
}

/* ============================================================
   ORACLE — SINGLE PRODUCT LAYOUT
   ============================================================ */
.product-layout {
  display: grid;
  grid-template-columns: 1fr 380px;
  gap: 2.5rem;
  align-items: start;
}

.product-content {
  min-width: 0;
}

.product-description {
  margin-bottom: 2rem;
  line-height: 1.7;
  color: var(--muted);
}

.product-meta-table h3 {
  font-size: 1rem;
  margin-bottom: 0.75rem;
}

.meta-dl {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 0.5rem 1rem;
  font-size: 0.9rem;
}

.meta-dl dt {
  font-weight: 700;
  color: var(--ink);
}

.meta-dl dd {
  margin: 0;
  color: var(--muted);
}

.booking-panel {
  position: sticky;
  top: 80px;
}

.booking-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 1.6rem;
  box-shadow: var(--shadow);
}

.booking-card h3 {
  margin: 0 0 0.75rem;
  font-size: 1.1rem;
}

.booking-price {
  font-size: 1.8rem;
  font-weight: 800;
  color: var(--brand-dark);
  font-family: 'Montserrat', sans-serif;
  margin-bottom: 1rem;
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
}

.booking-price small {
  font-size: 0.85rem;
  color: var(--muted);
  font-weight: 400;
}

.klarna-panel {
  background: #fafafa;
  border: 1px solid #e8e2d5;
  border-radius: 10px;
  padding: 1rem;
  margin-bottom: 1rem;
}

.klarna-panel-heading {
  font-weight: 700;
  font-size: 0.9rem;
  margin: 0 0 0.5rem;
}

.klarna-options {
  margin: 0;
  padding-left: 1.2rem;
  font-size: 0.85rem;
  color: var(--muted);
}

.klarna-options li {
  margin-bottom: 0.25rem;
}

.booking-notice {
  background: #edf3ff;
  border-radius: 8px;
  padding: 0.75rem;
  margin: 1rem 0;
  font-size: 0.85rem;
  color: #1a3255;
}

.booking-notice p {
  margin: 0;
}

.booking-contact {
  text-align: center;
  margin-top: 0.75rem;
}

.booking-contact p {
  font-size: 0.8rem;
  color: var(--muted);
  margin: 0;
}

.booking-phone {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--brand-dark);
}

.out-of-stock-notice {
  font-size: 0.9rem;
  color: #8a3a3a;
  background: #fff0f0;
  border-radius: 8px;
  padding: 0.75rem;
  margin-bottom: 0.75rem;
}

.price-amount {
  font-size: 2rem;
  font-weight: 800;
  color: var(--brand-dark);
  font-family: 'Montserrat', sans-serif;
}

.price-note {
  font-size: 0.9rem;
  color: var(--muted);
  margin-left: 0.4rem;
}

.course-price-hero {
  margin: 1rem 0;
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
}

/* WooCommerce single-product fallback layout */
@media (min-width: 981px) {
  .woocommerce div.product div.summary {
    padding-left: 1.5rem;
  }
}

/* Matches the site h1 above. WooCommerce's own title was running to 4rem on a 0.98 line, which
   made course names noticeably larger and tighter than every other page heading. */
.woocommerce div.product .product_title {
  font-size: clamp(2rem, 4vw, 3.2rem);
  line-height: 1.1;
  margin-bottom: 1rem;
}

.woocommerce div.product p.price,
.woocommerce div.product span.price {
  color: var(--brand-dark);
  font-weight: 800;
}

.woocommerce div.product form.cart {
  display: grid;
  grid-template-columns: 72px minmax(220px, 1fr);
  gap: 0.8rem;
  align-items: center;
  max-width: 420px;
}

.woocommerce.oracle-short-course-product div.product form.cart,
.oracle-short-course-product .woocommerce div.product form.cart {
  grid-template-columns: minmax(220px, 1fr);
}

.woocommerce div.product form.cart .quantity {
  margin: 0;
}

.woocommerce.oracle-short-course-product div.product form.cart .quantity,
.oracle-short-course-product .woocommerce div.product form.cart .quantity,
.woocommerce div.product.product_cat-short-courses form.cart .quantity {
  display: none !important;
}

.woocommerce .quantity .qty {
  width: 72px;
  min-height: 44px;
  border: 1px solid #ded6c6;
  border-radius: 8px;
  background: #ffffff;
  color: var(--ink);
  font: inherit;
  font-weight: 700;
  text-align: center;
}

.woocommerce div.product form.cart .button {
  min-height: 46px;
  border-radius: 8px;
}

.course-group-booking-note {
  grid-column: 1 / -1;
  max-width: 420px;
  margin: 0.1rem 0 0;
  padding: 0.8rem 0.95rem;
  border: 1px solid rgba(194, 172, 127, 0.35);
  border-radius: 8px;
  background: #fbf8ef;
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.5;
}

.woocommerce div.product .product_meta {
  margin-top: 1.5rem;
  color: var(--muted);
}

.woocommerce div.product .woocommerce-tabs {
  margin-top: 2.5rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.82);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
  display: flex;
  gap: 0;
  padding: 0.75rem 0.75rem 0;
  margin: 0;
  border: 0;
  background: #f7f3ea;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs::after {
  display: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
  border: 0;
  border-radius: 8px 8px 0 0;
  background: transparent;
  margin: 0;
  padding: 0;
  transition: background 0.2s ease, color 0.2s ease;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
  display: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
  background: #ffffff;
  box-shadow: 0 -1px 0 var(--line), 1px 0 0 var(--line), -1px 0 0 var(--line);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
  display: inline-flex;
  align-items: center;
  min-height: 46px;
  padding: 0.85rem 1.1rem;
  color: var(--ink);
  font-weight: 800;
  font-size: 0.92rem;
  letter-spacing: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li:not(.active) a {
  color: var(--muted);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:focus-visible {
  color: var(--brand-dark);
}

.woocommerce div.product .woocommerce-tabs .panel {
  padding: 1.65rem;
  border-top: 0;
  margin: 0;
  background: #ffffff;
  color: var(--muted);
  line-height: 1.7;
}

.woocommerce div.product .woocommerce-tabs .panel h2,
.woocommerce div.product .woocommerce-tabs .panel h3 {
  color: var(--ink);
  margin-top: 0;
  margin-bottom: 1rem;
}

.woocommerce div.product .woocommerce-tabs .panel p {
  max-width: 78ch;
}

.woocommerce div.product .woocommerce-tabs .panel ul,
.woocommerce div.product .woocommerce-tabs .panel ol {
  max-width: 78ch;
  padding-left: 1.25rem;
}

.woocommerce table.shop_attributes {
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  margin: 0;
}

.woocommerce table.shop_attributes th,
.woocommerce table.shop_attributes td {
  border: 0;
  border-bottom: 1px solid var(--line);
  padding: 0.9rem 1rem;
  background: #ffffff;
  color: var(--ink);
}

.woocommerce table.shop_attributes tr:last-child th,
.woocommerce table.shop_attributes tr:last-child td {
  border-bottom: 0;
}

.woocommerce table.shop_attributes th {
  width: 220px;
  background: #f7f3ea;
  color: var(--brand-dark);
  font-weight: 800;
}

.woocommerce #reviews #comments ol.commentlist {
  padding: 0;
}

.woocommerce #reviews #comments ol.commentlist li {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  padding: 1rem;
  margin-bottom: 1rem;
}

.woocommerce #reviews #comments ol.commentlist li img.avatar {
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 0;
  background: #ffffff;
}

.woocommerce #review_form #respond {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfaf6;
  padding: 1.25rem;
}

.woocommerce #review_form #respond textarea,
.woocommerce #review_form #respond input[type="text"],
.woocommerce #review_form #respond input[type="email"] {
  width: 100%;
  border: 1px solid #ded6c6;
  border-radius: 8px;
  background: #ffffff;
  padding: 0.85rem 1rem;
  font: inherit;
}

.woocommerce #review_form #respond .form-submit input {
  border-radius: 8px;
  background: var(--brand);
  color: #ffffff;
  font-weight: 800;
  border: 0;
  padding: 0.85rem 1.2rem;
}

.woocommerce div.product .related.products {
  margin-top: 2.5rem;
}

.woocommerce div.product .related.products > h2 {
  margin-bottom: 1.2rem;
}

.woocommerce div.product .related.products ul.products li.product {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  box-shadow: var(--shadow);
}

.woocommerce div.product .related.products ul.products li.product a img {
  width: 100%;
  height: 220px;
  object-fit: contain;
  object-position: center;
  background: #f5efe2;
  padding: 0.75rem;
  margin: 0;
}

.woocommerce div.product .related.products ul.products li.product .woocommerce-loop-product__title,
.woocommerce div.product .related.products ul.products li.product .price,
.woocommerce div.product .related.products ul.products li.product .button {
  margin-left: 1rem;
  margin-right: 1rem;
}

.woocommerce div.product .related.products ul.products li.product .button {
  margin-bottom: 1rem;
}

/* ============================================================
   ORACLE — TOPBAR SOCIAL
   ============================================================ */
.topbar-social {
  display: flex;
  gap: 0.4rem;
  align-items: center;
}

.topbar-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.8rem;
  height: 1.8rem;
  border: 1px solid rgba(194, 172, 127, 0.48);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  line-height: 1;
  opacity: 0.82;
  transition: border-color 0.2s ease, opacity 0.2s ease, transform 0.2s ease;
}

.topbar-social a:hover {
  border-color: var(--brand-dark);
  opacity: 1;
  transform: translateY(-1px);
}

.topbar-social img {
  display: block;
  width: 16px;
  height: 16px;
}

.footer-social {
  margin-top: 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.footer-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 50%;
  transition: background 0.2s ease, transform 0.2s ease, opacity 0.2s ease;
  opacity: 0.85;
}

.footer-social a:hover {
  background: rgba(255, 255, 255, 0.18);
  transform: translateY(-1px);
  opacity: 1;
}

.footer-social img {
  display: block;
  width: 18px;
  height: 18px;
}

/* ============================================================
   ORACLE — BUTTONS
   ============================================================ */
.btn-block {
  display: block;
  width: 100%;
  text-align: center;
}

.btn-sm {
  padding: 0.45rem 1rem;
  font-size: 0.85rem;
}

/* ============================================================
   ORACLE — RESPONSIVE ADDITIONS
   ============================================================ */
@media (max-width: 1024px) {
  .stats-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .programmes-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .cards-grid--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .about-band-grid {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .about-band-accreditations {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .product-layout {
    grid-template-columns: 1fr;
  }

  .booking-panel {
    position: static;
  }
}

@media (max-width: 768px) {
  .courses-grid,
  .courses-grid--wp {
    grid-template-columns: 1fr;
  }

  .courses-grid--3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .woocommerce-checkout .col2-set,
  .course-dates-list {
    grid-template-columns: 1fr;
  }

  .woocommerce-checkout form.checkout {
    grid-template-columns: 1fr;
  }

  .woocommerce-checkout .col2-set,
  .woocommerce-checkout #order_review_heading,
  .woocommerce-checkout #order_review {
    grid-column: 1;
  }

  .woocommerce-checkout .col2-set {
    grid-row: auto;
  }

  .woocommerce-checkout #order_review_heading,
  .woocommerce-checkout #order_review {
    grid-row: auto;
  }

  .woocommerce-checkout #order_review {
    margin-top: 0;
  }

  .stats-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .cta-band-actions {
    flex-direction: column;
    align-items: flex-start;
  }
}

@media (max-width: 640px) {
  main {
    padding-top: var(--oracle-header-offset, 231px);
  }

  .contact-layout {
    grid-template-columns: 1fr;
  }

  .woocommerce-cart .woocommerce,
  .woocommerce-checkout .woocommerce {
    padding: 1rem;
  }

  .programmes-grid,
  .cards-grid--4,
  .courses-grid--3 {
    grid-template-columns: 1fr;
  }

  .klarna-info-bar {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
  }

  .topbar {
    font-size: 0.78rem;
  }

  .topbar-inner {
    justify-content: center;
    gap: 0.35rem 0.85rem;
    min-height: auto;
    padding-block: 0.48rem;
  }

  .topbar a,
  .topbar-inner > span:not(.topbar-social) {
    white-space: normal;
  }

  .topbar-inner > span:not(.topbar-social) {
    flex-basis: 100%;
    justify-content: center;
    text-align: center;
  }

  .topbar-social {
    display: none;
  }
}

@media (max-width: 767px) {
  .about-band-accreditations {
    grid-template-columns: 1fr;
  }

  .accreditation-box {
    min-height: 164px;
  }
}

@media (max-width: 640px) {
  .course-toolbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .course-filter-row,
  .course-sort-row,
  .course-controls-row {
    padding: 0.85rem;
  }

  .course-sort-row,
  .course-controls-row {
    display: flex;
    align-items: stretch;
    flex-direction: column;
  }

  .course-sort-row .woocommerce-ordering,
  .course-sort-row .woocommerce-ordering select,
  .course-controls-row .woocommerce-ordering,
  .course-controls-row .woocommerce-ordering select {
    width: 100%;
  }

  .course-sort-row .woocommerce-ordering,
  .course-controls-row .woocommerce-ordering {
    align-items: stretch;
    flex-direction: column;
    gap: 0.45rem;
  }

  .course-sort-row .woocommerce-ordering::after,
  .course-controls-row .woocommerce-ordering::after {
    bottom: 1.2rem;
    top: auto;
  }

  .course-results-pagination-row {
    align-items: stretch;
    flex-direction: column;
    padding: 0.85rem;
  }

  .course-results-pagination-row .woocommerce-pagination ul {
    justify-content: flex-start;
    flex-wrap: wrap;
  }

  .course-category-links--inline,
  .course-category-links--inline ul {
    width: 100%;
  }

  .course-category-links--inline li,
  .course-category-links--inline li a {
    width: 100%;
  }

  .course-filter-row .course-category-links--inline {
    align-items: flex-start;
  }

  .course-controls-row .course-category-links--inline {
    align-items: flex-start;
  }

  .course-filter-row .course-category-label,
  .course-controls-row .course-category-label {
    width: 100%;
  }

  .course-filter-row .course-category-links--inline ul,
  .course-controls-row .course-category-links--inline ul {
    gap: 0.5rem;
  }

  .course-filter-row .course-category-links--inline li,
  .course-filter-row .course-category-links--inline li a,
  .course-controls-row .course-category-links--inline li,
  .course-controls-row .course-category-links--inline li a {
    width: auto;
  }

  .courses-grid,
  .courses-grid--3,
  .courses-grid--wp,
  .courses-grid--shop,
  .courses-grid--related {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 1rem;
    width: 100%;
    overflow: visible;
    visibility: visible;
  }

  .course-card {
    display: flex !important;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    opacity: 1;
    visibility: visible;
  }

  .courses-grid--shop .course-card-img {
    padding: 0.65rem 0.65rem 0;
  }

  .course-card-img img,
  .courses-grid--shop .course-card-img img,
  .courses-grid--related .course-card-img img {
    height: 180px;
    max-width: 100%;
    object-fit: cover;
  }

  .course-card-body {
    min-width: 0;
    padding: 1rem;
  }

  .course-actions,
  .course-price-wrap {
    align-items: stretch;
    flex-direction: column;
  }

  .course-actions .btn {
    width: 100%;
  }

  .mep_event_list .mage_grid_box {
    display: block;
  }

  .mep_event_list .filter_item.mep-event-list-loop,
  .mep_event_list .mep_event_grid_item {
    display: flex;
    flex-direction: column;
    width: 100% !important;
    max-width: 100%;
  }

  .mep_event_list .mep-ev-start-date,
  .mep_event_list .mep_list_thumb,
  .mep_event_list .mep_list_event_details,
  .mep_event_list .event_details_link {
    width: 100% !important;
    max-width: 100%;
  }

  .mep_event_list .event_details_link {
    overflow: visible;
  }

  .mep_event_list .mep_list_thumb [data-bg-image] {
    min-height: 180px !important;
  }
}

/* ============================================================
   ORACLE — MISSING & SUPPLEMENTAL STYLES
   ============================================================ */

/* Secondary button */
.btn-secondary {
  background: transparent;
  border: 2px solid var(--brand);
  color: var(--brand-dark);
}

.btn-secondary:hover {
  background: var(--brand);
  color: #ffffff;
}

/* Footer base bar */
.footer-base {
  margin-top: 2rem;
  padding: 1rem 0 2rem;
  border-top: 1px solid rgba(255, 255, 255, 0.18);
}

.footer-base .container {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.footer-base p {
  margin: 0;
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.65);
}

.footer-base .footer-credit a {
  color: rgba(255, 255, 255, 0.85);
  text-decoration: underline;
}

.footer-base .footer-credit a:hover,
.footer-base .footer-credit a:focus {
  color: #ffffff;
}

/* Footer grid — 4-column layout used in footer.php */
.footer-grid {
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
}

/* Brand logo sizing */
.site-header .brand-logo {
  height: 44px;
  width: auto;
  max-width: none;
  max-height: 44px;
  display: block;
  flex-shrink: 0;
}

.woocommerce .site-header .brand-logo,
.woocommerce-page .site-header .brand-logo {
  height: 44px;
  width: auto;
  max-width: none;
  max-height: 44px;
}

.site-header .topbar,
.site-header .alertbar {
  max-height: 120px;
}

.site-header.is-scrolled,
.site-header.is-menu-open {
  box-shadow: 0 8px 28px rgba(12, 15, 21, 0.16);
}

.site-header.is-scrolled .topbar,
.site-header.is-scrolled .alertbar,
.site-header.is-menu-open .topbar,
.site-header.is-menu-open .alertbar {
  max-height: 0;
  opacity: 0;
  border-bottom-width: 0;
  padding-top: 0;
  padding-bottom: 0;
}

.site-header.is-scrolled .nav-inner,
.site-header.is-menu-open .nav-inner {
  min-height: 58px;
}

.site-header.is-scrolled .brand-logo,
.woocommerce .site-header.is-scrolled .brand-logo,
.woocommerce-page .site-header.is-scrolled .brand-logo,
.site-header.is-menu-open .brand-logo,
.woocommerce .site-header.is-menu-open .brand-logo,
.woocommerce-page .site-header.is-menu-open .brand-logo {
  height: 34px;
  max-height: 34px;
}

body.mobile-menu-open {
  overflow: hidden;
}

/* Short hero variant */
.hero--short {
  padding: 2.5rem 0 2rem;
}

/* Services page grid */
.services-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
  margin-top: 1.5rem;
}

/* Prose / long-form content */
.prose {
  max-width: 860px;
  line-height: 1.8;
  color: var(--ink);
}

/* A heading should sit closer to the copy it introduces than to the section above it —
   otherwise it reads as detached. Headings also inherited the body's 1.8 line-height, which
   made them airy in their own right. */
.prose h2,
.prose h3 {
  margin-top: 2rem;
  margin-bottom: 0.4rem;
  line-height: 1.3;
}

.prose h2 + p,
.prose h3 + p,
.prose h2 + ul,
.prose h3 + ul,
.prose h2 + ol,
.prose h3 + ol {
  margin-top: 0;
}

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

.prose p,
.prose ul,
.prose ol {
  margin-bottom: 1rem;
}

.prose ul,
.prose ol {
  padding-left: 1.4rem;
}

/* Course header banner inside course-card (HTML version) */
.course-header {
  padding: 1rem 1.4rem 0;
}

.course-header h3 {
  margin: 0 0 0.25rem;
  font-size: 1.1rem;
}

.course-duration {
  font-size: 0.85rem;
  color: var(--brand-dark);
  font-weight: 700;
  margin: 0;
}

.course-summary {
  color: var(--muted);
  font-size: 0.9rem;
  padding: 0.75rem 1.4rem 0;
  margin: 0;
}

.course-highlights {
  padding: 0.5rem 1.4rem 0 2.4rem;
  font-size: 0.85rem;
  color: var(--muted);
}

/* CTA card */
.cta-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 2rem;
  box-shadow: var(--shadow);
  max-width: 600px;
}

.cta-card h3 {
  margin-top: 0;
}

.cta-card .small {
  font-size: 0.85rem;
  color: var(--muted);
  margin-top: 0.75rem;
}

/* WooCommerce — admin bar offset for sticky header */
.admin-bar .site-header {
  top: 32px;
}

@media (max-width: 768px) {
  .admin-bar .site-header {
    top: 46px;
  }

  .footer-grid {
    grid-template-columns: 1fr 1fr;
  }

  .services-grid {
    grid-template-columns: 1fr;
  }
}

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

.footer-address strong {
  display: block;
  margin-bottom: 0.15rem;
  color: var(--brand);
  font-family: 'Montserrat', sans-serif;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-size: 0.82rem;
}

/* News / blog category filter */
.news-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 2rem;
}

.news-filter-item {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.55rem 1rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 700;
  font-size: 0.92rem;
  text-decoration: none;
  transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.news-filter-item:hover,
.news-filter-item:focus-visible {
  border-color: var(--brand);
  background: #fffdf8;
}

.news-filter-item.is-active {
  background: var(--brand);
  border-color: var(--brand);
  color: #ffffff;
}

.news-filter-count {
  font-size: 0.78rem;
  font-weight: 600;
  opacity: 0.7;
}

@media (max-width: 640px) {
  .news-filter {
    gap: 0.4rem;
    margin-bottom: 1.4rem;
  }

  .news-filter-item {
    padding: 0.45rem 0.8rem;
    font-size: 0.85rem;
  }
}

/* Instant search inputs — news archive and course archive */
.news-search,
.course-search {
  display: block;
  margin-bottom: 1.5rem;
}

.course-search {
  margin-bottom: 0;
  flex: 1 1 220px;
  min-width: 200px;
}

.news-search input[type="search"],
.course-search input[type="search"] {
  width: 100%;
  min-height: 42px;
  padding: 0.65rem 1rem;
  border: 1px solid rgba(194, 172, 127, 0.42);
  border-radius: 999px;
  background: #ffffff;
  color: var(--ink);
  font: inherit;
  appearance: none;
  -webkit-appearance: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.news-search input[type="search"]:focus,
.course-search input[type="search"]:focus {
  outline: none;
  border-color: var(--brand-dark);
  box-shadow: 0 0 0 4px rgba(194, 172, 127, 0.16);
}

.news-empty,
.course-empty {
  padding: 1.5rem 0;
  color: var(--muted);
  font-weight: 600;
}

.course-search-status {
  margin: 0 0 0.75rem;
  color: var(--muted);
  font-size: 0.9rem;
  min-height: 1.2em;
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Author box on single posts */
.author-box {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  margin-top: 2.5rem;
  padding: 1.5rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(180deg, #fffdf8 0%, #ffffff 100%);
}

.author-box-avatar img {
  display: block;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  object-fit: cover;
}

.author-box-label {
  margin: 0;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
}

.author-box-name {
  margin: 0.15rem 0 0.5rem;
  font-size: 1.25rem;
  font-family: 'Montserrat', sans-serif;
}

.author-box-bio {
  margin: 0 0 0.6rem;
  color: var(--ink);
  line-height: 1.6;
}

.author-box-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
  margin: 0;
  font-size: 0.9rem;
  color: var(--muted);
}

.author-box-link {
  font-weight: 700;
  color: var(--brand-dark);
}

@media (max-width: 640px) {
  .author-box {
    flex-direction: column;
    gap: 0.9rem;
    padding: 1.15rem;
  }
}

/* Featured images on blog cards and single posts */
.blog-card-img {
  display: block;
  margin: -1px -1px 1rem;
  overflow: hidden;
  border-radius: calc(var(--radius) - 4px) calc(var(--radius) - 4px) 0 0;
  aspect-ratio: 16 / 9;
  background: #f1eee8;
}

.blog-card-img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.35s ease;
}

.blog-post-card:hover .blog-card-img img {
  transform: scale(1.04);
}

/* Floated right so the article copy wraps around it. Sits inside .prose, so it only affects
   the body text — the hero title and lead are in a separate section above and are untouched.
   No forced aspect ratio: most of Oracle's photography is portrait, and a 16:9 crop showed a
   thin slice that read as stretched. */
.post-hero-img {
  float: right;
  width: min(340px, 40%);
  margin: 0.25rem 0 1.25rem 1.75rem;
  shape-margin: 1.75rem;
}

.post-hero-img img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--radius);
}

/* Anything after the copy must clear the float rather than collide with it. */
.post-tags,
.author-box,
.post-pagination {
  clear: both;
}

@media (max-width: 640px) {
  /* Too narrow to wrap around: go full width above the copy instead. */
  .post-hero-img {
    float: none;
    width: auto;
    margin: 0 0 1.4rem;
    text-align: center;
  }

  .post-hero-img img {
    width: auto;
    max-width: 100%;
    max-height: 300px;
    margin: 0 auto;
    border-radius: calc(var(--radius) - 4px);
  }
}

/* Funding highlight — apprenticeship grant callout */
.funding-highlight {
  margin: 0 0 0.9rem;
  padding: 0.9rem 1.1rem;
  border-left: 4px solid var(--brand);
  border-radius: 8px;
  background: #fffdf8;
  color: var(--ink);
  font-size: 1.05rem;
  line-height: 1.5;
}

.funding-callout .funding-highlight {
  margin-bottom: 0;
  font-size: 1.15rem;
}

/* Advanced course search disclosure */
.course-advanced-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 0.5rem;
  padding: 0.4rem 0;
  border: 0;
  background: none;
  color: var(--brand-dark);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.course-advanced-toggle:hover,
.course-advanced-toggle:focus-visible {
  color: var(--ink);
}

.course-advanced-toggle-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.15rem;
  border: 1px solid currentColor;
  border-radius: 50%;
  font-size: 0.85rem;
  line-height: 1;
  transition: transform 0.25s ease;
}

.course-advanced-toggle.is-open .course-advanced-toggle-icon {
  transform: rotate(45deg);
}

.course-advanced {
  overflow: hidden;
  max-height: 0;
  visibility: hidden;
  opacity: 0;
  transition: max-height 0.3s ease, opacity 0.25s ease, visibility 0.3s;
}

.course-advanced.is-open {
  max-height: 260px;
  visibility: visible;
  opacity: 1;
}

.course-advanced-inner {
  padding: 1.1rem 1.25rem 1.25rem;
  margin-bottom: 1.25rem;
  border: 1px solid var(--line);
  border-radius: calc(var(--radius) - 4px);
  background: linear-gradient(180deg, #fffdf8 0%, #ffffff 100%);
}

.course-search-label {
  display: block;
  margin-bottom: 0.45rem;
  font-weight: 700;
  font-size: 0.9rem;
  color: var(--ink);
}

@media (prefers-reduced-motion: reduce) {
  .course-advanced,
  .course-advanced-toggle-icon {
    transition: none;
  }
}

/* End-of-article CTA, above the author box */
.post-cta {
  clear: both;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  margin-top: 2.5rem;
  padding: 1.5rem 1.75rem;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  background: linear-gradient(180deg, #fffdf8 0%, #ffffff 100%);
}

.post-cta-body {
  flex: 1 1 320px;
}

.post-cta h2 {
  margin: 0 0 0.4rem;
  font-size: 1.3rem;
  line-height: 1.3;
  font-family: 'Montserrat', sans-serif;
}

.post-cta p {
  margin: 0;
  color: var(--ink);
  line-height: 1.6;
}

.post-cta-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}

@media (max-width: 640px) {
  .post-cta {
    padding: 1.2rem 1.25rem;
    margin-top: 2rem;
  }

  .post-cta-actions .btn {
    flex: 1 1 100%;
    justify-content: center;
  }
}

/* Individual blog posts: drop the 4.5rem top padding on the article section so the copy sits
   directly under the hero. Bottom padding stays, otherwise the CTA and author box collide
   with the Related Articles band below. */
.single-post .hero--short + .section {
  padding-top: 0;
}

/* Cookie consent banner */
.cookie-banner {
  position: fixed;
  left: 1rem;
  right: 1rem;
  bottom: 1rem;
  z-index: 9998;
  max-width: 1160px;
  margin: 0 auto;
  padding: 1.25rem 1.4rem;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #ffffff;
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.18);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.cookie-banner.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.cookie-banner-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
}

.cookie-banner-text {
  flex: 1 1 420px;
}

.cookie-banner h2 {
  margin: 0 0 0.35rem;
  font-size: 1.1rem;
  line-height: 1.3;
  font-family: 'Montserrat', sans-serif;
}

.cookie-banner p {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--ink);
}

.cookie-banner-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}

@media (max-width: 640px) {
  .cookie-banner {
    left: 0.6rem;
    right: 0.6rem;
    bottom: 0.6rem;
    padding: 1.1rem 1.15rem;
  }

  .cookie-banner-actions .btn {
    flex: 1 1 100%;
    justify-content: center;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cookie-banner {
    transition: none;
  }
}

/* Larger "Our Story" kicker — it introduces the whole band, so it carries more weight than the
   small kickers used inside cards. */
.about-band .kicker {
  font-size: 1.05rem;
  letter-spacing: 0.06em;
  margin-bottom: 0.3rem;
}

@media (max-width: 640px) {
  .about-band .kicker {
    font-size: 0.95rem;
  }
}
