/* Final text layer. Keep editorial link styling from changing button labels. */
:where(.prose,.notice,.small-text,.info-panel) a.button{
  color:#fff;
  text-decoration:none;
}
:where(.prose,.notice,.small-text,.info-panel) a.button:hover{
  color:#fff;
  text-decoration:none;
}
:where(.prose,.notice,.small-text,.info-panel) a.button.button-light,
:where(.prose,.notice,.small-text,.info-panel) a.button.button-light:hover,
:where(.prose,.notice,.small-text,.info-panel) a.button.button-secondary{
  color:var(--navy);
}
:where(.prose,.notice,.small-text,.info-panel) a.button.button-secondary:hover{color:#fff}

/* A white inner ring and dark outer ring remain visible on either surface. */
:is(a,button,input,textarea,select,summary):focus-visible{
  outline:3px solid #073c58;
  outline-offset:3px;
  box-shadow:0 0 0 3px #fff;
}
.faq p a:not(.button):not(.text-link),
.enquiry-notice a:not(.button):not(.text-link){
  color:var(--blue);
  text-decoration:underline;
  text-underline-offset:3px;
}
.programme-card h3 a:hover,.card h2 a:hover{text-decoration:underline;text-underline-offset:4px}
.prose a{overflow-wrap:anywhere}
:where(.prose,.programme-card,.source-card,.card) :is(h1,h2,h3){overflow-wrap:break-word}
.page-intro.split>*{min-width:0}
.page-intro h1{overflow-wrap:anywhere}

/* Actions stay readable at every breakpoint, including the narrow layouts. */
body .button,body .closing-cta .button,body.home .closing-cta .button,
#primary-navigation>.button,
body .programme-card .text-link,body .source-card .text-link,
body.home .home-cta,body.home .home-inline-link,body.home .home-cinema-link{
  font-size:14px;
  line-height:1.45;
}
body .filter-button{font-size:14px;min-height:44px}
body .filter-count,body .breadcrumb{font-size:14px}
body .contact-channels a{font-size:16px;min-height:28px;line-height:1.6}
body .button,body.home .home-cta{max-width:100%;white-space:normal;text-align:center}
body .text-link,body.home .home-inline-link{max-width:100%;white-space:normal}

/* Body copy and form instructions are not treated as small decorative labels. */
body .card p:not(.eyebrow):not(.small-text),body .programme-card-body>p:not(.programme-category),
body .source-card p:not(.eyebrow):not(.small-text),body .video-card>p:not(.eyebrow),
body .admissions-steps p,body .contact-layout>.info-panel>p:not(.eyebrow):not(.small-text),
body.home .home-film-grid .video-card>p:not(.eyebrow),
body.home .home-evidence-grid .source-card p,
body.home .home-directory>p:not(.home-kicker),
body.home .home-admission-steps p{
  font-size:15px;
  line-height:1.75;
}
body.home .home-location-panel address{font-size:15px;line-height:1.7}
body .enquiry-form p,body .enquiry-notice,body .form-message,body .form-notice{
  font-size:14px;
  line-height:1.7;
}
body .form-field label,body .consent-label{font-size:14px;line-height:1.6}
body .form-field label:has(input[type=checkbox]){font-size:14px}
body .form-field input,body .form-field select,body .form-field textarea{font-size:16px}
body .form-field small,body .field-error,body .field-hint{font-size:13px;line-height:1.6}

/* Useful metadata remains legible without competing with the main headings. */
body .eyebrow,body .programme-category,body .award-tag,
body .video-card .eyebrow,body .video-duration,
body .facts-list dt,body .programme-facts dt,body .facts-list li span,
body .evidence-table th,
body.home .home-kicker,body.home .home-overline,
body.home .home-quick-paths a>span,
body.home .home-list-label,body.home .home-list-label span,
body.home .home-programme-name small,body.home .home-programme-number,
body.home .home-programme-picture figcaption>span:first-child,
body.home .home-picture-credit,body.home .home-practice-footnote,
body.home .home-location-label,body.home .home-directory .home-kicker,
body.home .home-film-grid .video-card .eyebrow{
  font-size:12px;
  line-height:1.6;
  letter-spacing:.06em;
}
body.home .home-quick-paths a>span,body.home .home-programme-number{color:var(--muted)}
body .source-meta,body .source-meta time,
body.home .home-evidence-grid .source-meta time,
body .image-caption,body .media-note,
body.home .home-media-caption,body.home .home-programme-note{
  font-size:13px;
  line-height:1.65;
}
body .gallery-item figcaption{font-size:14px;line-height:1.6}
body .gallery-item figcaption strong{font-size:15px;line-height:1.45}
body.home .home-practice-main>figcaption,
body.home .home-practice-inset>figcaption,
body.home .home-campus-panorama>figcaption{font-size:12px;line-height:1.4}
body.home .home-campus-panorama>figcaption{right:20px;width:fit-content}
body .evidence-table{font-size:14px;line-height:1.65}
body.home .home-scroll-link,body.home .home-film-toggle{font-size:12px;line-height:1.5}
body.home .home-film-toggle{min-height:44px}

/* Contact details and legal navigation must survive small-screen reflow. */
body .site-footer{font-size:14px;line-height:1.75}
body .site-footer h2{font-size:15px;line-height:1.45}
body .footer-brand>a:last-child{font-size:14px;overflow-wrap:anywhere;max-width:100%}
body .footer-bottom,body .preview-label{font-size:12px;line-height:1.6}
body .site-footer a{min-height:24px}
body .utility-bar{font-size:12px}

/* Keep the requested transparent menu legible over white signs in the film. */
body.home:not(.home-past-hero):not(.menu-open) .site-header:before{
  content:'';
  position:absolute;
  inset:-36px 0 -28px;
  z-index:-1;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(3,27,41,.74),rgba(3,27,41,.7) 52%,rgba(3,27,41,.64) 72%,transparent);
}
body.home:not(.home-past-hero):not(.menu-open) #primary-navigation a,
body.home .utility-bar{text-shadow:0 1px 3px #00152280}

@media(max-width:600px){
  body.home .home-overline{letter-spacing:.04em}
  body.home .home-scroll-link{max-width:145px}
  body.home .home-directory .home-kicker{max-width:140px}
  body.home .home-list-label{gap:10px}
  body.home .home-practice-footnote{gap:18px}
  body .footer-grid{column-gap:20px}
}
