:root{
  --bg:#fbfaf8; --ink:#1d1d1f; --mute:#86868b; --hair:#e8e6e1;
  /* palette sampled from LS_DREAM */
  --coral:#e8604c; --tang:#f0a030; --moss:#c4c04a; --teal:#3a9a8f;
  --sky:#8fb8e0; --lilac:#b8a0d8; --rose:#e8a0c0; --wine:#6b1f2e; --navy:#1f2a5a;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Arial,sans-serif;
  --serif:"Cormorant Garamond","Iowan Old Style",Georgia,serif;
  --pad:clamp(20px,5vw,72px);
  --spectrum:linear-gradient(90deg,var(--coral),var(--tang),var(--moss),var(--teal),var(--sky),var(--lilac),var(--rose),var(--coral));
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:300;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:1px solid var(--ink);outline-offset:4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* progress hairline */
.progress{position:fixed;top:0;left:0;height:2px;width:100%;z-index:60;background:var(--spectrum);transform-origin:0 50%;transform:scaleX(0)}

/* NAV */
header{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:18px var(--pad);background:rgba(251,250,248,.72);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid transparent;transition:border-color .4s}
header.scrolled{border-color:var(--hair)}
.brand{display:flex;align-items:center;gap:12px;font-size:13px;font-weight:400;letter-spacing:.28em;text-transform:uppercase}
.brand svg{width:22px;height:22px;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.brand:hover svg{transform:rotate(90deg)}
nav.main{display:flex;gap:clamp(18px,3vw,40px)}
nav.main a{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);transition:color .3s}
nav.main a:hover{color:var(--ink)}

/* HERO */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:120px var(--pad) 72px;overflow:hidden}
.field{position:absolute;inset:0;pointer-events:none}
.field i{position:absolute;width:var(--s);height:var(--s);left:var(--x);top:var(--y);border:1px solid var(--c);opacity:.0;transform:translate3d(0,var(--py,0),0) rotate(calc(45deg + var(--r,0deg)));animation:fadein 2.4s ease forwards;animation-delay:var(--d)}
.field i:nth-child(3n){border-width:1.5px}
@keyframes fadein{to{opacity:.38}}
.hero>*:not(.field){position:relative}
h1.title{font-family:var(--serif);font-weight:300;font-size:clamp(40px,7vw,92px);line-height:1.02;letter-spacing:-.01em}
h1.title .eyebrow{display:block;font-family:var(--sans);font-size:12px;font-weight:300;letter-spacing:.32em;text-transform:uppercase;color:var(--mute);margin-bottom:24px;line-height:1.4}
h1.title .ln{display:block;overflow:hidden;padding-bottom:.08em}
h1.title .ln>span{display:block;animation:rise 1.2s cubic-bezier(.2,.7,.2,1) both}
h1.title .ln:nth-of-type(2)>span{animation-delay:.12s}
h1.title .eyebrow{animation:fadeup 1.2s ease both}
h1.title em{font-style:italic;background:var(--spectrum) 0 0/200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:flow 14s linear infinite}
@keyframes rise{from{transform:translateY(105%)}to{transform:none}}
@keyframes fadeup{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes flow{to{background-position:200% 0}}
.hero-art{margin-top:clamp(28px,4vw,48px);width:min(520px,78vw,max(260px,calc((100svh - 360px)*.8)));perspective:1200px}
.tilt{transition:transform .5s cubic-bezier(.2,.7,.2,1);will-change:transform}
.hero-art img{width:100%;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.06),0 24px 60px -18px rgba(31,42,90,.28),0 60px 110px -40px rgba(232,96,76,.22);animation:iris 1.7s cubic-bezier(.2,.7,.2,1) .25s backwards}
@keyframes iris{from{clip-path:polygon(50% 50%,50% 50%,50% 50%,50% 50%)}to{clip-path:polygon(50% -60%,160% 50%,50% 160%,-60% 50%)}}
.hero-art figcaption{margin-top:18px;font-size:12px;letter-spacing:.12em;color:var(--mute);animation:fadeup 1.4s ease 1.2s both}
.scroll{margin-top:44px;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--mute);animation:fadeup 1.4s ease 1.5s both}
.strip{display:flex;height:3px}
.strip i{flex:1}

