:root{
  --porcelain:#F2F3F0;   /* page */
  --white:#FBFBFA;       /* raised surfaces, inputs */
  --navy:#16233A;        /* ink, dark sections */
  --navy-2:#22324D;
  --slate:#56607A;       /* secondary text */
  --jute:#B08A52;        /* accent on light */
  --jute-lt:#C9A66B;     /* accent on navy */
  --line:rgba(22,35,58,.14);
  --line-dk:rgba(242,243,240,.16);
  --display:"Source Serif 4",Georgia,"Times New Roman",serif;
  --body:"Hanken Grotesk",system-ui,sans-serif;
  --gutter:clamp(20px,5vw,56px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--porcelain);color:var(--navy);font:400 1.0625rem/1.65 var(--body);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.12;letter-spacing:-.015em;margin:0;font-optical-sizing:auto}
p{margin:0}
.wrap{max-width:1240px;margin:0 auto;padding:0 var(--gutter)}
:focus-visible{outline:2px solid var(--jute);outline-offset:3px}
.skip{position:absolute;left:-999px;top:8px;background:var(--navy);color:#fff;padding:8px 14px;z-index:100}
.skip:focus{left:8px}

/* header */
.header{position:sticky;top:0;z-index:20;background:rgba(242,243,240,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.header__inner{display:flex;align-items:center;justify-content:space-between;height:76px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font:600 1.25rem var(--display);letter-spacing:-.005em}
.brand img{width:30px;height:30px}
.nav{display:flex;align-items:center;gap:36px}
.nav a:not(.btn){text-decoration:none;font-size:.97rem;color:var(--slate);padding:6px 0;position:relative;transition:color .2s}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--jute);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.nav a:not(.btn):hover,.nav a[aria-current]{color:var(--navy)}
.nav a:not(.btn):hover::after,.nav a[aria-current]::after{transform:scaleX(1)}
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:999px;padding:8px 18px;font:500 .95rem var(--body);color:var(--navy);cursor:pointer}

/* buttons */
.btn{display:inline-block;background:var(--navy);color:var(--porcelain);text-decoration:none;font:500 .98rem var(--body);letter-spacing:.01em;padding:15px 30px;border:1px solid var(--navy);border-radius:999px;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.btn:hover{background:var(--navy-2);border-color:var(--navy-2)}
.btn--small{padding:10px 20px;font-size:.93rem}
.btn--ghost{background:transparent;color:var(--navy);border-color:rgba(22,35,58,.35)}
.btn--ghost:hover{background:transparent;border-color:var(--navy)}
.btn--light{background:var(--porcelain);color:var(--navy);border-color:var(--porcelain)}
.btn--light:hover{background:var(--jute-lt);border-color:var(--jute-lt);color:var(--navy)}
.actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:40px}

/* hero */
.hero{padding:clamp(56px,9vw,128px) 0 clamp(64px,9vw,120px)}
.hero__grid{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(40px,6vw,96px);align-items:center}
.hero h1{font-size:clamp(2.4rem,4.8vw,4.25rem);line-height:1.08;letter-spacing:-.02em;max-width:12em}
.lede{font-size:1.18rem;line-height:1.6;max-width:32em;margin-top:28px;color:var(--slate)}

/* trade lanes: the one memorable element */
.lanes{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:clamp(70px,12vw,190px);background:var(--navy);color:var(--porcelain);padding:clamp(28px,3.4vw,48px);border-radius:4px;box-shadow:0 40px 80px -40px rgba(22,35,58,.55)}
.lanes h2{font:400 .9rem var(--body);letter-spacing:.02em;color:var(--jute-lt);margin-bottom:22px}
.lanes ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}
.lanes li{white-space:nowrap;font:500 1.3rem var(--display);line-height:1.3}
.lanes__col--to{text-align:right}
.lanes ul{justify-content:center;height:calc(100% - 44px)}
address{font-style:normal}
.lanes__svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.lanes__svg path{fill:none;stroke:var(--jute-lt);stroke-opacity:.45;stroke-width:.8;stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.8s cubic-bezier(.4,0,.2,1) forwards}
.lanes__svg circle{fill:var(--jute-lt)}
@keyframes draw{to{stroke-dashoffset:0}}

