:root{--bg:#0B0B0C;--surface:#151517;--gold:#F9B03D;--ivory:#F5EFE6;--grey:#B3B3B3;--line:rgba(249,176,61,.28);--serif:'Cormorant Garamond',Georgia,serif;--sans:'Montserrat',system-ui,sans-serif;--script:'Great Vibes',cursive}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ivory);font-family:var(--sans);font-weight:300;font-size:17px;line-height:1.8;overflow-x:hidden}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1}
h1{font-size:clamp(46px,7vw,100px)}
h2{font-size:clamp(34px,4.6vw,64px)}
h3{font-size:clamp(24px,2.4vw,32px)}
em{font-family:var(--serif);font-style:italic;color:var(--gold)}
.wrap{width:min(1200px,100% - 48px);margin-inline:auto}
section{padding:120px 0;position:relative}
p+p{margin-top:1.1em}
.muted{color:var(--grey)}
.label{font-size:13px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-weight:400;margin-bottom:22px;display:flex;align-items:center;gap:16px}
.label::before{content:"";width:44px;height:1px;background:var(--gold)}
.center{text-align:center}
.center .label{justify-content:center}
.center .label::after{content:"";width:44px;height:1px;background:var(--gold)}
.lead{font-family:var(--serif);font-style:italic;font-size:clamp(22px,2.4vw,30px);color:var(--gold);line-height:1.4}
.rule{width:80px;height:1px;background:var(--gold);margin:28px 0}
.center .rule{margin-inline:auto}
.btn{display:inline-block;padding:16px 34px;border:1px solid var(--gold);color:var(--gold);font-size:12px;letter-spacing:.22em;text-transform:uppercase;font-weight:400;transition:.35s;cursor:pointer;background:transparent;font-family:var(--sans);line-height:1.4}
.btn:hover{background:var(--gold);color:#111}
.btn-gold{background:var(--gold);color:#111}
.btn-gold:hover{background:transparent;color:var(--gold)}
.btns{display:flex;gap:18px;flex-wrap:wrap;margin-top:36px}
.center .btns{justify-content:center}

/* motion */
.reveal{opacity:0;translate:0 50px;transition:opacity .9s ease,translate .9s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;translate:0 0}
[data-speed]{transform:translate3d(0,var(--py,0),0);will-change:transform}
.tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s ease-out,box-shadow .4s;transform-style:preserve-3d}
.tilt:hover{box-shadow:0 30px 70px rgba(0,0,0,.65),0 0 40px rgba(249,176,61,.18)}

/* nav */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:20px clamp(20px,4vw,56px);transition:.4s}
.nav.solid{background:rgba(11,11,12,.88);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding-block:12px;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:12px}
.brand .logo{position:relative;display:block;width:168px;height:71px;overflow:hidden;flex:none}.brand .logo img{position:absolute;left:-54.4px;top:-59.1px;width:288.3px;height:auto;max-width:none;mix-blend-mode:screen}
.brand b{font-family:var(--script);font-weight:400;font-size:34px;line-height:1;display:block}
.brand small{display:block;font-size:9px;letter-spacing:.38em;text-transform:uppercase;color:var(--grey);margin-top:2px}
.menu{display:flex;gap:36px;align-items:center}
.menu a{font-size:12px;letter-spacing:.24em;text-transform:uppercase;position:relative;padding:6px 0;font-weight:400}
.menu a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--gold);transition:.35s}
.menu a:hover::after,.menu a.on::after{width:100%}
.menu .btn{padding:13px 24px}
.menu .btn::after{display:none}
.burger{display:none;background:none;border:0;width:44px;height:44px;cursor:pointer;position:relative}
.burger i{position:absolute;left:10px;right:10px;height:1px;background:var(--ivory);transition:.3s}
.burger i:first-child{top:18px}
.burger i:last-child{top:26px}
.nav.open .burger i:first-child{top:22px;rotate:45deg}
.nav.open .burger i:last-child{top:22px;rotate:-45deg}

