/* Canonical Home stylesheet. Shared route foundations come first; the token
   contract below is the single source for the historical local-page aliases.
   Later component and media rules are intentional state/responsive overrides. */
* { box-sizing:border-box; }
html { scroll-behavior:auto; }
body { margin:0; background:var(--white); color:var(--ink); font-family:var(--font-sans); font-size:16px; line-height:1.6; }
::selection { background:var(--brand-selection); color:var(--ink); }
a { color:inherit; text-underline-offset:5px; }
button { font:inherit; }
a:focus-visible,button:focus-visible,[tabindex]:focus-visible { outline:3px solid var(--orange); outline-offset:5px; }
img { display:block; max-width:100%; }
h1,h2,h3,p { margin:0; }
h1,h2,h3 { font-family:var(--font-display); font-weight:500; line-height:1.12; letter-spacing:-.03em; text-wrap:balance; }
.wrap { margin-inline:auto; }
.arrow { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.6; flex:none; }
.skip { position:absolute; top:-100px; }
.skip:focus { top:12px; left:12px; min-height:44px; padding:12px 20px; background:var(--white); z-index:20; }
header { position:absolute; inset:0 0 auto; z-index:5; color:var(--white); }
.header-inner { display:flex; align-items:center; gap:32px; border-bottom:1px solid rgb(255 255 255 / .28); }
.logo { display:block; width:204px; margin-right:auto; flex:none; color:inherit; }
.logo svg { display:block; width:100%; height:auto; }
.logo svg path:not([data-letter="X"]) { fill:currentColor; }
.nav { display:flex; align-items:center; font-size:14px; font-weight:500; }
.nav a { min-height:44px; display:flex; align-items:center; text-decoration:none; }
.nav a:hover { text-decoration:underline; text-underline-offset:8px; }
.language { font-size:12px; font-weight:600; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:24px; min-height:52px; padding:14px 24px; border:1px solid transparent; border-radius:2px; color:var(--white); background:var(--orange); font-size:14px; font-weight:600; text-decoration:none; transition:background var(--motion-feedback) var(--motion-ease),border-color var(--motion-feedback) var(--motion-ease); }
.button:hover { background:var(--action-hover); }
.header-inner>.button { background:transparent; border-color:rgb(255 255 255 / .6); min-height:44px; padding:10px 18px; font-size:13px; }
.header-inner>.button:hover { background:var(--white); color:var(--ink); border-color:white; }
header a:focus-visible,header button:focus-visible,.hero a:focus-visible { outline-color:white; }
.menu-toggle,.mobile-nav { display:none; }
.hero { position:relative; isolation:isolate; background:var(--ink); color:var(--white); display:flex; }
.hero-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.hero::before { content:''; position:absolute; inset:0; z-index:-1; }
.hero h1 span { display:block; }
.hero p { color:var(--on-dark); }
.actions { display:flex; align-items:center; flex-wrap:wrap; }
.actions>a:not(.button) { min-height:48px; display:inline-flex; align-items:center; gap:16px; font-size:14px; text-decoration:none; }
.actions>a:not(.button):hover { text-decoration:underline; }
.hero-bottom { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; padding-top:20px; border-top:1px solid rgb(255 255 255 / .26); }
.hero-credit { max-width:52ch; font-size:11px; line-height:1.5; color:var(--brand-on-dark-muted); }
.section-heading { display:flex; justify-content:space-between; gap:32px; margin-bottom:40px; }
.section-heading h2 { font-size:clamp(38px,3.6vw,52px); }
.section-heading>a { display:inline-flex; align-items:center; gap:20px; font-size:14px; text-decoration:none; flex:none; }
.section-heading>a:hover { color:var(--interaction-text,var(--ink)); }
.solution { border-top:1px solid var(--line); padding-top:24px; }
.solution h3 { font-size:28px; letter-spacing:-.025em; margin-bottom:24px; }
.panel-link { display:inline-flex; align-items:center; justify-content:space-between; gap:24px; min-height:44px; margin-top:12px; font-size:14px; font-weight:500; text-decoration:none; }
.panel-link .arrow { color:var(--orange); }
.panel-link:hover { color:var(--interaction-text,var(--ink)); text-decoration:underline; }
.sector-section { background:var(--surface); padding-block:80px 88px; }
.sector-section .section-heading { margin-bottom:44px; }
.sector-section h2 { max-width:19ch; }
.service-browser { display:grid; grid-template-columns:24% minmax(0,1fr); }
.service-tabs { display:flex; flex-direction:column; justify-content:center; padding:24px 0; background:var(--ink); border-radius:2px; }
.service-tabs button { position:relative; border:0; background:transparent; color:var(--on-dark-muted); padding:20px 32px; min-height:60px; text-align:left; font-size:16px; cursor:pointer; line-height:1.4; }
.service-tabs button[aria-selected=true] { color:var(--white); font-weight:600; }
.service-tabs button[aria-selected=true]::before { content:''; position:absolute; left:0; width:16px; top:50%; height:2px; background:var(--accent); }
.service-tabs button:hover { color:var(--white); }
.service-tabs button:focus-visible { outline:2px solid var(--focus-dark); outline-offset:-6px; }
.panel { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); border:1px solid var(--line); border-radius:2px; background:var(--white); overflow:hidden; }
.panel[hidden] { display:none; }
.panel-copy { align-self:center; }
.panel h3 { font-size:34px; }
.panel p { font-size:15px; color:var(--muted); max-width:30ch; }
.panel-image { width:100%; height:100%; min-height:440px; object-fit:cover; }
.contact-section { background:var(--ink); color:var(--white); }
.contact-inner { display:grid; }
.contact-section h2 { font-size:clamp(40px,4.4vw,64px); max-width:12ch; }
.contact-section p { color:var(--on-dark-muted); max-width:44ch; margin-top:24px; font-size:16px; }
.contact-section a:focus-visible { outline-color:var(--focus-dark); }
.site-footer .logo { width:172px; color:var(--white); }
.site-footer a:focus-visible { outline-color:var(--focus-dark); }
.preview { border-top:1px solid var(--line); padding-block:16px; color:var(--muted); font-size:11px; }
.preview .wrap { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; }
@media (min-width:761px) and (max-width:1100px) {
  .wrap { width:calc(100% - 64px); }
  .header-inner { min-height:92px; gap:20px; }
  .logo { width:168px; }
  .nav { gap:20px; font-size:13px; }
  .language { display:none; }
  .header-inner>.button { padding-inline:14px; font-size:12px; }
  .hero { min-height:700px; }
  .solution-grid { gap:40px 28px; }
  .solution h3 { font-size:25px; }
  .solution-photos { grid-template-rows:repeat(2,140px); }
  .service-browser { grid-template-columns:25% minmax(0,1fr); gap:16px; }
  .service-tabs button { padding:20px 24px; font-size:14px; }
  .panel { grid-template-columns:1fr 1fr; }
  .panel-copy { padding:24px; }
  .panel h3 { font-size:28px; }
}
@media (max-width:760px) {
  .wrap { width:calc(100% - 44px); }
  .header-inner { min-height:82px; gap:20px; }
  .logo { width:168px; }
  .nav,.header-inner>.button { display:none; }
  .language { margin-left:auto; }
  .menu-toggle { display:flex; align-items:center; justify-content:center; border:0; color:var(--white); background:transparent; width:44px; height:44px; padding:10px; cursor:pointer; }
  .menu-toggle .arrow { width:24px; height:24px; }
  .mobile-nav:not([hidden]) { display:flex; flex-direction:column; position:absolute; top:82px; left:22px; right:22px; max-height:calc(100svh - 106px); overflow-y:auto; padding:12px 24px; color:var(--ink); background:var(--white); border:1px solid var(--line); }
  .mobile-nav a { display:flex; align-items:center; min-height:52px; text-decoration:none; font-size:15px; border-bottom:1px solid var(--line); }
  .mobile-nav a:last-child { border:0; }
  .mobile-nav a:focus-visible { outline-color:var(--orange); outline-offset:0; }
  .hero::before { background:linear-gradient(90deg,var(--hero-overlay-strong),rgb(13 16 18 / .38)),linear-gradient(0deg,rgb(13 16 18 / .70),transparent 70%,rgb(13 16 18 / .28)); }
  .hero h1 { line-height:1.08; letter-spacing:-.035em; }
  .actions { margin-top:28px; }
  .actions .button { padding-inline:16px; font-size:13px; gap:12px; }
  .actions>a:not(.button) { font-size:13px; gap:8px; }
  .hero-bottom { gap:16px; align-items:center; }
  .hero-credit { font-size:10px; max-width:34ch; }
  .services { padding-block:48px 56px; }
  .section-heading { align-items:flex-start; gap:16px; margin-bottom:28px; }
  .section-heading h2 { font-size:36px; }
  .section-heading>a { font-size:12px; gap:8px; min-height:40px; }
  .section-heading>a .arrow { width:16px; }
  .solution { padding-top:24px; }
  .solution h3 { font-size:26px; margin-bottom:22px; }
  .solution-photos { grid-template-rows:repeat(2,clamp(110px,34vw,220px)); gap:6px; }
  .panel-link { font-size:13px; margin-top:10px; }
  .sector-section { padding-block:48px 56px; }
  .sector-section .section-heading { margin-bottom:32px; }
  .sector-section h2 { max-width:19ch; font-size:35px; }
  .service-browser { display:block; }
  .service-tabs { display:grid; grid-template-columns:1fr 1fr; padding:6px 12px; }
  .service-tabs button { font-size:13px; padding:18px 12px; min-height:56px; border-bottom:1px solid var(--dark-line); }
  .service-tabs button:nth-last-child(-n+2) { border-bottom:0; }
  .service-tabs button[aria-selected=true]::before { width:8px; left:-3px; }
  .panel { display:flex; flex-direction:column; min-height:0; }
  .panel-copy { width:100%; padding:28px; }
  .panel h3 { font-size:30px; margin-bottom:18px; }
  .panel p { max-width:36ch; font-size:15px; }
  .panel-image { min-height:0; height:250px; }
  .contact-section p { font-size:15px; margin-top:20px; }
  .preview { font-size:10px; }
}
@media (max-width:360px) {
  .wrap { width:calc(100% - 36px); }
  .logo { width:146px; }
  .hero h1 { font-size:36px; }
  .section-heading { flex-wrap:wrap; gap:8px; }
  .hero-credit { max-width:27ch; }
  .mobile-nav:not([hidden]) { left:18px; right:18px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { transition:none !important; animation:none !important; }
}
.project-section { padding-block:72px 80px; border-top:1px solid var(--line); }
.project-section .section-heading { margin-bottom:16px; }
.project-all-link { display:inline-flex; align-items:center; gap:16px; min-height:44px; max-width:100%; font-size:14px; text-decoration:none; overflow-wrap:anywhere; margin-bottom:var(--section-gap); transition:color var(--motion-feedback) var(--motion-ease); }
.project-all-link .arrow { flex:none; color:var(--orange); }
.project-all-link:hover { color:var(--interaction-text,var(--ink)); }
.project-section .section-heading:has(+.project-all-link) { margin-bottom:8px; }
.project-rail { display:grid; grid-auto-flow:column; grid-auto-columns:clamp(340px,40vw,540px); overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-padding-inline:var(--rail-edge); padding:6px var(--rail-edge) 12px; scrollbar-width:thin; scrollbar-color:var(--brand-line-strong) transparent; }
.project-rail:focus-visible { outline-offset:-3px; }
.project-slide { min-width:0; scroll-snap-align:start; scroll-snap-stop:always; }
.project-cover { display:flex; align-items:flex-end; position:relative; isolation:isolate; height:100%; overflow:hidden; border-radius:6px; color:var(--white); background:var(--ink); text-decoration:none; }
.project-cover>img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.project-cover::before { content:''; position:absolute; inset:0; z-index:-1; background:linear-gradient(0deg,var(--project-overlay),rgb(10 15 18 / .74) 28%,rgb(10 15 18 / .16) 65%,rgb(10 15 18 / .12)); }
.project-cover .project-location { margin-bottom:20px; color:var(--focus-dark); font-size:13px; font-weight:500; line-height:1.5; }
.project-cover h3 { line-height:1.12; letter-spacing:-.025em; margin-bottom:18px; }
.project-description { line-height:1.65; color:var(--on-dark); max-width:34ch; }
.project-open { position:absolute; width:52px; height:52px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--orange); color:var(--white); transition:background var(--motion-feedback) var(--motion-ease); }
.project-open .arrow { width:24px; height:24px; }
.project-cover:hover .project-open { background:var(--action-hover); }
.project-cover:hover h3 { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:6px; }
.project-cover:focus-visible { outline-offset:-5px; outline-color:var(--focus-dark); }
.project-controls { display:flex; justify-content:space-between; align-items:center; gap:24px; }
.project-position { font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.project-buttons { display:flex; gap:12px; }
.project-buttons button { display:flex; justify-content:center; align-items:center; width:48px; height:48px; padding:0; border:1px solid var(--brand-line-strong); border-radius:50%; color:var(--ink); background:var(--white); cursor:pointer; }
.project-buttons button:hover:not(:disabled) { background:var(--ink); color:var(--white); border-color:var(--ink); }
.project-buttons button:disabled { color:var(--on-dark-muted); border-color:var(--line); cursor:default; }
@media (min-width:761px) and (max-width:1100px) {
  .project-rail { --rail-edge:32px; grid-auto-columns:46%; gap:24px; }
  .project-cover { padding:28px 28px 96px; }
  .project-cover h3 { font-size:32px; }
  .project-open { bottom:24px; right:24px; width:48px; height:48px; }
}
@media (max-width:760px) {
  .project-section { padding-block:44px 48px; }
  .project-section .section-heading { align-items:center; gap:12px; }
  .project-section .section-heading>a { flex-shrink:1; font-size:12px; max-width:15ch; }
  .project-all-link { font-size:14px; }
  .project-rail { --rail-edge:22px; grid-auto-columns:86%; gap:16px; }
  .project-cover { padding:28px 26px 100px; }
  .project-cover h3 { margin-bottom:16px; }
  .project-cover .project-location { font-size:12px; margin-bottom:16px; }
  .project-description { font-size:14px; }
  .project-open { right:24px; width:48px; height:48px; }
  .project-controls { margin-top:20px; }
}
@media (max-width:360px) {
  .project-rail { --rail-edge:18px; grid-auto-columns:88%; }
  .project-cover h3 { font-size:30px; }
}
.services { padding-block:88px 64px; }
.services .section-heading { margin-bottom:48px; }
.solution-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); }
.solution { min-width:0; border:0; padding:0; container-type:inline-size; }
.solution-link { display:block; color:var(--ink); text-decoration:none; min-height:0; }
.solution-photos { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:repeat(2,minmax(0,1fr)); gap:4px; width:100%; height:auto; aspect-ratio:1; overflow:hidden; }
.solution-photos img { width:100%; height:100%; min-width:0; min-height:0; object-fit:cover; }
.solution-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.solution-heading h3 { font-size:clamp(22px,1.8vw,26px); font-weight:500; letter-spacing:-.025em; line-height:1.2; margin:0; text-wrap:balance; }
.solution-arrow { display:flex; align-items:center; justify-content:center; flex:0 0 40px; height:40px; border-radius:50%; background:var(--orange); color:var(--white); transition:background var(--motion-feedback) var(--motion-ease); }
.solution-arrow .arrow { width:24px; height:24px; }
.solution-summary { line-height:1.6; color:var(--muted); max-width:32ch; }
.solution-link:hover .solution-arrow,.solution-link:focus-visible .solution-arrow { background:var(--ink); }
.solution-link:hover h3,.solution-link:focus-visible h3 { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px; }
.solution-link:focus-visible { outline-offset:7px; }
@media (min-width:541px) and (max-width:1100px) {
  .solution-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:44px 28px; }
  .solution-link { min-height:0; }
  .solution-heading h3 { font-size:26px; }
  .solution-summary { max-width:36ch; }
  .services { padding-bottom:64px; }
}
@media (max-width:540px) {
  .services { padding-block:48px 52px; }
  .services .section-heading { margin-bottom:28px; }
  .solution-grid { grid-template-columns:1fr; gap:40px; }
  .solution-link { min-height:0; }
  .solution-heading { margin-top:22px; gap:20px; }
  .solution-heading h3 { font-size:27px; max-width:19ch; }
  .solution-summary { font-size:14px; margin-top:14px; max-width:38ch; }
}
@media (prefers-reduced-motion:reduce) {
  .solution-photos { transition:none; }
}
.news-section { padding-block:80px 88px; }
.news-section .section-heading { margin-bottom:20px; align-items:center; }
.news-preview-label { color:var(--muted); flex:none; }
.news-preview-note { font-size:13px; color:var(--muted); max-width:72ch; margin-bottom:40px; }
.news-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:start; }
.news-entry { min-width:0; }
.news-photo { margin:0; position:relative; overflow:hidden; border-radius:4px; background:var(--surface); }
.news-photo img { width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; }
.news-photo figcaption { left:12px; bottom:12px; }
.news-feature { align-self:start; }
.news-feature .news-photo img { aspect-ratio:3/2; max-height:420px; }
.news-slot-label { font-size:11px; color:var(--interaction-text,var(--ink)); font-weight:600; margin-bottom:14px; }
.news-entry h3 { font-size:23px; line-height:1.25; letter-spacing:-.02em; text-wrap:pretty; }
.news-feature h3 { font-size:34px; line-height:1.18; max-width:28ch; }
.news-feature-summary { color:var(--muted); font-size:15px; max-width:50ch; }
.news-draft-meta { font-size:12px; color:var(--muted); margin-top:24px; }
.news-secondary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border-left:1px solid var(--line); }
.news-small { border-bottom:1px solid var(--line); }
.news-small:nth-last-child(-n+2) { border-bottom:0; padding-bottom:0; }
@media (min-width:1101px) and (min-height:640px) {
  .news-feature .news-photo img { max-height:clamp(220px,calc(100svh - 340px),420px); }
}
@media (min-width:761px) and (max-width:1100px) {
  .news-layout { gap:32px; grid-template-columns:1fr 1fr; }
  .news-secondary { grid-template-columns:1fr; gap:32px; padding-left:24px; }
  .news-small:nth-last-child(2) { border-bottom:1px solid var(--line); padding-bottom:28px; }
  .news-feature h3 { font-size:30px; }
}
@media (max-width:760px) {
  .news-section { padding-block:48px 52px; }
  .news-section .section-heading { gap:12px; }
  .news-preview-label { font-size:10px; }
  .news-preview-note { font-size:12px; margin-bottom:28px; }
  .news-layout { display:block; }
  .news-feature { position:static; border-bottom:1px solid var(--line); }
  .news-feature .news-photo img { max-height:none; }
  .news-feature-summary { font-size:14px; margin-top:16px; }
  .news-secondary { display:grid; grid-template-columns:1fr; border-left:0; }
  .news-small:nth-last-child(2) { border-bottom:1px solid var(--line); padding-bottom:28px; }
  .news-entry h3 { font-size:24px; }
  .news-slot-label { margin-bottom:12px; }
  .news-draft-meta { font-size:11px; margin-top:18px; }
}
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
.contact-section { padding-block:88px 80px; }
.contact-inner { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); align-items:start; }
.contact-intro>p { max-width:34ch; }
.contact-direct { display:flex; flex-direction:column; align-items:flex-start; gap:4px; }
.contact-direct h3 { font-family:var(--font-sans); font-size:13px; font-weight:400; letter-spacing:0; color:var(--on-dark-muted); }
.contact-direct>a { font-family:var(--font-display); font-size:23px; min-height:44px; text-decoration:none; overflow-wrap:anywhere; }
.contact-direct>a:hover { text-decoration:underline; }
.enquiry-heading { border-bottom:1px solid var(--dark-line); }
.enquiry-heading h3 { font-size:25px; margin-bottom:8px; }
.enquiry-heading>span { font-size:12px; color:var(--on-dark-muted); }
.contact-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.contact-field { display:flex; flex-direction:column; min-width:0; gap:8px; }
.contact-field label { font-size:13px; font-weight:500; }
.contact-field label span { font-weight:400; color:var(--on-dark-muted); }
.contact-field input,.contact-field textarea,.contact-field select { display:block; width:100%; min-width:0; background:var(--field-surface); border:1px solid var(--field-border); border-radius:2px; color:var(--white); font:inherit; font-size:16px; line-height:1.5; padding:12px 14px; caret-color:var(--focus-dark); }
.contact-field input { min-height:50px; }
.contact-field select { min-height:48px; margin-bottom:12px; }
.contact-field textarea { resize:vertical; }
@media (hover:hover) and (pointer:fine) {
  .contact-field input:hover,.contact-field textarea:hover { border-color:var(--on-dark-muted); }
}
.enquiry-form :is(input,textarea,select,button):focus-visible { outline:2px solid var(--focus-dark); outline-offset:3px; }
.contact-message { grid-column:1/-1; }
.field-help { color:var(--on-dark-muted); font-size:12px; line-height:1.6; }
.field-error { font-size:12px; line-height:1.5; }
.enquiry-form [aria-invalid=true] { border-color:var(--error-text); }
.contact-consent-row { display:flex; gap:12px; min-height:44px; padding-block:8px; }
.contact-consent-row input { width:19px; height:19px; flex:none; accent-color:var(--orange); }
.contact-consent-row label { font-size:13px; line-height:1.6; }
.contact-consent-row a:hover { text-decoration-thickness:2px; }
.enquiry-submit { display:flex; align-items:center; }
.enquiry-submit .button { flex:none; cursor:pointer; }
.enquiry-submit .button:disabled { opacity:.55; cursor:not-allowed; }
.contact-section .enquiry-submit p { font-size:12px; line-height:1.6; margin:0; color:var(--on-dark-muted); max-width:27ch; }
.enquiry-status { margin-top:24px; padding:18px 0 0; border-top:1px solid var(--field-border); font-size:14px; color:var(--on-dark); }
.enquiry-status:focus-visible { outline-color:var(--focus-dark); }
.footer-main { border-top:1px solid var(--dark-line); display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1.2fr) minmax(0,.75fr) minmax(0,1fr); gap:32px; align-items:start; }
.site-footer .footer-brand .logo { max-width:100%; }
.footer-brand p { font-size:14px; line-height:1.6; margin-top:12px; max-width:24ch; color:var(--on-dark-muted); }
.footer-column { min-width:0; display:flex; flex-direction:column; align-items:flex-start; }
.footer-column h2 { font-family:var(--font-sans); font-size:14px; line-height:1.6; font-weight:600; color:var(--white); letter-spacing:0; margin-bottom:12px; }
.footer-column a { display:inline-flex; align-items:center; min-height:44px; padding-block:8px; font-size:14px; line-height:1.5; text-decoration:none; text-underline-offset:5px; overflow-wrap:anywhere; max-width:100%; }
.footer-column a:hover { text-decoration:underline; color:var(--white); }
.footer-contact .footer-links>a { font-size:16px; color:var(--on-dark); }
.footer-bottom .back-top { flex:none; gap:12px; color:var(--white); text-decoration:none; }
.footer-bottom .back-top .arrow { width:18px; height:18px; color:var(--focus-dark); }
.footer-bottom { display:flex; flex-wrap:wrap; align-items:center; gap:16px 32px; border-top:1px solid var(--dark-line); font-size:12px; }
.footer-bottom>p { margin-right:auto; }
.footer-bottom a { text-underline-offset:5px; }
.footer-bottom nav { display:flex; flex-wrap:wrap; gap:12px 28px; }
.footer-bottom a { display:inline-flex; align-items:center; min-height:44px; text-decoration:none; }
.footer-bottom a:hover { text-decoration:underline; color:var(--white); }
@media (min-width:761px) and (max-width:1100px) {
  .contact-inner { grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:40px; }
  .contact-section h2 { font-size:50px; }
  .contact-direct>a { font-size:19px; }
  .contact-fields { gap:20px 16px; }
  .enquiry-submit { align-items:flex-start; flex-direction:column; gap:16px; }
  .contact-section .enquiry-submit p { max-width:42ch; }
  .footer-main { grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr) minmax(0,1fr); }
  .footer-brand { grid-column:1/-1; display:flex; align-items:center; gap:32px; }
  .footer-brand p { margin:0; max-width:none; }
  .site-footer .footer-brand .logo { margin-right:0; }
}
@media (max-width:760px) {
  .contact-section { padding-block:52px 48px; }
  .contact-inner { grid-template-columns:1fr; }
  .contact-section h2 { font-size:46px; }
  .contact-intro>p { max-width:40ch; }
  .contact-fields { grid-template-columns:1fr; }
  .contact-message { grid-column:auto; }
  .enquiry-submit { align-items:stretch; flex-direction:column; }
  .contact-section .enquiry-submit p { max-width:44ch; }
  .footer-brand,.footer-contact { grid-column:1/-1; }
  .site-footer .footer-brand .logo { width:204px; }
  .footer-bottom { gap:8px 16px; padding-block:20px; }
  .footer-bottom>p { flex-basis:100%; margin:0; }
  .footer-bottom nav { flex:1; gap:4px 16px; }
  .footer-bottom .back-top { width:44px; height:44px; padding:0; border:1px solid var(--field-border); border-radius:50%; justify-content:center; }
  .footer-bottom .back-top span { display:none; }
}
:root { --scroll-inset:32px; }
html { scroll-padding-top:var(--scroll-inset); }
.services,.project-section,.sector-section,.news-section,.contact-section { padding-block:var(--section-space); }
.services .section-heading,.sector-section .section-heading { margin-bottom:var(--section-gap); }
.project-all-link,.news-preview-note { margin-bottom:var(--section-gap); }
.solution-grid { align-items:start; }
.solution-photos,.project-cover,.news-photo,.panel { border-radius:var(--media-radius); }
.solution-arrow,.project-open { width:44px; height:44px; flex-basis:44px; }
.solution-arrow { margin-top:-4px; }
.button,.solution-arrow,.project-open,.sector-arrow,.project-buttons button,.service-tabs button,.panel-link,.section-heading>a,.footer-column a,.footer-bottom a,.contact-direct>a { transition:color var(--motion-feedback) var(--motion-ease),background-color var(--motion-feedback) var(--motion-ease),border-color var(--motion-feedback) var(--motion-ease); }
.button .arrow,.panel-link .arrow,.section-heading>a .arrow,.solution-arrow .arrow,.project-open .arrow { transition:translate var(--motion-feedback) var(--motion-ease); }
:is(.button,.panel-link,.section-heading>a):focus-visible .arrow,.solution-link:focus-visible .arrow,.project-cover:focus-visible .arrow { translate:3px 0; }
.solution-link:hover .solution-arrow,.solution-link:focus-visible .solution-arrow,.project-cover:hover .project-open,.project-cover:focus-visible .project-open { background:var(--action-hover); }
.contact-field input,.contact-field textarea,.contact-field select { transition:border-color var(--motion-feedback) var(--motion-ease); }
@media (hover:hover) and (pointer:fine) {
  :is(.button,.panel-link,.section-heading>a):hover .arrow,.solution-link:hover .arrow,.project-cover:hover .arrow { translate:3px 0; }
}
.panel:not([hidden]) .panel-copy,.panel:not([hidden]) .panel-image { animation:sector-change var(--motion-change) var(--motion-ease) both; }
@keyframes sector-change {
  from { opacity:.7; }
  to { opacity:1; }
}
.news-feature { position:static; }
.news-feature.is-sticky { position:sticky; top:var(--scroll-inset); }
@media (max-width:760px) {
  :root { --scroll-inset:24px ; }
  .panel-copy { min-height:0; }
  .news-feature.is-sticky { position:static; }
}
@media (prefers-reduced-motion:reduce) {
  html,.project-rail { scroll-behavior:auto; }
  .button,.solution-arrow,.project-open,.sector-arrow,.project-buttons button,.service-tabs button,.panel-link,.section-heading>a,.footer-column a,.footer-bottom a,.contact-direct>a,.contact-field input,.contact-field textarea,.contact-field select { transition:color var(--dur-fast) linear,background-color var(--dur-fast) linear,border-color var(--dur-fast) linear !important; }
  .button .arrow,.panel-link .arrow,.section-heading>a .arrow,.solution-arrow .arrow,.project-open .arrow { translate:none !important; }
  .panel:not([hidden]) .panel-copy,.panel:not([hidden]) .panel-image { animation:none; }
  .news-feature.is-sticky { position:static; }
}
.project-cover h3 { font-size:32px; }
.project-description { font-size:14px; }
.news-small { padding-bottom:24px; }
.news-small .news-photo img { aspect-ratio:16/9; }
.news-small .news-entry-copy { padding-top:16px; }
.news-small h3 { font-size:21px; }
.news-small .news-slot-label { margin-bottom:10px; }
.news-small .news-draft-meta { margin-top:14px; }
.news-small[hidden] { display:none; }
.news-more { display:flex; justify-content:flex-end; }
.news-more-button { touch-action:manipulation; display:inline-flex; align-items:center; gap:16px; min-height:44px; padding:8px 0; background:transparent; border:0; color:var(--ink); font-size:13px; cursor:pointer; transition:color var(--motion-feedback) var(--motion-ease); }
.news-more-button .arrow { color:var(--orange); width:18px; height:18px; }
.news-more-button:hover { color:var(--interaction-text,var(--ink)); }
.news-more-button[aria-expanded=true] .arrow { rotate:45deg; }
.contact-fields { gap:20px 24px; }
@media (min-width:761px) and (max-width:1100px) {
  .project-cover { min-height:440px; }
  .news-small { display:grid; grid-template-columns:96px minmax(0,1fr); gap:16px; align-items:start; }
  .news-small .news-photo img { aspect-ratio:1; height:96px; }
  .news-small .news-photo figcaption { left:5px; right:5px; bottom:5px; padding:3px 4px; font-size:9px; }
  .news-small .news-entry-copy { padding:0; }
  .news-small h3 { font-size:19px; }
  .news-small .news-slot-label { font-size:10px; }
  .news-small .news-draft-meta { font-size:11px; }
}
@media (max-width:760px) {
  .solution-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 20px; }
  .solution-heading { display:block; position:relative; }
  .solution-heading h3 { font-size:20px; line-height:1.2; max-width:none; }
  .solution-arrow { position:absolute; right:8px; top:-60px; width:32px; height:32px; margin:0; }
  .solution-arrow .arrow { width:18px; height:18px; }
  .solution-summary { line-height:1.55; max-width:none; }
  .project-cover h3 { font-size:29px; }
  .news-feature .news-photo img { aspect-ratio:16/9; }
  .news-feature h3 { font-size:27px; }
  .news-secondary { gap:24px; }
  .news-secondary:not(.is-expanded) .news-small:nth-child(n+3) { display:none; }
  .news-small { display:grid; grid-template-columns:104px minmax(0,1fr); gap:18px; align-items:start; padding-bottom:24px; }
  .news-small .news-photo img { aspect-ratio:1; height:104px; }
  .news-small .news-photo figcaption { left:5px; right:5px; bottom:5px; padding:3px 4px; font-size:9px; }
  .news-small .news-entry-copy { padding:0; }
  .news-small h3 { font-size:19px; }
  .news-small .news-slot-label { font-size:10px; margin-bottom:8px; }
  .news-small .news-draft-meta { font-size:11px; margin-top:10px; }
  .news-more { justify-content:flex-start; }
  .contact-fields { gap:20px; }
}
@media (min-width:361px) and (max-width:760px) {
  .contact-fields { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 16px; }
  .contact-message { grid-column:1/-1; }
}
@media (max-width:360px) {
  .solution-grid { gap:28px 16px; }
  .solution-heading h3 { font-size:19px; }
  .news-small { grid-template-columns:88px minmax(0,1fr); gap:14px; }
  .news-small .news-photo img { height:88px; }
  .news-small h3 { font-size:18px; }
}
:root { --page-gutter:56px; }
.wrap { width:min(calc(100% - var(--page-gutter) - var(--page-gutter) - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)),1248px); }
.header-inner { padding-top:env(safe-area-inset-top,0px); min-height:calc(var(--header-height) + env(safe-area-inset-top,0px)); }
.section-heading>a { min-height:44px; min-width:44px; }
.header-inner .logo,.footer-brand .logo { min-height:44px; display:flex; align-items:center; }
.enquiry-form,.contact-intro,.panel-copy,.footer-brand { min-width:0; }
.contact-consent-row { padding:0; align-items:center; position:relative; }
.contact-consent-row input { position:absolute; left:0; top:12px; margin:0; }
.contact-consent-row label { display:block; padding:10px 0 10px 31px; min-height:44px; cursor:pointer; }
.contact-consent-row input:focus-visible { outline-offset:4px; }
.project-rail { --rail-edge:max(var(--page-gutter),calc((100% - 1248px)/2),env(safe-area-inset-left,0px),env(safe-area-inset-right,0px)) ; }
.footer-bottom nav a { padding-inline:4px; min-width:44px; }
@media (min-width:761px) and (max-width:1100px) {
  :root { --page-gutter:32px; }
  .hero h1 { font-size:clamp(52px,6.25vw,64px); }
}
@media (min-width:761px) and (max-width:959px) {
  .solution-link { max-width:280px; margin-inline:auto; }
  .solution-grid { gap:36px 28px; }
  .solution-heading h3 { font-size:24px; }
  .solution-summary { font-size:14px; }
}
@media (min-width:960px) and (max-width:1100px) {
  .solution-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; }
  .solution-heading { display:block; position:relative; margin-top:20px; }
  .solution-heading h3 { font-size:22px; }
  .solution-arrow { position:absolute; right:8px; top:-64px; width:36px; height:36px; }
  .solution-arrow .arrow { width:20px; height:20px; }
  .solution-summary { font-size:14px; }
}
@media (max-width:959px) {
  .header-inner { gap:20px; }
  .header-inner .nav,.header-inner>.button { display:none; }
  .header-inner .language { display:block; margin-left:auto; }
  .menu-toggle { display:flex; align-items:center; justify-content:center; border:0; color:var(--white); background:transparent; width:44px; height:44px; flex:none; padding:10px; cursor:pointer; }
  .menu-toggle .arrow { width:24px; height:24px; }
  .mobile-nav:not([hidden]) { display:flex; flex-direction:column; position:absolute; top:calc(var(--header-height) + env(safe-area-inset-top,0px)); left:max(var(--page-gutter),env(safe-area-inset-left,0px)); right:max(var(--page-gutter),env(safe-area-inset-right,0px)); max-height:calc(100dvh - var(--header-height) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 16px); overflow-y:auto; overscroll-behavior-y:contain; padding:12px 24px; color:var(--ink); background:var(--white); border:1px solid var(--line); }
  .mobile-nav a { display:flex; align-items:center; min-height:52px; text-decoration:none; font-size:15px; border-bottom:1px solid var(--line); }
  .mobile-nav a:last-child { border:0; }
  .mobile-nav a:focus-visible { outline-color:var(--orange); outline-offset:0; }
}
@media (min-width:600px) and (max-width:1100px) {
  .service-browser { display:block; }
  .service-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); padding:8px 16px; margin-bottom:24px; }
  .service-tabs button { padding:16px 18px; min-height:56px; font-size:14px; border-bottom:1px solid var(--dark-line); }
  .service-tabs button:nth-last-child(-n+3) { border-bottom:0; }
  .service-tabs button[aria-selected=true]::before { width:8px; left:0; }
  .panel { display:grid; grid-template-columns:1fr 1fr; min-height:320px; }
  .panel-copy { width:100%; padding:28px; min-height:0; }
  .panel h3 { font-size:clamp(25px,3vw,32px); overflow-wrap:anywhere; }
  .panel .panel-link { gap:12px; }
  .panel-image { width:100%; height:100%; min-height:320px; object-fit:cover; }
}
@media (max-width:760px) {
  :root { --page-gutter:22px ; }
  .project-cover { padding-bottom:96px; }
  .project-open { bottom:24px; }
  .solution-summary { font-size:14px; }
  .news-more-button { text-align:left; }
  .footer-column a { font-size:14px; }
}
@media (max-width:360px) {
  :root { --page-gutter:18px ; }
  .header-inner { gap:12px; }
  .solution-summary { font-size:13px; }
  .contact-fields { gap:18px; }
}
@media (min-width:600px) and (max-height:500px) {
  :root { --section-space:48px ; }
  .hero h1 { max-width:27ch; line-height:1.07; }
  .hero p { margin-top:16px; font-size:14px; max-width:56ch; }
  .actions { margin-top:16px; gap:16px 28px; }
  .actions .button { min-height:44px; padding-block:10px; }
  .hero-bottom { padding-top:16px; }
  .hero-credit { max-width:60ch; font-size:10px; }
  .news-feature.is-sticky { position:static; }
}
.panel-media { position:relative; min-width:0; overflow:hidden; }
.panel-media .panel-image { position:absolute; inset:0; width:100%; height:100%; min-height:0; object-fit:cover; }
@media (min-width:600px) and (max-width:1100px) {
  .panel-media { min-height:320px; }
}
@media (max-width:599px) {
  .panel-media { flex:none; width:100%; }
  .panel p { min-height:3.2em; }
}
.enquiry-heading { padding-bottom:16px; margin-bottom:20px; }
.contact-field textarea { min-height:104px; }
.contact-consent-row { margin-top:16px; }
.enquiry-submit { margin-top:16px; }
@media (max-width:959px) {
  .contact-fields { grid-template-columns:1fr; gap:16px; }
  .contact-message { grid-column:auto; }
}
.hero p { margin-top:24px; }
.actions { margin-top:24px; gap:16px 32px; }
.project-section .section-heading,.news-section .section-heading { margin-bottom:16px; }
.solution-grid { gap:var(--group-gap) var(--grid-gap); }
.solution-link { max-width:none; margin-inline:0; }
.solution-heading { margin-top:var(--media-copy-gap); }
.solution-summary { margin-top:var(--copy-gap); }
.project-rail { gap:var(--grid-gap); padding-block:0 8px; }
.project-cover { padding-top:32px; padding-inline:32px 96px; }
.project-cover .project-location,.project-cover h3 { margin-bottom:12px; }
.project-controls { margin-top:16px; }
.service-browser { gap:var(--grid-gap); }
.panel-copy { padding:32px; }
.panel h3 { margin-bottom:16px; }
.panel .panel-link { margin-top:24px; }
.news-layout { gap:var(--grid-gap); }
.news-secondary { gap:24px; padding-left:var(--grid-gap); }
.news-entry-copy { padding-top:var(--media-copy-gap); }
.news-feature-summary { margin-top:16px; }
.news-entry .news-draft-meta { margin-top:16px; }
.news-secondary .news-small { padding-bottom:24px; border-bottom:1px solid var(--line); }
.news-secondary:not(.is-expanded) .news-small:nth-child(4),
.news-secondary.is-expanded .news-small:last-child { padding-bottom:0; border-bottom:0; }
.news-more { margin-top:24px; }
.contact-inner { gap:clamp(32px,4.45vw,64px); }
.contact-intro>p { margin-top:20px; }
.contact-direct { margin-top:32px; }
.contact-direct h3 { margin-bottom:8px; }
.enquiry-submit { gap:20px; }
@media (min-width:1101px) {
  .news-secondary:not(.is-expanded) .news-small:nth-child(3),
 .news-secondary.is-expanded .news-small:nth-last-child(2) { padding-bottom:0; border-bottom:0; }
}
@media (max-width:1100px) {
  .project-cover { padding-inline:28px; }
  .panel-copy { padding:24px; }
  .service-tabs { margin-bottom:24px; }
  .news-small .news-draft-meta { margin-top:12px; }
}
@media (max-width:760px) {
  .actions { gap:12px 16px; }
  .solution-grid { row-gap:36px; }
  .solution-heading { margin-top:16px; }
  .solution-summary { margin-top:12px; }
  .project-cover { padding-inline:24px; }
  .service-tabs { margin-bottom:20px; }
  .panel .panel-link { margin-top:8px; }
  .news-section .section-heading { margin-bottom:16px; }
  .news-secondary { padding-left:0; }
  .news-feature { margin-bottom:24px; padding-bottom:24px; }
  .news-small { column-gap:16px; }
  .news-secondary:not(.is-expanded) .news-small:nth-child(2) { padding-bottom:0; border-bottom:0; }
  .news-more { margin-top:16px; }
}
@media (max-width:360px) {
  .solution-grid { column-gap:16px; }
  .project-cover { padding-inline:20px; }
  .panel-copy { padding:20px; }
}
@media (min-width:600px) and (max-height:500px) {
  .hero p,.actions { margin-top:16px; }
  .hero-bottom { margin-top:24px; }
}
h1,h2,h3,p,.section-heading>a,.news-preview-label { overflow-wrap:anywhere; }
.section-heading { flex-wrap:wrap; align-items:baseline; }
.section-heading h2 { min-width:0; max-width:100%; }
.section-heading>a { max-width:100%; flex-shrink:1; overflow-wrap:anywhere; }
.section-heading>a .arrow { flex:none; }
.news-preview-label { flex-shrink:1; max-width:100%; font-size:var(--text-note); }
.solution-heading h3 { min-width:0; flex:1; }
.solution-summary { font-size:var(--text-secondary); }
.hero-credit,.preview,.news-entry .news-slot-label,.news-entry .news-draft-meta { font-size:var(--text-note); line-height:1.5; }
.news-photo figcaption { position:static; padding:8px 0 0; background:var(--white); color:var(--muted); font-size:var(--text-note); line-height:1.5; border-radius:0; }
.news-small .news-photo figcaption { padding:8px 0 0; font-size:var(--text-note); }
.news-entry .news-slot-label { margin-bottom:8px; }
.enquiry-heading>span { display:block; line-height:1.6; }
.contact-section .enquiry-context { max-width:none; margin:0 0 20px; padding:12px 16px; background:var(--field-surface); border:1px solid var(--dark-line); color:var(--on-dark); font-size:var(--text-secondary); }
.enquiry-context[hidden] { display:none; }
.contact-field :is(input,textarea,select) { background:var(--field-surface); border-color:var(--field-border); color:var(--on-dark); }
.contact-field :is(input,textarea,select)::placeholder { color:var(--on-dark-muted); opacity:1; }
.field-error { color:var(--error-text); }
.contact-field label { overflow-wrap:anywhere; }
.nav a[aria-current=location],.mobile-nav a[aria-current=location] { text-decoration:underline; text-underline-offset:8px; text-decoration-thickness:2px; }
@media (max-width:760px), (min-width:960px) and (max-width:1100px) {
  .solution-heading { display:flex; align-items:flex-start; gap:8px; position:static; }
  .solution-arrow { position:static; flex:0 0 20px; width:20px; height:24px; margin:0; background:transparent; color:var(--orange); }
  .solution-arrow .arrow { width:20px; height:20px; }
  .solution-link:is(:hover,:focus-visible) .solution-arrow { background:transparent; color:var(--action-hover); }
}
@media (forced-colors:active) {
  .button,.project-open,.project-buttons button { border:1px solid ButtonText; }
  .service-tabs button[aria-selected=true] { outline:2px solid Highlight; outline-offset:-4px; }
}
.sector-picker { display:none; }
.footer-group { width:100%; }
.footer-links { display:flex; flex-direction:column; align-items:flex-start; }
.footer-group summary { list-style:none; }
.footer-group summary::-webkit-details-marker { display:none; }
.footer-group summary .arrow { display:none; }
.footer-group summary:focus-visible { outline:2px solid var(--focus-dark); outline-offset:4px; }
.news-rail-hint { display:none; }
.news-rail-hint[hidden] { display:none; }
@media (max-width:1100px) {
  .news-layout { display:block; }
  .news-preview-note { margin-bottom:16px; }
  .news-feature,.news-feature.is-sticky { position:static; margin:0 0 20px; padding:0 0 20px; border-bottom:1px solid var(--line); }
  .news-feature .news-photo img { height:clamp(160px,24svh,240px); max-height:none; aspect-ratio:auto; }
  .news-feature .news-entry-copy { padding-top:12px; }
  .news-feature-summary { margin-top:12px; }
  .news-feature .news-draft-meta { margin-top:12px; }
  .news-feature h3 { max-width:32ch; }
  .news-secondary { display:grid; grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:clamp(264px,82vw,340px); gap:24px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; padding:0 0 12px; border-left:0; scrollbar-color:var(--muted) var(--surface); scrollbar-width:thin; }
  .news-secondary .news-small { display:grid; grid-template-columns:104px minmax(0,1fr); align-items:start; gap:16px; padding:0; border:0; scroll-snap-align:start; scroll-snap-stop:always; }
  .news-secondary .news-small[hidden] { display:none; }
  .news-small .news-photo img { height:104px; aspect-ratio:1; }
  .news-small .news-entry-copy { padding-top:0; }
  .news-small h3 { font-size:20px; }
  .news-rail-hint { display:block; margin:0 0 12px; color:var(--muted); font-size:var(--text-secondary); }
  .news-more { margin-top:16px; }
}
@media (max-width:599px) {
  .news-feature .news-photo img { height:clamp(128px,20svh,176px); }
  .news-secondary .news-small { grid-template-columns:88px minmax(0,1fr); }
  .news-small .news-photo img { height:88px; }
}
@media (max-width:760px) {
  .footer-main { grid-template-columns:minmax(0,1fr); gap:0; }
  .footer-group { border-top:1px solid var(--dark-line); }
  .footer-group summary { display:flex; align-items:center; justify-content:space-between; gap:16px; cursor:pointer; }
  .footer-group summary h2 { margin:0; font-size:16px; }
  .footer-group summary .arrow { display:block; flex:none; width:20px; height:20px; color:var(--on-dark-muted); }
  .footer-group[open] summary .arrow { rotate:180deg; }
  .footer-links { padding-bottom:16px; }
}
@media (max-width:699px) {
  .sector-picker:not([hidden]) { display:block; position:relative; margin-bottom:20px; }
  .sector-picker select { appearance:none; display:block; width:100%; min-width:0; min-height:60px; padding:16px 52px 16px 20px; border:1px solid var(--ink); border-radius:var(--media-radius); background:var(--ink); color:var(--white); font:inherit; font-size:16px; line-height:1.5; cursor:pointer; }
  .sector-picker .arrow { position:absolute; right:20px; top:20px; width:20px; height:20px; color:var(--white); pointer-events:none; }
  body.home-page .sector-picker select { border:0; outline:none; box-shadow:none; }
  body.home-page .sector-picker select:focus-visible { outline:2px solid var(--interaction-accent); outline-offset:4px; text-decoration:none; }
  .service-tabs.is-select-backed { display:none; }
}
.solution-controls { display:none; }
@media (max-width:1199px) {
  .solution-grid { display:grid; grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:calc((100% - 24px)/2); gap:24px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; padding-block:4px 12px; scrollbar-width:thin; scrollbar-color:var(--muted) var(--surface); }
  .solution { min-width:0; scroll-snap-align:start; scroll-snap-stop:always; }
  .solution-link:focus-visible { outline-offset:-3px; }
  .solution-heading { display:flex; position:static; align-items:flex-start; gap:16px; margin-top:20px; }
  .solution-heading h3 { font-size:24px; max-width:none; }
  .solution-summary { font-size:14px; margin-top:12px; max-width:36ch; }
  .solution-arrow { position:static; flex:0 0 24px; width:24px; height:28px; margin:0; background:transparent; color:var(--orange); }
  .solution-arrow .arrow { width:24px; height:24px; }
  .solution-link:is(:hover,:focus-visible) .solution-arrow { background:transparent; color:var(--action-hover); }
  .solution-controls:not([hidden]) { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:16px; }
  .solution-position { color:var(--muted); font-size:14px; }
}
@media (max-width:699px) {
  .solution-grid { grid-auto-columns:min(420px,calc(100% - 32px)); gap:20px; }
}
:root { --section-space:clamp(40px,5vw,72px); --header-height:96px; --sector-media-block:clamp(340px,44svh,420px); }
.hero-copy { padding-top:calc(var(--header-height) + 48px + env(safe-area-inset-top,0px)); }
.hero-bottom { margin-top:32px; }
.project-cover { min-height:clamp(360px,50svh,460px); }
.panel { min-height:0; }
.panel-media { min-height:var(--sector-media-block); }
.footer-main { padding-block:40px; }
.footer-bottom { padding-block:16px; }
.preview { padding-top:12px; padding-bottom:max(12px,env(safe-area-inset-bottom,0px)); }
@media (min-width:700px) and (max-width:1199px) {
  .solution-grid { grid-auto-columns:min(440px,calc((100% - 24px)/2)); }
}
@media (min-width:761px) and (max-width:1100px) {
  :root { --header-height:88px ; }
  .footer-main { gap:24px; }
}
@media (max-width:959px) {
  :root { --header-height:76px ; }
}
@media (min-width:600px) and (max-width:1100px) {
  :root { --sector-media-block:clamp(280px,36svh,320px) ; }
}
@media (min-width:1101px) {
  .news-feature .news-photo img { height:clamp(220px,36svh,340px); max-height:none; aspect-ratio:auto; }
  .news-secondary { gap:20px 24px; }
  .news-secondary .news-small { padding-bottom:20px; }
  .news-small .news-photo img { height:clamp(112px,16svh,160px); aspect-ratio:auto; }
  .news-small .news-entry-copy { padding-top:12px; }
}
@media (max-width:760px) {
  .hero-copy { padding-top:calc(var(--header-height) + 32px + env(safe-area-inset-top,0px)); }
  .hero-bottom { margin-top:24px; }
  .project-cover { min-height:clamp(340px,48svh,420px); }
  .contact-inner { gap:28px; }
  .contact-intro h2 { font-size:clamp(32px,8.6vw,40px); max-width:none; }
  .contact-intro h2 br { display:none; }
  .contact-intro>p { margin-top:16px; }
  .contact-direct { flex-direction:row; flex-wrap:wrap; align-items:center; gap:0 20px; margin-top:16px; }
  .contact-direct h3 { flex-basis:100%; margin-bottom:4px; }
  .contact-direct>a { font-size:16px; }
  .enquiry-heading { padding-bottom:12px; margin-bottom:16px; }
  .enquiry-heading h3 { font-size:22px; margin-bottom:4px; }
  .enquiry-submit { gap:12px; }
  .footer-main { padding-block:32px; }
  .footer-brand { margin-bottom:16px; }
  .footer-brand p { max-width:none; }
  .footer-group summary { min-height:56px; padding-block:14px; }
}
@media (min-width:560px) and (max-width:760px) {
  .contact-fields { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .contact-message { grid-column:1/-1; }
}
@media (max-width:599px) {
  .panel-media { min-height:0; height:clamp(200px,28svh,250px); }
}
@media (min-width:761px) and (max-height:700px) {
  .hero-copy { padding-top:calc(var(--header-height) + 32px + env(safe-area-inset-top,0px)); }
  .hero h1 { font-size:clamp(40px,6.6svh,64px); }
}
@media (min-width:600px) and (max-height:500px) {
  :root { --header-height:68px ; }
  .hero-copy { padding-top:calc(var(--header-height) + 28px + env(safe-area-inset-top,0px)); }
}
.project-cover { --caption-inset:32px; padding:32px var(--caption-inset) var(--caption-inset); }
.project-cover-copy { position:relative; width:100%; min-width:0; }
.project-cover-copy::before { content:''; position:absolute; z-index:-1; pointer-events:none; inset:-32px calc(-1 * var(--caption-inset)) calc(-1 * var(--caption-inset)); background:linear-gradient(to bottom,transparent,rgb(10 15 18 / .84) 32px,rgb(10 15 18 / .96)); }
.project-cover .project-description { max-width:none; padding-right:60px; min-height:44px; }
.project-open { right:var(--caption-inset); bottom:var(--caption-inset); }
@media (max-width:1100px) {
  .project-cover { --caption-inset:28px ; }
}
@media (max-width:760px) {
  .project-cover { --caption-inset:24px ; }
}
@media (max-width:360px) {
  .project-cover { --caption-inset:20px ; }
}
.hero { align-items:flex-end; }
.hero-image { object-position:58% 55%; }
.hero::before { background:linear-gradient(90deg,rgb(13 16 18 / .73),rgb(13 16 18 / .56) 48%,rgb(13 16 18 / .24)),linear-gradient(180deg,rgb(13 16 18 / .28),transparent 35%); }
.hero-copy { padding-block:calc(var(--header-height) + 48px + env(safe-area-inset-top,0px)) 80px; text-align:left; }
.hero h1 { max-width:560px; margin:0; font-size:clamp(38px,3.6vw,52px); line-height:1.1; font-weight:600; letter-spacing:-.03em; }
.hero p { max-width:43ch; margin:20px 0 0; font-size:15px; line-height:1.6; }
.hero .actions { justify-content:flex-start; }
.hero .actions .button { min-height:52px; padding:14px 24px; gap:24px; border:1px solid transparent; border-radius:2px; background:var(--orange); color:var(--white); font-size:14px; font-weight:600; }
.hero .actions .button .arrow { display:block; width:20px; height:20px; color:currentColor; }
.hero .actions .button:hover { background:var(--action-hover); text-decoration:none; }
@media (max-width:760px) {
  .hero { min-height:clamp(480px,74svh,620px); }
  .hero-image { object-position:58% 55%; }
  .hero-copy { padding-block:calc(var(--header-height) + 32px + env(safe-area-inset-top,0px)) 64px; padding-left:0; }
  .hero h1 { max-width:24ch; font-size:clamp(32px,8vw,40px); }
  .hero p { max-width:38ch; font-size:14px; margin-top:18px; }
  .hero .actions { margin-top:18px; }
}
@media (min-width:600px) and (max-height:500px) {
  .hero { min-height:420px; }
  .hero-copy { padding-block:calc(var(--header-height) + 24px + env(safe-area-inset-top,0px)) 32px; }
  .hero h1 { font-size:34px; }
}
#hero-repair-trigger { cursor:pointer; }
.hero-repair-menu { width:min(560px,calc(100% - 32px)); max-height:calc(100svh - 32px); margin:auto; padding:28px; border:1px solid var(--line); border-radius:4px; background:var(--white); color:var(--ink); overflow:auto; }
.hero-repair-menu::backdrop { background:rgb(13 16 18 / .68); }
.repair-menu-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; }
.repair-menu-heading h2 { font-size:clamp(24px,5vw,30px); line-height:1.15; }
.repair-menu-close { display:grid; place-items:center; flex:none; width:44px; height:44px; padding:10px; border:1px solid var(--line); background:transparent; color:var(--ink); cursor:pointer; }
.repair-menu-options { display:grid; }
.repair-menu-options button { display:flex; align-items:center; justify-content:space-between; gap:16px; width:100%; min-height:72px; padding:16px 0; border:0; border-top:1px solid var(--line); background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
.repair-menu-options strong { display:block; font-size:16px; font-weight:600; }
.repair-menu-options small { display:block; margin-top:4px; font-size:14px; color:var(--muted); line-height:1.5; }
.repair-menu-options .arrow { color:var(--orange); }
.repair-menu-options button:hover strong { color:var(--interaction-text,var(--ink)); text-decoration:underline; text-underline-offset:4px; }
.repair-menu-options button:focus-visible { outline-offset:-3px; }
@media (max-width:360px) {
  .hero-repair-menu { padding:20px; }
}
.project-description-reveal { display:grid; grid-template-rows:1fr; opacity:1; }
.project-cover .project-description-reveal .project-description { min-height:0; overflow:hidden; }
@media (hover:hover) and (pointer:fine) { .project-cover h3 { padding-right:60px; } }
.solution-extra { margin-top:10px; font-size:14px; line-height:1.6; color:var(--muted); max-width:38ch; }
.solution-link .solution-extra { opacity:1; transform:none; }
.nav { gap:20px; }
.nav-disclosure { position:relative; display:flex; align-items:center; }
.nav-disclosure-toggle { display:grid; place-items:center; width:28px; min-height:44px; padding:4px; border:0; background:transparent; color:inherit; cursor:pointer; }
.nav-disclosure-toggle .arrow { width:14px; height:14px; }
.nav-disclosure-toggle[aria-expanded=true] .arrow { rotate:180deg; }
.nav .nav-dropdown { position:absolute; top:100%; left:-16px; z-index:6; width:280px; max-height:calc(100svh - 140px); overflow-y:auto; margin:0; padding:8px 16px; list-style:none; background:var(--white); color:var(--ink); border:1px solid var(--line); border-radius:2px; box-shadow:0 12px 28px rgb(13 16 18 / .16); }
.nav-disclosure:last-child .nav-dropdown { left:auto; right:0; }
.nav .nav-dropdown[hidden] { display:none; }
.nav .nav-dropdown a { padding:10px 0; min-height:44px; line-height:1.4; font-size:14px; white-space:normal; }
.nav-dropdown li+li { border-top:1px solid var(--line); }
.nav .nav-dropdown a:hover { color:var(--interaction-text,var(--ink)); }
header .nav-dropdown a:focus-visible { outline-color:var(--orange); outline-offset:2px; }
@media (min-width:960px) and (max-width:1199px) {
  .nav { gap:12px; }
  .nav-disclosure-toggle { width:24px; }
}
.button { position:relative; isolation:isolate; overflow:hidden; --cta-sweep:var(--action-hover) ; }
.button::before { content:''; position:absolute; z-index:-1; inset:-1px -20%; background:var(--cta-sweep); transform:translateX(-110%) skewX(-18deg); transition:transform var(--dur-base) var(--ease-standard); pointer-events:none; }
.header-inner>.button { --cta-sweep:rgb(255 255 255 / .18) ; }
.panel-link { position:relative; }
.panel .panel-link { gap:16px; }
.panel-link::after { content:''; position:absolute; left:0; right:60px; bottom:3px; height:1px; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform var(--dur-base) var(--ease-standard); pointer-events:none; }
@keyframes cta-arrow-pass {
  0% { transform:translateX(0); opacity:1; }
  45% { transform:translateX(10px); opacity:0; }
  46% { transform:translateX(-10px); opacity:0; }
  100% { transform:translateX(0); opacity:1; }
}
.button:not(:disabled):focus-visible::before { transform:translateX(0) skewX(-18deg); }
.panel-link:focus-visible::after { transform:scaleX(1); }
:is(.button:not(:disabled),.panel-link,.section-heading>a):focus-visible .arrow,
.solution-link:focus-visible .solution-arrow .arrow,.project-cover:focus-visible .project-open .arrow,
.repair-menu-options button:focus-visible .arrow { translate:0; animation:cta-arrow-pass var(--dur-base) var(--ease-standard) both; }
@media (hover:hover) and (pointer:fine) {
  .button:not(:disabled):hover::before { transform:translateX(0) skewX(-18deg); }
  .button:not(:disabled):hover,.hero .actions .button:not(:disabled):hover { background:var(--orange); }
  .header-inner>.button:hover { background:transparent; color:var(--white); }
  .panel-link:hover { text-decoration:none; }
  .panel-link:hover::after { transform:scaleX(1); }
  :is(.button:not(:disabled),.panel-link,.section-heading>a):hover .arrow,
 .solution-link:hover .solution-arrow .arrow,.project-cover:hover .project-open .arrow,
 .repair-menu-options button:hover .arrow { translate:0; animation:cta-arrow-pass var(--dur-base) var(--ease-standard) both; }
}
@media (prefers-reduced-motion:reduce) {
  .button::before,.panel-link::after { transition:none; }
  :is(.button,.panel-link,.section-heading>a,.solution-link,.project-cover,.repair-menu-options button) .arrow { animation:none !important; translate:0 !important; transform:none !important; }
}
:root {
  /* Canonical values mirrored from DESIGN.md and css/tokens.css. */
  --brand-primary: oklch(64.607% 0.1943 41.116);
  --brand-primary-dark: oklch(55.343% 0.174 38.402);
  --brand-primary-light: oklch(75.764% 0.159 55.934);
  --brand-ink: oklch(20.924% 0.006 271.116);
  --brand-bg: oklch(100% 0 0);
  --brand-background: var(--brand-bg);
  --brand-muted: #595d60;
  --brand-concrete: #f2f4f3;
  --brand-line: oklch(93.8% 0.01 252.813);
  --brand-line-strong: var(--brand-line);
  --brand-input-border: oklch(86.898% 0.02 252.894);
  --brand-ink-2: oklch(25.676% 0.008 274.653);
  --brand-on-dark: oklch(100% 0 0);
  --brand-on-dark-muted: #c4c7ca;
  --brand-focus: var(--brand-primary-light);
  --brand-field-surface: var(--brand-ink-2);
  --brand-field-border: #81858b;
  --brand-error: #ffb6a3;
  --brand-dark-line: #414348;
  --hero-overlay-strong: rgb(13 16 18 / .80);
  --project-overlay: rgb(10 15 18 / .96);
  --brand-selection: oklch(95.42% 0.037 75.164);
  --brand-section-rule: rgb(from var(--brand-ink) r g b / .14);
  --brand-dark-section-rule: rgb(from var(--brand-on-dark) r g b / .18);
  --brand-focus-halo: rgb(from var(--brand-primary-light) r g b / .22);
  --font-sans: -apple-system,'SF Pro Text','Segoe UI',system-ui,sans-serif;
  --font-display: 'Avenir Next','SF Pro Display','Segoe UI',system-ui,sans-serif;
  --radius-sm: 2px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --maxw: 1248px;
  --ease-standard: cubic-bezier(.16,1,.3,1);
  --dur-fast: 150ms;
  --dur-base: 250ms;
  --dur-slow: 400ms;
  --dur-feedback: 180ms;
  --dur-change: 280ms;
  --space-heading-content: clamp(24px,2.3vw,32px);
  --space-grid: clamp(20px,2.23vw,32px);
  --space-group: clamp(32px,3.34vw,48px);
  --space-media-copy: clamp(16px,1.67vw,24px);
  --space-copy: 12px;

  /* Compatibility aliases for the historical local-page layers. */
  --ink: var(--brand-ink);
  --muted: var(--brand-muted);
  --orange: var(--brand-primary);
  --accent: var(--brand-primary);
  --line: var(--brand-line);
  --surface: var(--brand-concrete);
  --white: var(--brand-bg);
  --motion-ease: var(--ease-standard);
  --motion-feedback: var(--dur-feedback);
  --motion-change: var(--dur-change);
  --grid-gap: var(--space-grid);
  --group-gap: var(--space-group);
  --media-copy-gap: var(--space-media-copy);
  --copy-gap: var(--space-copy);
  --media-radius: var(--radius-sm);
  --text-body: 1rem;
  --text-secondary: .875rem;
  --text-note: .75rem;
  --on-dark: var(--brand-on-dark);
  --on-dark-muted: var(--brand-on-dark-muted);
  --focus-dark: var(--brand-focus);
  --field-surface: var(--brand-field-surface);
  --field-border: var(--brand-field-border);
  --error-text: var(--brand-error);
  --action-hover: var(--brand-primary);
  --dark-line: var(--brand-dark-line);
  --section-gap: var(--space-heading-content);
  --arrow-color: var(--brand-primary);
}
.arrow { color:var(--arrow-color) !important; }
.button .arrow { background:var(--white); border-radius:2px; box-shadow:0 0 0 3px var(--white); }
.solution-arrow,.project-open,.sector-arrow { display:flex; align-items:center; justify-content:center; width:44px; height:44px; min-width:44px; flex:0 0 44px; border:1px solid var(--line); border-radius:50%; background:var(--white); }
.solution-arrow { position:static; margin:0; }
.solution-arrow .arrow,.project-open .arrow,.sector-arrow .arrow { width:22px; height:22px; }
.solution-link:is(:hover,:focus-visible) .solution-arrow,
.project-cover:is(:hover,:focus-visible) .project-open,
.panel-link:is(:hover,:focus-visible) .sector-arrow { background:var(--white); border-color:var(--arrow-color); }
@media (forced-colors:active) {
  .arrow { color:ButtonText !important; }
  .button .arrow,.solution-arrow,.project-open,.sector-arrow { background:Canvas; box-shadow:none; }
}
html { scrollbar-gutter:stable; }
html.repair-menu-open { overflow:hidden; }
.hero-repair-menu[open] { animation:repair-menu-enter var(--dur-feedback) var(--ease-standard) both; }
@keyframes repair-menu-enter {
  from { opacity:0; transform:translateY(8px); }
  to { opacity:1; transform:translateY(0); }
}
@keyframes cta-chevron-pass {
  0%,100% { transform:translateY(0); opacity:1; }
  45% { transform:translateY(6px); opacity:0; }
  46% { transform:translateY(-6px); opacity:0; }
}
#hero-repair-trigger:focus-visible .arrow { animation-name:cta-chevron-pass; }
@media (hover:hover) and (pointer:fine) {
  #hero-repair-trigger:hover .arrow { animation-name:cta-chevron-pass; }
  .project-buttons button:hover:not(:disabled) { background:var(--surface); border-color:var(--arrow-color); }
}
.project-buttons button:disabled .arrow { opacity:.35; }
.project-buttons button:focus-visible { border-color:var(--arrow-color); }
.project-cover h3 { padding-right:60px; }
main:focus,section[tabindex="-1"]:focus,body:focus { outline:none; }
@media (max-width:360px) {
  .hero .actions .button { gap:14px; padding-inline:18px; font-size:13px; }
}
@media (prefers-reduced-motion:reduce) {
  .hero-repair-menu[open] { animation:none; }
  #hero-repair-trigger:is(:hover,:focus-visible) .arrow { animation:none; }
}
:is(.breadcrumbs,.industry-breadcrumbs,.journal-breadcrumbs) a { min-width:44px; min-height:44px; }
.legal-reference { display:none; max-width:1248px; margin:0 auto; padding:0 var(--page-gutter) 20px; color:var(--on-dark-muted,#c4c7ca); font-size:14px; }
.legal-reference h3 { font-size:18px; line-height:1.35; }
.legal-reference p { max-width:68ch; line-height:1.6; margin-top:12px; }
.legal-reference:target { display:block; outline:2px solid var(--focus-dark); outline-offset:-2px; }
body:is(.detail-page,.case-page,.industry-page,.journal-page) { --header-height:76px; }
.detail-page .header-inner { min-height:var(--header-height); gap:24px; }
.detail-page .header-inner .logo { width:176px; }
@media (max-width:959px) {
  body:is(.detail-page,.case-page,.industry-page,.journal-page) { --header-height:64px; }
  .detail-page .header-inner .logo { width:156px; }
}
.hero { min-height:100dvh; }
.hero-copy { padding-left:0; padding-bottom:clamp(40px,8svh,80px); }
.hero .actions { margin-top:20px; }
.hero-cta { display:inline-flex; align-items:center; justify-content:flex-start; gap:24px; min-height:44px; padding:8px 0; border:0; border-radius:0; background:transparent; color:var(--white); font-size:13px; font-weight:600; line-height:1.4; letter-spacing:.035em; text-transform:uppercase; text-decoration:none; cursor:pointer; }
.hero-cta .arrow { width:32px; height:24px; overflow:visible; transition:transform var(--dur-base) var(--ease-standard); }
.hero-cta:focus-visible { outline:2px solid var(--white); outline-offset:6px; }
#hero-repair-trigger:is(:hover,:focus-visible) .arrow { animation:none; transform:translateX(5px); }
@media (max-width:760px) {
  .hero-copy { padding-bottom:clamp(40px,12svh,112px); }
  .hero-cta { font-size:12px; gap:20px; }
}
@media (max-height:500px) and (orientation:landscape) {
  .hero-copy { padding-bottom:24px; }
}
@media (prefers-reduced-motion:reduce) {
  .hero-cta .arrow { transition:none; }
  #hero-repair-trigger:is(:hover,:focus-visible) .arrow { transform:none; }
}
.hero-video { position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; object-position:center; opacity:0; pointer-events:none; }
.hero-video.is-ready { opacity:1; }
.hero-video-toggle { position:absolute; right:max(var(--page-gutter,24px),calc((100% - 1248px)/2)); bottom:24px; display:grid; place-items:center; width:44px; height:44px; padding:10px; border:1px solid rgb(255 255 255 / .8); border-radius:50%; background:rgb(13 16 18 / .4); color:white; cursor:pointer; }
.hero-video-toggle[hidden] { display:none; }
.hero-video-toggle svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.6; }
.hero-video-toggle .video-play { display:none; }
.hero-video-toggle[data-paused=true] .video-play { display:block; }
.hero-video-toggle[data-paused=true] .video-pause { display:none; }
.hero-video-toggle:focus-visible { outline:2px solid white; outline-offset:4px; }
@media (max-height:500px) and (orientation:landscape) {
  .hero-copy { padding-right:60px; }
}
.home-page { --header-height:64px ; }
.home-page>header { position:relative; background:var(--white); color:var(--ink); }
.home-page .header-inner { min-height:calc(var(--header-height) + env(safe-area-inset-top,0px)); border-bottom:0; gap:24px; }
.home-page .header-inner .logo { width:176px; }
.home-page .header-inner>.button { color:var(--ink); border-color:var(--line); --cta-sweep:var(--surface) ; }
.home-page .header-inner>.button:hover { color:var(--ink); border-color:var(--orange); }
.home-page header :is(a,button):focus-visible { outline-color:var(--orange); }
.home-page .hero { min-height:calc(var(--hero-viewport,100dvh) - var(--header-height) - env(safe-area-inset-top,0px)); }
.home-page .hero::before { background:linear-gradient(180deg,rgb(13 16 18 / .12) 15%,rgb(13 16 18 / .26) 48%,rgb(13 16 18 / .8) 100%); }
.home-page .hero-copy { display:grid; column-gap:40px; align-items:end; padding:96px 0 76px; }
.home-page .hero p { grid-column:2; grid-row:1; max-width:38ch; margin:0; font-size:16px; line-height:1.5; }
.home-page .hero .actions { margin:0; }
.home-page .hero-cta { font-size:12px; gap:16px; }
.home-page .hero-video-toggle { bottom:20px; }
@media (max-width:1100px) {
  .home-page .hero-copy { grid-template-columns:1fr; gap:20px; padding-block:80px 76px; }
  .home-page .hero h1 { grid-column:1; grid-row:1; font-size:clamp(48px,8.3vw,76px); max-width:22ch; }
  .home-page .hero p { grid-column:1; grid-row:2; max-width:58ch; font-size:17px; }
  .home-page .hero .actions { grid-column:1; }
}
@media (max-width:959px) {
  .home-page { --header-height:56px ; }
  .home-page .header-inner .logo { width:156px; }
}
@media (max-width:599px) {
  .home-page .hero-copy { gap:16px; padding-block:64px 80px; }
  .home-page .hero h1 { font-size:clamp(36px,10.8vw,60px); max-width:18ch; line-height:1.08; }
  .home-page .hero p { max-width:38ch; font-size:15px; line-height:1.5; }
}
@media (max-height:500px) and (orientation:landscape) {
  .home-page .hero-copy { padding:32px 60px 24px 0; gap:12px; }
  .home-page .hero h1 { font-size:36px; max-width:27ch; }
  .home-page .hero p { font-size:14px; }
}
@media (max-width:699px) {
  .home-page .service-browser { display:block; }
  .home-page .sector-picker:not([hidden]) { margin-bottom:24px; }
  .home-page .service-tabs.is-select-backed { display:none; }
  .home-page .panel { display:flex; flex-direction:column; }
  .home-page .panel[hidden] { display:none; }
  .home-page .panel-media { order:-1; width:100%; height:clamp(220px,48vw,420px); min-height:0; }
  .home-page .panel-copy { width:100%; padding:24px; }
  .home-page .panel p { max-width:60ch; min-height:0; }
}
@media (min-width:700px) {
  .home-page .service-browser { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px; align-items:stretch; }
  .home-page .panel { display:flex; flex-direction:column; min-width:0; }
  .home-page .panel[hidden] { display:none; }
  .home-page .panel-media { order:-1; width:100%; height:clamp(260px,24vw,340px); min-height:0; }
  .home-page .panel-copy { width:100%; padding:28px; }
  .home-page .panel p { max-width:48ch; min-height:0; }
}
@media (min-width:700px) {
  .home-page .service-tabs.is-select-backed { display:flex; flex-direction:column; margin:0; justify-content:center; }
  .home-page .service-tabs button { border:0; }
}
@media (min-width:700px) and (max-width:1100px) {
  .home-page .service-browser { gap:24px; }
  .home-page .service-tabs { padding:20px 0; }
  .home-page .service-tabs button { min-height:56px; padding:16px 24px; font-size:16px; }
  .home-page .service-tabs button[aria-selected=true]::before { left:0; width:12px; }
  .home-page .panel-media { height:clamp(200px,26vw,280px); }
  .home-page .panel-copy { padding:20px; }
  .home-page .panel h3 { font-size:28px; margin-bottom:12px; }
  .home-page .panel p { font-size:15px; line-height:1.6; }
  .home-page .panel .panel-link { margin-top:16px; }
}
.site-footer { background:var(--white); color:var(--ink); --on-dark:var(--ink); --on-dark-muted:var(--muted); --dark-line:var(--line); --focus-dark:var(--orange) ; }
.site-footer .footer-brand { display:flex; flex-direction:column; align-items:flex-start; gap:12px; padding-inline:0; }
.site-footer .footer-brand .logo { width:176px; margin:0; color:var(--ink); }
.site-footer .footer-brand p { margin:0; color:var(--muted); }
.site-footer .footer-column h2,.site-footer .footer-contact .footer-links>a,.site-footer .back-top { color:var(--ink); }
.site-footer .footer-column a:hover,.site-footer .footer-bottom a:hover { color:var(--interaction-text,var(--ink)); }
.site-footer .footer-bottom { color:var(--muted); }
.site-footer .back-top { border-color:var(--line); }
.site-footer :is(a,summary):focus-visible { outline-color:var(--orange); }
@media (max-width:959px) {
  .site-footer .footer-brand .logo { width:156px; }
}
body .button,body .hero .actions .button,body.home-page .header-inner>.button { min-height:44px; padding:10px 0; gap:16px; border:0; border-radius:0; background:transparent; color:inherit; box-shadow:none; overflow:visible; font-weight:600; }
body .button::before { content:none; }
body .button:hover,body .hero .actions .button:not(:disabled):hover,body.home-page .header-inner>.button:hover { background:transparent; color:inherit; text-decoration:underline; text-underline-offset:6px; }
body .button .arrow { background:transparent; border-radius:0; box-shadow:none; width:22px; height:22px; }
body .enquiry-submit .button { align-self:flex-start; }
body .solution-arrow,body .project-open,body .sector-arrow,
body .solution-link:is(:hover,:focus-visible) .solution-arrow,
body .project-cover:is(:hover,:focus-visible) .project-open,
body .panel-link:is(:hover,:focus-visible) .sector-arrow { border:0; border-radius:0; background:transparent; box-shadow:none; }
body .project-buttons button,body .project-buttons button:hover:not(:disabled) { border:0; border-radius:0; background:transparent; box-shadow:none; }
body .project-buttons button:hover:not(:disabled) { background:var(--surface); }
body .site-footer .back-top { border:0; border-radius:0; background:transparent; }
body .repair-menu-close { border:0; border-radius:0; background:transparent; }
body .journal-filters button { border:0; border-bottom:1px solid transparent; border-radius:0; background:transparent; color:var(--muted); padding:10px 4px; }
body .journal-filters button[aria-pressed=true] { border-color:var(--orange); background:transparent; color:var(--ink); }
body :is(.button,.panel-link,.solution-link,.project-cover):is(:hover,:focus-visible) .arrow { animation:none; translate:4px 0; transition:translate var(--dur-feedback) var(--ease-standard); }
body :is(.button,.panel-link,.solution-link,.project-cover) .arrow { transition:translate var(--dur-feedback) var(--ease-standard); }
@media (prefers-reduced-motion:reduce) {
  body :is(.button,.panel-link,.solution-link,.project-cover):is(:hover,:focus-visible) .arrow { translate:0; transition:none; }
}
@media (forced-colors:active) {
  body .button,body .project-buttons button { border:1px solid ButtonText; }
  body .journal-filters button[aria-pressed=true] { border-color:Highlight; }
}
body.home-page {
  /* One responsive Home contract; component rules consume these aliases. */
  --page-gutter: clamp(20px,4vw,56px);
  --section-space: clamp(48px,calc(32px + 3vw),72px);
  --carousel-peek: 20px;
  --carousel-gap: var(--grid-gap);
  --section-gap: var(--space-heading-content);
  --grid-gap: var(--space-grid);
  --group-gap: var(--space-group);
  --home-copy-space: var(--space-media-copy);
  --home-panel-inset: clamp(20px,2vw,28px);
  --copy-gap: var(--space-copy);
  --home-body-type: 1rem;
  --home-secondary-type: .875rem;
  --home-control-target: 44px;
  --home-motion-ease: var(--ease-standard);
  --cta-gap: 16px;
  --cta-icon: 22px;
  --cta-duration: var(--dur-feedback);
  --interaction-underline: 1px;
  --interaction-offset: 5px;
  --cta-type: var(--home-secondary-type);
  --home-section-title: clamp(2rem,calc(1.25rem + 2vw),3rem);
  --home-card-title: clamp(1.5rem,calc(1.125rem + .7vw),1.75rem);
  --section-rule: var(--brand-section-rule);
  --dark-section-rule: var(--brand-dark-section-rule);
  --focus-halo: var(--brand-focus-halo);
  --dur-entrance: 620ms;
  --dur-image: 520ms;
  --interaction-accent: var(--orange);
  --interaction-text: var(--ink);
}
.home-page :is(.services,.project-section,.sector-section,.news-section,.contact-section) { padding-block:var(--section-space); }
.home-page :is(.services,.project-section,.sector-section,.news-section) .section-heading { margin-bottom:var(--section-gap); }
.home-page :is(.section-heading h2,.contact-intro h2) { font-size:var(--home-section-title); line-height:1.15; letter-spacing:-.03em; }
.home-page .hero-copy { grid-template-rows:auto; }
.home-page :is(.solution-heading h3,.panel h3) { font-size:var(--home-card-title); line-height:1.2; }
.home-page .solution-heading { margin-top:var(--home-copy-space); }
.home-page :is(.solution-summary,.panel p,.contact-intro>p,.news-feature-summary) { font-size:16px; line-height:1.6; }
.home-page .solution-extra { font-size:14px; line-height:1.6; }
.home-page .project-rail { --rail-edge:max(var(--page-gutter),calc((100% - 1248px)/2),env(safe-area-inset-left,0px),env(safe-area-inset-right,0px)); }
.home-page .project-cover { min-height:0; height:auto; aspect-ratio:6/5; --caption-inset:clamp(20px,2.2vw,32px); padding:var(--caption-inset); }
.home-page .project-cover h3 { font-size:clamp(26px,calc(20px + .8vw),32px); line-height:1.15; }
.home-page .project-cover .project-location { margin-bottom:12px; font-size:13px; }
.home-page .project-description { font-size:15px; line-height:1.6; }
.home-page :is(.project-controls,.solution-controls:not([hidden])) { margin-top:20px; }
.home-page .panel-media { height:auto; min-height:0; aspect-ratio:16/10; }
.home-page .panel-copy { padding:var(--home-copy-space); }
.home-page .news-feature .news-photo img { height:auto; max-height:none; aspect-ratio:16/10; }
.home-page .news-feature h3 { font-size:clamp(26px,calc(20px + .8vw),32px); line-height:1.2; }
.home-page .news-entry-copy { padding-top:var(--home-copy-space); }
.home-page .contact-inner { gap:clamp(32px,4vw,64px); }
.home-page .contact-intro>p { margin-top:20px; max-width:38ch; }
.home-page .contact-direct { margin-top:24px; }
.home-page .contact-direct>a { font-size:clamp(16px,1.4vw,20px); }
.home-page .enquiry-heading h3 { font-size:24px; line-height:1.25; }
.home-page .contact-field label { font-size:14px; }
.home-page .contact-field :is(input,textarea,select) { padding:12px 14px; font-size:16px; line-height:1.5; }
.home-page .contact-field input { min-height:48px; }
.home-page .contact-field textarea { min-height:120px; }
.home-page .footer-main { padding-block:clamp(32px,3.4vw,48px); }
.home-page .footer-bottom { padding-block:16px; }
@media (max-width:1100px) {
  .home-page .hero .actions { grid-row:2; }
  .home-page .project-cover { aspect-ratio:4/5; }
}
@media (min-width:700px) and (max-width:1100px) {
  .home-page .news-feature { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; gap:var(--grid-gap); }
  .home-page .news-feature .news-entry-copy { padding-top:0; }
  .home-page .news-feature .news-photo img { aspect-ratio:4/3; }
  .home-page .news-feature h3 { font-size:26px; }
  .home-page .news-feature-summary { margin-top:12px; }
  .home-page .news-secondary { padding-left:0; border-left:0; }
}
@media (max-width:699px) {
  .home-page .contact-inner { display:grid; grid-template-columns:1fr; gap:32px; }
  .home-page .contact-intro h2 br { display:none; }
  .home-page .news-feature { display:block; }
  .home-page .hero-copy { padding-bottom:80px; }
  .home-page .project-description { font-size:14px; }
}
@media (max-width:359px) {
  .home-page { --page-gutter:16px ; }
}
.home-page .hero-copy { container-type:inline-size; grid-template-columns:minmax(0,1fr); row-gap:16px; }
.home-page .hero h1 { grid-column:1; grid-row:1; max-width:none; font-size:clamp(28px,4.5cqi,52px); line-height:1.2; font-weight:500; letter-spacing:-.035em; text-wrap:balance; }
.home-page .hero h1 span { display:inline; }
.home-page .hero .actions { grid-column:1; grid-row:2; }
.home-page :is(.service-tabs,.sector-picker select,.panel) { border-radius:var(--media-radius); }
.home-page :is(.service-tabs,.panel) { overflow:hidden; }
.home-page .panel-copy { border-radius:0 0 var(--media-radius) var(--media-radius); }
.home-page .solution-grid { display:grid; grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:calc((100% - 3 * var(--carousel-gap) - var(--carousel-peek))/3); gap:var(--carousel-gap); overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; padding-block:4px 12px; scrollbar-width:thin; scrollbar-color:var(--muted) var(--surface); }
.home-page .solution { min-width:0; scroll-snap-align:start; scroll-snap-stop:always; }
.home-page .solution-link:focus-visible { outline-offset:-3px; }
.home-page .solution-controls:not([hidden]) { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.home-page .solution-position { color:var(--muted); font-size:14px; }
.home-page .project-rail { width:min(calc(100% - var(--page-gutter) - var(--page-gutter) - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)),1248px); margin-inline:auto; padding:4px 0 12px; scroll-padding-inline:0; grid-auto-columns:calc((100% - 2 * var(--carousel-gap) - var(--carousel-peek))/2); gap:var(--carousel-gap); }
@media (max-width:1199px) {
  .home-page .solution-grid { grid-auto-columns:calc((100% - 2 * var(--carousel-gap) - var(--carousel-peek))/2); }
}
@media (min-width:700px) and (max-width:1100px) {
  .home-page .news-secondary { gap:var(--carousel-gap); grid-auto-columns:calc((100% - 2 * var(--carousel-gap) - var(--carousel-peek))/2); }
}
@media (max-width:699px) {
  .home-page { --carousel-peek:16px; --carousel-gap:20px ; }
  .home-page :is(.solution-grid,.project-rail,.news-secondary) { grid-auto-columns:calc(100% - var(--carousel-gap) - var(--carousel-peek)); gap:var(--carousel-gap); }
}
@media (max-width:1100px) {
  .home-page .news-secondary:not(.is-expanded) .news-small:nth-child(n+3):not([hidden]) { display:grid; }
}
.home-page .carousel-scrollbar { position:relative; height:44px; width:100%; margin-block:0; cursor:pointer; touch-action:none; user-select:none; }
.home-page .carousel-scrollbar[hidden] { display:none; }
.home-page .carousel-scrollbar::before { content:''; position:absolute; left:0; right:0; top:20px; height:4px; background:var(--brand-line-strong); border-radius:var(--media-radius); }
.home-page .carousel-scrollbar-thumb { position:absolute; top:0; height:44px; min-width:44px; cursor:grab; }
.home-page .carousel-scrollbar-thumb::before { content:''; position:absolute; inset:20px 0; background:var(--muted); border-radius:var(--media-radius); }
.home-page .carousel-scrollbar:active .carousel-scrollbar-thumb { cursor:grabbing; }
.home-page .carousel-scrollbar:is(:hover,:focus-visible) .carousel-scrollbar-thumb::before { background:var(--orange); }
.home-page .project-rail + .carousel-scrollbar { width:min(calc(100% - var(--page-gutter) - var(--page-gutter) - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)),1248px); margin-inline:auto; }
.home-page .has-persistent-scrollbar { scrollbar-width:none; }
.home-page .has-persistent-scrollbar::-webkit-scrollbar { display:none; }
@media (forced-colors:active) {
  .home-page .carousel-scrollbar::before { background:CanvasText; }
  .home-page .carousel-scrollbar-thumb::before { background:Highlight; }
}
.home-page .hero { align-items:center; }
.home-page .hero-copy { padding-block:64px; }
@media (max-height:500px) and (orientation:landscape) {
  .home-page .hero-copy { padding-block:24px; }
}
.home-page .nav .nav-dropdown { left:-23px; width:max-content; min-width:224px; max-width:min(320px,calc(100vw - 40px)); padding:8px; border-radius:var(--media-radius); box-shadow:0 8px 24px rgb(13 16 18 / .10); }
.home-page .nav-disclosure:last-child .nav-dropdown { left:auto; right:-8px; }
.home-page .nav .nav-dropdown a { min-height:48px; padding:12px 14px; font-size:15px; line-height:1.5; font-weight:400; border-radius:2px; text-decoration:none; }
.home-page .nav-dropdown li+li { border-top:0; }
.home-page .nav .nav-dropdown a:is(:hover,:focus-visible) { background:var(--surface); color:var(--interaction-text,var(--ink)); }
.home-page .hero-repair-menu { width:min(720px,calc(100% - 32px)); max-height:calc(100dvh - 32px); padding:28px; overflow:hidden; }
.home-page .hero-repair-menu[open] { display:grid; grid-template-rows:auto auto minmax(0,1fr) auto; gap:20px; }
.home-page .repair-menu-heading { align-items:flex-start; margin:0; gap:16px; }
.home-page .repair-menu-heading h2 { max-width:24ch; font-size:28px; line-height:1.2; letter-spacing:-.025em; padding-top:5px; }
.home-page .repair-menu-close { margin:-4px -8px 0 0; }
.home-page .repair-menu-intro { max-width:58ch; margin:0; font-size:15px; line-height:1.6; color:var(--muted); }
.home-page .repair-menu-options { min-height:0; overflow-y:auto; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:2px; }
.home-page .repair-menu-options button { align-items:flex-start; min-height:132px; padding:20px; gap:12px; border:1px solid var(--line); border-radius:var(--media-radius); background:var(--white); }
.home-page .repair-menu-options strong { font-size:17px; line-height:1.3; }
.home-page .repair-menu-options small { margin-top:8px; font-size:14px; line-height:1.5; }
.home-page .repair-menu-options button .arrow { width:20px; height:20px; margin-top:1px; animation:none; transition:translate var(--dur-feedback) var(--ease-standard); }
.home-page .repair-menu-options button:is(:hover,:focus-visible) { background:var(--surface); border-color:var(--brand-line-strong); }
.home-page .repair-menu-options button:hover strong { text-decoration:none; }
.home-page .repair-menu-options button:is(:hover,:focus-visible) .arrow { animation:none; translate:3px 0; }
.home-page .repair-menu-help { display:flex; align-items:center; justify-content:space-between; gap:12px 20px; flex-wrap:wrap; padding-top:16px; border-top:1px solid var(--line); }
.home-page .repair-menu-help>span { font-size:14px; color:var(--muted); }
.home-page .repair-menu-help button { display:inline-flex; align-items:center; gap:16px; min-height:44px; padding:8px 0; border:0; background:transparent; font-size:15px; font-weight:600; color:var(--ink); cursor:pointer; }
.home-page .repair-menu-help button .arrow { color:var(--orange); }
.home-page .repair-menu-help button:hover { color:var(--interaction-text,var(--ink)); }
@media (max-width:599px) {
  .home-page .hero-repair-menu { padding:20px; }
  .home-page .hero-repair-menu[open] { gap:16px; }
  .home-page .repair-menu-heading h2 { font-size:24px; }
  .home-page .repair-menu-options { grid-template-columns:1fr; grid-auto-rows:max-content; align-content:start; overscroll-behavior-y:contain; }
  .home-page .repair-menu-options button { height:auto; min-height:94px; padding:16px; }
  .home-page .repair-menu-help { gap:0 16px; padding-top:12px; }
}
@media (prefers-reduced-motion:reduce) {
  .home-page .repair-menu-options button .arrow { transition:none; translate:0; }
}
body.home-page .cta-text { display:inline-flex; align-items:center; justify-content:flex-start; gap:var(--cta-gap); min-height:44px; padding:10px 0; border:0; border-radius:0; background:transparent; box-shadow:none; font-family:inherit; font-size:var(--cta-type); font-weight:600; line-height:1.4; letter-spacing:0; text-transform:none; text-decoration:none; color:inherit; cursor:pointer; }
body.home-page .cta-text::before,body.home-page .cta-text::after { content:none; }
body.home-page .cta-text:is(:hover,:focus-visible) { color:inherit; background:transparent; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px; }
body.home-page :is(.cta-text,.cta-card,.project-buttons button) .arrow { width:var(--cta-icon); height:var(--cta-icon); stroke-width:1.6; animation:none; transform:none; translate:0; transition:translate var(--cta-duration) ease-out; }
body.home-page .cta-text .sector-arrow { width:var(--cta-icon); height:var(--cta-icon); min-width:var(--cta-icon); flex:0 0 var(--cta-icon); }
body.home-page .cta-text:not(.news-more-button):not(.back-top):is(:hover,:focus-visible) .arrow,
body.home-page .cta-card:is(:hover,:focus-visible) .arrow,
body.home-page #hero-repair-trigger:is(:hover,:focus-visible) .arrow { animation:none; transform:none; translate:4px 0; }
body.home-page .back-top:is(:hover,:focus-visible) .arrow { translate:0 -4px; }
body.home-page :is(.cta-text,.cta-card,.project-buttons button):focus-visible { outline:2px solid var(--orange); outline-offset:4px; }
body.home-page .cta-card:focus-visible { outline-offset:-3px; }
body.home-page .project-buttons button { touch-action:manipulation; width:44px; height:44px; min-height:44px; padding:10px; border:0; border-radius:0; background:transparent; }
body.home-page .project-buttons button:hover:not(:disabled) { background:transparent; }
body.home-page .project-buttons button:disabled { opacity:.35; cursor:default; }
@media (max-width:760px) {
  body.home-page .back-top { justify-content:center; padding:10px; }
}
@media (prefers-reduced-motion:reduce) {
  body.home-page :is(.cta-text,.cta-card,.project-buttons button) .arrow,
 body.home-page #hero-repair-trigger:is(:hover,:focus-visible) .arrow { transition:none; animation:none; transform:none; translate:0; }
}
@media (forced-colors:active) {
  body.home-page :is(.cta-text,.project-buttons button):focus-visible { outline-color:Highlight; }
}
@media (max-width:959px) {
  body.home-page .header-inner>.cta-text { display:none; }
}
body.home-page .header-inner>.cta-text:is(:hover,:focus-visible) { text-underline-offset:5px; }
body.home-page .mobile-nav { scrollbar-gutter:stable; }
body.home-page .mobile-nav-group { border-bottom:1px solid var(--line); }
body.home-page .mobile-nav-row { display:flex; align-items:center; gap:8px; }
body.home-page .mobile-nav-row>a { flex:1; min-width:0; border:0; padding-block:14px; min-height:48px; }
body.home-page .mobile-submenu-toggle { display:grid; place-items:center; flex:0 0 44px; width:44px; height:48px; padding:12px; border:0; background:transparent; color:var(--ink); cursor:pointer; }
body.home-page .mobile-submenu-toggle .arrow { width:18px; height:18px; }
body.home-page .mobile-submenu-toggle[aria-expanded=true] .arrow { rotate:180deg; }
body.home-page .mobile-submenu { list-style:none; margin:0; padding:0 0 12px 12px; }
body.home-page .mobile-submenu[hidden] { display:none; }
body.home-page .mobile-submenu a { min-height:44px; padding:12px 8px; border:0; font-size:14px; font-weight:400; line-height:1.45; }
body.home-page .mobile-submenu a:is(:hover,:focus-visible) { background:var(--surface); color:var(--interaction-text,var(--ink)); }
body.home-page .mobile-submenu-toggle:focus-visible { outline:2px solid var(--orange); outline-offset:-3px; }
body.home-page :is(.hero,.contact-section,.project-cover,.service-tabs) { --interaction-accent:var(--focus-dark); --interaction-text:var(--focus-dark); }
body.home-page :is(.header-inner>.cta-text,.cta-text,.nav a,.mobile-nav a,.footer-links a,.footer-bottom a,.contact-direct a,.section-heading>a):is(:hover,:focus-visible):not(:disabled) { color:var(--interaction-text,var(--ink)); text-decoration-line:underline; text-decoration-color:currentColor; text-decoration-thickness:var(--interaction-underline); text-underline-offset:var(--interaction-offset); text-decoration-skip-ink:auto; }
body.home-page :is(.solution-link,.project-cover,.repair-menu-options button):is(:hover,:focus-visible) :is(h3,strong) { color:var(--interaction-text,var(--ink)); text-decoration-line:underline; text-decoration-color:currentColor; text-decoration-thickness:var(--interaction-underline); text-underline-offset:var(--interaction-offset); text-decoration-skip-ink:auto; }
body.home-page :is(.nav a,.mobile-nav a)[aria-current=location],
body.home-page .service-tabs button[aria-selected=true] { color:var(--interaction-text,var(--ink)); text-decoration:underline; text-decoration-thickness:var(--interaction-underline); text-underline-offset:var(--interaction-offset); }
body.home-page .service-tabs button[aria-selected=true] { color:var(--white); }
body.home-page .service-tabs button[aria-selected=true]::before { background:var(--white); }
body.home-page .service-tabs button:is(:hover,:focus-visible) { color:var(--white); outline-color:var(--white); }
body.home-page :is(a,button,summary,select,input,textarea,[role=scrollbar]):focus-visible { outline-color:var(--interaction-accent); outline-width:2px; outline-style:solid; }
body.home-page :is(.hero,.contact-section) .cta-text:focus-visible,body.home-page .project-cover:focus-visible { outline-color:var(--interaction-accent); }
body.home-page :is(.nav-disclosure-toggle,.mobile-submenu-toggle,.menu-toggle,.repair-menu-close,.project-buttons button):is(:hover,:focus-visible):not(:disabled) { background:var(--surface); }
body.home-page .hero-video-toggle:is(:hover,:focus-visible) { border-color:var(--interaction-accent); background:rgb(13 16 18 / .65); }
body.home-page :is(.hero,.contact-section,.project-cover,.service-tabs) :is(a,button):is(:hover,:focus-visible) .arrow,
body.home-page .project-cover:is(:hover,:focus-visible) .arrow { color:var(--interaction-accent) !important; }
@media (forced-colors:active) {
  body.home-page { --interaction-accent:LinkText; --interaction-text:LinkText; }
  body.home-page :is(.hero,.contact-section,.project-cover,.service-tabs) { --interaction-accent:LinkText; --interaction-text:LinkText; }
  body.home-page :is(a,button,summary,select,input,textarea,[role=scrollbar]):focus-visible { outline-color:Highlight; }
}
@media (min-width:700px) {
  .home-page .solution-grid { grid-template-columns:repeat(2,minmax(0,1fr)); grid-auto-flow:row; grid-auto-columns:auto; column-gap:var(--grid-gap); row-gap:40px; overflow:visible; scroll-snap-type:none; padding:0; align-items:start; }
  .home-page .solution-heading { display:flex; position:static; align-items:flex-start; gap:12px; }
  .home-page .solution-heading h3 { font-size:24px; line-height:1.2; max-width:none; min-height:2.4em; }
  .home-page .solution-arrow { position:static; margin:0; align-self:flex-start; }
  .home-page .solution-summary { max-width:38ch; }
  .home-page .solution-controls,.home-page #solution-rail + .carousel-scrollbar { display:none; }
}
@media (min-width:700px) and (max-width:1199px) {
  .home-page .solution-photos { aspect-ratio:4/3; }
}
@media (min-width:1200px) {
  .home-page .solution-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .home-page .solution-photos { aspect-ratio:1; }
}
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle),
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle):is(:hover,:active,:focus):not(:disabled) { appearance:none; -webkit-appearance:none; background:transparent; border:0; box-shadow:none; }
@media (hover:hover) and (pointer:fine) {
  body.home-page .nav-disclosure:hover>.nav-section-link,
 body.home-page .mobile-nav-row:hover>a { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:8px; }
}
body.home-page .nav-disclosure.is-open>.nav-section-link { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:8px; }
body.home-page :is(.solution-summary,.solution-extra,.news-feature-summary) { margin-top:var(--copy-gap); }
body.home-page .solution-heading { margin-top:var(--home-copy-space); }
body.home-page .service-browser { gap:var(--grid-gap); }
body.home-page .panel-copy { padding:var(--home-panel-inset); }
body.home-page .panel h3 { margin-bottom:var(--copy-gap); }
body.home-page .panel .panel-link { margin-top:var(--copy-gap); }
body.home-page :is(.solution-grid,.project-rail) { padding-block:0 4px; }
body.home-page .carousel-scrollbar { margin-block:0 4px; }
body.home-page :is(.project-controls,.solution-controls:not([hidden])) { margin-top:8px; gap:var(--grid-gap); }
body.home-page .news-layout { gap:var(--grid-gap); }
body.home-page .news-secondary { padding-left:0; border-left:0; }
body.home-page .news-entry-copy { padding-top:var(--home-copy-space); }
body.home-page .news-entry .news-slot-label { margin-bottom:8px; }
body.home-page .news-more { margin-top:var(--home-copy-space); }
body.home-page .contact-inner { gap:var(--group-gap); }
body.home-page .contact-intro>p { margin-top:var(--home-copy-space); }
body.home-page .contact-direct { margin-top:var(--home-copy-space); }
body.home-page .enquiry-heading { padding-bottom:16px; margin-bottom:var(--home-copy-space); }
body.home-page .enquiry-heading h3 { margin-bottom:8px; }
body.home-page .contact-fields { gap:var(--home-copy-space) var(--grid-gap); }
body.home-page .enquiry-submit { margin-top:var(--home-copy-space); }
body.home-page .footer-main { padding-block:var(--group-gap); }
@media (min-width:700px) {
  body.home-page .solution-grid { padding:0; row-gap:var(--group-gap); }
}
@media (min-width:761px) {
  body.home-page .footer-main { gap:var(--grid-gap); }
}
@media (min-width:1101px) {
  body.home-page .news-secondary { gap:var(--home-copy-space) var(--grid-gap); }
}
@media (max-width:1100px) {
  body.home-page .news-feature,body.home-page .news-feature.is-sticky { margin-bottom:var(--section-gap); padding-bottom:var(--section-gap); }
  body.home-page .news-small .news-entry-copy { padding-top:0; }
  body.home-page .news-secondary { padding-bottom:4px; }
}
@media (min-width:700px) and (max-width:1100px) {
  body.home-page .news-feature .news-entry-copy { padding-top:0; }
}
@media (max-width:699px) {
  body.home-page .sector-picker:not([hidden]) { margin-bottom:var(--grid-gap); }
}
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle) { -webkit-tap-highlight-color:transparent; }
body.home-page .header-inner .nav-disclosure-toggle.nav-section-link { display:inline-flex; align-items:center; justify-content:flex-start; width:auto; min-height:44px; gap:8px; padding:10px 0; border:0; background:transparent; color:var(--ink); font:inherit; font-size:14px; font-weight:500; line-height:1.5; text-align:left; text-decoration:none; }
body.home-page .header-inner :is(.mobile-submenu-toggle,.mobile-contact-link) { display:flex; align-items:center; justify-content:space-between; flex:1 1 auto; width:100%; height:auto; min-height:48px; gap:16px; padding:14px 0; font:inherit; font-size:18px; font-weight:500; line-height:1.5; }
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle)>* { pointer-events:none; }
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle):is(:hover,:focus-visible,[aria-expanded=true],[aria-current=location]) { background:transparent; color:var(--interaction-text,var(--ink)); text-decoration:none; }
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle):is(:hover,:focus-visible,[aria-expanded=true],[aria-current=location]) .nav-label { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px; }
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle):focus-visible { outline:2px solid var(--orange); outline-offset:4px; }
body.home-page .hero-image { object-position:center; }
@media (min-width:700px) {
  body.home-page .service-tabs.is-select-backed { align-self:stretch; justify-content:flex-start; padding-block:12px; }
  body.home-page .service-tabs.is-select-backed button { flex:1; }
  body.home-page .service-browser .panel-media { aspect-ratio:2/1; flex-shrink:0; }
}
body#inicio.home-page :is(.cta-text,.cta-card,.news-entry,.service-tabs button),
body#inicio.home-page :is(.cta-text,.cta-card,.news-entry,.service-tabs button):is(:hover,:focus-visible,:active) { text-decoration:none; }
body#inicio.home-page .cta-card :is(h3,strong),
body#inicio.home-page .cta-card:is(:hover,:focus-visible,:active) :is(h3,strong) { text-decoration:none; }
@media (max-width:760px) {
  body.home-page .footer-group[open] > summary h2 { color:var(--interaction-text,var(--ink)); }
}
body#inicio.home-page .cta-card:is(:hover,:focus-visible,:active) :is(h3,strong) { color:inherit; }
body#inicio.home-page .cta-text:is(:hover,:focus-visible,:active) { color:var(--interaction-text,var(--ink)); }
body#inicio.home-page .panel-link::after { content:none; }
body#inicio.home-page :is(main,.site-footer,dialog) :is(p,li,label) a:not(.cta-text):not(.cta-card) { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; text-decoration-skip-ink:auto; }
body.home-page .hero { --hero-focal-x:50%; --hero-copy-rise:calc((var(--hero-viewport,100dvh) - var(--header-height) - env(safe-area-inset-top,0px)) * .05) ; }
body.home-page .hero :is(.hero-image,.hero-video) { object-position:var(--hero-focal-x) 50%; }
body.home-page .hero::before { background:linear-gradient(90deg,rgb(13 16 18 / .30),rgb(13 16 18 / .10) 75%),linear-gradient(180deg,rgb(13 16 18 / .16),rgb(13 16 18 / .26) 45%,rgb(13 16 18 / .72) 100%); }
body.home-page .hero-copy { padding-block:40px calc(40px + 2 * var(--hero-copy-rise)); }
@media (min-width:700px) and (max-width:1099px) {
  body.home-page .hero-video[data-shot=operator] { --hero-focal-x:var(--hero-operator-x,43%) ; }
  body.home-page .hero-video[data-shot=aerial] { --hero-focal-x:36% ; }
}
@media (max-width:699px) {
  body.home-page .hero { --hero-focal-x:48%; --hero-copy-rise:calc((var(--hero-viewport,100dvh) - var(--header-height) - env(safe-area-inset-top,0px)) * .02); }
  body.home-page .hero-video[data-shot=overhead] { --hero-focal-x:53% ; }
  body.home-page .hero-video[data-shot=operator] { --hero-focal-x:var(--hero-operator-x,43%) ; }
  body.home-page .hero-video[data-shot=aerial] { --hero-focal-x:36% ; }
  body.home-page .hero::before { background:linear-gradient(90deg,rgb(13 16 18 / .26),rgb(13 16 18 / .16)),linear-gradient(180deg,rgb(13 16 18 / .20),rgb(13 16 18 / .30) 45%,rgb(13 16 18 / .72) 100%); }
}
@media (max-height:580px) {
  body.home-page .hero-copy { padding-block:24px calc(24px + 2 * var(--hero-copy-rise)); }
}
body.home-page .hero h1 { max-width:100%; font-size:clamp(1.3125rem,min(calc(.75rem + 4cqi),7.4cqi),3.5rem); font-weight:500; line-height:1.14; letter-spacing:-.025em; color:var(--brand-on-dark); text-shadow:none; text-decoration:none; }
body.home-page .hero h1 span { display:block; font-weight:400; }
body.home-page :is(.solution-summary,.panel p,.contact-intro>p,.news-feature-summary,.contact-field input,.contact-field textarea,.contact-field select) { font-size:var(--home-body-type); }
body.home-page :is(.solution-extra,.repair-menu-options small,.repair-menu-help>span,.field-help) { font-size:var(--home-secondary-type); }
body.home-page .solution-heading h3 { font-size:1.5rem; }
body.home-page :is(.cta-text,.project-buttons button,.repair-menu-close) { min-height:var(--home-control-target); }
body.home-page :is(.cta-text,.cta-card,.project-buttons button) .arrow { transition-timing-function:var(--home-motion-ease); }
body.home-page :is(.hero,.contact-section,.project-cover) :is(.cta-text,.project-open) .arrow,
body.home-page .project-cover>.arrow { color:var(--focus-dark) !important; }
body.home-page .enquiry-preview-note { color:var(--on-dark-muted); margin:0 0 var(--home-copy-space); line-height:1.5; }
body.home-page .enquiry-context-clear { margin:0 0 var(--home-copy-space); color:var(--on-dark-muted); }
body.home-page .enquiry-context-clear[hidden] { display:none; }
body.home-page .enquiry-context-clear:is(:hover,:focus-visible) .arrow { translate:0; }
body.home-page .carousel-scrollbar-thumb { left:0; }
@media (max-height:540px) {
  body.home-page .hero-repair-menu[open] { display:block; overflow-y:auto; overscroll-behavior:contain; }
  body.home-page .repair-menu-heading { position:sticky; top:0; z-index:1; background:var(--white); }
  body.home-page .repair-menu-heading::before { content:""; position:absolute; inset:-28px -28px 0; background:var(--white); z-index:-1; pointer-events:none; }
  body.home-page .repair-menu-intro { margin-block:var(--home-copy-space); }
  body.home-page .repair-menu-options { overflow:visible; }
  body.home-page .repair-menu-help { margin-top:var(--home-copy-space); }
}
@media (forced-colors:active) {
  body.home-page :is(.hero,.contact-section,.project-cover) :is(.cta-text,.project-open) .arrow,
 body.home-page .project-cover>.arrow { color:LinkText !important; }
}
/* Horizontal lists settle on an item; document and reading panels keep free vertical scrolling. */
.case-nav .wrap,.industry-anchor-nav .wrap { scroll-snap-type:x mandatory; }
.case-nav .wrap > a,.industry-anchor-nav .wrap > a { scroll-snap-align:start; scroll-snap-stop:always; }
.work-tabs > .work-tab { scroll-snap-stop:always; }

