:root{
  --bg:#020912;
  --surface:#0a1622;
  --surface-2:#0d1d2d;
  --line:#152b40;
  --line-soft:#061019;
  --text:#f6f6f6;
  --muted:#8a9ab2;
  /* faint lightened from #56697f (3.53:1, failed AA) to #7c8ca3 (~5.8:1 on --bg) */
  --faint:#7c8ca3;
  --accent:#ff7518;
  --container:1180px;
  --radius:3px;
  --ease:cubic-bezier(.22,.61,.36,1);
  /* transition timing tokens */
  --t-fast:.18s;
  --t-slow:.4s;
  /* 8px spacing scale */
  --space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;
  --space-5:48px;--space-6:64px;--space-7:96px;
  /* type scale */
  --fs-label:12px;--fs-sm:14px;--fs-base:16px;--fs-lead:18px;--fs-h3:21px;
}

*{box-sizing:border-box;margin:0;padding:0}
/* reserve the scrollbar gutter on every page so short (non-scrolling) pages do
   not shift ~half a scrollbar wider than tall ones (fixes the tab-to-tab jump) */
html{scroll-behavior:smooth;scrollbar-gutter:stable}
body{
  background:var(--bg);
  color:var(--text);
  font-family:"Plus Jakarta Sans","Inter",system-ui,-apple-system,sans-serif;
  font-weight:400;
  line-height:1.6;
  letter-spacing:.25px;
  -webkit-font-smoothing:antialiased;
}
img,video{-webkit-user-drag:none;-khtml-user-drag:none;user-select:none;-webkit-user-select:none}
a{color:inherit;text-decoration:none}
img,video{display:block;max-width:100%}
.container{width:100%;max-width:var(--container);margin:0 auto;padding-left:32px;padding-right:32px}

.eyebrow{
  font-size:12px;letter-spacing:2px;text-transform:uppercase;
  color:var(--faint);margin-bottom:18px;
}

/* nav */
.nav{position:sticky;top:0;z-index:40;background:rgba(2,9,18,.82);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft);transition:box-shadow var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
/* P3: once scrolled, lift the sticky bar off bright posters behind it */
.nav.scrolled{border-bottom-color:var(--line);box-shadow:0 6px 24px rgba(0,0,0,.38)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:68px}
.logo{font-weight:400;font-size:33px;letter-spacing:2px;line-height:1.05;display:flex;flex-direction:row;align-items:center;gap:4px;margin-left:-9px}
.logo-word{display:flex;flex-direction:column;color:var(--text);font-size:.7em}
.logo-word span{color:var(--muted);font-weight:400}
.logo-mark-wrap{position:relative;display:block;height:48px;width:48px;flex:none;
  transform:translateY(-2px)}
.logo-mark{height:48px;width:auto;flex:none;display:block}
.logo-mark-wrap .logo-mark{position:absolute;top:0;left:0;height:100%;width:100%;object-fit:contain}
.nav-links{display:flex;gap:30px}
.nav-links a{font-size:14px;color:var(--muted);transition:color var(--t-fast) var(--ease);position:relative}
.nav-links a:hover,.nav-links a.active{color:var(--text)}
.nav-toggle{display:none;flex-direction:column;align-items:center;justify-content:center;gap:5px;background:none;border:0;cursor:pointer;width:44px;height:44px;padding:0;margin-right:-10px}
.nav-toggle span{width:22px;height:1.5px;background:var(--text);transition:var(--t-fast) var(--ease)}

/* hero */
.hero{padding:90px 32px 64px}
.hero-title{font-size:clamp(26px,3.6vw,46px);font-weight:300;line-height:1.28;max-width:900px;letter-spacing:-.01em}
.hero-tools{margin-top:22px;color:var(--faint);font-size:14px;letter-spacing:.5px}

/* work grid */
.work{padding:8px 32px 40px}
.work-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:14px;
}
.tile{
  position:relative;overflow:hidden;border-radius:var(--radius);
  background:var(--surface);border:1px solid var(--line);
  cursor:pointer;display:block;aspect-ratio:4/3;
  transition:border-color var(--t-fast) var(--ease);
}
.tile:hover{border-color:var(--accent)}
/* featured showreel = first row, spans 2 cols, 1 row; stretches to the 4:3 row height (wide banner) */
.tile.featured{grid-column:span 2;aspect-ratio:auto}
.tile.is-hidden{display:none}
.thumb{
  position:absolute;inset:0;width:100%;height:100%;
  transition:transform var(--t-slow) var(--ease);
}
.thumb img,.thumb video{width:100%;height:100%;object-fit:cover}
.tile:hover .thumb{transform:scale(1.05)}

