/* base */
:root{--rv-speed:1;--rv-dist:32px;--pad:clamp(20px,5vw,80px)}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--text);
  font-family:var(--font-body),system-ui,sans-serif;font-weight:300;
  font-size:16px;line-height:1.8;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--font-heading),Georgia,serif;font-weight:500;line-height:1.1}

#bg{position:fixed;inset:0;width:100%;height:100%;z-index:-1;display:block;pointer-events:none}

.eyebrow{
  font-family:var(--font-body),sans-serif;font-size:12px;font-weight:400;
  letter-spacing:.38em;text-transform:uppercase;color:var(--accent);
}

/* nav */
.nav-shell{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;justify-content:center;pointer-events:none}
#nav{
  pointer-events:auto;position:relative;
  width:100%;height:88px;margin-top:0;padding:0 var(--pad);
  display:flex;align-items:center;justify-content:flex-end;
  border:1px solid transparent;border-radius:0;background:transparent;
  transition:width .6s cubic-bezier(.65,0,.25,1),height .5s ease,margin-top .5s ease,
             padding .6s cubic-bezier(.65,0,.25,1),border-radius .6s cubic-bezier(.65,0,.25,1),
             background .4s ease,border-color .4s ease;
}
#nav.pill{
  width:min(620px,calc(100% - 24px));height:52px;margin-top:14px;padding:0 28px;
  border-radius:999px;background:var(--nav-bg);border-color:var(--nav-border);
  -webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);
  box-shadow:0 10px 30px rgba(0,0,0,.3);justify-content:center;
}
.links{display:flex;gap:clamp(18px,3vw,44px)}
.links a{
  font-size:13px;font-weight:400;letter-spacing:.24em;text-transform:uppercase;
  color:var(--text);opacity:.82;padding:6px 0;position:relative;transition:opacity .25s,color .25s;
  text-shadow:0 1px 10px rgba(0,0,0,.35);
}
.links a::after{
  content:"";position:absolute;left:0;right:.24em;bottom:0;height:1px;background:var(--accent);
  transform:scaleX(0);transform-origin:left;transition:transform .35s ease;
}
.links a:hover{opacity:1}
.links a.active{color:var(--accent);opacity:1}
.links a.active::after{transform:scaleX(1)}

/* hero */
.hero{position:relative;height:100vh;height:100svh;min-height:520px;overflow:hidden}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-shade{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(10,8,16,.45) 0%,rgba(10,8,16,0) 22%,rgba(10,8,16,0) 50%,var(--bg) 100%);
}
.hero-text{position:absolute;left:var(--pad);right:var(--pad);bottom:clamp(48px,9vh,96px)}
.hero-text h1{
  font-size:min(var(--fs-hero,128px),13vw);font-weight:500;letter-spacing:.01em;margin:14px 0 10px;
  text-shadow:0 2px 30px rgba(0,0,0,.35);
}
.hero-tagline{font-family:var(--font-heading),serif;font-style:italic;font-size:clamp(20px,2.2vw,28px);color:var(--text);opacity:.85}
.scroll-cue{
  position:absolute;right:var(--pad);bottom:clamp(48px,9vh,96px);
  display:flex;flex-direction:column;align-items:center;gap:12px;
  font-size:11px;letter-spacing:.35em;text-transform:uppercase;color:var(--text-soft);
}
.scroll-cue span{writing-mode:vertical-rl}
.scroll-cue i{display:block;width:1px;height:64px;background:var(--line);position:relative;overflow:hidden}
.scroll-cue i::after{content:"";position:absolute;left:0;top:-40%;width:1px;height:40%;background:var(--accent);animation:cue 2.2s ease-in-out infinite}
@keyframes cue{to{top:100%}}

/* sections */
.sec{position:relative}
.wrap{max-width:1440px;margin:0 auto;padding:140px var(--pad) 80px}
.sec-head{border-bottom:1px solid var(--line);padding-bottom:28px;margin-bottom:72px}
.sec-head h2{font-size:min(var(--fs-section,88px),14vw);display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 22px}
.sec-head .eyebrow + h2{margin-top:18px}
.sec-head h2 small,.sub-head h3 small{
  font-family:var(--font-body),sans-serif;font-size:12px;font-weight:400;
  letter-spacing:.3em;text-transform:uppercase;color:var(--text-soft);
}
.sub-head{
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  border-bottom:1px solid var(--line);padding-bottom:16px;margin:0 0 36px;
}
.sub-head h3{font-size:min(var(--fs-sub,38px),8vw);display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 18px}
.count{font-size:13px;letter-spacing:.2em;color:var(--text-soft)}

/* gallery */
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2.6vw,40px);margin-bottom:110px}
.card{display:block;text-align:left;background:none;border:0;padding:0;cursor:pointer}
.frame{
  aspect-ratio:3/4;overflow:hidden;background:rgba(255,255,255,.03);
  outline:1px solid var(--line);outline-offset:6px;
  transition:transform .4s ease,outline-color .4s ease;will-change:transform;
}
.card:hover .frame{outline-color:var(--accent)}
.frame img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.cap{display:flex;align-items:baseline;gap:14px;margin-top:18px}
.cap b{font-weight:400;font-size:12px;letter-spacing:.2em;color:var(--accent)}
.cap span{font-family:var(--font-heading),serif;font-size:20px;font-weight:500}

