/* ==========================================================================
   JARVIS — Services page                       assets/css/pages/services.css
   Loaded after site.css. Page-only pieces:
     1 Service index (sticky chip bar → compact scrollable row on phones)
     2 Service chapters (.svc): grid, kicker, includes list, media frames
     3 Arch treatment for the small 212px images (.svc-media--arch)
     4 How we work spacing
     5 "Specialists we bring in" list (.sp-*)
     6 Responsive + reduced motion
   ========================================================================== */

.svc-scope{
  --bar-top:88px;                       /* just under the floating nav pill (ends ≈78px) */
  --bar-h:56px;                         /* 42px chips + 6px padding + border */
  --svc-pad:clamp(76px,8vw,124px);      /* vertical padding of each chapter */
  --land:40px;                          /* gap between the bar and a chapter's first line after a jump */
  position:relative;
  background:var(--ink);
}


/* hero: the suite photo is much brighter than the other page heroes (white
   bed, daylight window), so it is dimmed under the shared veil to keep the
   eyebrow and sub at AA contrast */
.svc-hero .hero-img{filter:brightness(.6) saturate(.9)}


/* ==========================================================================
   1 SERVICE INDEX
   <nav class="svc-index"><div class="svc-index-pill"><ol class="svc-chips"> li > a.chip …
   Sticks under the nav while the six chapters scroll by (it lives inside
   .svc-scope, so it lets go after the last one). services.js marks the
   chapter in view with aria-current="true" and keeps it visible in the row.
   ========================================================================== */
.svc-index{
  position:sticky;top:var(--bar-top);z-index:20;
  display:flex;justify-content:center;
  height:var(--bar-h);
  margin-top:calc(var(--bar-h) / -2);   /* straddles the hero's bottom edge */
  padding-inline:var(--gutter);
  pointer-events:none;
}
.svc-index-pill{
  pointer-events:auto;
  display:flex;max-width:100%;min-width:0;
  padding:6px;border-radius:999px;
  border:1px solid var(--hair-strong);
  background:rgba(10,26,31,.66);
  -webkit-backdrop-filter:blur(18px) saturate(1.15);backdrop-filter:blur(18px) saturate(1.15);
  box-shadow:0 18px 50px -22px rgba(10,26,31,.85),inset 0 1px 0 rgba(212,187,138,.1);
}
.svc-chips{
  display:flex;gap:4px;min-width:0;
  overflow-x:auto;overflow-y:hidden;
  scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;
  border-radius:999px;
}
.svc-chips::-webkit-scrollbar{display:none}
.svc-chips li{flex:none;display:flex}
.svc-chips .chip{position:relative;min-height:42px;padding:0 17px;border-color:transparent;background:transparent;color:rgba(245,240,235,.84)}
.svc-chips .chip:hover{border-color:var(--hair-strong);color:var(--gold-light)}
.svc-chips .chip[aria-current="true"]{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.svc-chips .chip:focus-visible{outline-offset:-4px;outline-color:var(--gold-light)}
.svc-chips .chip[aria-current="true"]:focus-visible{outline-color:var(--ink)}
/* edge fades when the row is scrollable (classes set by services.js) */
.svc-chips.is-fade-r{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent)}
.svc-chips.is-fade-l{-webkit-mask-image:linear-gradient(90deg,transparent,#000 44px);mask-image:linear-gradient(90deg,transparent,#000 44px)}
.svc-chips.is-fade-l.is-fade-r{-webkit-mask-image:linear-gradient(90deg,transparent,#000 44px,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(90deg,transparent,#000 44px,#000 calc(100% - 44px),transparent)}
/* no JS: the header scrolls away, so the bar can sit at the very top */
html:not(.js) .svc-index{top:10px}


/* ==========================================================================
   2 SERVICE CHAPTERS
   <section class="svc [svc--flip]" id="<service-slug>">
     <div class="wrap svc-grid"> .svc-head · figure.svc-media · .svc-body </div>
   Desktop: media | head+body (centred beside it); --flip mirrors the sides.
   Below 1024px: head → media → body, so a jump lands on the title.
   ========================================================================== */
.svc{
  position:relative;
  padding:var(--svc-pad) 0;
  /* after an anchor jump the chapter's first line sits var(--land) below the
     sticky bar (html already adds --nav-offset as scroll-padding) */
  scroll-margin-top:calc(var(--bar-top) + var(--bar-h) + var(--land) - var(--svc-pad) - var(--nav-offset));
}
.svc::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 40% 52% at 22% 50%, rgba(0,74,89,.34) 0%, rgba(0,74,89,0) 70%)}
.svc--flip::before{background:radial-gradient(ellipse 40% 52% at 78% 50%, rgba(0,74,89,.34) 0%, rgba(0,74,89,0) 70%)}
.svc:last-of-type{padding-bottom:calc(var(--svc-pad) * 1.15)}
.svc > .wrap{position:relative;z-index:1}

.svc-grid{
  display:grid;
  grid-template-columns:minmax(0,5fr) minmax(0,6fr);
  grid-template-rows:1fr auto auto 1fr;
  grid-template-areas:"media ." "media head" "media body" "media .";
  column-gap:clamp(48px,7vw,120px);
}
.svc--flip .svc-grid{
  grid-template-columns:minmax(0,6fr) minmax(0,5fr);
  grid-template-areas:". media" "head media" "body media" ". media";
}
.svc-head{grid-area:head}
.svc-media{grid-area:media;align-self:center}
.svc-body{grid-area:body;padding-top:26px}

/* kicker: big italic numeral — gold rule — "of 06" */
.svc-kicker{display:flex;align-items:center;gap:18px;font:500 10.5px/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--text-dim)}
.svc-n{font:300 italic clamp(46px,4.4vw,66px)/.9 var(--serif);letter-spacing:0;color:var(--gold-light)}
.svc-of{display:inline-flex;align-items:center;gap:16px}
.svc-of::before{content:"";width:46px;height:1px;background:var(--gold);opacity:.75}
.svc-title{margin-top:20px;font-size:clamp(38px,4.1vw,62px)}

.svc-body .lead{max-width:31em}
.svc-incl{margin-top:38px;max-width:36em}
.svc-incl-h{display:flex;align-items:center;gap:16px;font:500 10.5px/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--gold)}
.svc-incl-h::after{content:"";flex:1;height:1px;background:var(--hair)}
.svc-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:34px;margin-top:8px}
.svc-list li{position:relative;padding:15px 0 15px 26px;border-bottom:1px solid var(--hair);font:400 17px/1.45 var(--serif);color:rgba(245,240,235,.9)}
.svc-list li::before{content:"";position:absolute;left:3px;top:24px;width:6px;height:6px;border:1px solid var(--gold);transform:rotate(45deg)}
.svc-cta{margin-top:32px}
/* enquire link: inline (not the shared inline-flex) so a long service name
   wraps naturally on phones; the arrow travels with the last word */
