:root{
  --paper:#F5F3EF; --white:#FBFAF8; --stone:#ECE9E3; --line:rgba(29,29,27,.14);
  --ink:#1D1D1B; --ink-soft:#57564F; --muted:#8C8A82;
  --sage:#9AA391; --sage-dark:#6E7867; --sage-light:#C9CFC2;
  --serif:'Cormorant Garamond', Georgia, serif; --sans:'Jost', system-ui, sans-serif;
  --gutter:clamp(20px,4.4vw,80px); --ease:cubic-bezier(.19,1,.22,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{background:var(--paper);color:var(--ink);font:300 16px/1.75 var(--sans);overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.is-loading{overflow:hidden}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
em{font-style:italic}
::selection{background:var(--sage-light)}

/* ---------- shared ---------- */
.label{font:400 11px/1.7 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:28px}
.label span{color:var(--sage-dark);margin-right:14px;letter-spacing:.1em}
.h2{font:300 clamp(40px,5.4vw,88px)/.98 var(--serif);letter-spacing:-.02em}
.h2 em{color:var(--sage-dark)}
.link{display:inline-flex;align-items:center;gap:16px;font:400 11px/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;padding:10px 0;position:relative}
.link::before{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform-origin:right;transition:transform .9s var(--ease)}
.link::after{content:"";width:34px;height:1px;background:currentColor;transition:width .9s var(--ease)}
.link:hover::before{transform:scaleX(0);transform-origin:left}
.link:hover::after{width:60px}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:20px 44px;border:1px solid var(--ink);background:transparent;color:var(--ink);
  font:400 11px/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;cursor:pointer;position:relative;overflow:hidden;transition:color .7s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;background:var(--ink);transform:translateY(101%);transition:transform .7s var(--ease)}
.btn span{position:relative}
.btn:hover{color:var(--paper)} .btn:hover::before{transform:none}
.divider{display:flex;align-items:center;gap:18px;color:var(--sage)}
.divider i{display:block;width:70px;height:1px;background:currentColor}
.divider s{display:block;width:8px;height:8px;border:1px solid currentColor;transform:rotate(45deg)}
.reveal-img{overflow:hidden}
.reveal-img img{width:100%;height:100%;object-fit:cover}

/* ---------- intro ---------- */
.intro{position:fixed;inset:0;z-index:100;pointer-events:none;background:var(--white)}
.intro__half{position:absolute;inset:0;background:var(--white)}
.intro__half--a{clip-path:polygon(0 0,100% 0,0 100%)}
.intro__half--b{clip-path:polygon(100% 0,100% 100%,0 100%)}
.intro__cut{position:absolute;left:50%;top:50%;width:160vmax;height:1px;background:var(--sage);transform:translate(-50%,-50%) rotate(calc(-1 * var(--diag,45deg))) scaleX(0)}
.intro__mark{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px}
.intro__word{font:300 clamp(18px,3vw,40px)/1 var(--sans);letter-spacing:.46em;margin-right:-.46em;color:var(--ink);white-space:nowrap}
.intro__word .ch{display:inline-block;opacity:0}
.intro__divider i{width:clamp(40px,6vw,90px);transform:scaleX(0)}
.intro__divider i:first-child{transform-origin:right} .intro__divider i:last-child{transform-origin:left}
.intro__divider s{opacity:0}
.intro.is-done{display:none}


/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:30px var(--gutter);
  transition:transform .8s var(--ease),padding .8s var(--ease),background .8s var(--ease)}
.nav__logo{display:block;width:clamp(160px,15vw,210px)}
.nav__logo img{width:100%;height:auto}
.nav__links{display:flex;align-items:center;gap:clamp(22px,3vw,48px)}
.nav__links a{font:400 11px/1 var(--sans);letter-spacing:.28em;text-transform:uppercase;position:relative;padding:6px 0}
.nav__links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .8s var(--ease)}
.nav__links a:hover::after,.nav__cta::after{transform:scaleX(1);transform-origin:left}
.nav.is-solid{background:rgba(245,243,239,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding-top:18px;padding-bottom:18px}
.nav.is-hidden{transform:translateY(-100%)}
.nav__burger{display:none;background:none;border:0;width:36px;height:36px;cursor:pointer;position:relative;z-index:2}
.nav__burger span{position:absolute;left:6px;right:6px;height:1px;background:var(--ink);transition:transform .6s var(--ease)}
.nav__burger span:first-child{top:14px} .nav__burger span:last-child{top:21px}

/* ---------- hero ---------- */
.hero{display:grid;grid-template-columns:1fr minmax(0,46vw);min-height:100svh;background:var(--white)}
.hero__text{display:flex;flex-direction:column;justify-content:space-between;padding:150px var(--gutter) 56px}
.hero__title{font:300 clamp(58px,8.6vw,164px)/.9 var(--serif);letter-spacing:-.03em;margin:auto 0 0}
.hero__title .line{display:block;overflow:hidden;padding-bottom:.06em}
.hero__title .line>span{display:inline-block;transform:translateY(105%)}
.hero__title em{color:var(--sage-dark)}
.hero__foot{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-top:56px;padding-top:28px;border-top:1px solid var(--line)}
.hero__foot p{max-width:380px;color:var(--ink-soft);font-size:15px}
.hero__media{position:relative;margin:0;height:100svh}
.hero__frame{position:absolute;inset:0;overflow:hidden;clip-path:inset(100% 0 0 0)}
.hero__video{width:100%;height:100%;object-fit:cover;transform:scale(1.18)}
.hero__caption{position:absolute;left:24px;bottom:22px;font:400 10px/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:rgba(29,29,27,.7);opacity:0}
.hero__caption span{font:italic 300 16px/1 var(--serif);letter-spacing:0;text-transform:none;margin-right:10px;color:var(--ink)}
.hero__caption i{font-style:normal;opacity:.6}
.reveal-up{opacity:0;transform:translateY(20px)}

/* ---------- statement ---------- */
.statement{display:grid;grid-template-columns:minmax(160px,1fr) 3fr;gap:var(--gutter);padding:clamp(130px,17vw,260px) var(--gutter)}
.statement__text{font:300 clamp(32px,4vw,64px)/1.14 var(--serif);letter-spacing:-.01em;max-width:1100px}
.statement__text .w{opacity:.12}

/* ---------- work ---------- */
.work{background:var(--stone);padding:clamp(110px,12vw,180px) var(--gutter)}
.work__head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:80px;flex-wrap:wrap}
.work__head .label{margin:0}
.work__grid{display:grid;grid-template-columns:repeat(12,1fr);column-gap:clamp(20px,2.4vw,40px);row-gap:clamp(70px,8vw,120px)}
.card{cursor:zoom-in}
.card--a{grid-column:1 / span 6}
.card--b{grid-column:8 / span 5;margin-top:clamp(80px,12vw,180px)}
.card--pano{grid-column:2 / span 10}
.card__img{aspect-ratio:3/4;background:#dcd8d0}
.card--pano .card__img{aspect-ratio:21/9}
.card__img img{transition:transform 1.8s var(--ease)}
.card:hover .card__img img{transform:scale(1.03)}
.card__meta{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding-top:20px;margin-top:20px;border-top:1px solid var(--line)}
.card__meta h3{font:300 30px/1.1 var(--serif)}
.card__meta p{font-size:13px;color:var(--ink-soft);letter-spacing:.02em;text-align:right}
.work__cta{text-align:center;margin-top:clamp(90px,10vw,150px)}
.work__cta-title{font:300 clamp(34px,3.6vw,56px)/1.05 var(--serif);margin-bottom:30px}
.work__cta-title em{color:var(--sage-dark)}

/* ---------- craft ---------- */
.craft{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(50px,8vw,150px);align-items:center;padding:clamp(130px,15vw,230px) var(--gutter)}
.craft__text>p:not(.label){color:var(--ink-soft);margin:36px 0 44px;max-width:460px}
.ticks{list-style:none;border-top:1px solid var(--line);max-width:520px}
.ticks li{display:grid;grid-template-columns:90px 1fr;padding:18px 0;border-bottom:1px solid var(--line);font-size:15px}
.ticks li span{font:italic 300 18px/1.4 var(--serif);color:var(--sage-dark)}
.craft__media{position:relative;padding-bottom:30%}
.craft__img--a{width:72%;aspect-ratio:3/4;margin-left:auto}
.craft__img--b{position:absolute;left:0;bottom:0;width:52%;aspect-ratio:4/3;border:12px solid var(--paper)}

/* ---------- quality ---------- */
.quality{padding:0 var(--gutter) clamp(130px,15vw,230px)}
.quality__head{display:grid;grid-template-columns:minmax(160px,1fr) 3fr;gap:var(--gutter);margin-bottom:80px}
.quality__grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.pillar{padding:40px 36px 10px 0;margin-right:36px;border-right:1px solid var(--line)}
.pillar:last-child{border-right:0;margin-right:0}
.pillar__no{display:block;font:400 11px/1.4 var(--sans);letter-spacing:.28em;text-transform:uppercase;color:var(--sage-dark);margin-bottom:26px}
.pillar p{font-size:15px;color:var(--ink-soft);max-width:300px}
.pillar .price{font:300 clamp(38px,3.6vw,58px)/1 var(--serif);color:var(--ink);margin-bottom:18px;letter-spacing:-.01em}
.pillar .price__note{font-size:13px}
.price-inline{display:block;margin-top:10px;font:italic 300 22px/1.2 var(--serif);color:var(--ink)}

/* ---------- bleed ---------- */
.bleed{position:relative;height:110vh;min-height:640px;overflow:hidden;display:flex;align-items:flex-end}
.bleed__img{position:absolute;inset:-10% 0 0}
.bleed__img img{width:100%;height:100%;object-fit:cover;object-position:center 55%}
.bleed::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,20,18,0) 45%,rgba(20,20,18,.35) 100%);pointer-events:none}
.bleed__panel{position:relative;z-index:1;background:var(--white);padding:clamp(40px,4.5vw,72px);margin:0 var(--gutter) var(--gutter) auto;max-width:520px}
.bleed__panel>p:not(.label){color:var(--ink-soft);margin:26px 0 34px}

