/* Portfolio and case-study pages */
body.work{background:var(--cream)}
.chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.chips li{padding:5px 14px;border-radius:999px;border:1px solid rgba(61,36,12,.35);font-size:.9rem;line-height:1.5;color:var(--espresso)}
.chips-light li{border-color:rgba(255,202,153,.6);color:var(--peach)}

/* case hero */
.case-hero{position:relative;min-height:min(78vh,720px);display:flex;align-items:flex-end;background:var(--espresso);overflow:hidden;padding:150px 0 56px}
.case-cover{position:absolute;inset:0}
.case-cover img{position:absolute;left:0;top:-8%;width:100%;height:116%;object-fit:cover;will-change:transform}
.case-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(43,24,7,.55) 0%,rgba(43,24,7,.35) 40%,rgba(43,24,7,.92) 100%)}
.case-hero-in{position:relative;z-index:1}
.back{display:inline-flex;gap:8px;align-items:center;text-decoration:none;color:var(--peach);margin-bottom:28px;padding:6px 0;border-bottom:1px solid transparent;transition:gap .35s var(--ease),border-color .3s}
.back:hover{gap:14px;border-color:var(--caramel)}
.case-hero h1{font-size:clamp(3.2rem,10vw,8.4rem);font-weight:300;letter-spacing:-.05em;line-height:1}
.case-hero h1 .line{display:block;overflow:hidden;padding-bottom:.1em}
.case-hero h1 .line>span{display:block;transform:translateY(110%);animation:rise 1.1s var(--ease) .1s forwards}
.case-sub{font-size:clamp(1.15rem,2.2vw,1.6rem);color:var(--peach);margin:.4rem 0 1.4rem;font-weight:500;letter-spacing:-.01em}

/* intro */
.case-intro{color:var(--espresso);padding:clamp(56px,8vw,110px) 0}
.intro-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:clamp(32px,7vw,110px);align-items:start}
.lede p{max-width:38em}
.lede p:first-child{font-size:clamp(1.25rem,2.2vw,1.65rem);line-height:1.45;font-weight:500;letter-spacing:-.015em;color:var(--rust)}
.facts-side{position:sticky;top:96px;display:grid;gap:12px}
.facts-side h2{font:600 1rem var(--sans);letter-spacing:0;color:var(--rust);margin:14px 0 2px}
.facts-side h2:first-child{margin-top:0}

/* body sections */
.case-body{background:var(--cream);color:var(--espresso)}
.cs{padding:clamp(48px,7vw,96px) 0;border-top:1px solid rgba(61,36,12,.16)}
.cs-grid{display:grid;grid-template-columns:1fr 1.7fr;gap:clamp(24px,6vw,100px);align-items:start}
.cs h2{font-size:clamp(2rem,4.2vw,3.4rem);font-weight:400;letter-spacing:-.04em;position:sticky;top:96px}
.cs-text p{max-width:38em}
.cs-text h3{font-size:1.35rem;font-weight:600;margin:2.2rem 0 .6rem;color:var(--rust)}
.bul{margin:0 0 1.2em;padding:0;list-style:none;display:grid;gap:10px;max-width:38em}
.bul li{position:relative;padding-left:26px}
.bul li::before{content:"";position:absolute;left:0;top:.7em;width:12px;height:2px;background:var(--caramel)}
.shots-wrap{margin-top:clamp(36px,5vw,64px)}
.shots{display:grid;gap:clamp(16px,2.4vw,32px)}
.shot{margin:0}
.shot-btn{display:block;width:100%;padding:0;border:0;background:#fff;border-radius:18px;overflow:hidden;cursor:zoom-in;box-shadow:0 1px 0 rgba(61,36,12,.08),0 30px 60px -36px rgba(61,36,12,.55);transition:transform .6s var(--ease),box-shadow .6s}
.shot-btn:hover{transform:translateY(-4px);box-shadow:0 1px 0 rgba(61,36,12,.08),0 40px 70px -34px rgba(61,36,12,.65)}
.shot img{width:100%;height:auto;aspect-ratio:5/3}
.video{position:relative;aspect-ratio:16/9;border-radius:18px;overflow:hidden;background:var(--espresso)}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* next project */
.next-case{background:var(--espresso);padding:clamp(48px,7vw,96px) var(--gutter)}
.next-card{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;min-height:340px;max-width:1180px;margin:auto;padding:clamp(24px,4vw,48px);border-radius:28px;overflow:hidden;text-decoration:none;color:var(--cream);isolation:isolate}
.next-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 1.2s var(--ease)}
.next-card::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(43,24,7,.35),rgba(43,24,7,.9))}
.next-card:hover img{transform:scale(1.06)}
.next-copy small{display:block;color:var(--peach);margin-bottom:8px}
.next-copy strong{display:block;font:300 clamp(2.2rem,6vw,4.6rem)/1 var(--serif);letter-spacing:-.045em}
.next-copy em{font-style:normal;color:var(--peach);font-size:1.15rem}
.next-go{display:grid;place-items:center;flex:none;width:64px;height:64px;border-radius:50%;background:var(--peach);color:var(--espresso);font-size:1.6rem;transition:transform .5s var(--ease),background .3s}
.next-card:hover .next-go{transform:translateX(8px);background:var(--caramel)}

