:root{color-scheme:dark;--bg:#080f1c;--muted:#a9b7cb;--light:#f0f6ff;--cyan:#65e9eb;--line:#ffffff20}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:86px}body{margin:0;background:var(--bg);color:var(--light);font-family:"Inter","PingFang SC","Microsoft YaHei",sans-serif}a{color:inherit;text-decoration:none}button,select{font:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}.shell{width:max(80%,min(1200px,calc(100% - 80px)));margin-inline:auto}.header{position:sticky;top:0;z-index:3;background:#080f1cf2;border-bottom:1px solid var(--line);backdrop-filter:blur(14px)}.nav,.footer{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:72px}.brand{display:inline-flex;align-items:center;gap:12px;font-size:17px;font-weight:800;letter-spacing:.12em;white-space:nowrap}.brand small{display:block;color:#b4c8df;font-size:9px;letter-spacing:.14em;margin-top:4px}nav{display:flex;gap:34px;color:#c1ccdb;font-size:14px}nav a:hover,.source:hover{color:var(--cyan)}#language{border:1px solid var(--line);background:#141e31;color:var(--light);border-radius:4px;padding:8px 12px;cursor:pointer}#language:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}.hero{background:linear-gradient(90deg,#071322 2%,#071322dd 29%,#07132236 78%),linear-gradient(0deg,#080f1c 0%,transparent 33%),url('assets/port.jpg') center 57%/cover,#12263f}.hero-inner{min-height:580px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding-block:70px}.eyebrow{display:flex;align-items:center;gap:10px;color:#9de9ee;font-size:11px;font-weight:700;letter-spacing:.21em}.eyebrow i{background:#70f5ed;width:7px;height:7px;border-radius:50%;box-shadow:0 0 13px #70f5ed}.hero h1{font-size:clamp(44px,6.15vw,94px);line-height:1.12;margin:24px 0;letter-spacing:-.045em}.hero em{font-style:normal;background:linear-gradient(105deg,#9fffe7,#6fd5f3 48%,#92abff);background-clip:text;color:transparent}.hero p,.about p,.insight p{color:var(--muted);line-height:1.8;margin-top:0}.cta{display:inline-flex;align-items:center;gap:34px;background:#9af4ec;color:#081922;font-size:14px;font-weight:800;padding:15px 20px;margin-top:15px;border-radius:4px}.cta:hover{background:#d9fffd}.business{padding:52px 0 88px}h2{font-size:clamp(31px,4vw,51px);letter-spacing:-.035em;margin:13px 0 28px}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:start}.card{--accent:#a9eaff;--position:0 0;--shade:#183248;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#101a2b}.green{--accent:#9ef3ca;--position:100% 0;--shade:#183b36}.mobility{--accent:#d9bfff;--position:0 100%;--shade:#352a51}.services{--accent:#ffce96;--position:100% 100%;--shade:#483321}.card summary{display:flex;position:relative;min-height:235px;align-items:flex-end;justify-content:space-between;gap:8px;padding:17px;cursor:pointer;list-style:none;isolation:isolate;background:var(--shade)}.card summary::-webkit-details-marker{display:none}.card summary:before,.card summary:after{content:"";position:absolute;inset:0;z-index:-1}.card summary:before{background:url('assets/sectors.jpg') var(--position)/200% 200%}.card summary:after{background:linear-gradient(0deg,#091222 0%,#091222bb 31%,transparent 90%)}.card summary:hover .arrow,.card[open] .arrow{background:var(--accent);color:#080f1c}.card[open] .arrow{transform:rotate(90deg)}.card-content{display:grid;gap:9px}.category{color:var(--accent);font-size:9px;font-weight:700;letter-spacing:.12em}.card strong{font-size:clamp(18px,2vw,24px);line-height:1.2}.card-content>span:last-child{color:#c7d3e7;font-size:11px}.arrow{border:1px solid #ffffff50;border-radius:50%;width:27px;height:27px;flex:0 0 27px;display:grid;place-content:center;transition:.2s}.card>p,.card>a{margin:0;padding:15px 17px;color:var(--muted);font-size:14px;line-height:1.75}.card>a{display:block;padding-top:0;color:var(--accent)}.insight{border-block:1px solid var(--line);background:radial-gradient(ellipse at right,#112e42,#0c1626 65%);padding:76px 0}.insight-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:8%;align-items:center}.metric{border:1px solid #78e8ee46;border-radius:9px;background:#76deea08;padding:28px}.metric>span,.metric small{color:var(--muted);font-size:12px;line-height:1.7}.metric strong{display:block;color:var(--cyan);font-size:clamp(52px,7vw,88px);letter-spacing:-.07em;margin:8px 0}.metric strong span{font-size:.5em}.metric p{margin:0 0 9px}.source{color:var(--cyan);font-size:14px;text-decoration:underline;text-underline-offset:5px}.about{padding-block:78px}.about p{max-width:720px}footer{border-top:1px solid var(--line);color:var(--muted)}.footer{font-size:12px;padding-block:16px}.footer .brand{color:var(--light)}@media(max-width:920px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.shell{width:calc(100% - 34px)}.nav{flex-wrap:wrap;gap:10px;padding:9px 0}.nav nav{order:3;width:100%;justify-content:space-between;gap:8px;font-size:12px;padding:5px 0}.hero{background-position:center,center,60% center}.hero-inner{min-height:460px}.hero p{font-size:14px;max-width:270px}.cards{gap:10px}.card summary{min-height:170px;padding:11px}.card-content{gap:6px}.category{font-size:8px}.card-content>span:last-child{font-size:10px}.arrow{width:21px;height:21px;flex-basis:21px;font-size:12px}.insight-grid{grid-template-columns:1fr;gap:28px}.about,.insight{padding-block:52px}.footer{align-items:flex-start;flex-direction:column}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.gallery {
  padding-block: 80px;
  border-bottom: 1px solid var(--line);
  background: radial-gradient(ellipse at 20% 0, #142a3c, var(--bg) 68%);
}

.gallery-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px 24px;
  margin-bottom: 26px;
}