/* placeholder */
.ph{display:flex;align-items:center;justify-content:center;background:var(--surface)}
.ph[data-ph]::before{
  content:attr(data-ph);
  position:absolute;top:12px;left:14px;
  font-size:11px;letter-spacing:1px;color:var(--faint);
}
.ph-label{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--faint)}
.ph-reel{background:linear-gradient(0deg,var(--surface),var(--surface-2))}
.play{color:var(--text);opacity:.92;display:flex;align-items:center;justify-content:center;
  width:64px;height:64px;border:1px solid var(--line);border-radius:50%;background:rgba(0,0,0,.25)}
.tile.featured .thumb::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(circle at center,rgba(2,9,18,.6) 0%,rgba(2,9,18,.3) 16%,rgba(2,9,18,0) 40%)}
.tile.featured .play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;
  background:rgba(2,9,18,.55);backdrop-filter:blur(2px)}
.tile.featured:hover .play{opacity:1}

/* overlay caption */
.overlay{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  display:flex;flex-direction:column;gap:2px;
  padding:16px 18px;
  background:linear-gradient(0deg,rgba(0,0,0,.72),rgba(0,0,0,0));
  opacity:0;transform:translateY(8px);
  transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease);
}
.tile:hover .overlay{opacity:1;transform:translateY(0)}
.t-title{font-size:14px;font-weight:500}
.t-client{font-size:12px;color:var(--muted)}

.clients{margin-top:34px;padding-top:20px;border-top:1px solid var(--line-soft);
  color:var(--faint);font-size:13px;letter-spacing:.3px}

/* load more */
.load-more-wrap{display:flex;justify-content:center;margin-top:32px}
.load-more{
  background:none;border:1px solid var(--accent);color:var(--accent);
  padding:13px 28px;border-radius:var(--radius);cursor:pointer;
  font:inherit;font-size:14px;letter-spacing:.3px;
  transition:var(--t-fast) var(--ease);
}
.load-more:hover{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.load-more.is-done{display:none}

/* method */
.method{padding:70px 32px}
.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:6px}
.method-num{font-size:12px;color:var(--faint);letter-spacing:1px}
.method-item h3{font-size:17px;font-weight:500;margin:12px 0 8px}
.method-item p{color:var(--muted);font-size:14px;line-height:1.7;max-width:320px}

/* cta */
.cta{padding:80px 32px 90px;text-align:center;border-top:1px solid var(--line-soft)}
.cta h2{font-size:clamp(24px,3vw,38px);font-weight:300;letter-spacing:-.01em}
.cta p{color:var(--muted);font-size:15px;max-width:560px;margin:18px auto 30px;line-height:1.7}
.btn{display:inline-block;border:1px solid var(--line);padding:13px 28px;border-radius:var(--radius);
  font-size:14px;letter-spacing:.3px;transition:var(--t-fast) var(--ease)}
.btn:hover{background:var(--text);color:var(--bg);border-color:var(--text)}

/* about */
.about{padding:80px 32px 30px}
.about-intro{display:grid;grid-template-columns:420px minmax(0,560px);gap:64px;
  align-items:stretch;justify-content:center}
.about-photo{position:relative;aspect-ratio:4/5;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;background:var(--surface)}
/* desktop: drop the fixed ratio so the portrait fills the text column height
   (align-items:stretch), with a floor so it never gets too short */
@media(min-width:901px){
  .about-photo{aspect-ratio:auto;height:100%;min-height:480px}
}
.about-photo .ph{position:absolute;inset:0}
/* P3: bias a square portrait slightly up so the face/subject is not cropped */
.about-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
.about-title{font-size:clamp(24px,2.8vw,34px);font-weight:300;line-height:1.3;
  letter-spacing:-.01em;margin-bottom:22px;max-width:560px}
.about-body{color:var(--muted);font-size:16px;line-height:1.8;max-width:560px;margin-bottom:18px}
.about-lead .btn{margin-top:8px}

.about-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;
  margin-top:64px;padding-top:48px;border-top:1px solid var(--line-soft)}
