/*
 * Frisian Orchard — Accessibility Toolbar + Helper Modes
 */

/* ── Floating widget ── */
.fo-a11y {
  position: fixed;
  z-index: 100010;
  bottom: 1.25rem;
  font-family: var(--fo-font-sans);
}

.fo-a11y--bottom-left {
  left: 1.25rem;
}

.fo-a11y--bottom-right {
  right: 1.25rem;
}

.fo-a11y__trigger {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  border-radius: 999px;
  border: 1px solid rgba(var(--fo-gold-rgb), 0.45);
  background: rgba(11, 17, 13, 0.88);
  backdrop-filter: blur(14px) saturate(1.35);
  -webkit-backdrop-filter: blur(14px) saturate(1.35);
  color: var(--fo-gold-champagne);
  cursor: pointer;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    0 8px 28px rgba(0, 0, 0, 0.35);
  transition:
    background var(--fo-transition),
    border-color var(--fo-transition),
    transform var(--fo-transition);
}

.fo-a11y__trigger:hover,
.fo-a11y__trigger:focus-visible {
  background: rgba(11, 17, 13, 0.96);
  border-color: var(--fo-gold-champagne);
  outline: none;
}

.fo-a11y__trigger:focus-visible {
  box-shadow:
    0 0 0 3px rgba(var(--fo-gold-rgb), 0.45),
    0 8px 28px rgba(0, 0, 0, 0.35);
}

.fo-a11y__icon {
  width: 1.35rem;
  height: 1.35rem;
}

.fo-a11y__panel {
  position: absolute;
  bottom: calc(100% + 0.75rem);
  width: min(18rem, calc(100vw - 2.5rem));
  max-height: min(70vh, 28rem);
  overflow-y: auto;
  padding: 1rem;
  border-radius: 12px;
  border: 1px solid rgba(var(--fo-gold-rgb), 0.35);
  background: rgba(11, 17, 13, 0.96);
  backdrop-filter: blur(18px) saturate(1.35);
  -webkit-backdrop-filter: blur(18px) saturate(1.35);
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.45);
  color: var(--fo-text-white);
}

.fo-a11y--bottom-left .fo-a11y__panel {
  left: 0;
}

.fo-a11y--bottom-right .fo-a11y__panel {
  right: 0;
}

.fo-a11y__panel[hidden] {
  display: none !important;
}

.fo-a11y__panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.875rem;
}

.fo-a11y__title {
  margin: 0;
  font-family: var(--fo-font-serif);
  font-size: 1.125rem;
  font-weight: 400;
  letter-spacing: 0.02em;
}

.fo-a11y__close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid rgba(var(--fo-gold-rgb), 0.28);
  border-radius: 6px;
  background: transparent;
  color: var(--fo-text-white);
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
}

.fo-a11y__close:hover,
.fo-a11y__close:focus-visible {
  border-color: var(--fo-gold-champagne);
  color: var(--fo-gold-champagne);
  outline: none;
}

.fo-a11y__close:focus-visible {
  box-shadow: 0 0 0 2px rgba(var(--fo-gold-rgb), 0.45);
}

.fo-a11y__group {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 0.875rem;
}

.fo-a11y__group--actions {
  margin-bottom: 0;
}

.fo-a11y__label {
  margin: 0 0 0.25rem;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--fo-text-platinum);
}

.fo-a11y__row {
  display: flex;
  gap: 0.5rem;
}

.fo-a11y__btn,
.fo-a11y__toggle,
.fo-a11y__reset {
  font-family: var(--fo-font-sans);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition:
    background var(--fo-transition),
    border-color var(--fo-transition),
    color var(--fo-transition);
}

.fo-a11y__btn {
  flex: 1;
  min-height: 44px;
  padding: 0.5rem 0.75rem;
  border-radius: 6px;
  border: 1px solid rgba(var(--fo-gold-rgb), 0.28);
  background: rgba(255, 255, 255, 0.04);
  color: var(--fo-text-white);
}

.fo-a11y__btn[aria-pressed="true"] {
  border-color: var(--fo-gold-champagne);
  background: rgba(var(--fo-gold-rgb), 0.14);
  color: var(--fo-gold-champagne);
}

.fo-a11y__toggle {
  width: 100%;
  min-height: 44px;
  padding: 0.625rem 0.875rem;
  text-align: left;
  border-radius: 6px;
  border: 1px solid rgba(var(--fo-gold-rgb), 0.22);
  background: rgba(255, 255, 255, 0.03);
  color: var(--fo-text-white);
}

