* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth
}
body {
  margin:0;
  background:#f8f6ef;
  color:#142f38;
  font:17px/1.65 system-ui,sans-serif
}
a {
  color:#174e60;
  text-underline-offset:4px
}
header,footer {
  background:#102f39;
  color:white
}
header a,footer a {
  color:inherit
}
header>div,main,footer>div {
  max-width:1240px;
  margin:auto;
  padding:22px clamp(20px,5vw,72px)
}
header>div {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:22px
}
.brand {
  font:600 24px Georgia;
  text-decoration:none
}
nav {
  display:flex;
  gap:17px;
  flex-wrap:wrap
}
nav a {
  text-decoration:none;
  font-size:14px
}
nav a:hover,nav [aria-current] {
  text-decoration:underline
}
main {
  padding-top:65px;
  padding-bottom:80px
}
h1,h2,h3 {
  font-family:Georgia,serif;
  font-weight:400;
  line-height:1.1
}
h1 {
  font-size:clamp(45px,6vw,85px);
  max-width:18ch;
  margin:18px 0 24px
}
h2 {
  font-size:clamp(30px,4vw,49px)
}
h3,summary {
  font-size:23px
}
p {
  max-width:68ch
}
.eyebrow {
  font-size:12px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#785734
}
.lead {
  font-size:21px;
  max-width:53ch
}
.action {
  display:inline-block;
  margin:12px 0;
  background:#174e60;
  color:white;
  padding:11px 20px;
  text-decoration:none;
  border-radius:3px
}
.hero {
  display:grid;
  grid-template-columns:1.2fr 1fr;
  gap:5%;
  align-items:center
}
.hero img {
  width:100%;
  height:370px;
  object-fit:cover;
  border-radius:120px 3px 3px 3px
}
.grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,265px),1fr));
  gap:20px
}
.card {
  background:#fffdf7;
  border-top:3px solid #af8356;
  padding:22px
}
.card img {
  width:100%;
  height:210px;
  object-fit:cover;
  object-position:center 25%
}
.books img {
  object-fit:contain
}
section {
  margin-top:48px
}
summary {
  cursor:pointer;
  font:inherit;
  font-weight:650
}
.skip {
  position:absolute;
  left:-999px
}
.skip:focus {
  left:10px;
  background:white;
  color:black
}
footer a {
  margin-right:16px
}
:focus-visible {
  outline:3px solid #b97120;
  outline-offset:4px
}
button {
  background:white;
  border:0;
  padding:9px 14px;
  font:inherit
}
.menu {
  display:none
}
@media(max-width:800px) {
  header>div {
  flex-wrap:wrap
}
.hero {
  grid-template-columns:1fr
}
.hero img {
  height:210px;
  margin-top:20px
}
.enhanced .menu {
  display:block
}
.enhanced nav:not(.open) {
  display:none
}
nav {
  width:100%;
  gap:15px
}
main {
  padding-top:35px
}

}

/* Editorial layout */
figure {
  margin:0
}

figcaption,.cases small {
  font:600 11px/1.5 system-ui;
  letter-spacing:.14em;
  text-transform:uppercase
}

figcaption {
  padding:12px 0;
  color:#4b5a58;
  border-bottom:1px solid #b9b9a9
}

.hero {
  grid-template-columns:1fr 1fr;
  gap:clamp(24px,5vw,72px)
}

.hero>div,.hero figure {
  min-width:0
}

.hero h1 {
  margin-top:24px;
  letter-spacing:-.05em;
  line-height:1.02
}

.hero em {
  color:#805637;
  font-weight:400
}

.hero img {
  display:block;
  border-radius:0;
  aspect-ratio:5/4;
  height:auto;
  object-fit:cover
}

.hero .action {
  margin-right:12px
}

.hero .lead {
  max-width:42ch
}

.banner {
  margin:34px 0
}

.banner img {
  width:100%;
  height:clamp(190px,26vw,310px);
  object-fit:cover;
  display:block
}

.cases,.profiles {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(18px,3vw,36px);
  margin:24px 0
}

.cases article {
  border-top:1px solid #9f7958;
  padding:18px 0
}

.cases h3 {
  font-size:clamp(25px,3vw,38px);
  margin:16px 0
}

