:root,
[data-bs-theme="light"] {
  --fm-bg: #eef3f2;
  --fm-surface: #ffffff;
  --fm-surface-2: #f6f9f8;
  --fm-ink: #12302c;
  --fm-muted: #5d716d;
  --fm-line: #d3dedb;
  --fm-accent: #0f6b63;
  --fm-accent-hover: #0b5751;
  --fm-accent-ink: #ffffff;
  --fm-accent-soft: #dff1ea;
  --fm-warn: #8a5a0b;
  --fm-warn-soft: #fbf1dc;
  --fm-danger: #a3281f;
  --fm-danger-soft: #f8e4e1;
  --fm-info-soft: #e3eef5;
  --fm-info: #1f4f6e;
  --fm-whatsapp: #1b8a4a;
  --fm-whatsapp-hover: #157239;

  --bs-body-font-family: "Instrument Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --bs-body-bg: var(--fm-bg);
  --bs-body-color: var(--fm-ink);
  --bs-emphasis-color: var(--fm-ink);
  --bs-secondary-color: var(--fm-muted);
  --bs-tertiary-bg: var(--fm-surface-2);
  --bs-border-color: var(--fm-line);
  --bs-border-radius: .625rem;
  --bs-border-radius-sm: .5rem;
  --bs-border-radius-lg: .75rem;
  --bs-primary: var(--fm-accent);
  --bs-primary-rgb: 15, 107, 99;
  --bs-primary-text-emphasis: var(--fm-accent);
  --bs-primary-bg-subtle: var(--fm-accent-soft);
  --bs-link-color: var(--fm-accent);
  --bs-link-color-rgb: 15, 107, 99;
  --bs-link-hover-color: var(--fm-accent-hover);
  --bs-link-hover-color-rgb: 11, 87, 81;
  --bs-focus-ring-color: rgba(15, 107, 99, .28);
  --bs-success-text-emphasis: var(--fm-accent);
  --bs-success-bg-subtle: var(--fm-accent-soft);
  --bs-success-border-subtle: transparent;
  --bs-danger-text-emphasis: var(--fm-danger);
  --bs-danger-bg-subtle: var(--fm-danger-soft);
  --bs-danger-border-subtle: transparent;
}

[data-bs-theme="dark"] {
  color-scheme: dark;
  --fm-bg: #0e1b19;
  --fm-surface: #152724;
  --fm-surface-2: #1a2f2b;
  --fm-ink: #e3efec;
  --fm-muted: #93aaa5;
  --fm-line: #28403c;
  --fm-accent: #4fc1b4;
  --fm-accent-hover: #6fd1c5;
  --fm-accent-ink: #06201c;
  --fm-accent-soft: #12332b;
  --fm-warn: #f0c46e;
  --fm-warn-soft: #33290f;
  --fm-danger: #ff8f84;
  --fm-danger-soft: #3a1a17;
  --fm-info-soft: #14283a;
  --fm-info: #9cc8e6;
  --fm-whatsapp: #25b862;
  --fm-whatsapp-hover: #2fcb70;

  --bs-body-bg: var(--fm-bg);
  --bs-body-color: var(--fm-ink);
  --bs-emphasis-color: var(--fm-ink);
  --bs-secondary-color: var(--fm-muted);
  --bs-secondary-bg: var(--fm-surface-2);
  --bs-tertiary-bg: var(--fm-surface-2);
  --bs-border-color: var(--fm-line);
  --bs-primary: var(--fm-accent);
  --bs-primary-rgb: 79, 193, 180;
  --bs-primary-text-emphasis: var(--fm-accent);
  --bs-primary-bg-subtle: var(--fm-accent-soft);
  --bs-link-color: var(--fm-accent);
  --bs-link-color-rgb: 79, 193, 180;
  --bs-link-hover-color: var(--fm-accent-hover);
  --bs-link-hover-color-rgb: 111, 209, 197;
  --bs-focus-ring-color: rgba(79, 193, 180, .32);
  --bs-success-text-emphasis: var(--fm-accent);
  --bs-success-bg-subtle: var(--fm-accent-soft);
  --bs-danger-text-emphasis: var(--fm-danger);
  --bs-danger-bg-subtle: var(--fm-danger-soft);
}

html { scroll-padding-top: env(safe-area-inset-top, 0px); }
body {
  min-height: 100dvh;
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "tnum" 1;
}
h1, h2, h3, .h1, .h2, .h3, .h4, .h5 { letter-spacing: -.02em; font-weight: 650; }
a { text-underline-offset: .18em; }
.font-mono { font-family: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace; letter-spacing: .02em; }
.min-w-0 { min-width: 0; }
.fw-medium { font-weight: 550 !important; }

