/* Essential content stays visible when animation libraries fail or are disabled. */
[data-aos] { opacity: 1 !important; transform: none !important; transition: none !important; }
[hidden] { display: none !important; }
html { scroll-padding-top: 110px; }
body { overflow-x: hidden; }
img { max-width: 100%; }
.rich-content { overflow-wrap: anywhere; }
.rich-content img { max-width: 100%; height: auto; }
.rich-content figure { max-width: 100%; margin-inline: 0; }
.rich-content table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; }
.rich-content th, .rich-content td { padding: .5rem; border: 1px solid #d5dee5; }
.rich-content ul, .rich-content ol { padding-inline-start: 1.5rem; }
.rich-content pre { white-space: pre-wrap; overflow-wrap: anywhere; }
.rich-content iframe, .map-preview iframe { max-width: 100%; }
#main-nav .top-bar { position: static; }
#main-nav .top-bar .container { gap: .6rem; padding-block: .65rem; }
#main-nav .contact-details { line-height: 1.8; }
.nav-brand img { width: 170px; height: 60px; object-fit: contain; }
.skip-link { position: absolute; top: -100px; left: 1rem; z-index: 4000; background: white; padding: .75rem; }
.skip-link:focus { top: .5rem; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 3px solid #e9bd35; outline-offset: 4px; }
.contact-actions { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; }
.contact-actions .btn { margin: 0; }
.home-contact { padding-block: 1.5rem; background: #f5f8fa; }
.home-contact .container { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; }
.home-contact p { margin: 0; }
#intro-cards { position: relative; margin-top: 0; padding-top: 2rem; }
#intro-cards .card { height: 100%; }
#intro-cards > div { margin-bottom: 1.5rem; }
#intro-cards h2 { font-size: 1.5rem; color: inherit; }
#features { padding-block: 2rem; }
#features h5 { margin-top: .75rem; }
.inquiry-panel { padding: clamp(1rem, 3vw, 2rem); background: #f5f8fa; border-radius: 1rem; }
.inquiry-panel h2 { font-size: 1.8rem; }
.inquiry-form label { display: block; font-weight: 600; }
.inquiry-form .form-control { min-height: 48px; width: 100%; }
.inquiry-form .form-trap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.field-errors, .field-errors .errorlist { color: #a32323; }
.form-note { font-size: .95rem; line-height: 1.5; }
.service-intro { margin-bottom: 2rem; }
.service-inquiry { margin-top: 3rem; }
.policy-links { display: flex; justify-content: center; flex-wrap: wrap; gap: 1rem; margin-top: 2rem; }
.link-button { border: 0; padding: 0; background: transparent; color: inherit; text-decoration: underline; cursor: pointer; }
.mobile-contact-bar { display: none; }
.cookie-panel { position: fixed; z-index: 3000; bottom: 1rem; left: 1rem; width: min(560px, calc(100% - 2rem)); padding: 1.5rem; background: white; color: #222; box-shadow: 0 4px 32px #0003; border: 1px solid #d5dee5; border-radius: 1rem; max-height: 80vh; overflow-y: auto; }
.cookie-panel h2 { font-size: 1.4rem; padding-right: 2rem; }
.cookie-close { position: absolute; top: .35rem; right: .35rem; min-width: 44px; min-height: 44px; border: 0; border-radius: .5rem; background: transparent; color: #222; font-size: 1.8rem; cursor: pointer; }
.cookie-close:hover { background: #eef4f8; }
.cookie-close:focus-visible { outline: 3px solid #035392; outline-offset: -3px; }
.cookie-panel p { font-size: .95rem; }
.cookie-panel details label { display: block; margin: .75rem 0; }
.consent-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1rem; }
.cookie-panel .btn { margin: 0; padding: .75rem 1rem; font-size: .9rem; }
.owl-carousel:not(.owl-loaded) { display: block; }
.owl-carousel:not(.owl-loaded) > * { margin-bottom: 1.5rem; }
.team-photo { width: 150px; height: 150px; object-fit: cover; border-radius: 50%; }
.success-panel { min-height: 45vh; }
@media (max-width: 767px) {
  body { padding-bottom: calc(65px + env(safe-area-inset-bottom)); }
  .mobile-contact-bar { position: fixed; display: flex; bottom: 0; left: 0; right: 0; z-index: 2000; padding-bottom: env(safe-area-inset-bottom); background: #035392; box-shadow: 0 -2px 12px #0002; }
  .mobile-contact-bar a { flex: 1; display: flex; justify-content: center; align-items: center; gap: .4rem; min-height: 60px; padding: .6rem; color: white; font-weight: 700; font-size: .95rem; border-inline-end: 1px solid #ffffff40; }
  .cookie-panel { bottom: calc(75px + env(safe-area-inset-bottom)); max-height: 65vh; }
  .home-contact .contact-actions { width: 100%; }
  .home-contact .contact-actions a { flex: 1; padding-inline: .75rem; }
  .page { padding-top: 2rem; padding-bottom: 2rem; }
  .jumbotron { margin-bottom: 0; }
  #main-nav .top-bar { display: none; }
  #intro-cards .p-5 { padding: 1.5rem !important; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}
/* Native carousel: the first slide is visible before JavaScript loads. */
#slider.home-hero { height: clamp(310px, 36vw, 520px); position: relative; padding: 0; margin: 0; }
.home-hero .carousel-inner, .home-hero .carousel-item { height: 100%; }
.home-hero .carousel-item > img { width: 100%; height: 100%; object-fit: cover; }
.home-hero .carousel-item::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, #00000010, #00000070); }
.hero-copy { position: absolute; z-index: 1; top: 50%; right: 7%; width: 43%; transform: translateY(-50%); color: white; text-align: center; }
.hero-copy h1, .hero-copy h2 { color: white; font-size: clamp(2rem, 4vw, 4rem); font-weight: 900; text-transform: none; }
.hero-copy p { color: white; font-size: clamp(1rem, 1.6vw, 1.4rem); }
.home-hero .carousel-control-prev, .home-hero .carousel-control-next { width: 5%; }
@media (max-width: 767px) {
  .hero-copy { right: 10%; width: 80%; }
  .hero-copy h1, .hero-copy h2 { font-size: 2rem; }
  .hero-copy .btn { margin-top: .5rem; padding: .6rem 1rem; font-size: .8rem; }
  .home-hero .carousel-item::after { background: #0005; }
  .home-hero .carousel-control-prev, .home-hero .carousel-control-next { width: 8%; }
}