/* SECTIONS */
section{padding:clamp(80px,12vw,160px) var(--pad);scroll-margin-top:40px}
.label{font-size:12px;letter-spacing:.32em;text-transform:uppercase;color:var(--mute)}
h2{font-family:var(--serif);font-weight:300;font-size:clamp(34px,5vw,64px);line-height:1.05;margin-top:14px}

/* INTRO STATEMENT */
.intro{padding-block:clamp(70px,10vw,130px);text-align:center}
.intro p{font-family:var(--serif);font-weight:300;font-size:clamp(24px,3.4vw,44px);line-height:1.28;max-width:30ch;margin:0 auto;max-width:34ch}
.intro p em{font-style:italic}

/* GALLERY */
.gal-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:clamp(36px,5vw,64px)}
.filters{display:flex;flex-wrap:wrap;gap:6px 26px}
.filters button{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);padding:6px 0;border-bottom:1px solid transparent;transition:color .3s,border-color .3s}
.filters button:hover{color:var(--ink)}
.filters button[aria-pressed="true"]{color:var(--ink);border-color:var(--ink)}
.grid{columns:3;column-gap:clamp(16px,2.4vw,36px)}
.piece{break-inside:avoid;margin-bottom:clamp(16px,2.4vw,36px);cursor:zoom-in;opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform .9s ease}
.piece.in{opacity:1;transform:none}
.piece[hidden]{display:none}
.frame{background:#efede8;overflow:hidden;position:relative}
.frame::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--c,var(--coral));transform:scaleX(0);transform-origin:0 50%;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.piece:hover .frame::after,.piece:focus-visible .frame::after{transform:scaleX(1)}
.frame img{width:100%;height:auto;opacity:0;transition:opacity .8s ease,transform 1.2s cubic-bezier(.2,.7,.2,1)}
.frame img.ok{opacity:1}
.piece:hover .frame img{transform:scale(1.025)}
.cap{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-top:12px}
.cap h3{font-family:var(--serif);font-weight:400;font-size:20px;line-height:1.2}
.cap h3 a{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .5s}
.cap h3 a:hover{background-size:100% 1px}
.cap span{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);white-space:nowrap}
.cap span.sold{display:inline-flex;align-items:center;gap:7px}
.cap span.sold::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--c,var(--coral))}
.cap span.new{display:inline-flex;align-items:center;gap:7px;color:var(--ink)}
.cap span.new::before{content:"";width:6px;height:6px;transform:rotate(45deg);background:var(--c,var(--coral))}
.det{font-size:12px;color:var(--mute);margin-top:2px}

/* ABOUT */
.about{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(36px,7vw,120px);align-items:start;border-top:1px solid var(--hair)}
.portrait{position:sticky;top:110px}
.portrait img{width:100%;height:auto}
.bio p{font-size:clamp(15px,1.25vw,17px);line-height:1.85;color:#3a3a3c;margin-top:1.4em;max-width:62ch}
.bio p.lead{font-family:var(--serif);font-size:clamp(22px,2.4vw,30px);line-height:1.4;color:var(--ink);margin-top:34px}
.bio p.label{margin-top:0}

/* FAQ */
.faq{border-top:1px solid var(--hair)}
.faq-list{max-width:820px;margin-top:40px}
.faq details{border-bottom:1px solid var(--hair);padding:22px 0}
.faq summary{list-style:none;cursor:pointer;font-family:var(--serif);font-size:clamp(20px,2.2vw,26px);display:flex;justify-content:space-between;gap:20px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--sans);font-weight:200;color:var(--mute);transition:transform .4s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin-top:14px;color:#3a3a3c;font-size:16px;line-height:1.8;max-width:64ch}
.faq a{border-bottom:1px solid currentColor}

/* CONTACT */
.contact{text-align:center;border-top:1px solid var(--hair)}
.mail{display:inline-block;margin-top:28px;font-family:var(--serif);font-weight:300;font-size:clamp(28px,5.4vw,72px);letter-spacing:-.01em;background:var(--spectrum) 0 100%/100% 1px no-repeat;padding-bottom:8px;transition:background-size .5s;word-break:break-word}
.mail:hover{background-size:100% 3px}
footer{padding:36px var(--pad) 48px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);border-top:1px solid var(--hair)}
footer a:hover{color:var(--ink)}

