/* Home */
/* hero: light blueprint ground, the logo curve as the colour */
.hero{position:relative;background-color:var(--hero-bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:40px 40px;border-bottom:1px solid var(--line);overflow:hidden;padding:40px 0 0}
@media (min-width:768px){.hero{padding-top:72px}}
.swoosh{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.swoosh-in{position:absolute;inset:0;overflow:hidden;animation:rv 1.3s .15s var(--ease) both}
.swoosh-in>div{position:absolute;inset:0;animation:rv-c 1.3s .15s var(--ease) both}
@keyframes rv{from{transform:translateX(-100%)}}
@keyframes rv-c{from{transform:translateX(100%)}}
.swoosh svg{position:absolute;right:-12%;top:-6%;width:min(1100px,130%);height:auto}
@media (max-width:767px){.swoosh svg{right:-55%;top:4%;width:190%;opacity:.3}}
/* tablets: the curve stays a soft background so it never fights the copy */
@media (min-width:768px) and (max-width:1199px){.swoosh svg{right:-34%;top:-16%;width:118%;opacity:.35}}
.hero .wrap{position:relative}
.hero h1{color:var(--ink);font-size:clamp(38px,6.4vw + 22px,112px);line-height:.95;max-width:13ch}
@media (min-width:768px){.hero h1 em{white-space:nowrap}}
.hero h1 em{font-style:normal;color:var(--blue);background:linear-gradient(transparent 22%,var(--tint) 22%,var(--tint) 92%,transparent 92%);padding:0 .12em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.hero-row{display:grid;grid-template-columns:minmax(0,1fr);gap:32px;margin-top:36px;padding-bottom:48px}
@media (min-width:900px){.hero-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;margin-top:24px;padding-bottom:72px}}
.hero .lead{color:var(--body)}
.hero-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.aud{display:flex;flex-wrap:wrap;gap:4px 18px;font:600 15px/1.4 var(--display);letter-spacing:.02em;color:var(--muted);margin-top:24px}
@media (min-width:560px){.aud{column-gap:0}.aud span+span::before{content:"/";margin:0 10px;color:var(--field)}}
.hero-photo{position:relative;border-radius:16px;aspect-ratio:4/3;background:#E1E8EE;border:1px dashed var(--field);display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--body);box-shadow:0 14px 36px rgba(20,40,55,.12);font-size:14px;text-align:center}
.hero-photo b{color:var(--ink);font:600 17px/1.2 var(--display)}
.pin{position:absolute;left:16px;top:16px;background:#fff;box-shadow:0 4px 12px rgba(20,40,55,.1);color:var(--ink);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.pin svg{width:16px;height:16px;color:var(--blue)}

/* clients */
.clients{background:var(--soft);padding:28px 0;border-bottom:1px solid var(--line)}
.clients h2{font:600 14px/1 var(--display);letter-spacing:.1em;text-transform:uppercase;text-align:center;color:var(--muted);margin-bottom:18px}
.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.track{display:flex;gap:56px;width:max-content;animation:mq 38s linear infinite}
.marquee:hover .track{animation-play-state:paused}
.track span{font:700 22px/1 var(--display);letter-spacing:.06em;color:var(--muted);white-space:nowrap;transition:color .2s ease-out}
@media (hover:hover){.track span:hover{color:var(--blue)}}
@keyframes mq{to{transform:translateX(-50%)}}

/* process: a current running down the page */
.proc{display:grid;grid-template-columns:minmax(0,1fr);gap:40px}
@media (min-width:900px){.proc{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:72px}.proc-head{position:sticky;top:120px;align-self:start}}
.proc-head .lead{margin-top:20px}
.steps{list-style:none;margin:0;padding:0 0 0 36px;position:relative}
.steps::before,.steps::after{content:"";position:absolute;left:7px;top:10px;bottom:10px;width:3px;background:var(--line);border-radius:2px}
.steps::after{background:var(--blue);transform-origin:top;transform:scaleY(var(--p,0))}
.steps li{position:relative;padding:0 0 48px}
.steps li:last-child{padding-bottom:0}
.steps li::before{content:"";position:absolute;left:-36px;top:12px;width:17px;height:17px;border-radius:50%;background:#fff;border:3px solid var(--blue)}
.num{display:block;font:700 18px/1 var(--display);color:var(--blue);font-variant-numeric:tabular-nums;letter-spacing:.02em}
.steps h3{font-size:clamp(30px,3.6vw,44px);line-height:1.05;margin-top:8px}
.steps p{margin-top:10px;max-width:46ch;font-size:17px}

/* services index */
.svc-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:20px;margin-bottom:40px}
.svc-head .lead{margin-top:16px}
.index{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.index a{display:grid;gap:6px 32px;padding:24px 4px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--body);position:relative;transition:background-color .2s ease-out}
@media (min-width:900px){.index a{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 40px;align-items:center;padding:30px 12px}}
@media (hover:hover){.index a:hover{background:var(--sky)}}
.index h3{font-size:clamp(26px,3vw,38px);line-height:1.05;transition:color .2s ease-out}
@media (hover:hover){.index a:hover h3{color:var(--blue)}}
.index .tags{display:block;font:600 14px/1.3 var(--display);color:var(--muted);letter-spacing:.02em;margin-top:6px}
.index .go{display:none}
/* phones & tablets: keep the arrow as the "this row is a link" cue */
@media (max-width:899px){
  .index a{position:relative;padding-right:56px}
  .index .go{display:flex;position:absolute;right:4px;top:24px;width:36px;height:36px;border-radius:50%;border:2px solid var(--ink);align-items:center;justify-content:center;color:var(--ink)}
  .index a:active .go{background:var(--blue);border-color:var(--blue);color:#fff}
}

@media (min-width:900px){.index .go{display:flex;width:40px;height:40px;border-radius:50%;border:2px solid var(--ink);align-items:center;justify-content:center;color:var(--ink);transition:transform .2s var(--ease),background-color .2s ease-out,color .2s ease-out}.index a:hover .go{background:var(--blue);border-color:var(--blue);color:#fff;transform:translateX(4px)}}
.index .go svg{width:18px;height:18px}

/* sectors: two halves, two worlds */
.halves{display:grid;grid-template-columns:minmax(0,1fr)}
@media (min-width:768px){.halves{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.half{padding:var(--sec) var(--pad);display:flex;flex-direction:column;gap:18px}
@media (min-width:768px){.half:first-child{padding-left:max(var(--pad),calc((100vw - 1200px)/2 + var(--pad)))}.half:last-child{padding-right:max(var(--pad),calc((100vw - 1200px)/2 + var(--pad)))}}
.half.res{background:var(--sky)}
.half.ind{background:var(--soft)}
.half h3{font-size:clamp(32px,3.8vw,48px);line-height:1}
.half .ph{border-radius:16px;aspect-ratio:16/10;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:14px;text-align:center;border:1px dashed}
.half.res .ph{background:#D6EAF5;border-color:#9CC4DB;color:var(--body)}
.half.ind .ph{background:#E1E8EE;border-color:var(--field);color:var(--body)}
.half .ph b{font:600 17px/1.2 var(--display)}
.half.res .ph b{color:var(--ink)}
.half.ind .ph b{color:var(--ink)}
.half ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,165px),1fr));gap:8px 20px;font-size:15px}
.half li{display:flex;gap:10px;align-items:baseline}
.half li::before{content:"";width:12px;height:2px;flex:none;transform:translateY(-4px);background:var(--blue)}
.sec-intro{display:grid;gap:16px;margin-bottom:0}
@media (min-width:900px){.sec-intro{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:end;gap:48px}}

/* projects: a horizontal run */
.strip{display:grid;grid-auto-flow:column;grid-auto-columns:82%;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--pad);padding:4px var(--pad) 24px;margin:0 calc(var(--pad) * -1);scrollbar-color:var(--blue) var(--sky)}
/* projects: swipeable row up to small laptops, 3-card grid above */
@media (min-width:600px) and (max-width:1023px){.strip{grid-auto-columns:46%}}
@media (min-width:1024px){.strip{grid-auto-columns:minmax(0,1fr);grid-auto-flow:row;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);overflow:visible;padding:4px 0 0;margin:0;align-items:end}.work .ph{aspect-ratio:auto;height:380px}.work:first-child .ph{height:480px}}
.work{scroll-snap-align:start;display:flex;flex-direction:column;gap:14px;text-decoration:none;color:inherit}
.work .ph{border-radius:16px;aspect-ratio:4/5;background:var(--sky);border:1px dashed #9CC4DB;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:14px;color:var(--muted);transition:transform .25s var(--ease),box-shadow .25s ease-out}
.work .ph b{font:600 17px/1.2 var(--display);color:var(--ink)}
.work .kind{font:700 13px/1 var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--blue)}
.work h3{font-size:24px;line-height:1.1;margin-top:6px}
.work p{font-size:14px;color:var(--muted);margin-top:4px}


.svc-sec{padding-top:0}
.sec-intro-wrap{padding-bottom:48px}
@media (prefers-reduced-motion:reduce){
  .steps::after{transform:none}
  .marquee{overflow-x:auto}
}
.strip:focus-visible{outline:3px solid var(--blue);outline-offset:4px;border-radius:16px}
