/* ------------------- */
/* Reset               */
/* ------------------- */
/* inspired by */
/* https://piccalil.li/blog/a-modern-css-reset/ */
/* https: //www.joshwcomeau.com/css/custom-css-reset/ */
/* Kevin Powell CSS reset */
/* 1. Use a more-intuitive box-sizing model */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* 2. Remove default margin */
* {
  margin: 0;
}

/* set up the body */
body {
  /* 3. Add accessible line-height */
  line-height: 1.6;
  /* 4. Improve text rendering */
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
}

/* 5. Improve media defaults */
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
}

/* 6. Inherit fonts for form controls */
label,
input,
button,
textarea,
select {
  font: inherit;
}

/* 7. Avoid text overflows */
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

/* 8. Improve line wrapping */
p {
  text-wrap: pretty;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  text-wrap: balance;
}

ul:not([role=list]) {
  list-style: none;
  padding: 0;
  margin-inline: none;
}

/* Hide all list markers by default */
li::marker {
  display: none;
  content: "";
}

/* remove animations for people who've turned them off */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
@view-transition {
  navigation: auto;
}
.vt {
  view-transition-name: var(--vt);
}

:root {
  --color-gray-hue: 255;
  --color-gray-50: oklch(95% 0.01 var(--color-gray-hue));
  --color-gray-100: oklch(90% 0.01 var(--color-gray-hue));
  --color-gray-200: oklch(80% 0.01 var(--color-gray-hue));
  --color-gray-300: oklch(70% 0.01 var(--color-gray-hue));
  --color-gray-400: oklch(60% 0.01 var(--color-gray-hue));
  --color-gray-500: oklch(50% 0.01 var(--color-gray-hue));
  --color-gray-600: oklch(40% 0.01 var(--color-gray-hue));
  --color-gray-700: oklch(30% 0.01 var(--color-gray-hue));
  --color-gray-800: oklch(20% 0.01 var(--color-gray-hue));
  --color-gray-900: oklch(10% 0.01 var(--color-gray-hue));
  --color-red-hue: 29.23;
  --color-red-50: oklch(99% 0.07 var(--color-red-hue));
  --color-red-100: oklch(90% 0.233 var(--color-red-hue));
  --color-red-200: oklch(80% 0.233 var(--color-red-hue));
  --color-red-300: oklch(70% 0.233 var(--color-red-hue));
  --color-red-400: oklch(60% 0.233 var(--color-red-hue));
  --color-red-500: oklch(50% 0.233 var(--color-red-hue));
  --color-red-600: oklch(40% 0.233 var(--color-red-hue));
  --color-red-700: oklch(30% 0.233 var(--color-red-hue));
  --color-red-800: oklch(20% 0.233 var(--color-red-hue));
  --color-red-900: oklch(10% 0.233 var(--color-red-hue));
  --color-green-hue: 142;
  --color-green-50: oklch(99% 0.07 var(--color-green-hue));
  --color-green-100: oklch(90% 0.233 var(--color-green-hue));
  --color-green-200: oklch(80% 0.233 var(--color-green-hue));
  --color-green-300: oklch(70% 0.233 var(--color-green-hue));
  --color-green-400: oklch(60% 0.233 var(--color-green-hue));
  --color-green-500: oklch(50% 0.233 var(--color-green-hue));
  --color-green-600: oklch(40% 0.233 var(--color-green-hue));
  --color-green-700: oklch(30% 0.233 var(--color-green-hue));
  --color-green-800: oklch(20% 0.233 var(--color-green-hue));
  --color-green-900: oklch(10% 0.233 var(--color-green-hue));
  --color-blue-hue: 260;
  --color-blue-50: oklch(95% 0.233 var(--color-blue-hue));
  --color-blue-100: oklch(90% 0.233 var(--color-blue-hue));
  --color-blue-200: oklch(80% 0.233 var(--color-blue-hue));
  --color-blue-300: oklch(70% 0.233 var(--color-blue-hue));
  --color-blue-400: oklch(60% 0.233 var(--color-blue-hue));
  --color-blue-500: oklch(50% 0.233 var(--color-blue-hue));
  --color-blue-600: oklch(40% 0.233 var(--color-blue-hue));
  --color-blue-700: oklch(30% 0.233 var(--color-blue-hue));
  --color-blue-800: oklch(20% 0.233 var(--color-blue-hue));
  --color-blue-900: oklch(10% 0.233 var(--color-blue-hue));
  --color-teal-hue: 195;
  --color-teal-50: oklch(99.9% 0.01 var(--color-teal-hue));
  --color-teal-100: oklch(99% 0.03 var(--color-teal-hue));
  --color-teal-200: oklch(80% 0.233 var(--color-teal-hue));
  --color-teal-300: oklch(70% 0.233 var(--color-teal-hue));
  --color-teal-400: oklch(60% 0.233 var(--color-teal-hue));
  --color-teal-500: oklch(50% 0.233 var(--color-teal-hue));
  --color-teal-600: oklch(40% 0.233 var(--color-teal-hue));
  --color-teal-700: oklch(30% 0.233 var(--color-teal-hue));
  --color-teal-800: oklch(20% 0.233 var(--color-teal-hue));
  --color-teal-900: oklch(10% 0.233 var(--color-teal-hue));
  --color-text-accent: var(--color-teal-500);
  --color-text-emphasis: var(--color-gray-900);
  --color-text-subtle: var(--color-gray-400);
  --font-size-xs: clamp(0.7813rem, 0.7747rem + 0.0326vw, 0.8rem);
  --font-size-sm: clamp(0.9375rem, 0.9158rem + 0.1087vw, 1rem);
  --font-size-base: clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);
  --font-size-md: clamp(1.35rem, 1.2761rem + 0.3696vw, 1.5625rem);
  --font-size-lg: clamp(1.62rem, 1.5041rem + 0.5793vw, 1.9531rem);
  --font-size-xl: clamp(1.944rem, 1.771rem + 0.8651vw, 2.4414rem);
  --font-size-2xl: clamp(2.3328rem, 2.0827rem + 1.2504vw, 3.0518rem);
  --font-size-3xl: clamp(2.7994rem, 2.4462rem + 1.7658vw, 3.8147rem);
  --font-weight-emphasis: 700;
  --font-weight-regular: 400;
  --line-height: calc(2px + 2ex + 2px);
  --space-3xs: clamp(0.25rem, 0.2283rem + 0.1087vw, 0.3125rem);
  --space-2xs: clamp(0.5rem, 0.4565rem + 0.2174vw, 0.625rem);
  --space-xs: clamp(0.75rem, 0.6848rem + 0.3261vw, 0.9375rem);
  --space-sm: clamp(1rem, 0.913rem + 0.4348vw, 1.25rem);
  --space-md: clamp(1.5rem, 1.3696rem + 0.6522vw, 1.875rem);
  --space-lg: clamp(2rem, 1.8261rem + 0.8696vw, 2.5rem);
  --space-xl: clamp(3rem, 2.7391rem + 1.3043vw, 3.75rem);
  --space-2xl: clamp(4rem, 3.6522rem + 1.7391vw, 5rem);
  --space-3xl: clamp(6rem, 5.4783rem + 2.6087vw, 7.5rem);
  --size-3xs: clamp(0.25rem, 0.2283rem + 0.1087vw, 0.3125rem);
  --size-2xs: clamp(0.5rem, 0.4565rem + 0.2174vw, 0.625rem);
  --size-xs: clamp(0.75rem, 0.6848rem + 0.3261vw, 0.9375rem);
  --size-sm: clamp(1rem, 0.913rem + 0.4348vw, 1.25rem);
  --size-md: clamp(1.5rem, 1.3696rem + 0.6522vw, 1.875rem);
  --size-lg: clamp(2rem, 1.8261rem + 0.8696vw, 2.5rem);
  --size-xl: clamp(3rem, 2.7391rem + 1.3043vw, 3.75rem);
  --size-2xl: clamp(4rem, 3.6522rem + 1.7391vw, 5rem);
  --size-3xl: clamp(6rem, 5.4783rem + 2.6087vw, 7.5rem);
  --border-radius-sm: clamp(0.125rem, 0.1141rem + 0.0543vw, 0.1875rem);
  --border-radius-base: clamp(0.25rem, 0.2283rem + 0.1087vw, 0.3125rem);
  --border-radius-md: clamp(0.5rem, 0.4565rem + 0.2174vw, 0.625rem);
  --border-radius-lg: clamp(0.75rem, 0.6848rem + 0.3261vw, 0.9375rem);
  --border-radius-xl: clamp(1rem, 0.913rem + 0.4348vw, 1.25rem);
  --border-radius-2xl: clamp(1.5rem, 1.3696rem + 0.6522vw, 1.875rem);
  --shadow-color: 0deg 0% 63%;
  --shadow-elevation-low: 0.3px 0.5px 0.7px hsl(var(--shadow-color) / 0.34),
    0.4px 0.8px 1px -1.2px hsl(var(--shadow-color) / 0.34),
    1px 2px 2.5px -2.5px hsl(var(--shadow-color) / 0.34);
  --shadow-elevation-medium: 0.3px 0.5px 0.7px hsl(var(--shadow-color) / 0.36),
    0.8px 1.6px 2px -0.8px hsl(var(--shadow-color) / 0.36),
    2.1px 4.1px 5.2px -1.7px hsl(var(--shadow-color) / 0.36),
    5px 10px 12.6px -2.5px hsl(var(--shadow-color) / 0.36);
  --shadow-elevation-high: 0.3px 0.5px 0.7px hsl(var(--shadow-color) / 0.34),
    1.5px 2.9px 3.7px -0.4px hsl(var(--shadow-color) / 0.34),
    2.7px 5.4px 6.8px -0.7px hsl(var(--shadow-color) / 0.34),
    4.5px 8.9px 11.2px -1.1px hsl(var(--shadow-color) / 0.34),
    7.1px 14.3px 18px -1.4px hsl(var(--shadow-color) / 0.34),
    11.2px 22.3px 28.1px -1.8px hsl(var(--shadow-color) / 0.34),
    17px 33.9px 42.7px -2.1px hsl(var(--shadow-color) / 0.34),
    25px 50px 62.9px -2.5px hsl(var(--shadow-color) / 0.34);
  --ease-swift-out: cubic-bezier(0.175, 0.885, 0.32, 1.1);
  --ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
  --page-padding: 5vw;
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/fonts/inter/regular.woff2") format("woff2");
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/assets/fonts/inter/bold.woff2") format("woff2");
}
body {
  font-family: "Inter", sans-serif;
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height);
  text-box-trim: trim-both;
  text-box-edge: cap text;
}

