/* Service pages (product, mobile app, website, brand, design systems): open header, framed-card work gallery,
   ticker, scroll-highlight studio intro and the capabilities bento. Light-theme overrides live in theme.css. */

/* ---------- Header: an open, centred intro that flows into the page (no full-screen card) ---------- */
.phead{position:relative;padding:calc(132px + 3vh) var(--gutter) 3.5rem;text-align:center;overflow:clip}
/* soft brand light at the sides only; the middle stays clear behind the text */
.phead-glow{position:absolute;left:-10%;right:-10%;top:0;height:100%;pointer-events:none;filter:blur(40px);
  background:radial-gradient(30% 46% at 8% 70%,rgba(111,157,255,.26),transparent 70%),radial-gradient(28% 44% at 94% 64%,rgba(255,146,207,.2),transparent 70%),radial-gradient(22% 26% at 82% 8%,rgba(255,217,138,.12),transparent 70%)}
.phead-in{position:relative;z-index:1;max-width:76rem;margin:0 auto;display:flex;flex-direction:column;align-items:center}
.phead-eyebrow{display:inline-flex;align-items:center;gap:.7rem;font-size:.8125rem;letter-spacing:.06em;color:rgba(255,255,255,.82)}
.phead-spark{flex:none;opacity:.85}
.phead-title{margin-top:1.75rem;font-size:clamp(2.75rem,6.6vw,6rem);font-weight:300;line-height:.98;letter-spacing:-.025em}
.phead-title .nowrap{white-space:nowrap}
.phead-sub{margin-top:1.75rem;max-width:42rem;font-size:1.125rem;line-height:1.6;color:rgba(255,255,255,.7)}
.phead-ctas{margin-top:2.25rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1rem 2rem}
.phead-link{font-size:.9375rem;font-weight:500;color:#fff;text-decoration:underline;text-decoration-color:rgba(255,255,255,.3);text-underline-offset:5px;transition:text-decoration-color .2s}
.phead-link:hover{text-decoration-color:currentColor}
.phead-for{position:relative;margin-top:3.25rem;padding:.95rem 0;font-size:.8125rem;letter-spacing:.06em;color:rgba(255,255,255,.82)}
.phead-for::before,.phead-for::after{content:"";position:absolute;left:-2rem;right:-2rem;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.14),transparent)}
.phead-for::before{top:0}.phead-for::after{bottom:0}
.phead-logos{margin-top:2.75rem;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;row-gap:1.5rem}
.phead-logos li{display:flex;align-items:center;padding:0 clamp(1rem,1.9vw,2rem);border-left:1px solid rgba(255,255,255,.12)}
.phead-logos li:first-child{border-left:0}
.phead-logos img{display:block;width:auto;opacity:.5}
@media (max-width:767px){.phead-logos li{border-left:0;padding:0 .9rem}.phead-sub{font-size:1rem}}

