*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}:root{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif;color:#191919;background:#fff;font-synthesis:none;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;background:none;border:0;padding:8px 0;cursor:pointer}a{color:inherit;text-decoration:none}button:hover,a:hover{color:#777}button:focus-visible,a:focus-visible,.photo-reveal:focus-visible{outline:2px solid #777;outline-offset:6px}p,h1,h2{margin:0;font-weight:400}.home{height:100dvh;width:100%;padding:clamp(24px,5vh,56px) clamp(24px,8vw,128px) max(24px,env(safe-area-inset-bottom));display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:16px}.intro{display:flex;justify-content:space-between;font-size:14px;line-height:1.45;letter-spacing:-.02em}.intro p:last-child{text-align:right;color:#737373}.identity{min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(8px,2vh,24px)}h1{font-size:clamp(64px,13.5vw,190px);line-height:1;letter-spacing:-.075em;font-weight:500;text-align:center}.hero-photo{width:min(30vw,36vh,330px);flex:0 1 auto;min-height:0}nav{display:flex;align-items:center;justify-content:center;gap:clamp(22px,4vw,64px)}nav button{font-size:16px;letter-spacing:-.025em;position:relative}nav button:after{content:'';height:1px;position:absolute;left:0;right:0;bottom:4px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .2s}nav button:hover:after{transform:scaleX(1)}.photo-reveal{--mx:50%;--my:50%;position:relative;aspect-ratio:790/710;width:100%;overflow:hidden;background:white;touch-action:pan-y}.photo-base,.sketch-reveal{position:absolute;inset:0;overflow:hidden}.photo-reveal img{position:absolute;max-width:none;pointer-events:none;user-select:none}.photo-base img{width:305.9361%;height:221.4049%;left:-163.89535%;top:-45.071562%}.photo-base:after{content:'';position:absolute;inset:0 0 auto;height:23%;background:white}.sketch-reveal img{width:249.114%;height:auto;left:-130.38%;top:-54.93%}.sketch-reveal{opacity:0;transition:opacity .18s;mask-image:radial-gradient(circle 75px at var(--mx) var(--my),#000 65%,transparent 100%);-webkit-mask-image:radial-gradient(circle 75px at var(--mx) var(--my),#000 65%,transparent 100%)}.revealing .sketch-reveal{opacity:1}dialog{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;padding:0;margin:0;border:0;overflow:hidden;background:transparent;transition:background .45s}dialog::backdrop{background:transparent}dialog.shown{background:#0003}.panel{position:absolute;bottom:0;left:0;right:0;margin:auto;width:min(760px,100%);height:min(680px,90dvh);background:white;border-radius:22px 22px 0 0;padding:0 40px max(24px,env(safe-area-inset-bottom));display:grid;grid-template-rows:24px auto minmax(0,1fr);gap:18px;overflow:hidden;transform:translateY(100%);transition:transform .45s cubic-bezier(.32,.72,0,1)}.shown .panel{transform:translateY(0)}.grab{width:36px;height:5px;background:#ddd;border-radius:10px;margin:12px auto 0}.panel header{display:flex;justify-content:space-between;align-items:center;gap:20px}.panel h2{font-size:32px;font-weight:500;letter-spacing:-.045em}.close{font-size:14px;color:#777}#panel-content{min-height:0;overflow:hidden;font-size:16px;line-height:1.5;color:#666}.project-content{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:20px}.gallery{min-height:0;display:flex;align-items:center;justify-content:center}.gallery img{display:block;width:100%;height:100%;object-fit:contain}.gallery-controls{display:flex;align-items:center;gap:24px;font-size:14px;color:#222}.gallery-controls span{font-size:12px;color:#777}.gallery-controls a{margin-left:auto}.text-content{display:flex;flex-direction:column;justify-content:center;gap:24px}.lead{font-size:clamp(32px,5vw,52px);line-height:1.1;letter-spacing:-.055em;color:#191919}.text-links{display:flex;flex-wrap:wrap;gap:12px 24px;color:#191919}.social-links{display:flex;flex-direction:column;align-items:flex-start;gap:18px;font-size:24px;letter-spacing:-.03em;color:#191919}@media(max-width:600px){.home{gap:12px;padding-top:28px;padding-bottom:max(24px,env(safe-area-inset-bottom))}.intro{font-size:12px}.intro p:last-child{max-width:150px}.hero-photo{width:min(68vw,34vh)}h1{font-size:21vw}nav{gap:4px 24px;flex-wrap:wrap;max-width:350px;justify-self:center}nav button{font-size:15px}.panel{padding-left:24px;padding-right:24px;gap:14px;height:min(640px,90dvh)}.panel h2{font-size:28px}#panel-content{font-size:15px}.text-content{gap:20px}.project-content{gap:14px}.gallery-controls{gap:16px;font-size:13px}}@media(max-height:500px){.home{padding-top:14px;padding-bottom:12px;gap:8px}.intro{font-size:11px}.identity{flex-direction:row;gap:40px}.hero-photo{width:min(33vh,180px)}h1{font-size:min(18vh,110px)}nav button{font-size:13px}.panel{height:96dvh;grid-template-rows:12px auto minmax(0,1fr);gap:8px;padding-bottom:12px}.grab{margin-top:5px}.panel h2{font-size:23px}.text-content{gap:12px}.lead{font-size:28px}#panel-content{font-size:13px;line-height:1.4}.social-links{flex-direction:row;font-size:18px}.project-content{gap:8px}.text-links{gap:8px 20px}}@media(prefers-reduced-motion:reduce){*,*:after{transition:none!important}}

.role-line{font-size:clamp(12px,1.25vw,16px);color:#737373;text-align:center;line-height:1.6;letter-spacing:-.01em}.intro{align-items:center}.intro button{font-size:14px;padding:0}.eyebrow{font-size:11px;letter-spacing:.1em;color:#777}.text-links a,.text-links button{font-size:15px;text-decoration:underline;text-underline-offset:5px}.essay-link{font-size:clamp(26px,4vw,42px);line-height:1.2;letter-spacing:-.04em;color:#191919;display:flex;flex-direction:column;gap:32px}.read-label{font-size:15px;letter-spacing:0;text-decoration:underline;text-underline-offset:5px}.email-link{font-size:clamp(22px,4vw,36px);color:#191919;letter-spacing:-.04em;overflow-wrap:anywhere}@media(max-width:600px){.role-line{max-width:260px}.text-links a,.text-links button{font-size:14px}.lead{font-size:34px}}@media(max-height:500px){.identity{flex-direction:column;gap:12px}.lead{font-size:27px}.essay-link{font-size:27px;gap:18px}.email-link{font-size:25px}}

/* Quiet, transform-based motion throughout. */
:root{--motion-ease:cubic-bezier(.22,1,.36,1)}.home{transition:transform .65s var(--motion-ease),opacity .5s ease;transform-origin:50% 45%}.has-panel .home{transform:translateY(-10px) scale(.985);opacity:.6}.name-letters{display:inline-flex}.name-letters>span{display:inline-block;animation:name-in 1s var(--motion-ease) both;animation-delay:calc(90ms + var(--i)*55ms)}.intro{animation:soft-in .8s .05s var(--motion-ease) both}.role-line{animation:soft-in .85s .42s var(--motion-ease) both}nav button{animation:soft-in .7s var(--motion-ease) backwards;animation-delay:.48s}nav button:nth-child(2){animation-delay:.54s}nav button:nth-child(3){animation-delay:.60s}nav button:nth-child(4){animation-delay:.66s}button,a{transition:color .25s ease,opacity .25s ease,transform .35s var(--motion-ease)}nav button:after{transition:transform .4s var(--motion-ease);transform-origin:right}nav button:hover:after,nav button:focus-visible:after,nav button[aria-expanded="true"]:after{transform:scaleX(1);transform-origin:left}button:active,a:active{transform:translateY(1px) scale(.98)}.panel{transition:transform .52s cubic-bezier(.32,.72,0,1);box-shadow:0 -20px 80px #00000008}dialog{transition:background .52s ease}.social-links a,.text-links a,.text-links button{transition:transform .4s var(--motion-ease),color .25s ease}.read-label{transition:transform .4s var(--motion-ease)}@media(hover:hover) and (pointer:fine){.social-links a:hover,.text-links a:hover,.text-links button:hover{transform:translateX(4px)}.essay-link:hover .read-label{transform:translateX(5px)}.intro button:hover,.close:hover{transform:translateY(-2px)}}@keyframes name-in{from{opacity:0;transform:translateY(.3em)}to{opacity:1;transform:translateY(0)}}@keyframes soft-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.has-panel .home{transform:none;opacity:1}}

/* Interactive typography, with no idle animation loop. */
.letter-inner,.reveal-word{display:inline-block}.reveal-word{transform-origin:0 100%}h1{transform:translate3d(var(--name-x,0px),var(--name-y,0px),0);transition:transform .65s var(--motion-ease)}nav button,.intro button{translate:var(--magnet-x,0px) var(--magnet-y,0px);transition:translate .35s var(--motion-ease),transform .35s var(--motion-ease),color .25s ease,opacity .25s ease}.panel .grab{transform:scaleX(.65);transition:transform .8s var(--motion-ease)}.shown .grab{transform:scaleX(1)}.panel:after{content:'';position:absolute;left:40px;right:40px;top:90px;height:1px;background:#ededed;transform:scaleX(0);transform-origin:left;transition:transform .8s .12s var(--motion-ease);pointer-events:none}.shown .panel:after{transform:scaleX(1)}.social-links a{position:relative}.social-links a:after{content:'';position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .45s var(--motion-ease)}.social-links a:hover:after,.social-links a:focus-visible:after{transform:scaleX(1);transform-origin:left}nav:has(button:hover) button:not(:hover){opacity:.45}@media(max-width:600px){.panel:after{left:24px;right:24px;top:80px}}@media(max-height:500px){.panel:after{top:57px}}@media(prefers-reduced-motion:reduce){h1,nav button,.intro button{transform:none!important;translate:none!important}.panel .grab{transform:none}.reveal-word{transform:none}}