h1,
.heading-1,
h2,
.heading-2,
h3,
.heading-3,
h4,
.heading-4,
h5,
.heading-5,
h6,
.heading-6 {
  font-weight: var(--font-weight-emphasis);
  color: var(--color-text-emphasis);
}

h1,
.heading-1 {
  font-size: var(--font-size-xl);
  line-height: var(--line-height);
  letter-spacing: -0.05em;
}

h2,
.heading-2 {
  font-size: var(--font-size-lg);
  line-height: var(--line-height);
  letter-spacing: -0.04em;
}

h3,
.heading-3 {
  font-size: var(--font-size-md);
  line-height: var(--line-height);
  letter-spacing: -0.03em;
}

h4,
.heading-4 {
  font-size: var(--font-size-base);
  line-height: var(--line-height);
  letter-spacing: -0.01em;
}

.body {
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height);
}

figcaption,
.caption {
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height);
}

.text-color-accent {
  color: var(--color-text-accent);
}

.text-color-emphasis {
  color: var(--color-text-emphasis);
}

.text-color-subtle {
  color: var(--color-text-subtle);
}

.wrapper {
  padding-inline: var(--page-padding);
}

.row {
  padding-block: var(--space-xl);
}

.container {
  width: 100%;
  max-width: 1680px;
  margin-inline: auto;
}

