:root{--control-radius:6px;--panel-radius:8px}
/* A light navigation, restrained corners and uninterrupted button surfaces. */
header,header.scrolled{border-bottom:1px solid #dae4eb88;box-shadow:0 3px 20px #12324a05}nav{background:none;padding:0;gap:4px;color:var(--ink);border-radius:0}nav a,.nav-projects>summary{padding:12px 14px;min-height:44px;font-size:13px;font-weight:700;color:var(--ink);border-radius:var(--control-radius);line-height:1.5;transition:background .2s,color .2s}nav a:before,nav a:after,.nav-projects>summary:before,.nav-projects>summary:after{display:none!important}nav a:hover,nav a.active,.nav-projects>summary:hover,.nav-projects>summary.active,.nav-projects[open]>summary{background:#edf5fb!important;color:var(--blue)}.nav-projects>summary>span{color:var(--blue);font-size:11px}.projects-menu,.project-submenu,.language-menu{border:1px solid #dbe6ed;border-radius:var(--panel-radius);padding:8px;box-shadow:0 12px 32px #12324a14}.projects-menu{top:calc(100% + 10px)}.project-submenu{border-left:1px solid #dbe6ed}.nav-branch>summary,.project-submenu button,.language-menu button{border-radius:var(--control-radius)}.nav-branch>summary{font-size:14px;padding:13px;font-weight:600}.project-submenu button{padding:12px;font-size:13px}.nav-branch[open]>summary,.nav-branch>summary:hover,.project-submenu button:hover{background:#edf5fb}.project-submenu button:after{font-size:15px;opacity:.7}.language-dropdown>summary{border:1px solid #dbe6ed;border-radius:var(--control-radius);background:#fff;padding:10px;min-height:42px}.language-dropdown[open]>summary{background:var(--pale);border-color:#bbd3e4}.language-menu{width:112px}.language-menu button{padding:10px 8px}.icon-button{border-radius:var(--control-radius)}
.button,.button.compact{border-radius:var(--control-radius);padding:14px 22px;gap:22px;min-height:54px;background:var(--blue);border:1px solid var(--blue);box-shadow:0 3px 8px #0f4e8810;transition:background .2s,border-color .2s,box-shadow .2s}.button>span,.button.compact>span{width:20px;min-width:20px;height:24px;border:0;background:none!important;border-radius:0;font-size:22px;line-height:1;transform:none!important;color:inherit!important}.button:hover{background:#1266a7;border-color:#1266a7;box-shadow:0 6px 16px #0f4e8820;transform:none}.button.green{background:var(--green);border-color:var(--green);color:var(--ink)}.button.green:hover{background:#92cf5d;border-color:#92cf5d}.button.compact{padding:11px 17px;min-height:46px;font-size:12px;gap:17px}.button.compact>span{font-size:20px}.text-button{gap:14px;padding:9px 0;color:var(--blue);border-bottom:1px solid #1772b835;transition:border-color .2s,color .2s}.text-button>span,.news-card .text-button>span{border:0;background:none!important;width:20px;height:24px;border-radius:0;color:inherit!important;font-size:22px}.text-button:hover{border-color:var(--blue);color:var(--deep)}.text-button.white{color:#fff;border-bottom-color:#ffffff55}.text-button.white:hover{border-bottom-color:#fff;color:#fff}#projects .project-detail-button{border-radius:var(--control-radius);padding:15px 20px;min-height:54px;gap:20px;background:#ffffff08;transition:background .2s,border-color .2s}#projects .project-detail-button:hover{background:#ffffff14;border-color:#c3e89d}#projects .project-detail-button span{width:20px;height:24px;min-width:20px;background:none!important;border:0;border-radius:0;color:var(--green)!important}#projects .project-tab,#projects .project-topics button{border-radius:var(--control-radius)}.contact-form-bottom .button{padding:14px 22px}.news-tabs button{border-radius:var(--control-radius) var(--control-radius) 0 0}.search-result{border-radius:var(--control-radius)}.menu-button{border-radius:var(--control-radius)}
.ecosystem-visual,.project-photo,#projects .project-photo,.news-image,.advantage-card,.trust-workforce,.contact-form-card,dialog{border-radius:var(--panel-radius)}.advantage-card-top svg{border-radius:var(--control-radius)}.contact-form-card input,.contact-form-card select,.contact-form-card textarea,form input,form select,form textarea{border-radius:var(--control-radius)}.language-notice{border-radius:var(--control-radius)}
@media(max-width:1200px){nav a,.nav-projects>summary{padding:11px 10px;font-size:12px}nav{gap:2px}}
@media(max-width:1100px){.mobile-nav{background:#fff;padding:24px;gap:6px;border-radius:0}.mobile-nav a,.mobile-nav .nav-projects>summary{padding:15px;font-size:18px;border-bottom:0;border-radius:var(--control-radius);color:var(--ink)}.projects-menu,.project-submenu{border:0;box-shadow:none;border-radius:var(--control-radius);background:var(--neutral)}.mobile-nav .nav-projects[open]>summary{background:var(--pale)!important}.nav-branch>summary{font-size:15px}}
@media(max-width:760px){.button{font-size:14px;padding:13px 19px;gap:20px}.contact-form-bottom .button{padding:14px 19px}.contact-form-card{border-radius:var(--panel-radius)}.language-dropdown>summary{min-height:40px}.project-submenu button{font-size:14px}}
/* Shared vector directions: precise strokes at every screen size. */
.direction-icon{display:inline-block;width:24px;height:24px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;pointer-events:none}
.button>span,.text-button>span,.search-result>span{display:flex;align-items:center;justify-content:center}
.button .direction-icon,.text-button .direction-icon{width:22px;height:22px;transition:transform .22s ease}
.button:hover .direction-icon,.text-button:hover .direction-icon{transform:translateX(3px)}
.button[type=submit]:hover .direction-icon{transform:translateY(2px)}
.ecosystem-row>span:last-child{display:flex;align-items:center;justify-content:center;transform:none!important}.ecosystem-row>span:last-child .direction-icon{width:26px;height:26px;transition:transform .22s}.ecosystem-row.active>span:last-child .direction-icon,.ecosystem-row:hover>span:last-child .direction-icon{transform:translateX(4px)}
header summary>span:has(.chevron-icon){display:flex;align-items:center;justify-content:center}.chevron-icon{width:16px;height:16px;stroke-width:1.8}.contact-decor .direction-icon{width:80px;height:80px;stroke-width:1}.office .direction-icon,.project-image-credit .direction-icon{width:15px;height:15px;margin-left:4px}.footer-bottom a{display:flex;align-items:center;justify-content:center}.footer-bottom a .direction-icon{width:20px;height:20px}
.project-submenu button:after{content:'';display:block;width:20px;height:20px;background:currentColor;mask:url('../arrow-right.svg') center/contain no-repeat;-webkit-mask:url('../arrow-right.svg') center/contain no-repeat;transition:transform .2s}.project-submenu button:hover:after{transform:translateX(3px)}
@media(prefers-reduced-motion:reduce){.direction-icon{transition:none!important;transform:none!important}.project-submenu button:after{transition:none}}
/* Controls retain their surfaces without a light sweep. */
.button,.text-button,.project-detail-button,button:not(.marker):not(.close):not(.ecosystem-row):not(#menu-open){position:relative;isolation:isolate;overflow:hidden}
#advantages .advantage-card{position:relative;isolation:isolate;overflow:hidden;transition:background-color .22s ease}
#advantages .advantage-card::before{content:none;display:none}
#advantages .advantage-card::after{content:none;display:none}
#advantages .advantage-card:hover{transform:none;background:#edf3f7;box-shadow:none}

#advantages .advantage-card-top svg{transition:none}#advantages .advantage-card:hover .advantage-card-top svg{transform:none}

@media(prefers-reduced-motion:reduce){.button::before,.text-button::before,.project-detail-button::before,button::before{animation:none!important;display:none}#advantages .advantage-card,#advantages .advantage-card *{transition:none!important}#advantages .advantage-card:hover,#advantages .advantage-card:hover svg{transform:none}#advantages .advantage-card::before,#advantages .advantage-card::after{content:none;display:none}}
#advantages .advantage-card.visible{animation-fill-mode:backwards}
/* Location feedback keeps the selected project unchanged until activation. */
#projects .marker{isolation:isolate;overflow:visible;outline-offset:5px}
#projects .marker::before,#projects .marker::after{content:'';position:absolute;inset:7px;border:1px solid var(--green);border-radius:50%;opacity:0;pointer-events:none}
#projects .marker i{transition:transform .25s ease,background .25s,box-shadow .25s}
#projects .marker:is(:hover,:focus-visible) i{transform:scale(1.22);background:var(--green);box-shadow:0 0 0 1px var(--green),0 0 0 9px #7fc34330,0 0 22px #7fc34365}
#projects .marker:is(:hover,:focus-visible)::before{animation:location-wave 1.8s ease-out infinite}#projects .marker:is(:hover,:focus-visible)::after{animation:location-wave 1.8s .6s ease-out infinite}
#projects .map-callout path{transition:stroke .25s,stroke-width .25s}#projects .map-callout text{transition:fill .25s,filter .25s}
#projects .map:has(.marker-0:is(:hover,:focus-visible)) .callout-0 path,#projects .map:has(.marker-1:is(:hover,:focus-visible)) .callout-1 path,#projects .map:has(.marker-2:is(:hover,:focus-visible)) .callout-2 path,#projects .map-callout:hover path{stroke:var(--green);stroke-width:1.6}
#projects .map:has(.marker-0:is(:hover,:focus-visible)) .callout-0 text,#projects .map:has(.marker-1:is(:hover,:focus-visible)) .callout-1 text,#projects .map:has(.marker-2:is(:hover,:focus-visible)) .callout-2 text,#projects .map-callout:hover text{fill:#c7ee9e;filter:drop-shadow(0 0 6px #7fc34355)}
#projects .map:has(.callout-0:hover) .marker-0 i,#projects .map:has(.callout-1:hover) .marker-1 i,#projects .map:has(.callout-2:hover) .marker-2 i{transform:scale(1.22);background:var(--green);box-shadow:0 0 0 1px var(--green),0 0 0 9px #7fc34330,0 0 22px #7fc34365}
@keyframes location-wave{0%{transform:scale(.8);opacity:.65}100%{transform:scale(2.15);opacity:0}}
@media(prefers-reduced-motion:reduce){#projects .marker::before,#projects .marker::after{animation:none!important}#projects .marker i,#projects .map-callout path,#projects .map-callout text{transition:none}#projects .marker:is(:hover,:focus-visible) i{transform:none}}
#projects .marker{border-radius:50%}
/* Project submenu direction hints appear on interaction. */
.project-submenu button::after{opacity:0;transform:translateX(-4px);transition:opacity .2s,transform .2s}.project-submenu button:is(:hover,:focus-visible)::after{opacity:1;transform:translateX(3px)}
.nav-branch>summary>span{opacity:0;transition:opacity .2s}.nav-branch:hover>summary>span,.nav-branch>summary:focus-visible>span{opacity:1}
#about .trust-hero-number strong,#about .trust-stat strong,#about .trust-workforce strong{font-weight:800}#about .trust-hero-number sup,#about .trust-stat sup,#about .trust-workforce sup{font-weight:700}
@media(prefers-reduced-motion:reduce){.project-submenu button::after,.nav-branch>summary>span{transition:none}}
#ecosystem .ecosystem-row.active>span:last-child .direction-icon,#ecosystem .ecosystem-row:hover>span:last-child .direction-icon{transform:translate(3px,-3px)}
#projects .project-photo{aspect-ratio:4/3;height:auto}
@media(max-width:760px){#projects .project-photo{aspect-ratio:3/2}}
@media(prefers-reduced-motion:reduce){#ecosystem .ecosystem-row .direction-icon{transform:none!important}}
:root{--font:'Inter',Arial,sans-serif}
#projects .project-explorer{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:48px}#projects .project-photo{min-height:350px}
#ecosystem .ecosystem-row>span:last-child .direction-icon{opacity:0;transform:translate(-3px,3px);transition:opacity .22s,transform .22s}
#ecosystem .ecosystem-row:hover>span:last-child .direction-icon,#ecosystem .ecosystem-row:focus-visible>span:last-child .direction-icon{opacity:1;transform:translate(3px,-3px)}
@media(max-width:1100px){#projects .project-explorer{gap:32px}#projects .project-photo{min-height:280px}}
@media(max-width:760px){#projects .project-explorer{grid-template-columns:1fr;gap:32px}#projects .map{max-width:600px}#projects .project-photo{min-height:0}}
@media(prefers-reduced-motion:reduce){#ecosystem .ecosystem-row .direction-icon{transition:none!important;transform:none!important}}





/* Fine circular frame and solid directional head from the supplied reference. */
.direction-icon .arrow-ring{fill:none;stroke:currentColor;stroke-width:.7}.direction-icon .arrow-head{fill:currentColor;stroke:none}
.button:has(.arrow-ring)>span,.button.compact:has(.arrow-ring)>span,.text-button:has(.arrow-ring)>span{width:30px;min-width:30px;height:30px}
.button .direction-icon:has(.arrow-ring),.text-button .direction-icon:has(.arrow-ring){width:30px;height:30px}.button.compact .direction-icon:has(.arrow-ring){width:27px;height:27px}
#ecosystem .ecosystem-row>span:last-child .direction-icon{width:32px;height:32px}
.project-submenu button:after{width:24px;height:24px}
#ecosystem .ecosystem-row:hover>span:last-child .direction-icon,#ecosystem .ecosystem-row:focus-visible>span:last-child .direction-icon{transform:translateX(3px)}
/* Room for the complete circular arrow and its hover translation. */
.button:has(.arrow-ring)>span,.button.compact:has(.arrow-ring)>span,.text-button:has(.arrow-ring)>span{width:38px;min-width:38px;flex:0 0 38px;overflow:visible}.text-button:has(.arrow-ring){padding-right:4px}.direction-icon{overflow:visible}.project-submenu button:after{flex-shrink:0}.project-submenu button{padding-right:16px}
/* Subtle copy movement keeps button dimensions and arrow space unchanged. */
.button-label{display:inline-block;min-width:0;font:inherit;color:inherit;text-align:inherit;transform:translateX(0);transition:transform .24s cubic-bezier(.22,.61,.36,1)}
:is(.button,.text-button,.project-detail-button,.project-topics button,.news-tabs button,.project-submenu button):is(:hover,:focus-visible)>.button-label{transform:translateX(4px)}
@media(prefers-reduced-motion:reduce){.button-label{transition:none!important;transform:none!important}}
/* News detail actions keep text and arrow motion without a light sweep. */
.news-card .text-button::before,.news-detail-link::before{content:none!important;animation:none!important;background:none!important}
#news .news-card .text-button>.button-label,.news-page .news-detail-link>.button-label{transform:none!important;transition:font-weight .2s ease;font-weight:500}
#news .news-card .text-button:is(:hover,:focus-visible)>.button-label,.news-page .news-detail-link:is(:hover,:focus-visible)>.button-label{font-weight:600}
#news .news-card .text-button>span,.news-page .news-detail-link>span{transform:none!important}
#news .news-card .text-button .direction-icon,.news-page .news-detail-link .direction-icon{transform:none!important;overflow:hidden}
#news .news-card .text-button:is(:hover,:focus-visible) .arrow-head,.news-page .news-detail-link:is(:hover,:focus-visible) .arrow-head{animation:news-arrow-pass .55s cubic-bezier(.22,.61,.36,1) both}
@keyframes news-arrow-pass{0%{transform:translateX(0);opacity:1}42%{transform:translateX(18px);opacity:0}43%{transform:translateX(-18px);opacity:0}100%{transform:translateX(0);opacity:1}}
@media(prefers-reduced-motion:reduce){#news .news-card .text-button .arrow-head,.news-page .news-detail-link .arrow-head{animation:none!important}}
/* Consistent location labels: name above the rule, province below it. */
#projects .map-callout .location-name{font-family:var(--font);font-size:16px;font-weight:600;letter-spacing:0;text-anchor:start}
#projects .map-callout .province-label{font-family:var(--font);font-size:10px;font-weight:600;letter-spacing:1px;text-anchor:start;fill:#acc9dc}
#projects .map-callout .location-rule{stroke:#90b5ce;stroke-width:.9;transition:stroke .25s,stroke-width .25s}
#projects .map-callout.active .location-rule{stroke:var(--green)}
#projects .map-callout:hover .location-rule,#projects .map:has(.marker-0:is(:hover,:focus-visible)) .callout-0 .location-rule,#projects .map:has(.marker-1:is(:hover,:focus-visible)) .callout-1 .location-rule,#projects .map:has(.marker-2:is(:hover,:focus-visible)) .callout-2 .location-rule{stroke:var(--green);stroke-width:1.6}
#projects .map-callout .location-connector{fill:none;stroke:#90b5ce;stroke-width:.9;stroke-linejoin:round;transition:stroke .25s,stroke-width .25s}
#projects .map-callout.active .location-connector{stroke:var(--green)}
#projects .map-callout:hover .location-connector,#projects .map:has(.marker-0:is(:hover,:focus-visible)) .callout-0 .location-connector,#projects .map:has(.marker-1:is(:hover,:focus-visible)) .callout-1 .location-connector,#projects .map:has(.marker-2:is(:hover,:focus-visible)) .callout-2 .location-connector{stroke:var(--green);stroke-width:1.6}
