/* Content should fit its container, including enlarged text and long messages. */
html{scroll-padding-top:1.5rem}
.wrap{width:100%}
.wrap>*,.form-grid>*,.service-content>*,.intro-copy>*,.business-grid>*,.three-columns>*,.video-heading>*{min-width:0}
img,video{max-width:100%}
h1,h2,h3,p,li,td,th,.form-status,.tags span{overflow-wrap:anywhere}
.hero{overflow:visible}
.hero-bottom{gap:2rem}
.circle-link{flex-shrink:0}
.service-preview>a>div,summary h3{min-width:0}
.service-preview .number,summary .number{flex-shrink:0}
.service-preview>a>span:last-child{flex-shrink:0}
/* The ribbon is a complete, centred statement, not an off-screen marquee. */
.ribbon{padding:1.5rem 6%;overflow:visible}
.ribbon>.ribbon-content{width:100%;max-width:1268px;margin:auto;transform:none;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem 2rem;font-size:clamp(1rem,1.8vw,1.625rem);letter-spacing:-.02em;text-align:center}
.ribbon .ribbon-message{font:inherit;line-height:1.4;max-width:100%}
.ribbon .ribbon-divider{font-size:1.75rem;line-height:1;flex-shrink:0}
.menu-toggle{display:none}
.enquiry-form label>.field-label{display:block;font-size:.875rem;font-weight:600;line-height:1.5}
.field-label>span{color:var(--blue)}
.field-label>small{font-size:inherit;font-weight:400}
.enquiry-form input,.enquiry-form select,.enquiry-form textarea{font-size:1rem;min-height:3rem;max-width:100%}
.enquiry-form select{text-overflow:ellipsis}
.button,.submit-button{min-height:3rem;max-width:100%;white-space:normal}
.footer-legal a{display:inline-flex;align-items:center;min-height:44px}
@media(max-width:1100px){
 .intro,.about-story,.solution-sections article{grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:2rem}
 .business-grid,.video-heading{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:2.5rem}
 .contact-section{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:2rem}
 .three-columns{gap:2rem}
 .intro-copy{gap:1.5rem}
 .service-content{gap:2rem;margin-right:0}
}
@media(max-width:900px){
 header.nav{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;height:auto;min-height:0;gap:0 1rem;padding-top:.625rem;padding-bottom:.625rem}
 header.nav .logo{justify-self:start}
 header.nav .logo img{width:142px;height:auto}
 header.nav .menu-toggle:not([hidden]){display:flex;align-items:center;justify-content:center;gap:.625rem;min-height:46px;min-width:94px;padding:.625rem .875rem;background:transparent;border:1px solid var(--line);color:var(--ink);font:inherit;font-size:.9375rem;cursor:pointer}
 .menu-symbol{font-size:1.3rem;line-height:1}
 header.nav nav{grid-column:1/-1;display:flex;width:100%;flex-direction:column;align-items:stretch;gap:0;margin:0;padding:.5rem 0}
 header.nav.nav-ready nav{display:none}
 header.nav.nav-ready.menu-open nav{display:flex}
 header.nav nav>a,header.nav nav>a:nth-child(2),header.nav nav>a:last-child{display:block;min-height:48px;padding:.75rem .5rem;font-size:1rem;text-align:left;white-space:normal;border-bottom:1px solid var(--line)}
 header.nav nav>a[aria-current="page"]{border-bottom:1px solid var(--line);background:#e9eaf3;color:var(--blue)}
 .ribbon>.ribbon-content{gap:.75rem 1.25rem;font-size:1.0625rem}
 .ribbon .ribbon-divider{font-size:1.25rem}
}
@media(max-width:760px){
 .wrap{padding-left:1.25rem;padding-right:1.25rem}
 .hero{padding-top:1.75rem;padding-bottom:2rem}
 h1,.page-lead h1{font-size:clamp(2.5rem,10.5vw,4.25rem);line-height:1.12;letter-spacing:-.045em;margin:1.5rem 0}
 h2{font-size:clamp(1.875rem,7.5vw,2.75rem);line-height:1.2;letter-spacing:-.035em}
 .hero-bottom{align-items:center;gap:1rem}
 .hero-bottom p,.intro-copy p,.service-content p,.service-preview p,.section-heading p,.closing-bottom p{font-size:1rem;line-height:1.7}
 .eyebrow,.section-label{font-size:.75rem;line-height:1.6;letter-spacing:.06em}
 .mini-mark{flex-shrink:0;font-size:1.5rem}
 .intro,.about-story,.solution-sections article,.business-grid,.video-heading,.contact-section{grid-template-columns:minmax(0,1fr);gap:1.5rem}
 .intro-copy,.three-columns{grid-template-columns:minmax(0,1fr);gap:1.5rem}
 .intro,.business,.about-story,.services,.principles{padding-top:2.5rem;padding-bottom:2.5rem}
 .page-lead{padding-top:2rem;padding-bottom:2rem}
 .page-lead>p{font-size:1.0625rem}
 .home-photo{padding-bottom:1.75rem}
 .photo-feature img{aspect-ratio:4/3;object-position:center}
 .video-section video{aspect-ratio:16/9;object-fit:contain}
 .media-band{padding-top:1.75rem;padding-bottom:1.75rem}
 .about-media{padding-top:0}
 .service-preview>a{gap:.75rem}
 .service-preview h3,summary h3{font-size:1.375rem;line-height:1.3;letter-spacing:-.02em}
 summary{gap:.75rem;padding:1.25rem 0}
 .service-content{margin-left:0;margin-right:0;gap:1rem}
 .tags{gap:.5rem}
 .tags span{font-size:.875rem;padding:.375rem .625rem}
 .closing{padding:2.5rem 0}
 .closing h2{font-size:clamp(2.375rem,9.5vw,4rem);line-height:1.15;letter-spacing:-.045em}
 .closing-bottom .button{width:100%;max-width:none;gap:1rem;padding:1rem 1.25rem}
 .video-section{padding-bottom:2.5rem}
 .video-heading h2{font-size:2rem}
 .contact-section{padding-top:2.5rem;padding-bottom:2.5rem}
 .form-grid{grid-template-columns:minmax(0,1fr);gap:1.125rem}
 .enquiry-form .full{grid-column:auto}
 .submit-button{width:100%;gap:1rem}
 .form-note{font-size:.875rem}
 footer.wrap{grid-template-columns:minmax(0,1fr) auto;gap:1rem;padding-top:1.5rem;padding-bottom:1.5rem}
 footer.wrap>a[href="#top"]{min-height:44px;display:flex;align-items:center;font-size:.875rem}
 footer.wrap>p{font-size:.875rem;line-height:1.7}
 footer .footer-legal{align-items:flex-start;font-size:.8125rem;gap:.5rem}
 .footer-legal nav{gap:.5rem 1.25rem}
 .policy-copy{padding-top:1.75rem;padding-bottom:2.5rem}
 .policy-copy th,.policy-copy td{font-size:.9375rem;overflow-wrap:anywhere}
 .policy-copy td:first-child{width:34%}
}
@media(max-width:560px){
 .ribbon{padding:1.125rem 1.25rem}
 .ribbon>.ribbon-content{flex-direction:column;gap:.5rem}
 .ribbon .ribbon-divider{display:none}
 .ribbon .ribbon-message{font-size:1.125rem;line-height:1.5}
 .hero-bottom p br{display:none}
 .circle-link b{width:46px;height:46px}
 footer.wrap .footer-legal{flex-direction:column}
}

/* Phone usability: compact header, comfortable reading and full-width actions. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
button,input,select,textarea{touch-action:manipulation}
@media(max-width:900px){
 header.nav{position:sticky;top:0;z-index:30;background:var(--paper);box-shadow:0 1px 0 var(--line);padding-top:.375rem;padding-bottom:.375rem}
 header.nav .logo img{width:120px}
 header.nav nav{max-height:calc(100dvh - 82px);overflow-y:auto;overscroll-behavior:contain}
 header.nav .menu-toggle:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
 html{scroll-padding-top:6.5rem}
 .enquiry-form input,.enquiry-form textarea,.enquiry-form select{scroll-margin-top:7rem}
 .intro,.about-story,.solution-sections article,.business-grid,.video-heading,.contact-section{grid-template-columns:minmax(0,1fr)}
 .intro-copy{grid-template-columns:minmax(0,1fr)}
 .contact-intro>p{max-width:40rem}
 .form-grid{grid-template-columns:minmax(0,1fr)}
 .enquiry-form .full{grid-column:auto}
}
@media(max-width:600px){
 .wrap{padding-left:max(1.125rem,env(safe-area-inset-left));padding-right:max(1.125rem,env(safe-area-inset-right))}
 .hero{padding-top:1.375rem;padding-bottom:1.75rem}
 .hero h1{font-size:clamp(2.5rem,10.25vw,3.5rem);line-height:1.1;margin:1.125rem 0 1.25rem}
 .page-lead h1,.policy-lead h1{font-size:clamp(2rem,8.5vw,3rem);line-height:1.16;letter-spacing:-.035em}
 .hero-bottom{flex-direction:column;align-items:stretch;gap:1.125rem}
 .hero-bottom p{line-height:1.65}
 .circle-link{display:flex;width:100%;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--blue);color:white;min-height:56px}
 .circle-link span{display:block;font-size:1rem;line-height:1.4}
 .circle-link b{width:40px;height:40px;border-color:#ffffff80;font-size:1.4rem}
 .circle-link:hover b{border-color:white;transform:none}
 .hero-side{display:none}
 .eyebrow{font-size:.6875rem;gap:.5rem;letter-spacing:.05em}
 .intro,.business,.about-story,.services,.principles{padding-top:2rem;padding-bottom:2rem}
 .page-lead{padding-top:1.75rem;padding-bottom:1.75rem}
 .section-heading{margin-top:1.25rem;margin-bottom:1.5rem}
 .business-grid,.three-columns{margin-top:1.5rem}
 .photo-feature img{aspect-ratio:auto;height:auto;object-fit:contain}
 .contact-photo img{aspect-ratio:3/2}
 .photo-feature figcaption,.video-section figcaption{line-height:1.6;font-size:.75rem}
 .video-heading{gap:1rem;margin-bottom:1.25rem}
 .video-heading h2,.contact-intro h2{font-size:1.875rem}
 .service-preview h3,summary h3{font-size:1.25rem}
 .service-preview p{margin-top:.5rem;font-size:.9375rem}
 .service-preview>a{padding:1.25rem 0}
 .toggle{width:40px;height:40px}
 .tags{align-content:start}
 .form-grid{gap:1rem}
 .enquiry-form input,.enquiry-form select{min-height:52px;padding:.875rem .75rem;border-radius:4px}
 .enquiry-form textarea{min-height:150px;border-radius:4px}
 .enquiry-form label>.field-label{font-size:.9375rem}
 .submit-button,.closing-bottom .button{min-height:56px;border-radius:4px}
 .contact-section{padding-top:2rem;padding-bottom:2rem}
 .contact-page{gap:2rem}
 .text-link{min-height:44px;display:inline-flex;align-items:center;font-size:1rem}
 .closing h2{font-size:clamp(2rem,8.5vw,3rem);margin:1.5rem 0}
 .footer-legal nav{width:100%;justify-content:space-between;gap:.75rem}
 .footer-legal a{font-size:.875rem}
 .policy-table table{table-layout:fixed}
 .policy-copy th,.policy-copy td{padding:.75rem .5rem;line-height:1.65}
}
@media(max-width:360px){
 .wrap{padding-left:1rem;padding-right:1rem}
 .hero h1{font-size:2.25rem}
 .page-lead h1,.policy-lead h1{font-size:2rem}
 .eyebrow{letter-spacing:.015em;font-size:.625rem}
 header.nav{gap:.5rem}
 .service-preview>a,summary{gap:.5rem}
 .number{width:20px}
 footer.wrap{grid-template-columns:minmax(0,1fr)}
 footer.wrap>a[href="#top"]{grid-row:3}
 footer.wrap .footer-legal{grid-row:4}
 .footer-legal nav{flex-direction:column;gap:0}
}

/* One visible navigation system on desktop and mobile. */
header.nav nav>a:nth-child(2){display:block}
.arrow-icon{display:inline-block;width:1.25em;height:1.25em;vertical-align:middle;flex-shrink:0;overflow:visible}
.arrow-diagonal{transform:rotate(-45deg)}
.arrow-down{transform:rotate(90deg)}
.arrow-up{transform:rotate(-90deg)}
footer.wrap>a[href="#top"]{display:inline-flex;align-items:center;gap:.5rem}
@media(max-width:900px){
 header.nav{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding-top:.5rem;padding-bottom:.625rem}
 header.nav .logo{align-self:center;line-height:1}
 header.nav .logo img{width:120px;height:auto}
 header.nav nav,header.nav.nav-ready nav,header.nav.nav-ready.menu-open nav{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;gap:.125rem 1rem;width:100%;max-height:none;overflow:visible;padding:0;margin:0}
 header.nav nav>a,header.nav nav>a:nth-child(2),header.nav nav>a:last-child{display:flex;align-items:center;justify-content:center;min-height:44px;padding:.375rem .125rem;font-size:.875rem;line-height:1.4;white-space:nowrap;text-align:center;border-bottom:2px solid transparent}
 header.nav nav>a[aria-current="page"]{background:transparent;color:var(--blue);border-bottom-color:var(--blue)}
 html{scroll-padding-top:11rem}
 .enquiry-form input,.enquiry-form textarea,.enquiry-form select{scroll-margin-top:11.5rem}
}
@media(max-width:380px){header.nav nav{gap:0 .875rem}header.nav nav>a,header.nav nav>a:nth-child(2),header.nav nav>a:last-child{font-size:.8125rem}}

/* Keep the five navigation links on one complete row on phones. */
@media(max-width:900px){
 header.nav nav,header.nav.nav-ready nav,header.nav.nav-ready.menu-open nav{flex-wrap:nowrap;justify-content:space-between;gap:clamp(3px,1vw,8px)}
 header.nav nav>a,header.nav nav>a:nth-child(2),header.nav nav>a:last-child{flex:0 0 auto;font-size:clamp(10px,2.8vw,13px);letter-spacing:0;min-width:0;padding:.375rem 0;white-space:nowrap}
 html{scroll-padding-top:8rem}
 .enquiry-form input,.enquiry-form textarea,.enquiry-form select{scroll-margin-top:8.5rem}
}

.ribbon .ribbon-mobile-break{display:none}
@media(max-width:600px){
 .ribbon{padding:1.125rem .75rem}
 .ribbon>.ribbon-content{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;align-items:center}
 .ribbon .ribbon-divider{display:none}
 .ribbon .ribbon-message{display:block;padding:.25rem .5rem;font-size:clamp(.75rem,3vw,.9375rem);line-height:1.6;letter-spacing:-.025em;font-weight:500;text-align:center}
 .ribbon .ribbon-message+.ribbon-divider+.ribbon-message{border-left:1px solid #ffffff55}
 .ribbon .ribbon-mobile-break{display:block}
}

.brand-spark{display:inline-block;width:1em;height:1em;vertical-align:middle;flex-shrink:0}
.mini-mark .brand-spark{display:block;color:var(--blue)}

/* Final alignment and reading pass. */
h1,h2,h3{text-wrap:balance}
.service-preview>a .arrow-icon{display:block}
.enquiry-form .form-status{max-width:100%;line-height:1.65}
@media(min-width:901px){header.nav nav{flex-wrap:nowrap}header.nav nav>a{white-space:nowrap}}
@media(max-width:760px){
 .video-heading>p{max-width:none}
 .about-story .large-copy{font-size:1.125rem;line-height:1.7}
 .solution-sections article{gap:1.25rem;padding:2rem 0}
 .solution-sections p{font-size:1rem;line-height:1.75}
 footer.wrap>p{text-align:left}
 .policy-copy .policy-intro{font-size:1.0625rem}
 .error-actions a{gap:1rem}
}
