/* a11y-kit core.css: always-on layer B chrome. Inert for users who never need it. */
.a11y-vh,.a11y-skip:not(:focus),.a11y-trigger:not(:focus){position:absolute;inline-size:1px;block-size:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.a11y-skip:focus,.a11y-trigger:focus{position:fixed;inset-block-start:.5rem;inset-inline-start:.5rem;z-index:1000;display:inline-flex;align-items:center;justify-content:center;min-block-size:44px;padding-inline:1.25rem;border:2px solid var(--a11y-accent,#1a5f6e);border-radius:12px;background:var(--a11y-surface,#fff);color:var(--a11y-text,#141b1f);font:600 1rem/1.5 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;text-decoration:none}
.a11y-skip:focus-visible,.a11y-trigger:focus-visible{outline:2px solid var(--a11y-accent,#1a5f6e);outline-offset:2px}
.a11y-trigger svg{display:none}
html[data-a11y-pos=end-top]{--a11y-ts:calc(14px + env(safe-area-inset-top,0px));--a11y-bs:auto}
html[data-a11y-pos=start-bottom]{--a11y-ss:2px;--a11y-es:auto}
html[data-a11y-pos=start-top]{--a11y-ts:calc(14px + env(safe-area-inset-top,0px));--a11y-bs:auto;--a11y-ss:2px;--a11y-es:auto}
html[data-a11y-active]:not([data-a11y-pos=hidden]) .a11y-up{position:fixed;z-index:900;display:flex;align-items:center;justify-content:center;inline-size:44px;block-size:44px;min-block-size:0;padding:0;margin:0;overflow:visible;clip-path:none;border:0;background:none;color:var(--a11y-accent,#1a5f6e);inset-block-start:var(--a11y-ts,auto);inset-block-end:var(--a11y-bs,calc(var(--a11y-avoid-bottom,0px) + 14px + env(safe-area-inset-bottom,0px)));inset-inline-start:var(--a11y-ss,auto);inset-inline-end:var(--a11y-es,2px)}
html[data-a11y-active]:not([data-a11y-pos=hidden]) .a11y-up::before{content:"";position:absolute;inline-size:32px;block-size:32px;border:1px solid var(--a11y-border,#6b7280);border-radius:50%;background:var(--a11y-surface,#fff)}
html[data-a11y-active]:not([data-a11y-pos=hidden]) .a11y-up svg{display:block;position:relative;inline-size:18px;block-size:18px;fill:currentColor}
html[data-a11y-active]:not([data-a11y-pos=hidden]) .a11y-up .a11y-t{position:absolute;inset-inline-end:calc(100% + 8px);inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;font:600 .875rem system-ui,sans-serif;border-radius:12px;background:var(--a11y-surface,#fff);color:var(--a11y-text,#141b1f);border:1px solid var(--a11y-accent,#1a5f6e)}
html[data-a11y-active]:not([data-a11y-pos=hidden]) .a11y-up:is(:hover,:focus-visible) .a11y-t{inline-size:auto;block-size:auto;padding:.5rem .75rem;overflow:visible;clip-path:none}
html[data-a11y-active] .a11y-up .a11y-t [data-a11y-count]::after{content:none}
html[data-a11y-pos^=start] .a11y-up .a11y-t{inset-inline-end:auto!important;inset-inline-start:calc(100% + 8px)}
html[data-a11y-active] .a11y-up:focus-visible::before{outline:3px solid var(--a11y-accent,#1a5f6e);outline-offset:2px}
html[data-a11y-frame] .a11y-trigger{display:none}
html:has(dialog:modal,[aria-modal=true]:not([inert],[hidden],[aria-hidden=true])) .a11y-up{visibility:hidden}
@media (pointer:coarse){html:has(:is(input,textarea,select,[contenteditable]):focus) .a11y-up{visibility:hidden}}
@media print{.a11y-trigger,[data-a11y-rg]{display:none!important}}
html[data-a11y-active] [data-a11y-count]{counter-reset:a11yn var(--a11y-n,0)}
html[data-a11y-active] [data-a11y-count]::after{content:" \00b7  " counter(a11yn) " " attr(data-a11y-count)}
html:has([data-a11y-avoid]){--a11y-avoid-bottom:var(--a11y-avoid-h,3.5rem)}
/* a11y-kit prefs.css: every rule is gated by html[data-a11y-*]; matches nothing without them. */
html[data-a11y-text]{font-size:calc(100% * var(--a11y-scale,1))}
html[data-a11y-font] *{font-family:Arial,Tahoma,"Segoe UI",sans-serif!important;font-style:normal!important}
html[data-a11y-font] :is(em,i,cite){font-weight:700!important}
html[data-a11y-line="1"]{--a11y-l:1.8}html[data-a11y-line="2"]{--a11y-l:2.1}
html[data-a11y-letter="1"]{--a11y-ls:.12em}html[data-a11y-letter="2"]{--a11y-ls:.18em}
html[data-a11y-word="1"]{--a11y-ws:.16em}html[data-a11y-word="2"]{--a11y-ws:.24em}
html[data-a11y-line] :is(p,li,dd,blockquote,figcaption,label,td){line-height:var(--a11y-l)!important}
html[data-a11y-line="2"] p{margin-block-end:2em!important}
html[data-a11y-letter] :is(p,li,dd,dt,blockquote,figcaption,label,td,th,h1,h2,h3,h4,h5,h6,a,summary){letter-spacing:var(--a11y-ls)!important}
html[data-a11y-word] :is(p,li,dd,dt,blockquote,figcaption,label,td,th,h1,h2,h3,h4,h5,h6,a,summary){word-spacing:var(--a11y-ws)!important}
html[data-a11y-letter]:lang(ar) *{letter-spacing:normal!important}
html[data-a11y-active] :is([data-a11y-skip],[data-a11y-skip] *){letter-spacing:normal!important;word-spacing:normal!important}
html[data-a11y-align] :is(p,li,dd,blockquote,figcaption,h1,h2,h3,h4,h5,h6){text-align:start!important}
html[data-a11y-align=center] :is(p,li,dd,blockquote,figcaption,h1,h2,h3,h4,h5,h6){text-align:center!important}
@media not (forced-colors:active){
html[data-a11y-contrast]{--a11y-bg:#fff;--a11y-fg:#000;--a11y-lk:#03c;background:var(--a11y-bg)}
html[data-a11y-contrast=hc-dark]{--a11y-bg:#000;--a11y-fg:#fff;--a11y-lk:#ffe066;--a11y-focus:#00e5ff;--a11y-gap:#000}
html[data-a11y-contrast] body *:not([data-a11y-skip],[data-a11y-skip] *,[data-a11y-evidence],[data-a11y-evidence] *,img,video,canvas,picture){background-color:var(--a11y-bg)!important;background-image:none!important;color:var(--a11y-fg)!important;border-color:var(--a11y-fg)!important;box-shadow:none!important;text-shadow:none!important}
html[data-a11y-contrast] body :is(button,[role=button],input,select,textarea){border:2px solid var(--a11y-fg)!important}
html[data-a11y-contrast] body a:not([data-a11y-skip]){color:var(--a11y-lk)!important}
}
html[data-a11y-gray] :is(img,video,canvas,picture,svg):not([data-a11y-evidence],[data-a11y-evidence] *){filter:grayscale(1)}
html[data-a11y-images] :is(img[alt=""],img[role=presentation],[data-decorative]):not([data-a11y-evidence],[data-a11y-evidence] *){display:none!important}
html[data-a11y-images="2"] img:not([data-a11y-evidence],[data-a11y-evidence] *){display:none!important}
.a11y-cap{display:block;padding:.25em .5em;border:1px dashed currentColor;font-size:.9em}
html[data-a11y-links] a:not([data-a11y-skip]){text-decoration:underline!important;text-decoration-thickness:2px!important;text-underline-offset:3px!important}
html[data-a11y-links] a:visited{font-weight:600}
html[data-a11y-headings] :is(h1,h2,h3,h4,h5,h6){border-inline-start:4px solid var(--a11y-accent,#1a5f6e)!important;padding-inline-start:.5em!important;background:rgba(26,95,110,.12)!important}
html[data-a11y-focus] :focus:not([data-a11y-skip]){outline:4px solid var(--a11y-focus,#1a5f6e)!important;outline-offset:2px!important;box-shadow:0 0 0 2px var(--a11y-gap,#fff)!important;border-radius:inherit}
html[data-a11y-cursor="1"] *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' width='48' height='48'%3E%3Cpath d='M6 3v34l9-8 6 14 7-3-6-14h12z' fill='%23000' stroke='%23fff' stroke-width='3'/%3E%3C/svg%3E") 6 3,auto}
html[data-a11y-cursor="2"] *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' width='64' height='64'%3E%3Cpath d='M6 3v34l9-8 6 14 7-3-6-14h12z' fill='%23000' stroke='%23fff' stroke-width='3'/%3E%3C/svg%3E") 8 4,auto}
html[data-a11y-motion] :is(*,::before,::after){animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition:none!important;scroll-behavior:auto!important}
html[data-a11y-labels] [data-a11y-label]::after{content:attr(data-a11y-label);content:attr(data-a11y-label) / "";margin-inline-start:.4em;font-size:.85em}
html[data-a11y-images] .a11y-cap[hidden]{display:none}
html[data-a11y-targets] :is(a,button,[role=button],[role=tab],summary,select,textarea,input:not([type=checkbox],[type=radio],[type=hidden])):not([data-a11y-skip],[data-a11y-skip] *){min-block-size:44px;min-inline-size:44px}
html[data-a11y-targets] a:not([data-a11y-skip],[data-a11y-skip] *){padding-block:.5em}
/* a11y-kit host bridge (specs/a11y-kit-adoption/ux-plan.md §1, §3). The ONLY host CSS for the kit. */

/* Public layouts (no --th2-* scope): literal mirrors of the th2 LIGHT tokens. */
:root{
  --a11y-surface:#ffffff; --a11y-surface-sunken:#faf9f6;
  --a11y-text:#1a1a22; --a11y-text-muted:#6e6c7a;
  --a11y-accent:#2563eb; --a11y-accent-ink:#ffffff;
  --a11y-accent-tint:#eff4ff; --a11y-accent-tint-text:#2563eb;
  --a11y-border:#949089; --a11y-border-strong:#6e6c7a;
  --a11y-font:'Heebo',system-ui,sans-serif; --a11y-radius-panel:18px;
}

/* Admin v2: real tokens (panel host is appended to <body>, so it inherits these). */
body.header-v2{
  --a11y-surface:var(--th2-surface); --a11y-surface-sunken:var(--th2-surface-2);
  --a11y-text:var(--th2-ink); --a11y-text-muted:var(--th2-muted-strong);
  --a11y-accent:var(--th2-focus); --a11y-accent-ink:var(--th2-surface);
  --a11y-accent-tint:var(--th2-focus-soft); --a11y-accent-tint-text:var(--th2-focus);
  --a11y-border:var(--th2-border-control); --a11y-border-strong:var(--th2-muted-strong);
  --a11y-font:var(--th2-font); --a11y-radius-panel:var(--th2-r-lg);
}
/* Dark: --th2-focus #3b82f6 + any ink is 3.68 to 4.56:1, so switch accent to info-ink. */
body.header-v2[data-th2-theme="dark"]{
  --a11y-accent:var(--th2-info-ink); --a11y-accent-tint:var(--th2-info-bg);
  --a11y-accent-tint-text:var(--th2-info-ink);
}

/* Focus pill must sit ABOVE Bootstrap sticky-top (1020) / fixed (1030) / cookie bar (1040),
   below modal backdrop (1050). Kit default 1000 is obscured on the homepage (WCAG 2.4.11). */
.a11y-skip:focus,.a11y-trigger:focus{z-index:1045}

/* Public footer entry point */
.th-a11y-foot{text-align:center;margin-block:var(--a11y-gap,1rem);font-size:.9375rem}
.th-a11y-foot-btn{font:inherit;color:inherit;background:none;border:0;padding:.5rem .25rem;min-block-size:44px;text-decoration:underline;cursor:pointer}
.th-foot-btn{display:inline-flex;align-items:center;font:inherit;font-size:.875em;color:inherit;background:none;border:0;padding:0 .25rem;min-block-size:44px;text-decoration:none;cursor:pointer}
.th-foot-btn:focus-visible,.th-a11y-foot-btn:focus-visible{outline:2px solid var(--a11y-accent);outline-offset:2px}

/* Always-visible trigger on public layouts (supersedes the kit's "quiet until used";
   ux-plan section 3-r1). Mirrors core.css's html[data-a11y-active] .a11y-up rules for the
   not-yet-active state, so the circle shows from first paint. Admin has no .a11y-up (own top-bar button). */
html:not([data-a11y-active]):not([data-a11y-pos=hidden]) .a11y-up{position:fixed;z-index:900;display:flex;align-items:center;justify-content:center;inline-size:44px;block-size:44px;min-block-size:0;padding:0;margin:0;overflow:visible;clip-path:none;border:0;background:none;color:var(--a11y-accent,#1a5f6e);inset-block-start:var(--a11y-ts,auto);inset-block-end:var(--a11y-bs,calc(var(--a11y-avoid-bottom,0px) + 14px + env(safe-area-inset-bottom,0px)));inset-inline-start:var(--a11y-ss,auto);inset-inline-end:var(--a11y-es,2px)}
html:not([data-a11y-active]):not([data-a11y-pos=hidden]) .a11y-up::before{content:"";position:absolute;inline-size:32px;block-size:32px;border:1px solid var(--a11y-border,#6b7280);border-radius:50%;background:var(--a11y-surface,#fff)}
html:not([data-a11y-active]):not([data-a11y-pos=hidden]) .a11y-up svg{display:block;position:relative;inline-size:18px;block-size:18px;fill:currentColor}
html:not([data-a11y-active]):not([data-a11y-pos=hidden]) .a11y-up .a11y-t{position:absolute;inset-inline-end:calc(100% + 8px);inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;font:600 .875rem system-ui,sans-serif;border-radius:12px;background:var(--a11y-surface,#fff);color:var(--a11y-text,#141b1f);border:1px solid var(--a11y-accent,#1a5f6e)}
html:not([data-a11y-active]):not([data-a11y-pos=hidden]) .a11y-up:is(:hover,:focus-visible) .a11y-t{inline-size:auto;block-size:auto;padding:.5rem .75rem;overflow:visible;clip-path:none}
html:not([data-a11y-active]) .a11y-up:focus-visible::before{outline:3px solid var(--a11y-accent,#1a5f6e);outline-offset:2px}
/* Homepage back-to-top (fixed, left 30px bottom 30px) shares the circle's corner: lift it
   whenever the circle sits there (default or end-bottom). */
html:not([data-a11y-pos]) .back-to-top,
html[data-a11y-pos="end-bottom"] .back-to-top{bottom:calc(72px + env(safe-area-inset-bottom,0px))}

/* Presentation slide nav-next (left 1rem, bottom 1rem) collides on mobile: lift the circle. */
@media (max-width:768px){
  html:has(.slide-nav-next):not([data-a11y-pos]) .a11y-up,
  html:has(.slide-nav-next)[data-a11y-pos="end-bottom"] .a11y-up{inset-block-end:calc(var(--a11y-avoid-bottom,0px) + 84px + env(safe-area-inset-bottom,0px))}
}