.svc-enquire{display:inline;line-height:2.1;padding:6px 0}
.svc-enquire::after{display:none}
.svc-last{white-space:nowrap}
.svc-last::after{content:"";display:inline-block;width:16px;height:16px;margin-left:12px;vertical-align:-4px;background:currentColor;-webkit-mask:var(--i-arrow) center/contain no-repeat;mask:var(--i-arrow) center/contain no-repeat;transition:transform .6s var(--ease-lux)}
.svc-enquire:hover .svc-last::after{transform:translateX(4px)}

/* media frame (large local images) */
.svc-media{position:relative;isolation:isolate;margin:0}
.svc-media::before{content:"";position:absolute;inset:20px 20px -20px -20px;z-index:-1;border:1px solid var(--hair-strong);border-radius:4px;pointer-events:none}
.svc--flip .svc-media::before{inset:20px -20px -20px 20px}
.svc-frame{position:relative;aspect-ratio:5/4;overflow:hidden;border-radius:4px;border:1px solid rgba(201,169,110,.22);background:var(--deep);isolation:isolate;box-shadow:0 40px 90px -40px rgba(0,0,0,.7)}
.svc-frame > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.86) brightness(.86);transform:scale(1.03);transition:transform 2.6s var(--ease-lux),filter 1.4s var(--ease)}
.svc-frame::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;
  background:linear-gradient(180deg, rgba(10,26,31,0) 55%, rgba(10,26,31,.35) 100%)}
.svc-media:hover .svc-frame > img:not(.svc-field){transform:scale(1.06);filter:saturate(.95) brightness(.9)}