.btn {
  --bs-btn-font-weight: 600;
  --bs-btn-border-radius: .625rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease, transform .1s ease;
}
.btn:active:not(:disabled) { transform: scale(.98); }
.btn-lg { --bs-btn-padding-y: .75rem; --bs-btn-font-size: 1.05rem; }
.btn-primary {
  --bs-btn-bg: var(--fm-accent);
  --bs-btn-border-color: var(--fm-accent);
  --bs-btn-color: var(--fm-accent-ink);
  --bs-btn-hover-bg: var(--fm-accent-hover);
  --bs-btn-hover-border-color: var(--fm-accent-hover);
  --bs-btn-hover-color: var(--fm-accent-ink);
  --bs-btn-active-bg: var(--fm-accent-hover);
  --bs-btn-active-border-color: var(--fm-accent-hover);
  --bs-btn-active-color: var(--fm-accent-ink);
  --bs-btn-disabled-bg: var(--fm-accent);
  --bs-btn-disabled-border-color: var(--fm-accent);
  --bs-btn-disabled-color: var(--fm-accent-ink);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}
.btn-outline-primary {
  --bs-btn-color: var(--fm-accent);
  --bs-btn-border-color: var(--fm-accent);
  --bs-btn-hover-bg: var(--fm-accent-soft);
  --bs-btn-hover-border-color: var(--fm-accent);
  --bs-btn-hover-color: var(--fm-accent);
  --bs-btn-active-bg: var(--fm-accent-soft);
  --bs-btn-active-border-color: var(--fm-accent);
  --bs-btn-active-color: var(--fm-accent);
  --bs-btn-disabled-color: var(--fm-accent);
  --bs-btn-disabled-border-color: var(--fm-accent);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}
.btn-outline-secondary {
  --bs-btn-color: var(--fm-ink);
  --bs-btn-border-color: var(--fm-line);
  --bs-btn-hover-bg: var(--fm-surface-2);
  --bs-btn-hover-border-color: var(--fm-line);
  --bs-btn-hover-color: var(--fm-ink);
  --bs-btn-active-bg: var(--fm-surface-2);
  --bs-btn-active-border-color: var(--fm-line);
  --bs-btn-active-color: var(--fm-ink);
  background: var(--fm-surface);
}
.btn-whatsapp {
  --bs-btn-bg: var(--fm-whatsapp);
  --bs-btn-border-color: var(--fm-whatsapp);
  --bs-btn-color: #fff;
  --bs-btn-hover-bg: var(--fm-whatsapp-hover);
  --bs-btn-hover-border-color: var(--fm-whatsapp-hover);
  --bs-btn-hover-color: #fff;
  --bs-btn-active-bg: var(--fm-whatsapp-hover);
  --bs-btn-active-color: #fff;
}
[data-bs-theme="dark"] .btn-whatsapp { --bs-btn-color: #04190d; --bs-btn-hover-color: #04190d; --bs-btn-active-color: #04190d; }
.btn-icon {
  --bs-btn-padding-x: .5rem;
  --bs-btn-padding-y: .35rem;
  --bs-btn-color: var(--fm-muted);
  --bs-btn-hover-color: var(--fm-ink);
  --bs-btn-hover-bg: var(--fm-surface-2);
  --bs-btn-active-bg: var(--fm-surface-2);
  border: 0;
}
.btn-link { --bs-btn-color: var(--fm-accent); --bs-btn-hover-color: var(--fm-accent-hover); }
.btn:focus-visible { box-shadow: 0 0 0 .25rem var(--bs-focus-ring-color); }

.form-label { font-weight: 550; font-size: .925rem; margin-bottom: .35rem; }
.form-text { color: var(--fm-muted); font-size: .825rem; }
.form-control,
.form-select {
  background-color: var(--fm-surface);
  border-color: var(--fm-line);
  padding-block: .6rem;
}
.form-control:focus,
.form-select:focus {
  background-color: var(--fm-surface);
  border-color: var(--fm-accent);
  box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color);
}
.form-control::placeholder { color: var(--fm-muted); opacity: .7; }
.form-control.text-uppercase::placeholder { text-transform: none; }
.form-check-input:checked { background-color: var(--fm-accent); border-color: var(--fm-accent); }
.form-check-input:focus { border-color: var(--fm-accent); box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color); }
.input-group-text { background: var(--fm-surface-2); color: var(--fm-muted); border-color: var(--fm-line); }
.input-group .btn-outline-secondary { border-color: var(--fm-line); }

