*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#080808;--bg-2:#10100e;--cream:#efeae0;--cream-soft:#efeae0b8;--muted:#efeae07a;--line:#efeae024;--accent:#c8f542;--accent-dim:#c8f54229;--pad:clamp(20px, 4.5vw, 72px);--header:84px;--ease:cubic-bezier(.16, 1, .3, 1);--serif:"Cormorant Garamond", Georgia, serif;--sans:"Outfit", system-ui, sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace}html{scroll-behavior:smooth;background:var(--bg)}body{font-family:var(--sans);background:var(--bg);color:var(--cream);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;overflow-x:hidden}img{max-width:100%;display:block}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:#111}@media (hover:hover) and (pointer:fine){body.has-cursor,body.has-cursor a,body.has-cursor button{cursor:none}}.skip-link{z-index:10000;background:var(--accent);color:#111;letter-spacing:.12em;text-transform:uppercase;padding:8px 14px;font-size:12px;position:absolute;top:-48px;left:16px}.skip-link:focus{top:16px}.portfolio{background:var(--bg);min-height:100vh}.portfolio.is-locked{height:100vh;overflow:hidden}.grain{z-index:80;pointer-events:none;opacity:.09;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.progress-bar{z-index:90;background:var(--accent);transform-origin:0;pointer-events:none;height:2px;position:fixed;top:0;left:0}.cursor-dot,.cursor-ring,.cursor-label{pointer-events:none;z-index:95;mix-blend-mode:difference;position:fixed;top:0;left:0}.cursor-dot{background:#fff;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px}.cursor-ring{width:36px;height:36px;transition:width .35s var(--ease), height .35s var(--ease), margin .35s var(--ease), background .35s var(--ease), border-color .35s var(--ease);border:1px solid #ffffffb3;border-radius:50%;margin:-18px 0 0 -18px}.cursor-ring.is-hover{background:#ffffff14;width:64px;height:64px;margin:-32px 0 0 -32px}.cursor-ring.is-view{background:var(--accent);border-color:var(--accent);mix-blend-mode:normal;width:96px;height:96px;margin:-48px 0 0 -48px}.cursor-label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:#111;opacity:0;margin:-6px 0 0 -18px;font-size:10px;transition:opacity .25s}.cursor-label.is-on{opacity:1;mix-blend-mode:normal;color:#111}@media (hover:none),(pointer:coarse){.cursor-dot,.cursor-ring,.cursor-label{display:none}}.preloader{z-index:100;padding:var(--pad) var(--pad) 48px;transition:opacity .8s var(--ease), visibility .8s;background:#050505;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;inset:0}.preloader.is-done{opacity:0;visibility:hidden;pointer-events:none}.preloader-mark{font-family:var(--serif);letter-spacing:-.04em;color:var(--cream);justify-content:center;align-items:center;font-size:clamp(72px,16vw,180px);font-weight:500;display:flex;position:absolute;inset:0}.preloader-row{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:flex-end;gap:24px;font-size:11px;display:flex}.preloader-track{background:var(--line);height:1px;margin-top:18px}.preloader-fill{background:var(--accent);transform-origin:0;height:100%}.header{z-index:70;padding:0 var(--pad);mix-blend-mode:difference;transition:mix-blend-mode .3s;position:fixed;top:0;left:0;right:0}.header--menu-open{mix-blend-mode:normal}.header-inner{height:var(--header);align-items:center;gap:24px;display:flex}.header-logo{font-family:var(--serif);letter-spacing:.04em;font-size:22px;font-weight:600}.header-nav{gap:4px;margin-left:auto;display:none}@media (width>=900px){.header-nav{display:flex}}.nav-button{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--cream-soft);padding:10px 14px;font-size:11px;transition:color .25s}.nav-button:hover{color:#fff}.header-contact{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;border-bottom:1px solid;margin-left:8px;padding-bottom:2px;font-size:11px;display:none}@media (width>=900px){.header-contact{display:inline-flex}}.header-menu-btn{flex-direction:column;justify-content:center;align-items:flex-end;gap:6px;width:44px;height:44px;margin-left:auto;display:flex}@media (width>=900px){.header-menu-btn{display:none}}.header-menu-btn span{background:var(--cream);height:1px;transition:transform .4s var(--ease), width .4s var(--ease), opacity .3s;display:block}.header-menu-btn span:first-child{width:22px}.header-menu-btn span:nth-child(2){width:14px}.header-menu-btn.is-open span:first-child{width:22px;transform:translateY(3.5px)rotate(45deg)}.header-menu-btn.is-open span:nth-child(2){width:22px;transform:translateY(-3.5px)rotate(-45deg)}.menu-overlay{z-index:65;padding:calc(var(--header) + 24px) var(--pad) 40px;opacity:0;visibility:hidden;transition:opacity .5s var(--ease), transform .6s var(--ease), visibility .5s;background:#070707;flex-direction:column;justify-content:space-between;display:flex;position:fixed;inset:0;transform:translateY(-8%)}.menu-overlay.is-open{opacity:1;visibility:visible;transform:none}.menu-list{flex-direction:column;gap:4px;list-style:none;display:flex}.menu-item{font-family:var(--serif);letter-spacing:-.03em;text-align:left;color:var(--cream);font-size:clamp(40px,10vw,72px);font-weight:500;line-height:1.05;overflow:hidden}.menu-item span{transition:transform .7s var(--ease);display:inline-block;transform:translateY(110%)}.menu-overlay.is-open .menu-item span{transform:none}.menu-item:nth-child(2) span{transition-delay:60ms}.menu-item:nth-child(3) span{transition-delay:.12s}.menu-item:nth-child(4) span{transition-delay:.18s}.menu-item:nth-child(5) span{transition-delay:.24s}.menu-foot{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);justify-content:space-between;gap:16px;font-size:11px;display:flex}.hero{min-height:100dvh;padding:calc(var(--header) + 24px) var(--pad) 48px;flex-direction:column;justify-content:flex-end;display:flex;position:relative;overflow:hidden}.hero-media{z-index:0;position:absolute;inset:0}.hero-media img{object-fit:cover;filter:brightness(.58)contrast(1.08)saturate(.75);width:100%;height:100%;animation:28s ease-out forwards kenburns;transform:scale(1.08)}@keyframes kenburns{to{transform:scale(1.18)translate(-1.5%,-1%)}}.hero-shade{background:linear-gradient(#0808088c 0%,#0808086b 38%,#080808e0 100%),linear-gradient(90deg,#0808088c 0%,#0000 48%);position:absolute;inset:0}.hero-scan{opacity:.55;background:repeating-linear-gradient(#0000 0 3px,#0000000d 3px 4px);position:absolute;inset:0}.hero-layout{z-index:1;gap:32px;width:100%;display:grid;position:relative}@media (width>=1024px){.hero-layout{grid-template-columns:1.15fr .85fr;align-items:end;gap:48px}}.hero-kicker{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:18px;font-size:11px}.hero-title{font-family:var(--sans);letter-spacing:-.02em;font-size:clamp(44px,8.5vw,96px);font-weight:600;line-height:1.05}.hero-title em{font-style:normal;font-weight:600}.hero-lede{max-width:38ch;color:var(--cream-soft);margin-top:28px;font-size:clamp(16px,1.7vw,20px);font-weight:300}.hero-aside{flex-direction:column;gap:20px;display:flex}.terminal{border:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);font-family:var(--mono);color:var(--cream-soft);background:#0808089e;padding:16px 18px 18px;font-size:12px;line-height:1.7}.terminal-bar{gap:6px;margin-bottom:14px;display:flex}.terminal-bar i{background:var(--line);border-radius:50%;width:8px;height:8px}.terminal-bar i:first-child{background:#ff5f57}.terminal-bar i:nth-child(2){background:#febc2e}.terminal-bar i:nth-child(3){background:#28c840}.terminal .prompt{color:var(--accent)}.terminal .prompt:before{content:"$ ";color:var(--muted)}.hero-scroll{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);align-items:center;gap:12px;font-size:10px;display:flex}.hero-scroll-line{background:var(--line);width:48px;height:1px;position:relative;overflow:hidden}.hero-scroll-line:after{content:"";background:var(--accent);animation:2.2s ease-in-out infinite scan;position:absolute;inset:0}@keyframes scan{0%{transform:translate(-100%)}to{transform:translate(100%)}}.line-mask{display:block;overflow:hidden}.line-mask span{transition:transform 1.15s var(--ease);display:block;transform:translateY(110%)}.hero.is-in .line-mask span{transform:none}.hero.is-in .line-mask:nth-of-type(2) span{transition-delay:.12s}.hero.is-in .line-mask:nth-of-type(3) span{transition-delay:.22s}.hero-copy{opacity:0;transition:opacity 1s var(--ease) .45s, transform 1s var(--ease) .45s;transform:translateY(16px)}.hero.is-in .hero-copy{opacity:1;transform:none}.hero-aside{opacity:0;transition:opacity 1s var(--ease) .7s, transform 1s var(--ease) .7s;transform:translateY(20px)}.hero.is-in .hero-aside{opacity:1;transform:none}.section{padding:120px var(--pad);position:relative}@media (width>=768px){.section{padding:160px var(--pad)}}.section-intro{gap:12px;max-width:720px;margin-bottom:56px;display:grid}.section-index{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-size:11px}.section-heading{font-family:var(--serif);letter-spacing:-.03em;font-size:clamp(42px,7vw,84px);font-weight:500;line-height:.92}.section-heading em{font-style:italic;font-weight:400}.section-lede{max-width:46ch;color:var(--cream-soft);margin-top:8px;font-size:17px;font-weight:300}.works.section{padding:0}.works-pin{position:relative}@media (width>=900px){.works-pin{min-height:100vh}.works-sticky{flex-direction:column;height:100vh;padding:100px 0 28px;display:flex;position:sticky;top:0;overflow:hidden}.works-head{padding:0 var(--pad);flex-shrink:0;margin-bottom:20px}.works-head .section-intro{gap:8px;margin-bottom:0}.works-head .section-heading{font-size:clamp(36px,5vw,64px)}.works-head .section-lede{max-width:52ch;font-size:15px}.works-viewport{flex:1;min-height:0;overflow:hidden}.works-track{height:100%;padding:0 var(--pad);will-change:transform;gap:28px;display:flex}.work-entry{border:1px solid var(--line);background:#ffffff05;flex:0 0 min(72vw,860px);height:100%;padding:36px 40px 40px;overflow:auto}}.work-entry-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;margin-bottom:16px;display:flex}.work-index{font-family:var(--mono);letter-spacing:.16em;color:var(--muted);font-size:12px}.work-meta{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);gap:16px;font-size:11px;display:flex}.work-title{font-family:var(--serif);letter-spacing:-.03em;font-size:clamp(32px,4.4vw,52px);font-weight:500;line-height:.95}.work-copy{max-width:58ch;color:var(--cream-soft);margin-top:20px;font-size:16px;font-weight:300;line-height:1.7}.project-tech-title{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-top:28px;font-size:11px}.project-tech-list{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.project-tech-tag{font-family:var(--mono);border:1px solid var(--line);padding:8px 12px;font-size:12px}.project-links{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.project-link-btn{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--cream);padding:14px 18px;font-size:12px;transition:background .25s,color .25s}.project-link-btn:hover{background:var(--cream);color:#111}@media (width<=899px){.works-head{padding:88px var(--pad) 0;margin-bottom:8px}.works-track{padding:0 var(--pad) 80px;flex-direction:column;gap:20px;display:flex}.work-entry{border:1px solid var(--line);background:#ffffff05;padding:28px 24px}}.works-progress{display:none}@media (width>=900px){.works-progress{padding:16px var(--pad) 0;font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);flex-shrink:0;align-items:center;gap:16px;font-size:10px;display:flex}.works-progress-track{background:var(--line);flex:1;height:1px}.works-progress-fill{background:var(--accent);transform-origin:0;height:100%}}.studio-grid{gap:48px;display:grid}@media (width>=960px){.studio-grid{grid-template-columns:.9fr 1.1fr;align-items:center;gap:80px}}.portrait-frame{aspect-ratio:3/4;background:#151515;position:relative;overflow:hidden}.portrait-frame img{object-fit:cover;object-position:top center;width:100%;height:100%}.portrait-caption{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:#fff;mix-blend-mode:difference;font-size:10px;position:absolute;bottom:16px;left:16px}.portrait-frame-loading{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.studio-copy{max-width:58ch}.studio-copy p{color:var(--cream-soft);font-size:clamp(18px,2vw,22px);font-weight:300;line-height:1.7}.studio-stats{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:16px;margin-top:40px;padding-top:32px;display:grid}.studio-stat b{font-family:var(--serif);font-size:clamp(28px,4vw,40px);font-weight:500;line-height:1;display:block}.studio-stat span{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:8px;font-size:10px;display:block}.skills-orbit.section{padding:0}.skills-orbit-pin{min-height:100vh;position:relative}.skills-orbit-sticky{place-items:center;height:100vh;display:grid;position:sticky;top:0;overflow:hidden}.skills-orbit-center{z-index:2;text-align:center;pointer-events:none;opacity:0;max-width:12ch;position:relative}.skills-orbit-title{font-family:var(--serif);letter-spacing:-.04em;margin-top:12px;font-size:clamp(40px,7vw,88px);font-weight:500;line-height:.9}.skills-orbit-title em{font-style:italic;font-weight:400}.skills-orbit-stage{z-index:1;position:absolute;inset:0}.skill-bubble{opacity:0;will-change:transform, opacity;flex-direction:column;align-items:center;gap:8px;width:108px;display:flex;position:absolute;top:50%;left:50%}.skill-bubble-orb{border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:84px;height:84px;transition:border-color .3s, box-shadow .3s, transform .35s var(--ease);background:#0c0c0bc7;border-radius:50%;place-items:center;display:grid}.skill-bubble:hover .skill-bubble-orb{border-color:#c8f5428c;transform:scale(1.08);box-shadow:0 0 0 8px #c8f54214}.skill-bubble-orb img{object-fit:contain;width:42px;height:42px}.skill-bubble-name{font-family:var(--serif);letter-spacing:-.02em;text-align:center;font-size:15px;font-weight:500;line-height:1.15}.skill-bubble-years{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-size:10px}@media (width<=699px){.skill-bubble{gap:6px;width:84px}.skill-bubble-orb{width:64px;height:64px}.skill-bubble-orb img{width:30px;height:30px}.skill-bubble-name{font-size:12px}.skills-orbit-title{font-size:clamp(32px,11vw,48px)}}.git-log{font-family:var(--mono)}.git-entry{grid-template-columns:28px 1fr;gap:16px;display:grid}.git-rail{flex-direction:column;align-items:center;display:flex}.git-dot{border:1px solid var(--accent);background:var(--bg);border-radius:50%;flex-shrink:0;width:11px;height:11px;margin-top:6px;box-shadow:0 0 0 4px #c8f5421f}.git-line{background:var(--line);flex:1;width:1px;margin-top:8px}.git-card{padding-bottom:48px}.git-hash{color:var(--accent);font-size:12px}.git-range{color:var(--muted);margin-left:10px;font-size:12px}.git-title{font-family:var(--serif);letter-spacing:-.02em;margin:8px 0 16px;font-size:clamp(26px,3vw,36px);font-weight:500}.git-card ul{list-style:none}.git-card li{color:var(--cream-soft);font-family:var(--sans);gap:10px;margin-bottom:8px;font-size:15px;font-weight:300;line-height:1.6;display:flex}.git-card li:before{content:"▸";color:var(--accent);font-family:var(--mono);margin-top:3px;font-size:12px}.contact.section{background:linear-gradient(#080808b8,#080808e0),url(https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&w=2000&q=80) 50%/cover;flex-direction:column;justify-content:center;min-height:100vh;padding-top:120px;padding-bottom:80px;display:flex}.contact-title{font-family:var(--serif);letter-spacing:-.04em;max-width:14ch;font-size:clamp(48px,9vw,108px);font-weight:500;line-height:.9}.contact-title em{font-style:italic}.contact-grid{gap:40px;margin-top:48px;display:grid}@media (width>=800px){.contact-grid{grid-template-columns:1fr 1fr;align-items:end}}.contact-note{max-width:42ch;color:var(--cream-soft);font-size:18px;font-weight:300}.contact-rows{gap:18px;display:grid}.contact-label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:11px}.contact-value{font-family:var(--serif);margin-top:4px;font-size:22px}.cta{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;background:var(--accent);color:#111;width:fit-content;transition:transform .35s var(--ease);align-items:center;gap:14px;margin-top:28px;padding:16px 22px;font-size:12px;display:inline-flex}.cta:hover{transform:translateY(-2px)}.social-icons{gap:10px;margin-top:8px;display:flex}.social-icon{border:1px solid var(--line);width:44px;height:44px;color:var(--cream);place-items:center;transition:border-color .25s,background .25s,color .25s;display:grid}.social-icon:hover{border-color:var(--accent);background:var(--accent);color:#111}.social-icon svg{width:18px;height:18px}.site-footer{padding:28px var(--pad) 36px;border-top:1px solid var(--line);font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:16px 32px;font-size:11px;display:flex}.site-footer a:hover{color:var(--cream)}.site-footer .social-icon{width:36px;height:36px}.site-footer .social-icons{margin-top:0}.loading-spinner{border:1px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.about-loading,.skills-loading,.projects-loading,.timeline-loading,.portrait-frame-loading{justify-content:center;align-items:center;min-height:80px;display:flex}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-media img,.hero-scroll-line:after,.line-mask span,.preloader-fill{transition:none!important;animation:none!important;transform:none!important}}
