@font-face{font-family:"Archivo Black";src:url(fonts/archivo-black.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Onest";src:url(fonts/onest.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

:root{
  --ink:#0A0A0B;--paper:#F3F2EE;--warm:#F5F3EE;--mute:#6b6962;--hl:rgba(10,10,11,.16);
  --r:#FF4D4D;--o:#FF9A3D;--y:#FFD93D;--g:#3DDC84;--c:#2ED8E6;--b:#4D8DFF;--v:#A56BFF;
  --spec:linear-gradient(90deg,#FF4D4D,#FF9A3D,#FFD93D,#3DDC84,#2ED8E6,#4D8DFF,#A56BFF);
  --disp:"Archivo Black","Arial Black",Impact,sans-serif;
  --body:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --pad:clamp(16px,2.2vw,32px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--ink);color:var(--warm);font-family:var(--body);font-size:1rem;line-height:1.5;overflow-x:clip}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
ol,ul{list-style:none}
:focus-visible{outline:2px solid var(--b);outline-offset:3px}
.skip{position:absolute;left:8px;top:-60px;background:var(--warm);color:var(--ink);padding:10px 14px;z-index:99;border-radius:6px}
.skip:focus{top:8px}
.wrap{padding-inline:var(--pad);max-width:1600px;margin-inline:auto}

/* logo */
.logo{display:inline-flex;flex-direction:column;align-items:flex-start;text-decoration:none;line-height:1;color:inherit}
.logo-w{font-family:var(--disp);font-size:1.45rem;letter-spacing:-.02em;display:inline-flex;align-items:baseline}
.logo-l{font-size:.5rem;letter-spacing:.5em;font-weight:500;text-transform:uppercase;margin-top:.35rem;padding-left:.1rem}
.dot{display:inline-block;width:.2em;height:.2em;border-radius:50%;margin-left:.06em;background:conic-gradient(from 200deg,#FF4D4D,#FFD93D,#3DDC84,#2ED8E6,#4D8DFF,#A56BFF,#FF4D4D)}
.logo-sm .logo-w{font-size:1.2rem}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.6em;min-height:48px;padding:.8em 1.5em;border-radius:999px;background:var(--warm);color:var(--ink);font:600 .95rem/1 var(--body);text-decoration:none;text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--warm);cursor:pointer;position:relative;transition:background-color .25s,color .25s}
.btn:hover{background:var(--ink);color:var(--warm)}
.light .btn{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.light .btn:hover{background:var(--paper);color:var(--ink)}
.btn-lg{font-size:clamp(1rem,2.4vw,1.5rem);min-height:64px;padding-inline:2em}
.btn-ghost{background:transparent;color:var(--warm);border-color:rgba(245,243,238,.4)}
.btn-ghost:hover{background:var(--warm);color:var(--ink)}
.link{font-weight:500;text-transform:uppercase;letter-spacing:.04em;font-size:.9rem;text-decoration:none;border-bottom:1px solid currentColor;padding-block:.3em;min-height:24px;display:inline-block}
.link:hover{border-image:var(--spec) 1}
.mag{will-change:transform}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;overflow:clip;background:var(--ink);isolation:isolate}
#prism,#prism-front{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#prism{z-index:0}
#prism-front{z-index:2}
.bar{position:relative;z-index:3;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:18px var(--pad)}
.navl{display:none;align-items:center;gap:.9em;font-weight:500;text-transform:uppercase;letter-spacing:.03em;font-size:.95rem}
.navl a{text-decoration:none;padding:.5em .2em;display:inline-block}
.navl a:hover{opacity:.6}
.navcta{justify-self:end;font-weight:500;text-transform:uppercase;letter-spacing:.03em;font-size:.85rem;text-decoration:none;padding:.9em .2em;white-space:nowrap}
.navcta:hover{opacity:.6}
.stage{position:relative;z-index:1;flex:1;display:flex;align-items:center;min-height:0}
.wm{font-family:var(--disp);font-size:27.4vw;line-height:.82;letter-spacing:-.045em;white-space:nowrap;margin-left:-.035em;position:relative;display:flex;align-items:baseline;
  background:linear-gradient(90deg,var(--warm) 0 42%,#FF4D4D 43.5%,#FF9A3D 46%,#FFD93D 48.5%,#3DDC84 51%,#2ED8E6 53.5%,#4D8DFF 56%,#A56BFF 58.5%,var(--warm) 60% 100%);
  background-size:400% 100%;background-position:calc((2 - var(--bx,.2)) * 33.333%) 0;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;user-select:none}
.wm-t{display:block}
.wm-dot{display:inline-block;width:.17em;height:.17em;border-radius:50%;margin-left:.04em;background:conic-gradient(from 200deg,#FF4D4D,#FFD93D,#3DDC84,#2ED8E6,#4D8DFF,#A56BFF,#FF4D4D);-webkit-text-fill-color:initial}
.hero-copy{position:relative;z-index:3;padding:0 var(--pad) clamp(20px,3vw,40px);display:grid;gap:18px}
h1{font-family:var(--disp);font-weight:400;font-size:clamp(1.9rem,4.6vw,4.2rem);line-height:.98;letter-spacing:-.03em;text-transform:uppercase;max-width:15em}
.lead{font-size:clamp(1rem,1.3vw,1.2rem);color:#cfccc4;max-width:30em}
.cta-row{display:flex;flex-wrap:wrap;gap:14px 22px;align-items:center;margin-top:16px}
.fine{font-size:.85rem;color:#a29f97;margin-top:12px}
.hero-side{max-width:34rem}

/* light editorial */
.light{background:var(--paper);color:var(--ink)}
.sec{position:relative}
.giant-wrap{overflow:hidden;padding-top:clamp(40px,6vw,90px)}
.giant{font-family:var(--disp);font-weight:400;font-size:18.2vw;line-height:.86;letter-spacing:-.045em;text-transform:uppercase;white-space:nowrap;padding-inline:var(--pad)}
.giant-wrap.r .giant{text-align:right;margin-right:-1.2vw}
.giant-wrap:not(.r) .giant{margin-left:-.8vw}
.intro{padding:clamp(24px,3vw,44px) var(--pad);display:grid;gap:14px}
.kicker{font-size:.8rem;text-transform:uppercase;letter-spacing:.14em;font-weight:500;color:var(--mute)}
.statement{font-weight:500;font-size:clamp(1.7rem,3.8vw,3.6rem);line-height:1.04;letter-spacing:-.035em;max-width:19em}
.cells{display:grid;gap:1px;background:var(--hl);border-block:1px solid var(--hl)}
.cells>*{background:var(--paper)}
.cell,.svc,.step{padding:clamp(20px,2.4vw,36px)}
h3{font-family:var(--disp);font-weight:400;text-transform:uppercase;letter-spacing:-.02em;line-height:1}
.cells p{color:#3c3b37}

/* services */
.svc-grid{grid-template-columns:1fr}
.svc{position:relative;min-height:240px;display:flex;flex-direction:column;gap:14px;overflow:hidden;isolation:isolate}
.svc::before{content:"";position:absolute;inset:0;background:var(--c);transform:scaleY(0);transform-origin:bottom;z-index:-1}
.svc::after{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:var(--c)}
.svc.on::before{animation:charge 1.3s cubic-bezier(.6,0,.2,1) both;animation-delay:calc(var(--i)*.12s)}
@keyframes charge{0%{transform:scaleY(0);transform-origin:bottom}40%{transform:scaleY(1);transform-origin:bottom}41%{transform-origin:top}100%{transform:scaleY(0);transform-origin:top}}
.svc-n{font-weight:500;font-size:.85rem;letter-spacing:.1em;color:var(--mute)}
.svc h3{font-size:clamp(1.25rem,1.6vw,1.6rem)}
.svc p{margin-top:auto;font-size:.98rem}

/* work */
.work-grid{grid-template-columns:1fr}
.w-intro{display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.w-intro h3,.w-more h3{font-size:clamp(1.8rem,3vw,2.8rem)}
.w-intro .btn{margin-top:auto}
.tag{font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;font-weight:500;color:var(--mute)}
.w-shot{display:flex;flex-direction:column;gap:12px;padding:clamp(16px,2vw,28px)}
.bf{display:flex;align-items:center;gap:6px;height:26px;padding:0 10px;background:#e4e2dc;border-radius:8px 8px 0 0;border:1px solid var(--hl);border-bottom:0}
.bf i{width:8px;height:8px;border-radius:50%;background:#bdbab2}
.bf span{margin-left:10px;font-size:.7rem;color:#55534d;letter-spacing:.02em}
.mock{position:relative;aspect-ratio:1100/687;margin-top:-12px;border:1px solid var(--hl);border-radius:0 0 8px 8px;overflow:hidden;background:var(--ink);transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.w-shot:hover .mock{transform:translateY(-6px)}
.mock b{position:absolute;display:block}
.mock .mh{left:6%;top:12%;width:46%;height:11%;background:var(--warm);border-radius:4px}
.mock .ms{left:6%;top:28%;width:30%;height:4%;background:rgba(245,243,238,.45);border-radius:3px}
.mock .mb{left:6%;top:42%;width:18%;height:8%;background:var(--warm);border-radius:99px}
.mock .mo{right:-8%;top:-14%;width:62%;aspect-ratio:1;border-radius:50%}
.m1{background:radial-gradient(60% 80% at 85% 20%,#0A0A0B,#0A0A0B)}
.m1 .mo{background:conic-gradient(from 210deg,#FF4D4D,#FF9A3D,#FFD93D,#3DDC84,#2ED8E6,#4D8DFF,#A56BFF,#FF4D4D)}
.m2 .mo{background:conic-gradient(from 20deg,#3DDC84,#2ED8E6,#4D8DFF,#A56BFF,#3DDC84)}
.m3 .mo{background:conic-gradient(from 120deg,#FFD93D,#FF9A3D,#FF4D4D,#A56BFF,#FFD93D)}
.m2 .mh,.m3 .mh{width:38%}
figcaption{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute)}
.w-phones{display:flex;flex-direction:column;justify-content:space-between;gap:12px;padding:clamp(16px,2vw,28px);overflow:hidden}
.phones{display:flex;gap:10px;justify-content:center;align-items:flex-start}
.ph{display:block;width:31%;aspect-ratio:360/700;border-radius:14px;border:1px solid var(--hl);background:var(--ink);transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.p1{background:radial-gradient(90% 40% at 70% 18%,#FF4D4D,transparent 70%),var(--ink)}
.p2{margin-top:22px;background:radial-gradient(90% 40% at 30% 22%,#3DDC84,transparent 70%),var(--ink)}
.p3{background:radial-gradient(90% 40% at 60% 18%,#4D8DFF,transparent 70%),var(--ink)}
.w-phones:hover .p1,.w-phones:hover .p3{transform:translateY(-8px)}
.w-more{display:flex;flex-direction:column;gap:16px;align-items:flex-start;justify-content:center}

/* steps / why */
.steps{grid-template-columns:1fr}
.step{position:relative;min-height:260px;display:flex;flex-direction:column;gap:14px}
.step::after{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:var(--c);transform:scaleX(0);transform-origin:left;transition:transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i)*.15s)}
.step.on::after{transform:scaleX(1)}
.sn{font-family:var(--disp);font-size:clamp(4rem,8vw,8rem);line-height:.9;letter-spacing:-.05em}
.step h3{font-size:clamp(1.2rem,1.6vw,1.5rem)}
.step a{font-weight:600}
.why{grid-template-columns:1fr}
.why h3{font-size:clamp(1.3rem,2vw,1.9rem);margin-bottom:14px}
.why-sec{padding-top:clamp(20px,3vw,40px)}
.why-sec .cells{margin-bottom:0}

/* cta */
.cta{background:var(--ink);padding-block:clamp(60px,9vw,140px);overflow:clip}
.cta-h{font-family:var(--disp);font-weight:400;font-size:14.6vw;line-height:.86;letter-spacing:-.05em;text-transform:uppercase;white-space:nowrap;margin:0 0 clamp(20px,3vw,40px) -.04em;overflow:hidden;padding-bottom:.06em}
.cta-h .ln>span{background:var(--spec);background-size:100% 100%;-webkit-background-clip:text;background-clip:text;color:transparent}
.cta .lead{font-size:clamp(1.1rem,1.8vw,1.6rem);color:#d6d3cb}
.foot{background:var(--ink);border-top:1px solid rgba(245,243,238,.14);padding-block:28px}
.foot-in{display:flex;flex-wrap:wrap;gap:16px 40px;align-items:center;justify-content:space-between;font-size:.9rem;color:#a29f97}
.foot-mail{text-decoration:none;color:var(--warm);font-weight:500;padding:.6em 0;display:inline-block}

/* fab */
.fab{position:fixed;right:16px;bottom:16px;z-index:20;box-shadow:0 8px 30px rgba(0,0,0,.35);opacity:0;visibility:hidden;transform:translateY(16px);transition:opacity .3s,transform .3s,visibility .3s}
.fab.show{opacity:1;visibility:visible;transform:none}
.light ~ .fab{}

/* lens */
.lens{display:none}
@media (hover:hover) and (pointer:fine){
  .lens{display:block;position:fixed;left:0;top:0;width:0;height:0;z-index:50;pointer-events:none;opacity:0;transition:opacity .3s}
  .lens.on{opacity:1}
  .lens i{position:absolute;left:-22px;top:-22px;width:44px;height:44px;border-radius:50%;border:1.5px solid;transition:width .25s,height .25s,left .25s,top .25s}
  .lens .lr{border-color:rgba(255,60,60,.9)}
  .lens .lg{border-color:rgba(60,220,130,.9)}
  .lens .lb{border-color:rgba(70,130,255,.9)}
  .lens.big i{left:-38px;top:-38px;width:76px;height:76px}
}

/* reveal */
.js .rv{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.js .rv.in{opacity:1;transform:none}
.ln{display:block;overflow:hidden;padding-bottom:.04em}
.ln>span{display:block}
.js .tl .ln>span{transform:translateY(105%);transition:transform 1s cubic-bezier(.2,.7,.2,1)}
.js .tl.in .ln>span{transform:none}

@media (min-width:700px){
  .svc-grid{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,1fr)}
  .work-grid{grid-template-columns:repeat(2,1fr)}
  .w-wide{grid-column:1/-1}
  .w-intro{grid-column:1/-1}
  .w-more{grid-column:1/-1;flex-direction:row;flex-wrap:wrap;align-items:center;gap:20px 40px}
  .why{grid-template-columns:repeat(3,1fr)}
  .navl{display:flex}
}
@media (min-width:1100px){
  .svc-grid{grid-template-columns:repeat(5,1fr)}
  .svc{min-height:380px}
  .steps{grid-template-columns:repeat(4,1fr)}
  .work-grid{grid-template-columns:repeat(3,1fr)}
  .w-wide{grid-column:span 2}
  .w-intro{grid-column:auto}
  .hero-copy{grid-template-columns:1.3fr 1fr;align-items:end;gap:40px}
  .stage{align-items:flex-start;padding-top:2vw}
  .fab{right:24px;bottom:24px}
}
@media (max-width:699px){
  .bar{grid-template-columns:1fr auto}
  .fab{left:16px;right:16px;justify-content:center}
  .hero{min-height:0}
  .stage{flex:none;padding-top:clamp(170px,54vw,230px)}
  .hero-copy{margin-top:28px;padding-bottom:36px}
  .logo-w{font-size:1.25rem}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .rv,.js .tl .ln>span{opacity:1;transform:none;transition:none}
  .svc.on::before{animation:none}
  .step::after{transform:scaleX(1);transition:none}
  *{transition-duration:.01s!important}
}
