:root {
  --hhfm-blue: #8eb0c8;
  --hhfm-blue-pale: #edf3f7;
  --hhfm-blue-deep: #406e8f;
  --hhfm-brown: #6f5040;
  --hhfm-brown-dark: #3e2c23;
  --hhfm-cream: #fbfaf8;
  --hhfm-white: #fff;
  --hhfm-line: #e3dbd3;
  --hhfm-muted: #8a7263;
  --hhfm-error: #a63c32;
  --hhfm-serif: "Playfair Display", Georgia, serif;
  --hhfm-sans: "Montserrat", "Helvetica Neue", Arial, sans-serif;
}

.hhfm-wrap,
.hhfm-wrap *,
.hhfm-wrap *::before,
.hhfm-wrap *::after {
  box-sizing: border-box;
}

body.hhfm-schedule-page {
  background: var(--hhfm-cream);
  color: var(--hhfm-brown);
  font-family: var(--hhfm-sans);
}

body.hhfm-schedule-page .wp-site-blocks > header,
body.hhfm-schedule-page .wp-block-post-title,
body.hhfm-schedule-page main > h1:first-child {
  display: none !important;
}

body.hhfm-schedule-page main,
body.hhfm-schedule-page .wp-site-blocks,
body.hhfm-schedule-page .entry-content,
body.hhfm-schedule-page .wp-block-post-content {
  margin: 0 !important;
  padding: 0 !important;
  max-width: none !important;
}

.hhfm-wrap {
  width: min(1120px, calc(100% - 40px));
  margin: 28px auto 80px;
  color: var(--hhfm-brown);
  font-family: var(--hhfm-sans);
}

.hhfm-brandbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: 16px 0 22px;
}

.hhfm-brand {
  display: inline-flex;
  align-items: center;
  gap: 13px;
  color: var(--hhfm-brown);
  text-decoration: none;
}

.hhfm-brand__symbol {
  width: 42px;
  height: auto;
  color: var(--hhfm-brown);
}

.hhfm-brand__lockup {
  display: block;
  min-width: 154px;
  line-height: 1;
}

.hhfm-brand__lockup > span {
  display: block;
  color: var(--hhfm-blue);
  font-family: var(--hhfm-serif);
  font-size: 27px;
}

.hhfm-brand__lockup i {
  display: block;
  height: 1px;
  margin-top: 7px;
  background: var(--hhfm-line);
}

.hhfm-brand__lockup small {
  display: block;
  margin-top: 7px;
  padding-left: .34em;
  color: var(--hhfm-brown);
  font-size: 8px;
  font-style: normal;
  font-weight: 700;
  letter-spacing: .34em;
  text-transform: uppercase;
}

.hhfm-brandbar__help {
  display: flex;
  align-items: center;
  gap: 20px;
  font-size: 12px;
  font-weight: 600;
}

.hhfm-brandbar__help span::before {
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 8px;
  border-radius: 50%;
  background: var(--hhfm-blue);
  content: "";
}

.hhfm-brandbar__help a {
  color: var(--hhfm-blue-deep);
  text-decoration: none;
}

.hhfm-header {
  position: relative;
  min-height: 330px;
  margin: 0 0 34px;
  padding: 66px clamp(30px, 7vw, 78px);
  overflow: hidden;
  border-radius: 18px;
  background: var(--hhfm-brown);
  color: #fff;
  box-shadow: 0 22px 54px rgba(62, 44, 35, .18);
}

.hhfm-header__copy {
  position: relative;
  z-index: 1;
  max-width: 760px;
}

.hhfm-header__sun {
  position: absolute;
  right: -90px;
  bottom: -120px;
  width: 480px;
  color: var(--hhfm-blue);
  opacity: .16;
  transform: rotate(-7deg);
}

.hhfm-eyebrow {
  margin: 0 0 17px;
  color: var(--hhfm-blue);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .28em;
  text-transform: uppercase;
}

.hhfm-header h1 {
  margin: 0 0 18px;
  color: #fff;
  font-family: var(--hhfm-serif);
  font-size: clamp(38px, 6vw, 64px);
  font-weight: 400;
  letter-spacing: -.02em;
  line-height: 1.04;
}

.hhfm-header > .hhfm-header__copy > p:last-child {
  max-width: 650px;
  margin: 0;
  color: rgba(255, 255, 255, .78);
  font-size: 16px;
  line-height: 1.75;
}

.hhfm-notice,
.hhfm-errors {
  padding: 15px 18px;
  border: 1px solid #e3c67b;
  border-radius: 10px;
  margin: 0 0 22px;
  background: #fff9e8;
  color: var(--hhfm-brown);
  font-weight: 700;
}

.hhfm-notice--error,
.hhfm-errors:not(:empty) {
  border-color: #e4aaa4;
  background: #fff0ee;
  color: var(--hhfm-error);
}

.hhfm-errors:empty { display: none; }

.hhfm-region-card {
  padding: 30px clamp(24px, 5vw, 44px);
  border: 1px solid var(--hhfm-line);
  border-radius: 14px;
  background: var(--hhfm-white);
  box-shadow: 0 12px 38px rgba(111, 80, 64, .08);
}