.about-h{font-size:13px;font-weight:500;letter-spacing:1px;text-transform:uppercase;
  color:var(--faint);margin-bottom:16px}
.about-list{list-style:none}
.about-list li{color:var(--text);font-size:16px;padding:9px 0;
  border-bottom:1px solid var(--line-soft)}
.about-list li:last-child{border-bottom:0}

/* P3: unify divider spacing with .about-grid (64/48) */
.about-clients{margin-top:64px;padding-top:48px;border-top:1px solid var(--line-soft)}
.about-clients-list{color:var(--muted);font-size:16px;letter-spacing:.3px;line-height:1.9}
.logo-marquee{margin-top:28px;overflow:hidden;-webkit-mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent)}
.logo-track{display:flex;align-items:center;width:max-content;animation:logo-scroll 40s linear infinite}
.logo-marquee:hover .logo-track{animation-play-state:paused}
.logo-track img{height:51px;width:auto;flex:0 0 auto;margin-right:88px;opacity:.82;transition:opacity var(--t-fast) var(--ease)}
.logo-track img:hover{opacity:1}
@keyframes logo-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion: reduce){.logo-track{animation:none}}

/* faq accordion */
.faq{padding-top:0;padding-bottom:90px}
.faq-shell{max-width:820px;margin:0 auto;border:1px solid var(--line-soft);border-radius:var(--radius);padding:6px 28px;transition:border-color var(--t-fast) var(--ease)}
.faq-shell:hover{border-color:var(--line)}
.faq-shell>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0}
.faq-shell>summary::-webkit-details-marker{display:none}
.faq-shell>summary .about-h{margin:0;transition:color var(--t-fast) var(--ease)}
.faq-shell>summary::after{content:"+";font-size:30px;font-weight:300;line-height:1;color:var(--accent);flex:0 0 auto}
.faq-shell[open]>summary::after{content:"\2212"}
.faq-shell>summary:hover .about-h{color:var(--accent)}
.faq-list{border-top:1px solid var(--line-soft);padding-bottom:6px}
.faq-item{border-bottom:1px solid var(--line-soft)}
.faq-item:last-child{border-bottom:none}
.faq-item summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;font-size:var(--fs-lead);font-weight:500;color:var(--text);transition:color var(--t-fast) var(--ease)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";font-size:24px;font-weight:300;line-height:1;color:var(--accent);flex:0 0 auto}
.faq-item[open] summary::after{content:"\2212"}
.faq-item summary:hover{color:var(--accent)}
.faq-answer{margin:0;padding:0 0 22px;max-width:680px;color:var(--muted);font-size:16px;line-height:1.7}
.faq-answer a{color:var(--accent)}

/* contact */
.contact{padding:90px 32px 80px;max-width:880px;margin-left:auto;margin-right:auto}
.contact-title{font-size:clamp(28px,3.4vw,44px);font-weight:300;letter-spacing:-.01em;margin-bottom:22px}
.contact-lead{color:var(--muted);font-size:16px;line-height:1.8;max-width:620px;margin-bottom:34px}
.contact-email{display:inline-block;font-size:clamp(20px,2.6vw,30px);font-weight:300;
  color:var(--text);border-bottom:1px solid var(--line);padding-bottom:6px;
  transition:border-color var(--t-fast) var(--ease)}
/* P3: clearer hover affordance, parity with .btn (accent border + faint fill) */
.contact-email:hover{border-color:var(--accent);background:rgba(255,117,24,.08)}
/* P4: email + copy-to-clipboard */
.contact-email-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.contact-copy{background:none;border:1px solid var(--line);color:var(--muted);font:inherit;
  font-size:12px;letter-spacing:1px;text-transform:uppercase;padding:7px 14px;border-radius:var(--radius);
  cursor:pointer;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
.contact-copy:hover,.contact-copy.copied{color:var(--accent);border-color:var(--accent)}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px 72px;
  margin-top:64px;padding-top:48px;border-top:1px solid var(--line-soft)}
