:root{
  --bg:#0B0B0B;
  --bg-2:#141414;
  --card:#1B1B1B;
  --border:#262626;
  --gold:#FFD400;
  --white:#FFFFFF;
  --gray:#9A9A9A;
  --gray-light:#C9C9C9;
  --ease-out:cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out:cubic-bezier(0.77, 0, 0.175, 1);
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{font-family:'Helvetica Neue', Arial, sans-serif; background:var(--bg); color:var(--white); overflow-x:hidden;}
a{color:inherit; text-decoration:none;}
img{max-width:100%;}

/* cursor ring */
.cursor-ring{
  position:fixed; top:0; left:0; width:30px; height:30px; border:1.5px solid var(--gold);
  border-radius:50%; pointer-events:none; z-index:100; opacity:0;
  transition:opacity 300ms ease;
  will-change:transform;
}

/* header */
header.site{
  background:rgba(0,0,0,.82); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 48px; position:sticky; top:0; z-index:50; border-bottom:1px solid var(--border);
}
header.site img{height:34px; width:auto; display:block;}
header.site nav{display:flex; gap:32px;}
header.site nav a{color:#EDEDED; font-size:13px; font-weight:600; letter-spacing:1px; text-transform:uppercase; position:relative; padding-bottom:3px;}
header.site nav a::after{
  content:''; position:absolute; left:0; bottom:0; height:2px; width:100%;
  background:var(--gold); transform:scaleX(0); transform-origin:left;
  transition:transform 200ms var(--ease-out);
}
header.site nav a.current::after{transform:scaleX(1);}
@media (hover:hover) and (pointer:fine){
  header.site nav a:hover::after{transform:scaleX(1);}
}

/* whatsapp fab */
.whatsapp-fab{
  position:fixed; right:24px; bottom:24px; z-index:60;
  width:56px; height:56px; border-radius:50%; background:#25D366;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 6px 20px rgba(0,0,0,.45);
  transition:transform 160ms var(--ease-out);
}
.whatsapp-fab:active{transform:scale(0.94);}
@media (hover:hover) and (pointer:fine){ .whatsapp-fab:hover{transform:scale(1.06);} }
.whatsapp-fab svg{width:28px; height:28px; fill:#fff;}

/* hero (home) */
.hero{padding:120px 48px 80px; position:relative; overflow:hidden;}
.hero::before{
  content:''; position:absolute; top:-220px; right:-220px; width:640px; height:640px;
  background:radial-gradient(circle, rgba(255,212,0,.13) 0%, transparent 70%);
  animation:pulse 7s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:.7;} 50%{opacity:1;}}
.hero .kicker, .hero h1 .line, .hero .sub, .hero .cta-row{
  opacity:0; transform:translateY(22px); filter:blur(8px);
  animation:rise 650ms var(--ease-out) forwards;
}
.hero .kicker{animation-delay:60ms;}
.hero h1 .line{display:block;}
.hero h1 .line:nth-child(1){animation-delay:150ms;}
.hero h1 .line:nth-child(2){animation-delay:260ms;}
.hero .sub{animation-delay:390ms;}
.hero .cta-row{animation-delay:500ms;}
@keyframes rise{to{opacity:1; transform:translateY(0); filter:blur(0);}}
.hero .kicker{color:var(--gold); font-size:13px; font-weight:700; letter-spacing:3px; text-transform:uppercase;}
.hero h1{font-weight:800; font-size:clamp(40px,6vw,80px); line-height:1.02; max-width:920px; margin-top:18px; letter-spacing:-1px;}
.hero h1 .hl{color:var(--gold);}
.hero .sub{max-width:560px; margin-top:22px; font-size:16px; line-height:1.7; color:var(--gray-light); font-weight:300;}
.hero .cta-row{display:flex; gap:16px; margin-top:36px;}

/* inner page hero */
.page-hero{padding:88px 48px 48px;}
.page-hero .kicker{color:var(--gold); font-size:12px; font-weight:700; letter-spacing:2px; text-transform:uppercase;}
.page-hero h1{font-weight:800; font-size:clamp(32px,4.5vw,56px); letter-spacing:-0.8px; margin-top:10px; line-height:1.05;}
.page-hero .sub{max-width:620px; margin-top:16px; font-size:15px; line-height:1.7; color:var(--gray-light); font-weight:300;}

/* buttons */
.btn-primary{
  background:var(--gold); color:#000; font-weight:700; font-size:13px; letter-spacing:1px;
  text-transform:uppercase; padding:15px 30px; display:inline-block; border:none; cursor:pointer;
  transition:transform 160ms var(--ease-out), background 200ms ease;
}
.btn-primary:active{transform:scale(0.97);}
@media (hover:hover) and (pointer:fine){ .btn-primary:hover{background:#fff;} }
.btn-ghost{
  border:1.5px solid #444; color:#fff; font-weight:700; font-size:13px; letter-spacing:1px;
  text-transform:uppercase; padding:14px 28px; display:inline-block; background:transparent; cursor:pointer;
  transition:transform 160ms var(--ease-out), border-color 200ms ease, color 200ms ease;
}
.btn-ghost:active{transform:scale(0.97);}
@media (hover:hover) and (pointer:fine){ .btn-ghost:hover{border-color:var(--gold); color:var(--gold);} }

/* marquee */
.marquee{border-top:1px solid var(--border); border-bottom:1px solid var(--border); overflow:hidden; padding:18px 0; background:var(--bg-2);}
.marquee-track{display:flex; gap:64px; width:max-content; animation:scroll 32s linear infinite;}
.marquee-track span{font-size:14px; font-weight:700; letter-spacing:2px; text-transform:uppercase; color:#858585; white-space:nowrap;}
@keyframes scroll{from{transform:translateX(0);} to{transform:translateX(-50%);}}

/* stats */
.stats{display:grid; grid-template-columns:repeat(4,1fr);}
.stats > div{text-align:center; padding:34px 12px; border-right:1px solid var(--border);}
.stats > div:last-child{border-right:none;}
.stats .num{font-weight:800; font-size:32px; color:var(--gold); font-variant-numeric:tabular-nums;}
.stats .label{font-weight:400; font-size:11px; letter-spacing:1.5px; text-transform:uppercase; margin-top:4px; color:var(--gray);}

/* sections */
.section{padding:72px 48px;}
.section-head{margin-bottom:28px;}
.section-head .num-label{color:var(--gold); font-size:12px; font-weight:700; letter-spacing:2px;}
.section-head h2{font-weight:800; font-size:28px; letter-spacing:-0.3px; margin-top:6px; display:inline-block;}
.section-head .rule{
  height:3px; width:64px; background:var(--gold); margin-top:10px;
  transform:scaleX(0); transform-origin:left;
  transition:transform 500ms var(--ease-out) 250ms;
}
.section-head.in .rule{transform:scaleX(1);}
.section-head p{color:var(--gray); font-size:14px; margin-top:10px; font-weight:300;}
.section-head .view-all{font-size:12px; font-weight:700; letter-spacing:1px; text-transform:uppercase; color:var(--gray-light); border-bottom:2px solid var(--gold); padding-bottom:2px;}

/* reveals */
.reveal{opacity:0; transform:translateY(18px); transition:opacity 600ms var(--ease-out), transform 600ms var(--ease-out);}
.reveal.in{opacity:1; transform:translateY(0);}
.reveal-clip{clip-path:inset(0 0 100% 0); transition:clip-path 700ms var(--ease-in-out);}
.reveal-clip.in{clip-path:inset(0 0 0 0);}

/* filters */
.filters{display:flex; flex-direction:column; gap:12px; margin-bottom:8px;}
.filter-row{display:flex; flex-wrap:wrap; gap:8px; align-items:center;}
.filter-row .fr-label{font-size:11px; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:var(--gray); width:80px; flex-shrink:0;}
.filter-row .pill-wrap{display:flex; flex-wrap:wrap; gap:8px;}
.pill{
  border:1px solid var(--border); background:var(--card); color:#DDD;
  padding:7px 16px; font-size:12px; font-weight:600; letter-spacing:.5px;
  cursor:pointer; border-radius:2px; font-family:inherit;
  transition:transform 120ms var(--ease-out), background 150ms ease, color 150ms ease, border-color 150ms ease;
}
.pill:active{transform:scale(0.95);}
@media (hover:hover) and (pointer:fine){ .pill:hover{border-color:var(--gold);} }
.pill.active{background:var(--gold); color:#000; border-color:var(--gold);}
.result-count{font-size:12px; color:var(--gray); margin-top:10px; font-variant-numeric:tabular-nums;}

/* project grid */
.grid{display:grid; grid-template-columns:repeat(4,1fr); gap:2px; margin-top:20px;}
@media (max-width:1000px){ .grid{grid-template-columns:repeat(3,1fr);} }
@media (max-width:700px){ .grid{grid-template-columns:repeat(2,1fr);} }
/* 16:9 tiles, matching the archive. A 1:1 square tile cut 44% of the width
   off a 16:9 source — a billboard became a centre crop of a billboard.
   Uniform tiles keep the grid clean; matching the source ratio keeps the
   composition intact. */
.pcard{
  position:relative; aspect-ratio:16/9; overflow:hidden; background:#111; cursor:pointer; display:block;
  opacity:1;
  transition:opacity 240ms var(--ease-out), transform 240ms var(--ease-out);
  will-change:transform;
}
.pcard.leaving{opacity:0; transform:scale(0.96); pointer-events:none; transition-duration:160ms;}
.pcard.entering{opacity:0; transform:scale(0.96);}
.pcard img{width:100%; height:100%; object-fit:cover; display:block; transition:transform 500ms var(--ease-out);}
.pcard .noimg{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  background:var(--card); color:#6A6A6A; font-weight:800; font-size:34px; letter-spacing:-1px;
}
@media (hover:hover) and (pointer:fine){
  .pcard:hover img{transform:scale(1.06);}
  .pcard:hover .overlay{opacity:1;}
  .pcard .overlay{opacity:.92; transition:opacity 250ms ease;}
}
.pcard .overlay{position:absolute; inset:0; background:linear-gradient(180deg, transparent 42%, rgba(0,0,0,.92) 100%); display:flex; flex-direction:column; justify-content:flex-end; padding:16px;}
.pcard .tags{display:flex; gap:6px; margin-bottom:8px; flex-wrap:wrap;}
.pcard .tag{background:var(--gold); color:#000; font-size:9px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; padding:3px 8px;}
.pcard .title{font-size:15px; font-weight:700; color:#fff;}

/* case study */
.case{padding:72px 48px; max-width:1100px;}
.case .crumb{font-size:12px; font-weight:700; letter-spacing:1px; text-transform:uppercase; color:var(--gray);}
.case .crumb a{color:var(--gold);}
.case h1{font-weight:800; font-size:clamp(34px,5vw,60px); letter-spacing:-1px; margin-top:14px; line-height:1.03;}
.case .tags{display:flex; gap:8px; margin-top:18px; flex-wrap:wrap;}
.case .tag{border:1px solid var(--border); color:var(--gray-light); font-size:11px; font-weight:600; letter-spacing:1px; text-transform:uppercase; padding:5px 12px;}
.case .tag.sector{background:var(--gold); color:#000; border-color:var(--gold);}
.case .body-copy{margin-top:36px; max-width:680px; font-size:16px; font-weight:300; line-height:1.85; color:var(--gray-light);}
.case .body-copy p{margin-bottom:1.2em;}
.case .body-copy strong{color:#fff; font-weight:600;}
/* ONE COLUMN, ZERO GAP — the projects are decks, not photo grids.
   Each project was built as a sequence of full-bleed slides stacked edge to
   edge so the whole case reads as a single continuous page. A two-column grid
   broke that twice over: it forced a left-right-left reading order instead of
   top-to-bottom, and the gutters cut the deck into separate tiles.
   Measured on Wix (alkayal, lidia): 1 column, 0px between every slide. */
.gallery{display:flex; flex-direction:column; align-items:center; gap:0; margin-top:48px;}
/* width:auto keeps each slide at its own native size — never upscaled past
   1:1, which is how Wix rendered them. max-width shrinks it on narrow screens. */
.gallery img{width:auto; max-width:100%; height:auto; display:block; background:#111;}
.no-media{color:#5a5a5a; font-size:13px; margin-top:40px; border:1px dashed var(--border); padding:24px; text-align:center;}
.case-nav{display:flex; justify-content:space-between; margin-top:64px; padding-top:24px; border-top:1px solid var(--border); font-size:13px; font-weight:700; letter-spacing:1px; text-transform:uppercase;}
.case-nav a{color:var(--gray-light);}
@media (hover:hover) and (pointer:fine){ .case-nav a:hover{color:var(--gold);} }

/* CTA band */
.cta-band{
  margin:72px 48px 0; padding:56px 48px; background:var(--gold); color:#000;
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:20px;
}
.cta-band h3{font-weight:800; font-size:26px; letter-spacing:-0.4px;}
.cta-band p{font-size:14px; margin-top:6px; font-weight:500;}
.cta-band .btn-dark{
  background:#000; color:var(--gold); font-weight:700; font-size:13px; letter-spacing:1px;
  text-transform:uppercase; padding:15px 30px; display:inline-block;
  transition:transform 160ms var(--ease-out);
}
.cta-band .btn-dark:active{transform:scale(0.97);}
@media (hover:hover) and (pointer:fine){ .cta-band .btn-dark:hover{transform:scale(1.03);} }

/* sector pills band */
.sectors-band{display:flex; flex-wrap:wrap; gap:10px;}
.sector-pill{border:1.5px solid #3a3a3a; color:#ddd; padding:9px 20px; font-size:12px; font-weight:700; letter-spacing:1px; text-transform:uppercase; transition:background .15s, color .15s, border-color .15s;}
@media (hover:hover) and (pointer:fine){ .sector-pill:hover{background:var(--gold); border-color:var(--gold); color:#000;} }

/* showreel */
.showreel{
  background:var(--bg-2); margin:0 48px; border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center; flex-direction:column;
  padding:80px 24px; text-align:center;
}
.showreel .play{
  width:76px; height:76px; border-radius:50%; border:2px solid var(--gold);
  display:flex; align-items:center; justify-content:center; margin-bottom:20px;
  cursor:pointer; transition:transform 180ms var(--ease-out), background 200ms ease;
}
.showreel .play:active{transform:scale(0.94);}
@media (hover:hover) and (pointer:fine){ .showreel .play:hover{transform:scale(1.08); background:rgba(255,212,0,.08);} }
.showreel .play svg{width:24px; height:24px; fill:var(--gold); margin-left:4px;}
.showreel h3{font-size:22px; font-weight:700;}
.showreel p{color:var(--gray); font-size:13px; margin-top:8px;}

/* forms */
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px; max-width:760px; margin-top:32px;}
.form-grid .full{grid-column:1 / -1;}
@media (max-width:700px){ .form-grid{grid-template-columns:1fr;} }
.field label{display:block; font-size:11px; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:var(--gray); margin-bottom:8px;}
.field input, .field select, .field textarea{
  width:100%; background:var(--card); border:1px solid var(--border); color:#fff;
  padding:13px 14px; font-size:14px; font-family:inherit; border-radius:2px;
  transition:border-color 150ms ease;
}
.field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--gold); outline-offset:3px; border-color:var(--gold);}
.field textarea{min-height:120px; resize:vertical;}

/* footer */
footer.site{background:#000; padding:36px 48px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; border-top:1px solid var(--border); margin-top:72px;}
footer.site .addr{font-size:12px; font-weight:300; line-height:1.8; color:var(--gray);}
footer.site .brand-name{font-weight:700; font-size:13px; color:#fff;}
/* Six labels do not fit one line under ~400px. Without wrapping, the row ran
   past the viewport and YouTube was cut off — invisibly, because the body hides
   horizontal overflow, so the document still measured 390px wide. Wrapping is
   the fix; more clipping would only hide it better. */
footer.site .social{
  display:flex; flex-wrap:wrap; gap:10px 14px; min-width:0; max-width:100%;
  font-size:12px; font-weight:600; color:var(--gray);
}
@media (hover:hover) and (pointer:fine){ footer.site .social a:hover{color:var(--gold);} }

@media (max-width:700px){
  header.site{padding:14px 20px;}
  header.site nav{gap:16px;}
  .hero, .page-hero, .section, .case{padding-left:20px; padding-right:20px;}
  .showreel, .cta-band{margin-left:20px; margin-right:20px;}
  .stats{grid-template-columns:repeat(2,1fr);}
  .stats > div:nth-child(2){border-right:none;}
}

@media (prefers-reduced-motion: reduce){
  .hero .kicker, .hero h1 .line, .hero .sub, .hero .cta-row{animation:fadeOnly 400ms ease forwards;}
  .marquee-track{animation:none;}
  .reveal{transition:opacity 300ms ease;}
  .reveal, .reveal.in{transform:none;}
  .reveal-clip{transition:opacity 300ms ease; clip-path:none; opacity:0;}
  .reveal-clip.in{opacity:1;}
  .pcard, .pcard img{transition:opacity 200ms ease;}
  .cursor-ring{display:none;}
}
@keyframes fadeOnly{to{opacity:1; transform:none; filter:none;}}

/* ═══════════════ v8: HERO WITH WORK WALL ═══════════════ */
.hero-v8{position:relative; min-height:100vh; display:flex; align-items:center; overflow:hidden; padding:130px 48px 90px;}
.wall{position:absolute; inset:0; display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:10px; opacity:.34;}
.wall .col{display:flex; flex-direction:column; gap:10px; will-change:transform;}
.wall .col img{width:100%; aspect-ratio:4/3; object-fit:cover; filter:grayscale(1) contrast(1.05);}
.wall .col.a{animation:driftUp 46s linear infinite;}
.wall .col.b{animation:driftDown 52s linear infinite;}
@keyframes driftUp{from{transform:translateY(0);} to{transform:translateY(-50%);}}
@keyframes driftDown{from{transform:translateY(-50%);} to{transform:translateY(0);}}
.veil{position:absolute; inset:0; background:
  radial-gradient(ellipse 70% 60% at 30% 50%, rgba(11,11,11,.97) 0%, rgba(11,11,11,.82) 45%, rgba(11,11,11,.6) 100%),
  linear-gradient(180deg, rgba(11,11,11,.9) 0%, transparent 25%, transparent 60%, rgba(11,11,11,.98) 100%);}
.glow{position:absolute; top:12%; right:-8%; width:620px; height:620px; background:radial-gradient(circle, rgba(255,212,0,.16) 0%, transparent 68%); animation:pulse 8s ease-in-out infinite; pointer-events:none;}
.hero-inner{position:relative; z-index:2; max-width:1020px;}
.fade{opacity:0; transform:translateY(24px); filter:blur(10px); animation:rise 750ms var(--ease-out) forwards;}
.hero-v8 .kicker{display:inline-flex; align-items:center; gap:10px; color:var(--gold); font-size:12px; font-weight:700; letter-spacing:3px; text-transform:uppercase; animation-delay:60ms;}
.hero-v8 .kicker .dot{width:7px; height:7px; background:var(--gold); border-radius:50%; animation:blink 2.4s ease-in-out infinite;}
@keyframes blink{0%,100%{opacity:1;} 50%{opacity:.25;}}
.hero-v8 h1{font-weight:800; font-size:clamp(42px,7vw,98px); line-height:.99; letter-spacing:-2.4px; margin-top:22px;}
.hero-v8 h1 .l1{display:block; animation-delay:150ms;}
.hero-v8 h1 .l2{display:block; animation-delay:270ms;}
.rot{display:inline-grid; vertical-align:top; color:var(--gold);}
.rot > span{grid-area:1/1; opacity:0; transform:translateY(.42em) rotateX(-55deg); transform-origin:top center; animation:word 12s cubic-bezier(0.23,1,0.32,1) infinite;}
.rot > span:nth-child(1){animation-delay:0s;}
.rot > span:nth-child(2){animation-delay:3s;}
.rot > span:nth-child(3){animation-delay:6s;}
.rot > span:nth-child(4){animation-delay:9s;}
@keyframes word{0%{opacity:0; transform:translateY(.42em) rotateX(-55deg);} 3%,22%{opacity:1; transform:none;} 26%,100%{opacity:0; transform:translateY(-.42em) rotateX(55deg);}}
.hero-v8 .sub{max-width:600px; margin-top:26px; font-size:17px; line-height:1.65; color:var(--gray-light); font-weight:300; animation-delay:420ms;}
.hero-v8 .sub b{color:var(--white); font-weight:600;}
.hero-v8 .cta-row{display:flex; gap:14px; margin-top:38px; flex-wrap:wrap; animation-delay:540ms;}
.hero-v8 .proof{display:flex; gap:34px; margin-top:52px; flex-wrap:wrap; animation-delay:660ms;}
.hero-v8 .proof > div{border-left:2px solid var(--gold); padding-left:14px;}
.hero-v8 .proof .p-n{font-size:26px; font-weight:800; letter-spacing:-.5px; font-variant-numeric:tabular-nums;}
.hero-v8 .proof .p-l{font-size:11px; font-weight:500; letter-spacing:1.4px; text-transform:uppercase; color:var(--gray); margin-top:3px;}
.scroll-cue{position:absolute; bottom:28px; left:50%; transform:translateX(-50%); z-index:2; display:flex; flex-direction:column; align-items:center; gap:8px; opacity:0; animation:rise 700ms var(--ease-out) 900ms forwards;}
.scroll-cue span{font-size:10px; font-weight:700; letter-spacing:2.5px; text-transform:uppercase; color:var(--gray);}
.scroll-cue .line{width:1px; height:38px; background:linear-gradient(180deg,var(--gold),transparent); animation:drop 1.9s ease-in-out infinite;}
@keyframes drop{0%{transform:scaleY(.3); transform-origin:top;} 50%{transform:scaleY(1); transform-origin:top;} 51%{transform-origin:bottom;} 100%{transform:scaleY(.3); transform-origin:bottom;}}

/* ═══════════════ RESULTS BAND ═══════════════ */
.results{background:var(--gold); color:#000; padding:64px 48px;}
.results .rl{font-size:12px; font-weight:700; letter-spacing:2.5px; text-transform:uppercase; opacity:.65;}
.results .rgrid{display:grid; grid-template-columns:repeat(3,1fr); gap:2px; margin-top:26px; background:rgba(0,0,0,.18);}
.results .rgrid > div{background:var(--gold); padding:26px 24px;}
.results .big{font-size:clamp(36px,4.6vw,56px); font-weight:800; letter-spacing:-2px; line-height:1;}
.results .cap{font-size:14px; font-weight:600; margin-top:10px; line-height:1.5;}
.results .who{font-size:11px; font-weight:700; letter-spacing:1.6px; text-transform:uppercase; margin-top:8px; opacity:.6;}

/* ═══════════════ CAPABILITY CARDS ═══════════════ */
.caps{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:2px; background:var(--border);}
.cap-card{background:var(--bg-2); padding:32px 28px; display:block; transition:background 220ms ease;}
@media (hover:hover) and (pointer:fine){ .cap-card:hover{background:var(--card);} }
.cap-card .n{color:var(--gold); font-size:11px; font-weight:700; letter-spacing:2px;}
.cap-card h2.cap-h, .cap-card h3{font-size:21px; font-weight:800; letter-spacing:-.4px; margin-top:10px;}
.cap-card .promise{color:var(--gold); font-size:13px; font-weight:500; margin-top:10px; line-height:1.5;}
.cap-card p{color:var(--gray-light); font-size:14px; font-weight:300; line-height:1.75; margin-top:12px;}
.cap-card .svc{display:flex; flex-wrap:wrap; gap:6px; margin-top:16px;}
.cap-card .svc span{border:1px solid var(--border); color:var(--gray); font-size:10px; font-weight:600; letter-spacing:.8px; text-transform:uppercase; padding:4px 9px;}

/* ═══════════════ GROUPED CLIENT CREDIBILITY ═══════════════ */
.client-groups{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:2px; background:var(--border);}
.cgroup{background:var(--bg-2); padding:26px 24px;}
.cgroup h4{color:var(--gold); font-size:11px; font-weight:700; letter-spacing:2px; text-transform:uppercase;}
.cgroup p{margin-top:12px; font-size:14px; font-weight:500; line-height:1.9; color:var(--gray-light);}

/* ═══════════════ FEATURED CASE (evidence layer) ═══════════════ */
.fcase{display:grid; grid-template-columns:1.1fr 1fr; gap:2px; background:var(--border); margin-bottom:2px;}
.fcase .media{position:relative; overflow:hidden; background:#111; min-height:340px;}
.fcase .media img{width:100%; height:100%; object-fit:cover; position:absolute; inset:0; transition:transform 600ms var(--ease-out);}
@media (hover:hover) and (pointer:fine){ .fcase:hover .media img{transform:scale(1.05);} }
.fcase .body{background:var(--bg-2); padding:38px 34px; display:flex; flex-direction:column; justify-content:center;}
.fcase .eyebrow{color:var(--gold); font-size:11px; font-weight:700; letter-spacing:2px; text-transform:uppercase;}
.fcase h3{font-size:clamp(22px,2.6vw,32px); font-weight:800; letter-spacing:-.7px; margin-top:10px; line-height:1.1;}
.fcase .client{font-size:13px; color:var(--gray); margin-top:8px; font-weight:500;}
.fcase .rrow{display:flex; gap:26px; margin-top:24px; flex-wrap:wrap;}
.fcase .rrow > div{border-left:2px solid var(--gold); padding-left:12px;}
.fcase .rrow .f{font-size:22px; font-weight:800; letter-spacing:-.5px;}
.fcase .rrow .c{font-size:11px; color:var(--gray); margin-top:2px; max-width:150px; line-height:1.4;}
.fcase .more{margin-top:24px; font-size:12px; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; color:var(--gold);}
@media (max-width:860px){ .fcase{grid-template-columns:1fr;} .fcase .media{min-height:240px;} }

/* case study structured sections */
.cs-block{margin-top:40px; max-width:760px;}
.cs-block h2{font-size:12px; font-weight:700; letter-spacing:2.4px; text-transform:uppercase; color:var(--gold);}
.cs-block p{margin-top:12px; font-size:16px; font-weight:300; line-height:1.85; color:var(--gray-light);}
.cs-block ul{margin-top:12px; padding-left:0; list-style:none;}
.cs-block li{font-size:15px; font-weight:300; line-height:1.7; color:var(--gray-light); padding-left:20px; position:relative; margin-bottom:10px;}
.cs-block li::before{content:'—'; position:absolute; left:0; color:var(--gold);}
.cs-results{display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:2px; background:var(--border); margin-top:20px;}
.cs-results > div{background:var(--gold); color:#000; padding:24px 22px;}
.cs-results .f{font-size:32px; font-weight:800; letter-spacing:-1.2px; line-height:1;}
.cs-results .c{font-size:12px; font-weight:600; margin-top:8px; line-height:1.5;}

/* why-us band */
.why{display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:2px; background:var(--border);}
.why > div{background:var(--bg-2); padding:30px 26px;}

.why h3.why-h, .why h4{font-size:17px; font-weight:800; letter-spacing:-.3px;}
.why p{color:var(--gray-light); font-size:14px; font-weight:300; line-height:1.75; margin-top:10px;}

@media (max-width:900px){
  .results .rgrid{grid-template-columns:1fr;}
  .wall{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:640px){
  .hero-v8{padding:110px 20px 80px; min-height:auto;}
  .wall{grid-template-columns:repeat(2,1fr); opacity:.22;}
  .results{padding-left:20px; padding-right:20px;}
  .hero-v8 .proof{gap:20px;}
}
@media (prefers-reduced-motion: reduce){
  .wall .col.a, .wall .col.b, .glow, .scroll-cue .line, .hero-v8 .kicker .dot{animation:none;}
  .fade{animation:fadeOnly 400ms ease forwards;}
  .rot > span{animation:none; opacity:0;}
  .rot > span:first-child{opacity:1;}
}

/* ═══════════════ ACCESSIBILITY PASS (ui-ux-pro-max audit) ═══════════════ */

/* P1 — visible focus on every interactive control. Default outline is
   effectively invisible against #0B0B0B. */
:focus-visible{
  outline:3px solid var(--gold);
  outline-offset:3px;
  border-radius:2px;
}
.pcard:focus-visible, .fcase:focus-visible, .cap-card:focus-visible{outline-offset:-3px;}

/* skip link — /work has 40+ focus stops before main content */
.skip-link{
  position:absolute; left:16px; top:-60px; z-index:200;
  background:var(--gold); color:#000; font-size:13px; font-weight:700;
  letter-spacing:1px; text-transform:uppercase; padding:14px 22px;
  transition:top 160ms var(--ease-out);
}
.skip-link:focus{top:16px;}

/* P2 — touch targets. Web min is 24px, but the filter pills are the primary
   interaction on mobile: meet the 44pt/48dp platform guidance instead. */
@media (pointer: coarse){
  .pill{min-height:44px; padding:11px 18px;}
  .sector-pill{min-height:44px; display:inline-flex; align-items:center;}
  header.site nav a{min-height:44px; display:inline-flex; align-items:center;}
  footer.site .social a{min-height:44px; display:inline-flex; align-items:center;}
  .case-nav a{min-height:44px; display:inline-flex; align-items:center;}
}

/* live status + empty state for the filter */
.result-count{min-height:20px;}
.empty-state{
  border:1px dashed var(--border); padding:44px 28px; text-align:center; margin-top:20px;
}
.empty-state p{color:var(--gray-light); font-size:15px; font-weight:300;}
.empty-state button{margin-top:18px;}

/* Client artwork renders at ITS OWN aspect ratio — never a layout ratio.
   This previously forced every gallery image into a 4:3 box with
   object-fit:cover. The archive is 16:9, so that silently cropped 25% of the
   width — 12.5% off each side — on 684 of 687 images, slicing billboards,
   key visuals and logo lockups. Wix displayed them 1:1 with zero crop.
   Layout must adapt to the work; the work is not cropped to fit the layout. */
.gallery img{width:auto; max-width:100%; height:auto; display:block; background:var(--card);}

/* the fixed WhatsApp button must never obscure a focused control */
@media (max-width:640px){
  .whatsapp-fab{width:48px; height:48px; right:16px; bottom:16px;}
}

/* ═══════════════ MOBILE FIXES (reported from device testing) ═══════════════ */

/* Root cause of "projects don't view properly on mobile": the 5-item header nav
   was wider than the screen, forcing the whole document to scroll sideways.
   Below 860px the nav becomes a disclosure menu. */
.nav-toggle{
  display:none; background:transparent; border:1.5px solid #444; color:#fff;
  font-family:inherit; font-size:12px; font-weight:700; letter-spacing:1px;
  text-transform:uppercase; padding:10px 14px; min-height:44px; cursor:pointer;
  align-items:center; gap:8px; border-radius:2px;
}
.nav-toggle:active{transform:scale(.97);}

@media (max-width:860px){
  html, body{overflow-x:hidden;}
  header.site{flex-wrap:wrap; padding:12px 20px;}
  .nav-toggle{display:inline-flex;}
  header.site nav{
    display:none; width:100%; flex-direction:column; gap:0;
    margin-top:12px; border-top:1px solid var(--border);
  }
  header.site nav.open{display:flex;}
  header.site nav a{
    padding:15px 2px; min-height:48px; display:flex; align-items:center;
    border-bottom:1px solid var(--border); font-size:14px;
  }
  header.site nav a::after{display:none;}
  header.site nav a.current{color:var(--gold);}
}

/* Filters ate the screen on mobile — collapse them behind a toggle. */
.filter-toggle{
  display:none; width:100%; background:var(--card); border:1px solid var(--border);
  color:#fff; font-family:inherit; font-size:13px; font-weight:700; letter-spacing:1px;
  text-transform:uppercase; padding:14px 16px; min-height:48px; cursor:pointer;
  align-items:center; justify-content:space-between; border-radius:2px; margin-bottom:12px;
}
.filter-toggle .chev{transition:transform 200ms var(--ease-out);}
.filter-toggle[aria-expanded="true"] .chev{transform:rotate(180deg);}
.filter-toggle .badge{
  background:var(--gold); color:#000; font-size:11px; font-weight:700;
  padding:2px 8px; border-radius:2px; margin-left:8px;
}

@media (max-width:860px){
  .filter-toggle{display:flex;}
  .filters{display:none;}
  .filters.open{display:flex;}
  .filter-row{flex-direction:column; align-items:stretch; gap:8px;}
  .filter-row .fr-label{width:auto;}
  .pill-wrap{gap:6px;}
  .pill{padding:9px 13px; font-size:12px;}
}

/* Project galleries: never let an image push the page wider than the screen. */
.case, .gallery, .gallery img{max-width:100%;}
.gallery img{height:auto;}  /* deck layout: see .gallery above */
@media (max-width:700px){
  .gallery{gap:0; margin-top:32px;}   /* slides stay edge to edge on mobile too */
  .case-nav{flex-direction:column; gap:14px; align-items:flex-start;}
}

/* Clickable phone numbers */
footer.site .addr a, .contact-line a{color:var(--gray-light); border-bottom:1px solid #3a3a3a;}
@media (hover:hover) and (pointer:fine){
  footer.site .addr a:hover, .contact-line a:hover{color:var(--gold); border-color:var(--gold);}
}
@media (pointer:coarse){
  footer.site .addr a{display:inline-block; min-height:44px; line-height:44px;}
}

/* ═══════════════ SHOWREEL (click-to-load facade) ═══════════════ */
/* A full YouTube embed pulls ~1MB of player JS and sets tracking cookies on every
   homepage view. This shows the poster frame only, and loads the real player on click. */
.reel{
  position:relative; margin:0 48px; border:1px solid var(--border);
  background:var(--bg-2); overflow:hidden;
}
.reel-frame{position:relative; width:100%; aspect-ratio:16/9; display:block; cursor:pointer; border:0; padding:0; background:none;}
.reel-frame img{width:100%; height:100%; object-fit:cover; display:block; filter:grayscale(.25) contrast(1.02); transition:filter 400ms var(--ease-out), transform 600ms var(--ease-out);}
.reel-frame::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(11,11,11,.35) 0%, rgba(11,11,11,.2) 45%, rgba(11,11,11,.85) 100%);
}
.reel-play{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); z-index:2;
  width:88px; height:88px; border-radius:50%; border:2px solid var(--gold);
  background:rgba(11,11,11,.55); display:flex; align-items:center; justify-content:center;
  transition:transform 220ms var(--ease-out), background 220ms ease;
}
.reel-play svg{width:28px; height:28px; fill:var(--gold); margin-left:5px;}
.reel-meta{position:absolute; left:0; right:0; bottom:0; z-index:2; padding:26px 30px; text-align:left; pointer-events:none;}
.reel-meta h3{font-size:22px; font-weight:800; letter-spacing:-.3px; color:#fff;}
.reel-meta p{font-size:13px; color:var(--gray-light); margin-top:6px; font-weight:300;}
@media (hover:hover) and (pointer:fine){
  .reel-frame:hover img{filter:grayscale(0) contrast(1.05); transform:scale(1.02);}
  .reel-frame:hover .reel-play{transform:translate(-50%,-50%) scale(1.08); background:rgba(11,11,11,.3);}
}
.reel-frame:focus-visible{outline:3px solid var(--gold); outline-offset:-3px;}
.reel iframe{width:100%; aspect-ratio:16/9; display:block; border:0;}

/* ── Multi-film projects ───────────────────────────────────────────────────
   One block per assignment (Recipes, TV, Roadshow), so twelve films never
   read as one. Cards are click-to-play: no YouTube request until a click. */
.films-group{margin:52px 48px 0;}
.films-head{margin-bottom:22px;}
.films{display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:14px;}
.films-solo{grid-template-columns:1fr; max-width:900px;}
.film-card{
  position:relative; aspect-ratio:16/9; display:block; cursor:pointer;
  border:1px solid var(--border); padding:0; background:var(--bg-2); overflow:hidden; width:100%;
}
.film-card img{width:100%; height:100%; object-fit:cover; display:block; filter:grayscale(.25) contrast(1.02); transition:filter 400ms var(--ease-out), transform 600ms var(--ease-out);}
/* No still pulled yet — a deliberate plate, never a broken image. */
.film-ph{position:absolute; inset:0; background:linear-gradient(145deg, var(--bg-2) 0%, #151515 100%);}
.film-card::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(11,11,11,.2) 0%, rgba(11,11,11,.15) 40%, rgba(11,11,11,.88) 100%);
}
.film-card .reel-play{width:58px; height:58px;}
.film-card .reel-play svg{width:20px; height:20px;}
.film-label{position:absolute; left:0; right:0; bottom:0; z-index:2; padding:16px 18px; text-align:left; pointer-events:none;}
.film-label h3{font-size:14px; font-weight:700; letter-spacing:-.1px; color:#fff; line-height:1.35;}
.film-card.film-portrait, .film-playing.film-portrait{aspect-ratio:9/16;}
.film-card.film-portrait img{object-fit:contain;}
.film-playing video{display:block; width:100%; height:100%; aspect-ratio:16/9; object-fit:contain; background:#000;}
.film-playing.film-portrait video{aspect-ratio:9/16;}
.film-playing iframe{width:100%; aspect-ratio:16/9; display:block; border:0;}
@media (hover:hover) and (pointer:fine){
  .film-card:hover img{filter:grayscale(0) contrast(1.05); transform:scale(1.03);}
  .film-card:hover .reel-play{transform:translate(-50%,-50%) scale(1.09); background:rgba(11,11,11,.3);}
}
.film-card:focus-visible{outline:3px solid var(--gold); outline-offset:-3px;}
@media (max-width:700px){
  .films-group{margin-left:20px; margin-right:20px;}
  .films{grid-template-columns:1fr;}
}
@media (max-width:700px){
  .reel{margin-left:20px; margin-right:20px;}
  .reel-play{width:66px; height:66px;}
  .reel-play svg{width:22px; height:22px;}
  .reel-meta{padding:18px 20px;}
}

/* Project players share the photo column. Flex wrapping also centres incomplete
   rows; replacing a facade with .film-playing preserves its size and position. */
.case .films-group{margin-left:0; margin-right:0;}
.case .films, .case .reel{width:100%; max-width:var(--film-column-width,900px); margin-left:auto; margin-right:auto;}
.case .films{display:flex; flex-wrap:wrap; justify-content:center; gap:14px;}
.case .films > .film-card, .case .films > .film-playing{flex:0 0 calc((100% - 28px)/3); min-width:0;}
.case .films-solo > .film-card, .case .films-solo > .film-playing{flex-basis:100%;}
@media (min-width:701px) and (max-width:1000px){
  .case .films:not(.films-solo) > .film-card, .case .films:not(.films-solo) > .film-playing{flex-basis:calc((100% - 14px)/2);}
}
@media (max-width:700px){
  .case .films > .film-card, .case .films > .film-playing{flex-basis:100%;}
}

/* ═══════════════ FORM RESULT STATES ═══════════════ */
/* The old inline status line sat below the button and was easy to miss entirely.
   Success now replaces the form; errors are a loud banner above the button. */
.form-success{
  border:2px solid var(--gold); background:var(--bg-2); padding:44px 40px; max-width:760px;
}
.form-success .tick{
  width:56px; height:56px; border-radius:50%; background:var(--gold);
  display:flex; align-items:center; justify-content:center; margin-bottom:22px;
}
.form-success .tick svg{width:28px; height:28px; fill:#000;}
.form-success h3{font-size:24px; font-weight:800; letter-spacing:-.4px;}
.form-success p{color:var(--gray-light); font-size:15px; font-weight:300; line-height:1.8; margin-top:12px;}
.form-success .actions{display:flex; gap:12px; margin-top:26px; flex-wrap:wrap;}

.form-error{
  border-left:3px solid #ff6b6b; background:rgba(255,107,107,.08);
  padding:14px 18px; margin-bottom:18px; font-size:14px; color:#ffb3b3;
}
.field.invalid input, .field.invalid select, .field.invalid textarea{border-color:#ff6b6b;}
.btn-primary[disabled]{opacity:.6; cursor:wait;}

/* ═══════════════ VISUAL REBALANCE ═══════════════
   The homepage read as text blocks with pictures between them.
   These make the *cards themselves* visual, so work carries the page. */

/* --- Hero background video (fades in over the image wall once it can play) --- */
.hero-v8 .hero-video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity 1200ms ease; z-index:0; pointer-events:none;
}
.hero-v8 .hero-video.on{opacity:1;}
.hero-v8 .wall{transition:opacity 1200ms ease;}
.hero-v8 .wall.dim{opacity:.18;}
.hero-v8 .sound-toggle{
  position:absolute; right:34px; bottom:34px; z-index:5;
  width:44px; height:44px; border-radius:50%; border:1px solid rgba(255,255,255,.28);
  background:rgba(0,0,0,.42); backdrop-filter:blur(8px); cursor:pointer;
  display:none; align-items:center; justify-content:center; transition:border-color 200ms ease;
}
.hero-v8 .sound-toggle.show{display:flex;}
.hero-v8 .sound-toggle:hover{border-color:var(--gold);}
.hero-v8 .sound-toggle svg{width:19px; height:19px; fill:#fff;}

/* --- Image-backed capability / sector cards --- */
.caps.visual{gap:2px;}
.caps.visual .cap-card{position:relative; overflow:hidden; padding:0; min-height:340px; display:flex;}
.caps.visual .cap-card .bg{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:grayscale(1) contrast(1.05) brightness(.55);
  transform:scale(1.04); transition:transform 900ms var(--ease-out), filter 700ms ease;
}
.caps.visual .cap-card:hover .bg{transform:scale(1.11); filter:grayscale(0) contrast(1.02) brightness(.62);}
.caps.visual .cap-card::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(10,10,10,.15) 0%, rgba(10,10,10,.72) 55%, rgba(10,10,10,.94) 100%);
  z-index:1;
}
.caps.visual .cap-card .inner{position:relative; z-index:2; padding:30px 28px; margin-top:auto; width:100%;}
.caps.visual .cap-card .n{color:var(--gold); font-size:11px; font-weight:700; letter-spacing:2px;}
.caps.visual .cap-card h2.cap-h, .cap-card h3{font-size:22px; font-weight:800; letter-spacing:-.4px; margin-top:8px; color:#fff;}
.caps.visual .cap-card .promise{color:var(--gold); font-size:13px; font-weight:500; margin-top:8px; line-height:1.5;}
.caps.visual .cap-card .go{
  margin-top:16px; font-size:12px; font-weight:700; letter-spacing:1.6px; text-transform:uppercase;
  color:var(--gray-light); transition:color 200ms ease;
}
.caps.visual .cap-card:hover .go{color:var(--gold);}

/* --- Client marquee: 40 names as one moving band, not six paragraphs --- */
.client-marquee{position:relative; overflow:hidden; padding:8px 0; -webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent); mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);}
.client-marquee .track{display:flex; gap:0; width:max-content; animation:cmarq 64s linear infinite;}
.client-marquee:hover .track{animation-play-state:paused;}
.client-marquee .cname{
  font-size:clamp(19px,2.1vw,30px); font-weight:800; letter-spacing:-.6px;
  color:var(--gray); padding:0 26px; white-space:nowrap; transition:color 260ms ease;
}
.client-marquee .cname:hover{color:var(--white);}
.client-marquee .sep{color:var(--gold); font-size:15px; align-self:center; opacity:.5;}
@keyframes cmarq{from{transform:translate3d(0,0,0);} to{transform:translate3d(-50%,0,0);}}
@media (prefers-reduced-motion:reduce){
  .client-marquee .track{animation:none; flex-wrap:wrap; width:100%; justify-content:center;}
}

/* --- Bigger, editorial work grid --- */
.grid.showcase{grid-template-columns:repeat(3,1fr); gap:2px;}
.grid.showcase .pcard:nth-child(1),
.grid.showcase .pcard:nth-child(8){grid-column:span 2; grid-row:span 2;}
@media (max-width:900px){
  .grid.showcase{grid-template-columns:repeat(2,1fr);}
  .grid.showcase .pcard:nth-child(1),
  .grid.showcase .pcard:nth-child(8){grid-column:span 2; grid-row:span 1;}
}
@media (max-width:560px){
  .grid.showcase{grid-template-columns:1fr;}
  .grid.showcase .pcard:nth-child(1),
  .grid.showcase .pcard:nth-child(8){grid-column:span 1;}
}

@media (max-width:860px){
  .caps.visual .cap-card{min-height:260px;}
  .hero-v8 .sound-toggle{right:20px; bottom:20px;}
}

/* ═══════════════ REVIEW FIXES ═══════════════ */

/* The hidden attribute must win over component display rules.
   Without this, .form-grid{display:grid} kept the submitted form on screen
   underneath the success panel. */
[hidden]{display:none !important;}

/* Orphan rows: auto-fit gave 4 columns, so 5 capability cards rendered 4+1 and
   6 sector cards 4+2, each leaving a dead gap. Pin the column count instead. */
@media (min-width:1100px){
  .caps.visual{grid-template-columns:repeat(3,1fr);}
  .caps.visual.five{grid-template-columns:repeat(6,1fr);}
  .caps.visual.five .cap-card{grid-column:span 2;}
  .caps.visual.five .cap-card:nth-child(4),
  .caps.visual.five .cap-card:nth-child(5){grid-column:span 3;}
}
@media (min-width:700px) and (max-width:1099px){
  .caps.visual, .caps.visual.five{grid-template-columns:repeat(2,1fr);}
  .caps.visual.five .cap-card:nth-child(5){grid-column:span 2;}
}

/* Cards read muddy at full desaturation. Keep a hint of the original colour and
   lift the exposure; deepen the scrim so the type stays legible over it. */
.caps.visual .cap-card .bg{filter:grayscale(.55) contrast(1.06) brightness(.62);}
.caps.visual .cap-card:hover .bg{filter:grayscale(0) contrast(1.03) brightness(.72);}
.caps.visual .cap-card::after{
  background:linear-gradient(180deg, rgba(10,10,10,.30) 0%, rgba(10,10,10,.80) 52%, rgba(10,10,10,.97) 100%);
}

/* ═══════════════ ABOUT: STORY, STRUCTURE, FACTS, TEAM ═══════════════ */
.prose{max-width:720px;}
.prose p{color:var(--gray-light); font-size:16px; font-weight:300; line-height:1.95; margin-bottom:22px;}
.prose p:last-child{margin-bottom:0;}

.org{list-style:none; display:grid; gap:2px; background:var(--border); counter-reset:none;}
.org li{background:var(--bg-2); padding:28px 30px; display:flex; gap:26px; align-items:flex-start;}
.org .n{color:var(--gold); font-size:12px; font-weight:800; letter-spacing:2px; padding-top:5px; flex-shrink:0; min-width:28px;}
.org h3{font-size:19px; font-weight:800; letter-spacing:-.3px;}
.org p{color:var(--gray-light); font-size:14.5px; font-weight:300; line-height:1.85; margin-top:8px; max-width:760px;}

.facts{display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:2px; background:var(--border);}
.facts > div{background:var(--bg-2); padding:24px 26px;}
.facts dt{color:var(--gold); font-size:11px; font-weight:700; letter-spacing:2px; text-transform:uppercase;}
.facts dd{margin:10px 0 0; color:var(--gray-light); font-size:15px; font-weight:400; line-height:1.7;}


@media (max-width:640px){
  .org li{flex-direction:column; gap:10px; padding:24px 22px;}
  .prose p{font-size:15px;}
}

/* Marquee: two tracks side by side so the loop is seamless, with only the
   first exposed to crawlers and screen readers. */
.client-marquee{display:flex; width:100%;}
.client-marquee .track{
  display:flex; align-items:center; list-style:none; margin:0; padding:0;
  flex:0 0 auto; min-width:100%; animation:cmarq 64s linear infinite;
}
.client-marquee .track li{display:flex; align-items:center; flex:0 0 auto;}
.client-marquee:hover .track{animation-play-state:paused;}
a.cname{text-decoration:none;}
a.cname:hover{color:var(--gold);}
a.cname:focus-visible{outline:2px solid var(--gold); outline-offset:4px;}
@keyframes cmarq{from{transform:translate3d(0,0,0);} to{transform:translate3d(-100%,0,0);}}
@media (prefers-reduced-motion:reduce){
  .client-marquee{flex-wrap:wrap;}
  .client-marquee .track{animation:none; flex-wrap:wrap; justify-content:center;}
  .client-marquee .track[aria-hidden="true"]{display:none;}
}

/* ═══════════════ LEADERSHIP ═══════════════
   Restrained and senior — five cards, not an employee directory. Cards render an
   explicit "profile to follow" state rather than inventing a person. */
.team{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:2px; background:var(--border);
}
.member{background:var(--bg-2); display:flex; flex-direction:column;}
.member img{
  width:100%; aspect-ratio:1; object-fit:cover; display:block;
  filter:grayscale(1) contrast(1.04); transition:filter 500ms ease;
}
.member:hover img{filter:grayscale(0) contrast(1.02);}
.member.awaiting img{opacity:.5;}
.member .body{padding:24px 26px 28px; display:flex; flex-direction:column; gap:8px; flex:1;}
.member .role{
  color:var(--gold); font-size:11px; font-weight:700; letter-spacing:1.8px; text-transform:uppercase;
}
.member h3{font-size:19px; font-weight:800; letter-spacing:-.3px;}
.member .pending{
  font-size:15px; font-weight:600; color:var(--gray);
  display:inline-flex; align-items:center; gap:8px;
}
.member .pending::before{
  content:''; width:6px; height:6px; border-radius:50%;
  background:var(--gray); flex-shrink:0;
}
.member .bio{color:var(--gray-light); font-size:13.5px; font-weight:300; line-height:1.8;}
.member .owns{
  color:var(--gray); font-size:13px; font-weight:300; line-height:1.75;
  padding-top:12px; margin-top:auto; border-top:1px solid var(--border);
}
.member .li{
  color:var(--gold); font-size:11px; font-weight:700; letter-spacing:1.4px;
  text-transform:uppercase; margin-top:4px;
}
.team-note{
  margin-top:22px; color:var(--gray); font-size:14px; font-weight:300; line-height:1.8; max-width:680px;
}
.team-note a{color:var(--gold);}

@media (min-width:1100px){ .team{grid-template-columns:repeat(5,1fr);} }
@media (max-width:1099px) and (min-width:700px){ .team{grid-template-columns:repeat(3,1fr);} }
@media (max-width:699px){
  .team{grid-template-columns:repeat(2,1fr);}
  .member .body{padding:18px 18px 22px;}
  .member h3{font-size:17px;}
  .member .owns{font-size:12.5px;}
}
@media (max-width:420px){ .team{grid-template-columns:1fr;} }

/* ═══════════════ CAPABILITY PAGES ═══════════════ */
.problem{display:grid; grid-template-columns:1.1fr 1fr; gap:48px; align-items:start;}
.problem .lead{color:var(--white); font-size:19px; font-weight:300; line-height:1.75; letter-spacing:-.2px;}
.signals{list-style:none; display:flex; flex-direction:column; gap:0;}
.signals li{
  color:var(--gray-light); font-size:14.5px; font-weight:300; line-height:1.65;
  padding:13px 0 13px 26px; border-bottom:1px solid var(--border); position:relative;
}
.signals li:first-child{border-top:1px solid var(--border);}
.signals li::before{
  content:''; position:absolute; left:0; top:20px;
  width:10px; height:1px; background:var(--gold);
}

.scope{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:2px; background:var(--border);}
.scope-col{background:var(--bg-2); padding:28px 26px 30px;}
.scope-col h3{
  color:var(--gold); font-size:11px; font-weight:700; letter-spacing:2px; text-transform:uppercase;
}
.scope-col ul{list-style:none; margin-top:16px; display:flex; flex-direction:column; gap:9px;}
.scope-col li{color:var(--gray-light); font-size:14.5px; font-weight:300; line-height:1.5;}

.method{list-style:none; display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:2px; background:var(--border);}
.method li{background:var(--bg-2); padding:26px 24px 28px;}
.method .n{color:var(--gold); font-size:11px; font-weight:800; letter-spacing:2px;}
.method h3.method-h, .method h4{font-size:17px; font-weight:800; letter-spacing:-.3px; margin-top:10px;}
.method p{color:var(--gray); font-size:13.5px; font-weight:300; line-height:1.7; margin-top:8px;}

.focus-row{display:flex; flex-wrap:wrap; gap:10px;}
.focus-chip{
  border:1px solid var(--border); color:var(--gray-light);
  font-size:13px; font-weight:500; padding:10px 18px; transition:border-color 200ms ease, color 200ms ease;
}
.focus-chip:hover{border-color:var(--gold); color:var(--white);}

@media (max-width:900px){
  .problem{grid-template-columns:1fr; gap:26px;}
  .problem .lead{font-size:17px;}
}
@media (max-width:820px){
  .grid[style*="repeat(4,1fr)"]{grid-template-columns:repeat(2,1fr) !important;}
}
@media (max-width:520px){
  .grid[style*="repeat(4,1fr)"]{grid-template-columns:1fr !important;}
  .method{grid-template-columns:1fr;}
}

/* ═══════════════ SECTOR: CATEGORY INTELLIGENCE ═══════════════
   Deliberately compact — authority without slowing the buyer down. */
.truths{
  list-style:none; display:grid; grid-template-columns:repeat(2,1fr);
  gap:0 48px; max-width:1080px;
}
.truths li{
  color:var(--gray-light); font-size:15px; font-weight:300; line-height:1.65;
  padding:16px 0 16px 30px; border-bottom:1px solid var(--border); position:relative;
}
.truths li::before{
  content:''; position:absolute; left:0; top:24px;
  width:14px; height:1px; background:var(--gold);
}
@media (max-width:820px){
  .truths{grid-template-columns:1fr; gap:0;}
  .truths li{font-size:14.5px; padding:14px 0 14px 26px;}
  .truths li::before{top:22px; width:11px;}
}

/* ═══════════════ FEATURED WORK ═══════════════
   Editorial layer over the archive. Bigger cards, visible metadata, so a buyer
   can scan sector and capability without clicking. */
.fw-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:2px; background:var(--border);}
.fw-card{position:relative; background:var(--bg-2); display:flex; flex-direction:column; overflow:hidden;}
.fw-card img{
  width:100%; aspect-ratio:16/9; object-fit:cover; display:block;
  filter:grayscale(.45) contrast(1.04); transform:scale(1.01);
  transition:filter 500ms ease, transform 700ms var(--ease-out);
}
.fw-card:hover img{filter:grayscale(0); transform:scale(1.06);}
.fw-card .noimg{
  width:100%; aspect-ratio:16/9; display:flex; align-items:center; justify-content:center;
  background:var(--bg-3, #161616); color:var(--gray); font-size:30px; font-weight:800; letter-spacing:1px;
}
.fw-meta{padding:18px 20px 22px; display:flex; flex-direction:column; gap:7px;}
.fw-tags{display:flex; flex-wrap:wrap; gap:6px;}
.fw-tags .tag{
  border:1px solid var(--border); color:var(--gray);
  font-size:9.5px; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; padding:3px 8px;
}
.fw-tags .tag.gold{border-color:var(--gold); color:var(--gold);}
.fw-card h3{font-size:17px; font-weight:800; letter-spacing:-.3px; line-height:1.25;}
.fw-sub{
  display:flex; align-items:center; gap:7px; flex-wrap:wrap;
  color:var(--gray); font-size:12.5px; font-weight:400;
}
.fw-sub .dot{opacity:.5;}
.fw-card::after{
  content:''; position:absolute; inset:0; border:1px solid transparent;
  transition:border-color 260ms ease; pointer-events:none;
}
.fw-card:hover::after{border-color:var(--gold);}

@media (max-width:1180px){ .fw-grid{grid-template-columns:repeat(3,1fr);} }
@media (max-width:860px){ .fw-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){
  .fw-grid{grid-template-columns:1fr;}
  .fw-card img, .fw-card .noimg{aspect-ratio:16/9;}
  .fw-meta{padding:16px 18px 20px;}
  .fw-card h3{font-size:18px;}
  .fw-sub{font-size:13px;}
}

/* Credentials-request notice on the contact form. */
.intent-note{
  border-left:3px solid var(--gold); background:var(--bg-2);
  padding:14px 18px; margin-bottom:22px; max-width:760px;
  color:var(--gray-light); font-size:14.5px; font-weight:300; line-height:1.7;
}

/* ═══════════════ FLAGSHIP CASE ═══════════════
   Richer than a Project Record, same design system. Result figures lead. */
.cs-facts{margin:34px 0 8px;}
.results-note{
  margin-top:16px; color:var(--gray); font-size:12.5px; font-weight:300;
  font-style:italic; letter-spacing:.2px;
}
.case .cs-results{display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:2px; background:var(--border);}
.case .cs-results > div{background:var(--bg-2); padding:28px 24px 30px;}
.case .cs-results .f{
  font-size:clamp(30px,3.4vw,44px); font-weight:800; letter-spacing:-1.4px;
  color:var(--gold); line-height:1; font-variant-numeric:tabular-nums;
}
.case .cs-results .c{
  margin-top:12px; color:var(--gray-light); font-size:13.5px; font-weight:300; line-height:1.65;
}
@media (max-width:560px){
  .case .cs-results{grid-template-columns:1fr;}
  .case .cs-results > div{padding:22px 20px 24px;}
}

/* Converted animations sit in the gallery exactly where the GIF did. */
.gallery video{width:auto; max-width:100%; height:auto; display:block;}


/* ═══════════════ ADDRESS → GOOGLE MAPS ═══════════════
   The office address is a link everywhere it appears (footer, Contact, About).
   Underlined rather than coloured so it reads as an address first and a link
   second — a gold address in the footer competes with the real CTAs. */
.map-link{
  color:inherit; border-bottom:1px solid #3a3a3a;
  transition:color 180ms ease, border-color 180ms ease;
}
@media (hover:hover) and (pointer:fine){
  .map-link:hover{color:var(--gold); border-color:var(--gold);}
}
/* on the gold CTA band the border has to darken, not lighten */
.map-link.on-gold{border-bottom-color:rgba(0,0,0,.35);}
@media (hover:hover) and (pointer:fine){
  .map-link.on-gold:hover{color:#000; border-bottom-color:#000;}
}

/* ═══════════════ SHOWCASE — EMPHASIS TILE ═══════════════
   Two projects in the homepage showcase carry more weight than the rest and
   are set to run at double size. In a 4-column grid that is 2 columns by 2
   rows, which keeps the 16:9 shape rather than stretching the image. Grid
   auto-placement flows the smaller tiles around them, so no gaps appear.
   Below 1000px the grid drops to 3 and then 2 columns; a double-width tile
   still fits, and at the 2-column breakpoint it simply spans the full row. */
.grid .pcard.big{ grid-column:span 2; grid-row:span 2; }
@media (max-width:700px){
  .grid .pcard.big{ grid-column:span 2; grid-row:span 1; }
}

/* ═══════════════ CAPABILITY EXAMPLES STRIP ═══════════════
   Work that belongs to a capability rather than to one client — currently the
   user-generated content recovered from the old site. Shown at its own ratio
   rather than cropped into a uniform tile, because UGC is shot vertically for
   feeds and a 16:9 crop would cut the subject out of every frame. */
.ugc-strip{display:flex; gap:8px; flex-wrap:wrap;}
.ugc-strip img{height:300px; width:auto; max-width:100%; display:block; background:var(--card);}
@media (max-width:700px){ .ugc-strip img{height:210px;} }


/* Leadership monogram tile — stands in for a portrait.
   leadership.ts promised this fallback; the markup never had it, so with no
   portraits on disk the cards rendered broken images. Generated from the
   person's initials, so no image file is needed. */
.member .mono{
  aspect-ratio:1/1; width:100%; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(145deg, #141414 0%, #050505 100%);
  border-bottom:1px solid var(--border);
}
.member .mono span{
  font-size:clamp(34px, 7vw, 56px); font-weight:800; letter-spacing:1px;
  color:var(--gold); line-height:1;
}

/* Touch hit areas: preserve type, colour and desktop layout. Existing large
   cards keep their block layout; small text links receive a transparent area. */
@media (pointer: coarse) {
  a[href], button, input:not([type="hidden"]), select, textarea, [role="button"] {
    min-width:44px;
    min-height:44px;
  }
  a[href]:not(.pcard):not(.fcase):not(.cap-card):not(.fw-card):not(.reel-frame):not(.film-card) {
    display:inline-flex;
    align-items:center;
  }
}

/* R8: transparent separation for neighbouring touch controls only. */
@media (pointer: coarse), (max-width: 700px) {
  a[href], button, input:not([type="hidden"]), select, textarea, [role="button"] { min-width:44px; min-height:44px; }
  a[href]:not(.pcard):not(.fcase):not(.cap-card):not(.fw-card):not(.reel-frame):not(.film-card) { display:inline-flex; align-items:center; }
  .pill-wrap, .fw-tags, .case > .tags, .filter-row, footer.site .social { gap:8px; }
  .crumb { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
  footer.site .addr a, .contact-line a, a.cname { margin:4px; }
  .grid, .grid.showcase, .fw-grid, .cap-grid, .sector-grid, .capabilities-grid, .sectors-grid, .caps.visual { gap:8px; }
  .case .tags { gap:8px; }
  .body-copy a, .cs-block p a, .cta-band p a { margin:4px; }
  header.site { gap:8px; }
  header.site nav.open { gap:8px; }
}