/* photography */
figure{margin:0}
.band img{width:100%;height:clamp(280px,46vw,600px);object-fit:cover;background:#cfd4d4}
.band figcaption,.page-photo figcaption{padding-top:16px;font-size:.93rem;color:var(--slate)}
.page-photo{margin-top:clamp(40px,6vw,72px)}
.page-photo img{width:100%;aspect-ratio:21/9;object-fit:cover;object-position:center 35%;border-radius:2px;background:#cfd4d4}
.story__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,7vw,112px);align-items:center}
.story__img img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:2px;background:#cfd4d4}
.story__text h2{font-size:clamp(2rem,3.6vw,3rem);letter-spacing:-.02em;margin-bottom:28px;max-width:12em}
.story__text p{color:var(--slate);max-width:32em;margin-bottom:18px}
.story__text .btn{margin-top:18px}
.section--flush{padding-top:0}

/* sections */
.section{padding:clamp(72px,10vw,136px) 0}
.section--dark{background:var(--navy);color:var(--porcelain)}
.section__head{display:grid;grid-template-columns:1fr 1fr;gap:24px 64px;align-items:end;margin-bottom:56px}
.section__head h2{font-size:clamp(2rem,3.6vw,3rem);letter-spacing:-.02em}
.section__head p{max-width:30em;color:var(--slate);justify-self:end}
.section--dark .section__head p{color:rgba(242,243,240,.7)}
.page-head{padding:clamp(64px,9vw,120px) 0 0}
.page-head h1{font-size:clamp(2.6rem,5vw,4.25rem);letter-spacing:-.02em}
.page-head .lede{margin-top:20px}
.page-head + .section{padding-top:clamp(48px,6vw,80px)}

/* category rows */
.cat-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--navy)}
.cat-row{display:grid;grid-template-columns:120px minmax(220px,.9fr) 1.4fr auto;gap:32px;align-items:center;padding:22px 0;border-bottom:1px solid var(--line);text-decoration:none}
.cat-row__title{font:600 clamp(1.3rem,2vw,1.65rem)/1.25 var(--display);transition:color .2s}
.cat-row__items{color:var(--slate)}
.cat-row__go{font-size:.95rem;color:var(--jute);white-space:nowrap}
.cat-row:hover .cat-row__title{color:var(--jute)}
.cat-row__img{display:block;aspect-ratio:4/3;overflow:hidden;border-radius:2px;background:#dde0dc}
.cat-row__img img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.cat-row:hover .cat-row__img img{transform:scale(1.06)}

/* services */
.service-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);column-gap:clamp(32px,4vw,64px)}
.service-list li{padding:30px 0 34px;border-top:1px solid var(--line-dk);scroll-margin-top:100px}
.service-list h3{font-size:1.3rem;line-height:1.2;margin-bottom:12px}
.service-list p{max-width:30em;color:rgba(242,243,240,.72);font-size:1rem}
.service-list--light li{border-color:var(--line)}
.service-list--light p{color:var(--slate)}
.service-list--light li:target h3{color:var(--jute)}

/* process */
.process{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(24px,3vw,48px)}
.process li{border-top:1px solid var(--navy);padding-top:24px}
.step__n{display:block;font:600 3rem/1 var(--display);color:var(--jute);margin-bottom:22px}
.process h3{font-size:1.25rem;margin-bottom:10px}
.process p{color:var(--slate);font-size:1rem}

/* CTA */
.cta{padding:0 var(--gutter) clamp(72px,10vw,128px)}
.cta__inner.wrap{max-width:calc(1240px - 2 * var(--gutter))}
.cta__inner{display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap;background:var(--navy);color:var(--porcelain);padding:clamp(40px,6vw,80px) clamp(28px,6vw,80px);border-radius:4px}
.cta h2{font-size:clamp(2rem,3.8vw,3.2rem);max-width:14em;letter-spacing:-.02em}

