:root {
  --bs-font-sans-serif: "Manrope", "Helvetica Neue", Arial, sans-serif;
  --bs-body-font-family: var(--bs-font-sans-serif);
  --bs-border-radius-sm: .5rem;
  --bs-border-radius: 1rem;
  --bs-border-radius-lg: 1.5rem;

  --ol-font-display: "Cormorant Garamond", Georgia, serif;
  --ol-transition: 180ms ease;
  --ol-button-lift: -.125rem;

  /* Form controls remain light in both color modes. */
  --ol-input-bg: #fff;
  --ol-input-color: #14372d;
  --ol-input-placeholder: #6c7772;
  --ol-input-border: #b9c1bc;
  --ol-dropdown-hover-bg: #f3efe6;
}

#main {
  padding-top: var(--header-h); 
}

/* Keep anchored headings visible below the measured, fixed navigation. */
main :is(section, fieldset)[id] {
  scroll-margin-top: calc(var(--header-h, 6rem) + 1rem);
}

/* Bootstrap's stock white badge text assumes darker palette backgrounds. */
.badge.text-bg-secondary {
  color: var(--ol-secondary-color) !important;
}

.badge.text-bg-primary {
  color: var(--ol-action-color) !important;
}

[data-bs-theme="light"] {
  --bs-body-bg: #f3efe6;
  --bs-body-bg-rgb: 243, 239, 230;
  --bs-body-color: #14372d;
  --bs-body-color-rgb: 20, 55, 45;
  --bs-heading-color: #0f2f27;
  --bs-emphasis-color: #0f2f27;
  --bs-emphasis-color-rgb: 15, 47, 39;
  --bs-secondary-color: #626b66;
  --bs-secondary-bg: #e9e6df;
  --bs-secondary-bg-rgb: 233, 230, 223;
  --bs-tertiary-bg: #fcfaf5;
  --bs-tertiary-bg-rgb: 252, 250, 245;
  --bs-border-color: #d4cabc;

  --bs-primary: #2c6570;
  --bs-primary-rgb: 44, 101, 112;
  --bs-secondary: #eee8dd;
  --bs-secondary-rgb: 238, 232, 221;
  --bs-success: #497455;
  --bs-success-rgb: 73, 116, 85;
  --bs-danger: #af4d44;
  --bs-danger-rgb: 175, 77, 68;

  --bs-success-bg-subtle: #d6e8d8;
  --bs-success-text-emphasis: #214c31;
  --bs-success-border-subtle: #a2c5a8;
  --bs-danger-bg-subtle: #f0d4cf;
  --bs-danger-text-emphasis: #7c2e27;
  --bs-danger-border-subtle: #d89b92;

  --bs-link-color: var(--bs-primary);
  --bs-link-color-rgb: var(--bs-primary-rgb);
  --bs-link-hover-color: #23545d;
  --bs-link-hover-color-rgb: 35, 84, 93;

  --ol-card-bg: #fffdf9;
  --ol-secondary-card-bg: #f7f4ee;
  --ol-success-card-bg: #edf5ee;
  --ol-danger-card-bg: #fae9e5;
  --ol-success-muted: #496851;
  --ol-danger-muted: #894a42;
  --ol-primary-hover: #23545d;
  --ol-secondary-hover: #ddd3c5;
  --ol-success-hover: #355944;
  --ol-danger-hover: #8e3932;
  --ol-action-color: #fff;
  --ol-secondary-color: #14372d;
  --ol-shadow: 0 1.5rem 4rem rgba(38, 51, 44, .12);
  --ol-header-shadow: 0 .75rem 2rem rgba(38, 51, 44, .1);
  --ol-card-hover-shadow: 0 1rem 2.5rem rgba(38, 51, 44, .12);
  --ol-button-shadow: 0 .25rem .7rem rgba(38, 51, 44, .1);
  --ol-button-hover-shadow: 0 .55rem 1.1rem rgba(38, 51, 44, .16);
}

