/* ==========================================================================
   GIGW 3.0 / WCAG 2.2 — Accessibility Remediation Stylesheet
   Loaded LAST on every page so these rules can override main.css/default.css
   Addresses every "Non-Compliant" finding in the Final Audit Evidence sheet.
   ========================================================================== */

/* --------------------------------------------------------------------
   1) Bypass Repeated Content (2.4.1) — Skip link must be genuinely
   usable and visible on keyboard focus, not just repositioned while
   staying 1px x 1px.
   -------------------------------------------------------------------- */
.skip-link {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
  white-space: nowrap;
}
.skip-link:focus {
  position: fixed !important;
  left: 10px !important;
  top: 10px !important;
  width: auto !important;
  height: auto !important;
  overflow: visible !important;
  white-space: normal !important;
  z-index: 100000 !important;
  padding: 10px 18px;
  background: #000;
  color: #fff;
  font-weight: 600;
  border-radius: 4px;
  text-decoration: none;
  box-shadow: 0 0 0 3px #fff, 0 0 0 6px #000;
}

/* Visible keyboard focus everywhere (kept/strengthened) */
a:focus, button:focus, input:focus, select:focus, textarea:focus,
[tabindex]:focus {
  outline: 3px solid #005fcc !important;
  outline-offset: 2px !important;
}

/* --------------------------------------------------------------------
   2) Use of Colour (1.4.1) — links inside body copy must not rely on
   colour alone; underline them. Nav/menu items are excluded because
   they read as buttons/UI controls, not inline text links.
   -------------------------------------------------------------------- */
.text a,
.ptxtt a,
.btxtt a,
.contacts1 a,
.cnt223 p a,
footer p a,
#contact p a,
main p a,
main li a {
  text-decoration: underline;
}
.text a:hover, .ptxtt a:hover, .contacts1 a:hover, footer p a:hover {
  text-decoration: underline;
}

/* Ready-made, non-colour-only error/required-field styling for any
   current or future form fields. */
.required::after {
  content: " (required)";
  font-weight: normal;
  font-size: 0.85em;
}
input:invalid,
.field-error,
.has-error input,
.has-error select,
.has-error textarea {
  border: 2px solid #b00020 !important;
}
.field-error::before,
.error-message::before {
  content: "⚠ ";
}

/* --------------------------------------------------------------------
   3) Content Reflow (1.4.10) & Text Resize (1.4.4) & Orientation
   Flexibility (1.3.4) — the page must reflow to a single column with
   no horizontal scrolling at 320px width / 400% zoom, and must keep
   working when the viewport is rotated to landscape.
   -------------------------------------------------------------------- */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
html, body {
  max-width: 100%;
  overflow-x: hidden;
}
*, *::before, *::after {
  box-sizing: border-box;
}
img, svg, video, iframe, embed, object, canvas {
  max-width: 100%;
  height: auto;
}
pre, code, textarea {
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: break-word;
}
table {
  max-width: 100%;
}
.container, .container-fluid, .row,
[class*="col-"] {
  max-width: 100%;
}
.swiper-container, .swiper-wrapper, .swiper-slide {
  max-width: 100vw !important;
}

@media (max-width: 480px) {
  html, body { overflow-x: hidden; width: 100%; }
  h1, h2, h3, h4, h5, h6, p, a, span, li {
    overflow-wrap: break-word;
    word-break: break-word;
  }
  section.hero, section[class*="section-"] {
    height: auto !important;
    min-height: 0 !important;
    padding-top: 24px;
    padding-bottom: 24px;
  }
  .swiper-slide, .swiper-container {
    width: 100% !important;
    height: auto !important;
  }
  .navbar-nav, nav.navbar {
    flex-wrap: wrap;
  }
}

/* Landscape phones/tablets — avoid locked/clipped full-height sections */
@media (max-width: 900px) and (orientation: landscape) {
  section.hero, section[class*="section-"] {
    height: auto !important;
    min-height: 0 !important;
  }
  .swiper-slide, .swiper-container {
    height: auto !important;
  }
}

/* --------------------------------------------------------------------
   4) Non-Text Contrast / Text Contrast safety net (1.4.3 / 1.4.11) —
   guarantee readable text colour on the site's dark sections, in case
   any element is left without an explicit colour and would otherwise
   inherit black-on-near-black text.
   -------------------------------------------------------------------- */
section.hero,
section.section-3,
section.section-6,
section.section-7,
section.section-8,
footer,
#contact {
  color: #f2f2f2;
}
section.hero a,
section.section-3 a,
section.section-6 a,
section.section-7 a,
section.section-8 a,
footer a,
#contact a {
  color: #ffffff;
}
section.hero h1, section.hero h2, section.hero h3,
section.section-3 h1, section.section-3 h2, section.section-3 h3,
section.section-6 h1, section.section-6 h2, section.section-6 h3,
footer h1, footer h2, footer h3, footer h4 {
  color: #ffffff;
}

/* --------------------------------------------------------------------
   5) Images of Text (1.4.5) — make sure logo / QR / payment badge
   images never clip their accessible name and are not the only way
   to reach the information they convey (see accompanying real-text
   payment details next to each QR code in the markup).
   -------------------------------------------------------------------- */
img[alt=""] {
  /* decorative images: explicitly fine, left untouched */
}

/* --------------------------------------------------------------------
   6) Target Size / small tap targets stay comfortably clickable on
   mobile after reflow changes above.
   -------------------------------------------------------------------- */
.navbar-nav .nav-link, .btn, button, a.nav-link {
  min-height: 24px;
}