/* On phones, keep the finished floor clear of the always-visible project copy. */
@media (max-width:699px) {
  body.home-page .project-cover { display:grid; grid-template-rows:auto 1fr; align-items:stretch; height:100%; aspect-ratio:auto; padding:0; }
  body.home-page .project-cover>img { position:relative; inset:auto; z-index:0; display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; object-position:center bottom; }
  body.home-page .project-cover::before,body.home-page .project-cover-copy::before { content:none; }
  body.home-page .project-cover-copy { padding:var(--caption-inset); }
  body.home-page .project-description-reveal { grid-template-rows:1fr; opacity:1; }
}

/* Tablet project cards use the same clear image/copy split as phones so the finished floor stays visible. */
@media (min-width:700px) and (max-width:1100px) {
  body.home-page .project-cover { display:grid; grid-template-rows:auto 1fr; align-items:stretch; height:100%; aspect-ratio:auto; padding:0; }
  body.home-page .project-cover>img { position:relative; inset:auto; z-index:0; display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; object-position:center bottom; }
  body.home-page .project-cover::before,body.home-page .project-cover-copy::before { content:none; }
  body.home-page .project-cover-copy { padding:var(--caption-inset); }
}

/* On wide screens, reveal a little more of the project image and finished floor. */
@media (min-width:1101px) {
  body.home-page .project-cover > img { object-position:center bottom; }
  body.home-page .project-cover::before { background:linear-gradient(0deg,rgb(10 15 18 / .88),rgb(10 15 18 / .56) 27%,rgb(10 15 18 / .10) 64%,rgb(10 15 18 / .06)); }
  body.home-page .project-cover-copy::before { background:linear-gradient(to bottom,transparent,rgb(10 15 18 / .68) 32px,rgb(10 15 18 / .90)); }
}