/* ---------- process ---------- */
.process{padding:clamp(130px,15vw,230px) var(--gutter)}
.process__head{display:grid;grid-template-columns:minmax(160px,1fr) 3fr;gap:var(--gutter);margin-bottom:90px}
.steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.step{padding:40px 36px 10px 0;border-right:1px solid var(--line);margin-right:36px}
.step:last-child{border-right:0;margin-right:0}
.step__no{display:block;font:300 italic 56px/1 var(--serif);color:var(--sage);margin-bottom:34px}
.step h3{font:400 12px/1.3 var(--sans);letter-spacing:.24em;text-transform:uppercase;margin-bottom:14px}
.step p{font-size:14px;color:var(--ink-soft);max-width:260px}

/* ---------- workshop ---------- */
.workshop{display:grid;grid-template-columns:auto 1fr;gap:clamp(50px,9vw,170px);align-items:center;padding:0 var(--gutter) clamp(130px,15vw,230px)}
.workshop__text>p:not(.label){color:var(--ink-soft);margin-top:32px;max-width:440px}
.workshop__phone{width:clamp(230px,22vw,320px);aspect-ratio:9/16;overflow:hidden;background:#222}
.workshop__phone video{width:100%;height:100%;object-fit:cover}

/* ---------- contact ---------- */
.contact{background:var(--stone);display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(50px,8vw,140px);padding:clamp(110px,12vw,180px) var(--gutter)}
.contact__intro>p:not(.label){color:var(--ink-soft);margin:32px 0 0;max-width:400px}
.hp{position:absolute;left:-9999px;width:1px;height:1px}
.form__grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 40px}
.field{display:block}
.field span{display:block;font:400 10px/1 var(--sans);letter-spacing:.28em;text-transform:uppercase;color:var(--ink-soft);padding-top:22px}
.field input,.field textarea{width:100%;background:transparent;border:0;border-bottom:1px solid rgba(29,29,27,.22);color:var(--ink);font:300 18px/1.4 var(--sans);padding:12px 0;outline:none;transition:border-color .5s;border-radius:0}
.field input:focus,.field textarea:focus{border-color:var(--ink)}
.field textarea{resize:vertical}
.field textarea::placeholder{color:var(--muted)}
.field--full{margin-top:8px}
.choice{border:0;margin-top:34px;display:flex;flex-wrap:wrap;gap:10px}
.choice legend{width:100%;font:400 10px/1 var(--sans);letter-spacing:.28em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}
.choice label{cursor:pointer}
.choice input{position:absolute;opacity:0;pointer-events:none}
.choice span{display:inline-block;padding:12px 22px;border:1px solid rgba(29,29,27,.22);font-size:14px;transition:all .5s var(--ease)}
.choice input:checked+span{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.choice input:focus-visible+span{outline:1px solid var(--sage-dark);outline-offset:3px}
.upload{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:34px;cursor:pointer}
.upload input{position:absolute;opacity:0;width:1px;height:1px}
.upload__btn{font:italic 300 20px/1 var(--serif);border-bottom:1px solid var(--ink);padding-bottom:6px}
.upload__list{font-size:13px;color:var(--muted)}
.consent{display:flex;gap:12px;align-items:flex-start;margin:34px 0 36px;font-size:13px;color:var(--ink-soft);cursor:pointer}
.consent input{margin-top:5px;accent-color:var(--ink)}
.form__status{margin-top:18px;font-size:15px;color:var(--sage-dark);min-height:1.5em}
.form__submit[disabled]{opacity:.5;pointer-events:none}

/* ---------- footer ---------- */
.footer{padding:110px var(--gutter) 40px;background:var(--paper)}
.footer__row{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;flex-wrap:wrap;padding-bottom:70px}
.footer__tag{font:300 clamp(30px,3vw,46px)/1.1 var(--serif)}
.footer__tag em{color:var(--sage-dark)}
.footer__social{display:flex;gap:34px;flex-wrap:wrap}
.footer__social a{font:400 11px/1 var(--sans);letter-spacing:.28em;text-transform:uppercase}
.footer__social a:hover{color:var(--sage-dark)}
.footer__logo{width:100%;height:auto;opacity:.95}
.footer__small{font-size:11px;color:var(--muted);margin-top:40px;letter-spacing:.02em}

/* ---------- lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(245,243,239,.97);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .7s var(--ease)}
.lightbox.is-open{opacity:1;pointer-events:auto}
.lightbox__img{max-width:84vw;max-height:82vh;object-fit:contain}
.lightbox button{position:absolute;background:none;border:0;color:var(--ink);cursor:pointer;font:400 11px/1 var(--sans);letter-spacing:.28em;text-transform:uppercase;padding:18px}
.lightbox .lightbox__nav{font:300 34px/1 var(--serif);letter-spacing:0}
.lightbox__close{top:18px;right:22px}
.lightbox__prev{left:14px;top:50%;transform:translateY(-50%)}
.lightbox__next{right:14px;top:50%;transform:translateY(-50%)}
.lightbox__count{position:absolute;bottom:26px;left:0;right:0;text-align:center;font:400 11px/1 var(--sans);letter-spacing:.28em;color:var(--muted)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  body{font-size:15px}
  .nav{padding:20px var(--gutter)}
  .nav__links{position:fixed;inset:0;background:var(--paper);flex-direction:column;justify-content:center;gap:36px;opacity:0;pointer-events:none;transition:opacity .6s var(--ease)}
  .nav__links a{font-size:13px}
  .nav.is-open .nav__links{opacity:1;pointer-events:auto}
  .nav__burger{display:block}
  .nav.is-open .nav__burger span:first-child{transform:translateY(3.5px) rotate(45deg)}
  .nav.is-open .nav__burger span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
  .hero{grid-template-columns:1fr;min-height:0}
  .hero__media{order:-1;height:72svh}
  .hero__text{padding:40px var(--gutter) 44px}
  .hero__title{font-size:clamp(54px,15vw,90px);margin-top:0}
  .hero__foot{flex-direction:column;align-items:flex-start;margin-top:36px}
  .hero__caption{left:var(--gutter);bottom:14px}
  .hero__caption i{display:none}
  .statement,.process__head,.quality__head{grid-template-columns:1fr;gap:0}
  .quality__grid{grid-template-columns:1fr 1fr}
  .pillar{border-right:0;margin-right:0;border-bottom:1px solid var(--line)}
  .work__grid{grid-template-columns:1fr;row-gap:60px}
  .card--a,.card--b,.card--pano{grid-column:1;margin-top:0}
  .card__meta{flex-direction:column;gap:4px}
  .card__meta p{text-align:left}
  .craft,.contact,.workshop{grid-template-columns:1fr}
  .craft__media{padding-bottom:40%}
  .steps{grid-template-columns:1fr 1fr}
  .step{border-right:0;margin-right:0;border-bottom:1px solid var(--line)}
  .bleed{height:auto;min-height:0;display:block}
  .bleed__img{position:relative;inset:auto;aspect-ratio:4/5}
  .bleed::after{display:none}
  .bleed__panel{margin:-70px 16px 0;max-width:none}
  .workshop__phone{margin:0 auto;order:2}
  .form__grid{grid-template-columns:1fr}
}
@media (max-width:520px){ .steps,.quality__grid{grid-template-columns:1fr} }
@media (prefers-reduced-motion:reduce){
  .reveal-up,.hero__title .line>span,.hero__caption{opacity:1;transform:none}
  .hero__frame{clip-path:none} .hero__video{transform:none}
}