.contact-note{color:var(--muted);font-size:16px;line-height:1.8}
.contact-social{margin-top:52px;padding-top:40px;border-top:1px solid var(--line-soft)}
/* P4: social links as labelled chips, not a plain text row */
.social-links{display:flex;flex-wrap:wrap;gap:10px 12px}
.social-links a{color:var(--muted);font-size:14px;letter-spacing:.3px;
  border:1px solid var(--line);border-radius:999px;padding:8px 16px;
  transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
.social-links a:hover{color:var(--text);border-color:var(--accent)}
/* contact "Elsewhere" social icon row */
.social-icons{display:flex;flex-wrap:wrap;align-items:center;gap:24px}
.social-icons a{display:flex;color:var(--faint);transition:color var(--t-fast) var(--ease)}
.social-icons a:hover{color:var(--accent)}
.social-icons svg{width:24px;height:24px;display:block;fill:currentColor}

/* case study (project detail) */
.case-head{padding:70px 32px 36px}
.case-back{display:inline-block;color:var(--muted);font-size:13px;letter-spacing:.3px;
  margin-bottom:30px;transition:color var(--t-fast) var(--ease)}
.case-back:hover{color:var(--text)}
.case-title{font-size:clamp(28px,3.6vw,46px);font-weight:300;letter-spacing:-.01em;line-height:1.2}
.case-sub{color:var(--muted);font-size:16px;line-height:1.7;margin-top:18px;max-width:680px}
.case-meta{display:flex;flex-wrap:nowrap;align-items:start;justify-content:space-between;gap:20px 24px;
  margin-top:38px;padding-top:26px;border-top:1px solid var(--line-soft)}
/* items keep their content width and even spacing; only the Tools value (3rd
   item) may shrink and wrap to a 2nd line when long, so the 4-up row never breaks */
.case-meta > div{flex:0 0 auto;min-width:0}
.case-meta > div:nth-child(3){flex:0 1 auto}
.case-meta > div:last-child{text-align:right}
.case-meta dt{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--faint);margin-bottom:7px}
.case-meta dd{font-size:14px;color:var(--text);white-space:nowrap}
.case-meta > div:nth-child(3) dd{white-space:normal}

.thumb-static{position:relative;display:block;width:100%;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--surface);overflow:hidden;aspect-ratio:16/9}
.thumb-static img,.thumb-static video{width:100%;height:100%;object-fit:cover;display:block}
.thumb-static.ph{display:flex;align-items:center;justify-content:center}

.case-hero{padding:8px 32px 0}

.case-section{padding:64px 32px 8px}
.case-overview{display:grid;grid-template-columns:160px 1fr;gap:48px;align-items:start}
.case-h{font-size:13px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--faint)}
/* label sits in a tighter line box than the 1.8 body; nudge it onto the body's first text line */
.case-overview>.case-h{padding-top:2px}
.case-overview-body p{color:var(--muted);font-size:16px;line-height:1.8;max-width:640px;margin-bottom:16px}

.case-strips{padding:48px 32px}
.case-strip{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;
  padding:36px 0;border-top:1px solid var(--line-soft)}
.case-strip:first-child{border-top:0}
.case-strip.reverse .case-strip-media{order:2}
.case-strip-media .thumb-static{aspect-ratio:4/3}
/* portrait variant: 4:5 marketing renders shown uncropped beside text */
.case-strips.portrait .case-strip-media .thumb-static{aspect-ratio:4/5}
.case-step{font-size:12px;letter-spacing:1px;color:var(--faint)}
.case-strip-text h3{font-size:21px;font-weight:400;margin:12px 0 12px;letter-spacing:-.01em}
.case-strip-text p{color:var(--muted);font-size:16px;line-height:1.8;max-width:420px}

/* custom per-project block: heading + 2-column media grid */
.case-block{padding:36px 32px}
.case-block-head{max-width:600px;margin-bottom:24px}
.case-block-head h3{font-size:21px;font-weight:400;margin:12px 0 12px;letter-spacing:-.01em}
.case-block-head p{color:var(--muted);font-size:15px;line-height:1.8;max-width:480px}
.case-block-head.wide{max-width:none}
.case-block-head.wide p{max-width:none}
.case-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.case-grid-2 .thumb-static{aspect-ratio:16/9}
/* image + craft-notes split (used on breakdown case studies) */
.case-notes-split{display:grid;grid-template-columns:1.15fr .85fr;gap:32px;align-items:start}
.case-notes-split .thumb-static{aspect-ratio:4/3}
.case-notes{list-style:none;max-width:520px}
.case-notes li{padding:14px 0;border-bottom:1px solid var(--line-soft)}
.case-notes li:last-child{border-bottom:0}
.case-notes strong{display:block;font-size:11px;letter-spacing:1px;text-transform:uppercase;
  color:var(--faint);font-weight:500;margin-bottom:6px}