body.home-page .header-inner .mobile-contact-link { margin-top:12px; border:0; text-decoration:none; }
body.home-page .header-inner .mobile-contact-link .arrow { flex:none; width:18px; height:18px; color:var(--orange); }

/* Suppress the browser tap overlay; keyboard focus keeps its visible outline. */
body.home-page :is(.project-cover,.solution-link) { -webkit-tap-highlight-color:transparent; }

/* Reserve the same two-line space before the supporting solution copy. */
body.home-page .solution-heading h3 { min-height:2.4em; }
body.home-page .solution-summary { min-height:3.2em; }

/* Keep direct-contact targets separate on small screens and avoid sticky touch hover. */
@media (max-width:959px) {
  body.home-page .contact-direct { flex-direction:row; flex-wrap:wrap; align-items:center; gap:8px 20px; }
  body.home-page .contact-direct h3 { flex-basis:100%; margin-bottom:0; }
}
body.home-page .contact-direct>a { -webkit-tap-highlight-color:transparent; }
@media (hover:none) {
  body#inicio.home-page .contact-direct>a:hover:not(:focus-visible) { color:inherit; text-decoration:none; }
}

/* Keep sector cards and their CTA stable across one- and two-line descriptions. */
body.home-page .service-browser .panel-copy>p { min-height:3.2em; }

