*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;font-family:'Hanken Grotesk',system-ui,sans-serif;color:#15211e;background:#f3f1ea;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;}
img{display:block;max-width:100%;}
::selection{background:#0b4d4b;color:#f3f1ea;}
@keyframes akUp{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:none;}}
@keyframes akPop{from{opacity:0;transform:translateY(16px) scale(.99);}to{opacity:1;transform:none;}}

/* NAV */
.nav-link{font-size:13.5px;font-weight:600;letter-spacing:0.01em;color:#2c3a36;padding:6px 0;border-bottom:2px solid transparent;transition:border-color .2s,color .2s;}
.nav-link:hover{border-bottom-color:#2a8074;color:#0b4d4b;}
.nav-cta{font-size:13px;font-weight:600;letter-spacing:0.02em;color:#f3f1ea;background:#0b4d4b;padding:11px 22px;border-radius:6px;white-space:nowrap;transition:background .2s;}
.nav-cta:hover{background:#2a8074;}
#desktop-nav{display:flex;align-items:center;gap:32px;}
#hamburger{display:none;flex-direction:column;gap:5px;background:transparent;border:none;cursor:pointer;padding:8px;}
@media(max-width:900px){#desktop-nav{display:none!important;}#hamburger{display:flex;}}

/* COMPANIES GRID — 3 cols desktop, 2 tablet, 1 mobile */
.companies-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.4vw,26px);}
@media(max-width:900px){.companies-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.companies-grid{grid-template-columns:1fr;}}

/* MOBILE POLISH */
@media(max-width:600px){
  /* tighten oversized headings so they never feel cramped against edges */
  h1{font-size:clamp(34px,9vw,52px)!important;}
  /* modal stacks cleanly and uses near-full height on phones */
  .modal-panel{max-height:94vh;}
  .modal-nav-btn{width:38px;height:38px;font-size:16px;}
}
@media(max-width:380px){
  .filter-btn{padding:10px 14px;font-size:12.5px;}
}

/* ─────────── MOBILE-DRIVEN ENHANCEMENTS ─────────── */

/* 1) Swipe carousels for card sections on phones — a tall stack of
      cards becomes one horizontal, snap-scrolling row (peek of next). */
@media(max-width:700px){
  .m-carousel{
    display:flex!important;
    flex-wrap:nowrap!important;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    gap:14px!important;
    /* bleed to the screen edges, then re-inset the cards */
    margin-left:calc(-1 * clamp(20px,5vw,56px));
    margin-right:calc(-1 * clamp(20px,5vw,56px));
    padding:4px clamp(20px,5vw,56px) 8px;
    scroll-padding-left:clamp(20px,5vw,56px);
    scrollbar-width:none;
  }
  .m-carousel::-webkit-scrollbar{display:none;}
  .m-carousel > *{
    scroll-snap-align:start;
    flex:0 0 80%!important;
    min-width:80%!important;
    max-width:80%;
  }
}

/* 2) Tighter vertical rhythm on phones (less dead scrolling) */
@media(max-width:600px){
  #about>div,#sectors>div,#companies>div,#realestate>div,#partners>div,
  #journey>div,#locations>div,#leadership>div,#contact>div{
    padding-top:48px!important;padding-bottom:48px!important;
  }
}

/* 3) Sticky bottom action bar — primary contact always one tap away */
.mobile-actionbar{display:none;}
@media(max-width:900px){
  .mobile-actionbar{
    display:flex;gap:10px;align-items:center;
    position:fixed;left:0;right:0;bottom:0;z-index:40;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));
    background:rgba(4,33,31,0.92);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    border-top:1px solid rgba(243,241,234,0.14);
  }
  .mobile-actionbar a{
    flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;
    font-size:13.5px;font-weight:600;letter-spacing:0.01em;
    padding:12px 6px;border-radius:9px;white-space:nowrap;
  }
  .mab-secondary{color:#f3f1ea;background:rgba(243,241,234,0.08);border:1px solid rgba(243,241,234,0.16);}
  .mab-primary{color:#04211f;background:#7fd8cb;}
  /* clearance so the footer isn't hidden behind the bar */
  footer>div{padding-bottom:90px!important;}
}

/* 4) Brand/partner logos as a horizontal swipe row on phones */
@media(max-width:700px){
  .partners-row{
    flex-wrap:nowrap!important;
    justify-content:flex-start!important;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    gap:14px!important;
    margin-left:calc(-1 * clamp(20px,5vw,56px));
    margin-right:calc(-1 * clamp(20px,5vw,56px));
    padding:2px clamp(20px,5vw,56px);
    scroll-padding-left:clamp(20px,5vw,56px);
    scrollbar-width:none;
  }
  .partners-row::-webkit-scrollbar{display:none;}
  .partners-row > *{flex:0 0 auto;scroll-snap-align:start;}
}

/* 5) Compact footer on phones — lean 2-column; drop the redundant Sectors list */
@media(max-width:768px){
  .footer-cols{grid-template-columns:1fr!important;gap:20px!important;}
  .footer-brand{max-width:none!important;}
  .footer-sectors{display:none!important;}            /* duplicated by the Sectors section above */
  .footer-contact{display:none!important;}            /* duplicated by the Contact section + action bar */
  .footer-cols h4{margin-bottom:10px!important;}
  .footer-links{flex-direction:row!important;flex-wrap:wrap!important;gap:9px 16px!important;}
  footer>div{padding-top:40px!important;padding-bottom:76px!important;}
}

/* 6) Center the value cards on phones (icon above label, centered) */
@media(max-width:768px){
  .values-grid > div{flex-direction:column!important;justify-content:center!important;text-align:center!important;gap:9px!important;}
}

/* 7) Center the hero stats on phones */
@media(max-width:768px){
  .stats-grid > div{text-align:center!important;}
}

/* MOBILE MENU */
#mobile-menu{display:none;position:fixed;inset:0;z-index:60;background:#04211f;color:#f3f1ea;flex-direction:column;padding:22px clamp(20px,6vw,40px);animation:akUp .3s ease both;}
#mobile-menu.open{display:flex;}
.menu-link{font-family:'Bricolage Grotesque',sans-serif;font-size:34px;font-weight:600;padding:12px 0;border-bottom:1px solid rgba(243,241,234,0.12);color:#f3f1ea;display:block;}

/* HERO BTNS */
.hero-btn-primary{transition:transform .2s;}.hero-btn-primary:hover{transform:translateY(-2px);}
.hero-btn-outline{transition:background .2s;}.hero-btn-outline:hover{background:rgba(243,241,234,0.1);}

/* SECTOR CARDS */
.sector-card{display:flex;flex-direction:column;background:rgba(243,241,234,0.05);border:1px solid rgba(243,241,234,0.14);border-radius:12px;padding:28px 28px 30px;min-height:225px;transition:transform .25s,background .25s,border-color .25s;color:#f3f1ea;}
.sector-card:hover{transform:translateY(-4px);background:rgba(243,241,234,0.09);border-color:rgba(127,216,203,0.5);}
.sector-feature{flex-direction:row;align-items:center;gap:clamp(22px,3vw,42px);padding:clamp(28px,4vw,46px);min-height:0;background:linear-gradient(135deg,rgba(127,216,203,0.15),rgba(127,216,203,0.03));border-color:rgba(127,216,203,0.4);margin-bottom:16px;}
.sector-feature .sf-icon{width:74px;height:74px;border-radius:17px;background:rgba(127,216,203,0.16);display:flex;align-items:center;justify-content:center;flex:none;}
.sector-feature .sf-icon svg{width:38px;height:38px;}
.sf-num{font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:14px;color:#7fd8cb;letter-spacing:0.04em;}
.sf-tag{font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#7fd8cb;background:rgba(127,216,203,0.14);padding:5px 12px;border-radius:20px;}
.sf-title{font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:clamp(27px,3.4vw,40px);line-height:1.08;letter-spacing:-0.01em;margin:0 0 12px;}
.sf-desc{font-size:clamp(15px,1.55vw,17.5px);line-height:1.6;color:rgba(243,241,234,0.78);margin:0;max-width:760px;}
@media(max-width:600px){.sector-feature{flex-direction:column;align-items:flex-start;}}
.leader-card{transition:transform .25s,background .25s,border-color .25s;}
.leader-card:hover{transform:translateY(-4px);background:rgba(243,241,234,0.09);border-color:rgba(127,216,203,0.4);}
/* Journey — animated serpentine timeline */
.journey-timeline{position:relative;max-width:1000px;margin:0 auto;}
.jt-curve{display:block;}
.jt-svg{display:block;width:100%;height:auto;overflow:visible;}
.jt-path-bg{fill:none;stroke:rgba(127,216,203,0.16);stroke-width:3;stroke-linecap:round;}
.jt-path-fg{fill:none;stroke:url(#jtGrad);stroke-width:3.5;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 6px rgba(127,216,203,0.45));}
.journey-timeline.in .jt-path-fg{animation:jt-draw 4.4s cubic-bezier(.45,.05,.2,1) forwards;}
@keyframes jt-draw{to{stroke-dashoffset:0;}}
.jt-nodes{position:absolute;inset:0;}
.jt-item{position:absolute;}
.jt-dot{position:absolute;left:0;top:0;transform:translate(-50%,-50%);width:18px;height:18px;border-radius:50%;background:#04211f;border:2.5px solid #7fd8cb;box-shadow:0 0 0 6px rgba(127,216,203,0.10);z-index:2;}
.journey-timeline.in .jt-dot{animation:jt-pulse 3.4s ease-in-out infinite;}
@keyframes jt-pulse{0%,100%{box-shadow:0 0 0 6px rgba(127,216,203,0.10);}50%{box-shadow:0 0 0 11px rgba(127,216,203,0.035);}}
.jt-card{position:absolute;top:0;width:clamp(220px,25vw,290px);background:rgba(243,241,234,0.05);border:1px solid rgba(243,241,234,0.14);border-radius:14px;padding:18px 20px;opacity:0;transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0)*200ms);}
.jt-left .jt-card{right:34px;text-align:right;transform:translate(46px,-50%);}
.jt-right .jt-card{left:34px;text-align:left;transform:translate(-46px,-50%);}
.journey-timeline.in .jt-card{opacity:1;transform:translate(0,-50%);}
.jt-year{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:clamp(20px,2.4vw,26px);color:#7fd8cb;letter-spacing:-0.01em;display:block;line-height:1;}
.jt-text{font-size:14.5px;line-height:1.55;color:rgba(243,241,234,0.84);margin:10px 0 0;}
@media(max-width:860px){
  .journey-timeline{max-width:none;}
  .jt-curve{display:none;}
  .jt-nodes{position:relative;inset:auto;padding-left:30px;}
  .jt-nodes::before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:linear-gradient(180deg,#7fd8cb,rgba(127,216,203,0.25));border-radius:2px;transform:scaleY(0);transform-origin:top;transition:transform 2.4s cubic-bezier(.45,.05,.2,1);}
  .journey-timeline.in .jt-nodes::before{transform:scaleY(1);}
  .jt-item{position:relative!important;left:auto!important;top:auto!important;margin:0 0 24px;}
  .jt-dot{left:-22px;top:9px;transform:none;}
  .jt-card{position:relative!important;top:auto!important;left:auto!important;right:auto!important;width:auto!important;text-align:left!important;transform:translateY(16px);opacity:0;}
  .journey-timeline.in .jt-card{transform:translateY(0);opacity:1;}
}
@media(prefers-reduced-motion:reduce){
  .jt-path-fg{stroke-dashoffset:0!important;animation:none!important;}
  .jt-card{opacity:1!important;transform:translate(0,-50%)!important;transition:none!important;}
  .jt-left .jt-card,.jt-right .jt-card{transform:translate(0,-50%)!important;}
  .journey-timeline.in .jt-dot{animation:none!important;}
}

/* COMPANY CARDS */
.company-card{display:flex;flex-direction:column;background:#fff;border:1px solid rgba(11,77,75,0.1);border-radius:12px;overflow:hidden;color:inherit;transition:transform .26s,box-shadow .26s;}
.company-card:hover{transform:translateY(-5px);box-shadow:0 26px 48px -30px rgba(4,33,31,0.5);}
.company-desc{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.company-desc.expanded{-webkit-line-clamp:unset;overflow:visible;}
.read-more-btn{align-self:flex-start;margin:10px 0 0;padding:0;background:none;border:none;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;letter-spacing:0.02em;color:#0b4d4b;}
.read-more-btn:hover{color:#2a8074;text-decoration:underline;}

/* PROJECT CARDS */
.project-card{cursor:pointer;display:flex;flex-direction:column;background:#fff;border:1px solid rgba(11,77,75,0.1);border-radius:12px;overflow:hidden;transition:transform .28s,box-shadow .28s;animation:akPop .5s ease both;}
.project-card:hover{transform:translateY(-6px);box-shadow:0 30px 54px -32px rgba(4,33,31,0.55);}
/* HOSPITALITY CARDS — dark elegant variant of .project-card */
.hosp-card{cursor:pointer;display:flex;flex-direction:column;background:rgba(243,241,234,0.045);border:1px solid rgba(127,216,203,0.16);border-radius:14px;overflow:hidden;transition:transform .28s,box-shadow .28s,border-color .28s,background .28s;animation:akPop .5s ease both;}
.hosp-card:hover{transform:translateY(-6px);border-color:rgba(127,216,203,0.45);background:rgba(243,241,234,0.075);box-shadow:0 34px 64px -34px rgba(0,0,0,0.7);}

/* LOCATION CARDS */
.location-card{background:#fff;border:1px solid rgba(11,77,75,0.1);border-radius:12px;padding:18px 24px;min-width:158px;display:flex;align-items:center;justify-content:center;gap:13px;transition:border-color .2s,transform .2s,box-shadow .2s;}
.location-card:hover{border-color:rgba(42,128,116,0.5);transform:translateY(-3px);box-shadow:0 12px 30px rgba(11,77,75,0.09);}
.location-card svg{flex:none;color:#2a8074;}
.location-card:hover svg{color:#0b4d4b;}
.location-name{font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:17px;line-height:1.2;color:#0b4d4b;}
/* Our brands — auto-scrolling marquee */
.brands-marquee{position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);}
.brands-track{display:flex;width:max-content;animation:brand-scroll 28s linear infinite;}
.brands-marquee:hover .brands-track{animation-play-state:paused;}
@keyframes brand-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.brand-tile{flex:none;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid rgba(11,77,75,0.1);border-radius:14px;height:clamp(94px,11vw,116px);width:clamp(178px,21vw,228px);margin-right:clamp(16px,2vw,26px);padding:20px 30px;transition:border-color .2s,transform .2s,box-shadow .2s;}
.brand-tile:hover{border-color:rgba(42,128,116,0.4);transform:translateY(-3px);box-shadow:0 12px 30px rgba(11,77,75,0.08);}
.brand-tile img{max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain;display:block;}
@media(prefers-reduced-motion:reduce){.brands-track{animation:none;flex-wrap:wrap;justify-content:center;}}

/* CONTACT ROWS */
.contact-row{display:flex;align-items:center;justify-content:space-between;gap:20px;background:rgba(243,241,234,0.06);border:1px solid rgba(243,241,234,0.16);border-radius:10px;padding:16px 22px;transition:background .2s;color:#f3f1ea;}
.contact-row:hover{background:rgba(243,241,234,0.12);}
/* Contact form */
.contact-form{display:flex;flex-direction:column;gap:16px;}
.cf-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:560px){.cf-row{grid-template-columns:1fr;}}
.cf-group{display:flex;flex-direction:column;}
.cf-label{font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:rgba(243,241,234,0.55);margin-bottom:8px;}
.cf-input{width:100%;background:rgba(243,241,234,0.06);border:1px solid rgba(243,241,234,0.16);border-radius:10px;padding:14px 16px;color:#f3f1ea;font-size:15px;font-family:inherit;box-sizing:border-box;transition:border-color .2s,background .2s;}
.cf-input::placeholder{color:rgba(243,241,234,0.4);}
.cf-input:focus{outline:none;border-color:#7fd8cb;background:rgba(243,241,234,0.09);}
.cf-textarea{resize:vertical;min-height:120px;}
.cf-select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:42px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237fd8cb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 14px center;}
.cf-select option{background:#04211f;color:#f3f1ea;}
.cf-btn{align-self:flex-start;margin-top:4px;display:inline-flex;align-items:center;gap:8px;background:#7fd8cb;color:#04211f;font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:15px;letter-spacing:0.01em;border:none;border-radius:10px;padding:15px 30px;cursor:pointer;transition:transform .2s,background .2s;}
.cf-btn:hover{transform:translateY(-2px);background:#9be4d9;}

/* FOOTER LINKS */
.footer-link{transition:color .2s;color:rgba(243,241,234,0.82);font-size:14.5px;}
.footer-link:hover{color:#7fd8cb;}

/* FILTER BUTTONS */
.filter-btn{padding:11px 20px;border-radius:8px;font-family:'Hanken Grotesk',sans-serif;font-size:13.5px;font-weight:600;letter-spacing:0.01em;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:8px;}
.filter-btn.active{background:#0b4d4b;color:#f3f1ea;border:1px solid #0b4d4b;}
.filter-btn.inactive{background:transparent;color:#15211e;border:1px solid rgba(11,77,75,0.22);}

/* GALLERY DOTS */
.gallery-dot{height:8px;border-radius:999px;border:none;cursor:pointer;padding:0;transition:all .25s;}
.gallery-dot.dot-active{width:28px;background:#7fd8cb;}
.gallery-dot.dot-inactive{width:8px;background:rgba(243,241,234,0.34);}

/* MODAL */
#modal{display:none;position:fixed;inset:0;z-index:100;background:rgba(2,23,21,0.8);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);align-items:center;justify-content:center;padding:clamp(12px,3vw,40px);}
#modal.open{display:flex;animation:akUp .25s ease both;}
.modal-panel{position:relative;width:100%;max-width:1100px;max-height:92vh;overflow:auto;background:#f3f1ea;border-radius:14px;display:flex;flex-wrap:wrap;animation:akPop .35s ease both;}
/* side-by-side layout: hide the panel scrollbar, let the text column scroll invisibly */
@media(min-width:860px){
  .modal-panel{overflow:hidden;}
  .modal-text{max-height:92vh;overflow-y:auto;scrollbar-width:none;}
  .modal-text::-webkit-scrollbar{display:none;}
}
.modal-cta{margin-top:auto;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:14px;font-weight:600;letter-spacing:0.02em;color:#f3f1ea;background:#0b4d4b;padding:16px 26px;border-radius:8px;transition:background .2s;}
.modal-cta:hover{background:#2a8074;}
.modal-nav-btn{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:none;background:rgba(243,241,234,0.92);color:#04211f;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;line-height:1;}
/* PROJECT DOCUMENTS / DOWNLOADS */
#modal-docs{margin-bottom:28px;}
.docs-title{font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#2a8074;margin:0 0 14px;}
.doc-row{display:flex;align-items:center;gap:14px;padding:13px 15px;border:1px solid rgba(11,77,75,0.16);border-radius:9px;background:#fff;text-decoration:none;color:#15211e;transition:border-color .2s,box-shadow .2s,transform .2s;margin-bottom:9px;}
.doc-row:hover{border-color:#2a8074;box-shadow:0 14px 26px -20px rgba(4,33,31,0.5);transform:translateY(-1px);}
.doc-ic{flex:none;width:38px;height:38px;border-radius:8px;background:rgba(42,128,116,0.1);display:flex;align-items:center;justify-content:center;color:#2a8074;}
.doc-main{flex:1;min-width:0;}
.doc-name{font-size:14px;font-weight:600;line-height:1.3;}
.doc-meta{font-size:11.5px;color:#8a948f;letter-spacing:0.03em;margin-top:2px;}
.doc-dl{flex:none;display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:#0b4d4b;}
.card-doc-badge{position:absolute;top:14px;right:14px;display:inline-flex;align-items:center;gap:6px;background:rgba(4,33,31,0.78);color:#f3f1ea;font-size:11px;font-weight:600;letter-spacing:0.03em;padding:6px 11px;border-radius:7px;}

/* "SEE MORE" BUTTON — links a homepage preview to its full section page. Colour is inherited
   from the section (light text on dark sections, dark on light) via currentColor. */
.see-more-wrap{margin-top:clamp(28px,3.5vw,44px);display:flex;justify-content:center;}
.see-more-btn{display:inline-flex;align-items:center;gap:10px;font-family:'Hanken Grotesk',sans-serif;font-size:14px;font-weight:600;letter-spacing:0.02em;color:inherit;border:1px solid currentColor;border-radius:8px;padding:14px 30px;transition:background .2s,color .2s,transform .2s;}
.see-more-btn:hover{transform:translateY(-2px);}
/* On light sections, fill teal on hover; on dark sections, fill light on hover. */
#companies .see-more-btn:hover,#partners .see-more-btn:hover,#locations .see-more-btn:hover,#realestate .see-more-btn:hover{background:#0b4d4b;border-color:#0b4d4b;color:#f3f1ea;}
#sectors .see-more-btn:hover,#hospitality .see-more-btn:hover,#hpac .see-more-btn:hover,#brands .see-more-btn:hover,#leadership .see-more-btn:hover{background:#7fd8cb;border-color:#7fd8cb;color:#04211f;}
.see-more-btn span{transition:transform .2s;}
.see-more-btn:hover span{transform:translateX(3px);}
