:root{
  --navy:#1b2a45;
  --navy-deep:#101d34;
  --cream:#faf7f1;
  --sand:#f1e9dc;
  --stone:#b8a88f;
  --sage:#7f9079;
  --charcoal:#2b2a27;
  --text:#3a3a34;
  --muted:#6f6e66;
  --line:rgba(27,42,69,.14);
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Montserrat',-apple-system,BlinkMacSystemFont,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--text);background:var(--cream);line-height:1.7;font-weight:300;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;color:var(--navy);line-height:1.12;letter-spacing:.01em}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
.wrap{max-width:1200px;margin:0 auto;padding:0 32px}
.eyebrow{font-family:var(--sans);font-size:.72rem;letter-spacing:.32em;text-transform:uppercase;color:var(--sage);font-weight:500;margin-bottom:18px}
.btn{display:inline-block;font-family:var(--sans);font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500;padding:16px 34px;border:1px solid var(--navy);color:var(--navy);transition:.35s;background:transparent;cursor:pointer}
.btn:hover{background:var(--navy);color:var(--cream)}
.btn.light{border-color:rgba(255,255,255,.7);color:#fff}
.btn.light:hover{background:#fff;color:var(--navy)}

/* NAV */
nav{position:fixed;top:0;left:0;width:100%;z-index:100;padding:22px 0;transition:.4s}
nav .wrap{display:flex;align-items:center;justify-content:space-between}
nav .brand{font-family:var(--serif);font-size:1.35rem;letter-spacing:.16em;color:#fff;text-transform:uppercase;transition:.4s}
nav .brand small{display:block;font-family:var(--sans);font-size:.5rem;letter-spacing:.42em;font-weight:400;opacity:.85;margin-top:2px}
nav ul{display:flex;gap:26px;list-style:none}
nav ul a{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:#fff;font-weight:400;opacity:.92;transition:.3s;position:relative;padding-bottom:4px}
nav ul a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:currentColor;transition:.3s}
nav ul a:hover::after,nav ul a.active::after{width:100%}
nav.scrolled{background:var(--cream);box-shadow:0 1px 0 var(--line);padding:14px 0}
nav.scrolled .brand{color:var(--navy)}
nav.scrolled ul a{color:var(--navy)}
/* solid nav variant for pages without a full hero */
nav.solid{background:var(--cream);box-shadow:0 1px 0 var(--line)}
nav.solid .brand{color:var(--navy)}
nav.solid ul a{color:var(--navy)}
.menu-btn{display:none;background:none;border:none;color:#fff;cursor:pointer;flex-direction:column;gap:5px}
.menu-btn span{width:24px;height:1.5px;background:currentColor;display:block;transition:.3s}
nav.scrolled .menu-btn,nav.solid .menu-btn{color:var(--navy)}

/* HERO (home) */
header.hero{height:100vh;min-height:620px;position:relative;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;overflow:hidden}
header.hero .bg{position:absolute;inset:0;background:url('hero-bg.jpg') center/cover no-repeat}
header.hero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,29,52,.5)0%,rgba(16,29,52,.32)45%,rgba(16,29,52,.62)100%)}
header.hero .inner{position:relative;z-index:2;padding:0 24px;max-width:880px;opacity:0;transform:translateY(24px);animation:rise 1.3s .3s forwards cubic-bezier(.2,.7,.2,1)}
@keyframes rise{to{opacity:1;transform:none}}
header.hero .hero-logo{width:min(440px,72vw);margin:0 auto;filter:drop-shadow(0 6px 28px rgba(0,0,0,.35))}
header.hero p.tag{font-family:var(--sans);font-weight:300;letter-spacing:.34em;text-transform:uppercase;font-size:clamp(.66rem,1.4vw,.84rem);opacity:.95;margin-top:32px}
header.hero .hbtns{margin-top:30px;display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.scrollcue{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);z-index:3;font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.85);animation:bob 2.4s infinite}
@keyframes bob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(8px)}}

