/* GYNIST — shared site styles (union of all public page styles). */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:#FFFFFF;color:#111111;font-family:'Hanken Grotesk',sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
::selection{background:#D63028;color:#fff}

/* image placeholder (empty state where a CMS image hasn't been uploaded) */
.gyn-imgph{display:flex;align-items:center;justify-content:center;background:#E7E3DC;color:#9a958c;font-family:'Hanken Grotesk',sans-serif;font-size:13px;text-align:center}
.gyn-img{display:block;width:100%;height:100%;object-fit:cover}

/* nav + footer links */
.gyn-nav-link{color:#111;transition:background .2s,color .2s}
.gyn-nav-link:hover{background:#D63028;color:#fff}
.gyn-nav-active{background:#111;color:#fff}
.gyn-foot-link{color:#111;transition:color .2s}
.gyn-foot-link:hover{color:#D63028}
.gyn-mlink:hover{color:#D63028!important}
.gyn-mlink.active{color:#D63028!important}

/* reveal animation + failsafe */
[data-reveal],.gyn-srow{opacity:0;will-change:opacity,transform;animation:gyn-failsafe .01s linear 3.5s forwards}
@keyframes gyn-failsafe{to{opacity:1}}
.gsap-live [data-reveal],.gsap-live .gyn-srow{animation:none}
.gsap-off [data-reveal],.gsap-off .gyn-srow{opacity:1!important;animation:none}

/* image loader (shimmer skeleton + fade-in) */
.gyn-imgwrap{position:relative;display:block;overflow:hidden;background:#ECE8E0}
.gyn-imgwrap::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0,rgba(255,255,255,.55) 50%,transparent 100%);transform:translateX(-100%);animation:gyn-shimmer 1.35s ease-in-out infinite}
.gyn-imgwrap.is-loaded{background:transparent}
.gyn-imgwrap.is-loaded::after{display:none;animation:none}
@keyframes gyn-shimmer{100%{transform:translateX(100%)}}
.gyn-img{opacity:0;transition:opacity .55s ease;animation:gyn-imgfailsafe .01s linear 8s forwards}
.gyn-img.is-loaded{opacity:1;animation:none}
@keyframes gyn-imgfailsafe{to{opacity:1}}

/* hamburger */
.gyn-burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.gyn-burger.open span:nth-child(2){opacity:0}
.gyn-burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
::-webkit-scrollbar{height:0;width:0}

/* signature button */
.gyn-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;border-radius:999px;overflow:hidden;cursor:pointer;text-decoration:none;border:none;line-height:1;-webkit-tap-highlight-color:transparent}
.gyn-btn .gyn-badge{position:relative;flex:0 0 auto;width:22px;height:22px}
.gyn-btn .gyn-fill{position:absolute;inset:0;border-radius:50%;transition:transform .55s cubic-bezier(.6,.05,.1,1)}
.gyn-btn .gyn-arrow{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;transition:opacity .3s ease}
.gyn-btn .gyn-label{position:relative;z-index:1;display:inline-block;white-space:nowrap;transition:transform .5s cubic-bezier(.6,.05,.1,1),opacity .35s ease}
.gyn-btn .gyn-reveal{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap;transform:translateX(-66px);opacity:0;transition:transform .5s cubic-bezier(.6,.05,.1,1),opacity .35s ease}
.gyn-btn:hover .gyn-fill{transform:scale(26)}
.gyn-btn:hover .gyn-arrow{opacity:0}
.gyn-btn:hover .gyn-label{transform:translateX(92px);opacity:0}
.gyn-btn:hover .gyn-reveal{transform:translateX(0);opacity:1}

/* cards */
.gyn-svccard{transition:transform .3s ease,border-color .3s ease}
.gyn-svccard:hover{transform:translateY(-8px);border-color:#111}
.gyn-svccard:hover .gyn-svcarrow{background:#D63028;color:#fff;border-color:#D63028}
/* homepage "Capabilities" service rows */
.gyn-svcrow{transition:background .25s ease,padding .25s ease}
.gyn-svcrow:hover{background:#FBEFEE;padding-left:24px;padding-right:24px}
.gyn-svcrow:hover .gyn-svcarrow{background:#D63028;color:#fff;border-color:#D63028}
.gyn-chip:not(.active):hover{border-color:#111;color:#111}
.gyn-chip.active{background:#111;color:#fff;border-color:#111}
.gyn-workcard{transition:transform .3s ease,border-color .3s ease,opacity .35s ease}
.gyn-workcard:hover{transform:translateY(-8px);border-color:#111}
.is-hidden{display:none!important}
.gyn-next:hover{background:#161616}
.gyn-next:hover .gyn-nextarrow{transform:translateX(6px)}
.gyn-404chip:hover{background:#111;color:#fff;border-color:#111}

/* marquee (home testimonials) */
@keyframes gyn-marq{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
@keyframes gyn-tmarq{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
.gyn-tmarq-track{animation:gyn-tmarq 46s linear infinite}
.gyn-tmarq-wrap:hover .gyn-tmarq-track{animation-play-state:paused}

/* form validation (contact) */
.gyn-input{appearance:none;-webkit-appearance:none}
.gyn-input:focus{border-color:#D63028!important;outline:none}
.gyn-err{display:block;overflow:hidden;max-height:0;opacity:0;font-size:13px;color:#D63028;font-weight:600;transition:max-height .3s ease,opacity .25s ease,margin-top .3s ease;margin-top:0}
@keyframes gyn-shake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-6px)}40%,60%{transform:translateX(6px)}}
.gyn-shake{animation:gyn-shake .5s cubic-bezier(.36,.07,.19,.97)}
@keyframes gyn-pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
@keyframes gyn-rise{from{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}
.gyn-banner-in{animation:gyn-rise .4s cubic-bezier(.2,.7,.2,1) both}
.gyn-contact-link:hover{color:#D63028!important}
.gyn-success-in{animation:gyn-rise .55s cubic-bezier(.2,.7,.2,1) both}
.gyn-success-in .gyn-check{animation:gyn-pop .6s cubic-bezier(.2,.7,.2,1) .1s both}

/* booking */
@keyframes gyn-bk-rise{from{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes gyn-bk-pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
.gyn-day:not(:disabled):hover{border-color:#111!important}
.gyn-slot:hover{border-color:#111!important}
.gyn-field:focus{border-color:#D63028!important;outline:none}

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .gyn-stats{grid-template-columns:repeat(2,1fr)!important;row-gap:46px!important}
  .gyn-svc-grid{grid-template-columns:repeat(2,1fr)!important}
  .gyn-eng{grid-template-columns:1fr!important}
  .gyn-feature{grid-template-columns:1fr!important}
  .gyn-meta{grid-template-columns:repeat(2,1fr)!important;row-gap:30px!important}
}
@media (max-width:860px){
  .gyn-booklayout{grid-template-columns:1fr!important}
  .gyn-bookaside{border-right:none!important;border-bottom:1px solid #EFEBE3!important}
  .gyn-bookgrid{grid-template-columns:1fr!important}
}
@media (max-width:760px){
  nav{padding-left:20px!important;padding-right:20px!important}
  .gyn-navmenu{display:none!important}
  .gyn-nav-cta{display:none!important}
  .gyn-burger{display:flex!important}
  .gyn-mobile-menu{display:flex!important}
  .gyn-pad{padding-left:20px!important;padding-right:20px!important}
  h1{font-size:13vw!important}
  .gyn-eyebrow > span:last-child{display:none!important}
  .gyn-herobtns{flex-wrap:wrap!important;width:100%!important}
  .gyn-herobtns > a{flex:1 1 auto!important;justify-content:center!important}
  .gyn-svc-grid{grid-template-columns:1fr!important}
  .gyn-stats{grid-template-columns:1fr 1fr!important;gap:24px!important}
  .gyn-meta{grid-template-columns:1fr 1fr!important;gap:24px!important}
  .gyn-twoup{grid-template-columns:1fr!important}
}