/* ---------- Work gallery: framed mockup cards, the centre one large with its neighbours peeking in ---------- */
.pgal{position:relative;padding:1.5rem 0 0;overflow:clip}
.pgal-viewport{position:relative;outline:none;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none}
.pgal-viewport.is-dragging{cursor:grabbing}
.pgal-viewport:focus-visible .pgal-slide.is-on .pcard-in{outline:2px solid #6ea8fe;outline-offset:4px}
.pgal-track{--gap:clamp(16px,2.4vw,40px);--drag:0px;display:grid;justify-content:center}
.pgal-slide{--rel:0;grid-area:1/1;width:min(920px,56vw);opacity:.6;
  transform:translateX(calc(var(--rel) * (100% + var(--gap)) + var(--drag))) scale(.9);
  transition:transform .8s cubic-bezier(.22,1,.36,1),opacity .6s ease}
.pgal-slide.is-on{transform:translateX(var(--drag));opacity:1}
.pgal-slide.no-anim,.pgal-track.no-anim .pgal-slide{transition:none}
@media (max-width:1100px){.pgal-slide{width:74vw}}
@media (max-width:760px){.pgal-slide{width:86vw}}
/* single glass edge: light catching the top-left, a faint brand reflection bottom-right */
.pcard{border-radius:30px}
.pcard-in{position:relative;border-radius:30px;padding:12px 12px 0;background:linear-gradient(160deg,#18181b,#121214);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 30px 70px rgba(0,0,0,.35)}
.pcard-in::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(145deg,rgba(255,255,255,.42) 0%,rgba(255,255,255,.1) 22%,rgba(255,255,255,.04) 48%,rgba(255,146,207,.22) 78%,rgba(111,157,255,.38) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.pcard-media{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:18px;background:#0b0b0d}
.pcard-media img,.pcard-media video{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
/* flip card: stacked images, one shown at a time (cycled in the page script) */
.pcard-flip img{position:absolute;inset:0;visibility:hidden}
.pcard-flip img.on{visibility:visible}
.pcard-cap{display:flex;align-items:center;justify-content:space-between;gap:1rem 2rem;flex-wrap:wrap;padding:1.25rem .75rem 1.4rem}
.pcard-name{font-size:18px;font-weight:400;letter-spacing:-.02em;line-height:1.1}
.pcard-link{display:inline-flex;align-items:center;gap:8px;color:inherit;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:4px;transition:text-decoration-color .2s}
.pgal-slide.is-on .pcard-link:hover{text-decoration-color:currentColor}
.pcard-ext{flex:none;opacity:.7}
.pcard-tags{display:flex;flex-wrap:wrap;gap:.35rem 1rem;font-size:.8125rem;color:rgba(255,255,255,.72)}
@media (max-width:760px){.pcard,.pcard-in{border-radius:24px}.pcard-in{padding:8px 8px 0}.pcard-media{border-radius:14px}.pcard-tags{gap:.3rem .75rem}}
.pgal-controls{margin-top:2.25rem;display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding:0 var(--gutter)}
.pgal-arrows{display:flex;gap:12px}
.pgal-arrows .pill{width:48px;height:48px;padding:0;justify-content:center}

/* ---------- Ticker: what we help teams do, drifting past between two hairlines ---------- */
.ticker{position:relative;margin-top:4.5rem;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.ticker-track{display:flex;width:max-content;animation:ticker 60s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker ul{display:flex;gap:4.5rem;padding:1.6rem 4.5rem 1.6rem 0}
.ticker li{white-space:nowrap;font-size:.9375rem;font-weight:500;letter-spacing:.04em;color:rgba(255,255,255,.72)}
/* top and bottom lines: brand gradient in the middle, fading out to both sides */
.ticker::before,.ticker::after{content:"";position:absolute;left:0;right:0;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent 12%,rgba(111,157,255,.55) 38%,rgba(255,146,207,.6) 62%,transparent 88%)}
.ticker::before{top:0}.ticker::after{bottom:0}
@keyframes ticker{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.ticker-track{animation:none}.pgal-track,.pgal-slide{transition:none}}

/* ---------- Studio intro: one tinted paragraph, then one that lights up word by word as you scroll ---------- */
.studio-intro{padding:var(--section-gap) var(--gutter);text-align:center;display:flex;flex-direction:column;align-items:center}
.intro-mark{color:rgba(255,255,255,.72)}
.intro-eyebrow{margin-top:1rem;font-size:.8125rem;font-weight:500;letter-spacing:.06em;color:rgba(255,255,255,.72)}
.intro-lead,.intro-scrub{max-width:34ch;font-size:clamp(1.5rem,2.5vw,2.25rem);font-weight:400;line-height:1.28;letter-spacing:-.015em}
.intro-lead{margin-top:2rem;background:linear-gradient(100deg,#ffb7de,#ffdfa6 50%,#a9c4ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.intro-scrub{margin-top:2.25rem}
.intro-scrub .sw{transition:opacity .15s linear}

/* ---------- Capabilities bento: full-width double-framed cards like the home page, with a closing strip ---------- */
.jbento{padding:0 var(--gutter) var(--section-gap)}
.jb-grid{display:flex;flex-direction:column;gap:1.5rem}
.jb-row{display:grid;gap:1.5rem}
@media (min-width:900px){.jb-two{grid-template-columns:1fr 1fr}.jb-left{grid-template-columns:15rem 1fr}.jb-right{grid-template-columns:1fr 15rem}}

.jb{padding:8px;border-radius:30px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07)}
.jb-in{position:relative;height:100%;overflow:hidden;border-radius:22px;padding:2rem;background:linear-gradient(160deg,#17171a,#111113);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.jb-label{font-size:.75rem;font-weight:500;letter-spacing:.08em;color:rgba(255,255,255,.72)}
.jb-n{font-size:.875rem;letter-spacing:0;font-variant-numeric:tabular-nums;color:#81817e}
.jb h3{margin-top:.9rem;max-width:16ch;font-size:clamp(1.5rem,2.1vw,2rem);font-weight:400;line-height:1.12;letter-spacing:-.02em}
.jb-text{position:relative;margin-top:1rem;max-width:34rem;font-size:.9375rem;line-height:1.55;color:rgba(255,255,255,.72)}
.jb .tags{position:relative;margin-top:1.5rem;display:flex;flex-wrap:wrap;gap:6px}
.jb .tags span{border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:4px 11px;font-size:.75rem;color:rgba(255,255,255,.75)}

.jb-num{font-size:clamp(2.5rem,3.6vw,3.25rem);font-weight:300;line-height:1;letter-spacing:-.03em}

/* dot matrix fading out from one corner */
.jb-dotted .jb-in{min-height:21rem}
.jb-dots{position:absolute;right:0;bottom:0;width:60%;height:75%;pointer-events:none;
  background-image:radial-gradient(circle,rgba(255,255,255,.22) 1.3px,transparent 1.6px);background-size:16px 16px;
  -webkit-mask-image:radial-gradient(70% 70% at 100% 100%,#000,transparent);mask-image:radial-gradient(70% 70% at 100% 100%,#000,transparent)}

/* closing strip */
.jb-strip .jb-in{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:1.25rem 1.75rem;padding:1.5rem}
@media (min-width:900px){.jb-strip .jb-in{grid-template-columns:auto auto 1fr}.jb-strip .jb-text{margin:0;padding-left:1.75rem;border-left:1px solid rgba(255,255,255,.12)}}
.jb-strip h3{margin:0;max-width:14ch}
.jb-strip .jb-text{grid-column:1/-1}
@media (min-width:900px){.jb-strip .jb-text{grid-column:auto}}
.jb-mark{display:block;width:84px;height:84px;border-radius:20px;overflow:hidden;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1)}
.jb-mark img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 30%}
.jb-cta{margin-top:5rem;display:flex;flex-direction:column;align-items:center;gap:1.75rem;text-align:center}
.jb-cta p{font-size:clamp(1.75rem,3vw,2.5rem);font-weight:300;letter-spacing:-.02em;line-height:1.15}

/* ---------- Bento variety: single glass edge, brand gradient, and illustrated cards ---------- */
.jb-glass{padding:0;background:none;border:0}
.jb-glass .jb-in{border-radius:28px;padding:2.5rem 2rem 2rem;background:linear-gradient(160deg,#18181b,#111113);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 24px 60px rgba(0,0,0,.35)}
.jb-glass .jb-in::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(145deg,rgba(255,255,255,.42) 0%,rgba(255,255,255,.1) 22%,rgba(255,255,255,.04) 48%,rgba(255,146,207,.22) 78%,rgba(111,157,255,.38) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.jb-grad .jb-in{background:var(--brand-grad)}
.jb-grad .jb-label{color:rgba(255,255,255,.75)}
.jb-grad .jb-text{color:rgba(255,255,255,.85)}
.jb-grad .tags span{border-color:rgba(255,255,255,.3);color:#fff}
.jb-grad .jb-dots{background-image:radial-gradient(circle,rgba(255,255,255,.35) 1.3px,transparent 1.6px)}
/* illustrations sit in a soft lit panel at the top of the card */
.jb-illo{position:relative;height:12.5rem;margin:-.75rem -.75rem 1.75rem;border-radius:16px;overflow:hidden;
  background:radial-gradient(70% 60% at 20% 15%,rgba(111,157,255,.2),transparent 70%),radial-gradient(60% 55% at 90% 30%,rgba(255,146,207,.16),transparent 70%),#0b0a12;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.jb-illo-cc .cc-window{left:7%;right:7%;top:50%;transform:translateY(-50%)}
.flow-svg{position:absolute;inset:0;margin:auto;width:76%;height:76%}
.flow-svg .fl-node{fill:rgba(255,255,255,.04);stroke:rgba(255,255,255,.32);stroke-width:1}
.flow-svg .fl-on{fill:rgba(111,157,255,.14);stroke:#6f9dff}
.flow-svg .fl-line,.flow-svg .fl-arrow{fill:none;stroke:rgba(255,255,255,.35);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.flow-svg .fl-acc{fill:none;stroke:url(#flow-acc);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:4 4;animation:flow-dash 1.6s linear infinite}
.flow-svg text{fill:rgba(255,255,255,.75);font:500 9.5px/1 var(--sans);text-anchor:middle}
@keyframes flow-dash{to{stroke-dashoffset:-16}}
.kit{position:absolute;left:8%;right:8%;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:14px}
.kit-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kit-sw{width:26px;height:26px;border-radius:50%;background:var(--c);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.kit-sw-line{background:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.kit-token{margin-left:6px;font:500 .6875rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:rgba(255,255,255,.72)}
.kit-btn{padding:7px 14px;border-radius:999px;font-size:.75rem;font-weight:600;background:#fff;color:#111}
.kit-ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.kit-toggle{position:relative;width:38px;height:22px;border-radius:999px;background:linear-gradient(90deg,#ff92cf,#6f9dff)}
.kit-toggle i{position:absolute;right:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff}
.kit-check{width:20px;height:20px;border-radius:6px;background:#6f9dff;position:relative}
.kit-check::after{content:"";position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.kit-input{flex:1;min-width:9rem;display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:10px;font-size:.75rem;line-height:1;color:rgba(255,255,255,.72);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.kit-input svg{flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.kit-chip{padding:5px 10px;border-radius:999px;font-size:.6875rem;font-weight:600;color:#86e3ac;background:rgba(70,190,120,.14)}
.kit-chip-off{color:rgba(255,255,255,.72);background:rgba(255,255,255,.08)}
@media (prefers-reduced-motion:reduce){.flow-svg .fl-acc{animation:none}}
.cc-window{position:absolute;left:6%;right:6%;top:5%;border-radius:14px;overflow:hidden;background:rgba(14,16,24,.94);border:1px solid rgba(255,255,255,.12);
  box-shadow:0 28px 60px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.08);font:500 .6875rem/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#cfcbdb;text-align:left}
.cc-bar{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.07);color:rgba(255,255,255,.72);font-size:.6875rem}
.cc-bar i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.16)}
.cc-bar span{margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-body{padding:10px 12px 12px}
.cc-body p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-welcome{display:flex;align-items:center;gap:7px;margin-bottom:8px;padding:6px 9px;border:1px solid rgba(217,119,87,.7);border-radius:8px;color:#e9e6f0}
.cc-welcome svg{flex:none}
.cc-welcome b{font-weight:600;color:#fff}
.cc-prompt{margin-bottom:6px;color:#fff}
.cc-prompt span{color:rgba(255,255,255,.72);margin-right:4px}
.cc-step .dot{color:#5fd38d;margin-right:6px;font-size:.6rem;vertical-align:1px}
.cc-step em{font-family:inherit;font-style:normal;font-weight:inherit;letter-spacing:0;color:#a9b8ff}
.cc-diff{margin:1px 0;padding:0 8px;border-radius:4px}
.cc-diff.add{background:rgba(70,190,120,.14);color:#86e3ac}
.cc-diff.del{background:rgba(240,90,90,.14);color:#f3a0a0}
.cc-done{margin-top:8px;color:#86e3ac}
.cc-cursor{display:inline-block;width:7px;height:13px;margin-left:6px;vertical-align:-2px;background:#e9e6f0;animation:cc-blink 1.1s steps(1) infinite}
@keyframes cc-blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.cc-cursor{animation:none}}

/* illustrated cards: the illustration takes two thirds, beside the text (stacked on phones) */
@media (min-width:900px){
  .jb-side .jb-in{display:grid;grid-template-columns:3fr 2fr;gap:2.5rem;align-items:center;padding:1.25rem 2.25rem 1.25rem 1.25rem}
  .jb-side-r .jb-in{grid-template-columns:2fr 3fr;padding:1.25rem 1.25rem 1.25rem 2.25rem}
  .jb-side-r .jb-illo{order:2}
  .jb-side .jb-illo{margin:0;height:auto;min-height:17rem;align-self:stretch}
  .jb-side .jb-body h3{max-width:none}
}
.jb-side .jb-body{position:relative}

/* rich side cards (from the home page): a photo with a glass panel, and the client rating with a quote */
@media (min-width:900px){.jb-left{grid-template-columns:21rem 1fr}.jb-right{grid-template-columns:1fr 21rem}}
.jb-photo .jb-in{display:flex;flex-direction:column;justify-content:flex-end;min-height:24rem;padding:1.25rem;background:#0b0b0d}
.jb-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.jb-photo-panel{position:relative;padding:1.4rem 1.5rem;border-radius:18px;background:rgba(8,8,10,.45);border:1px solid rgba(255,255,255,.1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.jb-photo-panel .jb-num{font-size:clamp(2.5rem,3.4vw,3.25rem)}
.jb-photo-panel p:not(.jb-num){margin-top:.75rem;font-size:.9375rem;line-height:1.55;color:rgba(255,255,255,.75)}
.jb-quote .jb-in{display:flex;flex-direction:column;min-height:24rem}
.jb-rating{margin-top:.9rem;display:flex;align-items:flex-end;gap:1rem}
.jb-avatars{display:flex;margin-bottom:.35rem}
.jb-avatars img{width:34px;height:34px;border-radius:50%;object-fit:cover;border:2px solid #151517;margin-left:-.6rem;background:#2a2a2a}
.jb-avatars img:first-child{margin-left:0}
.jb-quote blockquote{margin-top:auto;padding-top:2rem;font-size:1.25rem;line-height:1.38;letter-spacing:-.015em;color:rgba(255,255,255,.88)}
.jb-quote cite{display:block;margin-top:1rem;font-style:normal;font-size:.8125rem;color:rgba(255,255,255,.72)}

/* awards card (from the home page): brand gradient, no frame, cycling award badges top-right */
.jb.jb-awards{padding:0;background:none;border:0}
.jb-awards .jb-in{display:flex;flex-direction:column;min-height:24rem;border-radius:28px;padding:2rem;background:var(--brand-grad);box-shadow:none}
.jb-awards .jb-label{font-size:.875rem;letter-spacing:0;color:rgba(255,255,255,.75)}
.jb-awards .jb-num{margin-top:1rem;font-size:clamp(2.75rem,4vw,4rem)}
.jb-awards .jb-awards-text{margin-top:auto;padding-top:2rem;line-height:1.55;color:rgba(255,255,255,.85)}
.award-cycle{position:absolute;right:1.5rem;top:1.5rem;width:72px;height:72px}
.award-cycle img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;visibility:hidden}
.award-cycle img.on{visibility:visible}