.gallery-heading h2,
.gallery-heading p {
  margin: 0;
}

.gallery-heading p,
.photo-note {
  color: var(--muted);
  font-size: 13px;
}

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 15px;
}

.gallery-tile {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  grid-column: span 5;
  height: clamp(220px, 28vw, 335px);
  padding: 20px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #12263f;
  color: var(--light);
  text-align: left;
  cursor: zoom-in;
}

.gallery-tile:first-child,
.gallery-tile:last-child {
  grid-column: span 7;
}

.gallery-tile img,
.gallery-tile::after {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.gallery-tile img {
  z-index: -2;
  object-fit: cover;
  transition: transform .35s ease;
}

.gallery-tile::after {
  content: "";
  z-index: -1;
  background: linear-gradient(0deg, #071221f2, #07122145 42%, transparent 73%);
}

.gallery-tile:hover img,
.gallery-tile:focus-visible img {
  transform: scale(1.04);
}

.gallery-label {
  align-self: center;
  margin-top: auto;
  font-size: clamp(17px, 2.3vw, 26px);
  font-weight: 700;
  line-height: 1.2;
}

.gallery-expand {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  border: 1px solid #ffffff65;
  border-radius: 50%;
  background: #08152699;
  color: var(--cyan);
}

.photo-viewer {
  position: fixed;
  width: min(920px, calc(100% - 24px));
  max-height: calc(100dvh - 24px);
  padding: 14px;
  border: 1px solid #83d7ee50;
  border-radius: 12px;
  background: #101b2c;
  color: var(--light);
}

.photo-viewer::backdrop {
  background: #050a13dc;
  backdrop-filter: blur(8px);
}

body:has(.photo-viewer[open]) {
  overflow: hidden;
}

.photo-close {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 10px;
}

.photo-viewer button {
  padding: 7px 12px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: #19273c;
  color: var(--light);
  cursor: pointer;
}

.photo-viewer button:hover {
  color: var(--cyan);
}

.photo-viewer figure {
  margin: 0;
}

#photo-image {
  display: block;
  width: 100%;
  height: min(63dvh, 595px);
  object-fit: contain;
  border-radius: 6px;
  background: #080f1c;
}

.photo-viewer figcaption {
  padding: 12px 2px;
}

.photo-viewer figcaption p {
  margin: 0;
}

#photo-title {
  margin-bottom: 4px;
  font-weight: 750;
}

.photo-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 740px) {
  .nav nav { gap: 16px; }
}

@media (max-width: 600px) {
  .gallery { padding-block: 52px; }
  .gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .gallery-tile,
  .gallery-tile:first-child,
  .gallery-tile:last-child { grid-column: auto; height: clamp(133px, 34vw, 205px); padding: 10px; gap: 5px; }
  .gallery-label { font-size: 15px; }
  .gallery-expand { width: 24px; height: 24px; flex-basis: 24px; font-size: 12px; }
  .nav nav { gap: 6px; }
  #photo-image { height: min(52dvh, 595px); }
}

.brand-logo {
  display: block;
  width: 48px;
  height: 48px;
  flex: 0 0 auto;
  object-fit: contain;
}

#contact {
  background: radial-gradient(ellipse at 90% 0, #142c41, var(--bg) 72%);
}

.contact {
  display: grid;
  grid-template-columns: minmax(170px, 0.8fr) minmax(0, 1.6fr);
  align-items: start;
  gap: 32px;
  padding-block: 56px;
}

.contact h2 {
  color: var(--light);
  margin-bottom: 0;
}

.contact-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #101a2b;
}

.contact-details > div {
  min-width: 0;
  padding: 18px 22px;
}

.contact-details > div:first-child {
  grid-column: 1 / -1;
  border-bottom: 1px solid var(--line);
}

.contact-details > div:last-child {
  border-inline-start: 1px solid var(--line);
}

.contact-details dt {
  margin-bottom: 6px;
  color: var(--light);
  font-size: 13px;
  font-weight: 700;
}

.contact-details dd {
  margin: 0;
  overflow-wrap: anywhere;
  font-size: 14px;
  line-height: 1.6;
}

.office-address {
  font-style: normal;
  white-space: pre-line;
}

.contact-details [hidden] { display: none; }

.map-directions {
  display: inline-block;
  margin-top: 10px;
}

.contact-details a {
  color: var(--cyan);
  text-decoration: underline;
  text-underline-offset: 4px;
}

.contact-details a:hover {
  color: var(--light);
}

#contact .footer {
  border-top: 1px solid var(--line);
}

@media (max-width: 1020px) {
  html { scroll-padding-top: 134px; }
  .nav { flex-wrap: wrap; gap: 8px 12px; padding-block: 8px; }
  .nav nav { order: 3; flex: 1 0 100%; flex-wrap: wrap; justify-content: space-between; gap: 6px 9px; padding-block: 5px; font-size: 12px; }
  .brand-logo { width: 42px; height: 42px; }
}

@media (max-width: 600px) {
  .contact { grid-template-columns: 1fr; gap: 22px; padding-block: 44px; }
  .contact-details > div { padding: 14px; }
}

.brand > span { min-width: 0; }
.brand [data-copy="brand"] { display: block; max-width: min(210px, 35vw); overflow: hidden; text-overflow: ellipsis; }