[data-bs-theme="dark"] {
  --bs-body-bg: #0d211b;
  --bs-body-bg-rgb: 13, 33, 27;
  --bs-body-color: #f3efe6;
  --bs-body-color-rgb: 243, 239, 230;
  --bs-heading-color: #fff9ef;
  --bs-emphasis-color: #fff9ef;
  --bs-emphasis-color-rgb: 255, 249, 239;
  --bs-secondary-color: #aab4ae;
  --bs-secondary-bg: #1c2824;
  --bs-secondary-bg-rgb: 28, 40, 36;
  --bs-tertiary-bg: #122a22;
  --bs-tertiary-bg-rgb: 18, 42, 34;
  --bs-border-color: #315047;

  --bs-primary: #78b5ba;
  --bs-primary-rgb: 120, 181, 186;
  --bs-secondary: #efe7d9;
  --bs-secondary-rgb: 239, 231, 217;
  --bs-success: #a7cdb0;
  --bs-success-rgb: 167, 205, 176;
  --bs-danger: #e29384;
  --bs-danger-rgb: 226, 147, 132;

  --bs-success-bg-subtle: #173e2c;
  --bs-success-text-emphasis: #c4e2ca;
  --bs-success-border-subtle: #3c6c4d;
  --bs-danger-bg-subtle: #4a2722;
  --bs-danger-text-emphasis: #f5c1b6;
  --bs-danger-border-subtle: #875047;

  --bs-link-color: var(--bs-primary);
  --bs-link-color-rgb: var(--bs-primary-rgb);
  --bs-link-hover-color: #91c7ca;
  --bs-link-hover-color-rgb: 145, 199, 202;

  --ol-card-bg: #173329;
  --ol-secondary-card-bg: #24332e;
  --ol-success-card-bg: #1d4934;
  --ol-danger-card-bg: #57302a;
  --ol-success-muted: #9ec5a7;
  --ol-danger-muted: #e3a79b;
  --ol-primary-hover: #5f969d;
  --ol-secondary-hover: #ddd2c1;
  --ol-success-hover: #8db598;
  --ol-danger-hover: #cf7566;
  --ol-action-color: #0d211b;
  --ol-secondary-color: #0d211b;
  --ol-shadow: 0 1.5rem 4rem rgba(0, 0, 0, .32);
  --ol-header-shadow: 0 .75rem 2rem rgba(0, 0, 0, .24);
  --ol-card-hover-shadow: 0 1rem 2.5rem rgba(0, 0, 0, .3);
  --ol-button-shadow: 0 .25rem .7rem rgba(0, 0, 0, .2);
  --ol-button-hover-shadow: 0 .6rem 1.2rem rgba(0, 0, 0, .34);
}

/* Header */
.site-header {
  position: fixed;
  inset: 1rem 0 auto;
  z-index: 1030;
  padding-inline: 1rem;
  pointer-events: none;
  transition: transform .22s ease, opacity .22s ease;
}

.site-header .navbar {
  pointer-events: auto;
}

.header-stick {
  width: 100%;
  margin-inline: auto;
  padding: .55rem .75rem;
  background: var(--ol-card-bg);
  border: var(--bs-border-width) solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  box-shadow: var(--ol-header-shadow);
}

.site-header.is-hidden {
  transform: translateY(-140%);
  opacity: 0;
  pointer-events: none;
}

/* Buttons */
.btn {
  --bs-btn-border-radius: var(--bs-border-radius-sm);
  --bs-btn-font-weight: 500;

  transform: translateY(0);
  transition:
    color var(--ol-transition),
    background-color var(--ol-transition),
    border-color var(--ol-transition),
    box-shadow var(--ol-transition),
    transform var(--ol-transition);
}

.btn:not(.btn-link) {
  box-shadow: var(--ol-button-shadow);
}

/* Solid button palettes */
.btn-primary {
  --ol-btn-color: var(--ol-action-color);
  --ol-btn-bg: var(--bs-primary);
  --ol-btn-hover-bg: var(--ol-primary-hover);
  --ol-btn-focus-rgb: var(--bs-primary-rgb);
}

.btn-secondary {
  --ol-btn-color: var(--ol-secondary-color);
  --ol-btn-bg: var(--bs-secondary);
  --ol-btn-hover-bg: var(--ol-secondary-hover);
  --ol-btn-focus-rgb: var(--bs-secondary-rgb);
}

.btn-success {
  --ol-btn-color: var(--ol-action-color);
  --ol-btn-bg: var(--bs-success);
  --ol-btn-hover-bg: var(--ol-success-hover);
  --ol-btn-focus-rgb: var(--bs-success-rgb);
}

.btn-danger {
  --ol-btn-color: var(--ol-action-color);
  --ol-btn-bg: var(--bs-danger);
  --ol-btn-hover-bg: var(--ol-danger-hover);
  --ol-btn-focus-rgb: var(--bs-danger-rgb);
}