/* Keep native link sharing and text selection; only prevent image dragging/selection. */
@media (hover:none) and (pointer:coarse) {
  body.home-page :is(.project-cover>img,.solution-photos img) { -webkit-user-drag:none; -webkit-user-select:none; user-select:none; }
}

/* Extend the existing single link over each card without adding duplicate tab stops. */
body.home-page :is(.news-entry,.service-browser .panel) { position:relative; }
@media (min-width:1101px) {
  body.home-page .news-feature.is-sticky { position:sticky; }
}
body.home-page .service-browser .panel-copy { animation:none; }
body.home-page .service-browser .panel-link { position:static; }
body.home-page :is(.news-entry,.service-browser .panel) { -webkit-tap-highlight-color:transparent; }
@media (hover:none) and (pointer:coarse) {
  body.home-page :is(.news-entry,.service-browser .panel) img { -webkit-user-drag:none; -webkit-user-select:none; user-select:none; }
  body#inicio.home-page .service-browser .panel-link:hover:not(:focus-visible) { color:inherit; }
}

/* Images belong to their card link: taps and native link menus target the card. */
body.home-page :is(.solution-link,.project-cover,.service-browser .panel,.news-entry) img { pointer-events:none; }

/* Browser chrome can collapse while scrolling without resizing the whole hero. */
@media (hover:none) and (pointer:coarse) {
  body.home-page .hero { --hero-viewport:100svh; }
}
body.home-page .carousel-scrollbar { touch-action:pan-y pinch-zoom; }

