/* ==================================================================
   GIGW 3.0 / WCAG 2.2 remediation stylesheet
   Loaded LAST on every page so it overrides theme defaults.
   Last revised: 23-Sep-2026 (Draft Audit Report observations)
   ================================================================== */

/* ---------- 2.4.7 / 1.4.11  Visible, high-contrast keyboard focus ----------
   Two-tone ring: dark outline (visible on light backgrounds) plus a yellow
   halo (visible on dark backgrounds). Meets 3:1 against any surface.        */
a:focus, button:focus, input:focus, textarea:focus, select:focus,
[tabindex]:focus, summary:focus {
    outline: 3px solid #0b0c0c !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #ffdd00 !important;
}
/* Mouse clicks do not need the ring; keyboard focus always gets it */
a:focus:not(:focus-visible), button:focus:not(:focus-visible) {
    outline: none !important;
    box-shadow: none !important;
}
/* Programmatic focus targets (main, modal) should not show a big ring */
#main-content:focus, .modal:focus { outline: none !important; box-shadow: none !important; }

/* ---------- 2.4.11  Focus not obscured by the sticky menu ----------
   scroll-padding makes the browser keep focused elements below the
   fixed menu bar when tabbing.                                          */
html { scroll-padding-top: 110px; }
#main-content, :target { scroll-margin-top: 110px; }

/* On short screens (landscape phones, 400% zoom) the sticky menu would
   cover most of the viewport, so it scrolls away normally instead
   (1.3.4 Orientation, 1.4.10 Reflow at 256px height).                   */
@media (max-height: 500px), (max-width: 767px) {
    .mainmenu-area.stricky-fixed { position: relative !important; }
    html { scroll-padding-top: 0; }
}

/* ---------- Visually hidden text (read by screen readers) ---------- */
.visually-hidden, .sr-only {
    position: absolute !important;
    width: 1px !important; height: 1px !important;
    padding: 0 !important; margin: -1px !important;
    overflow: hidden !important; clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important; border: 0 !important;
}

/* ---------- 2.4.1  Skip to main content ---------- */
.skip-link {
    position: absolute; left: 8px; top: -100px; z-index: 100001;
    background: #000080; color: #fff !important;
    padding: 10px 16px; font-weight: 600; text-decoration: underline;
    border-radius: 0 0 4px 4px;
}
.skip-link:focus { top: 0; }