/* PAGE BANNER (interior pages) */
.banner{height:56vh;min-height:380px;position:relative;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;overflow:hidden}
.banner .bg{position:absolute;inset:0;background-size:cover;background-position:center}
.banner .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,29,52,.5),rgba(16,29,52,.55))}
.banner .inner{position:relative;z-index:2;padding:90px 24px 0;max-width:820px;opacity:0;transform:translateY(20px);animation:rise 1.1s .25s forwards cubic-bezier(.2,.7,.2,1)}
.banner h1{color:#fff;font-size:clamp(2.4rem,5vw,4rem)}
.banner p{font-family:var(--sans);font-weight:300;letter-spacing:.2em;text-transform:uppercase;font-size:.78rem;margin-top:18px;opacity:.92}
.banner .eyebrow{color:var(--stone)}

/* SECTIONS */
section{padding:120px 0}
.reveal{opacity:0;transform:translateY(34px);transition:1s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}

/* INTRO */
.intro{background:var(--cream)}
.intro .grid{display:grid;grid-template-columns:1fr 1.15fr;gap:80px;align-items:center}
.intro h2{font-size:clamp(2rem,3.6vw,3.1rem);margin-bottom:6px}
.intro .lead{font-size:1.16rem;color:var(--text);margin:26px 0 22px;font-weight:400}
.intro p{color:var(--muted);margin-bottom:18px}
.feels{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.feels span{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--navy);border:1px solid var(--line);padding:8px 16px;border-radius:30px}
.intro .imgcol img{width:100%;height:560px;object-fit:cover;box-shadow:0 30px 60px -30px rgba(16,29,52,.45)}

/* STATS */
.stats{background:var(--navy);color:#fff;padding:80px 0}
.stats .row{display:grid;grid-template-columns:repeat(4,1fr);gap:40px;text-align:center}
.stats .num{font-family:var(--serif);font-size:clamp(2.6rem,5vw,3.8rem);color:#fff;line-height:1}
.stats .lbl{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;margin-top:12px;opacity:.78}
.stats .row>div{position:relative}
.stats .row>div:not(:last-child)::after{content:"";position:absolute;right:-20px;top:10%;height:80%;width:1px;background:rgba(255,255,255,.16)}

/* APPROACH */
.approach{background:var(--sand)}
.approach .head{text-align:center;max-width:720px;margin:0 auto 70px}
.approach h2{font-size:clamp(2rem,3.6vw,3rem);margin-bottom:18px}
.approach .head p{color:var(--muted)}
.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:34px}
.acard{background:var(--cream);padding:46px 38px;border-top:2px solid var(--sage)}
.acard h3{font-size:1.5rem;margin-bottom:14px}
.acard p{color:var(--muted);font-size:.96rem}
.palette{margin-top:64px;text-align:center}
.palette .swatches{display:flex;justify-content:center;flex-wrap:wrap;gap:0;margin-top:26px;max-width:760px;margin-left:auto;margin-right:auto;border:1px solid var(--line)}
.palette .sw{flex:1 1 100px;height:96px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;font-size:.56rem;letter-spacing:.12em;text-transform:uppercase}

/* PROJECTS */
.projects{background:var(--cream)}
.projects .head{text-align:center;max-width:720px;margin:0 auto 70px}
.projects h2{font-size:clamp(2rem,3.6vw,3rem);margin-bottom:18px}
.projects .head p{color:var(--muted)}
.plist{display:grid;gap:60px}
.proj{display:grid;grid-template-columns:1.25fr 1fr;gap:0;align-items:stretch;background:#fff;box-shadow:0 30px 70px -40px rgba(16,29,52,.4)}
.proj:nth-child(even){grid-template-columns:1fr 1.25fr}
.proj:nth-child(even) .pimg{order:2}
.proj:nth-child(even) .pbody{order:1}
.pimg{position:relative;overflow:hidden;min-height:380px}
.pimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:1.2s cubic-bezier(.2,.7,.2,1)}
.proj:hover .pimg img{transform:scale(1.05)}
.pbody{padding:54px 50px;display:flex;flex-direction:column;justify-content:center}
.pbody .units{font-family:var(--serif);font-size:2.6rem;color:var(--sage);line-height:1}
.pbody .units span{font-size:.36em;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-family:var(--sans);font-weight:400;vertical-align:middle}
.viewcue{margin-top:20px;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--sage);font-weight:600;transition:.35s}
.proj:hover .viewcue{letter-spacing:.28em}

/* COMING-SOON / PORTAL PAGES */
.soon{background:var(--cream);text-align:center}
.soon .wrap{max-width:740px}
.soon .eyebrow{justify-content:center}
.soon h2{font-size:clamp(1.9rem,3.6vw,2.8rem);margin-bottom:18px}
.soon p{color:var(--muted);font-size:1.06rem;margin-bottom:14px}
.soon .actions{margin-top:34px;display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.pbody h3{font-size:1.85rem;margin:8px 0 6px}
.pbody .loc{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:20px}
.pbody p{color:var(--muted);font-size:.97rem;margin-bottom:22px}
.status{display:inline-flex;align-items:center;gap:9px;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--navy);font-weight:500}
.status .dot{width:8px;height:8px;border-radius:50%;background:var(--sage)}

/* PROJECT PREVIEW CARDS (home) */
.pcards{display:grid;grid-template-columns:repeat(2,1fr);gap:30px}
.pcard{position:relative;overflow:hidden;min-height:320px;display:flex;align-items:flex-end;color:#fff;box-shadow:0 26px 60px -38px rgba(16,29,52,.5)}
.pcard .cbg{position:absolute;inset:0;background-size:cover;background-position:center;transition:1.2s cubic-bezier(.2,.7,.2,1)}
.pcard:hover .cbg{transform:scale(1.06)}
.pcard::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(27,42,69,.12) 0%,rgba(27,42,69,.04) 32%,rgba(16,29,52,.46) 68%,rgba(16,29,52,.82) 100%);transition:opacity .5s}
.pcard:hover::after{opacity:.82}
.pcard .c{position:relative;z-index:2;padding:34px 32px}
.pcard .c .u{font-family:var(--serif);font-size:1.6rem;color:#fff}
.pcard .c h3{color:#fff;font-size:1.5rem;margin-top:2px}
.pcard .c .l{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;opacity:.85;margin-top:6px}
.center-cta{text-align:center;margin-top:56px}

/* TEAM */
.team{background:var(--navy-deep);color:#fff}
.team .head{text-align:center;max-width:720px;margin:0 auto 64px}
.team h2{color:#fff;font-size:clamp(2rem,3.6vw,3rem);margin-bottom:18px}
.team .head p{color:rgba(255,255,255,.72)}
.team .head .eyebrow{color:var(--stone)}
.tgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px}
.tcard{text-align:center}
.tcard .ph{width:100%;aspect-ratio:4/5;object-fit:cover;filter:grayscale(100%);transition:.6s;background:#26344f}
.tcard:hover .ph{filter:grayscale(0%)}
.tcard .noimg{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:3rem;color:var(--stone);background:#26344f}
.tcard h3{color:#fff;font-size:1.4rem;margin:20px 0 4px}
.tcard .role{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--stone)}
.tcard p{color:rgba(255,255,255,.72);font-size:.9rem;margin-top:14px;text-align:left}

/* TEAM (light page variant with full bios) */
.team-light{background:var(--cream)}
.team-light .trow{display:grid;grid-template-columns:340px 1fr;gap:50px;align-items:center;margin-bottom:70px}
.team-light .trow:nth-child(even){grid-template-columns:1fr 340px}
.team-light .trow:nth-child(even) .tphoto{order:2}
.team-light .trow:nth-child(even) .tbio{order:1}
.team-light .tphoto img,.team-light .tphoto .noimg{width:340px;height:420px;object-fit:cover;filter:grayscale(100%);transition:.6s;box-shadow:0 30px 60px -34px rgba(16,29,52,.5)}
.team-light .trow:hover .tphoto img{filter:grayscale(0%)}
.team-light .tphoto .noimg{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:5rem;color:#fff;background:var(--navy)}
.team-light .tbio .role{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--sage);margin-bottom:8px}
.team-light .tbio h3{font-size:2.1rem;margin-bottom:16px}
.team-light .tbio p{color:var(--muted);font-size:1.02rem}

/* LEGAL / PRIVACY */
.pagehead{background:var(--navy-deep);color:#fff;text-align:center;padding:160px 0 64px}
.pagehead .eyebrow{color:var(--stone)}
.pagehead h1{color:#fff;font-size:clamp(2.2rem,4.5vw,3.4rem)}
.legal{background:var(--cream)}
.legal .wrap{max-width:820px}
.legal .updated{font-size:.82rem;letter-spacing:.03em;color:var(--muted);margin-bottom:34px}
.legal .intro{font-size:1.08rem;color:var(--text);margin-bottom:8px}
.legal h2{font-size:1.5rem;margin:44px 0 14px}
.legal p{color:var(--text);margin-bottom:16px}
.legal ul{margin:0 0 16px 22px}
.legal li{color:var(--text);margin-bottom:9px}
.legal a{color:var(--navy);text-decoration:underline}
.legal .contact-block{color:var(--text);line-height:1.9}
.fmeta a.legal-link{text-decoration:underline}

/* CONTACT */
.contact{background:var(--sand)}
.contact .grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.contact h2{font-size:clamp(2rem,3.8vw,3.2rem);margin-bottom:20px}
.contact p.lead{color:var(--muted);margin-bottom:36px;font-size:1.08rem}
.cinfo{display:grid;gap:24px}
.cinfo .item .k{font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--sage);margin-bottom:6px}
.cinfo .item .v{font-size:1.12rem;color:var(--navy);font-family:var(--serif)}
.contact .imgcol img{width:100%;height:480px;object-fit:cover;box-shadow:0 30px 60px -30px rgba(16,29,52,.45)}

/* CONTACT FORM */
.cform{display:grid;gap:18px}
.cform .two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.cform label{display:block;font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.cform input,.cform textarea{width:100%;padding:14px 16px;border:1px solid var(--line);background:var(--cream);font-family:var(--sans);font-size:.95rem;font-weight:300;color:var(--text);transition:.3s}
.cform input:focus,.cform textarea:focus{outline:none;border-color:var(--sage)}
.cform textarea{resize:vertical;min-height:130px}

/* FOOTER */
footer{background:var(--navy-deep);color:rgba(255,255,255,.7);padding:60px 0 40px;text-align:center}
footer .fbrand{font-family:var(--serif);font-size:1.5rem;letter-spacing:.18em;color:#fff;text-transform:uppercase}
footer .fbrand small{display:block;font-family:var(--sans);font-size:.5rem;letter-spacing:.42em;margin-top:4px;opacity:.7}
footer .fnav{display:flex;gap:28px;justify-content:center;margin-top:26px;flex-wrap:wrap}
footer .fnav a{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;opacity:.8}
footer .fnav a:hover{opacity:1;color:#fff}
footer .tagline{font-family:var(--serif);font-style:italic;font-size:1.2rem;color:var(--stone);margin:26px 0}
footer .fmeta{font-size:.74rem;letter-spacing:.08em;margin-top:10px;opacity:.6}
footer a:hover{color:#fff}

@media(max-width:900px){
  nav ul{display:none}
  .menu-btn{display:flex}
  nav ul.open{display:flex;position:absolute;top:100%;left:0;width:100%;background:var(--cream);flex-direction:column;gap:0;padding:10px 0;box-shadow:0 20px 30px -20px rgba(0,0,0,.3)}
  nav ul.open a{color:var(--navy);display:block;padding:16px 32px}
  .intro .grid,.contact .grid{grid-template-columns:1fr;gap:44px}
  .intro .imgcol img{height:420px}
  .stats .row{grid-template-columns:repeat(2,1fr);gap:48px 20px}
  .stats .row>div::after{display:none}
  .cards3,.pcards{grid-template-columns:1fr}
  .proj,.proj:nth-child(even){grid-template-columns:1fr}
  .proj:nth-child(even) .pimg,.proj:nth-child(even) .pbody{order:0}
  .pimg{min-height:280px}
  .pbody{padding:40px 34px}
  .tgrid{grid-template-columns:repeat(2,1fr)}
  .team-light .trow,.team-light .trow:nth-child(even){grid-template-columns:1fr;gap:26px;text-align:center;justify-items:center}
  .team-light .trow:nth-child(even) .tphoto,.team-light .trow:nth-child(even) .tbio{order:0}
  .team-light .tbio p{text-align:center}
  section{padding:84px 0}
}
@media(max-width:560px){
  .wrap{padding:0 22px}
  .tgrid{grid-template-columns:1fr}
  .palette .sw{flex-basis:80px}
  .cform .two{grid-template-columns:1fr}
}
