/* Alliance One accessibility options. Adapted from Sienna Accessibility Widget (MIT, Copyright 2025 Benny Luk).
   Page features are scoped by root classes/attributes on <html>; widget subtree #ao-sienna-widget is excluded.
   Colours come from design-system variables (--primary, --background, ...) which theme.css scopes to #ao-sienna-widget. */

/* ---- Page features (Sienna tool configs, adapted) ---- */
html.ao-a11y-font body *:not(#ao-sienna-widget, #ao-sienna-widget *, svg, svg *, [class*="icon"]) {
  font-family: Arial, Helvetica, sans-serif !important;
}
html.ao-a11y-letter body *:not(#ao-sienna-widget, #ao-sienna-widget *) { letter-spacing: 0.12em !important; word-spacing: 0.16em !important; }
html.ao-a11y-line body *:not(#ao-sienna-widget, #ao-sienna-widget *) { line-height: 1.8 !important; }
html.ao-a11y-line body :is(p, li, dd):not(#ao-sienna-widget *) { margin-bottom: 1em; }
html.ao-a11y-links body a[href]:not(#ao-sienna-widget *) { outline: 2px solid currentColor !important; outline-offset: 2px !important; text-decoration: underline !important; }
html.ao-a11y-headings body :is(h1, h2, h3, h4, h5, h6, [role="heading"]):not(#ao-sienna-widget *) { outline: 2px dashed currentColor !important; outline-offset: 4px !important; }
html.ao-a11y-focus body :focus-visible:not(#ao-sienna-widget *) { outline: 3px solid currentColor !important; outline-offset: 3px !important; box-shadow: 0 0 0 6px Canvas !important; }

/* Contrast: scoped element colours, never a filter on html/body (filters break position: fixed). */
html[data-ao-a11y-contrast="dark"] body,
html[data-ao-a11y-contrast="dark"] body :is(div, section, main, header, footer, nav, aside, article, form, fieldset, p, span, li, ol, ul, dl, dt, dd, h1, h2, h3, h4, h5, h6, label, legend, a, button, input, select, textarea, table, th, td, blockquote):not(#ao-sienna-widget, #ao-sienna-widget *, .ao-a11y-guide, .ao-a11y-guide *) {
  background-color: #000 !important; color: #fff !important; border-color: #fff !important;
}
html[data-ao-a11y-contrast="dark"] body a[href]:not(#ao-sienna-widget *) { color: #ff0 !important; }
html[data-ao-a11y-contrast="light"] body,
html[data-ao-a11y-contrast="light"] body :is(div, section, main, header, footer, nav, aside, article, form, fieldset, p, span, li, ol, ul, dl, dt, dd, h1, h2, h3, h4, h5, h6, label, legend, a, button, input, select, textarea, table, th, td, blockquote):not(#ao-sienna-widget, #ao-sienna-widget *, .ao-a11y-guide, .ao-a11y-guide *) {
  background-color: #fff !important; color: #000 !important; border-color: #000 !important;
}
html[data-ao-a11y-contrast="light"] body a[href]:not(#ao-sienna-widget *) { color: #00e !important; }
/* High: standard system high-contrast palette (Canvas/CanvasText) on every surface so no dark hero keeps dark text. */
html[data-ao-a11y-contrast="high"] body,
html[data-ao-a11y-contrast="high"] body :is(div, section, main, header, footer, nav, aside, article, form, fieldset, p, span, li, ol, ul, dl, dt, dd, h1, h2, h3, h4, h5, h6, label, legend, a, button, input, select, textarea, table, th, td, blockquote, strong, em, small, b, i):not(#ao-sienna-widget, #ao-sienna-widget *, .ao-a11y-guide, .ao-a11y-guide *) {
  background-color: Canvas !important; background-image: none !important; color: CanvasText !important; border-color: CanvasText !important; text-shadow: none !important;
}
html[data-ao-a11y-contrast="high"] body a[href]:not(#ao-sienna-widget *) { color: LinkText !important; text-decoration: underline !important; text-decoration-thickness: 2px !important; }
html[data-ao-a11y-contrast="high"] body :is(button, input, select, textarea):not(#ao-sienna-widget *) { border: 2px solid CanvasText !important; }
html[data-ao-a11y-contrast="high"] { color-scheme: light; }
html[data-ao-a11y-contrast="dark"] body :is(div, section, header, footer, main, nav, aside, article):not(#ao-sienna-widget, #ao-sienna-widget *),
html[data-ao-a11y-contrast="light"] body :is(div, section, header, footer, main, nav, aside, article):not(#ao-sienna-widget, #ao-sienna-widget *) { background-image: none !important; }
html[data-ao-a11y-contrast] body :is(img, video, picture, svg, canvas):not(#ao-sienna-widget *) { background-color: transparent !important; }

/* Reading guide (Sienna readingGuide.css) */
.ao-a11y-guide > div { position: fixed; left: 0; right: 0; width: 100%; height: 0; pointer-events: none; background-color: rgba(0, 0, 0, 0.7); z-index: 2147483000; }
.ao-a11y-guide-top { top: 0; }
.ao-a11y-guide-bottom { bottom: 0; }
.ao-a11y-guide { pointer-events: none; }

html.ao-a11y-open, html.ao-a11y-open body { overflow: hidden !important; }

/* ---- Widget (isolated from page features) ---- */
#ao-sienna-widget, #ao-sienna-widget * {
  box-sizing: border-box;
  font-family: var(--app-font-sans, Arial, Helvetica, sans-serif) !important;
  letter-spacing: normal !important; word-spacing: normal !important; text-shadow: none !important;
}
#ao-sienna-widget { position: static; font-size: 16px; line-height: 1.4; color: hsl(var(--foreground)); }
#ao-sienna-widget .ao-a11y-launcher {
  position: fixed; left: calc(var(--ao-a11y-side, 16px) + env(safe-area-inset-left, 0px));
  bottom: calc(var(--ao-a11y-bottom, 16px) + env(safe-area-inset-bottom, 0px));
  z-index: 2147483050; width: 48px; height: 48px; padding: 0; margin: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 2px solid hsl(var(--primary-foreground)); border-radius: 9999px;
  background: hsl(var(--primary)); color: hsl(var(--primary-foreground));
  cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); transition: transform 150ms ease;
}
#ao-sienna-widget .ao-a11y-launcher:hover { transform: scale(1.05); }
#ao-sienna-widget :focus-visible { outline: 3px solid hsl(var(--ring)) !important; outline-offset: 2px !important; }

#ao-sienna-widget .ao-a11y-dialog {
  position: fixed; inset: 0; margin: auto; padding: 0; z-index: 2147483100;
  width: min(26rem, calc(100vw - 1rem)); max-height: calc(100dvh - 1rem);
  display: none; flex-direction: column; overflow: hidden;
  border: 1px solid hsl(var(--border)); border-radius: calc(var(--radius, 0.25rem) * 2);
  background: hsl(var(--background)); color: hsl(var(--foreground));
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
#ao-sienna-widget .ao-a11y-dialog[open] { display: flex; }
#ao-sienna-widget .ao-a11y-dialog::backdrop { background: rgba(0, 0, 0, 0.5); }
/* Fallback (no showModal): simulated backdrop */
#ao-sienna-widget .ao-a11y-dialog[open][role="dialog"] { box-shadow: 0 0 0 100vmax rgba(0, 0, 0, 0.5); }

#ao-sienna-widget .ao-a11y-head {
  display: flex; align-items: center; justify-content: space-between; gap: calc(var(--spacing, 0.25rem) * 2);
  padding: calc(var(--spacing, 0.25rem) * 3) calc(var(--spacing, 0.25rem) * 4);
  background: hsl(var(--primary)); color: hsl(var(--primary-foreground));
}
#ao-sienna-widget h2 { margin: 0; font-size: 18px !important; font-weight: 600; line-height: 1.3 !important; color: inherit; }
#ao-sienna-widget h2:focus { outline: none; }
#ao-sienna-widget h3 { margin: 0 0 calc(var(--spacing, 0.25rem) * 2); font-size: 14px !important; font-weight: 600; line-height: 1.3 !important; color: hsl(var(--foreground)); }
#ao-sienna-widget .ao-a11y-close {
  flex: none; width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid transparent; border-radius: var(--radius, 0.25rem); background: transparent; color: inherit; cursor: pointer;
}
#ao-sienna-widget .ao-a11y-close:hover { border-color: currentColor; }
#ao-sienna-widget .ao-a11y-body {
  overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
  padding: calc(var(--spacing, 0.25rem) * 4); display: flex; flex-direction: column; gap: calc(var(--spacing, 0.25rem) * 4);
}
#ao-sienna-widget section { margin: 0; }
#ao-sienna-widget p { margin: 0; font-size: 14px !important; line-height: 1.45 !important; }
#ao-sienna-widget .ao-a11y-desc, #ao-sienna-widget .ao-a11y-note, #ao-sienna-widget .ao-a11y-credit { color: hsl(var(--muted-foreground)); }
#ao-sienna-widget .ao-a11y-note, #ao-sienna-widget .ao-a11y-credit { font-size: 12px !important; margin-top: calc(var(--spacing, 0.25rem) * 2); }
#ao-sienna-widget .ao-a11y-credit a { color: hsl(var(--primary)); text-decoration: underline; }
#ao-sienna-widget .ao-a11y-status { min-height: 1.2em; font-weight: 600; }
#ao-sienna-widget .ao-a11y-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: calc(var(--spacing, 0.25rem) * 2); }
#ao-sienna-widget .ao-a11y-btn {
  min-height: 44px; width: 100%; margin: 0; padding: calc(var(--spacing, 0.25rem) * 2) calc(var(--spacing, 0.25rem) * 3);
  font-size: 14px !important; line-height: 1.25 !important; font-weight: 600; text-align: left; cursor: pointer;
  border: 1px solid hsl(var(--border)); border-radius: var(--radius, 0.25rem);
  background: hsl(var(--background)); color: hsl(var(--foreground));
}
#ao-sienna-widget .ao-a11y-btn:hover { background: hsl(var(--secondary)); color: hsl(var(--secondary-foreground)); }
#ao-sienna-widget .ao-a11y-btn[aria-pressed="true"] { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); border-color: hsl(var(--primary)); }
#ao-sienna-widget .ao-a11y-wide { text-align: center; }
#ao-sienna-widget .ao-a11y-reset { border-color: hsl(var(--foreground)); }

@media (max-width: 22rem) { #ao-sienna-widget .ao-a11y-grid { grid-template-columns: minmax(0, 1fr); } }
@media (prefers-reduced-motion: reduce) { #ao-sienna-widget .ao-a11y-launcher { transition: none; } }
