.skip-link { position: absolute; left: 1rem; top: -5rem; z-index: 10001; padding: .75rem 1rem; background: #111; color: #fff; font-weight: 700; }
.skip-link:focus { top: 1rem; color: #fff; }

:focus-visible { outline: 3px solid #0b63ce !important; outline-offset: 3px; }

/* Keep the semantic header search button visually identical to its former link. */
.menu .search-cart .search {
    position: relative;
    width: 44px;
    padding: 0;
}
.menu .search .search-btn {
    -webkit-appearance: none !important;
    appearance: none !important;
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    width: 32px !important;
    height: 32px !important;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0 !important;
    border-radius: 0;
    background: transparent !important;
    box-shadow: none !important;
    transform: translate(-50%, -50%);
    cursor: pointer;
}
/* The legacy header layout makes the trigger as tall as the whole navigation bar.
   Put its keyboard indicator around the search icon, rather than that full-height cell. */
.menu .search .search-btn:focus-visible { outline: 0 !important; }
.menu .search .search-btn::before { left: 50% !important; top: 50% !important; transform: translate(-50%, -50%) !important; }
.menu .search .search-btn:focus-visible::before { width: 14px; height: 14px; line-height: 14px; outline: 3px solid #0b63ce !important; outline-offset: 3px; }

.accessibility { position: fixed; right: 1rem; bottom: 5.25rem; z-index: 10000; }
.accessibility__trigger, .accessibility__close, .accessibility__reset, .accessibility__button-group button { border: 0; cursor: pointer; font: inherit; }
.accessibility__trigger { display: flex; align-items: center; gap: .5rem; border-radius: 2rem; padding: .75rem 1rem; background: #123a70; color: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.3); font-weight: 700; }
.accessibility__trigger span[aria-hidden] { font-size: 1.35rem; line-height: 1; }
.accessibility__panel { position: absolute; right: 0; bottom: 0; width: min(23rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); overflow-y: auto; padding: 1.25rem; border: 1px solid #b8c3d1; border-radius: .75rem; background: #fff; color: #17212b; box-shadow: 0 12px 32px rgba(0,0,0,.28); }
.accessibility__panel-header { display: flex; gap: 1rem; justify-content: space-between; border-bottom: 1px solid #d5dce5; padding-bottom: .875rem; }
.accessibility__panel h2 { margin: 0; font-size: 1.25rem; color: inherit; }
.accessibility__panel p { margin: .25rem 0 0; font-size: .9rem; }
.accessibility__close { width: 2rem; height: 2rem; border-radius: 50%; background: #e6ebf1; color: #17212b; font-size: 1.5rem; line-height: 1; }
.accessibility__controls { display: grid; gap: .75rem; margin: 1rem 0; }
.accessibility__controls fieldset { margin: 0; padding: .75rem; border: 1px solid #b8c3d1; border-radius: .4rem; }
.accessibility__controls legend { width: auto; margin: 0; padding: 0 .25rem; font-size: .9rem; font-weight: 700; }
.accessibility__button-group { display: flex; gap: .5rem; }
.accessibility__button-group button, .accessibility__reset { border-radius: .35rem; padding: .5rem .75rem; background: #e6ebf1; color: #17212b; font-weight: 700; }
.accessibility__button-group button[aria-pressed="true"] { background: #123a70; color: #fff; }
.accessibility__option { display: flex; gap: .65rem; align-items: center; margin: 0; cursor: pointer; font-weight: 600; }
.accessibility__option input { width: 1.15rem; height: 1.15rem; }
.accessibility__reset { width: 100%; background: #123a70; color: #fff; }
.accessibility-statement { padding: 2rem; background: #fff; color: #17212b; box-shadow: 0 8px 24px rgba(0,0,0,.1); }
.accessibility-statement h2, .accessibility-statement h3 { color: #17212b; }
.accessibility-statement a { color: #083c90; text-decoration: underline; }

/* Shared public components: solid colours preserve readable contrast. */
.cookie-banner { background: #3a1d6d !important; }
.cookie-text p, .cookie-btn-link, .cookie-links a { color: #fff !important; }
.cookie-btn-secondary { background: #2a114f !important; border-color: #fff !important; color: #fff !important; }
.footer .footer-widget p { color: #fff !important; }

html.accessibility-text-medium { font-size: 112.5%; }
html.accessibility-text-large { font-size: 125%; }
html.accessibility-high-contrast body { background: #000 !important; color: #fff !important; }
html.accessibility-high-contrast body * { background-color: #000 !important; color: #fff !important; border-color: #fff !important; box-shadow: none !important; }
html.accessibility-high-contrast a { color: #ffff00 !important; text-decoration: underline !important; }
html.accessibility-high-contrast .accessibility__trigger, html.accessibility-high-contrast .accessibility__reset, html.accessibility-high-contrast .accessibility__button-group button[aria-pressed="true"] { background: #ffff00 !important; color: #000 !important; }
html.accessibility-high-contrast :focus-visible { outline-color: #ffff00 !important; }
html.accessibility-highlight-links a { color: #083c90 !important; text-decoration: underline !important; text-decoration-thickness: 2px !important; }
html.accessibility-high-contrast.accessibility-highlight-links a { color: #ffff00 !important; }
html.accessibility-readable-font body, html.accessibility-readable-font input, html.accessibility-readable-font button { font-family: Arial, Verdana, sans-serif !important; letter-spacing: .04em; line-height: 1.65 !important; }
html.accessibility-stop-animations *, html.accessibility-stop-animations *::before, html.accessibility-stop-animations *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
html.accessibility-large-cursor, html.accessibility-large-cursor * { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='48'%3E%3Cpath d='M2 2l26 20-12 2 8 17-7 3-8-17-7 10z' fill='black' stroke='white' stroke-width='3'/%3E%3C/svg%3E") 2 2, auto !important; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; } }
@media (max-width: 767px) { .accessibility { right: .75rem; bottom: 1rem; } .accessibility__trigger-text { display: none; } .accessibility__trigger { width: 3.25rem; height: 3.25rem; justify-content: center; padding: 0; } }
