:root {
  --motion-ease: cubic-bezier(.22, 1, .36, 1);
  --motion-navy: #0d2b4a;
  --motion-orange: #f06b1d;
}

.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;
}

.ui-arrow {
  width: 1.15em;
  height: 1.15em;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  vertical-align: -.16em;
  line-height: 1;
}
.ui-arrow svg { width: 100%; height: 100%; display: block; overflow: visible; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: square; stroke-linejoin: miter; }
a:hover .ui-arrow,button:hover .ui-arrow { transform: translate3d(2px,-1px,0); }
.ui-arrow--left { transform-origin: center; }
a:hover .ui-arrow--left,button:hover .ui-arrow--left { transform: translate3d(-2px,0,0); }
.ui-arrow--down { transform-origin: center; }
a:hover .ui-arrow--down,button:hover .ui-arrow--down { transform: translate3d(0,2px,0); }

.accessibility-tools { position:fixed; right:22px; bottom:22px; z-index:9998; font-family:Montserrat,Arial,sans-serif; }
.accessibility-tools__trigger { width:54px; height:54px; display:grid; place-items:center; border:2px solid #fff; border-radius:50%; color:#fff; background:#f06b1d; box-shadow:0 10px 30px rgba(0,20,40,.24); font:800 15px/1 Montserrat,Arial,sans-serif; cursor:pointer; transition:transform .2s ease,background .2s ease; }
.accessibility-tools__trigger:hover { transform:translateY(-3px); background:#0d2b4a; }
.accessibility-tools__trigger:focus-visible,.accessibility-tools__panel button:focus-visible { outline:3px solid #ffbd74; outline-offset:3px; }
.accessibility-tools__panel { position:absolute; right:0; bottom:66px; width:min(340px,calc(100vw - 28px)); padding:22px; color:#102c49; background:#fff; border:1px solid rgba(13,43,74,.16); box-shadow:0 24px 70px rgba(0,20,40,.28); }
.accessibility-tools__panel[hidden] { display:none; }
.accessibility-tools__head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding-bottom:17px; border-bottom:1px solid rgba(13,43,74,.14); }
.accessibility-tools__head small { display:block; margin-bottom:5px; color:#d94f00; font-size:8px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.accessibility-tools__head h2 { margin:0; font-size:22px; letter-spacing:-.04em; }
.accessibility-tools__head > button { width:34px; height:34px; border:0; color:#102c49; background:#eef4f7; font:400 25px/1 Arial,sans-serif; cursor:pointer; }
.accessibility-tools__group { padding:18px 0 14px; }
.accessibility-tools__group > p { margin:0 0 10px; font-size:11px; font-weight:800; }
.accessibility-tools__sizes { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.accessibility-tools__sizes button { min-height:42px; border:1px solid rgba(13,43,74,.18); color:#102c49; background:#f3f6f7; font:800 12px Montserrat,Arial,sans-serif; cursor:pointer; }
.accessibility-tools__sizes button[aria-pressed="true"] { border-color:#102c49; color:#fff; background:#102c49; }
.accessibility-tools__toggle { width:100%; min-height:61px; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:10px 0; border:0; border-top:1px solid rgba(13,43,74,.12); color:#102c49; background:transparent; text-align:left; cursor:pointer; }
.accessibility-tools__toggle span { display:grid; gap:3px; }
.accessibility-tools__toggle b { font-size:11px; }
.accessibility-tools__toggle small { color:#5c6c7d; font:500 9px/1.35 Arial,sans-serif; }
.accessibility-tools__toggle i { position:relative; width:38px; height:22px; flex:0 0 auto; border-radius:20px; background:#cbd4da; transition:background .2s ease; }
.accessibility-tools__toggle i::after { content:""; position:absolute; left:3px; top:3px; width:16px; height:16px; border-radius:50%; background:#fff; transition:transform .2s ease; }
.accessibility-tools__toggle[aria-pressed="true"] i { background:#f06b1d; }
.accessibility-tools__toggle[aria-pressed="true"] i::after { transform:translateX(16px); }
.accessibility-tools__reset { width:100%; min-height:42px; margin-top:12px; border:1px solid #102c49; color:#102c49; background:transparent; font:800 9px Montserrat,Arial,sans-serif; letter-spacing:.08em; text-transform:uppercase; cursor:pointer; }

html.a11y-text-large main p,html.a11y-text-large main li,html.a11y-text-large main dd,html.a11y-text-large footer p,html.a11y-text-large footer a { font-size:calc(100% + 2px)!important; line-height:1.7!important; }
html.a11y-text-larger main p,html.a11y-text-larger main li,html.a11y-text-larger main dd,html.a11y-text-larger footer p,html.a11y-text-larger footer a { font-size:calc(100% + 4px)!important; line-height:1.75!important; }
html.a11y-highlight-links main a:not(.button),html.a11y-highlight-links footer a { text-decoration:underline!important; text-decoration-thickness:2px!important; text-underline-offset:.22em!important; }
html.a11y-high-contrast body { color:#000!important; background:#fff!important; }
html.a11y-high-contrast :focus-visible { outline:4px solid #ffb000!important; outline-offset:4px!important; }
html.a11y-high-contrast .header,html.a11y-high-contrast .site-header,html.a11y-high-contrast .inner-hero,html.a11y-high-contrast .hero,html.a11y-high-contrast .programme-redesign,html.a11y-high-contrast .footer,html.a11y-high-contrast .site-footer { color:#fff!important; background:#001a33!important; }
html.a11y-high-contrast a { text-decoration-color:#ff7a00!important; }
html.a11y-reduce-motion *,html.a11y-reduce-motion *::before,html.a11y-reduce-motion *::after { scroll-behavior:auto!important; animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
html.a11y-reduce-motion .page-transition { display:none!important; }
html.a11y-reduce-motion .reveal-item,html.a11y-reduce-motion .hero-intro { opacity:1!important; transform:none!important; }

.page-transition {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #fff;
  background: var(--motion-navy);
  transform: translate3d(0, 0, 0);
  transition: transform 680ms var(--motion-ease);
  pointer-events: none;
}

.page-transition::after {
  content: "";
  position: absolute;
  inset: auto 0 0;
  height: 9px;
  background: var(--motion-orange);
}

.page-transition__mark {
  display: flex;
  align-items: center;
  gap: 16px;
  font: 800 12px/1 Montserrat, sans-serif;
  letter-spacing: .22em;
  text-transform: uppercase;
}

.page-transition__mark::before {
  content: "";
  width: 34px;
  height: 34px;
  border: 8px dotted #7db5d3;
  border-radius: 50%;
  animation: transition-mark-spin 3.4s linear infinite;
}

.page-transition.is-revealed { transform: translate3d(0, -101%, 0); }
.page-transition.is-exiting { transform: translate3d(0, 0, 0); pointer-events: auto; }

@keyframes transition-mark-spin { to { transform: rotate(1turn); } }

html.motion-ready .reveal-item {
  opacity: 0;
  transform: translate3d(0, 26px, 0);
  transition: opacity 640ms var(--motion-ease), transform 640ms var(--motion-ease);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

html.motion-ready .reveal-item.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

html.motion-ready .hero-intro {
  opacity: 0;
  transform: translate3d(0, 22px, 0);
  transition: opacity 720ms var(--motion-ease), transform 720ms var(--motion-ease);
  transition-delay: var(--intro-delay, 0ms);
}

html.motion-ready .hero-intro.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.hero__circle {
  transform: translate3d(var(--circle-x, 0px), var(--circle-y, 0px), 0) rotate(var(--circle-rotate, -11deg)) scale(var(--circle-scale, 1));
  transition: transform 850ms var(--motion-ease), opacity 400ms ease, filter 400ms ease;
  animation: circle-breathe 5.6s ease-in-out infinite alternate;
  will-change: transform;
}

.hero.is-circle-active .hero__circle {
  transition-duration: 180ms, 400ms, 400ms;
  filter: drop-shadow(0 0 22px rgba(125, 181, 211, .18));
}

@keyframes circle-breathe {
  from { opacity: .34; filter: drop-shadow(0 0 0 rgba(125, 181, 211, 0)); }
  to { opacity: .52; filter: drop-shadow(0 0 24px rgba(125, 181, 211, .16)); }
}

@media (max-width: 760px) {
  .accessibility-tools { right:14px; bottom:14px; }
  .accessibility-tools__panel { bottom:62px; }
  .page-transition__mark { font-size: 10px; }
  html.motion-ready .reveal-item { transform: translate3d(0, 18px, 0); }
  .hero__circle { animation-duration: 6.8s; }
}

@media (prefers-reduced-motion: reduce) {
  .page-transition { display: none; }
  html.motion-ready .reveal-item,
  html.motion-ready .hero-intro {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .hero__circle { animation: none; transform: rotate(-11deg); transition: none; }
}