/* Touch feedback ends on release; keyboard focus and selected menu states remain visible. */
@media (hover:none) {
  body#inicio.home-page .cta-text:hover:not(:focus-visible):not(:active):not(:disabled) { color:inherit; }
  body#inicio.home-page :is(.menu-toggle,.repair-menu-close,.project-buttons button):hover:not(:focus-visible):not(:active):not(:disabled) { background:transparent; }
}

/* The entire news/sector card is now the native link, including its image and copy. */
a.news-entry { display:block; }
a.news-entry[hidden],.sector-panel[hidden] { display:none; }
body.home-page .sector-panel { min-width:0; }
body.home-page .sector-panel:not([hidden]) { display:flex; }
body.home-page .sector-card { width:100%; }
body.home-page .sector-enquiry { margin-top:16px; padding:0; border:0; background:transparent; color:var(--ink); text-align:left; }
body.home-page .whole-card-link { color:inherit; text-decoration:none; border-radius:var(--media-radius); }
body.home-page .whole-card-link:focus-visible { outline:2px solid var(--interaction-accent); outline-offset:3px; }
body.home-page .whole-card-link:not(.news-entry):active:not(:focus-visible) { outline:2px solid var(--interaction-accent); outline-offset:-2px; }
@media (hover:hover) and (pointer:fine) {
  body.home-page .whole-card-link:not(.news-entry):hover { outline:1px solid var(--line); outline-offset:-1px; }
  body.home-page .whole-card-link:hover:focus-visible { outline:2px solid var(--interaction-accent); outline-offset:3px; }
}

