:root{
  --cream:#F4EFE4;
  --cream-deep:#EAE1CC;
  --ink:#332F28;
  --ink-soft:#615A4C;
  --blue-deep:#2C5266;
  --blue-mid:#3E7089;
  --blue-sky:#7FA8BC;
  --gold:#CF9A45;
  --gold-soft:#E3C285;
  --white:#FFFDF8;
  --line:rgba(51,47,40,0.12);
  --shadow: 0 20px 50px -25px rgba(44,82,102,0.35);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:'Public Sans', sans-serif;
  background:var(--cream);
  color:var(--ink);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:'Fraunces', serif;
  font-weight:600;
  color:var(--blue-deep);
  line-height:1.15;
  letter-spacing:-0.01em;
}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
.wrap{max-width:1180px; margin:0 auto; padding:0 32px;}
section{padding:96px 0;}
.eyebrow{
  font-family:'Public Sans', sans-serif;
  font-size:13px;
  font-weight:700;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--gold);
  margin-bottom:14px;
  display:inline-block;
}
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:14px 28px;
  border-radius:999px;
  font-weight:600;
  font-size:15px;
  border:1.5px solid transparent;
  cursor:pointer;
  transition:transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.btn-primary{background:var(--blue-deep); color:var(--white);}
.btn-primary:hover{transform:translateY(-2px); box-shadow:var(--shadow);}
.btn-ghost{border-color:var(--blue-deep); color:var(--blue-deep); background:transparent;}
.btn-ghost:hover{background:var(--blue-deep); color:var(--white);}

/* Skip link */
.skip-link{position:absolute; left:-999px; top:0; background:var(--blue-deep); color:#fff; padding:10px 18px; z-index:200;}
.skip-link:focus{left:16px; top:16px;}
a:focus-visible, button:focus-visible{outline:3px solid var(--gold); outline-offset:3px;}

/* Header */
header{
  position:sticky; top:0; z-index:100;
  background:rgba(244,239,228,0.9);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 0;
}
.logo{display:flex; align-items:center; gap:12px;}
.logo-mark{width:auto; height:38px;}
.logo-text{font-family:'Fraunces', serif; font-weight:600; font-size:19px; color:var(--blue-deep); letter-spacing:0.01em;}
.logo-sub{display:block; font-family:'Public Sans'; font-size:10px; letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-soft); font-weight:600; margin-top:1px;}
nav ul{list-style:none; display:flex; gap:34px; align-items:center;}
nav ul li a{font-size:15px; font-weight:600; color:var(--ink-soft); transition:color .2s;}
nav ul li a:hover, nav ul li a.active{color:var(--blue-deep);}
.nav-cta{display:flex; align-items:center; gap:20px;}
.menu-toggle{display:none; background:none; border:none; cursor:pointer; padding:6px;}
.menu-toggle span{display:block; width:24px; height:2px; background:var(--blue-deep); margin:5px 0; transition:.25s;}

/* Hero */
.hero{padding:88px 0 60px;}
.hero .wrap{display:grid; grid-template-columns:1.05fr 0.95fr; gap:56px; align-items:center;}
.hero h1{font-size:clamp(38px, 5vw, 58px); margin-bottom:22px;}
.hero h1 em{font-style:normal; color:var(--gold); position:relative;}
.hero p.lead{font-size:19px; color:var(--ink-soft); max-width:480px; margin-bottom:34px;}
.hero-ctas{display:flex; gap:16px; flex-wrap:wrap; margin-bottom:40px;}
.hero-trust{display:flex; gap:28px; flex-wrap:wrap;}
.hero-trust div{font-size:13px; color:var(--ink-soft); font-weight:600;}
.hero-trust strong{display:block; font-family:'Fraunces',serif; font-size:26px; color:var(--blue-deep); font-weight:600;}

.orbit-stage{position:relative; aspect-ratio:1/1; max-width:460px; margin:0 auto;}
.orbit-stage svg{width:100%; height:100%;}
.orbit-path{fill:none; stroke:var(--blue-sky); stroke-width:1.4; opacity:0.55;}
.orbit-path.outer{stroke:var(--gold-soft);}
.leap-dot{fill:var(--gold);}
.core-dot{fill:var(--blue-deep);}
@media (prefers-reduced-motion: no-preference){
  .leap-orbit{animation:spin 22s linear infinite;}
  .leap-orbit-rev{animation:spin 30s linear infinite reverse;}
}
@keyframes spin{from{transform:rotate(0deg);} to{transform:rotate(360deg);}}
.orbit-stage{transform-origin:center;}

/* Page header (for About / Contact) */
.page-header{padding:64px 0 20px; text-align:center;}
.page-header h1{font-size:clamp(34px,4.5vw,50px); margin-bottom:14px;}
.page-header p{font-size:17px; color:var(--ink-soft); max-width:600px; margin:0 auto;}