/* portfolio index */
.pf-hero{position:relative;background:var(--espresso);padding:clamp(140px,20vw,230px) 0 clamp(56px,8vw,100px);overflow:hidden}
.pf-hero h1{font-size:clamp(4rem,13vw,11rem);font-weight:300;letter-spacing:-.05em;line-height:.95}
.pf-hero h1 .line{display:block;overflow:hidden;padding-bottom:.08em}
.pf-hero h1 .line>span{display:block;transform:translateY(110%);animation:rise 1.2s var(--ease) forwards}
.pf-hero h1 .line:nth-child(2)>span{animation-delay:.12s;color:var(--peach);padding-left:clamp(0px,6vw,110px)}
.pf-hero h1 i{font-style:italic}
.pf-lede{max-width:34em;margin:2rem 0 0;font-size:clamp(1.1rem,1.6vw,1.3rem);color:rgba(245,242,232,.9);opacity:0;animation:fadeup 1s var(--ease) .6s forwards}
.pf-list{padding:clamp(56px,8vw,110px) 0}
.pf-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(20px,3vw,40px)}
.pf-item{min-width:0}
.pf-feature{grid-column:1/-1}
.pf-card{display:flex;flex-direction:column;height:100%;text-decoration:none;color:var(--espresso);background:#fff;border:1px solid rgba(61,36,12,.14);border-radius:26px;overflow:hidden;position:relative;transition:transform .6s var(--ease),box-shadow .6s,border-color .4s}
.pf-card:hover{transform:translateY(-6px);box-shadow:0 40px 70px -40px rgba(61,36,12,.6);border-color:var(--caramel)}
.pf-img{display:block;overflow:hidden;aspect-ratio:2/1;background:var(--espresso)}
.pf-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.pf-card:hover .pf-img img{transform:scale(1.06)}
.pf-copy{display:flex;flex-direction:column;gap:14px;padding:26px 96px 30px 30px}
.pf-title{display:flex;flex-direction:column}
.pf-title strong{font:500 clamp(1.7rem,3vw,2.4rem)/1.1 var(--serif);letter-spacing:-.035em}
.pf-title em{font-style:normal;color:var(--rust);font-weight:500;margin-top:4px}
.pf-desc{max-width:34em;color:#4a2f14}
.pf-go{position:absolute;right:26px;bottom:26px;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--espresso);color:var(--peach);font-size:1.3rem;transition:transform .5s var(--ease),background .3s}
.pf-card:hover .pf-go{transform:rotate(-45deg);background:var(--rust)}
.pf-feature .pf-card{flex-direction:row}
.pf-feature .pf-img{flex:1.5;aspect-ratio:auto;min-height:380px}
.pf-feature .pf-copy{flex:1;justify-content:flex-end;padding:40px 100px 44px 40px}
.pf-feature .pf-title strong{font-size:clamp(2.2rem,4.4vw,3.6rem)}

@media (max-width:900px){
  .intro-grid,.cs-grid{grid-template-columns:1fr}
  .facts-side,.cs h2{position:static}
  .pf-grid{grid-template-columns:1fr}
  .pf-feature .pf-card{flex-direction:column}
  .pf-feature .pf-img{aspect-ratio:2/1;min-height:0;flex:none}
  .pf-feature .pf-copy{padding:26px 96px 30px 26px}
}
@media (prefers-reduced-motion:reduce){
  .case-hero h1 .line>span,.pf-hero h1 .line>span{transform:none}
  .pf-lede{opacity:1}
}

/* About me */
.ab-hero{position:relative;background:var(--espresso);padding:clamp(130px,16vw,190px) 0 clamp(56px,8vw,100px);overflow:hidden}
.ab-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:clamp(32px,6vw,90px);align-items:center;position:relative}
.ab-hero h1{font-size:clamp(3.6rem,10vw,8.4rem);font-weight:300;letter-spacing:-.05em;line-height:.98}
.ab-hero h1 .line{display:block;overflow:hidden;padding-bottom:.08em}
.ab-hero h1 .line>span{display:block;transform:translateY(110%);animation:rise 1.2s var(--ease) forwards}
.ab-hero h1 .line:nth-child(2)>span{animation-delay:.12s;color:var(--peach)}
.ab-hero h1 i{font-style:italic}
.ab-copy .hero-actions{opacity:0;animation:fadeup 1s var(--ease) .85s forwards}
.ab-photo{position:relative;justify-self:end;width:min(100%,320px);margin-right:clamp(0px,3vw,40px)}
.ab-photo img{position:relative;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:52% 30%;border-radius:999px 999px 28px 28px;box-shadow:0 50px 80px -40px rgba(0,0,0,.6)}
.ab-sun{position:absolute;right:-9%;top:-6%;width:46%;aspect-ratio:1;border-radius:50%;background:var(--caramel);will-change:transform}
.ab-body{padding:clamp(64px,9vw,120px) 0;color:var(--espresso)}
.ab-lead{font-size:clamp(1.4rem,2.8vw,2.2rem);line-height:1.35;font-weight:500;letter-spacing:-.025em;color:var(--rust);max-width:30em;margin-bottom:2.2rem}
.ab-cols{columns:2;column-gap:clamp(32px,6vw,90px)}
.ab-cols p{break-inside:avoid-column}
.facts-row{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,4vw,56px);margin:clamp(48px,7vw,90px) 0 0;border-top:1px solid rgba(61,36,12,.25)}
.facts-row div{border-bottom:0;padding:28px 0 0}
.facts-row dt{font-family:var(--serif);font-size:clamp(3rem,7vw,5.4rem);line-height:1;font-weight:300;color:var(--rust);letter-spacing:-.04em}