.flow > * + * {
  margin-block-start: 0.8em;
}

:root {
  --input-text-color: var(--color-gray-900);
  --input-text-color-error: var(--color-red-400);
  --input-placeholder-color: var(--color-gray-300);
  --input-accent-color: var(--color-teal-600);
  --input-border-color: var(--color-gray-200);
  --input-border-color-hover: var(--color-gray-400);
  --input-border-color-focus: var(--color-blue-400);
  --input-border-color-error: var(--color-red-400);
  --input-border-color-success: var(--color-green-300);
  --input-border-radius: var(--border-radius-base);
}

fieldset {
  border: none;
  padding: 0;
}

label {
  font-size: var(--font-size-sm);
  color: var(--color-gray-700);
  display: block;
  padding-block: var(--space-2xs);
}

input,
select,
textarea {
  font-size: var(--font-size-base);
  color: var(--input-text-color);
  outline: 0px;
  accent-color: var(--input-accent-color);
}
input::placeholder,
select::placeholder,
textarea::placeholder {
  color: var(--input-placeholder-color);
}
input :focus,
select :focus,
textarea :focus {
  color: var(--input-text-color);
}
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--input-border-color-focus);
}
input:invalid:not(:placeholder-shown):not(:focus),
select:invalid:not(:placeholder-shown):not(:focus),
textarea:invalid:not(:placeholder-shown):not(:focus) {
  color: var(--input-text-color-error);
  border: 1px solid var(--input-border-color-error);
}

