:root{
  --bg:#0a0a0b; --bg2:#100f11; --panel:#15131590;
  --cream:#f3efe6; --muted:#8d8880; --faint:#5c5852;
  --gold:#c9a96a; --line:rgba(243,239,230,.12);
  --display:"Bodoni Moda",Georgia,serif; --serif:"Fraunces",Georgia,serif;
  --sans:"Space Grotesk",system-ui,sans-serif; --mono:"Space Mono",monospace;
  --ease:cubic-bezier(.22,1,.36,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--cream);font-family:var(--sans);font-weight:300;line-height:1.5;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
em{font-style:italic}
section{position:relative}

/* loader */
.loader{position:fixed;inset:0;z-index:200;background:var(--bg);display:grid;place-items:center;
  transition:opacity .8s var(--ease),visibility .8s}
.loader.done{opacity:0;visibility:hidden}
.loader-word{font-family:var(--display);font-weight:300;font-size:clamp(2rem,7vw,5rem);letter-spacing:.2em;
  color:var(--cream);opacity:.18;animation:pulse 1.4s var(--ease) infinite alternate}
@keyframes pulse{to{opacity:.55;letter-spacing:.28em}}

/* nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;
  padding:1.4rem clamp(1.2rem,5vw,4rem);transition:background .5s var(--ease),padding .5s var(--ease)}
.nav.solid{background:rgba(10,10,11,.72);backdrop-filter:blur(14px);
  padding-top:.9rem;padding-bottom:.9rem;border-bottom:1px solid var(--line)}
.nav-mark{font-family:"Marcellus",Georgia,serif;font-weight:400;letter-spacing:.015em;line-height:1;
  font-size:clamp(1.9rem,3.8vw,3rem);
  background:linear-gradient(90deg,var(--cream),var(--gold),var(--cream),var(--gold),var(--cream));
  background-size:260% 100%;-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:cdxhue 6s linear infinite, cdxpulse 2.8s var(--ease) infinite;will-change:transform}
@keyframes cdxhue{to{background-position:260% 0}}
@keyframes cdxpulse{0%,100%{transform:scale(1);opacity:.92}50%{transform:scale(1.045);opacity:1}}
.nav-links{display:flex;gap:2.2rem}
.nav-links a{font-size:.84rem;letter-spacing:.04em;color:var(--cream);opacity:.85;position:relative;padding:.2rem 0}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:1px;background:var(--gold);transition:width .4s var(--ease)}
.nav-links a:hover::after{width:100%}
.nav-cta{font-family:var(--mono);font-size:.76rem;letter-spacing:.12em;border:1px solid var(--line);
  padding:.7rem 1.3rem;border-radius:100px;transition:.4s var(--ease)}
.nav-cta:hover{background:var(--gold);color:#0a0a0b;border-color:var(--gold)}
@media(max-width:760px){.nav-links{display:none}}

/* hero */
.hero{height:100svh;min-height:640px;overflow:hidden;display:flex;align-items:flex-end;
  padding-top:6.5rem;
  background:radial-gradient(120% 90% at 72% 40%,#171311 0%,#0c0b0c 55%,#08080a 100%)}
.hero-media{position:absolute;inset:0;z-index:0;will-change:transform}
.hero-media img{width:100%;height:100%;object-fit:cover;display:block;filter:brightness(.92) contrast(1.06) saturate(1.05);
  transform:scale(1.06);animation:heroFlow 30s var(--ease) infinite alternate;will-change:transform}
@keyframes heroFlow{0%{transform:scale(1.06) translate(0,0) rotate(0deg)}100%{transform:scale(1.17) translate(-2.5%,-1.8%) rotate(.6deg)}}
.hero::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,8,10,.5) 0%,rgba(8,8,10,.12) 26%,rgba(8,8,10,.28) 58%,#08080a 100%),
  linear-gradient(90deg,rgba(8,8,10,.72) 0%,rgba(8,8,10,.32) 46%,rgba(8,8,10,.05) 75%)}
.hero-grain{position:absolute;inset:0;z-index:2;opacity:.05;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.hero-inner{position:relative;z-index:3;padding:0 clamp(1.2rem,5vw,4rem) clamp(3rem,7vh,6rem);max-width:1100px}
.eyebrow{font-family:var(--mono);font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:1.5rem}
.hero-title{font-family:var(--display);font-weight:500;font-size:clamp(2.7rem,8.2vw,7.2rem);line-height:.98;
  letter-spacing:-.005em}
.hero-title .line{display:block;overflow:hidden}
.hero-title .line>span{display:block;transform:translateY(110%);transition:transform 1s var(--ease)}
.hero-title .line.in>span{transform:translateY(0)}
.hero-title em{color:var(--gold);font-weight:300}
.hero-sub{max-width:34ch;margin:1.8rem 0 2.2rem;font-size:clamp(1rem,1.5vw,1.18rem);color:var(--cream);opacity:.86}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}

.btn{font-family:var(--mono);font-size:.8rem;letter-spacing:.1em;padding:1.05rem 1.9rem;border-radius:100px;
  transition:.45s var(--ease);display:inline-block}
.btn-solid{background:var(--cream);color:#0a0a0b}
.btn-solid:hover{background:var(--gold);transform:translateY(-2px)}
.btn-ghost{border:1px solid var(--line);color:var(--cream)}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold)}