/* My process */
.steps-nav{list-style:none;display:flex;flex-wrap:wrap;gap:12px;margin:clamp(32px,5vw,56px) 0 0;padding:0}
.steps-nav a{display:inline-flex;align-items:center;gap:10px;padding:8px 20px 8px 8px;border:1.5px solid rgba(255,202,153,.5);border-radius:999px;text-decoration:none;color:var(--peach);font-weight:500;transition:background .3s,transform .4s var(--ease)}
.steps-nav a:hover{background:rgba(255,202,153,.14);transform:translateY(-3px)}
.steps-nav span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--caramel);color:var(--espresso);font-size:.9rem;font-weight:600}
.steps{color:var(--espresso)}
.step{padding:clamp(56px,8vw,110px) 0;border-top:1px solid rgba(61,36,12,.16)}
.step:first-child{border-top:0}
.step-grid{display:grid;grid-template-columns:.9fr 1.3fr;grid-template-areas:"head img" "body img";gap:clamp(20px,4vw,48px) clamp(32px,6vw,100px);align-items:start}
.step:nth-child(even) .step-grid{grid-template-columns:1.3fr .9fr;grid-template-areas:"img head" "img body"}
.step-head{grid-area:head;align-self:end}
.step-body{grid-area:body}
.step-img{grid-area:img;margin:0;position:sticky;top:96px}
.step-img img{width:100%;height:auto;border-radius:24px;box-shadow:0 40px 70px -40px rgba(61,36,12,.6)}
.step-n{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--espresso);color:var(--peach);font-weight:600;margin-bottom:18px}
.step h2{font-size:clamp(2.2rem,4.6vw,3.8rem);font-weight:400;letter-spacing:-.04em}
.step-sub{margin:.5rem 0 0;font-weight:500;color:var(--rust);font-size:1.15rem}
.step-body p{max-width:36em}
.step-end .wrap{max-width:760px}
.step-end h2{margin-bottom:1rem}
.step-end .btn{margin-top:1rem}

@media (max-width:900px){
  .ab-grid{grid-template-columns:1fr}
  .ab-cols{columns:1}
  .facts-row{grid-template-columns:1fr}
  .step-grid,.step:nth-child(even) .step-grid{grid-template-columns:1fr;grid-template-areas:"head" "img" "body"}
  .step-img{position:static}
}
@media (prefers-reduced-motion:reduce){.ab-hero h1 .line>span{transform:none}.ab-copy .hero-actions{opacity:1}}