input:not([type=radio]):not([type=checkbox]),
select,
textarea {
  display: block;
  width: 100%;
  margin-top: var(--space-3xs);
  padding: var(--space-2xs) var(--space-xs);
  border: 1px solid var(--input-border-color);
  border-radius: var(--input-border-radius);
  transition: all 0.2s var(--ease-swift-out);
}
input:not([type=radio]):not([type=checkbox]):hover,
select:hover,
textarea:hover {
  border-color: var(--input-border-color-hover);
}

select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: white;
  /* Chevron arrow using encoded SVG */
  background-image: url("data:image/svg+xml;utf8,<svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'><polyline points='4,6 8,10 12,6' stroke='%237c8186' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right var(--space-xs) center;
  background-size: var(--size-sm) var(--size-sm);
  padding-right: var(--space-lg);
}

label:has(input[type=checkbox]) {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--space-3xs);
}
label:has(input[type=checkbox]):has(input:focus-visible) {
  outline: 2px solid var(--input-border-color-focus);
}
label:has(input[type=checkbox]) input {
  height: 0;
  width: 0;
  opacity: 0;
}
label:has(input[type=checkbox])::before {
  content: "";
  display: inline-block;
  width: var(--size-sm);
  height: var(--size-sm);
  border-radius: var(--border-radius-sm);
  border: 1px solid var(--input-border-color);
  transition: all 0.2s var(--ease-swift-out);
}
label:has(input[type=checkbox]):hover::before {
  border-color: var(--input-border-color-hover);
}
label:has(input[type=checkbox]):has(input:checked):before {
  background-color: var(--input-accent-color);
}
label:has(input[type=checkbox]):after {
  content: "";
  color: var(--color-gray-50);
  display: inline-block;
  width: var(--size-sm);
  height: var(--size-sm);
  position: absolute;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http://www.w3.org/2000/svg%22%20viewBox%3D%220%200%20448%20512%22%3E%3Cpath%20fill%3D%22white%22%20d%3D%22M438.6%20105.4c12.5%2012.5%2012.5%2032.8%200%2045.3l-256%20256c-12.5%2012.5-32.8%2012.5-45.3%200l-128-128c-12.5-12.5-12.5-32.8%200-45.3s32.8-12.5%2045.3%200L160%20338.7%20393.4%20105.4c12.5-12.5%2032.8-12.5%2045.3%200z%22/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 60%;
}

form button {
  margin-top: var(--space-md);
}

form details {
  padding-block: var(--space-xs);
}
form details fieldset {
  padding-left: var(--space-2xs);
}

form details summary {
  list-style: none;
  position: relative;
  padding-right: var(--space-lg);
}
form details summary::after {
  content: "";
  display: block;
  width: var(--size-sm);
  height: var(--size-sm);
  position: absolute;
  top: 50%;
  right: 0;
  transform-origin: center center;
  transform: translateY(-50%);
  /* Chevron arrow using encoded SVG */
  background-image: url("data:image/svg+xml;utf8,<svg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'><polyline points='4,6 8,10 12,6' stroke='%237c8186' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-size: var(--size-sm) var(--size-sm);
}

form details[open] summary::after {
  transform: rotate(180deg) translateY(50%);
}

form details + details {
  border-top: 1px solid var(--color-gray-50);
}

form details[open] summary {
  margin-bottom: var(--space-xs);
}

.form-message {
  color: var(--text-color);
  font-size: var(--font-size-sm);
  line-height: var(--line-height);
  margin-block: var(--space-xs);
  padding: var(--space-xs);
  background-color: var(--background-color);
  border: 1px solid var(--border-color);
  border-radius: var(--border-radius-base);
}

.form-message-success {
  --background-color: var(--color-green-50);
  --border-color: var(--color-green-300);
  --text-color: var(--color-green-600);
}

.form-message-error {
  --background-color: var(--color-red-50);
  --border-color: var(--color-red-300);
  --text-color: var(--color-red-600);
}

.visually-hidden {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap;
  width: 1px;
}

.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--size-sm);
  height: var(--size-sm);
  vertical-align: super;
  font-size: var(--font-size-xs);
  text-align: center;
  line-height: 1;
  color: #fff;
  background-color: var(--color-teal-600);
  border-radius: 100%;
}