.nav-pills { --bs-nav-pills-link-active-bg: var(--fm-accent); --bs-nav-pills-link-active-color: var(--fm-accent-ink); --bs-nav-link-color: var(--fm-muted); --bs-nav-link-hover-color: var(--fm-ink); }
.dropdown-menu {
  --bs-dropdown-bg: var(--fm-surface);
  --bs-dropdown-border-color: var(--fm-line);
  --bs-dropdown-link-active-bg: var(--fm-accent-soft);
  --bs-dropdown-link-active-color: var(--fm-ink);
  --bs-dropdown-link-hover-bg: var(--fm-surface-2);
  --bs-dropdown-box-shadow: 0 10px 30px -12px rgba(18, 48, 44, .25);
  box-shadow: var(--bs-dropdown-box-shadow);
  padding: .35rem;
}
.dropdown-item { border-radius: .45rem; display: flex; align-items: center; gap: .55rem; padding-block: .45rem; }
.dropdown-item:disabled { opacity: .5; }
.table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--fm-ink);
  --bs-table-hover-bg: var(--fm-surface-2);
  --bs-table-border-color: var(--fm-line);
}
.table > thead th {
  font-size: .75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--fm-muted);
  white-space: nowrap;
}
.table > :not(caption) > * > * { padding: .8rem 1rem; }

@media (max-width: 575.98px) { .table > :not(caption) > * > * { padding: .75rem .6rem; } }
.table > tbody > tr:last-child > * { border-bottom: 0; }
.list-group { --bs-list-group-bg: transparent; --bs-list-group-border-color: var(--fm-line); --bs-list-group-action-hover-bg: var(--fm-surface-2); --bs-list-group-color: var(--fm-ink); --bs-list-group-action-color: var(--fm-ink); }
.list-group-item { padding: .8rem 1rem; }
.progress { --bs-progress-bg: var(--fm-surface-2); --bs-progress-bar-bg: var(--fm-accent); --bs-progress-height: .45rem; }
.alert { --bs-alert-border-color: transparent; }
.alert-success { --bs-alert-bg: var(--fm-accent-soft); --bs-alert-color: var(--fm-ink); }
.alert-danger { --bs-alert-bg: var(--fm-danger-soft); --bs-alert-color: var(--fm-danger); }
.offcanvas { --bs-offcanvas-bg: var(--fm-surface); --bs-offcanvas-border-color: var(--fm-line); }
.accordion { --bs-accordion-bg: transparent; --bs-accordion-border-color: var(--fm-line); --bs-accordion-active-bg: transparent; --bs-accordion-active-color: var(--fm-ink); --bs-accordion-btn-focus-box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color); }

.badge { font-weight: 600; padding: .4em .7em; display: inline-flex; align-items: center; gap: .3em; }
.text-bg-primary-soft { background: var(--fm-accent-soft) !important; color: var(--fm-accent) !important; }
.text-bg-success-soft { background: var(--fm-accent-soft) !important; color: var(--fm-accent) !important; }
.text-bg-warning-soft { background: var(--fm-warn-soft) !important; color: var(--fm-warn) !important; }
.text-bg-danger-soft  { background: var(--fm-danger-soft) !important; color: var(--fm-danger) !important; }
.text-bg-muted-soft   { background: var(--fm-surface-2) !important; color: var(--fm-muted) !important; box-shadow: inset 0 0 0 1px var(--fm-line); }
.text-primary { color: var(--fm-accent) !important; }
.text-danger { color: var(--fm-danger) !important; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
.btn-danger { --bs-btn-bg: var(--fm-danger); --bs-btn-border-color: var(--fm-danger); --bs-btn-hover-bg: var(--fm-danger); --bs-btn-hover-border-color: var(--fm-danger); --bs-btn-active-bg: var(--fm-danger); }
.btn-outline-danger { --bs-btn-color: var(--fm-danger); --bs-btn-border-color: var(--fm-danger); --bs-btn-hover-bg: var(--fm-danger-soft); --bs-btn-hover-color: var(--fm-danger); --bs-btn-hover-border-color: var(--fm-danger); --bs-btn-active-bg: var(--fm-danger-soft); --bs-btn-active-color: var(--fm-danger); background: var(--fm-surface); }