/* products */
.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:64px}
.filters button{font:500 .93rem var(--body);padding:9px 18px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--slate);cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.filters button:hover{border-color:var(--navy);color:var(--navy)}
.filters button[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:var(--porcelain)}
.pgroup{display:grid;grid-template-columns:minmax(240px,1fr) 2.2fr;gap:24px 64px;padding:40px 0 48px;border-top:1px solid var(--navy);scroll-margin-top:100px}
.pgroup[hidden]{display:none}
.pgroup h2{font-size:clamp(1.6rem,2.6vw,2.2rem)}
.pgroup__items{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));column-gap:48px}
.pgroup__items li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:16px 0;border-bottom:1px solid var(--line);font-size:1.05rem}
.pgroup__items a,.pgroup__note a{color:var(--jute);font-size:.93rem;text-decoration:none;white-space:nowrap}
.pgroup__items a:hover,.pgroup__note a:hover{text-decoration:underline;text-underline-offset:3px}
.pgroup__note{margin-top:20px;color:var(--slate);font-size:.97rem}
.pgroup__img{margin:24px 0 0;aspect-ratio:4/3;overflow:hidden;border-radius:2px;background:#dde0dc}
.pgroup__img img{width:100%;height:100%;object-fit:cover}

/* contact */
.contact__grid{display:grid;grid-template-columns:minmax(280px,1fr) 1.7fr;gap:clamp(32px,5vw,72px);align-items:start}
.contact__side{background:var(--navy);color:var(--porcelain);padding:clamp(28px,3.5vw,48px);border-radius:4px}
.contact__side h2{font-size:1.35rem;margin-bottom:20px}
.contact__side h2:not(:first-child){margin-top:40px;padding-top:32px;border-top:1px solid var(--line-dk)}
.contact__list{margin:0;display:grid;gap:4px}
.contact__list dt{font-size:.88rem;color:var(--jute-lt);margin-top:14px}
.contact__list dt:first-child{margin-top:0}
.contact__list dd{margin:0;color:rgba(242,243,240,.88)}
.contact__list a{color:var(--porcelain);text-underline-offset:3px;text-decoration-color:rgba(242,243,240,.4)}
.contact__list a:hover{text-decoration-color:var(--jute-lt)}
.contact__steps{margin:0;padding:0;list-style:none;counter-reset:s;display:grid;gap:16px}
.contact__steps li{counter-increment:s;display:grid;grid-template-columns:28px 1fr;gap:12px;color:rgba(242,243,240,.8);font-size:.98rem}
.contact__steps li::before{content:counter(s);font:600 1.1rem/1.4 var(--display);color:var(--jute-lt)}

.form{display:grid;grid-template-columns:1fr 1fr;gap:22px 24px;background:var(--white);border:1px solid var(--line);border-radius:4px;padding:clamp(28px,4vw,52px)}
.form__title{grid-column:1/-1;font-size:clamp(1.6rem,2.4vw,2rem)}
.form__hint{grid-column:1/-1;margin-top:-14px;font-size:.9rem;color:var(--slate)}
.form label{display:flex;flex-direction:column;gap:8px;font-size:.92rem;font-weight:500;color:var(--navy)}
.form__wide{grid-column:1/-1}
.form input,.form select,.form textarea{width:100%;font:400 1rem var(--body);padding:12px 14px;border:1px solid rgba(22,35,58,.22);border-radius:4px;background:var(--porcelain);color:var(--navy);transition:border-color .15s,box-shadow .15s,background .15s}
.form input::placeholder,.form textarea::placeholder{color:#8a91a3}
.form input:hover,.form select:hover,.form textarea:hover{border-color:rgba(22,35,58,.4)}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;background:#fff;border-color:var(--navy);box-shadow:0 0 0 3px rgba(176,138,82,.28)}
.form select{appearance:none;-webkit-appearance:none;padding-right:40px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2316233A' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}
.form textarea{resize:vertical;min-height:130px}
.form__actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding-top:6px}
.form__status{color:var(--slate);font-size:.95rem}
.form__status:empty{display:none}

/* footer */
.footer{background:var(--navy);color:var(--porcelain);padding-top:80px}
.footer__grid{display:grid;grid-template-columns:1.6fr .8fr 1.3fr 1.3fr;gap:48px}
.footer__brand{font:600 1.6rem var(--display);margin-bottom:14px}
.footer__text{max-width:28em;color:rgba(242,243,240,.65)}
.footer h2{font:500 .9rem var(--body);letter-spacing:.02em;color:var(--jute-lt);margin-bottom:16px}
.footer ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;color:rgba(242,243,240,.8)}
.footer a{text-decoration:none}
.footer a:hover{color:var(--jute-lt)}
.footer__legal{margin-top:64px;padding-top:24px;padding-bottom:32px;border-top:1px solid var(--line-dk);font-size:.88rem;color:rgba(242,243,240,.5)}

@media (max-width:1000px){
  .service-list{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:900px){
  .hero__grid,.contact__grid{grid-template-columns:1fr}
  .process{grid-template-columns:1fr 1fr}
  .section__head{grid-template-columns:1fr}
  .section__head p{justify-self:start}
  .pgroup{grid-template-columns:1fr}
  .story__grid{grid-template-columns:1fr}
  .story__img img{aspect-ratio:4/3}
  .page-photo img{aspect-ratio:3/2}
  .contact__side{position:static;order:2}
  .footer__grid{grid-template-columns:1fr 1fr}
  .footer__grid>div:first-child{grid-column:1/-1}
}
@media (max-width:760px){
  .nav-toggle{display:block}
  .nav{display:none;position:absolute;top:76px;left:0;right:0;background:var(--porcelain);border-bottom:1px solid var(--line);flex-direction:column;align-items:flex-start;padding:24px var(--gutter);gap:18px}
  .nav.is-open{display:flex}
  .service-list{grid-template-columns:1fr}
  .cat-row{grid-template-columns:88px 1fr auto;gap:6px 16px;padding:20px 0}
  .cat-row__img{grid-row:1/3}
  .cat-row__items{grid-column:2/-1;grid-row:2;font-size:.93rem}
  .lanes{gap:24px}
  .lanes li{font-size:1.15rem}
  .lanes__svg{display:none}
  .lanes ul{height:auto}
  .form{grid-template-columns:1fr}
}
@media (max-width:480px){.process{grid-template-columns:1fr}}
/* credentials */
.creds{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--white)}
.creds__grid{display:grid;grid-template-columns:minmax(220px,.8fr) 2.2fr;gap:32px clamp(32px,5vw,72px);padding-top:clamp(40px,5vw,64px);padding-bottom:clamp(40px,5vw,64px);align-items:start}
.creds__intro h2{font-size:clamp(1.5rem,2.4vw,1.9rem)}
.creds__intro p{margin-top:10px;color:var(--slate);font-size:.97rem;max-width:22em}
.creds__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:32px clamp(24px,4vw,56px)}
.cred{display:grid;grid-template-columns:40px 1fr;gap:18px;align-items:start}
.cred__icon{color:var(--jute)}
.cred__title{font-size:1.15rem;line-height:1.3}
.cred__doc{margin-top:6px;color:var(--slate);font-size:.95rem}
.cred__no{margin-top:12px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--navy)}
.cred__no span{display:block;margin-bottom:2px;font-weight:400;font-size:.85rem;color:var(--slate);letter-spacing:0}
.cred__issuer{margin-top:4px;color:var(--slate);font-size:.9rem;line-height:1.5}
.footer__issuer{display:block;font-size:.85rem;color:rgba(242,243,240,.5);margin-bottom:6px}
@media (max-width:900px){
  .creds__grid{grid-template-columns:1fr}
}
@media (max-width:640px){
  .creds__list{grid-template-columns:1fr}
  .footer__grid{grid-template-columns:1fr;gap:36px}
}
.footer li{overflow-wrap:anywhere}