/* commission */
.works-head{margin-top:80px}
.col-title{
  font-family:var(--font-body),sans-serif;font-size:var(--fs-col-title,12px);font-weight:400;letter-spacing:.38em;
  text-transform:uppercase;color:var(--text-soft);margin-bottom:28px;
}
/* price */
.price-sec{margin-bottom:96px}
.price-wrap{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:clamp(160px,18vw,260px)}
.price-box{position:relative;width:fit-content;max-width:100%}
.price-box img{width:auto;height:auto;max-width:100%;max-height:72vh;outline:1px solid var(--line);outline-offset:6px}
.price-dim{position:absolute;left:0;right:0;bottom:0;top:32%;background:rgba(14,12,20,.72);transition:top .9s cubic-bezier(.6,0,.2,1)}
.price-line{position:absolute;left:-10px;right:-42%;top:32%;height:1px;background:var(--accent);transition:top .9s cubic-bezier(.6,0,.2,1)}
.price-line span{
  position:absolute;bottom:8px;white-space:nowrap;
  font-family:var(--font-heading),serif;font-size:24px;font-weight:500;color:var(--text);
}
.price-line span em{font-style:normal;font-family:var(--font-body),sans-serif;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--text-soft);display:block;line-height:1.4}
.tier-list{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.tier-list button{
  display:flex;justify-content:space-between;align-items:baseline;gap:24px;width:100%;
  background:none;border:0;border-bottom:1px solid var(--line);cursor:pointer;padding:26px 0;text-align:left;
  color:var(--text-soft);transition:color .3s,padding .3s;
}
.tier-list .tier-name{font-size:13px;letter-spacing:.3em;text-transform:uppercase}
.tier-list .tier-price{font-family:var(--font-heading),serif;font-size:clamp(30px,3vw,44px);font-weight:500;line-height:1}
.tier-list button:hover{color:var(--text)}
.tier-list button.active{color:var(--accent);padding-left:14px}

/* terms of service */
.tos{list-style:none;columns:2;column-gap:clamp(40px,6vw,96px)}
.tos-block{break-inside:avoid;margin-bottom:40px;border-top:1px solid var(--line)}
.tos-items{list-style:none}
.tos-items li{
  display:grid;grid-template-columns:36px 1fr;align-items:center;
  padding:20px 0;border-bottom:1px solid var(--line);font-size:var(--fs-tos,16px);
}
.tos-items li::before{content:"";width:14px;height:1px;background:var(--accent)}
.tos-group{display:grid;grid-template-columns:36px 1fr;align-items:baseline;padding:24px 0 14px;border-bottom:1px solid var(--line)}
.tos-group.no-num{grid-template-columns:1fr}
.tos-group b{font-family:var(--font-heading),serif;font-size:24px;font-weight:500;color:var(--accent)}
.tos-group span{font-size:var(--fs-tos-title,13px);font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--text)}
.tos strong,.bio strong{font-weight:500;color:var(--text)}
.tos em,.bio em{font-style:italic}
.tos a,.bio a{color:var(--accent);border-bottom:1px solid currentColor}

/* about */
.about{display:grid;grid-template-columns:minmax(0,380px) 1fr;gap:clamp(40px,7vw,110px);align-items:start;padding-bottom:80px}
.avatar-frame{border:1px solid var(--line);padding:14px;border-radius:50%}
.avatar-frame img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:50%}
.about-name{font-size:min(var(--fs-about-name,64px),11vw);margin-bottom:24px}
.about-name .initial,.sec-head h2 .initial{color:var(--accent)}
.bio{max-width:640px;font-size:var(--fs-bio,17px);margin-bottom:40px}
.info{border-left:1px solid var(--line);padding-left:28px;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:22px 40px;max-width:760px;margin-bottom:48px}
.info dt{font-size:11px;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}
.info dd{font-size:16px}
.contact-label{color:var(--text-soft);margin-bottom:14px}
.link-group + .link-group{margin-top:36px}
.contacts{display:flex;flex-wrap:wrap;gap:12px 36px}
.contacts a small,.avail-links a small{font-size:13px;letter-spacing:.05em;text-transform:none;color:var(--text-soft)}
/* available on */
.avail{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:36px 0;margin-top:40px;display:flex;align-items:center;gap:20px 56px;flex-wrap:wrap}
.avail-label{color:var(--text-soft);margin:0}
.avail-links{display:flex;flex-wrap:wrap;gap:16px 44px}
.avail-links a{
  display:inline-flex;align-items:center;gap:12px;padding:6px 0;position:relative;
  font-family:var(--font-heading),serif;font-size:28px;font-weight:500;transition:color .25s;
}
.avail-links a i{font-size:24px}
.avail-links a .cicon{width:24px;height:24px;object-fit:contain;filter:grayscale(1) brightness(1.5);transition:filter .25s}
.avail-links a:hover .cicon{filter:none}
.avail-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .35s ease}
.avail-links a:hover{color:var(--accent)}
.avail-links a:hover::after{transform:scaleX(1)}
/* contact links */
.contacts a{
  display:inline-flex;align-items:center;gap:10px;padding:6px 0;position:relative;
  font-size:13px;letter-spacing:.22em;text-transform:uppercase;transition:color .25s;
}
.contacts a i{font-size:18px}
.contacts a .cicon{width:18px;height:18px;object-fit:contain;filter:grayscale(1) brightness(1.5);transition:filter .25s}
.contacts a:hover .cicon{filter:none}
.contacts a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .35s ease}
.contacts a:hover{color:var(--accent)}
.contacts a:hover::after{transform:scaleX(1)}

