:root{
  --navy:#21217a; --navy-deep:#15153f; --cream:#f5f2ea; --line:#e4dfd0;
  --ink:#2b2b2b; --slate:#6b6b6b; --gold:#a8853f;
  --serif:'Playfair Display', serif; --sans:'Poppins', sans-serif;
}
*{box-sizing:border-box; margin:0; padding:0;}
body{font-family:var(--sans); color:var(--ink); background:#fff; line-height:1.7;}
a{color:inherit; text-decoration:none;} ul{list-style:none;} img{display:block; max-width:100%;}
.wrap{max-width:1180px; margin:0 auto; padding:0 30px;}
h1,h2,h3{font-family:var(--serif); color:var(--navy); font-weight:600; line-height:1.2;}
p{color:var(--slate); font-size:14.5px; font-weight:300;}
.eyebrow{font-family:var(--sans); font-size:12px; letter-spacing:.3em; text-transform:uppercase; color:var(--navy); font-weight:500;}
.btn{display:inline-flex; align-items:center; gap:10px; font-family:var(--sans); font-size:12.5px; font-weight:500; letter-spacing:.08em; text-transform:uppercase; padding:15px 28px; border:1px solid var(--navy); transition:.2s; cursor:pointer; background:none;}
.btn-solid{background:var(--navy); color:#fff;} .btn-solid:hover{background:var(--navy-deep);}
.btn-line{border-color:#fff; color:#fff;} .btn-line:hover{background:rgba(255,255,255,.15);}
.btn-line-navy{border-color:var(--navy); color:var(--navy);} .btn-line-navy:hover{background:var(--navy); color:#fff;}
.btn-gold{background:var(--gold); color:#fff; border-color:var(--gold);} .btn-gold:hover{background:#8f6f2f;}

.ph{position:relative; background:#c9c4b4; overflow:hidden;}
.ph img{width:100%; height:100%; object-fit:cover; display:block;}

/* Header */
header{background:#fff; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:99;}
header .wrap{display:flex; align-items:center; justify-content:space-between; height:78px;}
.logo{font-family:var(--serif); font-size:19px; font-weight:700; color:var(--ink); letter-spacing:.03em; line-height:1.15; display:block;}
.logo small{display:block; font-family:var(--sans); font-size:9px; letter-spacing:.32em; font-weight:400; color:var(--slate); font-style:italic;}
.logo-img{height:48px; width:auto; display:block;}
nav.primary{display:flex; align-items:center; gap:30px;}
nav.primary ul{display:flex; gap:24px;}
nav.primary a.link{font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink); font-weight:500; padding-bottom:4px; border-bottom:2px solid transparent;}
nav.primary a.link:hover, nav.primary a.link.active{color:var(--navy); border-bottom-color:var(--gold);}
.nav-right{display:flex; align-items:center; gap:20px;}
.nav-phone{font-size:13px; color:var(--ink); font-weight:500;}
.nav-toggle{display:none; background:none; border:none; font-size:22px; color:var(--navy); cursor:pointer;}

/* Hero (home) */
.hero{height:78vh; min-height:520px; position:relative;}
.hero .ph{height:100%;}
.hero-scrim{position:absolute; inset:0; background:linear-gradient(180deg, rgba(21,21,63,.35), rgba(21,21,63,.65)); z-index:2;}
.hero-overlay-text{position:absolute; inset:0; z-index:3; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:0 24px;}
.hero-overlay-text h1{color:#fff; font-size:clamp(32px,5.2vw,58px); max-width:780px; margin-bottom:20px;}
.hero-overlay-text .hero-brand{font-family:var(--sans); font-size:14px; letter-spacing:.5em; text-transform:uppercase; color:#f0e9d8; font-weight:500;}

/* Page header banner (interior pages) */
.page-header{background:var(--cream); padding:80px 0 60px; text-align:center;}
.page-header .eyebrow{margin-bottom:18px; letter-spacing:.35em;}
.page-header h1{font-size:clamp(30px,4.4vw,44px); max-width:720px; margin:0 auto 20px;}
.page-header p{max-width:620px; margin:0 auto; font-size:14.5px;}

.drop{display:flex; flex-direction:column; align-items:center; padding:50px 0 6px;}
.drop svg{width:38px; height:38px; margin-bottom:8px;}
.drop .stem{width:1px; height:60px; background:var(--navy);}

.intro{padding:0 0 70px; text-align:center; background:var(--cream);}
.intro .eyebrow{margin-bottom:18px; letter-spacing:.35em;}
.intro h2{font-size:clamp(26px,3.6vw,36px); max-width:680px; margin:0 auto 22px;}
.intro p{max-width:620px; margin:0 auto; font-size:14.5px;}

.cta-banner{display:grid; grid-template-columns:.85fr 1.15fr; min-height:230px; background:var(--cream);}
.cta-banner .panel-text{background:var(--navy); display:flex; align-items:center; justify-content:center; padding:30px;}
.cta-banner.reverse{grid-template-columns:1.15fr .85fr;}
.cta-banner.reverse .panel-text{order:2;}
.cta-banner.reverse .ph{order:1;}

.split-row{background:var(--cream); padding:70px 0;}
.split-grid{display:grid; grid-template-columns:1fr 1fr; gap:0; align-items:center; background:#fff; box-shadow:0 10px 40px rgba(30,30,30,.06);}
.split-grid .ph{aspect-ratio:4/3.3;}
.split-copy{padding:50px 56px;}
.split-copy h2{font-size:26px; margin-bottom:16px;}
.split-copy p{margin-bottom:22px;}

.map-section{background:var(--cream); padding:70px 0 90px;}
.map-shell{position:relative;}
.map-shell .ph{height:440px;}
.map-card{position:absolute; top:26px; right:26px; width:280px; background:var(--navy); color:#fff; padding:26px 24px; font-size:12.5px;}
.map-card .eyebrow{color:#fff; font-size:11px; margin-bottom:10px;}
.map-card p{color:#cfd6e6; font-size:12.5px; margin-bottom:14px;}
.map-card li{display:flex; justify-content:space-between; padding:8px 0; border-top:1px solid rgba(255,255,255,.15); color:#fff;}
.map-card li span:last-child{color:#a9b6d6; font-size:11px;}
.map-card a.card-more{display:inline-block; margin-top:14px; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--gold); border-bottom:1px solid var(--gold); padding-bottom:2px;}

.trio{padding:0 0 90px; background:var(--cream);}
.trio-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:2px;}
.trio-card{position:relative; aspect-ratio:3/3.4;}
.trio-card .ph{position:absolute; inset:0;}
.trio-card .overlay{position:absolute; inset:0; z-index:2;}
.trio-card .content{position:absolute; left:0; right:0; bottom:0; z-index:3; padding:28px; color:#fff;}
.trio-card .tag{position:absolute; top:0; left:0; background:var(--navy); color:#fff; font-size:10.5px; letter-spacing:.14em; padding:8px 14px; z-index:3;}
.trio-card h3{color:#fff; font-size:23px; margin-bottom:12px;}
.trio-card a{font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:#fff; border-bottom:1px solid rgba(255,255,255,.6); padding-bottom:3px;}

/* Services phase grid */
.phase-section{background:var(--navy-deep); padding:90px 0;}
.phase-section .section-head{text-align:center; margin-bottom:50px;}
.phase-section .eyebrow{color:var(--gold);}
.phase-section h2{color:#fff; font-size:clamp(26px,3.6vw,36px); margin-top:14px;}
.phase-section > .wrap > p{color:#c9c9dc; max-width:600px; margin:14px auto 0; text-align:center;}
.phase-label{font-family:var(--sans); font-size:11.5px; letter-spacing:.16em; color:var(--gold); text-transform:uppercase; margin:46px 0 18px; display:flex; align-items:center; gap:14px;}
.phase-label::after{content:''; flex:1; height:1px; background:rgba(255,255,255,.15);}
.phase-label:first-of-type{margin-top:0;}
.service-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.1);}
.service-card{background:var(--navy-deep); padding:32px 26px; transition:background .2s;}
.service-card:hover{background:#1c1c52;}
.service-badge{width:38px; height:38px; border-radius:50%; border:1px solid var(--gold); color:var(--gold); font-family:var(--sans); font-size:12px; display:flex; align-items:center; justify-content:center; margin-bottom:18px;}
.service-card h4{font-family:var(--serif); color:#fff; font-size:18px; margin-bottom:10px;}
.service-card p{font-size:13px; color:#a9a9c8; margin-bottom:14px;}
.service-card a{font-family:var(--sans); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--gold);}
.service-card a:hover{text-decoration:underline;}

/* Team alternating rows */
.waypath{position:relative; background:var(--cream); padding:20px 0 90px;}
.waypath::before{
  content:''; position:absolute; left:50%; top:0; bottom:0; width:2px; transform:translateX(-50%);
  background-image:linear-gradient(var(--navy) 60%, rgba(0,0,0,0) 0%); background-size:2px 14px; background-repeat:repeat-y;
}
.wp-row{display:grid; grid-template-columns:1fr 1fr; gap:0; align-items:center; position:relative; margin-bottom:10px;}
.wp-row:nth-child(even) .wp-copy{order:2;}
.wp-row:nth-child(even) .wp-art{order:1;}
.wp-copy{padding:40px 60px;}
.wp-badge{width:38px; height:38px; border-radius:50%; background:var(--navy); color:#fff; font-family:var(--sans); font-size:12px; display:flex; align-items:center; justify-content:center; margin-bottom:18px; border:4px solid var(--cream);}
.wp-copy .role{color:var(--gold); font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; font-weight:600; margin-bottom:6px; display:block;}
.wp-copy h3{font-size:24px; margin-bottom:12px;}
.wp-copy p{font-size:14px;}
.wp-art{padding:30px;}
.wp-art .ph{aspect-ratio:4/3.4;}
.wp-copy ul.credentials{margin-top:14px;}
.wp-copy ul.credentials li{font-size:13px; color:var(--slate); padding:4px 0 4px 16px; position:relative;}
.wp-copy ul.credentials li::before{content:'•'; position:absolute; left:0; color:var(--gold);}

/* FAQ */
.faq{background:#fff; padding:70px 0; max-width:820px; margin:0 auto;}
.faq-item{border-top:1px solid var(--line);}
.faq-item:last-child{border-bottom:1px solid var(--line);}
.faq-q{width:100%; background:none; border:none; text-align:left; padding:22px 6px; font-family:var(--sans); font-size:14.5px; font-weight:500; color:var(--ink); display:flex; justify-content:space-between; cursor:pointer;}
.faq-a{max-height:0; overflow:hidden; transition:.3s;}
.faq-a p{padding:0 6px 22px; max-width:640px;}

/* Contact */
.contact-section{padding:80px 0 100px; background:var(--cream);}
.contact-grid{display:grid; grid-template-columns:1.1fr .9fr; gap:60px;}
form.contact-form{display:flex; flex-direction:column; gap:16px;}
form.contact-form input, form.contact-form textarea{
  background:#fff; border:1px solid var(--line); padding:14px 16px; font-family:var(--sans); font-size:14px; color:var(--ink);
}
form.contact-form input:focus, form.contact-form textarea:focus{outline:none; border-color:var(--navy);}
.info-card{background:#fff; border:1px solid var(--line); padding:30px; margin-bottom:18px;}
.info-card .eyebrow{margin-bottom:10px;}
.info-card strong{display:block; font-family:var(--serif); font-size:19px; color:var(--navy); margin-bottom:4px;}
.info-card span, .info-card p{font-size:14px;}
.linkedin-card{background:var(--navy); color:#fff; padding:30px; display:flex; align-items:center; gap:18px;}
.linkedin-card .icon{width:46px; height:46px; border-radius:50%; border:1px solid rgba(255,255,255,.4); display:flex; align-items:center; justify-content:center; font-family:var(--serif); font-size:18px; flex-shrink:0;}
.linkedin-card a.follow{color:var(--gold); font-size:12.5px; letter-spacing:.08em; text-transform:uppercase; border-bottom:1px solid var(--gold); padding-bottom:2px; display:inline-block; margin-top:8px;}
.linkedin-card p{color:#cfd2ea; font-size:13px;}

/* Footer */
footer{background:var(--navy-deep); color:#c7cde0;}
.footer-links{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:36px; padding:60px 0 40px;}
.footer-links h5{color:#fff; font-family:var(--sans); font-size:12px; letter-spacing:.1em; text-transform:uppercase; margin-bottom:16px;}
.footer-links li{margin-bottom:9px; font-size:13.5px;}
.footer-links li a:hover{color:var(--gold);}
.footer-col p{color:#a9adc9; font-size:13px; max-width:250px;}
.footer-logo{color:#fff; font-family:var(--serif); font-weight:700; font-size:18px; margin-bottom:12px; display:block;}
.rainbow-strip{background:#eee; display:flex; align-items:center; gap:20px; padding:16px 30px;}
.rainbow-strip .bars{display:flex; height:36px; width:48px;}
.rainbow-strip .bars div{flex:1;}
.rainbow-strip span{font-family:var(--serif); font-weight:700; letter-spacing:.02em; color:var(--navy); font-size:14px;}
.foot-bottom{display:flex; justify-content:space-between; align-items:center; padding:24px 0; font-size:11.5px; border-top:1px solid rgba(255,255,255,.08);}
.crest{width:50px; height:50px; opacity:.85;}

.reveal{opacity:0; transform:translateY(16px); transition:.6s ease;} .reveal.in{opacity:1; transform:none;}

@media (max-width:900px){
  nav.primary{position:fixed; inset:78px 0 0 0; background:#fff; flex-direction:column; align-items:flex-start; padding:30px; transform:translateX(100%); transition:.25s; overflow-y:auto;}
  nav.primary.open{transform:translateX(0);}
  nav.primary ul{flex-direction:column; gap:8px;}
  .nav-toggle{display:block;}
  .cta-banner, .cta-banner.reverse, .split-grid, .trio-grid, .service-grid, .wp-row, .contact-grid, .footer-links{grid-template-columns:1fr;}
  .split-copy{padding:30px 26px;}
  .map-card{position:static; width:auto; margin-top:16px;}
  .cta-banner .ph{min-height:220px;}
  .wp-copy, .wp-art{padding:20px 30px;}
  .waypath::before{display:none;}
}
@media (max-width:480px){ .wrap{padding:0 20px;} }