.scroll-cue{position:absolute;bottom:2rem;left:50%;transform:translateX(-50%);z-index:4;width:1px;height:54px;background:var(--line);overflow:hidden}
.scroll-cue span{position:absolute;top:-50%;left:0;width:100%;height:50%;background:var(--gold);animation:cue 2s var(--ease) infinite}
@keyframes cue{0%{top:-50%}60%,100%{top:100%}}

/* generic reveal */
.reveal{opacity:0;transform:translateY(34px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* manifesto */
.manifesto{padding:clamp(7rem,16vh,14rem) clamp(1.2rem,5vw,4rem);max-width:1200px;margin:0 auto}
.manifesto-text{font-family:var(--serif);font-weight:330;font-size:clamp(1.6rem,4.4vw,3.4rem);line-height:1.28;letter-spacing:-.01em}
.manifesto-text .w{display:inline-block;opacity:.12;transition:opacity .5s var(--ease)}
.manifesto-text .w.lit{opacity:1}

/* film */
.film{padding:0 clamp(1.2rem,5vw,4rem) clamp(4rem,9vh,8rem)}
.film-frame{position:relative;max-width:1400px;margin:0 auto;aspect-ratio:16/9;overflow:hidden;border-radius:6px;
  border:1px solid var(--line)}
.film-frame video{filter:brightness(.94)}
.film-frame::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 120px rgba(10,10,11,.6);pointer-events:none}
.film-cap{position:absolute;left:1.4rem;bottom:1.2rem;z-index:2}
.film-cap .idx{margin:0}

/* section head */
.section-head{padding:0 clamp(1.2rem,5vw,4rem);max-width:1300px;margin:0 auto clamp(2.5rem,5vh,4rem)}
.section-head.center{text-align:center}
.idx{font-family:var(--mono);font-size:.76rem;letter-spacing:.18em;color:var(--gold);display:block;margin-bottom:1rem}
.section-head h2,.craft-text h2,.contact h2{font-family:var(--display);font-weight:500;font-size:clamp(2.3rem,6vw,4.8rem);line-height:1.02;letter-spacing:-.01em}
.section-head h2 em{color:var(--gold)}

/* services */
.services{padding-bottom:clamp(4rem,9vh,8rem)}
.svc-list{max-width:1300px;margin:0 auto;padding:0 clamp(1.2rem,5vw,4rem);list-style:none}
.svc{display:grid;grid-template-columns:1fr auto;gap:.5rem 2rem;align-items:baseline;
  padding:2.1rem 0;border-top:1px solid var(--line);position:relative;transition:.5s var(--ease)}
.svc:last-child{border-bottom:1px solid var(--line)}
.svc:hover{padding-left:1.2rem}
.svc-name{font-family:var(--serif);font-size:clamp(1.7rem,3.6vw,2.8rem);font-weight:340}
.svc-pop{font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;color:#0a0a0b;background:var(--gold);
  padding:.25rem .6rem;border-radius:100px;vertical-align:middle;margin-left:.9rem}
.svc-price{font-family:var(--mono);font-size:clamp(1.1rem,2vw,1.5rem);color:var(--gold);white-space:nowrap}
.svc-desc{grid-column:1/2;color:var(--muted);font-size:.98rem;max-width:52ch;margin-top:.4rem}
.svc-dur{grid-column:2/3;font-family:var(--mono);font-size:.78rem;color:var(--faint);text-align:right}

/* gallery */
.gallery{padding-bottom:clamp(5rem,10vh,9rem)}
.gal-grid{max-width:1500px;margin:0 auto;padding:0 clamp(1.2rem,5vw,4rem);
  display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.gal-item{position:relative;overflow:hidden;aspect-ratio:3/4;background:var(--bg2);border-radius:3px}
.gal-item:nth-child(1),.gal-item:nth-child(6){grid-row:span 2;aspect-ratio:3/5}
.gal-item img{transform:scale(1.02);transition:transform 1.1s var(--ease),filter .6s;filter:grayscale(.15) brightness(.92)}
.gal-item:hover img{transform:scale(1.08);filter:grayscale(0) brightness(1)}
@media(max-width:900px){.gal-grid{grid-template-columns:repeat(2,1fr)}.gal-item:nth-child(1),.gal-item:nth-child(6){grid-row:auto;aspect-ratio:3/4}}

/* craft */
.craft{display:grid;grid-template-columns:1.05fr .95fr;min-height:90svh;align-items:center}
.craft-media{position:relative;height:100%;min-height:60svh;overflow:hidden}
.craft-media img{filter:brightness(.8) contrast(1.05);transform:scale(1.04);transition:transform 1.4s var(--ease)}
.craft:hover .craft-media img{transform:scale(1)}
.craft-text{padding:clamp(3rem,8vw,7rem)}
.craft-text p{color:var(--muted);max-width:42ch;margin:1.6rem 0 2.2rem;font-size:1.05rem}
@media(max-width:860px){.craft{grid-template-columns:1fr}.craft-media{min-height:62svh}}

/* reviews */
.reviews{padding:clamp(5rem,10vh,9rem) 0;overflow:hidden}
.marquee{position:relative;margin-top:1rem;-webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-row{display:flex;gap:1.4rem;width:max-content;animation:scroll 46s linear infinite}
.reviews:hover .marquee-row{animation-play-state:paused}
@keyframes scroll{to{transform:translateX(-50%)}}
.rev{flex:0 0 auto;width:min(86vw,420px);padding:2.2rem;border:1px solid var(--line);border-radius:8px;
  background:var(--panel)}
.rev-stars{color:var(--gold);letter-spacing:.18em;font-size:.8rem;margin-bottom:1rem}
.rev-text{font-family:var(--serif);font-size:1.32rem;font-weight:340;line-height:1.36;margin-bottom:1.4rem}
.rev-who{font-family:var(--mono);font-size:.76rem;letter-spacing:.06em;color:var(--muted)}

/* contact */
.contact{padding:clamp(5rem,11vh,10rem) clamp(1.2rem,5vw,4rem);border-top:1px solid var(--line)}
.contact-grid{max-width:1300px;margin:0 auto;display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2.5rem,6vw,6rem);align-items:end}
.contact h2{margin-bottom:2rem}
.contact-meta{display:flex;flex-direction:column;gap:1rem}
.meta-row{display:flex;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line);font-size:.95rem}
.meta-row span{color:var(--faint);font-family:var(--mono);font-size:.78rem;letter-spacing:.08em}
.meta-row a:hover{color:var(--gold)}
@media(max-width:760px){.contact-grid{grid-template-columns:1fr}}

/* footer */
.footer{padding:clamp(3rem,7vh,6rem) clamp(1.2rem,5vw,4rem) 3rem;text-align:center;border-top:1px solid var(--line)}
.foot-mark{font-family:var(--display);font-size:clamp(2.4rem,10vw,7rem);font-weight:300;letter-spacing:.04em;color:var(--cream);opacity:.1;display:block;margin-bottom:1.5rem}
.disclaimer{max-width:60ch;margin:0 auto;color:var(--faint);font-size:.82rem;line-height:1.7}
.disclaimer a{color:var(--muted);border-bottom:1px solid var(--line)}
.disclaimer a:hover{color:var(--gold)}