/* team */
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.team{scroll-margin-top:80px}
.team__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:56px clamp(24px,3vw,40px)}
.member{position:relative;display:flex;flex-direction:column}
.member__photo{aspect-ratio:4/5;overflow:hidden;border-radius:4px;background:#e4e6e2;margin-bottom:20px}
.member__img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 18%;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.member:hover .member__img{transform:scale(1.035)}
.avatar{display:flex;align-items:center;justify-content:center;background:var(--navy);color:var(--jute-lt);font:600 clamp(2.6rem,5vw,4rem)/1 var(--display);letter-spacing:.02em}
.member__name{font-size:1.35rem;line-height:1.25}
.member__role{color:var(--slate);margin-top:4px;font-size:.98rem}
.member__open{align-self:flex-start;margin-top:14px;padding:0 0 3px;background:none;border:0;border-bottom:1px solid currentColor;font:500 .93rem var(--body);color:var(--jute);cursor:pointer;transition:color .2s}
.member__open::after{content:"";position:absolute;inset:0}
.member:hover .member__open{color:var(--navy)}
.member__open:focus-visible{outline:none}
.member:has(.member__open:focus-visible) .member__photo{outline:2px solid var(--jute);outline-offset:4px}

/* profile dialog */
html.is-locked{overflow:hidden}
.profile{width:min(1000px,calc(100% - 32px));max-height:min(88vh,860px);padding:0;border:0;border-radius:6px;background:var(--white);color:var(--navy);box-shadow:0 40px 120px -30px rgba(10,18,32,.55);overflow:hidden}
.profile::backdrop{background:rgba(14,22,38,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.profile[open]{animation:pop .28s cubic-bezier(.2,.7,.2,1)}
.profile[open]::backdrop{animation:fade .28s ease}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.985)}}
@keyframes fade{from{opacity:0}}
.profile__inner{position:relative;display:grid;grid-template-columns:320px 1fr;max-height:inherit}
.profile__close{position:absolute;top:16px;right:16px;z-index:2;width:42px;height:42px;display:grid;place-items:center;border-radius:999px;border:1px solid var(--line);background:var(--white);color:var(--navy);cursor:pointer;transition:background .2s,border-color .2s}
.profile__close:hover{background:var(--porcelain);border-color:var(--navy)}
.profile__side{background:var(--navy);color:var(--porcelain);padding:36px 32px;overflow-y:auto}
.profile__photo{aspect-ratio:4/5;border-radius:4px;overflow:hidden;background:var(--navy-2);margin-bottom:24px}
.profile__img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 18%}
.profile__photo .avatar{width:100%;height:100%;background:var(--navy-2)}
.profile__name{font-size:1.6rem;line-height:1.2}
.profile__role{color:var(--jute-lt);margin-top:6px;font-size:.98rem}
.profile__focus{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.profile__focus li{font-size:.82rem;padding:5px 12px;border:1px solid var(--line-dk);border-radius:999px;color:rgba(242,243,240,.85)}
.profile__email{display:inline-block;margin-top:24px;color:var(--porcelain);font-size:.95rem;text-underline-offset:4px;text-decoration-color:rgba(242,243,240,.4);word-break:break-all}
.profile__email:hover{text-decoration-color:var(--jute-lt)}
.profile__bio{padding:56px clamp(28px,4vw,56px) 48px;overflow-y:auto;max-height:min(88vh,860px)}
.profile__bio p{font-size:1.04rem;line-height:1.75;color:#34405a;max-width:62ch}
.profile__bio p+p{margin-top:1.1em}
.profile__bio p:first-child{font:500 1.22rem/1.6 var(--display);color:var(--navy)}

@media (max-width:900px){
  .team__grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:760px){
  .profile{width:100%;max-width:100%;height:100%;max-height:100%;border-radius:0;margin:0}
  .profile__inner{grid-template-columns:1fr;height:100%;overflow-y:auto;max-height:none}
  .profile__side{display:grid;grid-template-columns:96px 1fr;column-gap:18px;align-items:center;padding:24px 20px;overflow:visible}
  .profile__photo{grid-row:1/3;margin:0;aspect-ratio:1;border-radius:999px}
  .profile__name{font-size:1.3rem;padding-right:44px}
  .profile__role{margin-top:2px;font-size:.9rem}
  .profile__focus,.profile__email{grid-column:1/-1}
  .profile__focus{margin-top:18px}
  .profile__email{margin-top:16px}
  .profile__bio{max-height:none;overflow:visible;padding:28px 20px 40px}
  .profile__bio p:first-child{font-size:1.08rem}
  .profile__close{position:fixed;top:14px;right:14px;background:var(--navy-2);color:var(--porcelain);border-color:var(--line-dk)}
  .profile__photo .avatar{font-size:2rem}
}
@media (max-width:480px){
  .team__grid{gap:40px 16px}
  .member__name{font-size:1.1rem}
  .member__role{font-size:.88rem}
}

@media (prefers-reduced-motion:reduce){
  .profile[open],.profile[open]::backdrop{animation:none}
  html{scroll-behavior:auto}
  .lanes__svg path{animation:none;stroke-dashoffset:0}
  *{transition:none!important}
}