.case-notes span{color:var(--muted);font-size:15px;line-height:1.7}
.ph-num{position:absolute;top:10px;left:10px;z-index:2;font-size:12px;font-weight:600;
  letter-spacing:1px;color:var(--accent);background:var(--bg);border:1px solid var(--line);
  border-radius:4px;padding:3px 8px;font-variant-numeric:tabular-nums}
@media (max-width:720px){.case-notes-split{grid-template-columns:1fr;gap:20px}}
.case-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.case-grid-4 .thumb-static{aspect-ratio:4/5}
.case-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.case-grid-3.portrait .thumb-static{aspect-ratio:4/5}
.stack-gap{margin-top:14px}
.case-grid-2.stills-43.gap-14{gap:14px}
.case-grid-3 .thumb-static{aspect-ratio:4/3}
.case-grid-3 .thumb-static.span-all{grid-column:1/-1;aspect-ratio:16/9}

/* responsive 16:9 video embed (YouTube) */
.case-video{position:relative;width:100%;aspect-ratio:16/9;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;background:#000}
.case-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* click-to-play facade: own poster + site play button, no YouTube chrome */
.case-video.yt-facade{cursor:pointer}
.case-video.yt-facade img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.case-video.yt-facade:hover .media-play{border-color:var(--accent)}
.case-video.yt-facade:hover .media-play::after{border-left-color:var(--accent)}
/* vertical 4:5 hero, constrained + centred */
.case-video.vertical{aspect-ratio:4/5;max-width:480px;margin-left:auto;margin-right:auto}
/* 4:3 hero (square-ish video), constrained + centred */
.case-video.ratio-43{aspect-ratio:4/3;max-width:760px;margin-left:auto;margin-right:auto}
/* full-width 4:3 video (4:3 source films, edge to edge) */
.case-video.ratio-43-full{aspect-ratio:4/3;max-width:none}
/* P3: lift constrained heroes off the page so they read as framed, not floating */
.case-video.vertical,.case-video.ratio-43{box-shadow:0 28px 64px -28px rgba(0,0,0,.65)}
/* full-width ~2:1 banner still */
.case-stills .thumb-static.wide-2{aspect-ratio:2/1}

/* single-can row: 6 desktop, 4 tablet, 2 mobile */
.case-singles{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.case-singles .thumb-static{aspect-ratio:2/5;background:var(--surface)}

/* stacked stills: full-width 16:9 wides + a 2x2 4:3 grid */
/* P3: wider gap to match section rhythm */
.case-stills{display:grid;gap:24px}
.case-grid-2.stills-43{gap:24px}
.case-grid-2.stills-43 .thumb-static{aspect-ratio:4/3}
/* stacked full-width 4:3 stills, one per row */
.case-stills.stills-43 .thumb-static{aspect-ratio:4/3}

.case-gallery{padding:32px 32px 8px}
.case-gallery .case-h{margin-bottom:18px}
.case-gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.case-gallery-grid .thumb-static{aspect-ratio:4/3}
.case-gallery-grid .thumb-static.wide{grid-column:span 2;aspect-ratio:21/9}

/* click-to-enlarge media */
.thumb-static.zoomable{cursor:zoom-in}
.thumb-static.zoomable img,.thumb-static.zoomable video{transition:transform .55s var(--ease);will-change:transform}
.thumb-static.zoomable:hover img,.thumb-static.zoomable:hover video{transform:scale(1.05)}

/* video tiles: play on hover, play button shown while idle */
.thumb-static.has-video{cursor:pointer}
.thumb-static.zoomable.has-video{cursor:zoom-in}
.media-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:58px;height:58px;border-radius:50%;background:rgba(2,9,18,.5);
  border:1px solid rgba(246,246,246,.55);backdrop-filter:blur(2px);pointer-events:none;
  display:flex;align-items:center;justify-content:center;
  transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}
.media-play::after{content:"";width:0;height:0;margin-left:4px;
  border-style:solid;border-width:10px 0 10px 16px;
  border-color:transparent transparent transparent var(--text)}
.thumb-static.has-video:hover .media-play{border-color:var(--accent)}
.thumb-static.has-video:hover .media-play::after{border-left-color:var(--accent)}
.thumb-static.is-playing .media-play{opacity:0;transform:translate(-50%,-50%) scale(.7)}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:40px;background:rgba(2,9,18,.92);backdrop-filter:blur(6px);opacity:0;visibility:hidden;
  transition:opacity var(--t-fast) var(--ease),visibility var(--t-fast) var(--ease)}
