/* Process — page-specific sections (kit styles in service-page.css). */

/* The PH orbit (homepage process mark): a circle and three ellipses that turn by stage. */
.sv-process-orbit{position:relative;display:block;aspect-ratio:1;--turn:0deg}
.sv-process-orbit svg{display:block;width:100%;height:100%;overflow:visible;stroke:currentColor;stroke-width:1}
.sv-process-base,.sv-process-rings{opacity:var(--ring,.5)}
.sv-process-base,.sv-process-rings ellipse{vector-effect:non-scaling-stroke}
.sv-process-rings{transform-origin:190px 190px;transform:rotate(var(--turn));transition:transform 1.4s var(--ease)}
/* Progress: an arc along the outer circle (pathLength 100, 20 per stage) ending in a dot. */
.sv-process-arc{stroke-width:var(--arcw,4);stroke-dasharray:var(--arc) 100;stroke-linecap:round;transition:stroke-dasharray 1.2s var(--ease)}
.sv-process-dot{transform-origin:190px 190px;transform:rotate(calc(var(--arc)*3.6deg));transition:transform 1.2s var(--ease)}
.sv-process-dot circle{fill:currentColor;stroke:none;r:var(--dotr,9px)}
.motion [data-reveal]:not(.is-in) .sv-process-arc{stroke-dasharray:var(--arc0) 100}
.motion [data-reveal]:not(.is-in) .sv-process-dot{transform:rotate(calc(var(--arc0)*3.6deg))}
.sv-process-orbit:is(.is-mark,.is-step) :is(.sv-process-arc,.sv-process-dot){transition-delay:.3s;transition-duration:1.5s}
.sv-process-tag{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font:13px/1.2 var(--sans);transition:opacity .26s,translate .26s}
.sv-process-tag b{width:22px;height:22px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;font-weight:400;background:rgba(13,13,13,.72)}
.sv-process-tag>span{padding:3px 8px;border:1px solid;border-radius:5px;background:rgba(13,13,13,.72)}
.sv-process-tag.is-out{opacity:0;translate:0 4px}