/* reveal: the frame opens from a slight inset while the photo settles */
.js .svc-media.reveal .svc-frame{clip-path:inset(5% 5% 5% 5% round 4px);transition:clip-path 1.9s var(--ease-lux)}
.js .svc-media.reveal.in .svc-frame{clip-path:inset(0 0 0 0 round 4px)}
.js .svc-media.reveal .svc-frame > img:not(.svc-field){transform:scale(1.12)}
.js .svc-media.reveal.in .svc-frame > img:not(.svc-field){transform:scale(1.03)}
.js .svc-media.reveal.in:hover .svc-frame > img:not(.svc-field){transform:scale(1.06)}


/* ==========================================================================
   3 ARCH TREATMENT — for ocean-wave / pool-palms (212×300 originals)
   The photo appears once, small and sharp inside an arch (never wider than
   its native 212px), over a heavily blurred field of itself + grain.
   ========================================================================== */
.svc-media--arch .svc-frame{background:var(--deep)}
.svc-media--arch .svc-frame > img.svc-field{inset:-30%;width:160%;height:160%;max-width:none;z-index:0;filter:blur(30px) saturate(.9) brightness(.56);transform:none;transition:none}
.svc-media--arch .svc-frame::after{background:
  radial-gradient(ellipse 62% 72% at 50% 50%, rgba(10,26,31,0) 34%, rgba(10,26,31,.6) 100%),
  linear-gradient(rgba(0,74,89,.16),rgba(0,74,89,.16))}
.svc-frame > .grain{z-index:1;opacity:.14;inset:-60%}
.svc-arch{position:absolute;left:50%;top:50%;z-index:2;width:clamp(150px,14.2vw,206px);aspect-ratio:212/300;transform:translate(-50%,-46%);border-radius:999px 999px 4px 4px}
.svc-arch img{width:100%;height:100%;object-fit:cover;border-radius:inherit;box-shadow:0 34px 60px -24px rgba(10,26,31,.95),0 0 0 1px rgba(212,187,138,.35)}
.svc-arch::before{content:"";position:absolute;inset:-15px;border:1px solid rgba(212,187,138,.5);border-radius:999px 999px 6px 6px;pointer-events:none}
.svc-arch::after{content:"";position:absolute;inset:-30px;border:1px solid rgba(212,187,138,.18);border-radius:999px 999px 8px 8px;pointer-events:none}
.js .svc-media--arch.reveal .svc-arch{opacity:0;transform:translate(-50%,-40%);transition:opacity 1.6s var(--ease) .35s,transform 2s var(--ease-lux) .35s}
.js .svc-media--arch.reveal.in .svc-arch{opacity:1;transform:translate(-50%,-46%)}


/* ==========================================================================
   4 HOW WE WORK
   ========================================================================== */
.svc-steps{margin-top:clamp(48px,5vw,76px)}


/* ==========================================================================
   5 SPECIALISTS WE BRING IN
   <ul class="sp-list"><li><a class="sp-link" href="partners.html#slug">
     img · .sp-text (.sp-name + .sp-disc) · .sp-sense </a></li></ul>
   ========================================================================== */
.sp-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(44px,7vw,120px);align-items:center}
.sp-intro .lead{margin-top:28px;max-width:25em}
.sp-intro .link-arrow{margin-top:30px}
.sp-list{border-bottom:1px solid var(--hair)}
.sp-link{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:24px;padding:14px 6px 14px 0;border-top:1px solid var(--hair);background:linear-gradient(90deg,rgba(0,74,89,0),rgba(0,74,89,0));transition:background-color .6s var(--ease),border-color .6s var(--ease)}
.sp-link img{width:58px;height:72px;object-fit:cover;border-radius:3px;filter:saturate(.8) brightness(.86);transition:filter .8s var(--ease),transform 1.2s var(--ease-lux)}
.sp-link img.dim{filter:saturate(.7) brightness(.72)}
.sp-text{display:flex;flex-direction:column;gap:7px;min-width:0}
.sp-name{font:300 clamp(23px,2vw,29px)/1.1 var(--serif);color:var(--cream);transition:color .5s var(--ease)}
.sp-disc{font:500 10px/1.5 var(--sans);letter-spacing:.26em;text-transform:uppercase;color:var(--gold)}
.sp-sense{display:inline-flex;align-items:center;gap:16px;font:italic 300 18px/1 var(--serif);color:var(--gold-light)}
.sp-sense::after{content:"";width:16px;height:16px;flex:none;background:currentColor;-webkit-mask:var(--i-arrow) center/contain no-repeat;mask:var(--i-arrow) center/contain no-repeat;transition:transform .6s var(--ease-lux)}
.sp-link:hover,.sp-link:focus-visible{background-color:rgba(0,74,89,.16)}
.sp-link:hover .sp-name,.sp-link:focus-visible .sp-name{color:var(--gold-light)}
.sp-link:hover img,.sp-link:focus-visible img{filter:saturate(1) brightness(.95);transform:scale(1.04)}
.sp-link:hover .sp-sense::after,.sp-link:focus-visible .sp-sense::after{transform:translateX(4px)}
.sp-link:focus-visible{outline-offset:2px}


