*:where(:not(html,svg,svg *,symbol *)){all:unset;display:revert}*,*:before,*:after{box-sizing:border-box}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}a,button,summary{cursor:revert}ol,ul,menu,summary{list-style:none}img{max-block-size:100%;max-inline-size:100%}table{border-collapse:collapse}input,textarea{-webkit-user-select:auto}textarea{white-space:revert}meter{-webkit-appearance:revert;-moz-appearance:revert;appearance:revert}::placeholder{color:unset}::backdrop{background:unset}:where([hidden]){display:none}:where([draggable=true]){-webkit-user-drag:element}::-webkit-details-marker{display:none}@media (pointer: fine){body.has-custom-cursor,body.has-custom-cursor *{cursor:none!important}.cursor{position:fixed;top:0;left:0;z-index:10000;pointer-events:none;opacity:0;mix-blend-mode:difference;transition:opacity var(--duration-fast) var(--ease-base)}.cursor.is-visible{opacity:1}.cursor-inner{position:relative;display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;background:#fff;overflow:visible;transition:width var(--duration-base) var(--ease-base),height var(--duration-base) var(--ease-base),transform var(--duration-fast) var(--ease-base)}.cursor--link .cursor-inner{width:.75rem;height:.75rem}.cursor--icon .cursor-inner{width:3.25rem;height:3.25rem}.cursor--card{mix-blend-mode:normal}.cursor--card .cursor-inner{width:auto;height:auto;gap:.5rem;padding:.7rem 1.25rem;border-radius:999px;white-space:nowrap;background:#ffffffbd;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 1px 2px #0000000f}.cursor.is-pressed .cursor-inner{transform:scale(.82)}.cursor--card.is-pressed .cursor-inner{transform:scale(.97)}.cursor--card.is-pressed .cursor-arrow{transform:translate(.375rem)}.cursor-arrow{display:block;width:1.375rem;height:1.375rem;flex-shrink:0;color:var(--ink);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:0;transform:scale(.85);transition:opacity var(--duration-base) var(--ease-base),transform var(--duration-base) var(--ease-base)}.cursor-arrow path{fill:none;stroke:currentColor}.cursor-label{position:absolute;display:block;margin:0;padding:0;font-family:var(--font-display, "General Sans", system-ui, sans-serif);font-size:var(--text-sm);font-weight:600;line-height:1.15;letter-spacing:-.02em;text-align:center;color:var(--ink);opacity:0;transform:scale(.85);transition:opacity var(--duration-base) var(--ease-base),transform var(--duration-base) var(--ease-base)}.cursor--card .cursor-arrow{width:1.25rem;height:1.25rem;opacity:1;transform:none}.cursor--card .cursor-label{position:static;font-size:var(--text-md);opacity:1;transform:none;line-height:1}}@media (pointer: fine) and (prefers-reduced-motion: reduce){.cursor-inner,.cursor-arrow,.cursor-label{transition:none}}@font-face{font-family:General Sans;src:url(/assets/fonts/GeneralSans-Variable.woff2) format("woff2");font-weight:200 700;font-style:normal;font-display:swap}@font-face{font-family:General Sans;src:url(/assets/fonts/GeneralSans-VariableItalic.woff2) format("woff2");font-weight:200 700;font-style:italic;font-display:swap}:root{--bg: #FFFFFF;--surface: #F2F2F2;--ink: #0A0A0A;--ink-muted: var(--ink);--rule: #E5E5E5;--chip-bg: #FFFFFF;--chip-ink: #0A0A0A;--chip-rule: #D8D8D8;--accent: #0A0A0A;--thumb-bg: #F2F2F2;--status-blue: #2b6cff;--tint-1: #EFE6FB;--tint-2: #FBE7EE;--tint-3: #E7F3EA;--tint-4: #FBF3DE;--font-display: "General Sans", system-ui, sans-serif;--font-body: "General Sans", system-ui, sans-serif;--font-mono: "SF Mono", "Fira Code", ui-monospace, Menlo, Consolas, monospace;--font-sans: "General Sans", system-ui, sans-serif;--text-2xs: .875rem;--text-xs: .9375rem;--text-sm: 1.0625rem;--text-base: clamp(1.125rem, 1.05rem + .35vw, 1.25rem);--text-md: 1.375rem;--text-lg: clamp(1.5625rem, 1.475rem + .4375vw, 1.875rem);--text-xl: clamp(1.875rem, 1.6625rem + 1.0625vw, 2.5rem);--text-2xl: clamp(2.5rem, 2.0625rem + 2.1875vw, 3.75rem);--text-3xl: clamp(3.125rem, 2.4375rem + 3.4375vw, 5rem);--text-4xl: clamp(4.0625rem, 2.875rem + 5.9375vw, 6.875rem);--text-display: clamp(4.375rem, 1.25rem + 15vw, 13.75rem);--leading-none: 1;--leading-tight: .92;--leading-heading: 1.05;--leading-snug: 1.25;--leading-body: 1.55;--tracking-tighter: 0;--tracking-tight: 0;--tracking-snug: 0;--tracking-normal: 0;--tracking-wide: .08em;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: clamp(.75rem, .65rem + .5vw, 1rem);--space-md: clamp(1rem, .85rem + .75vw, 1.5rem);--space-lg: clamp(1.5rem, 1rem + 2vw, 3rem);--space-xl: clamp(2rem, 1.25rem + 4vw, 5rem);--space-2xl: clamp(4rem, 2rem + 8vw, 8rem);--space-3xl: clamp(6rem, 3rem + 12vw, 12rem);--frame-width: 90rem;--shell-pad-x: clamp(1.25rem, 4.85vw, 4.375rem);--card-aspect-ratio: 858 / 555;--text-width: 720px;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .5rem;--radius-xl: .5rem;--radius-portrait: .5rem;--radius-full: 999px;--duration-fast: .15s;--duration-base: .25s;--duration-slow: .5s;--ease-base: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1)}html{color-scheme:light;scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}body{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,video{max-block-size:none}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);line-height:var(--leading-heading);letter-spacing:var(--tracking-tight);font-weight:700}h1,h2{letter-spacing:var(--tracking-tighter)}h5,h6{letter-spacing:var(--tracking-snug)}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}h5{font-size:var(--text-md)}h6{font-size:var(--text-base)}p{max-width:var(--text-width)}a{color:var(--accent);text-decoration:none}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes reveal-scale-in{0%{transform:scale(.875);transform-origin:50% 0%}to{transform:scale(1);transform-origin:50% 0%}}@media (prefers-reduced-motion: no-preference){.project-media,.about-figure,.page-play .play-card,.page-home .work-rail>li{animation:reveal-scale-in linear;animation-timeline:view();animation-range:entry 0% entry 50%}.page-home .work-rail>li{animation-timeline:view(inline)}}.shell{width:100%;max-width:var(--frame-width);margin-inline:auto;padding:0 var(--shell-pad-x) var(--space-md)}.wordmark-star{display:inline-flex;width:1.35rem;height:1.35rem;flex-shrink:0;color:var(--ink)}.wordmark-star svg{width:100%;height:100%;display:block;transform-origin:center;animation:wordmark-star-spin .8s var(--ease-base) both}@keyframes wordmark-star-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.wordmark-star svg{animation:none}}.site-footer{position:relative;width:calc(100% + 2 * var(--shell-pad-x));margin-inline:calc(-1 * var(--shell-pad-x));margin-top:clamp(5rem,9vw,8.75rem);padding:0;border-top:0;overflow:hidden}.site-footer__standard{display:none}.site-footer__home{position:relative;display:flex;align-items:stretch;justify-content:space-between;gap:clamp(2.5rem,10vw,15.75rem);min-height:clamp(32rem,37.3vw,33.5625rem);padding-left:var(--shell-pad-x)}.site-footer p{font-family:var(--font-sans);font-size:var(--text-sm);letter-spacing:-.043em;color:var(--ink-muted);max-width:none}.site-footer__home-copy{display:flex;flex:0 0 min(38vw,34.75rem);flex-direction:column;justify-content:space-between;min-width:17rem;padding-block:clamp(4rem,6.94vw,6.25rem) 1.25rem}.site-footer__home-heading{margin:0 0 1.375rem;max-width:34.75rem;font-family:var(--font-serif);font-size:clamp(1.75rem,2.22vw,2rem);font-style:italic;font-weight:600;line-height:1.1875;letter-spacing:0;color:var(--ink)}.site-footer__home-contact,.site-footer__home-socials p,.site-footer__home-socials a,.site-footer__home-copyline{font-family:var(--font-sans);font-size:.9375rem;font-weight:400;line-height:1.9;letter-spacing:0;color:var(--ink)}.site-footer__home-contact{margin:0;max-width:none}.site-footer__home-contact a{font-weight:500}.site-footer__home-socials{margin-top:.125rem}.site-footer__home-socials p{margin:0;max-width:none}.site-footer__home-socials ul{display:flex;flex-direction:column;gap:0;margin:0;padding:0;list-style:none}.site-footer__home-socials a{display:inline-flex;align-items:center;gap:.375rem;text-decoration:none;transition:opacity var(--duration-fast) var(--ease-base)}.site-footer__home-socials a:focus-visible,.site-footer__home-contact a:focus-visible{opacity:.62}.site-footer__home-socials img{display:block;width:1.125rem;height:1.125rem;object-fit:contain}.site-footer__home-copyline{position:absolute;left:var(--shell-pad-x);bottom:1.25rem;margin:0;max-width:none}.site-footer__home-pattern{position:relative;flex:1 1 auto;min-width:32rem;overflow:hidden}.site-footer__home-pattern img{position:absolute;top:50%;right:clamp(-9rem,-5vw,-4rem);transform:translateY(-50%);width:clamp(28rem,44vw,40rem);max-width:none;height:auto}@media (max-width: 900px){.site-footer__home{flex-direction:column;gap:2rem;min-height:0;padding-right:var(--shell-pad-x)}.site-footer__home-copy{flex-basis:auto;width:100%;gap:3rem}.site-footer__home-pattern{min-width:0;min-height:18rem;margin-inline:calc(-1 * var(--shell-pad-x))}.site-footer__home-pattern img{right:-12rem;width:42rem}.site-footer__home-copyline{position:static}}.site-menu{--site-menu-mark: #c79bff;position:relative;z-index:200;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);width:100%;padding-block-start:calc(clamp(1.25rem,2vw,2.5rem) + var(--space-xs));padding-block-end:clamp(1.25rem,2vw,2.5rem);background:transparent;color:var(--ink, #0a0a0a)}@media (min-width: 768px){.site-menu{display:none}}.site-menu--compact{justify-content:flex-end;padding-inline:0}.site-menu__wordmark{display:inline-flex;align-items:center;gap:.4em;min-width:0;font-family:var(--font-sans);font-weight:400;font-size:clamp(1.375rem,1rem + 1.4vw,2rem);letter-spacing:-.02em;color:var(--ink, #0a0a0a);text-decoration:none;opacity:1;transition:opacity var(--duration-fast, .15s) var(--ease-base, ease)}.site-menu__wordmark:hover{opacity:.85}.site-menu__wordmark:focus-visible{outline:2px solid var(--site-menu-mark);outline-offset:4px}.site-menu__wordmark .wordmark-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.site-menu__wordmark .wordmark-star{display:inline-flex;width:clamp(2.75rem,2.1rem + 1.65vw,3.75rem);height:clamp(2.75rem,2.1rem + 1.65vw,3.75rem);flex-shrink:0;color:var(--site-menu-mark);transition:transform .45s cubic-bezier(.34,1.56,.64,1)}.site-menu__wordmark:hover .wordmark-star,.site-menu__wordmark:focus-visible .wordmark-star{transform:rotate(72deg)}.site-menu__wordmark .wordmark-star svg{width:100%;height:100%;display:block}.site-menu__trigger{position:relative;flex-shrink:0}.site-menu__toggle{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:center;inline-size:clamp(3.25rem,2.5rem + 2vw,4.5rem);block-size:clamp(3.25rem,2.5rem + 2vw,4.5rem);flex-shrink:0;padding:0;border:0;border-radius:var(--radius-full, 999px);background:#2c2f2e;color:#fff;cursor:pointer;transition:background var(--duration-fast, .15s) var(--ease-base, ease),transform var(--duration-fast, .15s) var(--ease-base, ease)}.site-menu__toggle:hover{background:#3c403e}.site-menu__toggle-label{position:absolute;right:100%;top:50%;margin-right:.75rem;font-family:var(--font-sans);font-size:var(--text-md);font-weight:400;color:var(--ink, #0a0a0a);white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(-50%) translate(.75rem);transition:opacity var(--duration-fast, .15s) var(--ease-base, ease),transform var(--duration-base, .25s) var(--ease-base, ease)}.site-menu__trigger:has(.site-menu__toggle:hover) .site-menu__toggle-label,.site-menu__trigger:has(.site-menu__toggle:focus-visible) .site-menu__toggle-label{opacity:1;transform:translateY(-50%) translate(0)}.site-menu__toggle.is-open:focus-visible,.site-menu__panel :focus-visible{outline-color:#f7f7f7}.site-menu__toggle-icon{position:relative;display:block;inline-size:40%;block-size:40%;transition:transform .5s cubic-bezier(.34,1.56,.64,1)}.site-menu__toggle-icon:before,.site-menu__toggle-icon:after{content:"";position:absolute;inset-inline:0;top:50%;height:2px;border-radius:2px;background:currentColor;transform:translateY(-50%)}.site-menu__toggle-icon:after{transform:translateY(-50%) rotate(90deg)}.site-menu__toggle.is-open .site-menu__toggle-icon{transform:rotate(135deg)}.site-menu__panel{position:absolute;top:-4px;right:-4px;z-index:1;display:flex;flex-direction:column;gap:6px;width:358px;max-width:calc(100vw - 1.5rem);padding:28px 28px 44px;background:#080a0c;border-radius:40px;box-shadow:0 1px 1.5px #00000008,0 2px 1px #0000000d,0 5px 5px #0000000d,0 12px 15.5px #00000014;transform-origin:top right;opacity:0;transform:scale(.6);transition:opacity .2s ease,transform .5s cubic-bezier(.34,1.7,.5,1)}.site-menu__panel.is-open{opacity:1;transform:scale(1)}.site-menu__panel[hidden]{display:none}.site-menu__panel .site-menu__link,.site-menu__panel .site-menu__link-sub,.site-menu__panel .site-menu__socials{opacity:0;transform:translateY(14px)}.site-menu__panel.is-open .site-menu__link,.site-menu__panel.is-open .site-menu__link-sub,.site-menu__panel.is-open .site-menu__socials{opacity:1;transform:none;transition:opacity .28s ease,transform .55s cubic-bezier(.34,1.7,.5,1),color var(--duration-fast, .15s) var(--ease-base, ease)}.site-menu__panel.is-open .site-menu__link:nth-child(1){transition-delay:.08s}.site-menu__panel.is-open .site-menu__link:nth-child(2){transition-delay:.14s}.site-menu__panel.is-open .site-menu__link:nth-child(3){transition-delay:.2s}.site-menu__panel.is-open .site-menu__link-sub{transition-delay:.26s}.site-menu__panel.is-open .site-menu__socials{transition-delay:.32s}.site-menu__primary{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding-top:63px}.site-menu__link{display:inline-flex;align-items:center;gap:.4em;padding:5px 16px;border-radius:24px;font-family:var(--font-sans);font-weight:400;font-size:clamp(2rem,1.4rem + 2.6vw,2.75rem);line-height:1.2;letter-spacing:-.01em;color:#fff;text-decoration:none;transition:color var(--duration-base, .25s) var(--ease-base, ease)}.site-menu__link:hover{color:#fff9}.site-menu__link:focus-visible{color:#fff9}.site-menu__link[aria-current=page]{color:#ffffff80}.site-menu__secondary{display:flex;flex-direction:column;align-items:flex-start;padding-inline:16px}.site-menu__link-sub{display:inline-flex;align-items:center;min-height:2.75rem;padding-block:.5rem;font-family:var(--font-sans);font-weight:400;font-size:var(--text-md);line-height:1.67;color:#8a8d88;text-decoration:none;transition:color var(--duration-fast, .15s) var(--ease-base, ease)}.site-menu__link-sub:hover,.site-menu__link-sub:focus-visible{color:#b6b8b4}.site-menu__socials{display:flex;align-items:center;justify-content:flex-end;gap:20px;margin:0;padding:16px 16px 0;list-style:none}.site-menu__social{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;width:2.75rem;height:2.75rem;opacity:.8;transition:opacity var(--duration-fast, .15s) var(--ease-base, ease)}.site-menu__social:hover,.site-menu__social:focus-visible{opacity:1}.site-menu__social img{display:block;width:100%;height:100%;object-fit:contain;filter:brightness(0) invert(.62)}@media (max-width: 767px){.site-menu__panel{position:fixed;top:.75rem;right:.75rem;z-index:200;width:min(358px,calc(100vw - 1.5rem));border-radius:32px}.site-menu__toggle{z-index:201}}@media (prefers-reduced-motion: reduce){.site-menu__toggle-icon,.site-menu__panel,.site-menu__panel.is-open .site-menu__link,.site-menu__panel.is-open .site-menu__link-sub,.site-menu__panel.is-open .site-menu__socials{transition:none}.site-menu__panel .site-menu__link,.site-menu__panel .site-menu__link-sub,.site-menu__panel .site-menu__socials{opacity:1;transform:none}.site-menu__wordmark .wordmark-star{transition:none}.site-menu__wordmark:hover .wordmark-star,.site-menu__wordmark:focus-visible .wordmark-star{transform:none}}.site-header{display:none;position:relative;z-index:200;align-items:center;justify-content:space-between;gap:var(--space-md);width:100%;min-height:8.229rem;padding-block-start:2.5rem;padding-block-end:1.25rem;color:var(--ink)}@media (min-width: 768px){.site-header{display:flex}}.site-header__logo{display:inline-flex;flex-shrink:0;color:var(--ink);outline-offset:4px}.site-header__logo svg{width:clamp(3.5rem,4.85vw,4.58rem);height:auto;display:block;transition:transform .45s cubic-bezier(.34,1.56,.64,1)}.site-header__logo:hover svg,.site-header__logo:focus-visible svg{transform:rotate(90deg)}.site-header__nav{display:flex;align-items:center;gap:clamp(1.125rem,1.875vw,1.6875rem)}.site-header__link{position:relative;padding:10px 15px;font-family:var(--font-sans);font-style:normal;font-weight:500;font-size:1.25rem;line-height:38px;letter-spacing:0;color:var(--ink);text-decoration:none;white-space:nowrap}.site-header__link:after{content:"";position:absolute;left:15px;right:15px;bottom:6px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left center;transition:transform var(--duration-base, .25s) var(--ease-base, ease)}.site-header__link:hover:after,.site-header__link:focus-visible:after{transform:scaleX(1)}.site-header__link[aria-current=page]{color:#bebebe}.site-header__link[aria-current=page]:hover:after,.site-header__link[aria-current=page]:focus-visible:after{transform:scaleX(0)}.site-header__contact{display:inline-flex;align-items:center;padding:6px 15px;border:1px solid var(--ink);border-radius:var(--radius-full, 999px);font-family:var(--font-sans);font-style:normal;font-weight:500;font-size:1.25rem;line-height:38px;letter-spacing:0;color:var(--ink);text-decoration:none;white-space:nowrap;transition:background var(--duration-fast, .15s) var(--ease-base, ease),color var(--duration-fast, .15s) var(--ease-base, ease)}.site-header__contact:hover,.site-header__contact:focus-visible{background:var(--ink);color:var(--bg)}@media (prefers-reduced-motion: reduce){.site-header__logo svg,.site-header__link:after{transition:none}}