.profile img {
  width:100%;
  height:auto;
  aspect-ratio:1.18;
  object-fit:cover;
  display:block;
  background:#d7dcce
}

.profile h3 {
  font-size:30px;
  margin:8px 0
}

.profile details {
  border-top:1px solid #a6afa2;
  padding-top:8px
}

section {
  margin-top:clamp(52px,8vw,100px)
}

.eyebrow {
  font-size:11px;
  line-height:1.5
}

.steps {
  padding:0;
  list-style:none;
  max-width:830px
}

.steps li {
  border-top:1px solid #b5bba9;
  padding:20px 0;
  display:grid;
  grid-template-columns:1fr 1.6fr;
  gap:25px
}

.steps h3,.steps p {
  margin:0
}

section>details {
  max-width:820px;
  border-top:1px solid #bcc2b7;
  padding:15px 0
}

.books {
  grid-template-columns:repeat(3,minmax(0,1fr))
}

.books .card {
  background:transparent;
  border-top:1px solid #acb4a4
}

.books img {
  height:235px;
  background:#ebe9df;
  padding:16px
}

.action,nav a {
  text-underline-offset:5px
}

.action:hover {
  background:#253d37
}

footer {
  border-top:4px solid #c6a07c
}

footer strong {
  font:30px Georgia,serif
}

@media(max-width:850px) {
  .profiles,.books {
  grid-template-columns:repeat(2,minmax(0,1fr))
}

}

@media(max-width:800px) {
  .hero {
  grid-template-columns:1fr;
  gap:20px
}
.hero img {
  height:auto;
  max-height:340px;
  margin-top:0
}
.hero h1 {
  max-width:15ch
}
.cases {
  gap:16px
}

}

@media(max-width:560px) {
  .cases,.profiles,.books,.steps li {
  grid-template-columns:1fr
}
.cases article {
  padding:15px 0
}
.profile img {
  max-height:345px
}
.steps li {
  gap:8px
}
.action {
  margin-bottom:16px
}

}

@media(prefers-reduced-motion:reduce) {
  html {
  scroll-behavior:auto
}

}

@media(prefers-reduced-motion:no-preference) {

 .arriving {
  animation:arrive .55s cubic-bezier(.2,.6,.3,1) both
}

 @keyframes arrive {
  from {
  opacity:.35;
  transform:translateY(12px)
}
to {
  opacity:1;
  transform:none
}

}

 .action {
  transition:background .18s,transform .18s
}

 .action:hover {
  transform:translateY(-2px)
}


}

