/* Ken Hampel — self-hosted accessibility menu.
   No cookies. No third-party scripts. No tracking. No network requests.
   A visitor's choices persist ONLY for the current browser tab (sessionStorage)
   and are cleared the moment the tab is closed. */

/* ---------------- launcher button ---------------- */
.kh-a11y{position:fixed;right:18px;bottom:18px;z-index:2147483000;
  font-family:Inter,system-ui,sans-serif;}
.kh-a11y__btn{width:52px;height:52px;border-radius:9999px;background:#000;color:#fff;
  border:2px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.35);display:flex;
  align-items:center;justify-content:center;cursor:pointer;padding:0;}
.kh-a11y__btn:hover{background:#1a1a1a;}
.kh-a11y__btn:focus-visible{outline:3px solid #1a73e8;outline-offset:2px;}
.kh-a11y__btn svg{width:26px;height:26px;fill:#fff;}

/* ---------------- panel ---------------- */
.kh-a11y__panel{position:absolute;right:0;bottom:64px;width:264px;background:#fff;color:#000;
  border:2px solid #000;box-shadow:0 8px 30px rgba(0,0,0,.25);padding:14px;display:none;}
.kh-a11y[data-open="true"] .kh-a11y__panel{display:block;}
.kh-a11y__title{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  margin:0 0 12px;}
.kh-a11y__row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:9px 0;}
.kh-a11y__label{font-size:13px;line-height:1.2;}
.kh-a11y__ctrl{display:flex;gap:6px;flex:none;}
.kh-a11y button.kh-a11y__opt{font-family:inherit;font-size:13px;line-height:1;min-width:34px;
  padding:8px 9px;background:#fff;color:#000;border:1px solid #000;cursor:pointer;}
.kh-a11y button.kh-a11y__opt:hover{background:#f0f0f0;}
.kh-a11y button.kh-a11y__opt[aria-pressed="true"]{background:#000;color:#fff;}
.kh-a11y button.kh-a11y__opt:focus-visible{outline:3px solid #1a73e8;outline-offset:2px;}
.kh-a11y__reset{margin-top:12px;width:100%;font-family:inherit;font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;padding:9px;background:#fff;color:#000;border:1px solid #000;cursor:pointer;}
.kh-a11y__reset:hover{background:#f0f0f0;}
.kh-a11y__reset:focus-visible{outline:3px solid #1a73e8;outline-offset:2px;}
.kh-a11y__note{font-size:10px;line-height:1.45;color:#555;margin:11px 0 0;}

/* ===================================================================
   Applied preference modes — toggled by data-attributes on <html>.
   =================================================================== */

/* Text size — scale the root; rem-based type + spacing scale with it. */
html[data-kh-font="lg"]{font-size:112.5%;}
html[data-kh-font="xl"]{font-size:125%;}
html[data-kh-font="xxl"]{font-size:140%;}

/* High contrast — force the deliberately-muted grays to solid.
   Scoped to the low-opacity utilities so the inverted (white-on-black)
   header/buttons stay legible instead of turning black-on-black. */
html[data-kh-contrast="on"] .text-black\/40,
html[data-kh-contrast="on"] .text-black\/45,
html[data-kh-contrast="on"] .text-black\/50,
html[data-kh-contrast="on"] .text-black\/55,
html[data-kh-contrast="on"] .text-black\/60,
html[data-kh-contrast="on"] .text-black\/70,
html[data-kh-contrast="on"] .text-black\/80{color:#000 !important;}
html[data-kh-contrast="on"] .text-white\/60,
html[data-kh-contrast="on"] .text-white\/70,
html[data-kh-contrast="on"] .text-white\/80{color:#fff !important;}

/* Highlight links — underline + subtle box, everywhere except the widget itself. */
html[data-kh-links="on"] a:not(.kh-a11y a){text-decoration:underline !important;
  text-underline-offset:2px;outline:1px solid currentColor;outline-offset:1px;}

/* Readable font — swap the Cormorant serif display face for Inter. */
html[data-kh-serif="off"] .serif,
html[data-kh-serif="off"] .font-serif{font-family:Inter,system-ui,sans-serif !important;}

/* Reduce motion — kill animations, transitions and smooth-scroll. */
html[data-kh-motion="off"]{scroll-behavior:auto !important;}
html[data-kh-motion="off"] *,
html[data-kh-motion="off"] *::before,
html[data-kh-motion="off"] *::after{animation-duration:.001ms !important;
  animation-iteration-count:1 !important;transition-duration:.001ms !important;
  scroll-behavior:auto !important;}