.text-link-wrapper {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
}
.text-link-wrapper svg {
  flex-shrink: 0;
}
.text-link-wrapper a {
  color: var(--color-text-emphasis);
  text-decoration: underline;
  text-decoration-style: dashed;
  text-underline-offset: var(--space-3xs);
  transition: all 0.2s var(--ease-swift-out);
}
.text-link-wrapper:hover a {
  text-decoration-style: solid;
}

.btn {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-2xs);
  padding: var(--space-xs) var(--space-lg);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-emphasis);
  text-align: center;
  text-decoration: none;
  border: 2px solid;
  border-radius: var(--border-radius-base);
  color: var(--button-text);
  background: var(--button-bg);
  border-color: var(--button-border);
  transition: all 0.5s var(--ease-out-expo);
}
.btn:hover {
  color: var(--button-text-hover);
  background: var(--button-bg-hover);
  border-color: var(--button-border-hover);
}
.btn:hover:not(.btn-tertiary) {
  box-shadow: var(--shadow-elevation-medium);
  transform: scale(1.05);
}
.btn:active {
  color: var(--button-text-active);
  background: var(--button-bg-active);
  border-color: var(--button-border-active);
}
.btn:active:not(.btn-tertiary) {
  box-shadow: var(--shadow-elevation-low);
  transform: scale(1);
}

.btn-small {
  padding: var(--space-2xs) var(--space-xs);
}

.btn-extra-small {
  font-size: var(--font-size-sm);
  padding: var(--space-3xs) var(--space-2xs);
}

.btn-primary {
  --button-bg: var(--color-teal-500);
  --button-bg-hover: var(--color-teal-400);
  --button-bg-active: var(--color-teal-500);
  --button-border: var(--button-bg);
  --button-border-hover: var(--button-bg-hover);
  --button-border-active: var(--button-bg-active);
  --button-text: white;
  --button-text-hover: white;
  --button-text-active: white;
}

.btn-secondary {
  --button-bg: transparent;
  --button-bg-hover: var(--color-teal-500);
  --button-bg-active: var(--color-teal-600);
  --button-border: var(--color-teal-500);
  --button-border-hover: var(--button-bg-hover);
  --button-border-active: var(--button-bg-active);
  --button-text: var(--color-teal-500);
  --button-text-hover: white;
  --button-text-active: white;
}

.btn-tertiary {
  --button-bg: transparent;
  --button-bg-hover: transparent;
  --button-bg-active: transparent;
  --button-border: transparent;
  --button-border-hover: transparent;
  --button-border-active: transparent;
  --button-text: var(--color-teal-500);
  --button-text-hover: var(--color-teal-600);
  --button-text-active: var(--color-teal-500);
}

.icon {
  width: var(--size-md);
  height: var(--size-md);
}

.list-icons li {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
}
.list-icons li .icon {
  flex-shrink: 0;
}

.main-header {
  position: relative;
  padding-block: var(--space-sm);
  border-bottom: 1px solid var(--color-gray-50);
  box-shadow: var(--shadow-elevation-low);
}
.main-header .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.main-header nav {
  padding-block: var(--space-lg);
  padding-inline: var(--page-padding);
  position: fixed;
  top: 0;
  left: 0;
  z-index: 100;
  height: 100dvh;
  width: 100vw;
  background-color: white;
  transition: transform 0.2s var(--ease-out-expo);
}
@media screen and (min-width: 1024px) {
  .main-header nav {
    position: static;
    padding: 0;
    height: auto;
    width: auto;
    transform: translateY(0);
  }
}
.main-header:not(.open) nav {
  transform: translateY(-200dvh);
}
@media screen and (min-width: 1024px) {
  .main-header:not(.open) nav {
    transform: translateY(0);
  }
}
.main-header nav a:not(.btn) {
  color: var(--color-text-emphasis);
  text-decoration: none;
  font-weight: var(--font-weight-emphasis);
  transition: color 0.2s var(--ease-swift-out);
}
.main-header nav a:not(.btn):hover {
  color: var(--color-text-accent);
}
@media screen and (min-width: 1024px) {
  .main-header nav ul {
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    gap: var(--space-md);
  }
}
.main-header nav ul > li + li {
  margin-block-start: var(--space-xs);
}
@media screen and (min-width: 1024px) {
  .main-header nav ul > li + li {
    margin-block-start: 0;
  }
}
.main-header nav .btn {
  margin-block-start: var(--space-md);
}
@media screen and (min-width: 1024px) {
  .main-header nav .btn {
    margin-block-start: 0;
  }
}
.main-header .menu-toggle {
  background-color: transparent;
  border: 0;
}
.main-header .menu-toggle.menu-close {
  width: 100%;
  display: flex;
  justify-content: flex-end;
}
@media screen and (min-width: 1024px) {
  .main-header .menu-toggle.menu-close, .main-header .menu-toggle.menu-open {
    display: none;
  }
}