/* Intro band */
.intro{background:var(--white); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.intro .wrap{max-width:820px; text-align:center;}
.intro h2{font-size:clamp(26px,3vw,34px); margin-bottom:18px;}
.intro p{font-size:17px; color:var(--ink-soft);}

/* Approach / services */
.approach .head{max-width:640px; margin-bottom:56px;}
.approach h2{font-size:clamp(30px,3.4vw,40px);}
.service-grid{display:grid; grid-template-columns:repeat(4, 1fr); gap:24px;}
.service-card{
  background:var(--white);
  border:1px solid var(--line);
  border-radius:18px;
  padding:32px 26px;
  transition:transform .25s ease, box-shadow .25s ease;
}
.service-card:hover{transform:translateY(-6px); box-shadow:var(--shadow);}
.service-ring{
  width:52px; height:52px; border-radius:50%;
  border:2px solid var(--gold);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:20px; position:relative;
}
.service-ring::after{content:''; width:8px; height:8px; border-radius:50%; background:var(--blue-deep);}
.service-card h3{font-size:19px; margin-bottom:10px;}
.service-card p{font-size:14.5px; color:var(--ink-soft);}

/* Team */
.team{background:var(--cream-deep);}
.team .head{max-width:640px; margin-bottom:56px;}
.team-grid{display:grid; grid-template-columns:1fr 1fr; gap:32px;}
.team-card{background:var(--white); border-radius:22px; overflow:hidden; border:1px solid var(--line);}
.team-photo{aspect-ratio:4/3; background:linear-gradient(135deg, var(--blue-sky), var(--blue-deep)); display:flex; align-items:center; justify-content:center; color:rgba(255,255,255,0.7); font-size:14px; font-weight:600;}
.team-body{padding:30px 30px 34px;}
.team-body h3{font-size:22px; margin-bottom:4px;}
.team-role{font-size:13px; color:var(--gold); font-weight:700; text-transform:uppercase; letter-spacing:0.06em; margin-bottom:14px;}
.team-body p{color:var(--ink-soft); font-size:15px; margin-bottom:16px;}
.tag-row{display:flex; flex-wrap:wrap; gap:8px;}
.tag{font-size:12px; font-weight:600; padding:6px 12px; border-radius:999px; background:var(--cream-deep); color:var(--blue-deep);}

/* Who we serve */
.serve .wrap{display:grid; grid-template-columns:0.9fr 1.1fr; gap:60px; align-items:center;}
.serve-list{list-style:none; display:grid; gap:16px; margin-top:26px;}
.serve-list li{display:flex; gap:14px; align-items:flex-start; font-size:15.5px; color:var(--ink-soft);}
.serve-list li::before{content:''; width:8px; height:8px; margin-top:7px; border-radius:50%; background:var(--gold); flex-shrink:0;}
.serve-visual{background:var(--white); border-radius:22px; border:1px solid var(--line); padding:40px; display:grid; gap:22px;}
.serve-stat{display:flex; justify-content:space-between; align-items:baseline; border-bottom:1px solid var(--line); padding-bottom:18px;}
.serve-stat:last-child{border-bottom:none; padding-bottom:0;}
.serve-stat span:first-child{font-family:'Fraunces',serif; font-size:15px; color:var(--blue-deep);}
.serve-stat span:last-child{font-size:13px; color:var(--ink-soft); font-weight:600;}

/* Contact / locations */
.contact{background:var(--blue-deep); color:var(--white);}
.contact h2{color:var(--white);}
.contact .eyebrow{color:var(--gold-soft);}
.contact .wrap{display:grid; grid-template-columns:1fr 1fr; gap:56px;}
.contact-info p{color:rgba(255,253,248,0.78); font-size:17px; margin-bottom:30px; max-width:440px;}
.info-block{display:flex; gap:16px; margin-bottom:22px;}
.info-block .label{font-size:12px; text-transform:uppercase; letter-spacing:0.08em; color:var(--gold-soft); font-weight:700; margin-bottom:4px;}
.info-block .value{font-size:16px; color:var(--white);}
.form-card{background:var(--white); border-radius:20px; padding:36px; color:var(--ink);}
.form-card h3{color:var(--blue-deep); font-size:20px; margin-bottom:20px;}
.field{margin-bottom:16px;}
.field label{display:block; font-size:13px; font-weight:600; color:var(--ink-soft); margin-bottom:6px;}
.field input, .field select, .field textarea{
  width:100%; padding:12px 14px; border-radius:10px; border:1.5px solid var(--line);
  font-family:'Public Sans'; font-size:15px; background:var(--cream); color:var(--ink);
}
.field textarea{resize:vertical; min-height:90px;}
.field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--blue-deep); outline-offset:1px;}
.form-card .btn-primary{width:100%; justify-content:center; margin-top:6px;}

footer{padding:44px 0; background:var(--ink); color:rgba(255,253,248,0.6);}
footer .wrap{display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px;}
footer .logo-text, footer .logo-sub{color:rgba(255,253,248,0.85);}
footer .foot-links{display:flex; gap:22px; list-style:none; font-size:14px;}
footer .foot-links a:hover{color:#fff;}
.placeholder-note{font-size:12px; color:var(--gold-soft); font-style:italic;}

@media (max-width:900px){
  .hero .wrap{grid-template-columns:1fr; text-align:center;}
  .hero p.lead{margin-left:auto; margin-right:auto;}
  .hero-ctas, .hero-trust{justify-content:center;}
  .orbit-stage{order:-1; max-width:320px;}
  .service-grid{grid-template-columns:repeat(2,1fr);}
  .team-grid{grid-template-columns:1fr;}
  .serve .wrap{grid-template-columns:1fr;}
  .contact .wrap{grid-template-columns:1fr;}
  nav ul{position:fixed; top:76px; left:0; right:0; background:var(--cream); flex-direction:column; padding:24px; gap:18px; border-bottom:1px solid var(--line); transform:translateY(-130%); transition:transform .25s ease; }
  nav ul.open{transform:translateY(0);}
  .menu-toggle{display:block;}
  .nav-cta .btn-primary{padding:10px 18px; font-size:14px;}
}
@media (max-width:600px){
  section{padding:64px 0;}
  .service-grid{grid-template-columns:1fr;}
}
