:root{--motion-out:cubic-bezier(.22,1,.36,1);--motion-in-out:cubic-bezier(.4,0,.2,1)}
html{scroll-behavior:smooth}body{background:var(--token-5445bea3-3bff-46ef-bad3-182840be30bf,#fff)}
[role=button]{cursor:pointer}[role=button]:focus-visible,a:focus-visible{outline:2px solid #0078ff;outline-offset:5px}
/* Closed nav stays in flow and has no visible overlay. */
.framer-3sshp.framer-v-1w0ub3 .framer-1d7sbb0{opacity:0!important;visibility:hidden;pointer-events:none}
dialog:not([open]){display:none!important}
.mobile-menu{border:0;padding:0;margin:0;position:fixed;inset:0;width:100%;max-width:none;height:100dvh;max-height:none;overflow:auto;background:#000;color:#fff;overscroll-behavior:contain}
.mobile-menu::backdrop{background:#000}
.mobile-menu .framer-3sshp{width:100%!important;min-height:100dvh!important;padding:148px 24px 0!important;gap:0!important}
.mobile-menu .framer-1h12vy1{height:100dvh}
.mobile-menu .framer-1xdfsuz{position:relative}
@media(min-width:810px){.mobile-menu{display:none!important}}
/* Stable, reversible accordion transitions; no content swapping or scaled text. */
.disclosure.disclosure-faq{flex-direction:column!important;gap:0!important;cursor:auto}
.disclosure-faq>.framer-ad3j16{flex:none!important;width:100%!important}
.disclosure-panel{width:100%;flex:none;display:grid;grid-template-rows:0fr;transition:grid-template-rows 300ms var(--motion-in-out);overflow:hidden}
.disclosure-clip{min-height:0;overflow:hidden;opacity:0;transform:translateY(-6px);transition:opacity 160ms ease-out,transform 250ms var(--motion-out)}
.disclosure.is-open>.disclosure-panel{grid-template-rows:1fr}
.disclosure.is-open>.disclosure-panel>.disclosure-clip{opacity:1;transform:none;transition:opacity 220ms ease-out 40ms,transform 280ms var(--motion-out)}
.disclosure-faq .framer-1pafsf6{width:100%!important;padding-top:16px;flex:none!important;cursor:auto}
.disclosure-experience .framer-16vpiz8{min-height:unset!important}
.disclosure .framer-1nhewjr,.disclosure .framer-1cojpc{transition:background-color 180ms ease-out,transform 250ms var(--motion-out)}
.disclosure.is-open .framer-1nhewjr,.disclosure.is-open .framer-1cojpc{background-color:var(--token-7ca43ed6-38eb-4d39-b97f-a1c25b169a2a,#949494)!important}
.disclosure .framer-rnfnik,.disclosure .framer-saf7gh{transition:transform 250ms var(--motion-out);transform-origin:center}
.disclosure.is-open .framer-rnfnik,.disclosure.is-open .framer-saf7gh{transform:rotate(45deg)}
/* Custom cursors from the source. No listeners or animation loop on touch. */
.portfolio-cursor{position:fixed;left:0;top:0;z-index:2147483000;pointer-events:none;opacity:0;color:var(--token-155e1ed0-ae48-4536-8f43-27c34a0d770e,#000);transition:opacity 100ms ease-out;contain:layout style;will-change:transform}
.portfolio-cursor.is-visible{opacity:1}.portfolio-cursor svg{display:block;width:24px;height:24px}.portfolio-cursor img{display:none;width:96px;height:96px;object-fit:contain;transform:rotate(12deg)}
.portfolio-cursor[data-type=airplane] svg{display:none}.portfolio-cursor[data-type=airplane] img{display:block}
@media(hover:none),(pointer:coarse){.portfolio-cursor{display:none}}
/* Original hover treatments: fade social links, underline navigation, roll CTA text. */
.framer-1et0ix7 a,.framer-s2cwdf{transition:opacity 200ms ease-out}
.framer-1et0ix7 a:hover,.framer-s2cwdf:hover{opacity:.5}
.framer-68c4I .framer-5i7izd{opacity:0!important}
.framer-68c4I .framer-1nagv6u,.framer-68c4I .framer-1mh09b0{transition:transform 260ms var(--motion-out),opacity 180ms ease-out;backface-visibility:hidden}
.framer-68c4I .framer-1mh09b0{top:50%!important;bottom:auto!important;opacity:0!important;transform:translate(-50%,45%) perspective(500px) rotateX(-90deg)!important}
.framer-68c4I:hover .framer-1nagv6u{opacity:0!important;transform:translate(-50%,-145%) perspective(500px) rotateX(90deg)!important}
.framer-68c4I:hover .framer-1mh09b0{opacity:1!important;transform:translate(-50%,-50%) perspective(500px) rotateX(0)!important}
/* Transform/opacity only: no blur and no scaling a complete long section. */
.intro-pending,.reveal-pending{opacity:0}
.intro-line{display:block;white-space:pre}
.lightbox{border:0;padding:0;background:transparent;width:90.4vw;max-width:1800px;height:90.4vh;max-height:90.4vh;overflow:visible;margin:auto;outline:none}
.lightbox::backdrop{background:rgba(0,0,0,.73);animation:backdrop-in 220ms ease-out}
.lightbox img{display:block;width:100%;height:100%;object-fit:contain;border-radius:10px;cursor:zoom-out}
[data-framer-name="Selected Work"] [data-highlight]{cursor:zoom-in}
@keyframes backdrop-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.intro-pending,.reveal-pending{opacity:1}}
/* The exported mobile artboard had a fixed height; let expanded content extend it. */
@media(max-width:809.98px){.framer-UvAd4.framer-72rtr7{height:auto!important;min-height:100dvh!important}}

.framer-1avkzk2,.framer-8bwwci-container,.framer-1qcjopx,.framer-1yw6d3y,.framer-106qjux,.framer-s2cwdf{will-change:auto!important}

/* Open navigation keeps the same avatar/name/job identity as the closed header. */
.mobile-menu .framer-15r5q7y{position:absolute;left:24px;right:24px;top:var(--menu-header-top,20px);width:auto;height:var(--menu-header-height,41px);grid-template-columns:minmax(0,1fr) auto;gap:16px}
.mobile-menu .framer-e76o6m,.mobile-menu .framer-1fmt4{display:none}
.mobile-menu .framer-97rccs{min-width:0;overflow:visible;align-items:center}
.mobile-menu .framer-c0qb9j{place-self:center start}
.mobile-menu .framer-1cuzxmp h5{color:#fff!important}
.mobile-menu .framer-56x8ql h5{color:#949494!important}
.mobile-menu.opened-with-pointer :focus{outline:none}
/* Match each source link: Photos changes label/arrow and draws its underline; Resume changes text only. */
.framer-nGcoz .framer-1egr8x p{transition:color 200ms ease-out}
.framer-nGcoz.nav-hover .framer-1egr8x p{color:var(--token-155e1ed0-ae48-4536-8f43-27c34a0d770e,#000)!important}
.framer-nGcoz.nav-hover .framer-1at7po{--token-7ca43ed6-38eb-4d39-b97f-a1c25b169a2a:var(--token-155e1ed0-ae48-4536-8f43-27c34a0d770e,#000)}
.framer-nGcoz .framer-r46kg4{background-color:var(--token-155e1ed0-ae48-4536-8f43-27c34a0d770e,#000)!important}
.framer-1m81acz a[download]{transition:color 240ms var(--motion-out)}
.framer-1m81acz a[download]:hover,.framer-1m81acz a[download]:focus-visible{color:var(--token-155e1ed0-ae48-4536-8f43-27c34a0d770e,#000)!important}
/* The exported translateY(50px) consumed all the bottom padding. */
.framer-s2cwdf{transform:none!important}
.framer-1rdfm82{padding-bottom:48px!important}
:root{color-scheme:light dark}