footer {
  background-color: var(--color-teal-800);
}
footer,
footer a,
footer .heading-4 {
  color: var(--color-teal-100);
}

footer a {
  transition: opacity 0.2s var(----ease-swift-out);
  text-decoration: none;
  display: block;
}
footer a:hover {
  opacity: 0.6;
}

footer .heading-4 {
  margin-block-end: var(--space-xs);
}

footer .container {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-lg);
}
footer .container > * {
  flex-basis: 300px;
}

footer .container.copyright {
  align-items: center;
  margin-block-start: var(--space-md);
  padding-block-start: var(--space-md);
  border-top: 1px solid var(--color-teal-700);
}
footer .container.copyright a {
  display: inline-block;
  text-decoration: underline;
  text-decoration-style: dashed;
  text-underline-offset: var(--space-3xs);
  transition: all 0.2s var(--ease-swift-out);
}

footer .logo-social {
  display: flex;
  flex-direction: column;
}
footer .logo-social a {
  margin-block-end: auto;
}

footer .social-links {
  display: flex;
  gap: var(--space-lg);
  align-items: center;
  margin-block-start: var(--space-lg);
}

footer .contact-details > li + li,
footer .quick-links > li + li {
  margin-block-start: var(--space-xs);
}

footer .contact-details li {
  display: flex;
  align-items: start;
  gap: var(--space-2xs);
}
footer .contact-details li .icon {
  opacity: 0.3;
}

.media-outer-wrapper {
  background-color: var(--color-gray-700);
}

.media-wrapper {
  aspect-ratio: 4/3;
}
.media-wrapper:has(video) {
  display: flex;
  align-items: center;
}

.media-wrapper img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.media-wrapper video {
  width: 100%;
}

.glide .glide__bullets {
  position: absolute;
  bottom: var(--space-2xs);
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  width: 90%;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-3xs);
}

.glide .glide__bullets .glide__bullet {
  padding: 0;
  flex-shrink: 0;
  width: var(--size-3xs);
  height: var(--size-3xs);
  opacity: 1;
  border-radius: 100%;
  background-color: var(--color-gray-200);
  border: 0;
  vertical-align: middle;
  transition: transform 0.2s var(--ease-out-expo);
  box-shadow: var(--shadow-elevation-low);
}

.glide .glide__bullets .glide__bullet--active {
  background-color: var(--color-teal-400);
  opacity: 1;
  transform: scale(1.5);
}

.media-outer-wrapper .arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  padding: 0;
  width: var(--size-md);
  height: var(--size-md);
  border-radius: 100%;
  border: 1px solid var(--color-gray-100);
  background-color: white;
  display: flex;
  justify-content: center;
  align-items: center;
  box-shadow: var(--shadow-elevation-low);
  opacity: 0;
  transition: opacity 0.2s var(--ease-swift-out);
}
.media-outer-wrapper .arrow .icon {
  color: var(--color-gray-400);
  width: var(--size-sm);
  height: var(--size-sm);
}
.media-outer-wrapper .arrow.arrow-prev {
  left: 0;
  margin-inline-start: var(--space-2xs);
}
.media-outer-wrapper .arrow.arrow-prev .icon {
  margin-right: 1px;
}
.media-outer-wrapper .arrow.arrow-next {
  right: 0;
  margin-inline-end: var(--space-2xs);
}
.media-outer-wrapper .arrow.arrow-next .icon {
  margin-left: 1px;
}

.media-outer-wrapper:hover .arrow {
  opacity: 1;
}

