
/* Carefully scoped final fixes. Original page layout and colour variables stay intact. */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { min-width: 0; }
.page-main { display: block; width: 100%; min-width: 0; }
img { max-width: 100%; }
.site-header, .navigation-wrapper, .footer-wrapper { display: contents; }
.skip-to-content { position: fixed; top: -100px; left: 8px; z-index: 20000; background: var(--color-primary); color: var(--color-on-primary); padding: 10px 16px; border-radius: 0 0 8px 8px; }
.skip-to-content:focus { top: 0; }
#main-content:focus { outline: none; }
.navigation-section { z-index: 10000; }
.navigation-hamburger, .navigation-close { border: 0; background: none; padding: 0; flex-shrink: 0; color: var(--color-on-surface); }
.navigation-hamburger { display: none; }
.navigation-mobile-overlay.is-open { display: flex; }
.navigation-mobile-overlay { inset: 0; width: 100%; height: 100dvh; max-height: 100dvh; overscroll-behavior: contain; }
.navigation-overlay-header { flex-shrink: 0; }
.navigation-overlay-links { max-width: 100%; overflow-wrap: anywhere; }
body.mobile-menu-open { overflow: hidden; }
.navigation-cta, .navigation-overlay-link, .navigation-link, .pv-footer-btn, .pv-footer-utility-link { cursor: pointer; }
.navigation-link, .navigation-overlay-link { transition: color .2s ease; }
.navigation-overlay-link:hover { color: var(--color-accent); }
.pv-footer-btn { opacity: 1; text-decoration: none; cursor: pointer; }
.pv-footer-btn:hover { opacity: .88; transform: translateY(-1px); }
.pv-footer-utility-link:hover { color: #ffffff; text-decoration: underline; text-underline-offset: 3px; }
.pv-footer-utility-nav { flex-wrap: wrap; row-gap: .5rem; }
.pv-footer-nav-col, .pv-footer-info-col, .pv-footer-newsletter-col { min-width: 0; }
.pv-footer-contact-details .footer-link1, .pv-footer-contact-details .footer-link2, .navigation-contact-info .navigation-link3, .navigation-contact-info .navigation-link4 { cursor: text; }
[data-company], [data-address] { overflow-wrap: anywhere; }
.pv-footer-newsletter-col p { max-width: 40ch; }
.pv-footer-grid > *, .pv-values-grid > *, .pv-editorial-gallery > *, .components-grid > *, .contact-cards > * { min-width: 0; }
a:focus-visible, button:focus-visible, input:focus-visible, summary:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
.legal-content { gap: 1rem; max-width: 860px; width: 100%; }
.legal-content h1, .contact-page-content h1 { color: var(--color-on-surface); font-family: var(--font-family-heading); font-size: clamp(2.25rem,5vw,3.65rem); line-height: 1.17; font-weight: 600; }
.legal-content h2, .contact-page-content h2 { color: var(--color-on-surface); font-family: var(--font-family-heading); font-size: clamp(1.35rem,3vw,1.75rem); font-weight: 600; line-height: 1.25; margin: .6rem 0 0; }
.legal-content p, .contact-page-content p, .contact-page-content address { color: var(--color-on-surface-secondary); font-size: 1rem; line-height: 1.8; }
.legal-content .legal-update { color: var(--color-accent); font-size: .85rem; letter-spacing: .025em; }
.legal-content .legal-intro { color: var(--color-on-surface); font-size: 1.07rem; }
.legal-section { display:flex; flex-direction:column; gap: .55rem; }
.legal-content a:not(.btn), .contact-page-content a:not(.btn) { color: var(--color-primary); text-decoration: underline; text-underline-offset: 3px; }
.legal-content a:not(.btn):hover, .contact-page-content a:not(.btn):hover { color: var(--color-accent); }
.legal-back { margin: 1.5rem 0 .6rem; }
.legal-back a { width: fit-content; }
.contact-page-content { display:flex; flex-direction:column; gap: 1.6rem; }
.contact-kicker { color: var(--color-accent); font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .15em; }
.contact-lead { font-size: 1.08rem !important; max-width: 68ch; }
.contact-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.contact-card { background: var(--color-surface-tint); border: 1px solid var(--color-border); border-radius: var(--border-radius-card); padding: clamp(1.2rem,3vw,2rem); min-width:0; }
.contact-card h2 { margin: 0 0 1rem; }
.contact-card p { margin: .4rem 0; }
.contact-card strong { color: var(--color-on-surface); }
.contact-card address { font-style: normal; }
.contact-card p span { display:block; overflow-wrap:anywhere; }
.contact-card .contact-note { font-size: .87rem; margin-top:1rem; }
.contact-approach { display:flex; flex-direction:column; gap:.75rem; }
@media (max-width: 767px) {
  .navigation-hamburger { display: flex; }
  .navigation-mobile-overlay { padding-bottom: env(safe-area-inset-bottom); }
  .navigation-overlay-links { padding-bottom: 2.5rem; }
  .navigation-overlay-footer { margin-top: 1rem; }
  .navigation-overlay-header .navigation-logo-link { min-width:0; }
  .pv-footer-utility-nav { align-items: flex-start; }
  .contact-cards { grid-template-columns: 1fr; }
  .legal-content { padding: 2.25rem 1.25rem !important; }
  .contact-page-content { padding: 2.25rem 1.25rem !important; }
  .pv-footer-nav-link { overflow-wrap:anywhere; }
  .pv-hero-heading, .craft-hero-title, .mechanisms-hero-title { overflow-wrap: normal; }
}
@media (max-width: 479px) {
  .navigation-actions > a.navigation-link1, .navigation-actions > a.navigation-link1 .navigation-cta { display: none !important; }
  .navigation-container, .navigation-overlay-header { padding-inline: 1rem; }
  .company-logo-name { font-size: .9rem; }
  .navigation-actions { gap: .5rem; }
  .navigation-hamburger, .navigation-close { min-width: 44px; min-height: 44px; }
  .pv-hero-heading { font-size: clamp(2.1rem, 9vw, 3.2rem); }
  .btn, .pv-summary-btn { max-width: 100%; white-space: normal; }
  .pv-footer-statement { font-size: clamp(2.05rem, 9vw, 2.8rem); }
  .pv-footer-nav-link { font-size: clamp(1.4rem, 7vw, 1.7rem); }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

@media (max-width:479px) {
  .mechanisms-hero .hero-title { font-size: clamp(2.05rem, 9vw, 2.7rem); overflow-wrap: break-word; }
}

/* Maintain comfortable contrast for small legal and utility text in the original dark footer. */
.pv-footer-legal-copy { color: color-mix(in oklab, var(--color-on-primary) 78%, transparent); }
.pv-footer-legal-meta { color: color-mix(in oklab, var(--color-on-primary) 70%, transparent); font-size: .75rem; letter-spacing: .025em; }
.pv-footer-utility-link { color: color-mix(in oklab, var(--color-on-primary) 78%, transparent); }
.pv-footer-col-desc { color: color-mix(in oklab, var(--color-on-primary) 75%, transparent); }