/* ---------- Accessibility toolbar (text size, contrast, search) ---------- */
.a11y-bar { background: #f2f2f2; border-bottom: 1px solid #767676; font-size: 14px; color: #1a1a1a; }
.a11y-bar .container { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 6px 15px; }
.a11y-bar .a11y-group { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin: 0; padding: 0; border: 0; }
.a11y-bar .a11y-group > span { font-weight: 600; margin-right: 4px; }
.a11y-bar button {
    min-width: 32px; min-height: 32px; padding: 2px 10px;
    background: #fff; color: #1a1a1a; border: 1px solid #595959; border-radius: 3px;
    font-size: 14px; font-weight: 600; line-height: 1.2; cursor: pointer; white-space: nowrap;
}
.a11y-bar button[aria-pressed="true"] { background: #000080; color: #fff; border-color: #000080; }
.a11y-bar a { color: #1a1a1a; text-decoration: underline; font-weight: 600; }
.site-search { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.site-search label { font-weight: 600; margin: 0 4px 0 0; }
.site-search input {
    width: 170px; max-width: 100%; min-height: 32px; padding: 2px 8px;
    border: 1px solid #595959; border-radius: 3px; color: #1a1a1a; background: #fff;
}
@media (max-width: 767px) {
    .site-search { margin-left: 0; width: 100%; flex-wrap: wrap; }
    .site-search label { flex: 0 0 100%; }
    .site-search input { flex: 1 1 120px; width: auto; min-width: 0; }
}

/* ---------- 1.4.3  Text contrast fixes ---------- */
/* Disclaimer strip: solid dark background instead of image */
header .top_header { background: #262c36 !important; height: auto !important; }
header .top_header p { color: #e3e7ec !important; float: none !important; text-align: center; margin: 0; padding: 6px 0; line-height: 1.5; }
header .top_bar p { color: #b00000; text-align: center; line-height: 1.6; padding: 4px 0; }
/* Main menu: teal darkened from #13A0B2 (3.1:1) to #0E7280 (5.6:1 with white) */
.mainmenu-area .container,
.mainmenu-area.stricky-fixed,
.mainmenu-area .nav_main_list,
.mainmenu-area .nav_main_list ul { background: #0e7280 !important; }
.mainmenu-area nav > .nav_main_list ul li a { color: #fff !important; }
.mainmenu-area nav > .nav_main_list ul li:hover > a,
.mainmenu-area nav > .nav_main_list ul li > a:focus,
.mainmenu-area nav > .nav_main_list ul li > a[aria-current="page"] { color: #fff !important; text-decoration: underline; text-underline-offset: 4px; }
/* Quick links / content sit on a plain white background (was a photo) */
.testimonial_sec { background: #fff !important; }
.testimonial_sec, .testimonial_sec p, .testimonial_sec li { color: #333; }
/* Contact icons: darker teal (>= 4.5:1 on white) */
.contact_us_container .icon_holder .icon { color: #0e7280 !important; }

/* ---------- 1.4.11  Form field and button boundaries (>= 3:1) ---------- */
.contact-form input, .contact-form textarea {
    border: 1px solid #6b6b6b !important;
    color: #1a1a1a !important; background: #fff !important;
}
.contact-form input::placeholder, .contact-form textarea::placeholder { color: #595959; }
.contact-form button.submit { border: 2px solid #171b20 !important; color: #171b20 !important; }
.contact-form .field-hint { display: block; text-align: left; font-size: 13px; color: #444; margin: 0 0 4px; }

/* ---------- 3.3.1 / 3.3.3  Error identification (text + icon, not colour alone) ---------- */
.contact-form .field-error {
    display: block; text-align: left; color: #b00000; font-size: 14px; font-weight: 600; margin: 4px 0 8px;
}
.contact-form .field-error::before { content: "\26A0  Error: "; }
.contact-form [aria-invalid="true"] { border: 2px solid #b00000 !important; background: #fff5f5 !important; }
.error-summary {
    text-align: left; border: 3px solid #b00000; padding: 12px 16px; margin: 0 0 16px; background: #fff;
}
.error-summary h3 { font-size: 18px; margin: 0 0 8px; color: #b00000; }
.error-summary ul { margin: 0; padding-left: 20px; list-style: disc; }
.error-summary a { color: #b00000 !important; text-decoration: underline; font-weight: 600; }
.form-status:not(:empty) { text-align: left; padding: 10px 14px; margin-bottom: 12px; border: 2px solid #0e7280; background: #eef7f8; color: #1a1a1a; }

/* ---------- 1.3.1  Headings / lists that replace <br> spacing ---------- */
.page-content h1 { font-size: 30px; margin: 30px 0 20px; color: #222; }
.page-content h2 { font-size: 22px; margin: 26px 0 12px; color: #222; }
.page-content h3 { font-size: 18px; margin: 20px 0 8px; color: #222; }
.page-content p, .page-content li { text-align: left; color: #333; line-height: 1.7; }
.page-content ol, .page-content ul.bullets { padding-left: 24px; margin-bottom: 16px; }
.page-content ol { list-style: decimal; }
.page-content ol.alpha { list-style: lower-roman; }
.page-content ul.bullets { list-style: disc; }
.page-content a { color: #175e9c; text-decoration: underline; }
.page-content .doc-meta { text-align: right; font-style: italic; }
.link-list { list-style: none; padding: 0; }
.link-list li { margin-bottom: 12px; }
.company h2, .sec-title h2 { margin-bottom: 16px; }
.attention-list { list-style: decimal; padding-left: 24px; }
.attention-list li { margin-bottom: 10px; text-align: left; }
.company ol, .company ul.bullets { padding-left: 24px; }
.company ol { list-style: decimal; }
.company ul.bullets { list-style: disc; }

/* ---------- 1.4.10  Reflow at 320px ---------- */
img { max-width: 100%; height: auto; }
body { overflow-wrap: break-word; }
.mainmenu-area .find-advisor:before { display: none; }
@media (max-width: 1170px) {
    .mainmenu-area .find-advisor { float: none !important; margin: 0; }
    .mainmenu-area .find-advisor a.advisor { line-height: 1.4 !important; padding: 12px 15px !important; font-size: 15px; }
}
@media (max-width: 767px) {
    .row { margin-left: 0; margin-right: 0; }
    .container { padding-left: 12px; padding-right: 12px; }
    [class*="col-"] { padding-left: 0; padding-right: 0; }
    .slider-toggle { right: 6px; bottom: 6px; }
    .grievance-table, .grievance-table thead, .grievance-table tbody,
    .grievance-table tr, .grievance-table th, .grievance-table td { display: block; width: 100%; }
    .grievance-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
    .grievance-table tr { margin-bottom: 12px; border: 1px solid #767676; }
    .grievance-table td::before { content: attr(data-label) ": "; font-weight: 700; }
    .footer_help_links { justify-content: flex-start; }
    .bottom_footer p.float_left, .bottom_footer p.float_right { float: none !important; }
}
/* Risk disclosure dialog: always scrollable, never wider than the screen */
.invst_chrt { padding: 10px 20px 20px; text-align: left; border-top: 1px solid #767676; font-size: 15px; }
.invst_chrt ul { margin: 0 0 12px; padding: 0; }
.invst_chrt ul li { position: relative; padding-left: 20px; margin-bottom: 6px; }
.invst_chrt ul li::before { content: ""; position: absolute; left: 4px; top: 9px; width: 6px; height: 6px; background: #1a1a1a; }
.invst_chrt a { color: #175e9c; text-decoration: underline; }
.modal .modal-header { padding: 16px 20px; }
.modal button.close {
    position: absolute; right: 12px; top: 12px; z-index: 99;
    width: 36px; height: 36px; padding: 0; margin: 0;
    border-radius: 50%; background: #b00000; color: #fff; opacity: 1;
    font-size: 28px; line-height: 34px; text-align: center; text-shadow: none;
}
.modal button.close:hover { background: #7a0000; color: #fff; opacity: 1; }
.modal .btn-primary { background: #000080; border-color: #000080; color: #fff; }
.modal-dialog { width: auto; max-width: 700px; margin: 20px auto; padding: 0 10px; }
.modal-content { max-height: calc(100vh - 40px); overflow-y: auto; }
.modal .modal-title { font-size: 20px; margin: 0; padding-right: 40px; }
.modal .invst_chrt h3 { font-size: 17px; margin: 0 0 10px; }

/* Footer: last-updated line */
.last-updated { clear: both; text-align: center; color: #d3d8dd; font-size: 14px; margin: 0; padding-top: 6px; }

/* ---------- 1.4.11  High-contrast mode (user option in the toolbar) ---------- */
html.high-contrast body :where(*:not(img, .skip-link, .tp-bgimg)) {
    background-color: #000 !important; background-image: none !important; border-color: #fff !important;
}
html.high-contrast .search-status, html.high-contrast .form-status, html.high-contrast .error-summary { border: 2px solid #fff !important; }
html.high-contrast body { background: #000 !important; color: #fff !important; }
html.high-contrast p, html.high-contrast li, html.high-contrast h1, html.high-contrast h2,
html.high-contrast h3, html.high-contrast h4, html.high-contrast h5, html.high-contrast h6,
html.high-contrast span, html.high-contrast label, html.high-contrast address,
html.high-contrast strong, html.high-contrast b, html.high-contrast caption { color: #fff !important; }
html.high-contrast a, html.high-contrast a span, html.high-contrast .mainmenu-area .find-advisor a.advisor { color: #ffff00 !important; text-decoration: underline !important; }
html.high-contrast button, html.high-contrast input, html.high-contrast textarea,
html.high-contrast .a11y-bar button, html.high-contrast .slider-toggle, html.high-contrast button.close {
    background: #000 !important; color: #fff !important; border: 2px solid #fff !important;
}
html.high-contrast .a11y-bar button[aria-pressed="true"] { background: #ffff00 !important; color: #000 !important; }
html.high-contrast .icon, html.high-contrast .fa { color: #fff !important; }
html.high-contrast .field-error, html.high-contrast .error-summary h3, html.high-contrast .error-summary a { color: #ff9f9f !important; }
html.high-contrast a:focus, html.high-contrast button:focus, html.high-contrast input:focus,
html.high-contrast textarea:focus { outline-color: #ffff00 !important; box-shadow: 0 0 0 2px #000 !important; }
html.high-contrast .logo img { background: #fff; padding: 4px; }

/* ---------- Text size option (A- / A / A+) ---------- */
html[data-text-size="1"] main p, html[data-text-size="1"] main li, html[data-text-size="1"] main td,
html[data-text-size="1"] main th, html[data-text-size="1"] main label, html[data-text-size="1"] main address,
html[data-text-size="1"] main input, html[data-text-size="1"] main textarea { font-size: 18px !important; }
html[data-text-size="2"] main p, html[data-text-size="2"] main li, html[data-text-size="2"] main td,
html[data-text-size="2"] main th, html[data-text-size="2"] main label, html[data-text-size="2"] main address,
html[data-text-size="2"] main input, html[data-text-size="2"] main textarea { font-size: 21px !important; }
html[data-text-size="-1"] main p, html[data-text-size="-1"] main li, html[data-text-size="-1"] main td,
html[data-text-size="-1"] main th, html[data-text-size="-1"] main label, html[data-text-size="-1"] main address { font-size: 14px !important; }

/* Search results on the sitemap page */
.search-status:not(:empty) { font-weight: 600; margin: 10px 0 20px; padding: 8px 12px; border-left: 4px solid #0e7280; background: #eef7f8; }
.sitemap_container .search-hidden { display: none; }

/* Slideshow Pause/Play must sit above the slider layers so it is visible
   and never obscured when focused (WCAG 2.2.2 / 2.4.11) */
.rev_slider_wrapper .slider-toggle { z-index: 1000 !important; }