/* LIGHTBOX */
.lb{position:fixed;inset:0;z-index:100;background:rgba(251,250,248,.97);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);display:none;flex-direction:column;align-items:center;justify-content:center;padding:70px 72px 24px}
.lb.open{display:flex;animation:fade .35s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
.lb img{max-width:100%;max-height:calc(100svh - 200px);width:auto;height:auto;object-fit:contain;box-shadow:0 30px 80px -30px rgba(0,0,0,.35);animation:pop .6s cubic-bezier(.2,.7,.2,1)}
@keyframes pop{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.lb-cap{margin-top:22px;text-align:center}
.lb-cap h4{font-family:var(--serif);font-weight:400;font-size:26px}
.lb-cap p{font-size:12px;color:var(--mute);letter-spacing:.06em;margin-top:2px}
.lb-cap .links{display:flex;gap:26px;justify-content:center;margin-top:10px}
.lb-cap a{font-size:11px;letter-spacing:.24em;text-transform:uppercase;border-bottom:1px solid var(--ink);padding-bottom:2px}
.lb button{position:absolute;color:var(--mute);transition:color .3s;font-size:12px;letter-spacing:.2em;text-transform:uppercase}
.lb button:hover{color:var(--ink)}
.lb .x{top:22px;right:var(--pad)}
.lb .prev,.lb .next{top:50%;transform:translateY(-50%);width:56px;height:80px;display:flex;align-items:center;justify-content:center}
.lb .prev{left:8px}.lb .next{right:8px}
.lb svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1}
.lb .count{position:absolute;top:24px;left:var(--pad);font-size:12px;letter-spacing:.2em;color:var(--mute)}

/* WORK PAGES */
.work{padding:130px var(--pad) 90px;max-width:1180px;margin:0 auto}
.crumbs{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);margin-bottom:36px}
.crumbs a:hover{color:var(--ink)}
.work-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(30px,6vw,96px);align-items:center}
.work-grid figure img{width:100%;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.06),0 24px 60px -20px rgba(31,42,90,.25)}
.meta h1{font-family:var(--serif);font-weight:300;font-size:clamp(36px,4.6vw,60px);line-height:1.05;margin-top:12px}
.meta .d{margin-top:18px;color:#3a3a3c;font-size:16px}
.meta .st{margin-top:6px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.btn{display:inline-block;margin-top:30px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;border-bottom:1px solid var(--ink);padding-bottom:3px}
.pn{display:flex;justify-content:space-between;gap:20px;margin-top:80px;padding-top:26px;border-top:1px solid var(--hair);font-family:var(--serif);font-size:20px}
.pn a{max-width:45%}
.pn small{display:block;font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute)}
.pn .nx{text-align:right;margin-left:auto}
.nf{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:40px var(--pad)}
.nf h1{font-family:var(--serif);font-weight:300;font-size:clamp(40px,7vw,88px)}

@media (max-width:980px){.grid{columns:2}.about{grid-template-columns:1fr}.portrait{position:static;max-width:420px}.work-grid{grid-template-columns:1fr}}
@media (max-width:560px){
  .grid{columns:1}
  nav.main{gap:16px}.brand span{display:none}
  .lb{padding:64px 12px 20px}
  .lb .prev,.lb .next{top:auto;bottom:16px;transform:none;height:44px}
  .lb .prev{left:12px}.lb .next{right:12px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}.piece{opacity:1;transform:none}html{scroll-behavior:auto}.field{display:none}h1.title em{-webkit-text-fill-color:initial;background:none;color:inherit}}
