/* Optional display preferences. Structural accessibility remains in the site itself. */
:focus-visible { outline: 3px solid #e8d1ff; outline-offset: 4px; }
.a11y-open { overflow: hidden; }
.a11y-launcher {
  position: fixed; left: clamp(14px, 2.4vw, 32px); bottom: clamp(14px, 2.4vw, 28px);
  z-index: 800; width: 54px; height: 54px; display: grid; place-items: center;
  border: 1px solid rgba(255,255,255,.65); border-radius: 50%; color: #fff;
  background: #302344; box-shadow: 0 12px 36px rgba(0,0,0,.4);
  transition: background .2s, transform .2s; cursor: pointer;
}
.a11y-launcher svg { width: 29px; height: 29px; }
.a11y-launcher:hover { background: #533b78; transform: translateY(-2px); }
.menu-open .a11y-launcher { opacity: 0; pointer-events: none; }
.a11y-dialog {
  position: fixed; inset: 0 auto 0 0; width: min(420px, 100vw); height: 100vh; height: 100dvh;
  max-width: none; max-height: none; margin: 0; padding: 0; overflow-y: auto;
  border: 0; border-right: 1px solid rgba(255,255,255,.23);
  background: #11121b; color: #fff; box-shadow: 22px 0 70px rgba(0,0,0,.55);
}
.a11y-dialog::backdrop { background: rgba(2,3,7,.72); backdrop-filter: blur(3px); }
.a11y-panel { padding: max(26px,env(safe-area-inset-top)) 26px calc(36px + env(safe-area-inset-bottom)); }
.a11y-panel__top { display: flex; justify-content: space-between; align-items: center; gap: 20px; }
.a11y-panel__top > span { font-size: .63rem; font-weight: 800; letter-spacing: .17em; color: #d7bdff; }
.a11y-panel__top button { flex: 0 0 47px; width: 47px; height: 47px; border: 1px solid rgba(255,255,255,.36); border-radius: 50%; background: #242531; color: #fff; font-size: 1.5rem; }
.a11y-panel h2 { margin: 36px 0 15px; font: 600 clamp(2.3rem,7vw,3.2rem)/1.03 var(--display); letter-spacing: -.055em; }
.a11y-panel h2 em { color: #d0b3ff; font-family: Georgia,serif; font-weight: 400; }
.a11y-panel > p:nth-child(3) { max-width: 320px; margin: 0; font-size: .93rem; line-height: 1.7; color: #c9c6d1; }
.a11y-panel__label { margin: 33px 0 14px; font-size: .64rem; font-weight: 800; letter-spacing: .19em; color: #d0b3ff; }
.a11y-panel__controls { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.a11y-panel__controls button {
  display: flex; flex-direction: column; gap: 8px; justify-content: center; align-items: flex-start;
  min-height: 94px; padding: 15px; border: 1px solid rgba(255,255,255,.22);
  background: #1c1e2a; color: #f1eef7; text-align: left;
  font-size: .78rem; font-weight: 700; line-height: 1.35;
  transition: background .18s, border-color .18s;
}
.a11y-panel__controls button > span { font-size: 1.35rem; font-family: var(--display); font-weight: 600; line-height: 1; color: #d5bafc; }
.a11y-panel__controls button:hover { background: #282536; border-color: rgba(208,179,255,.64); }
.a11y-panel__controls button.is-active { background: #3c2c53; border-color: #d0b3ff; box-shadow: inset 3px 0 #d0b3ff; }
.a11y-panel__controls button:disabled { opacity: .5; cursor: not-allowed; }
.a11y-panel__reset { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 50px; padding: 12px 15px; margin-top: 18px; background: transparent; border: 1px solid rgba(255,255,255,.36); color: #fff; font-size: .76rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.a11y-panel__reset:hover { background: #282536; }
.a11y-panel__reset span { font-size: 1.2rem; }
.a11y-panel__note { margin: 18px 0 0; color: #bcb8c8; font-size: .73rem; line-height: 1.55; }
.a11y-panel__status { min-height: 1.7em; margin-top: 12px; color: #e4d2ff; font-size: .76rem; }

html.a11y-text-sm { font-size: 15px; }
html.a11y-text-lg { font-size: 17px; }
html.a11y-text-xl { font-size: 18px; }
html.a11y-high-contrast { --bg: #000; --bg-alt: #080808; --panel: #111; --text: #fff; --muted: #f0f0f0; --dim: #d7d7d7; --line: rgba(255,255,255,.42); --accent: #f2dfff; }
html.a11y-high-contrast .site-header, html.a11y-high-contrast .site-footer { background-color: #050505; }
html.a11y-high-contrast .button, html.a11y-high-contrast input, html.a11y-high-contrast select, html.a11y-high-contrast textarea { border-width: 2px; }
html.a11y-grayscale .site-header, html.a11y-grayscale main, html.a11y-grayscale .site-footer { filter: grayscale(1); }
html.a11y-invert .site-header, html.a11y-invert main, html.a11y-invert .site-footer { filter: invert(1) hue-rotate(180deg); }
html.a11y-invert img:not(.brand-logo):not(.site-intro__logo) { filter: invert(1) hue-rotate(180deg); }
html.a11y-highlight-links a:not(.button):not(.brand) { text-decoration: underline !important; text-underline-offset: .23em; text-decoration-thickness: 2px !important; }
html.a11y-readable-font { --sans: Arial, Helvetica, system-ui, sans-serif; --display: Arial, Helvetica, sans-serif; }
html.a11y-readable-font body { line-height: 1.75; letter-spacing: .01em; }
html.a11y-pause-animations { scroll-behavior: auto !important; }
html.a11y-pause-animations *, html.a11y-pause-animations *::before, html.a11y-pause-animations *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
html.a11y-pause-animations .reveal { opacity: 1 !important; transform: none !important; }
html.a11y-big-cursor, html.a11y-big-cursor * { cursor: url('../img/cursor-large.svg') 4 3, auto !important; }
html.a11y-big-cursor :is(a,button,summary) { cursor: url('../img/cursor-large.svg') 4 3, pointer !important; }

@media (max-width: 480px) {
  .a11y-panel { padding-inline: 20px; }
  .a11y-panel__controls button { min-height: 88px; padding: 12px; }
  .a11y-launcher { width: 48px; height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  .a11y-launcher, .a11y-panel__controls button { transition: none; }
}