ul.pagination {
  --button-bg-color: transparent;
  --button-bg-color-hover: var(--color-teal-600);
  --button-bg-color-active: var(--color-teal-500);
  --button-border-color: var(--color-teal-500);
  --button-border-color-hover: var(--color-teal-600);
  --button-border-color-active: var(--color-teal-500);
  --button-text-color: var(--color-teal-500);
  --button-text-color-hover: white;
  --button-text-color-active: white;
  list-style: none;
  padding: 0;
  margin-inline: 0;
  margin-block: var(--space-xl);
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-2xs);
}
ul.pagination li:not(:has(a, button)) {
  height: var(--size-lg);
  display: flex;
  justify-content: center;
  align-items: end;
  padding-inline: var(--space-3xs);
}
ul.pagination a,
ul.pagination button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--size-lg);
  height: var(--size-lg);
  color: var(--button-text-color);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  text-decoration: none;
  background: var(--button-bg-color);
  border: 1px solid var(--button-border-color);
  border-radius: var(--border-radius-base);
  transition: all 0.5s var(--ease-out-expo);
}
ul.pagination a:hover,
ul.pagination button:hover,
ul.pagination a.hover,
ul.pagination button.hover {
  color: var(--button-text-color-hover);
  background-color: var(--button-bg-color-hover);
  border-color: var(--button-border-color-hover);
}
ul.pagination a:active,
ul.pagination button:active,
ul.pagination a.active,
ul.pagination button.active {
  color: var(--button-text-color-active);
  background-color: var(--button-bg-color-active);
  border-color: var(--button-border-color-active);
}

@media screen and (min-width: 1024px) {
  .property-list-page {
    display: grid;
    grid-template-columns: 200px minmax(0, 1fr);
    gap: var(--space-md);
    align-items: start;
  }
}

.property-list-page aside .btn[aria-expanded] {
  width: 100%;
}
@media screen and (min-width: 1024px) {
  .property-list-page aside .btn[aria-expanded] {
    display: none;
  }
}
.property-list-page aside .btn[aria-expanded=true] {
  margin-bottom: var(--space-md);
}
.property-list-page aside form {
  height: 0;
  overflow: clip;
  margin-bottom: var(--space-md);
}
@media screen and (min-width: 1024px) {
  .property-list-page aside form {
    height: auto;
    margin-bottom: 0;
  }
}

.property-list-page details:last-of-type {
  border-bottom: 1px solid var(--color-gray-50);
}
@media screen and (min-width: 1024px) {
  .property-list-page details:last-of-type {
    border-bottom-width: 0;
  }
}

.property-grid {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
  gap: var(--space-md);
  scroll-margin-top: var(--space-3xl);
}
.loading .property-grid {
  display: none;
}

.property-grid-skeleton {
  display: none;
}
.loading .property-grid-skeleton {
  display: grid;
}

.property-card {
  overflow: clip;
  border-radius: var(--border-radius-md);
  border: 1px solid var(--color-gray-100);
  box-shadow: var(--shadow-elevation-low);
  max-width: 100%;
}

.property-card ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.property-card .summary {
  display: block;
  padding: var(--space-md) var(--space-sm);
  text-decoration: none;
}

.property-card .ref {
  margin-bottom: var(--space-3xs);
}

.property-card .price {
  color: var(--color-text-accent);
  margin-bottom: var(--space-sm);
}

.property-card .details {
  list-style: none;
  padding: 0;
  margin: 0;
}

.property-card .details > li + li {
  margin-top: var(--space-2xs);
}

.property-card .details li {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
  color: var(--color-gray-600);
}

.property-card .icon {
  color: var(--color-gray-200);
}

.card-skeleton {
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  padding: 16px;
  width: 320px;
  max-width: 100%;
}

.skeleton-image {
  width: 100%;
  height: 180px;
  border-radius: 12px;
  background: #e2e8f0;
  margin-bottom: 16px;
  animation: pulse 1.5s infinite ease-in-out;
}