/* Outline button palettes */
.btn-outline-primary {
  --ol-btn-color: var(--bs-primary);
  --ol-btn-bg: transparent;
  --ol-btn-border: var(--bs-primary);
  --ol-btn-hover-color: var(--ol-action-color);
  --ol-btn-hover-bg: var(--ol-primary-hover);
  --ol-btn-focus-rgb: var(--bs-primary-rgb);
  --ol-btn-disabled-bg: transparent;
}

.btn-outline-danger {
  --ol-btn-color: var(--bs-danger);
  --ol-btn-bg: transparent;
  --ol-btn-border: var(--bs-danger);
  --ol-btn-hover-color: var(--ol-action-color);
  --ol-btn-hover-bg: var(--ol-danger-hover);
  --ol-btn-focus-rgb: var(--bs-danger-rgb);
  --ol-btn-disabled-bg: transparent;
}

/*
 * Bootstrap 5.3 defines component-level --bs-btn-* values directly on
 * .btn-* classes. Map our semantic palette into those variables so both
 * light and dark modes always use the OriginLink colors.
 */
:is(
  .btn-primary,
  .btn-secondary,
  .btn-success,
  .btn-danger,
  .btn-outline-primary,
  .btn-outline-danger
) {
  --bs-btn-color: var(--ol-btn-color);
  --bs-btn-bg: var(--ol-btn-bg);
  --bs-btn-border-color: var(--ol-btn-border, var(--ol-btn-bg));
  --bs-btn-hover-color: var(--ol-btn-hover-color, var(--ol-btn-color));
  --bs-btn-hover-bg: var(--ol-btn-hover-bg);
  --bs-btn-hover-border-color: var(--ol-btn-hover-bg);
  --bs-btn-focus-shadow-rgb: var(--ol-btn-focus-rgb);
  --bs-btn-active-color: var(--ol-btn-hover-color, var(--ol-btn-color));
  --bs-btn-active-bg: var(--ol-btn-hover-bg);
  --bs-btn-active-border-color: var(--ol-btn-hover-bg);
  --bs-btn-disabled-color: var(--ol-btn-color);
  --bs-btn-disabled-bg: var(--ol-btn-disabled-bg, var(--ol-btn-bg));
  --bs-btn-disabled-border-color: var(--ol-btn-border, var(--ol-btn-bg));
}

.btn:active,
.btn.active {
  transform: translateY(0);
  box-shadow: var(--ol-button-shadow);
}

@media (hover: hover) and (pointer: fine) {
  .btn:not(:disabled):not(.disabled):hover {
    transform: translateY(var(--ol-button-lift));
    box-shadow: var(--ol-button-hover-shadow);
  }
}

/* Forms and dropdowns */
.form-control,
.form-select {
  color: var(--ol-input-color);
  background-color: var(--ol-input-bg);
  border-color: var(--ol-input-border);
  color-scheme: light;
}

.form-select {
  --bs-form-select-bg-img:
    url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2314372d' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
}

.form-control:focus,
.form-select:focus {
  color: var(--ol-input-color);
  background-color: var(--ol-input-bg);
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb), .18);
}

.form-control::placeholder {
  color: var(--ol-input-placeholder);
  opacity: 1;
}

.form-control:disabled,
.form-select:disabled,
.form-control[readonly]:not(.form-control-plaintext) {
  color: var(--ol-input-placeholder);
  background-color: var(--ol-input-bg);
  opacity: .65;
}

.form-select option {
  color: var(--ol-input-color);
  background: var(--ol-input-bg);
}

.form-check-input {
  background-color: var(--ol-input-bg);
  border-color: var(--ol-input-border);
  color-scheme: light;
}

.form-check-input:checked {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.form-check-input:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb), .18);
}

.form-control:-webkit-autofill,
.form-control:-webkit-autofill:hover {
  -webkit-text-fill-color: var(--ol-input-color);
  box-shadow: 0 0 0 1000px var(--ol-input-bg) inset;
  caret-color: var(--ol-input-color);
}

.form-control:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--ol-input-color);
  box-shadow:
    0 0 0 1000px var(--ol-input-bg) inset,
    0 0 0 .25rem rgba(var(--bs-primary-rgb), .18);
  caret-color: var(--ol-input-color);
}