/* News cards keep editorial text neutral; interaction is signalled by underline, focus and image movement. */
body.home-page .news-entry .news-photo img { transition:transform var(--motion-feedback) var(--motion-ease); }
body.home-page .news-entry h3 {
  color:var(--ink);
  text-decoration-line:none;
  text-decoration-color:var(--ink);
  text-decoration-thickness:var(--interaction-underline);
  text-underline-offset:var(--interaction-offset);
  text-decoration-skip-ink:auto;
}
body.home-page .news-entry:focus-visible h3 { text-decoration-line:underline; }
@media (hover:hover) and (pointer:fine) {
  body.home-page .news-entry:hover h3 { text-decoration-line:underline; }
  body.home-page .news-entry:is(:hover,:focus-visible) .news-photo img { transform:scale(1.015); }
  body.home-page .news-more-button:is(:hover,:focus-visible) .arrow { translate:4px 0; }
}
@media (prefers-reduced-motion:reduce) {
  body.home-page .news-entry .news-photo img { transition:none; transform:none; }
}

/* Shared frame: one treatment for Home and interior navigation controls. */
body.home-page > header { background:var(--white); color:var(--ink); }
body.home-page :is(button,summary) { touch-action:manipulation; }
body.home-page :is(.work-more,.work-dialog-close,.journal-filters button,.case-lightbox-controls button,[data-close]) { min-height:44px; min-width:44px; }
body.home-page :is(.industry-solution-card,.journal-card,.case-cover) img { pointer-events:none; }

