:root{
  --ink:#1d1d1f; --ink-soft:#2b2b2e; --body:#54545a; --muted:#86868b;
  --accent:#0878b8; --accent-dark:#05628f; --accent-soft:#e8f3fa;
  --accent-on-dark:#4bb3e8;
  --line:#e3e3e6; --bg:#ffffff; --bg-alt:#f5f5f7; --bg-mute:#f2f2f2; --dark:#161617;
  --r:10px; --r-lg:16px; --pill:999px; --wrap:1216px;
  --shadow:0 2px 6px rgba(0,0,0,.10);
  --shadow-lg:0 3px 25px rgba(0,0,0,.16);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{
  margin:0;background:var(--bg);color:var(--body);
  font:400 17px/1.5 "Figtree","Helvetica Neue",Arial,system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
img,svg{max-inline-size:100%;block-size:auto}
h1,h2,h3,h4{color:var(--ink);margin:0 0 .5em;line-height:1.1;letter-spacing:-.02em;font-weight:700}
h1{font-size:clamp(2.5rem,5vw,4.25rem);line-height:1.12;letter-spacing:-.034em}
h2{font-size:clamp(2rem,3.75vw,3.375rem);line-height:1.04;letter-spacing:-.03em}
h3{font-size:1.75rem;line-height:1.21;letter-spacing:-.01em}
p{margin:0 0 1rem}
a{color:var(--ink);text-decoration:none}
a:hover{text-decoration:underline}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.skip{position:absolute;inset-inline-start:-9999px;top:0;background:var(--ink);color:#fff;padding:.75rem 1rem;z-index:99}
.skip:focus{inset-inline-start:0}

.wrap{inline-size:min(100% - 2.5rem,var(--wrap));margin-inline:auto}
.section{padding-block:clamp(4rem,7.5vw,7rem)}
.section-tight{padding-block:clamp(3rem,5vw,4.5rem)}
.section-alt{background:var(--bg-alt)}
.section-head{max-inline-size:660px;margin-block-end:3.25rem}
.section-head.center{margin-inline:auto;text-align:center}
.section-sub{font-size:1.1rem}
.eyebrow{
  text-transform:uppercase;letter-spacing:.16em;font-size:.74rem;font-weight:800;
  color:var(--accent);margin-block-end:1rem
}
.lede{font-size:1.18rem;line-height:1.6;max-inline-size:56ch}

/* buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:.82rem 1.6rem;border-radius:var(--pill);font-weight:600;font-size:1rem;
  border:1.5px solid transparent;cursor:pointer;
  transition:transform .15s ease,background .15s ease,color .15s ease,border-color .15s ease;
  text-decoration:none;white-space:nowrap
}
.btn:hover{text-decoration:none;transform:translateY(-2px)}
.btn-lg{padding:1rem 2rem;font-size:1.06rem}
.btn-sm{padding:.55rem 1.15rem;font-size:.93rem}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-dark)}
.btn-outline{border-color:var(--ink);color:var(--ink);background:transparent}
.btn-outline:hover{background:var(--ink);color:#fff}
/* on the ink sections the outline flips: light border, fills white */
.btn-ondark{border-color:rgba(255,255,255,.55);color:#fff;background:transparent}
.btn-ondark:hover{background:#fff;color:var(--ink);border-color:#fff}
.btn-ghost{color:var(--ink);padding-inline:.6rem}
.block{display:flex;inline-size:100%}

/* header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-block-end:1px solid var(--line)}
.header-inner{display:flex;align-items:center;gap:1.5rem;padding-block:.85rem}
.logo{display:flex;align-items:center;gap:.55rem;color:var(--accent)}
.logo:hover{text-decoration:none}
.logo-text{font-weight:900;font-size:1.25rem;color:var(--ink);letter-spacing:-.04em}
.logo-text em{font-style:normal;color:var(--accent)}
.site-nav{display:flex;gap:1.6rem;margin-inline-start:auto}
.site-nav a{color:var(--ink);font-weight:600;font-size:.95rem}
.site-nav a:hover{color:var(--accent);text-decoration:none}
.header-cta{display:flex;align-items:center;gap:.5rem}
.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:0;padding:.6rem;margin-inline-start:auto;cursor:pointer}
.nav-toggle span{display:block;inline-size:24px;block-size:2px;background:var(--ink);border-radius:2px}
.mobile-nav{display:flex;flex-direction:column;gap:.25rem;padding:1rem 1.25rem 1.5rem;border-block-start:1px solid var(--line)}
/* the class rule outranks the UA [hidden] rule, so re-assert it here */
.mobile-nav[hidden]{display:none}
.mobile-nav a{color:var(--ink);font-weight:700;padding-block:.6rem}
.mobile-nav .btn{margin-block-start:.5rem;color:#fff}

/* hero */
.hero{padding-block:clamp(3.5rem,7vw,6rem)}
.hero-inner{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}
.hero-copy h1{position:relative;z-index:1}
.hl{color:var(--accent)}
.hero-actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-block-start:2rem}

.hero-media{display:grid;place-items:center}
.reel{position:relative;inline-size:100%;aspect-ratio:4/3}
.reel-frame{position:absolute;border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}
.reel-a{inset:8% 0 18% 6%;background:linear-gradient(135deg,#2a2d33,#4a4e57)}
.reel-b{inset:0 12% 46% 34%;background:linear-gradient(135deg,var(--accent),var(--accent-dark))}
.reel-c{inset:56% 22% 0 22%;background:linear-gradient(135deg,#eceae6,#fbfaf8)}
.play{
  position:absolute;inset-block-start:50%;inset-inline-start:50%;translate:-50% -50%;
  inline-size:76px;block-size:76px;border-radius:50%;background:#fff;color:var(--accent);
  display:grid;place-items:center;box-shadow:var(--shadow-lg);z-index:2
}
.play.sm{inline-size:44px;block-size:44px;box-shadow:var(--shadow)}

/* trust badge */
.trust-badge{
  margin:0;text-align:center;padding-block:1.4rem;background:var(--bg-alt);
  border-block:1px solid var(--line);font-weight:700;color:var(--ink);font-size:.95rem
}

/* value props */
.props{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2rem}
.prop-ico{
  display:grid;place-items:center;inline-size:50px;block-size:50px;border-radius:12px;
  background:var(--accent-soft);color:var(--accent);font-size:1.3rem;margin-block-end:1.1rem
}
.prop h3{margin-block-end:.5rem}
.prop p{margin:0;font-size:.97rem}

/* video types */
.type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.9rem}
.type-grid a{
  display:flex;align-items:center;gap:.85rem;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:1.15rem 1.35rem;font-weight:700;color:var(--ink);
  transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease
}
.type-grid a:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:var(--shadow);text-decoration:none}
.type-grid span{color:var(--accent);font-size:1.15rem}

/* logos */
.logos{padding-block:2.75rem;border-block:1px solid var(--line)}
.logos-label{text-align:center;text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;font-weight:800;color:var(--muted);margin-block-end:1.4rem}
.logo-row{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem 3rem;font-weight:800;font-size:1.05rem;color:#a8acb3;letter-spacing:-.02em}

/* split + reel block */
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}
.reel-block{
  position:relative;aspect-ratio:16/11;border-radius:var(--r-lg);
  background:linear-gradient(135deg,#22252b,#4a4e57);box-shadow:var(--shadow-lg)
}

/* phases */
.phase-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:1.5rem}
.phase{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:2rem}
.phase-n{
  display:inline-grid;place-items:center;inline-size:42px;block-size:42px;border-radius:10px;
  background:var(--accent);color:#fff;font-weight:900;font-size:.92rem;margin-block-end:1rem
}
.phase > p{font-size:.97rem;margin-block-end:1.2rem}
.phase .tick{margin:0;font-size:.95rem}

.tick{display:grid;gap:.7rem;margin-block:1.5rem 2rem;font-size:1rem}
.tick li{padding-inline-start:1.7rem;position:relative}
.tick li::before{content:"✓";position:absolute;inset-inline-start:0;color:var(--accent);font-weight:900}

/* crew card */
.crew-card{background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--r-lg);padding:2.1rem}
.specs{margin:0;display:grid;gap:.9rem}
.specs div{display:flex;justify-content:space-between;gap:1rem;padding-block-end:.9rem;border-block-end:1px solid var(--line)}
.specs div:last-child{border:0;padding-block-end:0}
.specs dt{font-weight:700;color:var(--ink)}
.specs dd{margin:0;text-align:end;font-size:.95rem}

/* work */
.carousel{position:relative}
.work-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:1.6rem;list-style:none;margin:0;padding:0
}
.work-grid > .work{min-inline-size:0}
.car-btn{
  position:absolute;inset-block-start:calc(clamp(238px,25vw,320px) * .28125);translate:0 -50%;z-index:4;
  inline-size:52px;block-size:52px;border-radius:50%;border:1px solid var(--line);
  background:#fff;color:var(--ink);display:grid;place-items:center;cursor:pointer;
  box-shadow:var(--shadow);transition:background .15s ease,color .15s ease,transform .15s ease
}
.car-btn:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:scale(1.06)}
.car-btn[hidden]{display:none}
.car-prev{inset-inline-start:-20px}
.car-next{inset-inline-end:-20px}
@media (max-width:820px){.car-btn{display:none}}
.work h3{margin:1rem 0 .15rem;font-size:1.02rem}
.work p{margin:0;font-size:.92rem}
.thumb{position:relative;aspect-ratio:16/10;border-radius:var(--r);overflow:clip;transition:transform .18s ease;background:#eceae6}
.work:hover .thumb{transform:translateY(-4px)}
.t1{background:linear-gradient(135deg,#2a2d33,#4a4e57)}
.t2{background:linear-gradient(135deg,#4a4e57,#eceae6)}
.t3{background:linear-gradient(135deg,#14161a,#3a3d44)}
.t4{background:linear-gradient(135deg,#2a2d33,var(--accent))}
.t5{background:linear-gradient(135deg,#5c6069,#f2f1ee)}
.t6{background:linear-gradient(135deg,#22252b,#5c6069)}
.t7{background:linear-gradient(135deg,var(--accent-dark),#2a2d33)}
.t8{background:linear-gradient(135deg,#14161a,#6b6f78)}
.work-more{margin-block-start:2.75rem;text-align:center}

/* stats */
.stats{background:var(--ink);color:#fff;padding-block:3.5rem}
.stats-inner{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.5rem;text-align:center}
.stat strong{display:block;font-size:clamp(1.9rem,3.6vw,2.8rem);font-weight:900;letter-spacing:-.04em;color:var(--accent-on-dark)}
.stat span{font-size:.94rem;color:#b8bcc4}

/* team */
.team-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:clamp(1rem,4vw,2rem);justify-items:center;
  max-inline-size:calc(230px * 2 + 2rem);margin-inline:auto
}
.member{max-inline-size:230px;inline-size:100%}
.member{text-align:center}
.member h3{margin:1rem 0 .15rem;font-size:1rem}
.member p{margin:0;font-size:.89rem}
.avatar{
  aspect-ratio:1;border-radius:50%;display:grid;place-items:center;
  background:var(--ink);color:#fff;font-weight:900;font-size:1.8rem;letter-spacing:.02em
}
.member:nth-child(3n+2) .avatar{background:var(--accent)}

/* cta */
.cta{background:var(--ink);color:#b8bcc4;padding-block:clamp(4rem,8vw,6.5rem)}
.cta .eyebrow{color:var(--accent-on-dark)}
.cta h2{color:#fff}
.cta-inner{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}
.contact-list{display:grid;gap:.95rem;margin-block-start:2.1rem}
.contact-list li{display:flex;gap:1rem;align-items:baseline}
.contact-list span{inline-size:70px;flex:0 0 70px;text-transform:uppercase;letter-spacing:.13em;font-size:.7rem;font-weight:800;color:var(--accent-on-dark)}
.contact-list a{color:#fff;font-weight:600}
.cta-form{background:#fff;border-radius:var(--r-lg);padding:2.1rem;display:grid;gap:1rem;box-shadow:var(--shadow-lg)}
.field{display:grid;gap:.4rem}
.field label{font-weight:700;color:var(--ink);font-size:.9rem}
.field input,.field select,.field textarea{
  font:inherit;font-size:.97rem;padding:.85rem .95rem;border:1px solid var(--line);border-radius:10px;
  background:var(--bg-alt);color:var(--ink);inline-size:100%
}
.field textarea{resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);background:#fff;outline:none}
.field :user-invalid{border-color:#d64545}
.form-note{margin:0;font-size:.9rem;color:var(--accent-dark);min-block-size:1.2em;text-align:center;font-weight:600}

/* footer */
.site-footer{background:#0d0f12;color:#8b9099;padding-block:3.5rem 2rem;font-size:.93rem}
.footer-grid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:2rem}
.footer-grid h4{color:#fff;font-size:.76rem;text-transform:uppercase;letter-spacing:.13em;margin-block-end:1rem}
.footer-grid nav{display:grid;gap:.55rem;align-content:start}
.footer-grid a{color:#8b9099}
.footer-grid a:hover{color:var(--accent)}
.footer-brand .logo-text{color:#fff;display:block;margin-block-end:.8rem}
.footer-brand .logo-text em{color:var(--accent)}
.footer-brand p{margin:0 0 .4rem}
.muted{color:#5f636b;font-size:.87rem}
.footer-bottom{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;
  margin-block-start:2.5rem;padding-block-start:1.5rem;border-block-start:1px solid rgba(255,255,255,.1);font-size:.85rem
}
.footer-bottom p{margin:0}
.footer-bottom a{color:#8b9099}

/* responsive */
@media (max-width:960px){
  .hero-inner,.split,.cta-inner{grid-template-columns:1fr}
  .hero-media{order:-1;max-inline-size:520px}
  .footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:820px){
  .site-nav,.header-cta{display:none}
  .nav-toggle{display:flex}
}
@media (min-width:821px){
  .mobile-nav{display:none}
}
@media (max-width:560px){
  body{font-size:16px}
  .footer-grid{grid-template-columns:1fr}
  .specs div{flex-direction:column;gap:.15rem}
  .specs dd{text-align:start}
}

/* ============================================================
   Real assets pulled from blue-monkeys.com
   ============================================================ */

/* header logo */
.logo-img{block-size:76px;inline-size:auto;display:block}

/* hero video */
.hero-media{inline-size:100%}
.hero-video{
  inline-size:100%;aspect-ratio:1280/300;object-fit:contain;display:block;
  border-radius:var(--r-lg);box-shadow:var(--shadow-lg);background:var(--dark)
}

/* partner / client logo strip */
.partner-strip{display:block;margin-inline:auto;max-inline-size:min(100%,860px);block-size:auto}

/* portfolio thumbs are buttons now (facade -> iframe on click) */
.work-grid .thumb{
  inline-size:100%;padding:0;border:0;cursor:pointer;display:block;
  background:#000;
  aspect-ratio:16/9;border-radius:var(--r);overflow:clip;position:relative;
  transition:transform .18s ease,box-shadow .18s ease
}
.thumb-img{
  inline-size:100%;block-size:100%;object-fit:cover;display:block;
  border-radius:inherit
}
/* hqdefault is 4:3 with baked-in bars — zoom past them so the frame reads 16:9 */
.thumb-img.is-fallback{scale:1.34;transform-origin:center}
.work-grid .thumb:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.work-grid .thumb::after{
  content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(20,22,26,.45));
  pointer-events:none
}
.work-grid .thumb .play{z-index:3}
.work-grid iframe{
  inline-size:100%;aspect-ratio:16/9;border:0;border-radius:var(--r);display:block;background:#14161a
}
.work h3{font-size:.98rem;line-height:1.3}

/* team photos */
img.avatar{object-fit:cover;inline-size:100%;aspect-ratio:1;border-radius:50%;display:block;background:var(--bg-alt)}
.avatar-fallback{background:var(--accent);color:#fff}

/* social links with real icons */
.contact-list .social{display:inline-flex;align-items:center;gap:.4rem;margin-inline-end:.9rem}
.contact-list .social img{inline-size:18px;block-size:18px;object-fit:contain;filter:brightness(0) invert(1)}
.contact-list li:has(.social){flex-wrap:wrap}

@media (max-width:960px){
  .hero-media{max-inline-size:none}
}



/* ---- logo marquee (auto-scrolling client strip) ----
   Two rivers running against each other at different speeds, so the band reads
   as a wall of clients rather than one grey ribbon. The clip lives on the
   marquee, not the rows, so a logo can lift out of its row on hover. */
.logo-marquee{
  display:grid;gap:1.15rem;padding-block:.85rem;
  overflow:clip;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)
}
.logo-river{min-inline-size:0}          /* let the max-content track overflow */
.marquee-track{
  display:flex;align-items:center;gap:3rem;inline-size:max-content;
  animation:bm-marquee 46s linear infinite
}
.logo-river-alt .marquee-track{animation-duration:63s;animation-direction:reverse}
.logo-marquee:hover .marquee-track,.logo-marquee:focus-within .marquee-track{animation-play-state:paused}
@keyframes bm-marquee{from{transform:translateX(0)}to{transform:translateX(calc(-50% - 1.5rem))}}
@media (prefers-reduced-motion:reduce){
  .marquee-track{animation:none;inline-size:100%;flex-wrap:wrap;justify-content:center;gap:2rem 3rem}
  /* static fallback: one row, one pass of the set -- not sixty stacked marks */
  .logo-river-alt{display:none}
  .marquee-track .cl:nth-child(n+16){display:none}
}

/* ---- industries ---- */
.ind-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:1rem}
.ind-grid a{
  display:flex;align-items:center;min-block-size:100%;
  background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--r);
  padding:1.3rem 1.4rem;font-weight:700;color:var(--ink);
  transition:border-color .15s ease,background .15s ease,transform .15s ease,box-shadow .15s ease
}
.ind-grid a:hover{
  background:#fff;border-color:var(--accent);transform:translateY(-3px);
  box-shadow:var(--shadow);text-decoration:none
}

/* ---- client logo sprite (sliced out of assets/partner-logos.png) ----
   The sheet ships as white marks on transparency, so it is used as an alpha
   MASK rather than an image: the mark is painted with background-color, which
   makes it tintable -- ink at rest, brand blue on hover -- instead of a flat
   brightness(0) silhouette that can only fade. Each .cl-N carries geometry
   only: --w/--h for the box, --ms/--mp for the slice out of the sheet. */
.cl{
  flex:0 0 auto;display:block;
  inline-size:var(--w);block-size:var(--h);
  color:var(--ink);background-color:currentColor;
  -webkit-mask-image:url("assets/partner-logos.png");mask-image:url("assets/partner-logos.png");
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-size:var(--ms);mask-size:var(--ms);
  -webkit-mask-position:var(--mp);mask-position:var(--mp);
  opacity:.58;
  transition:opacity .3s ease,color .3s ease,translate .3s ease,filter .3s ease
}
/* spotlight: the band recedes, the mark under the cursor lifts and goes brand blue */
.logo-marquee:hover .cl{opacity:.28}
.logo-marquee .cl:hover{
  opacity:1;color:var(--accent);translate:0 -3px;
  filter:drop-shadow(0 3px 10px color-mix(in oklab,var(--accent) 45%,transparent))
}
.cl-1{--w:150px;--h:32px;--ms:567px 548px;--mp:-28px -35px}
.cl-2{--w:114px;--h:46px;--ms:737px 712px;--mp:-317px -48px}
.cl-3{--w:150px;--h:26px;--ms:718px 694px;--mp:-534px -56px}
.cl-4{--w:44px;--h:46px;--ms:287px 278px;--mp:-28px -58px}
.cl-5{--w:128px;--h:46px;--ms:419px 404px;--mp:-151px -89px}
.cl-6{--w:88px;--h:46px;--ms:471px 455px;--mp:-358px -101px}
.cl-7{--w:150px;--h:42px;--ms:713px 689px;--mp:-45px -335px}
.cl-8{--w:150px;--h:43px;--ms:762px 737px;--mp:-313px -349px}
.cl-9{--w:150px;--h:37px;--ms:825px 797px;--mp:-624px -387px}
.cl-10{--w:45px;--h:46px;--ms:446px 431px;--mp:-59px -286px}
.cl-11{--w:150px;--h:22px;--ms:412px 399px;--mp:-143px -274px}
.cl-12{--w:55px;--h:46px;--ms:404px 390px;--mp:-324px -251px}
.cl-13{--w:150px;--h:45px;--ms:594px 574px;--mp:-38px -502px}
.cl-14{--w:150px;--h:38px;--ms:381px 368px;--mp:-123px -317px}
.cl-15{--w:150px;--h:32px;--ms:628px 607px;--mp:-458px -541px}

/* forced colours strips background-image but keeps background-color, so the
   masked marks survive as long as they are painted in a system colour */
@media (forced-colors:active){
  .cl,.logo-marquee:hover .cl{background-color:CanvasText;opacity:1}
  .logo-marquee .cl:hover{background-color:Highlight}
}

/* ---- filter chips ---- */
.chips{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:center;margin-block-end:2.5rem}
.chip{
  display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;
  padding:.6rem 1.05rem;border-radius:999px;border:1px solid var(--line);background:#fff;
  color:var(--ink);font:700 .9rem/1 inherit;font-family:inherit;
  transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease
}
.chip i{font-style:normal;font-size:.72rem;font-weight:800;color:var(--muted);letter-spacing:.04em}
.chip:hover{border-color:var(--accent);transform:translateY(-2px)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.chip[aria-pressed="true"] i{color:var(--accent)}

/* ---- richer portfolio cards ---- */
.work-grid .thumb{overflow:clip}
.thumb-img{transition:transform .45s cubic-bezier(.2,.7,.3,1)}
.work-grid .thumb:hover .thumb-img{transform:scale(1.07)}
.work-grid .thumb::after{
  background:linear-gradient(180deg,transparent 35%,rgba(20,22,26,.82));
  transition:opacity .25s ease
}
.thumb-cap{
  position:absolute;inset-inline:0;inset-block-end:0;z-index:3;
  display:grid;gap:.15rem;padding:.9rem 1rem;text-align:start;color:#fff;
  transform:translateY(6px);opacity:.92;transition:transform .25s ease,opacity .25s ease
}
.work-grid .thumb:hover .thumb-cap{transform:none;opacity:1}
.thumb-cap strong{font-size:.98rem;letter-spacing:-.02em;line-height:1.2}
.thumb-cap em{
  font-style:normal;font-size:.78rem;color:rgba(255,255,255,.78);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.work-grid .thumb .play{
  transition:background .2s ease,color .2s ease,scale .2s ease;
  inset-block-start:42%
}
.work-grid .thumb:hover .play{background:var(--accent);color:#fff;scale:1.12}

/* twelve chips wrap into six rows on a phone: scroll them sideways instead */
@media (max-width:700px){
  .chips{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;padding-block-end:.35rem}
  .chips::-webkit-scrollbar{display:none}
  .chip{flex:0 0 auto}
}

/* ---- hover preview ---- */
.thumb-preview{
  position:absolute;inset:0;inline-size:100%;block-size:100%;border:0;z-index:2;
  object-fit:cover;
  pointer-events:none;                 /* the click still belongs to the button */
  opacity:0;animation:bm-fade .35s ease .1s forwards;background:#14161a
}
@keyframes bm-fade{to{opacity:1}}
.thumb.is-previewing .thumb-img{transform:scale(1)}

.thumb.is-previewing .thumb-cap{z-index:4}
.thumb.is-previewing::after{z-index:3;background:linear-gradient(180deg,transparent 55%,rgba(20,22,26,.8))}
.work-grid .thumb .play{opacity:1;transition:background .2s ease,color .2s ease,scale .2s ease,opacity .2s ease}
.work-grid .thumb.is-previewing .play{opacity:0;scale:.9}

/* =====================================================================
   Lemonlight pass — the reference site runs a near-black hero and
   portfolio band against white/#f5f5f7 content sections, pill buttons,
   and a 68/76 display scale. Numbers below were measured off
   lemonlight.com at 1440px, not eyeballed.
   ===================================================================== */

/* section rhythm: they sit at 90–120px block padding */
.section{padding-block:clamp(4.5rem,7vw,7.5rem)}

/* --- header: dark, translucent, sticky --- */
.site-header{
  background:rgba(22,22,23,.86);
  -webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);
  border-block-end:1px solid rgba(255,255,255,.09)
}
.site-nav a,.mobile-nav a{color:#f5f5f7}
.site-nav a:hover{color:#fff;opacity:.75}
.header-cta .btn-ghost{color:#f5f5f7}
.nav-toggle span{background:#f5f5f7}
.mobile-nav{background:var(--dark);border-block-start-color:rgba(255,255,255,.09)}

/* --- hero: full-bleed dark, centred, media below the copy --- */
.hero{
  background:var(--dark);color:#a1a1a6;text-align:center;
  padding-block:clamp(4.5rem,8vw,7rem) clamp(3rem,6vw,5.5rem)
}
.hero .wrap{display:grid;gap:clamp(2.5rem,5vw,3.75rem)}
.hero-copy{max-inline-size:900px;margin-inline:auto}
.hero h1{color:#f5f5f7}
.hero .hl{color:var(--accent-on-dark)}
.hero .eyebrow{color:var(--accent-on-dark)}
.hero .lede{color:#a1a1a6;font-size:1.2rem;margin-inline:auto;max-inline-size:58ch}
.hero-actions{justify-content:center}
.hero-media{inline-size:100%}
.hero-video{box-shadow:0 0 50px rgba(0,0,0,.55)}

/* --- ink sections (portfolio band, closing CTA) --- */
.section-ink{background:var(--dark)}
.cta{background:var(--dark)}
.section-ink h2,.section-ink h3,.section-ink strong{color:#f5f5f7}
.section-ink .section-sub{color:#a1a1a6}
.section-ink .eyebrow{color:var(--accent-on-dark)}
.section-ink .chip{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.18);color:#f5f5f7}
.section-ink .chip i{color:#86868b}
.section-ink .chip:hover{border-color:var(--accent-on-dark)}
.section-ink .chip[aria-pressed="true"]{background:#fff;border-color:#fff;color:var(--ink)}
.section-ink .chip[aria-pressed="true"] i{color:var(--accent)}
.section-ink .car-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.22);color:#fff}
.section-ink .car-btn:hover{background:#fff;border-color:#fff;color:var(--ink)}
.section-ink .btn-outline{border-color:rgba(255,255,255,.55);color:#fff}
.section-ink .btn-outline:hover{background:#fff;color:var(--ink);border-color:#fff}

/* --- stats read as a light band on the reference, not an ink one --- */
.stats{background:var(--bg);color:var(--body);border-block:1px solid var(--line)}
.stat strong{color:var(--ink)}
.stat span{color:var(--muted)}

/* --- footer matches their #f5f5f7 base --- */
.site-footer{background:var(--bg-alt);color:var(--body);border-block-start:1px solid var(--line)}
.footer-grid h4{color:var(--ink)}
.footer-grid a,.footer-bottom a{color:var(--body)}
.footer-grid a:hover,.footer-bottom a:hover{color:var(--accent)}
.footer-brand .logo-text{color:var(--ink)}
.footer-bottom{border-block-start-color:var(--line)}

/* ---- hero poster wall ----
   230x350 portrait cards, two rows counter-sliding, bleeding past both edges
   of the viewport like the reference site's reel wall. */
.hero{padding-block-end:0;overflow:clip}
.hero .wrap{grid-template-columns:minmax(0,1fr)}
.pw-row{min-inline-size:0}
.poster-wall{
  display:grid;gap:20px;
  inline-size:100vw;margin-inline:calc(50% - 50vw);   /* break out of the container */
  padding-block-start:.5rem;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)
}
.pw-row{overflow:clip;padding-block:26px;margin-block:-26px}   /* headroom for the hover scale, without moving the row */
.pw-track{display:flex;gap:20px;inline-size:max-content}
.pw-left .pw-track{animation:pw-slide 64s linear infinite}
.pw-right .pw-track{animation:pw-slide 78s linear infinite reverse}
:is(.poster-wall,.hero-stage):hover .pw-track{animation-play-state:paused}
@keyframes pw-slide{from{transform:translateX(0)}to{transform:translateX(calc(-50% - 10px))}}
.pw-card{
  --pw-w:230px;--pw-h:350px;
  position:relative;
  flex:0 0 auto;inline-size:var(--pw-w);block-size:var(--pw-h);border-radius:12px;overflow:clip;
  background:#000;box-shadow:0 10px 30px rgba(0,0,0,.45);
  transition:box-shadow .3s ease,scale .35s ease
}
.pw-card img{
  inline-size:100%;block-size:100%;object-fit:cover;display:block;opacity:.92;
  transition:opacity .35s ease
}

/* ---- hover preview on the wall ----
   A 16:9 player has to be blown up to cover a portrait card, so the frame is
   sized off the card's own height (--pw-h) and centred; the card clips the
   overhang. pointer-events stay off it so the card keeps the hover. */
.pw-frame{
  position:absolute;top:50%;left:50%;translate:-50% -50%;z-index:1;
  inline-size:calc(var(--pw-h) * 16 / 9);block-size:var(--pw-h);
  border:0;background:#000;pointer-events:none;
  opacity:0;animation:bm-fade .4s ease .12s forwards
}
.pw-card:is(:hover,.is-playing){
  scale:1.12;z-index:3;box-shadow:0 22px 55px rgba(0,0,0,.65)
}
/* accent ring, drawn over the frame so it survives the video */
.pw-card::after{
  content:'';position:absolute;inset:0;z-index:2;pointer-events:none;
  border-radius:inherit;box-shadow:inset 0 0 0 0 var(--accent-on-dark);
  transition:box-shadow .3s ease
}
.pw-card:is(:hover,.is-playing)::after{box-shadow:inset 0 0 0 2px var(--accent-on-dark)}

@media (max-width:820px){
  .pw-card{--pw-w:90px;--pw-h:138px;border-radius:8px}
  .pw-track,.poster-wall{gap:10px}
}
@media (max-width:520px){
  .pw-card{--pw-w:78px;--pw-h:120px}
  .pw-track,.poster-wall{gap:8px}
}
@media (prefers-reduced-motion:reduce){
  .pw-track{animation:none}
  .pw-row{overflow-x:auto;scrollbar-width:none}
}

/* the studio section now runs the banner clip instead of a grey placeholder */
.reel-block{
  aspect-ratio:1280/300;background:var(--dark);overflow:clip;
  border-radius:var(--r-lg);box-shadow:var(--shadow-lg)
}
.reel-video{inline-size:100%;block-size:100%;object-fit:cover;display:block}

/* ---- hero stage: showreel panel layered over the sliding poster row ---- */
.hero-stage{display:grid;place-items:center;isolation:isolate}
.hero-stage > *{grid-area:1/1}
.hero-stage .poster-wall{inline-size:100vw;justify-self:center}
.hero-stage .pw-card img{opacity:.55}
.hero-stage .poster-wall:hover .pw-card img{opacity:.3}
.hero-stage .poster-wall .pw-card:is(:hover,.is-playing) img{opacity:1}
.hero-reel,.hero-reel-frame{
  z-index:2;inline-size:min(876px,92%);aspect-ratio:16/9;
  border:0;padding:0;display:block;position:relative;overflow:clip;background:#000;
  border-radius:10px 10px 0 0;box-shadow:0 24px 70px rgba(0,0,0,.62)
}
.hero-reel{cursor:pointer}
.hero-reel img{inline-size:100%;block-size:100%;object-fit:cover;display:block}
.hero-reel::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.05) 40%,rgba(0,0,0,.7))
}
.hero-reel .play{z-index:3;transition:background .2s ease,color .2s ease,scale .2s ease}
.hero-reel:hover .play{background:var(--accent);color:#fff;scale:1.08}
.hero-reel-cap{
  position:absolute;inset-inline:0;inset-block-end:0;z-index:3;
  padding:1.1rem 1.4rem;text-align:start;color:#fff;font-weight:600;font-size:.98rem
}
@media (max-width:820px){
  .hero-reel,.hero-reel-frame{border-radius:8px 8px 0 0}
  .hero-reel-cap{font-size:.86rem;padding:.8rem 1rem}
}

/* showreel while it is playing itself: drop the play badge, keep the caption
   and a lighter scrim so the title stays readable over moving footage */
.hero-reel.is-previewing .play{opacity:0;scale:.9}
.hero-reel.is-previewing::after{background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.72))}
.hero-reel.is-previewing:hover .play{opacity:1;scale:1;background:var(--accent);color:#fff}

/* comfortable touch targets on phones */
@media (max-width:820px){
  .chip{padding-block:.72rem}
  .nav-toggle{padding:.85rem .6rem}
}

/* ---- closing the last gaps against the reference ----
   Their section heads run left, not centred; their cards are 8-10px with no
   shadow; h3 sits at 28px. Small card text keeps its own smaller heading size
   so the tighter grids do not blow out. */
.section-head{max-inline-size:760px}
.section-head.center{margin-inline:0;text-align:start}
.section-head.center.is-centred{margin-inline:auto;text-align:center}

.phase,.crew-card,.type-grid a,.ind-grid a{
  border-radius:10px;box-shadow:none
}
.type-grid a:hover,.ind-grid a:hover{box-shadow:none}
.pw-card{border-radius:10px}
.work-grid .thumb,.work-grid iframe{border-radius:10px}

.prop h3,.phase h3,.member h3,.work h3,.crew-card h3{
  font-size:1.22rem;line-height:1.3
}

/* ---- v8 additions ---- */
/* video types: four cards, one row on desktop, title on one line */
.type-grid-4{grid-template-columns:repeat(4,1fr)}
.type-grid-4 a{white-space:nowrap}
@media (max-width:980px){.type-grid-4{grid-template-columns:repeat(2,1fr)}.type-grid-4 a{white-space:normal}}
@media (max-width:560px){.type-grid-4{grid-template-columns:1fr}}

/* trust logos: grouped rows, image when assets/logos/<slug>.svg exists,
   styled text wordmark when it does not */
.logos-group{margin-block:1.6rem .9rem}
.logos-group:first-child{margin-block-start:0}
.logo-mark{display:inline-flex;align-items:center}
.logo-mark.has-img{color:transparent}
.logo-mark img{block-size:26px;inline-size:auto;object-fit:contain;filter:grayscale(1) opacity(.65)}
.logo-mark:hover img{filter:grayscale(1) opacity(1)}

/* team bios */
.member-bio{margin-block-start:.5rem;font-size:.9rem;color:var(--muted)}

/* track record reads as words now, not counters */
.stats .stat strong{font-size:clamp(1.05rem,1.8vw,1.35rem);text-transform:uppercase;letter-spacing:.08em}

/* camera crew is a single column: keep the bullet list readable */
#crew .tick{max-inline-size:44rem}


/* ---- v10 build handoff (2026-09-17) ---- */

/* Trust logos: two rows, no headings, monochrome grey at a fixed 30px cap
   height (Nagomi's origami mark runs 38px, set per-brand in videos.js). */
.logos{padding-block:2.5rem}
#logo-wall{display:grid;gap:1.75rem}
.logo-row{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:1.25rem 3rem;color:#9aa0a8;font-weight:800;font-size:1.05rem;letter-spacing:-.02em
}
.logo-mark{display:inline-flex;align-items:center}
.logo-mark.has-img{color:transparent}
.logo-mark img{block-size:30px;inline-size:auto;object-fit:contain}

/* Gallery cards carry the video type under the title */
.thumb-cap i{
  font-style:normal;display:block;margin-block-start:.15rem;
  font-size:.76rem;font-weight:700;letter-spacing:.04em;color:rgba(255,255,255,.72)
}

/* Video types: four cards, one row on desktop, title on one line */
.type-grid-4{grid-template-columns:repeat(4,1fr)}
.type-grid-4 a{white-space:nowrap}
@media (max-width:980px){.type-grid-4{grid-template-columns:repeat(2,1fr)}.type-grid-4 a{white-space:normal}}
@media (max-width:560px){.type-grid-4{grid-template-columns:1fr}}

/* Team: the studio story sits centred above the two member cards */
.team-story{
  max-inline-size:80ch;margin-inline:auto;margin-block-end:3rem;
  text-align:start;font-size:1.06rem
}
.team-story p{margin-block-end:0}
.member-bio{margin-block-start:.5rem;font-size:.92rem;color:var(--muted)}

/* Camera crew runs full width: keep the bullet list readable */
#crew .tick{max-inline-size:44rem}

/* Footer is dark (v10) */
.site-footer{background:var(--dark);color:#8b9099;border-block-start:0}
.site-footer .footer-grid{grid-template-columns:1.6fr 1fr}
.site-footer .footer-grid h4{color:#fff}
.site-footer a{color:#8b9099}
.site-footer a:hover{color:var(--accent-on-dark)}
.footer-logo{block-size:34px;inline-size:auto;margin-block-end:1.1rem}
.footer-line{color:#fff;font-weight:600;max-inline-size:46ch}
.site-footer .muted{max-inline-size:52ch}
.footer-social{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-block-start:1.25rem}
.footer-social img{inline-size:20px;block-size:20px;object-fit:contain;filter:brightness(0) invert(1) opacity(.7)}
.footer-social a:hover img{filter:brightness(0) invert(1)}
.footer-bottom{border-block-start:1px solid rgba(255,255,255,.12)}
@media (max-width:860px){.site-footer .footer-grid{grid-template-columns:1fr}}

/* Client marks that only exist as raster files (Papaya, Nagomi, Cyberbit) are
   pushed to the same monochrome grey as the recoloured SVGs. */
.logo-mark img.is-raster{filter:grayscale(1) opacity(.55) contrast(1.1)}
.logo-row:hover .logo-mark img.is-raster,
.logo-mark:hover img.is-raster{filter:grayscale(1) opacity(.8) contrast(1.1)}

/* Header logo, scaled up (2026-09-20). It stays a touch smaller on phones so
   the burger keeps its room. */
@media (max-width:640px){.logo-img{block-size:52px}}

/* Hero strip: shorts-style portrait cards sliding sideways (2026-09-22).
   The row never stops on its own; hovering it holds it still and plays the
   card under the cursor. Reduced-motion gets a plain static row. */
.hero-strip{
  list-style:none;margin:0;padding:0;
  /* clip sideways only, so the hovered card can grow past the row */
  overflow:clip visible;
  inline-size:calc(100vw - 2.5rem);max-inline-size:1680px;
  margin-inline:calc(50% - min(50vw - 1.25rem, 840px));
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  /* room for the hovered card to grow without touching the next section */
  padding-block:3.25rem;margin-block:-2rem 1.5rem
}
.hero-track{display:flex;gap:1rem;inline-size:max-content;animation:hero-slide 110s linear infinite}
.hero-strip:hover .hero-track,.hero-strip:focus-within .hero-track{animation-play-state:paused}
@keyframes hero-slide{from{transform:translateX(0)}to{transform:translateX(calc(-50% - .5rem))}}

.hero-strip .work{flex:none;inline-size:clamp(170px,14vw,230px);position:relative}
.hero-strip .work:hover{z-index:5}
.hero-strip .thumb{
  inline-size:100%;aspect-ratio:9/16;padding:0;border:0;position:relative;display:block;
  border-radius:var(--r-lg);overflow:clip;background:#000;cursor:pointer;
  transition:transform .18s ease,box-shadow .18s ease
}
/* the card under the cursor grows above its neighbours */
.hero-strip .thumb:hover{transform:scale(1.32);box-shadow:0 22px 60px rgba(0,0,0,.6)}
.hero-strip .thumb-img{inline-size:100%;block-size:100%;object-fit:cover}
.hero-strip .thumb::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 55%,rgba(10,10,12,.78))
}
.hero-strip .thumb .play{z-index:3}
.hero-strip .thumb-cap{
  position:absolute;inset-block-end:0;inset-inline:0;z-index:2;padding:.8rem;
  display:grid;gap:.05rem;text-align:start
}
.hero-strip .thumb-cap strong{font-size:.95rem;font-weight:700;color:#fff;line-height:1.2}
.hero-strip .thumb-cap em{font-style:normal;font-size:.78rem;color:rgba(255,255,255,.78)}
.hero-strip iframe{position:absolute;inset-block-start:0;inset-inline-start:50%;
  /* a 16:9 player has to be this much wider than a 9:16 card to cover it */
  inline-size:316%;block-size:100%;translate:-50% 0;border:0;pointer-events:none}
@media (max-width:560px){.hero-track{gap:.7rem}}


/* hero hover previews */
/* a 16:9 player must be 316% of a 9:16 card to cover it edge to edge */
.hero-strip .thumb-preview{position:absolute;inset:0;inline-size:100%;block-size:100%;border:0;pointer-events:none;z-index:2;object-fit:cover}
.hero-strip .thumb.is-previewing .thumb-img{opacity:0}
.hero-strip .thumb.is-previewing .play{opacity:0}
.hero-strip .thumb .play{transition:opacity .2s ease}

/* client marks read black-and-white: the SVGs ship recoloured, the two raster
   marks are pushed to grayscale and darkened to match */
.logo-row{color:var(--ink)}
.logo-mark img{filter:none}
.logo-mark img.is-raster{filter:grayscale(1) contrast(1.15) brightness(.55)}
.logo-row:hover .logo-mark img.is-raster,
.logo-mark:hover img.is-raster{filter:grayscale(1) contrast(1.15) brightness(.35)}
.logo-mark{opacity:.72;transition:opacity .15s ease}
.logo-mark:hover{opacity:1}

/* Services intro: one line per thought, run together like the team story */
.story-lines p{margin-block-end:0}
.story-lines{max-inline-size:80ch}

/* contact rows carry no labels now — let the values start at the left edge */
.contact-list li{padding-inline-start:0}
.contact-list span{display:none}

/* Hero headline sits on exactly two lines: the break is explicit and the type
   is sized so neither half wraps again on a desktop width. */
.hero-copy{max-inline-size:1180px}
.hero h1{font-size:clamp(1.85rem,3.35vw,3.05rem);line-height:1.16}
@media (max-width:820px){.hero h1 br{display:none}}

/* Value cards sit on black: lift the body copy and soften the icon chips so
   they read against the dark instead of the white they were drawn for. */
.section-ink .prop p{color:#b8bcc4}
.section-ink .prop h3{color:#f5f5f7}
.section-ink .prop-ico{background:rgba(75,179,232,.14);color:var(--accent-on-dark)}

/* Camera crew on black: lift the lede and the ticked list off the dark */
#crew.section-ink .lede{color:#b8bcc4}
#crew.section-ink .tick{color:#dcdfe4}
#crew.section-ink .tick li::before{color:var(--accent-on-dark)}
#crew.section-ink .btn-primary{background:var(--accent)}
#crew.section-ink .btn-primary:hover{background:#fff;color:var(--dark)}

/* Floating WhatsApp button — sits above the page on every scroll position.
   The number rides alongside the mark and folds away on small screens, where
   the round badge alone is the whole target. */
.wa-float{
  position:fixed;inset-block-end:1.5rem;inset-inline-end:1.5rem;z-index:80;
  display:inline-flex;align-items:center;justify-content:center;
  inline-size:58px;block-size:58px;border-radius:50%;
  background:#25d366;color:#fff;font-weight:700;font-size:1rem;
  box-shadow:0 8px 24px rgba(0,0,0,.28);
  transition:transform .15s ease,box-shadow .15s ease,background .15s ease
}
.wa-float:hover{background:#1ebe5b;transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.34);text-decoration:none}
.wa-float svg{flex:none}
.wa-float-label{white-space:nowrap}
@media (max-width:700px){
  .wa-float{inset-block-end:1rem;inset-inline-end:1rem;inline-size:54px;block-size:54px}
}
@media (prefers-reduced-motion:reduce){.wa-float{transition:none}}