.lightbox.open{opacity:1;visibility:visible}
.lightbox-media{max-width:92vw;max-height:88vh;border-radius:var(--radius);display:block;
  box-shadow:0 30px 80px rgba(0,0,0,.6);transform:scale(.97);transition:transform var(--t-fast) var(--ease)}
.lightbox.open .lightbox-media{transform:scale(1)}
.lightbox-close{position:absolute;top:22px;right:26px;width:42px;height:42px;border:1px solid var(--line);
  background:var(--surface);color:var(--text);border-radius:50%;font-size:20px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.lightbox-close:hover{border-color:var(--accent);color:var(--accent)}

/* related projects */
.case-related{padding:8px 32px 72px}
.case-related .case-h{margin-bottom:18px}
.related-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.related-card{display:block}
.related-card .thumb-static{aspect-ratio:4/3;transition:border-color var(--t-fast) var(--ease)}
.related-card .thumb-static img{transition:transform .55s var(--ease);will-change:transform}
.related-card:hover .thumb-static{border-color:var(--accent)}
.related-card:hover .thumb-static img{transform:scale(1.05)}

.case-next{display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:64px 32px 80px;margin-top:24px;border-top:1px solid var(--line-soft)}
.case-next-link{color:var(--muted);font-size:15px;transition:color var(--t-fast) var(--ease)}
.case-next-link:hover{color:var(--text)}

/* footer */
.footer{border-top:1px solid var(--line-soft);padding:50px 0 30px}
.footer-inner{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
.footer-name{font-weight:500;font-size:15px}
.footer-meta{color:var(--faint);font-size:13px;margin-top:4px}
.footer-right{text-align:right}
.footer-nav{display:flex;gap:22px;justify-content:flex-end;margin-bottom:10px}
.footer-nav a{color:var(--muted);font-size:14px;transition:color var(--t-fast)}
.footer-nav a:hover{color:var(--text)}
.footer-email{color:var(--text);font-size:14px}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:36px;padding-top:20px;
  border-top:1px solid var(--line-soft);color:var(--faint);font-size:12px;letter-spacing:.3px}
.footer-social{display:flex;align-items:center;gap:18px}
.footer-social a{display:flex;color:var(--faint);transition:color var(--t-fast) var(--ease)}
.footer-social a:hover{color:var(--accent)}
.footer-social svg{width:18px;height:18px;display:block;fill:currentColor}

/* modal */
.modal{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:24px}
.modal.open{display:flex}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.85)}
.modal-inner{position:relative;width:100%;max-width:1280px;z-index:2}
.modal-close{position:absolute;top:-42px;right:0;background:none;border:0;color:var(--text);
  font-size:30px;line-height:1;cursor:pointer;opacity:.8}