/* footer */
.foot{
  max-width:1440px;margin:0 auto;padding:28px var(--pad) 40px;
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-top:1px solid var(--line);
  font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--text-soft);
}
.foot a:hover{color:var(--accent)}

/* lightbox */
.lightbox{
  position:fixed;inset:0;z-index:100;background:rgba(10,9,14,.95);
  display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .35s;
}
.lightbox.open{opacity:1;pointer-events:auto}
.lightbox img{max-width:86vw;max-height:84vh;object-fit:contain}
.lb-btn{
  position:absolute;background:none;border:1px solid var(--line);color:var(--text);cursor:pointer;
  width:48px;height:48px;font-size:20px;display:flex;align-items:center;justify-content:center;transition:border-color .25s,color .25s;
}
.lb-btn:hover{border-color:var(--accent);color:var(--accent)}
.lb-close{top:24px;right:24px}
.lb-prev{left:24px;top:50%;transform:translateY(-50%)}
.lb-next{right:24px;top:50%;transform:translateY(-50%)}
.lb-cap{position:absolute;bottom:22px;left:0;right:0;text-align:center;font-family:var(--font-heading),serif;font-size:20px}

/* animations */
.reveal{
  opacity:0;translate:0 var(--rv-dist);
  transition:opacity calc(.9s / var(--rv-speed)) ease,translate calc(1s / var(--rv-speed)) cubic-bezier(.2,.8,.2,1);
  transition-delay:var(--rv-delay,0s);
}
.reveal.in{opacity:1;translate:0 0}
.sec-head.reveal{translate:none}
.sec-head.reveal > *{clip-path:inset(0 100% 0 0);transition:clip-path calc(1.2s / var(--rv-speed)) cubic-bezier(.65,0,.25,1)}
.sec-head.reveal > h2{transition-delay:calc(.15s / var(--rv-speed))}
.sec-head.reveal.in > *{clip-path:inset(0 0 -20% 0)}

/* intro */
.hero-img{animation:heroImg calc(1.8s / var(--rv-speed)) cubic-bezier(.2,.8,.2,1) both}
.hero-text > *{animation:heroUp calc(1.1s / var(--rv-speed)) cubic-bezier(.2,.8,.2,1) both}
.hero-text > :nth-child(1){animation-delay:calc(.35s / var(--rv-speed))}
.hero-text > :nth-child(2){animation-delay:calc(.5s / var(--rv-speed))}
.hero-text > :nth-child(3){animation-delay:calc(.7s / var(--rv-speed))}
#nav{animation:fadeIn calc(.6s / var(--rv-speed)) ease calc(.1s / var(--rv-speed)) both}
.scroll-cue{animation:fadeIn 1s ease calc(1s / var(--rv-speed)) both}
@keyframes heroImg{from{opacity:0;scale:1.08}to{opacity:1;scale:1}}
@keyframes heroUp{from{opacity:0;translate:0 26px}to{opacity:1;translate:0 0}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* mobile */
@media (max-width:860px){
  #nav{height:68px;justify-content:center;padding:0 12px}
  .links{gap:18px}
  .links a{font-size:11px;letter-spacing:.16em}
  #nav.pill{padding:0 14px}
  .wrap{padding:110px var(--pad) 56px}
  .sec-head{margin-bottom:48px}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:72px}
  .cap span{font-size:17px}
  .price-wrap{grid-template-columns:1fr;row-gap:40px;justify-items:center}
  .tier-list{width:100%}
  .tos{columns:1}
  .price-box{max-width:78%}
  .price-box img{max-height:60vh}
  .price-line{right:-10px!important}
  .price-line span{display:none}
  .about{grid-template-columns:1fr}
  .avatar-frame{max-width:280px;width:100%;justify-self:center}
  .about-name{text-align:center}
  .scroll-cue{display:none}
  .lb-prev{left:8px}.lb-next{right:8px}
}

/* reduced motion */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition-duration:.01ms!important;animation:none!important}
  .reveal,.sec-head.reveal > *{opacity:1;translate:none;clip-path:none}
  .frame{transform:none!important}
}