.hhfm-region-card label {
  display: block;
  margin-bottom: 10px;
  color: var(--hhfm-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.hhfm-region-card select {
  width: min(100%, 560px);
  min-height: 54px;
  padding: 0 16px;
  border: 1px solid var(--hhfm-line);
  border-radius: 8px;
  background: var(--hhfm-cream);
  color: var(--hhfm-brown);
  font-family: var(--hhfm-sans);
  font-size: 15px;
  font-weight: 500;
}

.hhfm-region-card select:focus,
.hhfm-start:focus {
  outline: 2px solid var(--hhfm-blue-deep);
  outline-offset: 2px;
}

.hhfm-rule-summary {
  margin: 15px 0 0;
  padding-left: 15px;
  border-left: 3px solid var(--hhfm-blue);
  color: var(--hhfm-muted);
  font-size: 13px;
  line-height: 1.65;
}

.hhfm-toolbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 22px;
  margin: 44px 0 16px;
}

.hhfm-toolbar h2 {
  margin: 0 0 7px;
  color: var(--hhfm-brown);
  font-family: var(--hhfm-serif);
  font-size: 36px;
  font-weight: 400;
}

.hhfm-toolbar p {
  margin: 0;
  color: var(--hhfm-muted);
  font-size: 14px;
}

.hhfm-courses { display: grid; gap: 16px; }

.hhfm-course {
  display: grid;
  grid-template-columns: 132px 1fr;
  gap: 24px;
  padding: 22px;
  border: 1px solid var(--hhfm-line);
  border-radius: 14px;
  background: var(--hhfm-white);
  box-shadow: 0 8px 28px rgba(111, 80, 64, .06);
  transition: border-color .2s, box-shadow .2s, transform .2s;
}

.hhfm-course__body,
.hhfm-dates,
.hhfm-dates > *,
.hhfm-start {
  min-width: 0;
}

.hhfm-course:hover {
  border-color: var(--hhfm-blue);
  box-shadow: 0 14px 34px rgba(111, 80, 64, .09);
  transform: translateY(-1px);
}

.hhfm-course.is-overlapping {
  border-color: var(--hhfm-error);
  box-shadow: 0 0 0 4px rgba(166, 60, 50, .08);
}

.hhfm-course__image img {
  display: block;
  width: 132px;
  height: 132px;
  border-radius: 10px;
  object-fit: cover;
}

.hhfm-course h3 {
  margin: 1px 0 19px;
  color: var(--hhfm-brown);
  font-family: var(--hhfm-serif);
  font-size: 23px;
  font-weight: 400;
  line-height: 1.25;
}

.hhfm-dates {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(190px, 1fr);
  gap: 24px;
}

.hhfm-dates label span,
.hhfm-end-wrap span {
  display: block;
  margin-bottom: 8px;
  color: var(--hhfm-muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .15em;
  text-transform: uppercase;
}

.hhfm-start {
  width: 100%;
  min-height: 48px;
  padding: 0 13px;
  border: 1px solid var(--hhfm-line);
  border-radius: 8px;
  background: var(--hhfm-cream);
  color: var(--hhfm-brown);
  font-family: var(--hhfm-sans);
  font-size: 15px;
}

.hhfm-end-wrap {
  min-height: 48px;
  padding: 0 15px;
  border-left: 3px solid var(--hhfm-blue);
  overflow: hidden;
}

.hhfm-end {
  color: var(--hhfm-brown);
  font-family: var(--hhfm-serif);
  font-size: 21px;
  font-weight: 500;
}

.hhfm-duration {
  margin: 13px 0 0;
  color: var(--hhfm-blue-deep);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.hhfm-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--hhfm-line);
}

.hhfm-primary,
.hhfm-secondary {
  border: 1.5px solid transparent;
  border-radius: 8px;
  cursor: pointer;
  font-family: var(--hhfm-sans);
  font-size: 13px;
  font-weight: 700;
  transition: background .16s, border-color .16s, color .16s, transform .16s;
}

.hhfm-primary {
  padding: 15px 25px;
  background: var(--hhfm-brown);
  color: #fff;
  box-shadow: 0 9px 24px rgba(62, 44, 35, .18);
}

.hhfm-primary:hover {
  background: var(--hhfm-brown-dark);
  transform: translateY(-1px);
}

.hhfm-secondary {
  padding: 11px 18px;
  border-color: var(--hhfm-blue-deep);
  background: transparent;
  color: var(--hhfm-blue-deep);
}

.hhfm-secondary:hover {
  background: var(--hhfm-blue-deep);
  color: #fff;
}

.hhfm-back {
  color: var(--hhfm-brown);
  font-size: 13px;
  font-weight: 700;
  text-underline-offset: 4px;
}

.hhfm-empty {
  max-width: 720px;
  margin: 60px auto;
  padding: 36px;
  border: 1px solid var(--hhfm-line);
  border-radius: 14px;
  background: #fff;
  text-align: center;
}

@media (max-width: 760px) {
  .hhfm-wrap { width: min(100% - 24px, 1120px); margin-top: 10px; }
  .hhfm-brandbar { align-items: flex-start; }
  .hhfm-brandbar__help { display: none; }
  .hhfm-brand__symbol { width: 34px; }
  .hhfm-brand__lockup > span { font-size: 23px; }
  .hhfm-header { min-height: 0; padding: 48px 26px; }
  .hhfm-header__sun { right: -135px; bottom: -115px; width: 360px; }
  .hhfm-toolbar, .hhfm-actions { align-items: stretch; flex-direction: column; }
  .hhfm-course { grid-template-columns: 78px 1fr; gap: 15px; padding: 15px; }
  .hhfm-course__image img { width: 78px; height: 78px; }
  .hhfm-course h3 { font-size: 20px; }
  .hhfm-dates { grid-template-columns: 1fr; }
  .hhfm-primary, .hhfm-secondary { width: 100%; text-align: center; }
  .hhfm-actions { text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
  .hhfm-course,
  .hhfm-primary,
  .hhfm-secondary { transition: none; }
}