/* Hero: the pieces going into place, under the orbit. */
.sv-process-shade{position:absolute;inset:0;background:radial-gradient(ellipse 52% 46% at 50% 50%,rgba(13,13,13,.62),rgba(13,13,13,.22) 100%),linear-gradient(180deg,rgba(13,13,13,.45) 0%,rgba(13,13,13,0) 26%,rgba(13,13,13,0) 62%,rgba(13,13,13,.8) 100%)}
.sv-process-hero{align-items:center}
.sv-process-hero .sv-hero-full-copy{position:relative;z-index:1;padding:110px var(--sv-pad) 90px}
.sv-process-hero h1{text-wrap:balance}
.sv-process-mbr{display:none}
.sv-process-orbit.is-hero{position:absolute;left:50%;top:50%;width:min(92svh,900px,96vw);translate:-50% -48%;color:#fff;pointer-events:none;--ring:.4;--arcw:1;--dotr:2.6px}
.sv-process-orbit.is-hero .sv-process-arc{opacity:.9}
.sv-process-orbit.is-hero .sv-process-tag{position:absolute;left:50%;bottom:calc(5.8% - 12px);translate:-50% 0}
.sv-process-orbit.is-hero .sv-process-tag.is-out{translate:-50% 4px}
.sv-process-credit{position:absolute;z-index:1;left:var(--sv-pad);bottom:34px;display:grid;gap:5px;color:#fff;font:13px/1.3 var(--sans)}
.sv-process-credit span{display:inline-flex;gap:6px;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;text-decoration-color:rgba(255,255,255,.45);transition:text-decoration-color .3s}
.sv-process-credit:hover span{text-decoration-color:#fff}
.sv-process-credit i{font-style:normal}
.sv-process-credit small{font-size:12px;color:rgba(255,255,255,.62)}

/* Five stages at a glance, over the veiled film. */
.sv-process-path{padding:150px var(--sv-pad) 190px}
.sv-process-path-head{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;row-gap:22px;align-items:end;margin-bottom:100px}
.sv-process-path-head .sv-label{grid-column:1/-1}
.sv-process-path-head h2{grid-column:1/8;font-size:clamp(42px,4.8vw,74px);line-height:1}
.sv-process-path-head p:last-child{grid-column:8/13;font:16px/1.6 var(--display);color:var(--sv-soft);max-width:440px}
.sv-process-path-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:20px}
.sv-process-path-list a{display:grid;gap:14px;color:inherit}
.sv-process-orbit.is-step{width:min(100%,190px);margin:0 auto 26px;color:var(--sv-fg);--ring:.38;--arcw:3;--dotr:9px}
.sv-process-orbit.is-step :is(.sv-process-base,.sv-process-rings){transition:opacity .4s,transform 1.4s var(--ease)}
.sv-process-orbit.is-step b{position:absolute;left:50%;top:50%;translate:-50% -50%;width:26px;height:26px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;font:400 13px/1 var(--sans);background:var(--sv-bg)}
.sv-process-path-list a:hover .sv-process-orbit{--ring:.8}
.sv-process-path-list a:hover .sv-process-rings{transform:rotate(calc(var(--turn) + 52deg))}
.sv-process-path-name{font:400 clamp(22px,1.9vw,28px)/1.1 var(--serif);letter-spacing:-.02em;padding-top:18px;border-top:1px solid var(--sv-line)}
.sv-process-path-line{font:14px/1.5 var(--display);color:var(--sv-muted);max-width:240px}

/* Stage heads: the mark, the title and one line. */
.sv-process-stage{padding:150px var(--sv-pad) 150px}
.sv-process-head{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;row-gap:24px;align-items:end;margin-bottom:90px}
.sv-process-mark{grid-column:1/-1;display:flex;align-items:center;gap:12px;font:13px/1 var(--sans);color:var(--sv-muted)}
.sv-process-mark span:nth-child(2){color:var(--sv-fg)}
.sv-process-orbit.is-mark{width:42px;color:var(--sv-fg);--ring:.55;--arcw:16;--dotr:26px}
.sv-process-orbit.is-mark .sv-process-rings{transition-delay:.35s;transition-duration:1.6s}
.motion [data-reveal]:not(.is-in) .sv-process-orbit.is-mark .sv-process-rings{transform:rotate(var(--from))}
.sv-process-head h2{grid-column:1/8;font-size:clamp(42px,4.8vw,74px);line-height:1}
.sv-process-lead{grid-column:8/13;font:16px/1.6 var(--display);color:var(--sv-soft);max-width:440px}

/* 01 · Conversation: the first questions, lit as they reach the reading line. */
.sv-process-talk{padding-top:110px}
.sv-process-questions{list-style:none;margin:0;padding:0;display:grid;gap:clamp(10px,1.4vw,22px)}
.sv-process-questions li{font:400 clamp(40px,6vw,96px)/1.02 var(--serif);letter-spacing:-.035em;margin-left:calc(var(--i)*clamp(0px,9vw,150px));color:color-mix(in srgb,var(--sv-fg) 22%,transparent);transition:color 1s var(--ease)}
.sv-process-questions li.is-lit{color:var(--sv-fg)}

/* 02 · Proposal & scope: the head stays while the agreed terms pass, row by row. */
.sv-process-scope{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;padding-bottom:190px}
.sv-process-scope .sv-process-head{grid-column:1/6;display:block;align-self:start;position:sticky;top:130px;margin:0}
.sv-process-scope .sv-process-head h2{margin:24px 0 26px}
.sv-process-terms{grid-column:7/13;list-style:none;margin:0;padding:0;border-bottom:1px solid var(--sv-line)}
.sv-process-terms li{display:grid;grid-template-columns:34px minmax(0,1fr);column-gap:10px;row-gap:10px;align-items:baseline;padding:30px 0 32px;border-top:1px solid var(--sv-line)}
.sv-process-terms i{grid-row:1;width:14px;height:14px;border-radius:50%;border:1px solid currentColor;align-self:center;position:relative;color:var(--sv-muted);transition:color .6s}
.sv-process-terms i:after{content:"";position:absolute;inset:2px;border-radius:50%;background:currentColor;scale:0;transition:scale .6s var(--ease) .1s}
.sv-process-terms h3{grid-column:2;font-size:clamp(30px,3.2vw,48px);line-height:1.05;color:color-mix(in srgb,var(--sv-fg) 30%,transparent);transition:color .9s var(--ease)}
.sv-process-terms p{grid-column:2;font:15px/1.5 var(--display);color:var(--sv-muted)}
.sv-process-terms li.is-lit i{color:var(--sv-fg)}
.sv-process-terms li.is-lit i:after{scale:1}
.sv-process-terms li.is-lit h3{color:var(--sv-fg)}

/* Case notes under a stage head. */
.sv-process-case{max-width:440px;margin-bottom:34px}
.sv-process-case p:last-child{font:15px/1.55 var(--display);color:var(--sv-soft);margin-top:10px}
.sv-process-foot{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:center;justify-content:space-between;margin-top:34px;font:13px/1.4 var(--sans);color:var(--sv-muted)}

/* 03 · Creative direction: Liquid Aroma, one world open at a time. */
.sv-process-direction{padding-top:190px}
.sv-process-worlds{display:flex;gap:14px;height:clamp(460px,44vw,640px)}
.sv-process-world{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:16px;padding:0;background:none;color:inherit;text-align:left;cursor:pointer;transition:flex-grow 1s var(--ease)}
.sv-process-world.is-active{flex-grow:3.4}
.sv-process-world-media{position:relative;flex:1;border-radius:12px;overflow:hidden;background:color-mix(in srgb,currentColor 8%,transparent)}
.sv-process-world-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:scale 1.2s var(--ease)}
.sv-process-world:not(.is-active) .sv-process-world-media img{scale:1.06}
.sv-process-world-cap{display:grid;gap:9px;min-height:84px;align-content:start}
.sv-process-world-cap b{font:400 22px/1.1 var(--serif);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sv-process-chips{display:flex;gap:5px}
.sv-process-chips i{width:14px;height:14px;border-radius:50%;background:var(--c);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.sv-process-world-cap em{font:normal 14px/1.4 var(--display);color:var(--sv-soft);opacity:0;translate:0 6px;transition:opacity .5s,translate .6s var(--ease);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sv-process-world.is-active em{opacity:1;translate:0 0;transition-delay:.35s}
.sv-process-world:focus-visible{outline:2px solid #e300c7;outline-offset:6px;border-radius:12px}

/* 04 · Production: the Keychron board, assembled. */
.sv-process-build-body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;align-items:start}
.sv-process-build{grid-column:1/10;margin:0}
.sv-process-build-frame{border-radius:14px;overflow:hidden;background:#eff1f2;aspect-ratio:16/9}
.sv-process-build-frame video{display:block;width:100%;height:100%;object-fit:cover}
.sv-process-build figcaption{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;align-items:baseline;margin-top:16px;font:13px/1.45 var(--sans);color:var(--sv-muted)}
.sv-process-build figcaption b{font-weight:400;color:var(--sv-fg);margin-right:8px}
.sv-process-notes{grid-column:10/13;list-style:none;margin:0;padding:0;display:grid;gap:44px}
.sv-process-notes li{border-top:1px solid var(--sv-line);padding-top:20px}
.sv-process-notes span{font:13px/1 var(--sans);color:var(--sv-muted)}
.sv-process-notes h3{font-size:clamp(22px,1.9vw,28px);line-height:1.1;margin:16px 0 10px}
.sv-process-notes p{font:15px/1.55 var(--display);color:var(--sv-soft);max-width:360px}

/* 05 · Delivery: everything one ring needed, laid out. */
.sv-process-set{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;row-gap:56px;align-items:start}
.sv-process-file{margin:0}
.sv-process-file-media{border-radius:10px;overflow:hidden;background:#f2f2f2}
.sv-process-file-media :is(img,video){display:block;width:100%;height:auto}
.sv-process-file figcaption{display:flex;gap:8px;align-items:baseline;margin-top:12px;font:13px/1.3 var(--sans);color:var(--sv-muted)}
.sv-process-file figcaption b{font-weight:400;color:var(--sv-fg)}
.sv-process-file figcaption em{font-style:normal;margin-left:auto;text-align:right}
/* A board: the vertical story down the left, the wide and square cuts beside it, the renders below. */
.d-story{grid-column:1/4;grid-row:1/3}
.d-story video{aspect-ratio:9/16}
.d-wide{grid-column:4/10;grid-row:1}
.d-wide video{aspect-ratio:16/9}
.d-square{grid-column:10/13;grid-row:1}
.d-square video{aspect-ratio:1}
.d-detail{grid-column:4/7;grid-row:2}
.d-pair{grid-column:7/10;grid-row:2}
.d-hand{grid-column:10/13;grid-row:2}
.sv-process-foot.is-end{margin-top:60px}

/* Where you join: three starting points, a step apart. */
.sv-process-start{padding:150px var(--sv-pad) 140px}
.sv-process-start-head{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;row-gap:22px;align-items:end;margin-bottom:90px}
.sv-process-start-head .sv-label{grid-column:1/-1}
.sv-process-start-head h2{grid-column:1/8;font-size:clamp(42px,4.8vw,74px);line-height:1}
.sv-process-start-head p:last-child{grid-column:8/13;font:16px/1.6 var(--display);color:var(--sv-soft);max-width:440px}
.sv-process-entries{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}
.sv-process-entry.e-2{margin-top:110px}
.sv-process-entry.e-3{margin-top:220px}
.sv-process-entry-media{display:block;border-radius:12px;overflow:hidden;aspect-ratio:4/3;background:color-mix(in srgb,currentColor 8%,transparent);margin-bottom:26px}
.sv-process-entry-media :is(img,video){display:block;width:100%;height:100%;object-fit:cover;transition:scale 1.1s var(--ease)}
.sv-process-entry-media:hover :is(img,video){scale:1.04}
.sv-process-entry h3{font-size:clamp(28px,2.6vw,38px);line-height:1.05;margin-bottom:14px}
.sv-process-entry>p{font:15px/1.55 var(--display);color:var(--sv-soft);max-width:400px}
.sv-process-entry blockquote{margin:22px 0 0;padding-left:16px;border-left:1px solid var(--sv-line)}
.sv-process-entry blockquote p{font:400 19px/1.35 var(--serif);letter-spacing:-.01em}
.sv-process-entry blockquote footer{font:13px/1.3 var(--sans);color:var(--sv-muted);margin-top:10px}
.sv-process-entry-case{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;margin-top:22px;font:13px/1.3 var(--sans);color:var(--sv-muted)}
.sv-process-entry-case a{color:var(--sv-fg);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.sv-process-entry-case i{font-style:normal}

/* One way of working: the services, in order. */
.sv-process-services{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;padding:170px var(--sv-pad) 120px}
.sv-process-services header{grid-column:1/5;align-self:start;position:sticky;top:120px}
.sv-process-services h2{font-size:clamp(32px,3.1vw,46px);line-height:1.06}
.sv-process-services header p{font:15px/1.55 var(--display);color:var(--sv-soft);margin-top:22px;max-width:320px}
.sv-process-services-list{grid-column:6/13;list-style:none;margin:0;padding:0;border-bottom:1px solid var(--sv-line)}
.sv-process-services-list a{display:grid;grid-template-columns:96px 36px minmax(0,1fr) minmax(0,1.1fr) 20px;gap:18px;align-items:center;padding:16px 0;border-top:1px solid var(--sv-line);color:inherit;transition:opacity .4s var(--ease)}
.sv-process-services-list:hover a:not(:hover){opacity:.4}
.sv-process-services-media{display:block;width:96px;aspect-ratio:16/10;border-radius:6px;overflow:hidden;background:color-mix(in srgb,currentColor 8%,transparent)}
.sv-process-services-media img{width:100%;height:100%;object-fit:cover;transition:scale 1s var(--ease)}
.sv-process-services-list a:hover img{scale:1.08}
.sv-process-services-num{font:13px/1 var(--sans);color:var(--sv-muted)}
.sv-process-services-name{font:400 clamp(22px,2vw,28px)/1.1 var(--serif);letter-spacing:-.02em}
.sv-process-services-note{font:14px/1.4 var(--display);color:var(--sv-muted)}
.sv-process-services-list i{font-style:normal;transition:rotate .5s var(--ease)}
.sv-process-services-list a:hover i{rotate:45deg}

@media(max-width:1100px){
 .sv-process-path-list{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:56px}
 .sv-process-services header{grid-column:1/-1;position:static;margin-bottom:50px}
 .sv-process-services-list{grid-column:1/-1}
}
@media(max-width:760px){
 .sv-process-hero .sv-hero-full-copy{padding:120px var(--sv-gutter) 120px}
 .sv .sv-process-hero h1{line-height:1.02}
 .sv-process-mbr{display:inline}
 .sv-process-orbit.is-hero{width:128vw;top:50%}
 .sv-process-credit{left:var(--sv-gutter);bottom:26px}
 .sv-process-path{padding:100px var(--sv-gutter) 120px}
 .sv-process-path-head,.sv-process-head,.sv-process-start-head{display:block;margin-bottom:50px}
 .sv-process-path-head h2,.sv-process-head h2,.sv-process-start-head h2{font-size:40px;margin:16px 0 20px}
 .sv-process-path-list{grid-template-columns:1fr;gap:0;border-bottom:1px solid var(--sv-line)}
 .sv-process-path-list a{grid-template-columns:64px minmax(0,1fr);column-gap:18px;row-gap:4px;padding:18px 0;border-top:1px solid var(--sv-line)}
 .sv-process-orbit.is-step{grid-row:1/3;width:64px;margin:0}
 .sv-process-orbit.is-step b{width:20px;height:20px;font-size:11px}
 .sv-process-path-name{border:0;padding:0;font-size:22px;align-self:end}
 .sv-process-path-line{align-self:start}
 .sv-process-stage{padding:100px var(--sv-gutter) 100px}
 .sv-process-talk{padding-top:80px}
 .sv-process-questions li{font-size:34px;margin-left:calc(var(--i)*18px)}
 .sv-process-scope{display:block;padding-bottom:110px}
 .sv-process-scope .sv-process-head{position:static;margin-bottom:44px}
 .sv-process-terms li{grid-template-columns:26px minmax(0,1fr);column-gap:8px;row-gap:8px;padding:20px 0}
 .sv-process-terms h3{font-size:28px}
 .sv-process-direction{padding-top:110px}
 .sv-process-worlds{height:auto;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 calc(-1*var(--sv-gutter));padding:0 var(--sv-gutter);scrollbar-width:none;gap:12px}
 .sv-process-worlds::-webkit-scrollbar{display:none}
 .sv-process-world,.sv-process-world.is-active{flex:0 0 76vw;scroll-snap-align:center}
 .sv-process-world-media{flex:none;aspect-ratio:4/5}
 .sv-process-world:not(.is-active) .sv-process-world-media img{scale:1}
 .sv-process-world-cap em{opacity:1;translate:0 0;white-space:normal}
 .sv-process-build-body{display:block}
 .sv-process-notes{margin-top:50px;gap:30px}
 .sv-process-set{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px;row-gap:28px}
 .d-wide{grid-column:1/-1;grid-row:1}
 .d-story{grid-column:1;grid-row:2/4}
 .d-square{grid-column:2;grid-row:2}
 .d-detail{grid-column:2;grid-row:3}
 .d-pair{grid-column:1;grid-row:4}
 .d-hand{grid-column:2;grid-row:4}
 .sv-process-file figcaption{flex-wrap:wrap;gap:4px 8px}
 .sv-process-file figcaption em{margin-left:0;width:100%;text-align:left}
 .sv-process-start{padding:100px var(--sv-gutter) 100px}
 .sv-process-entries{grid-template-columns:1fr;gap:64px}
 .sv-process-entry.e-2,.sv-process-entry.e-3{margin-top:0}
 .sv-process-services{display:block;padding:110px var(--sv-gutter) 90px}
 .sv-process-services h2{font-size:34px}
 .sv-process-services-list a{grid-template-columns:72px minmax(0,1fr) 16px;column-gap:14px;row-gap:2px}
 .sv-process-services-media{grid-row:1/3;width:72px}
 .sv-process-services-num{display:none}
 .sv-process-services-name{font-size:21px;align-self:end}
 .sv-process-services-note{grid-column:2;font-size:13px;align-self:start}
 .sv-process-services-list i{grid-column:3;grid-row:1/3}
 .sv-process-services-list:hover a:not(:hover){opacity:1}
}
@media(prefers-reduced-motion:reduce){
 .sv-process-rings,.sv-process-world,.sv-process-world-media img,.sv-process-questions li,.sv-process-terms *{transition:none}
}