/* ==========================================================================
   6 RESPONSIVE
   ========================================================================== */
@media (max-width:1179px){
  .svc-chips .chip{padding:0 13px;letter-spacing:.18em}
  .svc-list{grid-template-columns:1fr}
}
@media (max-width:1023px){
  .svc-grid,.svc--flip .svc-grid{
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:none;
    grid-template-areas:"head" "media" "body";
  }
  .svc-media{margin-top:36px;align-self:auto}
  .svc-frame{aspect-ratio:16/9}
  .svc-media::before,.svc--flip .svc-media::before{inset:14px -14px -14px 14px}
  .svc-body{padding-top:44px}
  .svc-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .svc::before,.svc--flip::before{background:radial-gradient(ellipse 70% 40% at 50% 46%, rgba(0,74,89,.3) 0%, rgba(0,74,89,0) 70%)}
  .sp-grid{grid-template-columns:minmax(0,1fr)}
  .sp-intro{max-width:36em}
}
@media (max-width:767px){
  .svc-scope{--bar-top:86px;--bar-h:48px;--svc-pad:76px;--land:30px}
  .svc-index-pill{padding:5px;width:100%}
  .svc-chips{gap:2px}
  .svc-chips .chip{min-height:36px;padding:0 12px;font-size:10px;letter-spacing:.16em;gap:8px}
  .svc-kicker{gap:14px}
  .svc-n{font-size:44px}
  .svc-title{margin-top:16px;font-size:clamp(36px,10vw,46px)}
  .svc-media{margin-top:28px}
  .svc-frame{aspect-ratio:4/3}
  .svc-media::before,.svc--flip .svc-media::before{inset:10px -10px -10px 10px}
  .svc-body{padding-top:34px}
  .svc-incl{margin-top:30px}
  .svc-list{grid-template-columns:1fr}
  .svc-list li{font-size:16.5px;padding:13px 0 13px 24px}
  .svc-list li::before{top:21px}
  .svc-cta{margin-top:24px}
  .svc-arch{width:146px}
  .svc-arch::after{display:none}
  .sp-link{grid-template-columns:52px minmax(0,1fr) auto;gap:16px;padding:12px 2px 12px 0}
  .sp-link img{width:52px;height:64px}
  .sp-name{font-size:23px}
  .sp-disc{font-size:9.5px;letter-spacing:.22em}
  .sp-sense{font-size:0;gap:0}
  .sp-sense::after{width:16px;height:16px}
}
@media (max-width:767px){
  .svc-hero .hero-veil{background:
    linear-gradient(180deg, rgba(16,21,23,.84) 0%, rgba(10,26,31,.74) 30%, rgba(10,26,31,.62) 58%, rgba(16,21,23,.95) 90%, var(--ink) 100%)}
}
@media (max-width:420px){
  .svc-chips .chip{padding:0 11px;letter-spacing:.14em}
}
@media (hover:none){
  .svc-media:hover .svc-frame > img:not(.svc-field){transform:scale(1.03)}
}
@media (prefers-reduced-motion:reduce){
  .js .svc-media.reveal .svc-frame{clip-path:none}
  .js .svc-media.reveal .svc-frame > img:not(.svc-field),
  .svc-media:hover .svc-frame > img:not(.svc-field){transform:scale(1.03)}
  .js .svc-media--arch.reveal .svc-arch{opacity:1;transform:translate(-50%,-46%)}
}