.dropdown-menu {
  --bs-dropdown-color: var(--ol-input-color);
  --bs-dropdown-bg: var(--ol-input-bg);
  --bs-dropdown-border-color: var(--ol-input-border);
  --bs-dropdown-link-color: var(--ol-input-color);
  --bs-dropdown-link-hover-color: var(--ol-input-color);
  --bs-dropdown-link-hover-bg: var(--ol-dropdown-hover-bg);
  --bs-dropdown-link-active-color: var(--ol-action-color);
  --bs-dropdown-link-active-bg: var(--bs-primary);
}

/* Cards and semantic states */
.card {
  --bs-card-bg: var(--ol-card-bg);
  --bs-card-color: var(--bs-body-color);
  --bs-card-border-color: var(--bs-border-color);
  --bs-card-border-radius: var(--bs-border-radius);
  --bs-card-cap-bg: transparent;
  --bs-card-cap-color: var(--bs-heading-color);

  transition:
    transform var(--ol-transition),
    border-color var(--ol-transition),
    box-shadow var(--ol-transition);
}

.card-title {
  color: var(--bs-heading-color);
}

.card:hover {
  transform: translateY(-.25rem);
  border-color: var(--bs-primary);
  box-shadow: var(--ol-card-hover-shadow);
}

.shadow-lg {
  box-shadow: var(--ol-shadow) !important;
}

.text-bg-success {
  color: var(--bs-success-text-emphasis) !important;
  background: var(--bs-success-bg-subtle) !important;
  border: var(--bs-border-width) solid var(--bs-success-border-subtle);
}

.text-bg-danger {
  color: var(--bs-danger-text-emphasis) !important;
  background: var(--bs-danger-bg-subtle) !important;
  border: var(--bs-border-width) solid var(--bs-danger-border-subtle);
}

/* Logo and navigation */
.logo {
  display: block;
  width: 135px;
  height: 30px;
  background-color: var(--bs-body-color);
  -webkit-mask:
    url("/static/logo_text.svg")
    center / contain
    no-repeat;
  mask:
    url("/static/logo_text.svg")
    center / contain
    no-repeat;
}

.site-header .nav-link {
  position: relative;
  padding: .35rem 0;
}

.site-header .nav-link::after {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  content: "";
  background: var(--ol-primary-hover);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform var(--ol-transition);
}

.site-header .nav-link:hover::after,
.site-header .nav-link:focus-visible::after {
  transform: scaleX(1);
  transform-origin: left;
}

.mobile-nav {
  position: relative;
}

.mobile-nav summary {
  list-style: none;
}

.mobile-nav summary::-webkit-details-marker {
  display: none;
}

.mobile-nav__toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid var(--bs-border-color);
  border-radius: 50%;
  font-size: 1.55rem;
  cursor: pointer;
}

.mobile-nav__panel {
  position: absolute;
  top: calc(100% + .8rem);
  right: 0;
  display: grid;
  gap: .5rem;
  min-width: min(19rem, calc(100vw - 2rem));
  padding: .75rem;
  background: var(--ol-card-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  box-shadow: var(--ol-shadow);
}

.mobile-nav__panel > a:not(.btn) {
  padding: .7rem .75rem;
  color: var(--bs-body-color);
  text-decoration: none;
  border-radius: .55rem;
}

.mobile-nav__panel > a:not(.btn):is(:hover, :focus-visible) {
  background: rgba(var(--bs-body-color-rgb), .08);
}

/* Footer */
footer {
  background: var(--bs-tertiary-bg);
}

footer .footer-links {
  padding-left: .75rem;
  border-left: 1px solid var(--bs-border-color);
}

footer .footer-link {
  color: var(--bs-secondary-color);
  text-decoration: none;
  font-weight: 500;
}

footer .footer-link:is(:hover, :focus) {
  color: var(--bs-body-color);
}

footer .footer-link:focus-visible {
  outline: 2px solid var(--bs-primary);
  outline-offset: 2px;
  border-radius: .25rem;
}

/* Language flags */
.om-lang {
  min-width: 220px;
}

.om-flag {
  display: inline-flex;
  width: 1.4rem;
  height: 1.05rem;
  overflow: hidden;
  background: var(--bs-tertiary-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: .25rem;
}

.om-flag :is(svg, img) {
  display: block;
  width: 100%;
  height: 100%;
}
