:root{--noir-black:#0a0a0a;--noir-white:#fff;--noir-muted:#888;--noir-accent:#c8a96e;--font-heading:"Montserrat", sans-serif;--font-body:"Inter", sans-serif}.portfolio-empty{background:var(--noir-black);text-align:center;justify-content:center;align-items:center;padding:72px 20px 20px;display:flex;position:fixed;inset:0}.empty-content{max-width:600px;animation:1s fadeIn}.empty-label{font-family:var(--font-heading);letter-spacing:.5em;color:var(--noir-accent);margin-bottom:24px;font-size:10px;display:block}.empty-title{font-family:var(--font-heading);letter-spacing:-.02em;margin-bottom:24px;font-size:clamp(32px,5vw,64px);font-weight:800;line-height:1.1}.empty-title span{color:var(--noir-muted);font-style:italic;font-weight:300}.empty-desc{color:var(--noir-muted);max-width:400px;margin-bottom:40px;margin-left:auto;margin-right:auto;font-size:14px;line-height:1.8}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}html{overscroll-behavior:none}.portfolio-scroll-lock{height:100%;overflow:hidden}body{background:var(--noir-black);color:var(--noir-white);font-family:var(--font-body);overscroll-behavior:none;height:100vh;overflow:hidden}.custom-cursor-active,.custom-cursor-active *{cursor:none}.cursor-dot,.cursor-ring{pointer-events:none;z-index:9999;mix-blend-mode:difference;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}.cursor-dot{background:var(--noir-white);z-index:1000100;border-radius:50%;width:8px;height:8px;transition:width .2s,height .2s,background .2s}.cursor-ring{z-index:1000099;border:1px solid #fff6;border-radius:50%;width:36px;height:36px;transition:width .4s,height .4s,border-color .3s,border-radius .3s}@media (max-width:750px),(hover:none){.cursor-dot,.cursor-ring{display:none!important}body{cursor:auto!important}body:has(.project-detail-root){height:auto!important;overflow-y:auto!important}}.hero-section{background:var(--noir-black);z-index:50;will-change:transform;opacity:0;flex-direction:column;justify-content:center;align-items:center;transition:opacity 1.2s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;inset:0}.app-ready .hero-section{opacity:1}.portfolio-root{opacity:0;transition:opacity 1.5s cubic-bezier(.16,1,.3,1)}.app-ready .portfolio-root{opacity:1}.hero-vid-container{z-index:1;pointer-events:none;mix-blend-mode:screen;align-items:center;width:clamp(170px,20vw,360px);display:flex;position:absolute;top:0;bottom:0}.hero-vid-container.left{left:5vw}.hero-vid-container.right{right:5vw}@media (max-width:750px){.hero-section{justify-content:center;padding:20px}.hero-vid-container.right{opacity:0;pointer-events:none;visibility:hidden;position:absolute}.hero-vid-container.left{order:-1;width:clamp(120px,28vh,200px);margin-bottom:clamp(12px,3vh,32px);position:relative;left:auto}}.hero-vid-parallax{flex-shrink:0;width:100%;height:auto}.hero-vid-anim{opacity:0;border-radius:8px;width:100%;height:auto;display:block;overflow:hidden;transform:translateY(40px)scale(.9)}.app-ready .hero-vid-anim{animation:2.4s cubic-bezier(.16,1,.3,1) .2s forwards cinematicVidReveal}.hero-vid{opacity:1;filter:contrast(1.1)brightness(.9);--vid-flip:1;width:100%;height:auto;transform:translateZ(0) scaleX(var(--vid-flip)) scale(1);will-change:transform, filter;backface-visibility:hidden;animation:6s ease-in-out infinite abstractVideoPulse;display:block}.hero-vid-anim.right-anim .hero-vid{--vid-flip:-1}@keyframes abstractVideoPulse{0%,to{transform:translateZ(0) scaleX(var(--vid-flip)) scale(1);filter:contrast(1.1)brightness(.9)}50%{transform:translateZ(0) scaleX(var(--vid-flip)) scale(1.03);filter:contrast(1.15)brightness()}}.hero-title{font-family:var(--font-heading);text-transform:uppercase;color:var(--noir-white);letter-spacing:.2em;text-align:center;z-index:2;opacity:0;flex-direction:row;justify-content:center;align-items:center;gap:.3em;margin-bottom:20px;margin-right:-.2em;font-size:clamp(58px,7.2vw,115px);font-weight:600;line-height:1;display:flex;position:relative;transform:translateY(30px)}.hero-title span{text-align:center;width:auto;display:inline}.app-ready .hero-title{animation:2s cubic-bezier(.16,1,.3,1) .3s forwards fadeUp}.hero-anim-wrapper{justify-content:center;align-items:center;width:100%;display:flex}.hero-subtitle{letter-spacing:.4em;text-transform:uppercase;color:var(--noir-accent);z-index:2;opacity:0;text-align:center;width:100%;margin-bottom:60px;font-size:14px;position:relative;transform:translateY(30px)}.app-ready .hero-subtitle{animation:2s cubic-bezier(.16,1,.3,1) .9s forwards fadeUp}.hero-prompt-wrapper{z-index:2;justify-content:center;display:flex;position:absolute;bottom:60px;left:0;right:0}.scroll-prompt{color:var(--noir-muted);letter-spacing:.3em;text-transform:uppercase;opacity:0;flex-direction:column;align-items:center;gap:16px;font-size:10px;display:flex;transform:translateY(30px)}.app-ready .scroll-prompt{animation:2s cubic-bezier(.16,1,.3,1) 1.6s forwards fadeUpPrompt,3s 3.6s infinite pulseOpacity}.scroll-line{background:linear-gradient(to bottom, var(--noir-accent), transparent);width:1px;height:40px}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}@keyframes cinematicVidReveal{to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes fadeUpPrompt{to{opacity:.6;transform:translateY(0)}}@keyframes pulseOpacity{0%{opacity:.3}50%{opacity:.8}to{opacity:.3}}.navbar{z-index:100;background:#0a0a0a00;border-bottom:1px solid #ffffff0a;justify-content:space-between;align-items:center;height:72px;padding:0 20px;display:flex;position:fixed;top:0;left:0;right:0}.navbar-logo{font-family:var(--font-heading);letter-spacing:.2em;text-transform:uppercase;color:var(--noir-white);align-items:center;gap:12px;padding:10px 0;font-size:15px;font-weight:700;text-decoration:none;display:flex}.navbar-logo svg{width:22px;height:22px}.navbar-logo span{color:var(--noir-accent)}.navbar-nav{white-space:nowrap;align-items:center;gap:48px;list-style:none;display:flex}.navbar-nav a{letter-spacing:.3em;text-transform:uppercase;color:var(--noir-muted);margin:-20px -16px;padding:20px 16px;font-size:10px;font-weight:500;text-decoration:none;transition:color .4s;display:inline-block;position:relative}.navbar-nav a:after{content:"";background:var(--noir-accent);transform-origin:100%;height:1px;transition:transform .4s cubic-bezier(.16,1,.3,1);position:absolute;bottom:14px;left:16px;right:16px;transform:scaleX(0)}.navbar-nav a:hover,.navbar-nav a.active{color:var(--noir-white);text-shadow:0 0 10px #ffffff1a}.navbar-nav a:hover:after,.navbar-nav a.active:after{transform-origin:0;transform:scaleX(1)}.navbar-contact{letter-spacing:.3em;text-transform:uppercase;color:var(--noir-accent);border:1px solid #c8a96e47;padding:10px 22px;font-size:10px;font-weight:600;text-decoration:none;transition:background .3s,color .3s}.navbar-contact:hover{background:var(--noir-accent);color:var(--noir-black)}::-webkit-scrollbar{display:none}*{-ms-overflow-style:none;scrollbar-width:none}.gpu{transform:translateZ(0)}.no-select{-webkit-user-select:none;user-select:none}.mobile-toggle{cursor:pointer;z-index:1001;background:0 0;border:none;flex-direction:column;gap:6px;margin:-10px;padding:10px;display:none}.mobile-toggle .line{background:var(--noir-white);width:24px;height:1px;transition:transform .4s cubic-bezier(.16,1,.3,1),background .4s;display:block}.mobile-toggle.active .line:first-child{transform:translateY(3.5px)rotate(45deg)}.mobile-toggle.active .line:last-child{transform:translateY(-3.5px)rotate(-45deg)}@media (max-width:750px){.navbar{height:50px}.mobile-toggle{display:flex}.navbar-nav,.navbar-contact{display:none}}.mobile-menu{z-index:1000;opacity:0;visibility:hidden;pointer-events:none;background:#0a0a0af2;justify-content:center;align-items:center;transition:opacity .6s cubic-bezier(.16,1,.3,1),visibility .6s;display:flex;position:fixed;inset:0}.mobile-menu.open{opacity:1;visibility:visible;pointer-events:auto}.mobile-menu-inner{flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:60px 40px;display:flex}.mobile-nav-list{flex-direction:column;gap:30px;margin-top:40px;list-style:none;display:flex}.mobile-nav-list li{overflow:hidden}.mobile-nav-list a{font-family:var(--font-heading);color:var(--noir-white);text-transform:uppercase;letter-spacing:-.02em;font-size:clamp(32px,8vw,48px);font-weight:700;line-height:1.1;text-decoration:none;transition:transform .8s cubic-bezier(.16,1,.3,1);display:block;transform:translateY(100%)}.mobile-menu.open .mobile-nav-list a{transform:translateY(0)}.mobile-menu.open .mobile-nav-list li:first-child a{transition-delay:.1s}.mobile-menu.open .mobile-nav-list li:nth-child(2) a{transition-delay:.2s}.mobile-menu.open .mobile-nav-list li:nth-child(3) a{transition-delay:.3s}.mobile-menu.open .mobile-nav-list li:nth-child(4) a{transition-delay:.4s}.mobile-menu.open .mobile-nav-list li:nth-child(5) a{transition-delay:.5s}.nav-num{font-family:var(--font-body);letter-spacing:.3em;color:var(--noir-accent);vertical-align:middle;margin-right:15px;font-size:10px;font-weight:400}.mobile-contact-link{color:var(--noir-accent)!important}.mobile-menu-footer{opacity:0;margin-top:auto;transition:opacity .8s .6s,transform .8s .6s;transform:translateY(20px)}.mobile-menu.open .mobile-menu-footer{opacity:1;transform:translateY(0)}.mobile-socials{gap:20px;margin-bottom:24px;display:flex}.mobile-socials span{letter-spacing:.2em;text-transform:uppercase;color:var(--noir-muted);font-size:10px}.mobile-copyright{letter-spacing:.1em;color:#fff3;text-transform:uppercase;font-size:9px}.mobile-menu-header{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:20px;display:flex}.menu-label{letter-spacing:.3em;text-transform:uppercase;color:var(--noir-muted);font-size:10px}.mobile-menu-close{font-family:var(--font-body);letter-spacing:.2em;color:var(--noir-accent);cursor:pointer;background:0 0;border:none;margin:-10px;padding:10px;font-size:10px}a:focus-visible,button:focus-visible{outline:2px solid var(--noir-accent);outline-offset:4px;border-radius:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