.modal-close:hover{opacity:1}
.video-wrap{position:relative;width:100%;aspect-ratio:16/9;background:#000;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.video-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.reel-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.reel-fallback img{width:100%;height:100%;object-fit:cover;opacity:.5}
.reel-fallback-cta{position:absolute;display:flex;align-items:center;gap:8px;
  padding:13px 24px;border:1px solid var(--text);border-radius:var(--radius);
  background:rgba(0,0,0,.55);color:var(--text);font-size:14px;letter-spacing:.3px;
  transition:var(--t-fast) var(--ease)}
.reel-fallback:hover .reel-fallback-cta{background:var(--text);color:var(--bg)}
.video-ph{display:flex;align-items:center;justify-content:center;height:100%;color:var(--faint);font-size:13px;letter-spacing:1px}

/* accent (orange) */
.eyebrow{color:var(--accent)}
.nav-links a.active,.nav-links a:hover{color:var(--accent)}
.btn{border-color:var(--accent);color:var(--accent)}
.btn:hover{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.play{transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
a:hover .play,.tile.featured:hover .play{border-color:var(--accent);color:var(--accent)}
.case-step{color:var(--accent)}
.method-num{color:var(--accent)}
.contact-email{color:var(--accent);border-color:var(--accent)}
.case-next-link:hover,.case-back:hover,.footer-nav a:hover,.social-links a:hover,.footer-email:hover{color:var(--accent)}
/* closing-block CTA link: accent orange, underline on hover/focus */
.case-cta{color:var(--accent);border-bottom:1px solid transparent;transition:border-color var(--t-fast) var(--ease)}
.case-cta:hover,.case-cta:focus-visible{border-bottom-color:var(--accent)}

/* responsive */
@media(max-width:900px){
  .work-grid{grid-template-columns:repeat(2,1fr)}
  /* 2-col: featured spans both columns as a hero band so total cell count stays even
     (featured 2 + 14 projects = 16 = clean rows, no orphan); default 4 hidden -> 6 full rows */
  .tile.featured{grid-column:span 2;grid-row:span 1;aspect-ratio:16/9}
  .method-grid{grid-template-columns:1fr;gap:26px}
  .about-intro{grid-template-columns:1fr;gap:32px}
  .about-photo{max-width:300px}
  .about-grid{grid-template-columns:1fr;gap:8px}
  .about-block{padding-top:18px;border-top:1px solid var(--line-soft)}
  .about-block:first-child{padding-top:0;border-top:0}
  .contact-grid{grid-template-columns:1fr;gap:30px}
  .case-overview{grid-template-columns:1fr;gap:16px}
  .case-strip{grid-template-columns:1fr;gap:22px}
  .case-strip.reverse .case-strip-media{order:0}
  .case-singles{grid-template-columns:repeat(3,1fr)}
  /* P4: related thumbs get tight at 4-col on iPad portrait, drop to 2-col earlier */
  .related-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .container{padding-left:20px;padding-right:20px}
  /* logo: scale down so the 68px bar is not dominated, align mark to wordmark */
  .logo{font-size:26px;gap:6px;margin-left:-7px}
  .logo-mark-wrap{height:34px;width:34px;transform:translateY(-2px)}
  .logo-mark{height:34px}
  /* mobile vertical rhythm: sections set their own vertical padding so the
     horizontal-only .container above never flattens it */
  .hero{padding:60px 20px 44px}
  .case-head{padding-top:40px;padding-bottom:24px}
  .case-section{padding-top:36px;padding-bottom:4px}
  .case-strips{padding-top:20px;padding-bottom:20px}
  .case-strip{padding:24px 0}
  .case-block{padding-top:28px;padding-bottom:28px}
  .case-gallery{padding-top:28px;padding-bottom:4px}
  .case-related{padding-top:8px;padding-bottom:48px}
  .case-next{padding-top:40px;padding-bottom:56px}
  .cta{padding-top:56px;padding-bottom:64px}
  .faq{padding-bottom:56px}
  .logo-track{animation-duration:28s}
  .logo-track img{height:42px;margin-right:60px}
  .about{padding-top:48px;padding-bottom:28px}
  .contact{padding-top:48px;padding-bottom:56px}
  .case-meta{flex-direction:column;gap:16px;margin-top:32px;padding-top:24px}
  .case-meta > div:last-child{text-align:left}
  .work-grid{grid-template-columns:1fr}
  .tile.featured{grid-column:span 1;grid-row:span 1;aspect-ratio:4/3}
  .case-grid-2{grid-template-columns:1fr}
  .case-grid-3{grid-template-columns:1fr 1fr}
  .case-grid-3 .thumb-static.span-all{grid-column:1/-1}
  .case-singles{grid-template-columns:repeat(2,1fr)}
  .case-grid-4{grid-template-columns:repeat(2,1fr)}
  .nav-toggle{display:flex}
  .nav-links{position:absolute;top:68px;left:0;right:0;flex-direction:column;gap:0;
    background:var(--bg);border-bottom:1px solid var(--line);
    max-height:0;overflow:hidden;transition:max-height var(--t-fast) var(--ease)}
  /* P4: JS sets max-height to content scrollHeight; this is the no-JS fallback */
  .nav-links.open{max-height:80vh}
  .nav-links a{padding:16px 20px;border-top:1px solid var(--line-soft)}
  .footer-inner{flex-direction:column}
  .footer-right{text-align:left}
  .footer-nav{justify-content:flex-start}
  /* P3: footer credit line stacks cleanly on mobile instead of cramped justify-between */
  .footer-bottom{flex-direction:column;gap:6px;align-items:flex-start}
  .case-gallery-grid{grid-template-columns:1fr}
  .case-gallery-grid .thumb-static.wide{grid-column:span 1;aspect-ratio:4/3}
  .related-grid{grid-template-columns:1fr 1fr}
  .case-next{flex-direction:column;align-items:flex-start}
  .lightbox{padding:16px}
  .lightbox-close{top:12px;right:14px}
}

/* keyboard focus: visible accent ring for keyboard users only */
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
:focus:not(:focus-visible){outline:none}
.tile:focus-visible,.thumb-static.zoomable:focus-visible,.related-card:focus-visible,
.case-video.yt-facade:focus-visible{outline-offset:2px}

/* touch devices have no hover: show tile captions persistently instead of on hover */
@media(hover:none){
  .overlay{opacity:1;transform:none}
}

/* respect reduced-motion: kill scale transforms, smooth scroll and long transitions */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  .tile:hover .thumb,
  .thumb-static.zoomable:hover img,
  .thumb-static.zoomable:hover video,
  .related-card:hover .thumb-static img{transform:none}
}

/* ---- MerchandAise football layout helpers ---- */
/* 16:10 video embed (hero + BTS films shot 16:10) */
.case-video.ratio-1610{aspect-ratio:16/10;max-width:none}
/* full-width 16:10 hero still */
.thumb-static.hero-wide{aspect-ratio:1870/922}
/* stacked full-width 16:10 stills, one per row */
.case-stills.stacked-wide{display:grid;gap:24px}
.case-stills.stacked-wide .thumb-static{aspect-ratio:16/10}
/* constrained portrait (vertical product clip), left-aligned */
.case-portrait{max-width:420px}
.case-portrait .thumb-static{aspect-ratio:4/5}

/* before / after reveal slider (sits in a .case-grid-4 cell, 4:5) */
.ba-slider{position:relative;aspect-ratio:4/5;border-radius:var(--radius);overflow:hidden;
  border:1px solid var(--line);background:#000;cursor:ew-resize;user-select:none;
  touch-action:none;container-type:inline-size}
.ba-slider img{position:absolute;top:0;left:0;height:100%;display:block;
  pointer-events:none;-webkit-user-drag:none;user-select:none}
.ba-after{width:100%;object-fit:cover}
.ba-before{position:absolute;top:0;left:0;height:100%;width:var(--pos,50%);overflow:hidden;z-index:1}
.ba-before img{width:100cqw;max-width:none;object-fit:cover}
.ba-line{position:absolute;top:0;bottom:0;left:var(--pos,50%);width:2px;z-index:2;
  background:var(--text);transform:translateX(-1px);pointer-events:none}
.ba-handle{position:absolute;top:50%;left:var(--pos,50%);z-index:3;
  width:40px;height:40px;border-radius:50%;background:rgba(2,9,18,.55);
  border:1px solid var(--text);backdrop-filter:blur(2px);pointer-events:none;
  transform:translate(-50%,-50%)}
.ba-handle::before,.ba-handle::after{content:"";position:absolute;top:50%;width:0;height:0;
  border-style:solid;border-width:5px 7px;border-color:transparent}
.ba-handle::before{left:7px;transform:translateY(-50%);border-right-color:var(--text);border-left-width:0}
.ba-handle::after{right:7px;transform:translateY(-50%);border-left-color:var(--text);border-right-width:0}
.ba-slider:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.ba-slider:hover .ba-handle{border-color:var(--accent)}
.ba-slider.snapping .ba-before,.ba-slider.snapping .ba-line,.ba-slider.snapping .ba-handle{transition:width .28s var(--ease),left .28s var(--ease)}
.ba-tag{position:absolute;top:12px;z-index:2;font-size:11px;letter-spacing:1px;
  text-transform:uppercase;color:var(--text);background:rgba(2,9,18,.55);
  backdrop-filter:blur(2px);padding:4px 9px;border-radius:4px;pointer-events:none}
.ba-tag-l{left:12px}
.ba-tag-r{right:12px}

@media(max-width:700px){
  .case-grid-4{grid-template-columns:repeat(2,1fr)}
}
@media(prefers-reduced-motion:reduce){
  .ba-slider{cursor:default}
}