.hero .action + a {
  display: inline-block;
  white-space: nowrap;
}
@media (max-width: 560px) {
  .hero .action + a { display: table; margin-bottom: 8px; }
}
.service-list article {display:grid;grid-template-columns:1fr 2fr;gap:24px;border-top:1px solid #bac0af;padding:24px 0;}
.service-list h2,.service-list p:first-child {margin-top:0;}
@media (max-width:560px) {.service-list article {grid-template-columns:1fr;gap:0;}}
/* The mobile index uses a modal dialog for native focus containment. */
dialog:not([open]) { display: none; }
#mobile-menu { position:fixed; inset:0 0 0 auto; margin:0; width:min(90vw,400px); max-width:100%; height:100dvh; max-height:100%; padding:24px; border:0; background:#102f39; color:#faf7ec; }
#mobile-menu::backdrop { background:rgb(8 24 30 / .55); }
.menu-open {overflow:hidden;}
.drawer-top {display:flex; align-items:center; justify-content:space-between; padding-bottom:20px; border-bottom:1px solid #748a8d;}
.drawer-top>span {font-size:12px;letter-spacing:.14em;text-transform:uppercase;}
.dismiss {border-radius:50%;width:46px;height:46px;background:#294954;color:white;cursor:pointer;}
#mobile-menu nav {display:grid;gap:0;width:100%;margin-top:16px;}
#mobile-menu nav a {display:flex;align-items:center;justify-content:space-between;padding:11px 2px;color:white;font:29px/1.2 Georgia,serif;border-bottom:1px solid #385762;}
#mobile-menu nav span {font:16px system-ui;color:#cfb994;}
#mobile-menu [aria-current] {color:#f3c999;}
@media(max-width:800px){
 .enhanced .menu {display:inline-flex;align-items:center;gap:10px;border:1px solid #668086;color:white;background:transparent;border-radius:24px;padding:9px 16px;min-height:44px;}
 .menu i {width:16px;height:9px;border-block:1.5px solid currentColor;}
}
.hero {position:relative;isolation:isolate;min-height:clamp(480px,52vw,640px);display:flex;align-items:flex-end;background:#102f39;color:#fffaf0;padding:clamp(24px,5vw,74px);overflow:hidden;}
.hero>div {position:relative;z-index:1;max-width:650px;}
.hero figure {position:absolute;inset:0;z-index:-1;background:#102f39;}
.hero figure::after {content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,25,30,.96),rgba(8,25,30,.75) 50%,rgba(8,25,30,.16)),linear-gradient(0deg,rgba(8,25,30,.45),transparent 50%);}
.hero figure img {width:100%;height:100%;max-height:none;margin:0;object-fit:cover;object-position:center 46%;}
.hero figcaption {display:none;}
.hero h1 {max-width:15ch;margin-bottom:20px;}
.hero em {color:#e7c29a;}
.hero .eyebrow,.hero .lead,.hero a {color:#fffaf0;}
.hero .action {background:#e8ca9f;color:#102f39;padding:12px 22px;}
main:has(.hero) {padding-top:clamp(16px,2vw,30px);}
.cases article {border-top:2px solid #a68660;}
@media(max-width:560px){
 .hero {min-height:490px;padding:28px 20px;}
 .hero figure::after {background:linear-gradient(0deg,#102b34 3%,rgba(9,28,35,.87) 50%,rgba(9,28,35,.37));}
 .hero h1 {font-size:clamp(42px,11vw,58px);}
 .hero .lead {font-size:18px;}
}
@media(prefers-reduced-motion:no-preference){
 @view-transition {navigation:auto;}
 ::view-transition-old(root){animation:page-out .2s ease both;}
 ::view-transition-new(root){animation:page-in .48s ease both;}
 .hero>div>* {animation:page-in .85s cubic-bezier(.18,.7,.2,1) both;}
 .hero h1 {animation-delay:.1s;}
 .hero .lead {animation-delay:.2s;}
 .hero a {animation-delay:.3s;}
 .hero figure img {animation:settle 1.45s ease-out both;}
 main:not(:has(.hero))>h1 {animation:page-in .65s ease both;}
 .arriving {animation:page-in .75s cubic-bezier(.16,.7,.2,1) both;}
 .cases article:nth-child(2).arriving {animation-delay:.12s;}
 .cases article:nth-child(3).arriving {animation-delay:.22s;}
 #mobile-menu[open] {animation:slide-in .36s cubic-bezier(.18,.8,.2,1) both;}
 #mobile-menu[open].leaving {animation:slide-in .22s ease-in reverse both;}
 @keyframes slide-in {from{transform:translateX(100%)}to{transform:translateX(0)}}
 @keyframes page-out {to{opacity:0}}
 @keyframes page-in {from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
 @keyframes settle {from{transform:scale(1.075)}to{transform:scale(1)}}
}
.directory {max-width:900px;margin:0 auto 44px 0;}
.person-row {display:grid;grid-template-columns:104px minmax(0,1fr);gap:clamp(18px,3vw,40px);padding:25px 0;border-top:1px solid #c9c7b6;scroll-margin-top:16px;}
.person-row img {width:100%;height:auto;aspect-ratio:0.88;object-fit:cover;}
.person-row .eyebrow {margin:0 0 6px;letter-spacing:.09em;}
.person-row h3 {font-size:clamp(23px,3vw,32px);margin:0;}
.person-row .intro {margin:6px 0;font-size:16px;line-height:1.5;}
.person-row summary {width:fit-content;cursor:pointer;color:#174e60;font:650 14px/1.4 system-ui;padding:10px 0;}
.person-row details .open-label,.person-row details[open] .closed-label {display:none;}
.person-row details[open] .open-label {display:inline;}
.bio-text {max-width:62ch;border-left:2px solid #bb9774;padding-left:16px;color:#364b50;font-size:15.5px;line-height:1.55;}
.bio-text p {margin:0 0 .55em;}
@media(max-width:560px){
 .person-row {grid-template-columns:68px minmax(0,1fr);gap:15px;padding:19px 0;}
 .person-row details[open] .bio-text {margin-left:-83px;margin-top:8px;}
}