/* placeholders for photography */
.ph{position:relative;background:linear-gradient(160deg,var(--c1),var(--c2));overflow:hidden}
.ph::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--gx,30%) var(--gy,25%),rgba(255,214,150,.32),transparent 55%)}
.ph::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.6),transparent 58%)}
.ph>span{position:absolute;left:18px;bottom:14px;z-index:2;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--ivory);font-weight:400}
.a{--c1:#7a5430;--c2:#1b1410}
.b{--c1:#62403f;--c2:#171012}
.c{--c1:#41495a;--c2:#101216}
.d{--c1:#67602f;--c2:#14130c}
.e{--c1:#8a6540;--c2:#1a120b}
.f{--c1:#4b332d;--c2:#0f0b0a}
.play{position:absolute;z-index:2;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border:1px solid var(--gold);border-radius:50%;background:rgba(11,11,12,.45)}
.play::after{content:"";position:absolute;left:25px;top:20px;border-left:16px solid var(--gold);border-top:12px solid transparent;border-bottom:12px solid transparent}

/* hero */
.hero{min-height:100vh;display:grid;align-items:center;padding:140px 0 90px;overflow:hidden;background:radial-gradient(ellipse at 72% 40%,rgba(249,176,61,.14),transparent 55%),radial-gradient(ellipse at 15% 95%,rgba(249,176,61,.07),transparent 50%)}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:30px;align-items:center}
.hero h1{margin-bottom:6px}
.scene{perspective:1300px;height:580px;position:relative}
.stack{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--sx,0deg)) rotateY(var(--sy,0deg));transition:transform .3s ease-out}
.frame{position:absolute;border:1px solid var(--line);box-shadow:0 40px 80px rgba(0,0,0,.6);animation:float 7s ease-in-out infinite;translate:0 0 var(--z)}
.f1{width:270px;height:360px;left:4%;top:12%;transform:rotateY(-14deg) rotateZ(-3deg)}
.f2{width:230px;height:300px;right:2%;top:2%;transform:rotateY(12deg) rotateZ(4deg);animation-delay:-2s}
.f3{width:300px;height:200px;right:10%;bottom:4%;transform:rotateY(10deg) rotateZ(-2deg);animation-delay:-4s}
@keyframes float{0%,100%{translate:0 0 var(--z)}50%{translate:0 -18px var(--z)}}
.lens{position:absolute;left:30%;top:26%;width:240px;height:240px;transform-style:preserve-3d;translate:0 0 -60px;animation:spin 30s linear infinite}
@keyframes spin{to{rotate:360deg}}
.lens i{position:absolute;inset:0;border-radius:50%;border:1px solid var(--gold);transform:translateZ(calc(var(--n)*-28px)) scale(calc(1 - var(--n)*.12));opacity:calc(.95 - var(--n)*.13);box-shadow:0 0 30px rgba(249,176,61,.15)}
.lens i:nth-child(odd){border-style:dashed}
.lens::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px;border-radius:50%;background:var(--gold);box-shadow:0 0 40px 10px rgba(249,176,61,.5)}
.gl{position:absolute;border-radius:50%;background:var(--gold);opacity:.55;animation:float 9s ease-in-out infinite}

/* promise */
.promise .wrap{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:50px;align-items:center}
.promise .pc{height:340px;border:1px solid var(--line)}
.promise .col{display:grid;gap:36px}
.promise .col .pc:nth-child(2){height:220px;margin-left:30px}
.promise .col.r .pc:nth-child(2){margin:0 30px 0 0}

/* strips and cards */
.strip{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;padding:30px max(24px,calc((100vw - 1200px)/2)) 56px;scrollbar-width:thin;scrollbar-color:var(--gold) transparent}
.card{flex:0 0 270px;height:400px;scroll-snap-align:start;border:1px solid var(--line);display:block}
.card b{position:absolute;z-index:2;left:20px;top:16px;font-family:var(--serif);font-size:44px;font-weight:300;color:var(--gold)}
.card h3{position:absolute;z-index:2;left:20px;right:20px;bottom:20px;font-size:27px}
.band{background:var(--surface);border-block:1px solid var(--line)}

/* collage */
.collage{position:relative;height:620px;margin-top:60px}
.collage .big{position:absolute;left:0;top:0;width:68%;height:560px;border:1px solid var(--line)}
.collage .s1{position:absolute;right:6%;top:30px;width:30%;height:300px;border:1px solid var(--line);box-shadow:0 30px 60px rgba(0,0,0,.6)}
.collage .s2{position:absolute;right:0;bottom:0;width:34%;height:280px;border:1px solid var(--line);box-shadow:0 30px 60px rgba(0,0,0,.6)}

/* cta */
.cta{text-align:center;padding:170px 0;overflow:hidden}
.cta .bg{position:absolute;inset:-10%;z-index:0;background:radial-gradient(ellipse at 50% 50%,rgba(249,176,61,.18),transparent 60%),linear-gradient(160deg,#2a1d12,#0b0b0c 70%);animation:slowzoom 18s ease-in-out infinite alternate}
@keyframes slowzoom{to{transform:scale(1.12)}}
.cta .wrap{position:relative;z-index:1;max-width:820px}

/* split / about */
.split{display:grid;grid-template-columns:.9fr 1.1fr;gap:80px;align-items:center}
.frame-photo{position:relative;height:640px}
.frame-photo .main{position:absolute;inset:0 12% 10% 0;border:1px solid var(--line)}
.frame-photo .mini{position:absolute;right:0;bottom:0;width:44%;height:260px;border:1px solid var(--line);box-shadow:0 30px 60px rgba(0,0,0,.65)}
.approach{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:70px}
.step{background:var(--surface);border:1px solid var(--line);padding:44px 30px;min-height:360px}
.step .n{font-family:var(--serif);font-size:70px;line-height:1;color:transparent;-webkit-text-stroke:1px var(--gold);margin-bottom:26px}
.step h3{font-style:italic;margin-bottom:14px}
.step p{color:var(--grey);font-size:15.5px}

/* services */
.row{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;padding:56px 0;scroll-margin-top:90px}
.row:nth-child(even) .media{order:2}
.row .media{height:480px;border:1px solid var(--line)}
.row .num{font-family:var(--serif);font-size:110px;line-height:.9;color:transparent;-webkit-text-stroke:1px var(--gold)}
.row h3{font-size:clamp(30px,3.2vw,44px);margin:6px 0 20px}
.row p{color:#d9d3c9}
.tabs{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin:40px 0 44px}
.tabs button{background:none;border:1px solid var(--line);color:var(--ivory);padding:12px 24px;font:400 12px var(--sans);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:.3s}
.tabs button:hover,.tabs button.on{background:var(--gold);border-color:var(--gold);color:#111}
.gallery{columns:3;column-gap:18px}
.g{break-inside:avoid;margin-bottom:18px;border:1px solid var(--line)}
.g[hidden]{display:none}
.carousel{perspective:1600px;height:430px;display:grid;place-items:center;margin-top:50px;overflow:hidden}
.ring{position:relative;width:220px;height:300px;transform-style:preserve-3d;transform:rotateY(var(--ang,0deg));transition:transform 1.1s cubic-bezier(.3,.7,.2,1)}
.ring .item{position:absolute;inset:0;border:1px solid var(--line);transform:rotateY(calc(var(--i)*60deg)) translateZ(var(--r,380px));backface-visibility:hidden;box-shadow:0 20px 50px rgba(0,0,0,.6)}
.ctrl{display:flex;gap:16px;justify-content:center;margin-top:10px}
.ctrl button{width:52px;height:52px;border:1px solid var(--gold);background:none;color:var(--gold);font-size:22px;cursor:pointer;transition:.3s}
.ctrl button:hover{background:var(--gold);color:#111}

/* why + contact */
.why{display:grid;grid-template-columns:.85fr 1.15fr;gap:80px}
.why .left{position:sticky;top:140px;align-self:start}
.why .cards{display:grid;gap:22px}
.glass{background:rgba(21,21,23,.72);border:1px solid var(--line);padding:34px 36px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:grid;grid-template-columns:44px 1fr;gap:22px;align-items:start}
.glass i{font-style:normal;color:var(--gold);font-size:26px;line-height:1.2}
.glass h3{font-size:28px;margin-bottom:6px}
.glass p{color:var(--grey);font-size:15.5px}
.formcard{background:var(--surface);border:1px solid var(--line);padding:clamp(28px,5vw,64px);margin-top:70px;box-shadow:0 50px 90px rgba(0,0,0,.6)}
.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.formgrid .full{grid-column:1/-1}
label{display:block;font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:8px;font-weight:400}
input,select,textarea{width:100%;background:transparent;border:0;border-bottom:1px solid rgba(245,239,230,.3);color:var(--ivory);font:300 17px var(--sans);padding:10px 0;outline:none;transition:.3s;border-radius:0}
select option{background:#151517}
textarea{min-height:120px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--gold)}
.status{margin-top:22px;color:var(--gold);font-family:var(--serif);font-style:italic;font-size:22px}

/* footer */
footer{border-top:1px solid var(--line);padding:70px 0 40px;background:#080809}
footer .wrap{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;align-items:center}
footer .sig{font-family:var(--serif);font-size:30px;letter-spacing:.2em}
footer .sig small{display:block;font-family:var(--sans);font-size:11px;letter-spacing:.4em;color:var(--gold);margin-top:6px}
footer nav{display:flex;gap:28px;justify-content:flex-end;flex-wrap:wrap}
footer nav a{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--grey);transition:.3s}
footer nav a:hover{color:var(--gold)}
footer .copy{grid-column:1/-1;border-top:1px solid rgba(245,239,230,.08);padding-top:24px;font-size:12px;color:#777;letter-spacing:.1em}

.pagehead{padding:190px 0 70px;text-align:center;background:radial-gradient(ellipse at 50% 0%,rgba(249,176,61,.14),transparent 60%)}
.pagehead h1{font-size:clamp(40px,6vw,84px)}

@media(max-width:960px){
section{padding:84px 0}
.burger{display:block}
.menu{position:fixed;inset:0;background:rgba(11,11,12,.97);flex-direction:column;justify-content:center;gap:26px;opacity:0;pointer-events:none;transition:.4s}
.nav.open .menu{opacity:1;pointer-events:auto}
.menu a{font-size:15px}
.nav.open .burger{position:relative;z-index:60}
.hero .wrap{grid-template-columns:1fr}
.scene{height:420px}
.f1{width:190px;height:260px}
.f2{width:160px;height:215px}
.f3{width:210px;height:140px}
.lens{width:170px;height:170px;left:32%;top:24%}
.promise .wrap{grid-template-columns:1fr}
.promise .col{grid-template-columns:1fr 1fr}
.promise .col .pc,.promise .col .pc:nth-child(2),.promise .col.r .pc:nth-child(2){height:200px;margin:0}
.split,.why,.row{grid-template-columns:1fr;gap:40px}
.row:nth-child(even) .media{order:0}
.row .media{height:340px}
.frame-photo{height:480px}
.approach{grid-template-columns:1fr 1fr}
.gallery{columns:2}
.why .left{position:static}
.collage{height:520px}
.collage .big{height:420px}
.collage .s1{height:220px}
.collage .s2{height:200px}
.card{flex-basis:230px;height:340px}
.carousel{height:360px}
.ring{width:160px;height:230px}
.ring .item{--r:250px}
footer .wrap{grid-template-columns:1fr}
footer nav{justify-content:flex-start}
}
@media(max-width:560px){
.approach,.formgrid{grid-template-columns:1fr}
.gallery{columns:1}
.glass{grid-template-columns:1fr}
.collage .big{width:80%}
}
@media(prefers-reduced-motion:reduce){
*{animation:none!important;transition:none!important}
.reveal{opacity:1;translate:none}
}
.contact-line{grid-column:1/-1;display:flex;gap:14px 34px;flex-wrap:wrap;border-top:1px solid rgba(245,239,230,.08);padding-top:24px;font-size:14px;letter-spacing:.08em}.contact-line a{color:var(--ivory);transition:.3s}.contact-line a:hover{color:var(--gold)}
.reach{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:920px;margin:60px auto 0}.reach .glass{grid-template-columns:36px 1fr;padding:28px 26px}.reach .glass h3{font-size:24px}.reach .glass p{word-break:break-word}
.wa{position:fixed;right:22px;bottom:22px;z-index:60;width:58px;height:58px;border-radius:50%;background:var(--gold);color:#111;display:grid;place-items:center;box-shadow:0 10px 30px rgba(0,0,0,.5),0 0 0 6px rgba(249,176,61,.18);transition:.3s}.wa:hover{transform:scale(1.08)}
@media(max-width:960px){.reach{grid-template-columns:1fr}}

.pic{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;transition:transform 1.3s cubic-bezier(.2,.7,.2,1)}
.ph:has(>.pic)::before{opacity:.16;z-index:1}
.ph:has(>.pic)::after{z-index:1;background:linear-gradient(to top,rgba(0,0,0,.6),transparent 40%)}
.ph:hover>.pic{transform:scale(1.05)}
.g{position:relative;overflow:hidden;margin:0 0 18px;border:1px solid var(--line)}
.g img{display:block;width:100%;height:auto;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.g:hover img{transform:scale(1.04)}
.g figcaption{position:absolute;left:16px;bottom:12px;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--ivory);opacity:0;transition:.4s;text-shadow:0 1px 10px #000}
.g:hover figcaption{opacity:1}
@media(max-width:560px){.tabs{gap:10px}.tabs button{padding:10px 16px;font-size:11px}}
[data-yt]{cursor:pointer}
.g.vid{background:#151517}
.g.vid img{aspect-ratio:16/9;object-fit:cover;height:auto}
.g.vid figcaption{opacity:1;z-index:2}
.g.vid::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.55),transparent 45%);pointer-events:none}
.g.vid .play{z-index:2;transition:.3s}
.g.vid:hover .play,.film-feature:hover .play,.media:hover .play{background:rgba(249,176,61,.9)}
.g.vid:hover .play::after,.film-feature:hover .play::after,.media:hover .play::after{border-left-color:#111}
.film-feature{position:relative;aspect-ratio:16/9;max-width:980px;margin:50px auto 46px;border:1px solid var(--line);box-shadow:0 40px 90px rgba(0,0,0,.6)}
.film-feature .play{width:88px;height:88px;margin:-44px 0 0 -44px}
.film-feature .play::after{left:35px;top:28px;border-left-width:24px;border-top-width:16px;border-bottom-width:16px}
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(5,5,6,.95);display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .35s}
.lightbox.open{opacity:1;pointer-events:auto}
.lb-box{width:min(1100px,92vw);aspect-ratio:16/9;border:1px solid var(--line);box-shadow:0 40px 100px rgba(0,0,0,.8);background:#000}
.lb-box iframe{width:100%;height:100%;border:0;display:block}
.lb-x{position:absolute;top:18px;right:22px;width:48px;height:48px;background:none;border:1px solid var(--gold);color:var(--gold);font-size:28px;line-height:1;cursor:pointer;transition:.3s}
.lb-x:hover{background:var(--gold);color:#111}
.contact-line a{display:inline-flex;align-items:center;gap:12px}
.contact-line svg{width:22px;height:22px;flex:none;color:var(--gold)}
.contact-line a:hover svg{color:var(--ivory)}
.lb-hint{position:absolute;left:0;right:0;bottom:22px;text-align:center;color:var(--ivory);font-size:14px;letter-spacing:.08em;padding:0 20px;pointer-events:none}
.lb-box{width:min(1280px,96vw,calc((100vh - 70px)*16/9))}
.row .media.tall{height:620px}
@media(max-width:960px){.row .media.tall{height:460px}}
.rot90{container-type:size}
.rot90>img{position:absolute;inset:auto;left:50%;top:50%;width:100cqh;height:100cqw;max-width:none;transform:translate(-50%,-50%) rotate(90deg);object-fit:cover}
.ph.rot90:hover>.pic{transform:translate(-50%,-50%) rotate(90deg) scale(1.05)}
.g.rot90{aspect-ratio:2/3}
.g.rot90 img{position:absolute;inset:auto;left:50%;top:50%;width:100cqh;height:100cqw;max-width:none;transform:translate(-50%,-50%) rotate(90deg);object-fit:cover}
.g.rot90:hover img{transform:translate(-50%,-50%) rotate(90deg) scale(1.04)}