/* Process loop diagram */
.loop{--d:clamp(92px,13.5vw,168px);margin-top:clamp(40px,6vw,72px)}
.loop-row{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);position:relative}
.loop-row::before{content:"";position:absolute;top:calc(var(--d)/2);left:10%;right:10%;height:1.5px;background:linear-gradient(90deg,var(--caramel),var(--peach));transform-origin:left;animation:draw 1.4s var(--ease) .5s both}
@keyframes draw{from{transform:scaleX(0)}}
.loop-row li{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:16px;padding-inline:6px}
.loop-node{position:relative;display:grid;place-content:center;gap:2px;width:var(--d);height:var(--d);border-radius:50%;background:var(--espresso);border:1.5px solid var(--peach);color:var(--cream);text-decoration:none;animation:nodein .8s var(--ease) both;animation-delay:calc(.35s + var(--i,0)*.14s);transition:background .35s,color .35s,transform .5s var(--ease)}
.loop-row li:nth-child(2) .loop-node{--i:1}.loop-row li:nth-child(3) .loop-node{--i:2}.loop-row li:nth-child(4) .loop-node{--i:3}.loop-row li:nth-child(5) .loop-node{--i:4}
@keyframes nodein{from{opacity:0;transform:scale(.6)}}
.loop-node:hover,.loop-node:focus-visible{background:var(--caramel);color:var(--espresso);transform:translateY(-6px)}
.loop-n{font-size:.85rem;color:var(--caramel);font-weight:600;transition:color .3s}
.loop-node:hover .loop-n,.loop-node:focus-visible .loop-n{color:var(--espresso)}
.loop-node strong{font:500 clamp(.95rem,1.7vw,1.35rem)/1.1 var(--serif);letter-spacing:-.03em}
.loop-cap{max-width:12em;font-size:.95rem;color:rgba(245,242,232,.85)}
.loop-arc{display:block;width:80%;height:70px;margin:8px auto 0;overflow:visible}
.loop-arc path{animation:march 2.4s linear infinite}
@keyframes march{to{stroke-dashoffset:-30}}
.loop-note{text-align:center;margin:10px 0 0;color:var(--peach);font-weight:500}
@media (max-width:760px){
  .loop{--d:96px}
  .loop-node strong{font-size:.9rem}
  .loop-row{grid-template-columns:1fr;gap:18px}
  .loop-row::before{top:30px;bottom:30px;left:calc(var(--d)/2);right:auto;width:1.5px;height:auto;transform-origin:top;animation-name:drawy}
  @keyframes drawy{from{transform:scaleY(0)}}
  .loop-row li{flex-direction:row;text-align:left;gap:18px;padding:0}
  .loop-cap{max-width:none}
  .loop-arc{display:none}
  .loop-note{text-align:left;margin-top:22px}
}
@media (prefers-reduced-motion:reduce){.loop-arc path{animation:none}}

/* Audiowide titles: wider letters, no italic, so the sizes are a little smaller */
.case-hero h1{font-size:clamp(2.6rem,8vw,6.6rem);line-height:1.05;letter-spacing:-.01em}
.pf-hero h1,.ab-hero h1{font-size:clamp(2.8rem,9vw,7.6rem);line-height:1.05;letter-spacing:-.01em}
.pf-hero h1 i,.ab-hero h1 i{font-style:normal}
.pf-hero h1 .line:nth-child(2)>span{padding-left:clamp(0px,5vw,90px)}

/* Case study hero link and the public WelcoKit page */
.case-link{margin:18px 0 0}
.shot img{aspect-ratio:auto}

/* About photo hover motion */
@media (hover:hover) and (pointer:fine){
  .ab-photo{perspective:900px}
  .ab-photo img{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .55s var(--ease),box-shadow .55s;will-change:transform}
  .ab-photo:hover img{box-shadow:0 60px 90px -36px rgba(0,0,0,.7)}
  .ab-sun{transition:translate .7s var(--ease)}
}
@media (prefers-reduced-motion:reduce){.ab-photo img{transform:none!important}}

/* Busy cover images (they contain their own text): a stronger veil keeps the title readable */
.case-cover.dim::after{background:linear-gradient(180deg,rgba(43,24,7,.72) 0%,rgba(43,24,7,.78) 45%,rgba(43,24,7,.96) 100%)}