/* Brand accent marks the control while its small label stays readable. */
body.home-page .header-inner :is(.nav-disclosure-toggle,.mobile-submenu-toggle) > .arrow { color:var(--orange); }
@media (max-width:760px) {
  body.home-page .footer-group > summary .arrow { color:var(--ink); }
  body.home-page .footer-group[open] > summary .arrow { color:var(--orange); }
}

/* Final visual polish: one authored entrance, quiet image feedback, and clearer form states. */
body.home-page {
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  font-synthesis:none;
}
body.home-page :is(h1,h2,h3) { text-wrap:balance; }
body.home-page .hero h1 { text-wrap:balance; }
body.home-page .hero-cta { isolation:isolate; }
body.home-page .hero-repair-menu { box-shadow:none; }
body.home-page .panel-media { overflow:hidden; }
body.home-page .contact-field:focus-within label { color:var(--focus-dark); }
body.home-page .contact-field :is(input,textarea,select):focus-visible {
  border-color:var(--focus-dark);
  background:var(--field-surface);
}
body.home-page .carousel-scrollbar-thumb::before {
  transition:background-color var(--dur-feedback) var(--ease-standard),transform var(--dur-feedback) var(--ease-standard);
}
@media (prefers-reduced-motion:no-preference) {
  body.home-page .hero h1 {
    animation:home-hero-copy-in var(--dur-entrance) var(--ease-standard) both;
  }
  body.home-page .hero-cta {
    animation:home-hero-cta-in var(--dur-entrance) var(--ease-standard) 100ms both;
  }
  body.home-page .solution-photos img,
  body.home-page .project-cover > img,
  body.home-page .panel-image {
    transition:transform var(--dur-image) var(--ease-standard),filter var(--dur-image) var(--ease-standard);
  }
  body.home-page .solution-link:hover .solution-photos img,
  body.home-page .solution-link:focus-visible .solution-photos img,
  body.home-page .project-cover:hover > img,
  body.home-page .project-cover:focus-visible > img,
  body.home-page .whole-card-link:hover .panel-image,
  body.home-page .whole-card-link:focus-visible .panel-image {
    transform:scale(1.025);
    filter:saturate(1.04) contrast(1.02);
  }
  body.home-page .solution-link:hover .solution-arrow,
  body.home-page .solution-link:focus-visible .solution-arrow,
  body.home-page .project-cover:hover .project-open,
  body.home-page .project-cover:focus-visible .project-open {
    transform:translateY(-2px);
  }
  body.home-page .carousel-scrollbar:is(:hover,:focus-visible) .carousel-scrollbar-thumb::before {
    transform:scaleY(1.5);
  }
}
@keyframes home-hero-copy-in {
  from { opacity:0; transform:translateY(18px); }
  to { opacity:1; transform:none; }
}
@keyframes home-hero-cta-in {
  from { opacity:0; transform:translateY(10px); }
  to { opacity:1; transform:none; }
}
@media (prefers-reduced-motion:reduce) {
  body.home-page .solution-photos img,
  body.home-page .project-cover > img,
  body.home-page .panel-image { transition:none; transform:none; filter:none; }
  body.home-page .hero h1,
  body.home-page .hero-cta { animation:none; }
}
@media (hover:hover) and (pointer:fine) {
  body.home-page :is(.cta-text,.project-buttons button,.menu-toggle,.mobile-submenu-toggle,.repair-menu-close):not(:disabled):active {
    transform:translateY(1px);
  }
}
@media (forced-colors:active) {
  body.home-page .contact-field:focus-within label { color:Highlight; }
  body.home-page .contact-field :is(input,textarea,select):focus-visible { background:Field; border-color:Highlight; }
}

/* Section-by-section refinement: clearer hierarchy, calmer states, and a usable mobile hero scale. */
/* Header and navigation */
body.home-page > header { border-bottom:1px solid var(--section-rule); }
body.home-page .header-inner { border-bottom:0; }
body.home-page .nav-disclosure-toggle .arrow,
body.home-page .menu-toggle .arrow { transition:color var(--dur-feedback) var(--ease-standard),transform var(--dur-feedback) var(--ease-standard); }
body.home-page .nav-disclosure-toggle[aria-expanded=true] .arrow { transform:rotate(180deg); }
@media (hover:hover) and (pointer:fine) {
  body.home-page .menu-toggle:hover { background:var(--surface); color:var(--orange); }
  body.home-page .nav-disclosure-toggle:hover .arrow { transform:translateY(1px); }
}

/* Hero */
body.home-page .hero h1 {
  font-size:clamp(3.25rem,5vw,5rem);
  max-width:13ch;
  line-height:1.06;
  letter-spacing:-.045em;
}
body.home-page .hero h1 span { margin-top:.04em; }
body.home-page .hero-cta { font-size:var(--cta-type); border-bottom:1px solid transparent; transition:border-color var(--dur-feedback) var(--ease-standard),color var(--dur-feedback) var(--ease-standard); }
body.home-page .hero-video-toggle { transition:background-color var(--dur-feedback) var(--ease-standard),border-color var(--dur-feedback) var(--ease-standard),transform var(--dur-feedback) var(--ease-standard); }
@media (min-width:700px) and (max-width:1100px) {
  body.home-page .hero h1 { font-size:clamp(3.1rem,6.2vw,4.5rem); max-width:16ch; }
}
@media (max-width:699px) {
  body.home-page .hero h1 { font-size:clamp(2.15rem,9.6vw,3.4rem); max-width:16ch; line-height:1.05; }
  body.home-page .hero-copy { padding-block:48px clamp(56px,12svh,96px); }
}
@media (hover:hover) and (pointer:fine) {
  body.home-page .hero-cta:hover { border-color:currentColor; }
  body.home-page .hero-video-toggle:hover { transform:translateY(-2px); }
}

/* Section headings and solutions */
body.home-page :is(.services,.news-section) > .section-heading,
body.home-page :is(.project-section,.sector-section) > .wrap > .section-heading {
  padding-bottom:16px;
  border-bottom:1px solid var(--section-rule);
}
body.home-page .solution-link { border-radius:var(--media-radius); }
body.home-page .solution-summary { color:var(--muted); }
body.home-page .solution-link:focus-visible { outline:2px solid var(--interaction-accent); outline-offset:6px; }
@media (hover:hover) and (pointer:fine) {
  body.home-page .solution-link:hover .solution-summary { color:var(--ink); }
  body.home-page .solution-link:hover .solution-extra { color:var(--ink); }
}
@media (max-width:699px) {
  body.home-page :is(.services,.news-section) > .section-heading,
  body.home-page :is(.project-section,.sector-section) > .wrap > .section-heading { padding-bottom:12px; }
}

/* Projects */
body.home-page .project-cover .project-location { font-size:12px; letter-spacing:.045em; text-transform:uppercase; }
body.home-page .project-position { letter-spacing:.02em; }
body.home-page .project-buttons button { transition:background-color var(--dur-feedback) var(--ease-standard),border-color var(--dur-feedback) var(--ease-standard),color var(--dur-feedback) var(--ease-standard),transform var(--dur-feedback) var(--ease-standard); }
@media (hover:hover) and (pointer:fine) {
  body.home-page .project-buttons button:hover:not(:disabled) { transform:translateY(-2px); }
}

/* Sectors */
body.home-page .service-tabs button[aria-selected=true] { background:rgb(255 255 255 / .07); }
body.home-page .service-tabs button:focus-visible { outline-offset:-4px; }
body.home-page .panel h3 { text-wrap:balance; }
body.home-page .panel .panel-link { font-weight:600; }

/* News */
body.home-page .news-slot-label { color:var(--muted); }
body.home-page .news-more-button { border-bottom:1px solid transparent; }
@media (hover:hover) and (pointer:fine) {
  body.home-page .news-more-button:hover { border-color:currentColor; }
}

/* Contact */
body.home-page .contact-section { border-top:1px solid var(--dark-section-rule); }
body.home-page .contact-direct>a { transition:color var(--dur-feedback) var(--ease-standard),text-decoration-color var(--dur-feedback) var(--ease-standard); }
body.home-page .contact-field :is(input,textarea,select):focus-visible { box-shadow:0 0 0 3px var(--focus-halo); }
body.home-page .contact-field :is(input,textarea,select)[aria-invalid=true] { box-shadow:0 0 0 3px rgb(255 182 163 / .15); }
body.home-page .enquiry-submit .button { border-bottom:1px solid transparent; }
@media (hover:hover) and (pointer:fine) {
  body.home-page .contact-direct>a:hover { color:var(--focus-dark); }
  body.home-page .enquiry-submit .button:hover:not(:disabled) { border-color:currentColor; }
}

/* Footer */
body.home-page .site-footer { border-top:1px solid var(--line); }
body.home-page .footer-group summary h2 {
  text-decoration-line:none;
  text-decoration-color:var(--ink);
  text-decoration-thickness:var(--interaction-underline);
  text-underline-offset:var(--interaction-offset);
  text-decoration-skip-ink:auto;
}
@media (max-width:760px) {
  body.home-page .footer-group summary:focus-visible h2 { text-decoration-line:underline; }
}
@media (max-width:760px) and (hover:hover) and (pointer:fine) {
  body.home-page .footer-group summary:hover h2 { text-decoration-line:underline; }
}
@media (hover:hover) and (pointer:fine) {
  body.home-page .footer-bottom .back-top:hover .arrow { translate:0 -2px; }
}

@media (prefers-reduced-motion:reduce) {
  body.home-page .nav-disclosure-toggle .arrow,
  body.home-page .menu-toggle .arrow,
  body.home-page .hero-cta,
  body.home-page .hero-video-toggle,
  body.home-page .project-buttons button,
  body.home-page .contact-direct>a,
  body.home-page .contact-field :is(input,textarea,select) { transition:none; }
  body.home-page .nav-disclosure-toggle[aria-expanded=true] .arrow { transform:none; }
  body.home-page .contact-field :is(input,textarea,select):focus-visible { box-shadow:none; }
}

/* Publication closure: unpublished editorial content is removed from every visible route. */
body.home-page #noticias,
body.home-page .nav-disclosure:has(a[href*=":4391/"]),
body.home-page .mobile-nav-group:has(a[href*=":4391/"]),
body.home-page .site-footer a[href*=":4391/"] { display:none; }

/* Keep two complete project stories visible on desktop and tablet; the rail still holds all five. */
@media (min-width:700px) {
  body.home-page .project-rail { grid-auto-columns:calc((100% - var(--carousel-gap))/2); }
}