.fo-a11y__toggle[aria-pressed="true"] {
  border-color: var(--fo-gold-champagne);
  background: rgba(var(--fo-gold-rgb), 0.12);
  color: var(--fo-gold-champagne);
}

.fo-a11y__reset {
  width: 100%;
  min-height: 44px;
  padding: 0.625rem 0.875rem;
  border-radius: 6px;
  border: 1px solid rgba(var(--fo-gold-rgb), 0.35);
  background: transparent;
  color: var(--fo-gold-champagne);
}

.fo-a11y__btn:hover,
.fo-a11y__btn:focus-visible,
.fo-a11y__toggle:hover,
.fo-a11y__toggle:focus-visible,
.fo-a11y__reset:hover,
.fo-a11y__reset:focus-visible {
  border-color: var(--fo-gold-champagne);
  outline: none;
}

.fo-a11y__btn:focus-visible,
.fo-a11y__toggle:focus-visible,
.fo-a11y__reset:focus-visible {
  box-shadow: 0 0 0 2px rgba(var(--fo-gold-rgb), 0.45);
}

.fo-a11y__footer {
  margin: 0.875rem 0 0;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  font-size: 0.8125rem;
}

.fo-a11y__footer a {
  color: var(--fo-gold-champagne);
  text-decoration: underline;
}

@media (max-width: 479px) {
  .fo-a11y {
    bottom: 1rem;
  }

  .fo-a11y--bottom-left {
    left: 1rem;
  }

  .fo-a11y--bottom-right {
    right: 1rem;
  }
}

/* ── Helper modes (html classes) ── */
html.fo-a11y-font-110 {
  font-size: 110%;
}

html.fo-a11y-font-125 {
  font-size: 125%;
}

html.fo-a11y-underline-links a {
  text-decoration: underline !important;
  text-underline-offset: 0.15em;
}

html.fo-a11y-reduce-motion *,
html.fo-a11y-reduce-motion *::before,
html.fo-a11y-reduce-motion *::after {
  animation-duration: 0.01ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.01ms !important;
  scroll-behavior: auto !important;
}

html.fo-a11y-focus :focus-visible {
  outline: 3px solid var(--fo-gold-champagne) !important;
  outline-offset: 3px !important;
}

/* High contrast */
html.fo-a11y-contrast {
  --fo-bg-obsidian: #000000;
  --fo-bg-charcoal: #111111;
  --fo-bg-cream: #ffffff;
  --fo-text-white: #ffffff;
  --fo-text-dark: #000000;
  --fo-text-platinum: #f0f0f0;
  --fo-text-muted-cream: #222222;
  --fo-gold-champagne: #ffe566;
  --fo-glass-border: #ffe566;
  --fo-glass-bg: #111111;
  --fo-header-glass: rgba(0, 0, 0, 0.92);
}

html.fo-a11y-contrast body {
  background-color: #000000;
  color: #ffffff;
}

html.fo-a11y-contrast .fo-section--cream {
  background-color: #ffffff !important;
  color: #000000 !important;
}

html.fo-a11y-contrast .fo-section--cream .fo-body,
html.fo-a11y-contrast .fo-section--cream p {
  color: #222222 !important;
}

html.fo-a11y-contrast .fo-header__glass {
  background: rgba(0, 0, 0, 0.95) !important;
  border-color: #ffe566 !important;
}

html.fo-a11y-contrast .fo-header__nav a,
html.fo-a11y-contrast .fo-header__name,
html.fo-a11y-contrast .fo-footer__nav-list a {
  color: #ffffff !important;
}

html.fo-a11y-contrast .fo-shimmer-btn,
html.fo-a11y-contrast .fo-ghost-btn {
  border-color: #ffe566 !important;
  color: #ffffff !important;
}

html.fo-a11y-contrast .fo-hero__overlay::before {
  background: linear-gradient(
    90deg,
    rgba(0, 0, 0, 0.95) 0%,
    rgba(0, 0, 0, 0.7) 45%,
    transparent 72%
  ) !important;
}

html.fo-a11y-contrast .bb-card,
html.fo-a11y-contrast .fo-value-card {
  border-color: #ffe566 !important;
  background: #111111 !important;
  color: #ffffff !important;
}

html.fo-a11y-contrast .fo-a11y__trigger,
html.fo-a11y-contrast .fo-a11y__panel {
  border-color: #ffe566 !important;
  background: #000000 !important;
  color: #ffffff !important;
}