.skeleton-content {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.skeleton-title,
.skeleton-price {
  height: 22px;
  border-radius: 6px;
  background: #e2e8f0;
  animation: pulse 1.5s infinite ease-in-out;
}

.skeleton-title {
  width: 60%;
}

.skeleton-price {
  width: 40%;
}

.skeleton-detail {
  height: 16px;
  width: 80%;
  border-radius: 6px;
  background: #e2e8f0;
  animation: pulse 1.5s infinite ease-in-out;
}

@keyframes pulse {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
  100% {
    opacity: 1;
  }
}
.filter-and-sort {
  margin-bottom: var(--space-lg);
  display: flex;
  flex-direction: column-reverse;
  gap: var(--space-md);
  border-bottom: 1px solid var(--color-gray-100);
}
@media screen and (min-width: 600px) {
  .filter-and-sort {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }
}

.filter-and-sort .for-sale-or-rent {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}
.filter-and-sort .for-sale-or-rent label {
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-emphasis);
  color: var(--color-text-subtle);
  border-bottom: 4px solid transparent;
  padding-block: var(--space-xs);
}
.filter-and-sort .for-sale-or-rent label:has(input:checked) {
  color: var(--color-text-accent);
  border-color: var(--color-text-accent);
}
.filter-and-sort .for-sale-or-rent input {
  width: 0;
  height: 0;
  overflow: clip;
  opacity: 0;
}

@media screen and (min-width: 600px) {
  .filter-and-sort .sort label {
    display: flex;
    align-items: baseline;
    gap: var(--space-2xs);
    white-space: nowrap;
    padding-block: 0;
  }
}

.property-details-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-lg);
}
@media screen and (min-width: 1280px) {
  .property-details-grid {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  }
}

.property-details-grid main > * + * {
  margin-top: var(--space-lg);
}

.property-details-grid h1 {
  margin-top: var(--space-3xs);
  margin-bottom: var(--space-2xs);
}
.property-details-grid h2:has(+ .text-link-wrapper) {
  margin-bottom: var(--space-xs);
}
.property-details-grid h3 {
  margin-bottom: var(--space-2xs);
}

.property-details-grid .media-outer-wrapper {
  border: 1px solid var(--color-gray-100);
  border-radius: var(--border-radius-md);
  overflow: clip;
  aspect-ratio: 4/3;
  box-shadow: --shadow-elevation-low;
}
.property-details-grid .media-outer-wrapper img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.property-details-grid .list-icons {
  --grid: repeat(2, minmax(0, 1fr));
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(15rem, 100%), 1fr));
  gap: var(--space-2xs) var(--space-xs);
}

.property-details-grid .text-link-wrapper .icon,
.property-details-grid .list-icons .icon {
  color: var(--color-gray-300);
}

.property-details-grid .description {
  white-space: pre-line;
}

.property-details-grid aside {
  border: 1px solid var(--color-gray-100);
  padding: var(--space-lg) var(--space-md) var(--space-lg) var(--space-md);
  border-radius: var(--border-radius-md);
  box-shadow: var(--shadow-elevation-medium);
  align-self: start;
  position: sticky;
  top: var(--space-xl);
  left: 0;
}

.property-details-grid aside h3 {
  margin-block-end: var(--space-md);
}

.property-details-grid aside .form-separator {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-2xs);
  margin-top: var(--space-sm);
  margin-bottom: var(--space-3xs);
  color: var(--color-text-subtle);
  font-size: var(--font-size-sm);
}
.property-details-grid aside .form-separator hr {
  flex-shrink: 0;
  width: 30%;
  color: var(--color-gray-50);
  opacity: 0.3;
}

.property-details-grid aside .btn {
  width: 100%;
}

.home-hero {
  background-color: var(--color-gray-50);
}
.home-hero h1 {
  margin-block-end: var(--space-md);
}
.home-hero .btn-tertiary {
  margin-block-start: var(--space-sm);
}
@media screen and (min-width: 768px) {
  .home-hero h1 {
    text-align: center;
  }
  .home-hero form {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--space-sm);
  }
  .home-hero .btn-tertiary {
    margin-inline: auto;
  }
}

.home-property-grid .heading {
  display: flex;
  justify-content: space-between;
  align-items: last baseline;
  margin-block-end: var(--space-md);
}
.home-property-grid .property-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
  gap: var(--space-md);
  align-items: start;
  overflow: hidden;
}
@media screen and (min-width: 1024px) {
  .home-property-grid .property-list {
    grid-template-rows: 1fr;
    grid-auto-rows: 0;
    row-gap: 0;
  }
}
.home-property-grid .btn {
  width: max-content;
  margin-inline: auto;
  margin-block-start: var(--space-xl);
}

.home-recently-viewed {
  display: none;
}

.loading .home-recently-viewed,
.home-recently-viewed:has(.property-list[data-show=true]) {
  display: inherit;
}

/*# sourceMappingURL=styles.css.map */