/* Explicit insets keep text away from section rules and colored surfaces. */
body.home-page .project-section > .wrap { padding:16px 8px 0; }
body.home-page .sector-section > .wrap,
body.home-page .contact-section > .wrap { padding:16px 8px; }
body.home-page .news-secondary { padding-left:16px; }
body.home-page .project-controls,
body.home-page .preview > .wrap { padding-top:12px; }
body.home-page .footer-main { padding-top:16px; }
@media (max-width:760px) {
  body.home-page .footer-group { padding-top:12px; }
}

/* Legal reference and enquiry channel states use the same documented surface language. */
.legal-reference:target { padding-top:16px; }
.legal-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 24px; margin:16px 0 0; }
.legal-facts > div { border-top:1px solid var(--dark-line); padding-top:10px; }
.legal-facts dt { color:var(--on-dark-muted); font-size:var(--text-note); line-height:1.5; }
.legal-facts dd { margin:4px 0 0; overflow-wrap:anywhere; }
.legal-status { margin-top:20px; }
.enquiry-preview-note a { color:var(--focus-dark); font-weight:600; }
.enquiry-status { display:grid; gap:12px; }
.enquiry-status[hidden] { display:none; }
.enquiry-status p { margin:0; }
.enquiry-channel-link { justify-self:start; }
.enquiry-channel-note { color:var(--on-dark-muted); font-size:var(--text-note); }
@media (max-width:599px) {
  .legal-facts { grid-template-columns:1fr; }
}

/* Single landing page: the header only points to the sections available here. */
body.home-page.landing-only .landing-nav {
  display:flex;
  align-items:center;
  gap:24px;
  margin-left:auto;
}
body.home-page.landing-only .landing-nav > a {
  color:var(--ink);
  font-size:14px;
  font-weight:500;
  line-height:1.5;
  text-decoration:none;
}
body.home-page.landing-only .landing-nav > a:is(:hover,:focus-visible) {
  color:var(--orange);
  text-decoration:underline;
  text-underline-offset:5px;
}
body.home-page.landing-only .language-switcher {
  display:flex;
  align-items:center;
  gap:0;
}
body.home-page.landing-only .language-switcher a {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:32px;
  min-height:44px;
  color:inherit;
  text-decoration:none;
}
body.home-page.landing-only .language-switcher a[aria-current="page"] {
  color:#c2410c;
  text-decoration:underline;
  text-underline-offset:4px;
}
@media (max-width:959px) {
  body.home-page.landing-only .landing-nav { display:none; }
}
body.home-page.landing-only .sector-section .panel-link {
  display:none;
}
body.home-page.landing-only :is(.project-all, .site-footer nav, .footer-contact, .back-top, .legal-reference) {
  display:none !important;
}
body.home-page.landing-only .site-footer .footer-bottom nav {
  display:flex !important;
}
body.home-page.landing-only .site-footer .legal-reference {
  display:block !important;
  max-width:1248px;
  padding:28px var(--page-gutter);
  color:var(--muted);
}
body.home-page.landing-only .legal-reference + .legal-reference {
  border-top:1px solid var(--line);
}

/* Legal text is available on demand, in the footer control a visitor selects. */
body.home-page.landing-only .site-footer .footer-bottom nav.footer-legal-nav { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; gap:0 24px; width:100%; padding-block:8px; }
body.home-page.landing-only .site-footer .footer-legal-disclosure { min-width:0; margin:0; border-top:1px solid var(--line); }
body.home-page.landing-only .site-footer .footer-legal-disclosure[open] { grid-column:1 / -1; }
body.home-page.landing-only .site-footer .footer-legal-disclosure > summary { display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:54px; padding:14px 0; color:var(--ink); cursor:pointer; list-style:none; }
body.home-page.landing-only .site-footer .footer-legal-disclosure > summary::-webkit-details-marker { display:none; }
body.home-page.landing-only .site-footer .footer-legal-disclosure > summary:focus-visible { outline:2px solid var(--interaction-accent); outline-offset:4px; }
body.home-page.landing-only .site-footer .footer-legal-title { font-size:14px; font-weight:500; line-height:1.35; }
body.home-page.landing-only .site-footer .footer-legal-chevron { width:9px; height:9px; flex:0 0 auto; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg) translateY(-3px); transition:transform var(--dur-feedback) var(--ease-standard); }
body.home-page.landing-only .site-footer .footer-legal-disclosure[open] .footer-legal-chevron { transform:rotate(225deg) translate(-2px,-1px); }
body.home-page.landing-only .site-footer .footer-legal-content { max-width:860px; padding:0 0 28px; }
body.home-page.landing-only .site-footer .footer-legal-content > :first-child { margin-top:0; }
@media (max-width:760px) { body.home-page.landing-only .site-footer .footer-bottom nav.footer-legal-nav { grid-template-columns:1fr; gap:0; } }
@media (prefers-reduced-motion:reduce) { body.home-page.landing-only .site-footer .footer-legal-chevron { transition:none; } }

/* Informational cards retain their content without suggesting unavailable links. */
body.home-page.landing-only :is(.solution-link,.project-cover) { cursor:default; }
body.home-page.landing-only .solution-link:hover .solution-photos img,
body.home-page.landing-only .project-cover:hover > img { transform:none; }
body.home-page.landing-only .hero-scope { grid-column:1; grid-row:2; margin:0; max-width:48ch; font-size:clamp(16px,1.5vw,20px); line-height:1.5; color:var(--white); }
body.home-page.landing-only .hero .actions { grid-row:3; }
body.home-page.landing-only :is(.solution-link,.project-cover):hover :is(h3,strong) { text-decoration:none; }
@media (max-width:599px) {
  body.home-page.landing-only .header-inner { gap:8px; }
  body.home-page.landing-only .header-inner .logo { flex:0 1 156px; min-width:0; }
  body.home-page.landing-only .language-switcher { flex:none; }
}

/* Contact: one clear reading sequence at every form width. */
body.home-page #enquiry-form { width:100%; max-width:640px; }
body.home-page #contact .contact-fields { grid-template-columns:minmax(0,1fr); gap:24px; }
body.home-page #contact .contact-message { grid-column:auto; }
body.home-page #contact .enquiry-heading { border:0; padding:0; margin-bottom:28px; }
body.home-page #contact .enquiry-heading h3 { margin-bottom:8px; }
body.home-page #contact .enquiry-heading>span { font-size:14px; max-width:52ch; }
body.home-page #contact .contact-field label { font-size:15px; }
body.home-page #contact .contact-method-heading { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; }
body.home-page #contact .contact-method-heading label { flex:1 1 120px; }
body.home-page #contact .contact-method-heading select { flex:0 1 auto; width:auto; max-width:100%; min-height:44px; padding:8px 32px 8px 12px; margin:0; font-size:14px; }
body.home-page #contact .contact-value-label { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
body.home-page #contact textarea { min-height:120px; }
body.home-page #contact .enquiry-submit { margin-top:24px; }
body#inicio.home-page #enquiry-review { justify-content:space-between; gap:32px; width:auto; min-height:48px; padding:12px 20px; background:var(--orange); color:var(--ink); }
body#inicio.home-page #enquiry-review .arrow { color:currentColor; }
body#inicio.home-page #enquiry-review:is(:hover,:focus-visible):not(:disabled) { background:var(--white); color:var(--ink); }
body.home-page #contact .enquiry-preview-note { font-size:13px; line-height:1.6; max-width:58ch; margin:16px 0 0; }
@media (max-width:760px) { body.home-page #enquiry-form { max-width:600px; } }
/* Visual refinement 2026-09-30: shared rhythm and header. */
body.home-page { --page-gutter:clamp(20px,4vw,64px); --section-space:clamp(56px,6vw,88px); --home-section-title:clamp(2rem,3.3vw,3rem); --home-card-title:clamp(1.375rem,1.7vw,1.625rem); --header-height:72px; }
body.home-page .wrap { width:min(1248px,calc(100% - 2 * var(--page-gutter))); max-width:none; }
body.home-page :is(.project-section,.sector-section,.contact-section)>.wrap { padding:0; }
body.home-page :is(.section-heading h2,.contact-intro h2) { line-height:1.12; letter-spacing:-.025em; text-wrap:balance; }
body.home-page .section-heading { margin-bottom:32px; padding-bottom:20px; }
body.home-page .header-inner { min-height:72px; gap:24px; }
body.home-page .nav { font-size:15px; }
body.home-page .language-switcher a { font-size:12px; }
body#inicio.home-page .header-inner>.cta-text { padding:10px 16px; background:var(--ink); color:var(--white); }
body#inicio.home-page .header-inner>.cta-text:is(:hover,:focus-visible) { background:var(--surface); color:var(--ink); }
@media(max-width:760px) { body.home-page { --header-height:64px; } body.home-page .header-inner { min-height:64px; gap:12px; } body.home-page .section-heading { margin-bottom:24px; padding-bottom:16px; } }
@media(max-width:359px) { body.home-page .header-inner { gap:8px; } body.home-page .header-inner .logo { width:124px; } }

/* Hero: readable copy over documented work; content determines minimum height. */
body.home-page .hero { min-height:clamp(540px,78svh,760px); --hero-copy-rise:0px; }
body.home-page .hero::before { background:linear-gradient(90deg,rgba(16,20,23,.82),rgba(16,20,23,.66) 52%,rgba(16,20,23,.24)); }
body.home-page .hero-copy { padding-block:72px; gap:24px; }
body.home-page .hero h1 { max-width:18ch; font-size:clamp(44px,4.7vw,68px); line-height:1.06; letter-spacing:-.035em; font-weight:500; }
body.home-page .hero h1 span { margin-top:.15em; font-weight:400; }
body.home-page .hero .hero-scope { max-width:42ch; font-size:18px; line-height:1.5; color:var(--white); }
body#inicio.home-page .hero .hero-cta { background:var(--white); color:var(--ink); padding:14px 20px; min-height:48px; font-size:15px; }
body#inicio.home-page .hero .hero-cta:is(:hover,:focus-visible) { background:var(--orange); color:var(--ink); }
body.home-page .hero-video-toggle { background:rgba(16,20,23,.6); }
@media(max-width:760px) {
 body.home-page .hero { min-height:clamp(520px,78svh,660px); }
 body.home-page .hero::before { background:rgba(16,20,23,.65); }
 body.home-page .hero-copy { padding-block:56px 88px; gap:24px; }
 body.home-page .hero h1 { font-size:clamp(36px,9vw,54px); max-width:18ch; }
 body.home-page .hero .hero-scope { font-size:16px; max-width:34ch; }
 body#inicio.home-page .hero .hero-cta { font-size:14px; padding:12px 16px; gap:16px; }
}
@media(max-height:500px) and (orientation:landscape) { body.home-page .hero { min-height:420px; } body.home-page .hero-copy { padding-block:40px 72px; } }

/* Solutions: four documented services, readable editorial groups. */
body.home-page .solution-heading { margin-top:20px; }
body.home-page .solution-heading h3 { min-height:0; font-size:24px; line-height:1.2; letter-spacing:-.02em; text-wrap:pretty; }
body.home-page .solution-summary { min-height:0; margin-top:12px; font-size:16px; line-height:1.5; color:var(--ink); }
body.home-page .solution-extra { margin-top:12px; font-size:15px; line-height:1.6; color:var(--muted); }
body.home-page .solution-photos { gap:4px; }
body.home-page :is(.project-controls,.solution-controls:not([hidden])) { margin-top:16px; }
body.home-page :is(.project-buttons,.solution-buttons) button { min-width:44px; min-height:44px; }
@media(min-width:1000px) {
 body.home-page .solution-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:40px 32px; }
 body.home-page .solution-link { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1fr); grid-template-rows:auto auto 1fr; column-gap:24px; align-content:start; }
 body.home-page .solution-photos { grid-row:1/4; grid-column:1; align-self:start; aspect-ratio:1; }
 body.home-page .solution-heading { grid-column:2; margin:0; }
 body.home-page .solution-summary,body.home-page .solution-extra { grid-column:2; }
}
@media(max-width:699px) { body.home-page .solution-heading h3 { font-size:23px; } body.home-page .solution-photos { aspect-ratio:4/3; } }

/* Projects: evidence first, with captions outside the photograph. */
body.home-page .project-cover { display:flex; flex-direction:column; align-items:stretch; justify-content:flex-start; padding:0; height:100%; min-height:0; aspect-ratio:auto; color:var(--ink); background:var(--white); border-radius:0; border-bottom:1px solid var(--line); }
body.home-page .project-cover>img { position:relative; inset:auto; z-index:0; flex:none; width:100%; height:auto; aspect-ratio:16/10; object-fit:cover; object-position:center; }
body.home-page .project-cover::before,body.home-page .project-cover-copy::before { content:none; }
body.home-page .project-cover-copy { padding:24px 4px 28px; flex:1; }
body.home-page .project-cover .project-location { color:var(--muted); margin-bottom:10px; font-size:12px; font-weight:600; letter-spacing:.06em; line-height:1.5; }
body.home-page .project-cover h3 { font-size:28px; line-height:1.15; color:var(--ink); margin-bottom:12px; }
body.home-page .project-description-reveal { grid-template-rows:1fr; opacity:1; }
body.home-page .project-cover .project-description { font-size:16px; line-height:1.6; color:var(--muted); max-width:56ch; overflow:visible; }
body.home-page .project-position,body.home-page .solution-position { font-size:14px; color:var(--muted); }
@media(max-width:699px) { body.home-page .project-cover h3 { font-size:26px; } body.home-page .project-cover-copy { padding:20px 0 24px; } }

/* Sectors: navigation supports the content instead of occupying half the section. */
body.home-page .section-heading { padding-inline:0; }
body.home-page .service-tabs { background:transparent; padding:0; border-radius:0; justify-content:flex-start; }
body.home-page .service-tabs button { color:var(--muted); min-height:60px; padding:16px 20px; border-bottom:1px solid var(--line); font-size:16px; }
body.home-page .service-tabs button[aria-selected=true] { background:var(--white); color:var(--ink); font-weight:600; }
body.home-page .service-tabs button[aria-selected=true]::before { background:var(--orange); width:8px; }
body.home-page .service-tabs button:hover { background:var(--white); color:var(--ink); }
body.home-page .service-tabs button:focus-visible { outline-color:var(--ink); }
body.home-page .panel.sector-card { border:0; border-radius:0; }
body.home-page .panel-image { min-height:0; object-fit:cover; }
body.home-page .panel-copy { padding:28px; }
body.home-page .panel-copy h3 { font-size:26px; line-height:1.2; margin-bottom:12px; }
body.home-page .panel-copy p { font-size:16px; line-height:1.6; margin:0; }
body.home-page .sector-enquiry { margin-top:24px; }
body.home-page #sector-select { background:var(--white); color:var(--ink); border:1px solid var(--muted); min-height:52px; }
@media(min-width:700px) { body.home-page .service-browser { grid-template-columns:220px minmax(0,1fr); gap:32px; align-items:start; } }
@media(min-width:1100px) {
 body.home-page .service-browser { grid-template-columns:240px minmax(0,1fr); }
 body.home-page .panel.sector-card { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); min-height:360px; }
 body.home-page .panel-media { height:100%; min-height:360px; aspect-ratio:auto; }
 body.home-page .panel-image { height:100%; }
 body.home-page .panel-copy { align-self:center; }
}
@media(max-width:699px) { body.home-page .panel-copy { padding:24px; } body.home-page .sector-picker:not([hidden]) { margin-bottom:20px; } }

/* Contact: one conversion point, with a readable alternative channel. */
body.home-page .contact-inner { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(40px,6vw,88px); }
body.home-page .contact-intro h2 { max-width:18ch; }
body.home-page .contact-intro>p { max-width:40ch; font-size:16px; line-height:1.65; }
body.home-page .contact-direct { margin-top:32px; padding-top:24px; border-top:1px solid var(--dark-line); gap:8px; }
body.home-page .contact-direct h3 { font-size:15px; line-height:1.5; margin-bottom:4px; color:var(--on-dark-muted); }
body.home-page .contact-direct>a { font-size:20px; line-height:1.5; min-height:44px; display:inline-flex; align-items:center; }
body.home-page #enquiry-form { max-width:600px; }
body#inicio.home-page #enquiry-review .arrow { color:inherit; stroke:currentColor; }
body.home-page header :is(a,button):focus-visible { outline:2px solid var(--ink); outline-offset:4px; }
body.home-page .contact-section :is(a,button,input,select,textarea):focus-visible { outline:2px solid var(--white); outline-offset:4px; }
@media(max-width:1000px) { body.home-page .contact-inner { grid-template-columns:1fr; gap:40px; } body.home-page .contact-intro h2 { max-width:none; } body.home-page .contact-intro h2 br { display:none; } }
@media(max-width:599px) { body.home-page .contact-direct { flex-direction:column; align-items:flex-start; } body.home-page .contact-direct>a { font-size:18px; } }

/* Footer: concise brand signature and legible legal disclosures. */
body.home-page .site-footer .footer-main { padding-block:36px; }
body.home-page .site-footer .footer-brand { flex-direction:row; flex-wrap:wrap; align-items:center; gap:20px 32px; }
body.home-page .site-footer .footer-brand .logo { width:168px; }
body.home-page .site-footer .footer-brand p { font-size:15px; max-width:42ch; }
body.home-page .site-footer .footer-bottom { padding-block:24px; font-size:14px; }
body.home-page .site-footer .footer-legal-disclosure>summary { min-height:52px; font-size:15px; line-height:1.5; padding-block:16px; }
body.home-page .site-footer .footer-legal-content { font-size:14px; line-height:1.65; max-width:68ch; }
body.home-page .site-footer .footer-legal-content p { font-size:14px; line-height:1.65; }
body.home-page .site-footer .legal-facts { gap:16px; }
@media(max-width:900px) { body.home-page.landing-only .site-footer .footer-bottom nav.footer-legal-nav { grid-template-columns:1fr; } }
@media(max-width:599px) { body.home-page .site-footer .footer-brand { flex-direction:column; align-items:flex-start; gap:16px; } }
